diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..88aa47d --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,418 @@ +# Nous voulons un cmake "récent" pour utiliser les dernières fonctionnalités. +cmake_minimum_required(VERSION 3.20) +set (CMAKE_CXX_STANDARD 23) +# Nom du projet. +set(PROJECT CosmicEngine) +project(${PROJECT}) + +# Génération de la liste des fichiers sources. +file(GLOB_RECURSE + SRCS_ENGINE + src/Engine/* +) + +file(GLOB_RECURSE + SRCS + src/main.cpp) + +file(GLOB_RECURSE + SRCS_TESTS + test/* +) + +# ---------- Inclusion des packages sous windows ----------- +if(WIN32) +endif() +# ---------- Inclusion des packages sous mac ----------- +if(APPLE) +endif() +# ---------- Inclusion des packages sous linux ----------- + +if(UNIX) +# --------- Inclusion d'OpenGL ---------- +# OpenGL Lib pour charger OpenGL, fournit avec les drivers, donc se trouve toute seul. + # find_package(OpenGL REQUIRED) + # if(OPENGL_FOUND) + # message("lib OpenGL Trouvé") + # else() + # message("lib OpenGL Introuvable") + # endif() +# --------------------------------------- + +# --------- Inclusion de Vulkan ---------- +# Vulkan Lib pour charger Vulkan, fournit avec les drivers, donc se trouve toute seul. + # find_package(Vulkan REQUIRED) + # if(VULKAN_FOUND) + # message("lib OpenGL Trouvé") + # else() + # message("lib OpenGL Introuvable") + # endif() +# --------------------------------------- + +# ---------- Inclusion de GLM ----------- +# GLM Lib pour mathématique, en mode header only. + set(GLMlib_DIR ./lib/CMake/Linux) + find_package(GLMlib REQUIRED) + if(GLMlib_FOUND) + message("lib GLM Trouvé") + else() + message("lib GLM Introuvable") + endif() +# --------------------------------------- + +# ------- Inclusion de JSONfMC++ -------- +# JSONfMC++ Lib pour gestion fichier JSON, en mode header only. + set(JSONlib_DIR ./lib/CMake/Linux) + find_package(JSONlib REQUIRED) + + if(JSONlib_FOUND) + message("lib JSONFMC++ Trouvé") + else() + message("lib JSONFMC++ Introuvable") + endif() +# --------------------------------------- + +# ------- Inclusion de EnTT -------- +# EnTT Lib pour gestion fichier JSON, en mode header only. + set(EnTTlib_DIR ./lib/CMake/Linux) + find_package(EnTTlib REQUIRED) + + if(EnTTlib_FOUND) + message("lib EnTTlib Trouvé") + else() + message("lib EnTTlib Introuvable") + endif() + + +# --------- Inclusion de Boost ---------- +# Boost Lib pour diverse simplification + # set(Boost_USE_STATIC_LIBS OFF) + # set(Boost_USE_MULTITHREADED ON) + # set(Boost_USE_STATIC_RUNTIME OFF) + + # find_package(Boost REQUIRED COMPONENTS log_setup log filesystem chrono thread date_time regex) # header only libraries must not be added here + + # message(STATUS "Boost version: ${Boost_VERSION}") + + # if(NOT TARGET Boost::filesystem) + # add_library(Boost::filesystem IMPORTED INTERFACE) + # set_property(TARGET Boost::filesystem PROPERTY + # INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR}) + # set_property(TARGET Boost::filesystem PROPERTY + # INTERFACE_LINK_LIBRARIES ${Boost_LIBRARIES}) + # endif() + + # if(NOT TARGET Boost::thread) + # add_library(Boost::thread IMPORTED INTERFACE) + # set_property(TARGET Boost::thread PROPERTY + # INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR}) + # set_property(TARGET Boost::thread PROPERTY + # INTERFACE_LINK_LIBRARIES ${Boost_LIBRARIES}) + # endif() + + # if(NOT TARGET Boost::chrono) + # add_library(Boost::chrono IMPORTED INTERFACE) + # set_property(TARGET Boost::chrono PROPERTY + # INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR}) + # set_property(TARGET Boost::chrono PROPERTY + # INTERFACE_LINK_LIBRARIES ${Boost_LIBRARIES}) + # endif() + + # if(NOT TARGET Boost::date_time) + # add_library(Boost::date_time IMPORTED INTERFACE) + # set_property(TARGET Boost::date_time PROPERTY + # INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR}) + # set_property(TARGET Boost::date_time PROPERTY + # INTERFACE_LINK_LIBRARIES ${Boost_LIBRARIES}) + # endif() + + # if(NOT TARGET Boost::regex) + # add_library(Boost::regex IMPORTED INTERFACE) + # set_property(TARGET Boost::regex PROPERTY + # INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR}) + # set_property(TARGET Boost::regex PROPERTY + # INTERFACE_LINK_LIBRARIES ${Boost_LIBRARIES}) + # endif() + + # if(NOT TARGET Boost::log) + # add_library(Boost::log IMPORTED INTERFACE) + # set_property(TARGET Boost::log PROPERTY + # INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR}) + # set_property(TARGET Boost::log PROPERTY + # INTERFACE_LINK_LIBRARIES ${Boost_LIBRARIES}) + # endif() + + # if(NOT TARGET Boost::log_setup) + # add_library(Boost::log_setup IMPORTED INTERFACE) + # set_property(TARGET Boost::log_setup PROPERTY + # INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR}) + # set_property(TARGET Boost::log_setup PROPERTY + # INTERFACE_LINK_LIBRARIES ${Boost_LIBRARIES}) + # endif() + + # if(Boost_FOUND) + # message("lib Boost Trouvé") + # else() + # message("lib Boost Introuvable") + # endif() +# --------------------------------------- + +# -------- Inclusion de la SDL2 ---------- +# SDL2 Lib pour fenetre et contrôle + +# Les autre plateforme (Linux...) ont un installateur de paquet, la lib se trouve toute seul. + # find_package(SDL2 REQUIRED) + # if(SDL2_FOUND) + # message("lib SDL2 Trouvé") + # else() + # message("lib SDL2 Introuvable") + # endif() +# --------------------------------------- + +# ------- Inclusion de SDL2_IMAGE -------- +# SDL2_IMAGE Lib pour charger une image + # Les autre plateforme (Linux...) ont un installateur de paquet, la lib se trouve toute seul. + # find_package(SDL2_image QUIET) + # #find_library(SDL2_image libSDL2_image) + + # if(SDL2_image_FOUND) + # message("lib SDL2_IMAGE Trouvé") + # else() + # message("lib SDL2_IMAGE Introuvable") + # endif() +# --------------------------------------- + +# ------- Inclusion de SDL2_TTF -------- +# SDL2_IMAGE Lib pour charger une police d'écriture. + # set(SDL2_ttf_DIR ./lib/CMake/Linux) + # # Les autre plateforme (Linux...) ont un installateur de paquet, la lib se trouve toute seul. + # find_package(SDL2_ttf QUIET) + # #find_library(SDL2_ttf libSDL2_ttf) + # if(SDL2_ttf_FOUND) + # message("lib SDL2_TTF Trouvé") + # else() + # message("lib SDL2_TTF Introuvable") + # endif() +# --------------------------------------- + +# --------- Inclusion de GLEW ----------- +# GLEW Lib pour charger utiliser OpenGL + extension + # Les autre plateforme (Linux...) ont un installateur de paquet, la lib se trouve toute seul. + # find_package(GLEW REQUIRED) + # if(GLEW_FOUND) + # message("lib GLEW Trouvé") + # else() + # message("lib GLEW Introuvable") + # endif() +# --------------------------------------- + +# ---------- Inclusion de ASSIMP ----------- +# Assimp Lib import modèles 3D. + # find_package(assimp REQUIRED) + # if(assimp_FOUND) + # message("lib ASSIMP Trouvé") + # else() + # message("lib ASSIMP Introuvable") + # endif() +# --------------------------------------- + +# ---------- Inclusion de ODE ----------- +# ODE Lib Moteur physique. + # set(ODE_DIR ./lib/CMake/Linux) + # # Les autre plateforme (Linux...) ont un installateur de paquet, la lib se trouve toute seul. + # find_package(ODE REQUIRED) + # if(ODE_FOUND) + # message("lib ODE Trouvé") + # else() + # message("lib ODE Introuvable") + # endif() +# --------------------------------------- + +# --------- Inclusion de SNDFILE ---------- +# SNDFILE Lib pour inclure le son. + # Les autre plateforme (Linux...) ont un installateur de paquet, la lib se trouve toute seul. + #set(SNDFILE_DIR ./lib/CMake/Linux) + # find_package(sndfile QUIET)#TODO corrige + # #find_library(sndfile libsndfile) + # if(sndfile_FOUND) + # message("lib SNDFILE Trouvé") + # else() + # message("lib SNDFILE Introuvable") + # endif() +# --------------------------------------- + +# ---------- Inclusion de OpenAL----------- +# OpenAL Lib gérer le son. + # Les autre plateforme (Linux...) ont un installateur de paquet, la lib se trouve toute seul. + # set(OPENAL_DIR ./lib/CMake/Linux) + # find_package(OPENAL REQUIRED) + + # if(OPENAL_FOUND) + # message("lib OpenAL Trouvé") + # else() + # message("lib OpenAL Introuvable") + # endif() +# --------------------------------------- + +# ---------- Inclusion de Catch2----------- +# Gestion des tests unitaires + +find_package(Catch2 3 REQUIRED) +# These tests can use the Catch2-provided main +if(Catch2_found) + message("lib Catch2 Trouvé") +else() + message("lib Catch2 Introuvable") +endif() + +endif() +# Chemin executable +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "bin/${CMAKE_BUILD_TYPE}") + +# On indique que l'on veut un exécutable nommé PROJECT compilé à partir des fichiers décrits par les variables SRCS et HEADERS. + +add_library(Engine SHARED ${SRCS_ENGINE} ${SRCS_EXTERNAL_GLAD}) +add_executable(${PROJECT} ${SRCS}) +add_dependencies(${PROJECT} Engine) + +add_executable(CosmicTest ${SRCS_TESTS}) +target_link_libraries(CosmicTest PRIVATE Catch2::Catch2WithMain Engine) + +# Fichier include +# OpenGL +#include_directories(${OPENGL_INCLUDE_DIR}) +# SDL2 +#include_directories(${SDL2_INCLUDE_DIRS}) +# GLEW +#include_directories(${GLEW_INCLUDE_DIRS}) +# SDL2_image +#include_directories(${SDL2_IMAGE_INCLUDE_DIRS}) +# SDL2_ttf +#include_directories(${SDL2_TTF_INCLUDE_DIRS}) +# GLM +include_directories(${GLM_INCLUDE_DIRS}) +# JSONFMCPP +include_directories(${JSONFMCPP_INCLUDE_DIRS}) +#ENTT +include_directories(${ENTT_INCLUDE_DIRS}) + +# ASSIMP +#include_directories(${ASSIMP_INCLUDE_DIRS}) +# ODE +#include_directories(${ODE_INCLUDE_DIRS}) +# SNDFILE +#include_directories(${SNDFILE_INCLUDE_DIRS}) +# OPENAL +#include_directories(${OPENAL_INCLUDE_DIRS}) + +# Fichier lib +# OpenGL +#target_link_libraries(Engine OpenMP::OpenMP_CXX) + +# OpenMP +#target_link_libraries(Engine ${OPENGL_LIBRARIES}) + +# SDL2 +#target_link_libraries(Engine ${SDL2_LIBRARIES}) + +# GLEW +#target_link_libraries(Engine ${GLEW_LIBRARIES}) + +# SDL2_image +#target_link_libraries(Engine SDL2_image) + +# SDL2_ttf +#target_link_libraries(Engine SDL2_ttf) + +# Boost + + +# ASSIMP +#target_link_libraries(Engine ${ASSIMP_LIBRARIES}) + + +# ODE +#target_link_libraries(Engine ${ODE_LIBRARIES}) + +# SNDFILE +#target_link_libraries(Engine sndfile) + +# OPENAL +#target_link_libraries(Engine ${OPENAL_LIBRARIES}) + + +#target_link_libraries(Engine ${CMAKE_DL_LIBS}) + +#target_link_libraries(${PROJECT} ${CMAKE_DL_LIBS}) + + +# Boost +# target_link_libraries(Engine Boost::boost) +# target_link_libraries(Engine Boost::filesystem) +# target_link_libraries(Engine Boost::chrono) +# target_link_libraries(Engine Boost::thread) +# target_link_libraries(Engine Boost::date_time) +# target_link_libraries(Engine Boost::regex) +# target_link_libraries(Engine Boost::log) +# target_link_libraries(Engine Boost::log_setup) + +target_link_libraries(${PROJECT} Engine) + +if(UNIX) +add_custom_command( + TARGET Engine POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_CURRENT_BINARY_DIR}/libEngine.so + ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) +endif() + +# Paramètre de compilation +if (UNIX) + set(CMAKE_CXX_FLAGS "-Wall -ldl -fPIC") +endif () + +# Valgrind ne marche que pour Linux... +if (UNIX) + add_custom_target("valgrind" + COMMAND ${CMAKE_CTEST_COMMAND} + --force-new-ctest-process --test-action memcheck + COMMAND cat "${CMAKE_BINARY_DIR}/Testing/Temporary/MemoryChecker.*.log") +endif() + +# Doxygen +# check if Doxygen is installed +find_package(Doxygen) +if (DOXYGEN_FOUND) + # set input and output files + set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile.in) + set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/doc/Doxyfile) + + # request to configure the file + configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY) + message("Doxygen build started") + + # note the option ALL which allows to build the docs together with the application + add_custom_target("doxygen" + COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Generating API documentation with Doxygen" + VERBATIM) +else() + message("Doxygen need to be installed to generate the doxygen documentation") +endif() + +foreach(source IN LISTS SRCS_ENGINE) + get_filename_component(source_path "${source}" PATH) + STRING(REGEX REPLACE "${CMAKE_CURRENT_SOURCE_DIR}" "" source_path ${source_path}) + string(REPLACE "/" "\\" source_path_msvc "${source_path}") + source_group("${source_path_msvc}" FILES "${source}") +endforeach() + +foreach(source IN LISTS SRCS) + get_filename_component(source_path "${source}" PATH) + STRING(REGEX REPLACE "${CMAKE_CURRENT_SOURCE_DIR}" "" source_path ${source_path}) + string(REPLACE "/" "\\" source_path_msvc "${source_path}") + source_group("${source_path_msvc}" FILES "${source}") +endforeach() + +message(STATUS "Tree reorganized") \ No newline at end of file diff --git a/assets/475uja.jpg b/assets/475uja.jpg new file mode 100644 index 0000000..1a7cbf5 Binary files /dev/null and b/assets/475uja.jpg differ diff --git a/assets/F.O.O.L - Criminals.ogg b/assets/F.O.O.L - Criminals.ogg new file mode 100644 index 0000000..4c19563 Binary files /dev/null and b/assets/F.O.O.L - Criminals.ogg differ diff --git a/assets/QTForms/EditorWindow.ui b/assets/QTForms/EditorWindow.ui new file mode 100644 index 0000000..a27f696 --- /dev/null +++ b/assets/QTForms/EditorWindow.ui @@ -0,0 +1,199 @@ + + + EditorWindow + + + + 0 + 0 + 800 + 600 + + + + CosmicEngine Editor + + + + + + 0 + 0 + 211 + 431 + + + + 1 + + + + + 0 + 0 + 211 + 377 + + + + Scene + + + + + + 0 + 0 + 211 + 377 + + + + Entities + + + + + + + 220 + 0 + 361 + 351 + + + + + + + 590 + 0 + 211 + 431 + + + + 1 + + + + + 0 + 0 + 211 + 377 + + + + Models + + + + + + 0 + 0 + 211 + 377 + + + + Shaders + + + + + + + 10 + 450 + 781 + 101 + + + + Qt::ScrollBarAsNeeded + + + 1 + + + + + + 220 + 380 + 75 + 23 + + + + Play + + + + + + 360 + 380 + 75 + 23 + + + + Stop + + + + + + 500 + 380 + 75 + 23 + + + + Reset + + + + + + + 0 + 0 + 800 + 21 + + + + + File + + + + + Edit + + + + + Tools + + + + + Help + + + + + + + + + + + + diff --git a/assets/QTForms/EditorWindowWidg.ui b/assets/QTForms/EditorWindowWidg.ui new file mode 100644 index 0000000..ae807e6 --- /dev/null +++ b/assets/QTForms/EditorWindowWidg.ui @@ -0,0 +1,199 @@ + + + m_editorWindow + + + + 0 + 0 + 800 + 600 + + + + CosmicEngine Editor + + + + + + 0 + 0 + 211 + 431 + + + + 1 + + + + + 0 + 0 + 100 + 30 + + + + Scene + + + + + + 0 + 0 + 211 + 377 + + + + Entities + + + + + + + 590 + 0 + 211 + 431 + + + + 1 + + + + + 0 + 0 + 100 + 30 + + + + Models + + + + + + 0 + 0 + 211 + 377 + + + + Shaders + + + + + + + 10 + 450 + 781 + 101 + + + + Qt::ScrollBarAsNeeded + + + 1 + + + + + + 220 + 380 + 75 + 23 + + + + Play + + + + + + 360 + 380 + 75 + 23 + + + + Stop + + + + + + 500 + 380 + 75 + 23 + + + + Reset + + + + + + 210 + 0 + 381 + 351 + + + + + + + + 0 + 0 + 800 + 21 + + + + + File + + + + + Edit + + + + + Tools + + + + + Help + + + + + + + + + + + + diff --git a/assets/ccccc.png b/assets/ccccc.png new file mode 100644 index 0000000..ee8d27c Binary files /dev/null and b/assets/ccccc.png differ diff --git a/assets/configs/config.json b/assets/configs/config.json new file mode 100644 index 0000000..37f347b --- /dev/null +++ b/assets/configs/config.json @@ -0,0 +1,15 @@ +{ + "config": { + "video": { + "windowedHeight": 360, + "windowedWidth": 640, + "fullscreenHeight": 1080, + "fullscreenWidth": 1920, + "fullscreenSizeAuto": false, + "fullscreen": true, + "msaa": 16, + "vSync": 1, + "framerate": 60 + } + } +} \ No newline at end of file diff --git a/assets/exotique-1_0.jpg b/assets/exotique-1_0.jpg new file mode 100644 index 0000000..92e44c3 Binary files /dev/null and b/assets/exotique-1_0.jpg differ diff --git a/assets/fonts/arial.ttf b/assets/fonts/arial.ttf new file mode 100644 index 0000000..12cc15c Binary files /dev/null and b/assets/fonts/arial.ttf differ diff --git a/assets/icons/spaceEngine.png b/assets/icons/spaceEngine.png new file mode 100644 index 0000000..a7208a1 Binary files /dev/null and b/assets/icons/spaceEngine.png differ diff --git a/assets/models/cone.mtl b/assets/models/cone.mtl new file mode 100644 index 0000000..ee30f7a --- /dev/null +++ b/assets/models/cone.mtl @@ -0,0 +1,12 @@ +# Blender MTL File: 'None' +# Material Count: 1 + +newmtl Material.003 +Ns 323.999994 +Ka 1.000000 1.000000 1.000000 +Kd 0.800000 0.000000 0.587194 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.000000 +d 1.000000 +illum 2 diff --git a/assets/models/cone.obj b/assets/models/cone.obj new file mode 100644 index 0000000..5370005 --- /dev/null +++ b/assets/models/cone.obj @@ -0,0 +1,170 @@ +# Blender v2.90.1 OBJ File: '' +# www.blender.org +mtllib cone.mtl +o Cone +v 0.000000 -1.000000 -1.000000 +v 0.195090 -1.000000 -0.980785 +v 0.382683 -1.000000 -0.923880 +v 0.555570 -1.000000 -0.831470 +v 0.707107 -1.000000 -0.707107 +v 0.831470 -1.000000 -0.555570 +v 0.923880 -1.000000 -0.382683 +v 0.980785 -1.000000 -0.195090 +v 1.000000 -1.000000 -0.000000 +v 0.980785 -1.000000 0.195090 +v 0.923880 -1.000000 0.382683 +v 0.831470 -1.000000 0.555570 +v 0.707107 -1.000000 0.707107 +v 0.555570 -1.000000 0.831470 +v 0.382683 -1.000000 0.923880 +v 0.195090 -1.000000 0.980785 +v -0.000000 -1.000000 1.000000 +v -0.195091 -1.000000 0.980785 +v -0.382684 -1.000000 0.923879 +v -0.555571 -1.000000 0.831469 +v -0.707107 -1.000000 0.707106 +v -0.831470 -1.000000 0.555570 +v -0.923880 -1.000000 0.382683 +v -0.980785 -1.000000 0.195089 +v -1.000000 -1.000000 -0.000001 +v -0.980785 -1.000000 -0.195091 +v -0.923879 -1.000000 -0.382684 +v -0.831469 -1.000000 -0.555571 +v -0.707106 -1.000000 -0.707108 +v -0.555569 -1.000000 -0.831470 +v -0.382682 -1.000000 -0.923880 +v -0.195089 -1.000000 -0.980786 +v 0.000000 1.000000 0.000000 +vt 0.250000 0.490000 +vt 0.250000 0.250000 +vt 0.296822 0.485388 +vt 0.341844 0.471731 +vt 0.383337 0.449553 +vt 0.419706 0.419706 +vt 0.449553 0.383337 +vt 0.471731 0.341844 +vt 0.485388 0.296822 +vt 0.490000 0.250000 +vt 0.485388 0.203178 +vt 0.471731 0.158156 +vt 0.449553 0.116663 +vt 0.419706 0.080294 +vt 0.383337 0.050447 +vt 0.341844 0.028269 +vt 0.296822 0.014612 +vt 0.250000 0.010000 +vt 0.203178 0.014612 +vt 0.158156 0.028269 +vt 0.116663 0.050447 +vt 0.080294 0.080294 +vt 0.050447 0.116663 +vt 0.028269 0.158156 +vt 0.014611 0.203179 +vt 0.010000 0.250000 +vt 0.014612 0.296822 +vt 0.028269 0.341844 +vt 0.050447 0.383337 +vt 0.080295 0.419706 +vt 0.116663 0.449553 +vt 0.158156 0.471731 +vt 0.750000 0.490000 +vt 0.796822 0.485388 +vt 0.841844 0.471731 +vt 0.883337 0.449553 +vt 0.919706 0.419706 +vt 0.949553 0.383337 +vt 0.971731 0.341844 +vt 0.985388 0.296822 +vt 0.990000 0.250000 +vt 0.985388 0.203178 +vt 0.971731 0.158156 +vt 0.949553 0.116663 +vt 0.919706 0.080294 +vt 0.883337 0.050447 +vt 0.841844 0.028269 +vt 0.796822 0.014612 +vt 0.750000 0.010000 +vt 0.703178 0.014612 +vt 0.658156 0.028269 +vt 0.616663 0.050447 +vt 0.580294 0.080294 +vt 0.550447 0.116663 +vt 0.528269 0.158156 +vt 0.514611 0.203179 +vt 0.510000 0.250000 +vt 0.514612 0.296822 +vt 0.528269 0.341844 +vt 0.550447 0.383337 +vt 0.580295 0.419706 +vt 0.616663 0.449553 +vt 0.658156 0.471731 +vt 0.703179 0.485389 +vt 0.203179 0.485389 +vn 0.0878 0.4455 -0.8910 +vn 0.2599 0.4455 -0.8567 +vn 0.4220 0.4455 -0.7896 +vn 0.5680 0.4455 -0.6921 +vn 0.6921 0.4455 -0.5680 +vn 0.7896 0.4455 -0.4220 +vn 0.8567 0.4455 -0.2599 +vn 0.8910 0.4455 -0.0878 +vn 0.8910 0.4455 0.0878 +vn 0.8567 0.4455 0.2599 +vn 0.7896 0.4455 0.4220 +vn 0.6921 0.4455 0.5680 +vn 0.5680 0.4455 0.6921 +vn 0.4220 0.4455 0.7896 +vn 0.2599 0.4455 0.8567 +vn 0.0878 0.4455 0.8910 +vn -0.0878 0.4455 0.8910 +vn -0.2599 0.4455 0.8567 +vn -0.4220 0.4455 0.7896 +vn -0.5680 0.4455 0.6921 +vn -0.6921 0.4455 0.5680 +vn -0.7896 0.4455 0.4220 +vn -0.8567 0.4455 0.2599 +vn -0.8910 0.4455 0.0878 +vn -0.8910 0.4455 -0.0878 +vn -0.8567 0.4455 -0.2599 +vn -0.7896 0.4455 -0.4220 +vn -0.6921 0.4455 -0.5680 +vn -0.5680 0.4455 -0.6921 +vn -0.4220 0.4455 -0.7896 +vn 0.0000 -1.0000 -0.0000 +vn -0.2599 0.4455 -0.8567 +vn -0.0878 0.4455 -0.8910 +usemtl Material.003 +s off +f 1/1/1 33/2/1 2/3/1 +f 2/3/2 33/2/2 3/4/2 +f 3/4/3 33/2/3 4/5/3 +f 4/5/4 33/2/4 5/6/4 +f 5/6/5 33/2/5 6/7/5 +f 6/7/6 33/2/6 7/8/6 +f 7/8/7 33/2/7 8/9/7 +f 8/9/8 33/2/8 9/10/8 +f 9/10/9 33/2/9 10/11/9 +f 10/11/10 33/2/10 11/12/10 +f 11/12/11 33/2/11 12/13/11 +f 12/13/12 33/2/12 13/14/12 +f 13/14/13 33/2/13 14/15/13 +f 14/15/14 33/2/14 15/16/14 +f 15/16/15 33/2/15 16/17/15 +f 16/17/16 33/2/16 17/18/16 +f 17/18/17 33/2/17 18/19/17 +f 18/19/18 33/2/18 19/20/18 +f 19/20/19 33/2/19 20/21/19 +f 20/21/20 33/2/20 21/22/20 +f 21/22/21 33/2/21 22/23/21 +f 22/23/22 33/2/22 23/24/22 +f 23/24/23 33/2/23 24/25/23 +f 24/25/24 33/2/24 25/26/24 +f 25/26/25 33/2/25 26/27/25 +f 26/27/26 33/2/26 27/28/26 +f 27/28/27 33/2/27 28/29/27 +f 28/29/28 33/2/28 29/30/28 +f 29/30/29 33/2/29 30/31/29 +f 30/31/30 33/2/30 31/32/30 +f 1/33/31 2/34/31 3/35/31 4/36/31 5/37/31 6/38/31 7/39/31 8/40/31 9/41/31 10/42/31 11/43/31 12/44/31 13/45/31 14/46/31 15/47/31 16/48/31 17/49/31 18/50/31 19/51/31 20/52/31 21/53/31 22/54/31 23/55/31 24/56/31 25/57/31 26/58/31 27/59/31 28/60/31 29/61/31 30/62/31 31/63/31 32/64/31 +f 31/32/32 33/2/32 32/65/32 +f 32/65/33 33/2/33 1/1/33 diff --git a/assets/models/cube.mtl b/assets/models/cube.mtl new file mode 100644 index 0000000..da5b726 --- /dev/null +++ b/assets/models/cube.mtl @@ -0,0 +1,12 @@ +# Blender MTL File: 'None' +# Material Count: 1 + +newmtl Material +Ns 323.999994 +Ka 1.000000 1.000000 1.000000 +Kd 0.017824 0.005779 0.800000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.000000 +d 1.000000 +illum 2 diff --git a/assets/models/cube.obj b/assets/models/cube.obj new file mode 100644 index 0000000..50c1497 --- /dev/null +++ b/assets/models/cube.obj @@ -0,0 +1,40 @@ +# Blender v2.90.1 OBJ File: '' +# www.blender.org +mtllib cube.mtl +o Cube +v 1.000000 1.000000 -1.000000 +v 1.000000 -1.000000 -1.000000 +v 1.000000 1.000000 1.000000 +v 1.000000 -1.000000 1.000000 +v -1.000000 1.000000 -1.000000 +v -1.000000 -1.000000 -1.000000 +v -1.000000 1.000000 1.000000 +v -1.000000 -1.000000 1.000000 +vt 0.625000 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.750000 +vt 0.625000 0.750000 +vt 0.375000 0.750000 +vt 0.625000 1.000000 +vt 0.375000 1.000000 +vt 0.375000 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.250000 +vt 0.375000 0.250000 +vt 0.125000 0.500000 +vt 0.375000 0.500000 +vt 0.125000 0.750000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +usemtl Material +s off +f 1/1/1 5/2/1 7/3/1 3/4/1 +f 4/5/2 3/4/2 7/6/2 8/7/2 +f 8/8/3 7/9/3 5/10/3 6/11/3 +f 6/12/4 2/13/4 4/5/4 8/14/4 +f 2/13/5 1/1/5 3/4/5 4/5/5 +f 6/11/6 5/10/6 1/1/6 2/13/6 diff --git a/assets/models/cylindre.mtl b/assets/models/cylindre.mtl new file mode 100644 index 0000000..15bfaa8 --- /dev/null +++ b/assets/models/cylindre.mtl @@ -0,0 +1,12 @@ +# Blender MTL File: 'None' +# Material Count: 1 + +newmtl Material.002 +Ns 323.999994 +Ka 1.000000 1.000000 1.000000 +Kd 0.800000 0.000000 0.002363 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.000000 +d 1.000000 +illum 2 diff --git a/assets/models/cylindre.obj b/assets/models/cylindre.obj new file mode 100644 index 0000000..ad4b1c9 --- /dev/null +++ b/assets/models/cylindre.obj @@ -0,0 +1,268 @@ +# Blender v2.90.1 OBJ File: '' +# www.blender.org +mtllib cylindre.mtl +o Cylinder +v 0.000000 -1.000000 -1.000000 +v 0.000000 1.000000 -1.000000 +v 0.195090 -1.000000 -0.980785 +v 0.195090 1.000000 -0.980785 +v 0.382683 -1.000000 -0.923880 +v 0.382683 1.000000 -0.923880 +v 0.555570 -1.000000 -0.831470 +v 0.555570 1.000000 -0.831470 +v 0.707107 -1.000000 -0.707107 +v 0.707107 1.000000 -0.707107 +v 0.831470 -1.000000 -0.555570 +v 0.831470 1.000000 -0.555570 +v 0.923880 -1.000000 -0.382683 +v 0.923880 1.000000 -0.382683 +v 0.980785 -1.000000 -0.195090 +v 0.980785 1.000000 -0.195090 +v 1.000000 -1.000000 -0.000000 +v 1.000000 1.000000 -0.000000 +v 0.980785 -1.000000 0.195090 +v 0.980785 1.000000 0.195090 +v 0.923880 -1.000000 0.382683 +v 0.923880 1.000000 0.382683 +v 0.831470 -1.000000 0.555570 +v 0.831470 1.000000 0.555570 +v 0.707107 -1.000000 0.707107 +v 0.707107 1.000000 0.707107 +v 0.555570 -1.000000 0.831470 +v 0.555570 1.000000 0.831470 +v 0.382683 -1.000000 0.923880 +v 0.382683 1.000000 0.923880 +v 0.195090 -1.000000 0.980785 +v 0.195090 1.000000 0.980785 +v -0.000000 -1.000000 1.000000 +v -0.000000 1.000000 1.000000 +v -0.195091 -1.000000 0.980785 +v -0.195091 1.000000 0.980785 +v -0.382684 -1.000000 0.923879 +v -0.382684 1.000000 0.923879 +v -0.555571 -1.000000 0.831469 +v -0.555571 1.000000 0.831469 +v -0.707107 -1.000000 0.707106 +v -0.707107 1.000000 0.707106 +v -0.831470 -1.000000 0.555570 +v -0.831470 1.000000 0.555570 +v -0.923880 -1.000000 0.382683 +v -0.923880 1.000000 0.382683 +v -0.980785 -1.000000 0.195089 +v -0.980785 1.000000 0.195089 +v -1.000000 -1.000000 -0.000001 +v -1.000000 1.000000 -0.000001 +v -0.980785 -1.000000 -0.195091 +v -0.980785 1.000000 -0.195091 +v -0.923879 -1.000000 -0.382684 +v -0.923879 1.000000 -0.382684 +v -0.831469 -1.000000 -0.555571 +v -0.831469 1.000000 -0.555571 +v -0.707106 -1.000000 -0.707108 +v -0.707106 1.000000 -0.707108 +v -0.555569 -1.000000 -0.831470 +v -0.555569 1.000000 -0.831470 +v -0.382682 -1.000000 -0.923880 +v -0.382682 1.000000 -0.923880 +v -0.195089 -1.000000 -0.980786 +v -0.195089 1.000000 -0.980786 +vt 1.000000 0.500000 +vt 1.000000 1.000000 +vt 0.968750 1.000000 +vt 0.968750 0.500000 +vt 0.937500 1.000000 +vt 0.937500 0.500000 +vt 0.906250 1.000000 +vt 0.906250 0.500000 +vt 0.875000 1.000000 +vt 0.875000 0.500000 +vt 0.843750 1.000000 +vt 0.843750 0.500000 +vt 0.812500 1.000000 +vt 0.812500 0.500000 +vt 0.781250 1.000000 +vt 0.781250 0.500000 +vt 0.750000 1.000000 +vt 0.750000 0.500000 +vt 0.718750 1.000000 +vt 0.718750 0.500000 +vt 0.687500 1.000000 +vt 0.687500 0.500000 +vt 0.656250 1.000000 +vt 0.656250 0.500000 +vt 0.625000 1.000000 +vt 0.625000 0.500000 +vt 0.593750 1.000000 +vt 0.593750 0.500000 +vt 0.562500 1.000000 +vt 0.562500 0.500000 +vt 0.531250 1.000000 +vt 0.531250 0.500000 +vt 0.500000 1.000000 +vt 0.500000 0.500000 +vt 0.468750 1.000000 +vt 0.468750 0.500000 +vt 0.437500 1.000000 +vt 0.437500 0.500000 +vt 0.406250 1.000000 +vt 0.406250 0.500000 +vt 0.375000 1.000000 +vt 0.375000 0.500000 +vt 0.343750 1.000000 +vt 0.343750 0.500000 +vt 0.312500 1.000000 +vt 0.312500 0.500000 +vt 0.281250 1.000000 +vt 0.281250 0.500000 +vt 0.250000 1.000000 +vt 0.250000 0.500000 +vt 0.218750 1.000000 +vt 0.218750 0.500000 +vt 0.187500 1.000000 +vt 0.187500 0.500000 +vt 0.156250 1.000000 +vt 0.156250 0.500000 +vt 0.125000 1.000000 +vt 0.125000 0.500000 +vt 0.093750 1.000000 +vt 0.093750 0.500000 +vt 0.062500 1.000000 +vt 0.062500 0.500000 +vt 0.296822 0.485388 +vt 0.250000 0.490000 +vt 0.203179 0.485389 +vt 0.158156 0.471731 +vt 0.116663 0.449553 +vt 0.080295 0.419706 +vt 0.050447 0.383337 +vt 0.028269 0.341844 +vt 0.014612 0.296822 +vt 0.010000 0.250000 +vt 0.014611 0.203179 +vt 0.028269 0.158156 +vt 0.050447 0.116663 +vt 0.080294 0.080294 +vt 0.116663 0.050447 +vt 0.158156 0.028269 +vt 0.203178 0.014612 +vt 0.250000 0.010000 +vt 0.296822 0.014612 +vt 0.341844 0.028269 +vt 0.383337 0.050447 +vt 0.419706 0.080294 +vt 0.449553 0.116663 +vt 0.471731 0.158156 +vt 0.485388 0.203178 +vt 0.490000 0.250000 +vt 0.485388 0.296822 +vt 0.471731 0.341844 +vt 0.449553 0.383337 +vt 0.419706 0.419706 +vt 0.383337 0.449553 +vt 0.341844 0.471731 +vt 0.031250 1.000000 +vt 0.031250 0.500000 +vt 0.000000 1.000000 +vt 0.000000 0.500000 +vt 0.750000 0.490000 +vt 0.796822 0.485388 +vt 0.841844 0.471731 +vt 0.883337 0.449553 +vt 0.919706 0.419706 +vt 0.949553 0.383337 +vt 0.971731 0.341844 +vt 0.985388 0.296822 +vt 0.990000 0.250000 +vt 0.985388 0.203178 +vt 0.971731 0.158156 +vt 0.949553 0.116663 +vt 0.919706 0.080294 +vt 0.883337 0.050447 +vt 0.841844 0.028269 +vt 0.796822 0.014612 +vt 0.750000 0.010000 +vt 0.703178 0.014612 +vt 0.658156 0.028269 +vt 0.616663 0.050447 +vt 0.580294 0.080294 +vt 0.550447 0.116663 +vt 0.528269 0.158156 +vt 0.514611 0.203179 +vt 0.510000 0.250000 +vt 0.514612 0.296822 +vt 0.528269 0.341844 +vt 0.550447 0.383337 +vt 0.580295 0.419706 +vt 0.616663 0.449553 +vt 0.658156 0.471731 +vt 0.703179 0.485389 +vn 0.0980 0.0000 -0.9952 +vn 0.2903 0.0000 -0.9569 +vn 0.4714 0.0000 -0.8819 +vn 0.6344 0.0000 -0.7730 +vn 0.7730 0.0000 -0.6344 +vn 0.8819 0.0000 -0.4714 +vn 0.9569 0.0000 -0.2903 +vn 0.9952 0.0000 -0.0980 +vn 0.9952 0.0000 0.0980 +vn 0.9569 0.0000 0.2903 +vn 0.8819 0.0000 0.4714 +vn 0.7730 0.0000 0.6344 +vn 0.6344 0.0000 0.7730 +vn 0.4714 0.0000 0.8819 +vn 0.2903 0.0000 0.9569 +vn 0.0980 0.0000 0.9952 +vn -0.0980 0.0000 0.9952 +vn -0.2903 0.0000 0.9569 +vn -0.4714 0.0000 0.8819 +vn -0.6344 0.0000 0.7730 +vn -0.7730 0.0000 0.6344 +vn -0.8819 0.0000 0.4714 +vn -0.9569 0.0000 0.2903 +vn -0.9952 0.0000 0.0980 +vn -0.9952 0.0000 -0.0980 +vn -0.9569 0.0000 -0.2903 +vn -0.8819 0.0000 -0.4714 +vn -0.7730 0.0000 -0.6344 +vn -0.6344 0.0000 -0.7730 +vn -0.4714 0.0000 -0.8819 +vn 0.0000 1.0000 0.0000 +vn -0.2903 0.0000 -0.9569 +vn -0.0980 0.0000 -0.9952 +vn 0.0000 -1.0000 -0.0000 +usemtl Material.002 +s off +f 1/1/1 2/2/1 4/3/1 3/4/1 +f 3/4/2 4/3/2 6/5/2 5/6/2 +f 5/6/3 6/5/3 8/7/3 7/8/3 +f 7/8/4 8/7/4 10/9/4 9/10/4 +f 9/10/5 10/9/5 12/11/5 11/12/5 +f 11/12/6 12/11/6 14/13/6 13/14/6 +f 13/14/7 14/13/7 16/15/7 15/16/7 +f 15/16/8 16/15/8 18/17/8 17/18/8 +f 17/18/9 18/17/9 20/19/9 19/20/9 +f 19/20/10 20/19/10 22/21/10 21/22/10 +f 21/22/11 22/21/11 24/23/11 23/24/11 +f 23/24/12 24/23/12 26/25/12 25/26/12 +f 25/26/13 26/25/13 28/27/13 27/28/13 +f 27/28/14 28/27/14 30/29/14 29/30/14 +f 29/30/15 30/29/15 32/31/15 31/32/15 +f 31/32/16 32/31/16 34/33/16 33/34/16 +f 33/34/17 34/33/17 36/35/17 35/36/17 +f 35/36/18 36/35/18 38/37/18 37/38/18 +f 37/38/19 38/37/19 40/39/19 39/40/19 +f 39/40/20 40/39/20 42/41/20 41/42/20 +f 41/42/21 42/41/21 44/43/21 43/44/21 +f 43/44/22 44/43/22 46/45/22 45/46/22 +f 45/46/23 46/45/23 48/47/23 47/48/23 +f 47/48/24 48/47/24 50/49/24 49/50/24 +f 49/50/25 50/49/25 52/51/25 51/52/25 +f 51/52/26 52/51/26 54/53/26 53/54/26 +f 53/54/27 54/53/27 56/55/27 55/56/27 +f 55/56/28 56/55/28 58/57/28 57/58/28 +f 57/58/29 58/57/29 60/59/29 59/60/29 +f 59/60/30 60/59/30 62/61/30 61/62/30 +f 4/63/31 2/64/31 64/65/31 62/66/31 60/67/31 58/68/31 56/69/31 54/70/31 52/71/31 50/72/31 48/73/31 46/74/31 44/75/31 42/76/31 40/77/31 38/78/31 36/79/31 34/80/31 32/81/31 30/82/31 28/83/31 26/84/31 24/85/31 22/86/31 20/87/31 18/88/31 16/89/31 14/90/31 12/91/31 10/92/31 8/93/31 6/94/31 +f 61/62/32 62/61/32 64/95/32 63/96/32 +f 63/96/33 64/95/33 2/97/33 1/98/33 +f 1/99/34 3/100/34 5/101/34 7/102/34 9/103/34 11/104/34 13/105/34 15/106/34 17/107/34 19/108/34 21/109/34 23/110/34 25/111/34 27/112/34 29/113/34 31/114/34 33/115/34 35/116/34 37/117/34 39/118/34 41/119/34 43/120/34 45/121/34 47/122/34 49/123/34 51/124/34 53/125/34 55/126/34 57/127/34 59/128/34 61/129/34 63/130/34 diff --git a/assets/models/map.mtl b/assets/models/map.mtl new file mode 100644 index 0000000..f231bdf --- /dev/null +++ b/assets/models/map.mtl @@ -0,0 +1,10 @@ +# Blender MTL File: 'None' +# Material Count: 1 + +newmtl None +Ns 500 +Ka 0.8 0.8 0.8 +Kd 0.8 0.8 0.8 +Ks 0.8 0.8 0.8 +d 1 +illum 2 diff --git a/assets/models/map.obj b/assets/models/map.obj new file mode 100644 index 0000000..b3d2c4f --- /dev/null +++ b/assets/models/map.obj @@ -0,0 +1,1996 @@ +# Blender v2.90.1 OBJ File: '' +# www.blender.org +mtllib map.mtl +o Sphere_Sphere.001 +v 0.000000 1.112160 -0.208400 +v 0.000000 1.030427 -0.425132 +v 0.000000 0.885985 -0.594145 +v 0.000000 0.797188 -0.814896 +v 0.000000 0.609254 -0.927976 +v 0.000000 0.404130 -0.975998 +v 0.000000 0.195090 -0.980785 +v 0.000000 0.000000 -0.973787 +v 0.000000 -0.152136 -0.820990 +v 0.000000 -0.341492 -0.224163 +v 0.041315 1.110455 -0.204021 +v 0.083867 1.039745 -0.419473 +v 0.120355 0.948220 -0.629362 +v 0.154650 0.814453 -0.817285 +v 0.177602 0.618843 -0.927799 +v 0.189796 0.404243 -0.962587 +v 0.191342 0.195090 -0.961940 +v 0.179250 0.000305 -0.902101 +v 0.140244 -0.143495 -0.752896 +v 0.067642 -0.227680 -0.619253 +v 0.012569 -0.259696 -0.493126 +v 0.001348 -0.331829 -0.363071 +v 0.000039 -0.343493 -0.202976 +v 0.000000 -0.370407 -0.116322 +v 0.000000 -0.380180 -0.116634 +v 0.082441 1.107900 -0.192903 +v 0.162815 1.042426 -0.395919 +v 0.246679 0.964086 -0.608500 +v 0.311784 0.812301 -0.768447 +v 0.363952 0.626778 -0.885454 +v 0.377451 0.404009 -0.916589 +v 0.382851 0.198975 -0.924283 +v 0.344481 0.001079 -0.834007 +v 0.275776 -0.145372 -0.684535 +v 0.215631 -0.254962 -0.636301 +v 0.060782 -0.258144 -0.473681 +v 0.002848 -0.323615 -0.308592 +v 0.000074 -0.346169 -0.178415 +v 0.000001 -0.370250 -0.116429 +v 0.000000 -0.370897 -0.120556 +v 0.123953 1.104398 -0.175099 +v 0.237654 1.041054 -0.354369 +v 0.365601 0.973777 -0.551587 +v 0.461844 0.825688 -0.701971 +v 0.528405 0.622511 -0.791150 +v 0.536295 0.396683 -0.802742 +v 0.544895 0.195090 -0.815493 +v 0.492925 0.003022 -0.740128 +v 0.416549 -0.126242 -0.604420 +v 0.343295 -0.250402 -0.564196 +v 0.133735 -0.276303 -0.417515 +v 0.006127 -0.334935 -0.237582 +v 0.001116 -0.352423 -0.142052 +v 0.000005 -0.370786 -0.115382 +v 0.000000 -0.372866 -0.115557 +v 0.159497 1.093795 -0.148145 +v 0.300108 1.042770 -0.299205 +v 0.462821 0.970387 -0.463938 +v 0.592520 0.826260 -0.604030 +v 0.670001 0.618285 -0.673020 +v 0.665544 0.389826 -0.666074 +v 0.693520 0.195090 -0.693520 +v 0.630296 0.000341 -0.630974 +v 0.584762 -0.130581 -0.547256 +v 0.428617 -0.237448 -0.441304 +v 0.179323 -0.289966 -0.275702 +v 0.013333 -0.342232 -0.162979 +v 0.004959 -0.364425 -0.112930 +v 0.000009 -0.371629 -0.113737 +v 0.000000 -0.375919 -0.108266 +v 0.185206 1.077347 -0.112946 +v 0.341301 1.005188 -0.221259 +v 0.506143 0.929639 -0.351491 +v 0.693280 0.824743 -0.479960 +v 0.787892 0.619488 -0.536182 +v 0.780480 0.388347 -0.522855 +v 0.818054 0.195699 -0.546606 +v 0.744750 0.001771 -0.495561 +v 0.688203 -0.135323 -0.449593 +v 0.516244 -0.209595 -0.336702 +v 0.221131 -0.287382 -0.193256 +v 0.025193 -0.339900 -0.124557 +v 0.007395 -0.373412 -0.099699 +v 0.000008 -0.372116 -0.112844 +v 0.000000 -0.376676 -0.103991 +v 0.201940 1.064862 -0.075764 +v 0.370159 0.984682 -0.153437 +v 0.547835 0.900200 -0.235133 +v 0.772990 0.849583 -0.357367 +v 0.881610 0.625988 -0.389861 +v 0.886673 0.395422 -0.369737 +v 0.921001 0.198273 -0.381491 +v 0.837481 0.003744 -0.340671 +v 0.799450 -0.161327 -0.335579 +v 0.573258 -0.230456 -0.218463 +v 0.258394 -0.259602 -0.143129 +v 0.047915 -0.326895 -0.105440 +v 0.012047 -0.375962 -0.094713 +v 0.000011 -0.373024 -0.110892 +v 0.000000 -0.374676 -0.108370 +v 0.210726 1.062475 -0.040569 +v 0.381900 0.947205 -0.077364 +v 0.588117 0.911996 -0.121556 +v 0.817229 0.875218 -0.199411 +v 1.005199 0.666480 -0.246893 +v 0.957138 0.399711 -0.192292 +v 0.995256 0.199260 -0.199625 +v 0.939300 0.004479 -0.180260 +v 0.814064 -0.150698 -0.154439 +v 0.621331 -0.241009 -0.074570 +v 0.334080 -0.254821 -0.037980 +v 0.123453 -0.295421 -0.056476 +v 0.025644 -0.391270 -0.068709 +v 0.000049 -0.375623 -0.103716 +v 0.000000 -0.374659 -0.108027 +v 0.212701 1.067404 -0.003028 +v 0.391479 0.947071 -0.000163 +v 0.600967 0.923250 -0.005606 +v 0.820924 0.862048 -0.017612 +v 1.090267 0.695812 -0.057960 +v 1.084401 0.412795 -0.022621 +v 1.028477 0.202607 -0.001524 +v 0.999457 0.002223 0.003396 +v 0.863971 -0.156265 0.013290 +v 0.649940 -0.231979 0.049344 +v 0.351359 -0.288916 0.073557 +v 0.205847 -0.328949 0.047597 +v 0.039716 -0.423753 0.008328 +v 0.000302 -0.387872 -0.067895 +v 0.000000 -0.376997 -0.100822 +v 0.206843 1.071772 0.037698 +v 0.390956 0.964288 0.076844 +v 0.583616 0.925605 0.109878 +v 0.823415 0.903997 0.144422 +v 1.096610 0.729382 0.170402 +v 1.061670 0.411184 0.191790 +v 1.082341 0.202514 0.209608 +v 1.047429 -0.005192 0.205642 +v 0.918818 -0.170693 0.184390 +v 0.623609 -0.230458 0.188586 +v 0.355777 -0.309097 0.206380 +v 0.229188 -0.309284 0.183114 +v 0.031479 -0.418600 0.146076 +v 0.001044 -0.420969 0.075206 +v 0.000003 -0.399155 -0.048419 +v 0.192705 1.074268 0.079389 +v 0.368614 0.966196 0.151447 +v 0.549365 0.917455 0.219210 +v 0.771259 0.897367 0.302598 +v 1.078234 0.769789 0.405554 +v 1.061625 0.417030 0.428503 +v 1.027258 0.200616 0.418404 +v 1.024587 -0.006465 0.420098 +v 0.917358 -0.197402 0.380561 +v 0.574817 -0.239937 0.322033 +v 0.364296 -0.340489 0.277089 +v 0.220770 -0.341818 0.258718 +v 0.047603 -0.413550 0.253374 +v 0.000676 -0.418232 0.184165 +v 0.000009 -0.420759 0.156603 +v 0.171097 1.077554 0.118802 +v 0.333125 0.976104 0.223644 +v 0.499712 0.919625 0.335273 +v 0.695862 0.926221 0.471169 +v 0.942932 0.765584 0.662398 +v 0.977423 0.422329 0.679610 +v 0.928026 0.207918 0.622133 +v 0.937057 -0.009835 0.624428 +v 0.836369 -0.196118 0.559461 +v 0.534429 -0.234161 0.434845 +v 0.346894 -0.343824 0.334509 +v 0.176045 -0.373532 0.286590 +v 0.042819 -0.418629 0.284056 +v 0.000563 -0.415924 0.209241 +v 0.143466 1.077614 0.152650 +v 0.283607 0.991560 0.292598 +v 0.416748 0.942494 0.444883 +v 0.574187 0.917611 0.617777 +v 0.734881 0.704238 0.790634 +v 0.773317 0.425672 0.806651 +v 0.805723 0.219896 0.813618 +v 0.767310 -0.008815 0.771058 +v 0.716522 -0.201301 0.716998 +v 0.483130 -0.237869 0.552685 +v 0.307412 -0.341158 0.398993 +v 0.136423 -0.404098 0.295845 +v 0.045099 -0.419342 0.289158 +v 0.001494 -0.415811 0.208041 +v 0.111296 1.069907 0.178759 +v 0.221014 0.986034 0.341183 +v 0.321518 0.909610 0.505677 +v 0.434001 0.873071 0.697582 +v 0.565455 0.695685 0.891809 +v 0.582421 0.416516 0.883785 +v 0.610155 0.218199 0.920885 +v 0.594938 -0.000116 0.890063 +v 0.551996 -0.197229 0.826638 +v 0.405186 -0.243170 0.651761 +v 0.273047 -0.325073 0.460876 +v 0.119152 -0.423442 0.318273 +v 0.035354 -0.422461 0.302299 +v 0.001694 -0.415483 0.211116 +v 0.000000 -0.375964 -0.110286 +v 0.076219 1.055838 0.196225 +v 0.155191 0.992516 0.376364 +v 0.221633 0.898465 0.557799 +v 0.283918 0.836923 0.740559 +v 0.371448 0.683939 0.958525 +v 0.386699 0.416350 0.983530 +v 0.409775 0.217375 1.001661 +v 0.413863 -0.003327 1.003790 +v 0.384508 -0.199912 0.929981 +v 0.296548 -0.260729 0.762411 +v 0.196545 -0.333688 0.515911 +v 0.084219 -0.447463 0.367044 +v 0.015921 -0.430984 0.325970 +v 0.000581 -0.415065 0.218353 +v 0.039048 1.045460 0.205974 +v 0.081208 0.992960 0.398918 +v 0.111923 0.877214 0.575308 +v 0.131391 0.816263 0.769445 +v 0.177492 0.677630 1.000753 +v 0.186866 0.401561 0.998481 +v 0.197595 0.202580 0.995453 +v 0.203548 -0.000225 1.019264 +v 0.198180 -0.199316 1.002514 +v 0.152602 -0.291427 0.830157 +v 0.088335 -0.351475 0.582303 +v 0.036040 -0.489362 0.447601 +v 0.003072 -0.466328 0.366781 +v 0.000188 -0.414799 0.224843 +v -0.000000 1.042658 0.209191 +v 0.000000 0.975531 0.401575 +v 0.000000 0.837060 0.558367 +v 0.000017 0.790518 0.764793 +v 0.000887 0.660054 0.994144 +v 0.000000 0.388940 0.947185 +v -0.000000 0.194276 0.978453 +v -0.000000 0.000370 1.049618 +v -0.000000 -0.196823 0.994421 +v 0.000000 -0.343435 0.863155 +v -0.000000 -0.362613 0.615490 +v -0.000000 -0.506188 0.459796 +v -0.000000 -0.476974 0.375661 +v 0.000000 -0.414971 0.230654 +v -0.039048 1.045460 0.205974 +v -0.081208 0.992960 0.398918 +v -0.111923 0.877214 0.575308 +v -0.131557 0.816401 0.769195 +v -0.178027 0.677723 1.000694 +v -0.186866 0.401561 0.998481 +v -0.197595 0.202580 0.995452 +v -0.203548 -0.000225 1.019264 +v -0.198180 -0.199316 1.002514 +v -0.152602 -0.291427 0.830157 +v -0.088335 -0.351475 0.582302 +v -0.036040 -0.489362 0.447601 +v -0.003072 -0.466328 0.366781 +v -0.000188 -0.414799 0.224843 +v -0.076219 1.055838 0.196224 +v -0.155191 0.992516 0.376364 +v -0.221701 0.898450 0.557805 +v -0.283640 0.837190 0.740067 +v -0.371007 0.683694 0.958662 +v -0.386697 0.416350 0.983530 +v -0.409775 0.217375 1.001661 +v -0.413863 -0.003327 1.003790 +v -0.384509 -0.199912 0.929981 +v -0.296548 -0.260729 0.762411 +v -0.196545 -0.333688 0.515911 +v -0.084219 -0.447463 0.367044 +v -0.015921 -0.430984 0.325970 +v -0.000581 -0.415065 0.218353 +v -0.111296 1.069908 0.178758 +v -0.221013 0.986034 0.341183 +v -0.321590 0.909521 0.505731 +v -0.432973 0.873295 0.696527 +v -0.565072 0.695422 0.892173 +v -0.582417 0.416550 0.883767 +v -0.610155 0.218199 0.920885 +v -0.594938 -0.000116 0.890063 +v -0.551996 -0.197229 0.826637 +v -0.405186 -0.243170 0.651761 +v -0.273047 -0.325073 0.460876 +v -0.119152 -0.423442 0.318273 +v -0.035354 -0.422461 0.302299 +v -0.001694 -0.415483 0.211116 +v -0.000000 1.077747 0.000042 +v -0.143466 1.077614 0.152650 +v -0.283607 0.991560 0.292598 +v -0.416674 0.942495 0.444874 +v -0.573985 0.917590 0.617886 +v -0.735472 0.704239 0.790356 +v -0.773240 0.425929 0.806771 +v -0.805723 0.219896 0.813618 +v -0.767310 -0.008815 0.771058 +v -0.716522 -0.201301 0.716997 +v -0.483130 -0.237869 0.552685 +v -0.307412 -0.341159 0.398993 +v -0.136423 -0.404098 0.295845 +v -0.045099 -0.419342 0.289158 +v -0.001494 -0.415811 0.208041 +v -0.171097 1.077554 0.118802 +v -0.333125 0.976104 0.223644 +v -0.499712 0.919625 0.335273 +v -0.696011 0.926186 0.471083 +v -0.940539 0.766394 0.664148 +v -0.977424 0.422383 0.679614 +v -0.928027 0.207918 0.622133 +v -0.937057 -0.009835 0.624428 +v -0.836369 -0.196118 0.559461 +v -0.534429 -0.234161 0.434845 +v -0.346894 -0.343824 0.334509 +v -0.176045 -0.373532 0.286590 +v -0.042819 -0.418629 0.284056 +v -0.000563 -0.415924 0.209241 +v -0.192705 1.074268 0.079389 +v -0.368614 0.966196 0.151447 +v -0.549365 0.917455 0.219210 +v -0.771135 0.897390 0.302704 +v -1.077404 0.771235 0.409337 +v -1.061694 0.416721 0.428477 +v -1.027258 0.200616 0.418404 +v -1.024587 -0.006465 0.420097 +v -0.917358 -0.197402 0.380561 +v -0.574817 -0.239937 0.322033 +v -0.364296 -0.340489 0.277089 +v -0.220769 -0.341818 0.258718 +v -0.047603 -0.413550 0.253374 +v -0.000676 -0.418232 0.184165 +v -0.000009 -0.420759 0.156603 +v -0.206843 1.071772 0.037698 +v -0.390956 0.964288 0.076844 +v -0.583616 0.925606 0.109878 +v -0.823393 0.904027 0.144544 +v -1.096552 0.729204 0.169855 +v -1.061680 0.411165 0.191837 +v -1.082341 0.202515 0.209607 +v -1.047429 -0.005192 0.205641 +v -0.918818 -0.170693 0.184390 +v -0.623609 -0.230458 0.188587 +v -0.355777 -0.309097 0.206380 +v -0.229187 -0.309284 0.183114 +v -0.031479 -0.418600 0.146075 +v -0.001044 -0.420969 0.075206 +v -0.000003 -0.399155 -0.048419 +v -0.212701 1.067404 -0.003028 +v -0.391479 0.947071 -0.000163 +v -0.600967 0.923250 -0.005606 +v -0.820955 0.862044 -0.017591 +v -1.090303 0.695790 -0.057893 +v -1.084403 0.412803 -0.022634 +v -1.028476 0.202597 -0.001535 +v -0.999457 0.002223 0.003396 +v -0.863971 -0.156265 0.013290 +v -0.649940 -0.231979 0.049344 +v -0.351358 -0.288916 0.073557 +v -0.205847 -0.328949 0.047597 +v -0.039715 -0.423753 0.008328 +v -0.000302 -0.387872 -0.067895 +v -0.000000 -0.376997 -0.100822 +v -0.210726 1.062475 -0.040569 +v -0.381900 0.947205 -0.077364 +v -0.588117 0.911996 -0.121556 +v -0.817231 0.875218 -0.199405 +v -1.005202 0.666462 -0.246898 +v -0.957137 0.399711 -0.192292 +v -0.995260 0.199272 -0.199609 +v -0.939299 0.004479 -0.180260 +v -0.814064 -0.150698 -0.154439 +v -0.621331 -0.241009 -0.074570 +v -0.334079 -0.254821 -0.037980 +v -0.123452 -0.295421 -0.056476 +v -0.025644 -0.391270 -0.068709 +v -0.000049 -0.375623 -0.103716 +v -0.000000 -0.374659 -0.108027 +v -0.201940 1.064863 -0.075764 +v -0.370159 0.984682 -0.153437 +v -0.547835 0.900200 -0.235133 +v -0.772989 0.849583 -0.357367 +v -0.881610 0.625988 -0.389861 +v -0.886673 0.395422 -0.369737 +v -0.921001 0.198273 -0.381491 +v -0.837480 0.003744 -0.340671 +v -0.799450 -0.161327 -0.335579 +v -0.573258 -0.230456 -0.218463 +v -0.258393 -0.259602 -0.143129 +v -0.047915 -0.326895 -0.105440 +v -0.012047 -0.375962 -0.094713 +v -0.000011 -0.373024 -0.110892 +v -0.000000 -0.374676 -0.108370 +v -0.185206 1.077347 -0.112946 +v -0.341300 1.005188 -0.221259 +v -0.506143 0.929640 -0.351491 +v -0.693280 0.824743 -0.479960 +v -0.787892 0.619488 -0.536182 +v -0.780480 0.388347 -0.522854 +v -0.818053 0.195699 -0.546606 +v -0.744749 0.001771 -0.495561 +v -0.688203 -0.135323 -0.449593 +v -0.516244 -0.209595 -0.336702 +v -0.221130 -0.287382 -0.193256 +v -0.025193 -0.339900 -0.124557 +v -0.007395 -0.373412 -0.099699 +v -0.000008 -0.372116 -0.112844 +v -0.000000 -0.376676 -0.103991 +v -0.159496 1.093795 -0.148145 +v -0.300107 1.042770 -0.299205 +v -0.462820 0.970388 -0.463938 +v -0.592519 0.826260 -0.604030 +v -0.670001 0.618285 -0.673020 +v -0.665543 0.389826 -0.666073 +v -0.693519 0.195090 -0.693519 +v -0.630295 0.000341 -0.630974 +v -0.584762 -0.130581 -0.547256 +v -0.428617 -0.237448 -0.441304 +v -0.179322 -0.289966 -0.275701 +v -0.013332 -0.342232 -0.162979 +v -0.004959 -0.364425 -0.112930 +v -0.000009 -0.371629 -0.113737 +v -0.000000 -0.375919 -0.108266 +v -0.123953 1.104398 -0.175099 +v -0.237654 1.041054 -0.354369 +v -0.365601 0.973777 -0.551587 +v -0.461843 0.825688 -0.701971 +v -0.528405 0.622511 -0.791150 +v -0.536295 0.396683 -0.802741 +v -0.544895 0.195090 -0.815492 +v -0.492924 0.003022 -0.740128 +v -0.416548 -0.126242 -0.604420 +v -0.343295 -0.250402 -0.564196 +v -0.133735 -0.276303 -0.417514 +v -0.006127 -0.334935 -0.237582 +v -0.001116 -0.352423 -0.142052 +v -0.000005 -0.370787 -0.115382 +v -0.000000 -0.372866 -0.115557 +v -0.082441 1.107900 -0.192903 +v -0.162815 1.042426 -0.395918 +v -0.246679 0.964086 -0.608499 +v -0.311784 0.812301 -0.768447 +v -0.363952 0.626778 -0.885454 +v -0.377451 0.404009 -0.916588 +v -0.382850 0.198975 -0.924283 +v -0.344480 0.001079 -0.834007 +v -0.275776 -0.145372 -0.684535 +v -0.215630 -0.254962 -0.636301 +v -0.060782 -0.258144 -0.473680 +v -0.002848 -0.323615 -0.308592 +v -0.000074 -0.346169 -0.178414 +v -0.000001 -0.370250 -0.116429 +v -0.000000 -0.370897 -0.120556 +v -0.041315 1.110455 -0.204021 +v -0.083867 1.039745 -0.419473 +v -0.120355 0.948221 -0.629362 +v -0.154649 0.814453 -0.817285 +v -0.177602 0.618844 -0.927799 +v -0.189796 0.404243 -0.962587 +v -0.191341 0.195090 -0.961939 +v -0.179250 0.000305 -0.902100 +v -0.140244 -0.143495 -0.752896 +v -0.067641 -0.227680 -0.619253 +v -0.012569 -0.259696 -0.493125 +v -0.001348 -0.331829 -0.363071 +v -0.000039 -0.343493 -0.202975 +v -0.000000 -0.370407 -0.116322 +v -0.000000 -0.380180 -0.116634 +v 0.000000 -0.239095 -0.631869 +v 0.000000 -0.270994 -0.484373 +v 0.000000 -0.340317 -0.366452 +v 0.000000 -0.371434 -0.114757 +vt 0.750000 0.312500 +vt 0.750000 0.375000 +vt 0.718750 0.375000 +vt 0.718750 0.312500 +vt 0.750000 0.750000 +vt 0.750000 0.812500 +vt 0.718750 0.812500 +vt 0.718750 0.750000 +vt 0.750000 0.250000 +vt 0.718750 0.250000 +vt 0.750000 0.687500 +vt 0.718750 0.687500 +vt 0.750000 0.187500 +vt 0.718750 0.187500 +vt 0.750000 0.625000 +vt 0.718750 0.625000 +vt 0.750000 0.125000 +vt 0.718750 0.125000 +vt 0.750000 0.562500 +vt 0.718750 0.562500 +vt 0.750000 0.500000 +vt 0.718750 0.500000 +vt 0.750000 0.937500 +vt 0.734375 1.000000 +vt 0.718750 0.937500 +vt 0.359375 0.000000 +vt 0.375000 0.125000 +vt 0.343750 0.125000 +vt 0.750000 0.437500 +vt 0.718750 0.437500 +vt 0.750000 0.875000 +vt 0.718750 0.875000 +vt 0.687500 0.437500 +vt 0.687500 0.375000 +vt 0.687500 0.875000 +vt 0.687500 0.812500 +vt 0.687500 0.312500 +vt 0.687500 0.750000 +vt 0.687500 0.250000 +vt 0.687500 0.687500 +vt 0.687500 0.187500 +vt 0.687500 0.625000 +vt 0.687500 0.125000 +vt 0.687500 0.562500 +vt 0.718750 0.062500 +vt 0.687500 0.062500 +vt 0.687500 0.500000 +vt 0.703125 1.000000 +vt 0.687500 0.937500 +vt 0.703125 0.000000 +vt 0.656250 0.187500 +vt 0.656250 0.125000 +vt 0.656250 0.625000 +vt 0.656250 0.562500 +vt 0.656250 0.062500 +vt 0.656250 0.500000 +vt 0.671875 1.000000 +vt 0.656250 0.937500 +vt 0.671875 0.000000 +vt 0.656250 0.437500 +vt 0.656250 0.875000 +vt 0.656250 0.375000 +vt 0.656250 0.812500 +vt 0.656250 0.312500 +vt 0.656250 0.750000 +vt 0.656250 0.250000 +vt 0.656250 0.687500 +vt 0.625000 0.875000 +vt 0.625000 0.812500 +vt 0.625000 0.375000 +vt 0.625000 0.312500 +vt 0.625000 0.750000 +vt 0.625000 0.250000 +vt 0.625000 0.687500 +vt 0.625000 0.187500 +vt 0.625000 0.625000 +vt 0.625000 0.125000 +vt 0.625000 0.562500 +vt 0.625000 0.062500 +vt 0.625000 0.500000 +vt 0.640625 1.000000 +vt 0.625000 0.937500 +vt 0.640625 0.000000 +vt 0.625000 0.437500 +vt 0.593750 0.625000 +vt 0.593750 0.562500 +vt 0.593750 0.125000 +vt 0.593750 0.062500 +vt 0.593750 0.500000 +vt 0.609375 1.000000 +vt 0.593750 0.937500 +vt 0.609375 0.000000 +vt 0.593750 0.437500 +vt 0.593750 0.875000 +vt 0.593750 0.375000 +vt 0.593750 0.812500 +vt 0.593750 0.312500 +vt 0.593750 0.750000 +vt 0.593750 0.250000 +vt 0.593750 0.687500 +vt 0.593750 0.187500 +vt 0.562500 0.375000 +vt 0.562500 0.312500 +vt 0.562500 0.812500 +vt 0.562500 0.750000 +vt 0.562500 0.250000 +vt 0.562500 0.687500 +vt 0.562500 0.187500 +vt 0.562500 0.625000 +vt 0.562500 0.125000 +vt 0.562500 0.562500 +vt 0.562500 0.062500 +vt 0.562500 0.500000 +vt 0.578125 1.000000 +vt 0.562500 0.937500 +vt 0.578125 0.000000 +vt 0.562500 0.437500 +vt 0.562500 0.875000 +vt 0.531250 0.125000 +vt 0.531250 0.062500 +vt 0.531250 0.562500 +vt 0.531250 0.500000 +vt 0.546875 1.000000 +vt 0.531250 0.937500 +vt 0.546875 0.000000 +vt 0.531250 0.437500 +vt 0.531250 0.875000 +vt 0.531250 0.375000 +vt 0.531250 0.812500 +vt 0.531250 0.312500 +vt 0.531250 0.750000 +vt 0.531250 0.250000 +vt 0.531250 0.687500 +vt 0.531250 0.187500 +vt 0.531250 0.625000 +vt 0.500000 0.812500 +vt 0.500000 0.750000 +vt 0.500000 0.312500 +vt 0.500000 0.250000 +vt 0.500000 0.687500 +vt 0.500000 0.187500 +vt 0.500000 0.625000 +vt 0.500000 0.125000 +vt 0.500000 0.562500 +vt 0.500000 0.062500 +vt 0.500000 0.500000 +vt 0.515625 1.000000 +vt 0.500000 0.937500 +vt 0.515625 0.000000 +vt 0.500000 0.437500 +vt 0.500000 0.875000 +vt 0.500000 0.375000 +vt 0.468750 0.562500 +vt 0.468750 0.500000 +vt 0.484374 1.000000 +vt 0.468750 0.937500 +vt 0.484375 0.000000 +vt 0.468750 0.062500 +vt 0.468750 0.437500 +vt 0.468750 0.875000 +vt 0.468750 0.375000 +vt 0.468750 0.812500 +vt 0.468750 0.312500 +vt 0.468750 0.750000 +vt 0.468750 0.250000 +vt 0.468750 0.687500 +vt 0.468750 0.187500 +vt 0.468750 0.625000 +vt 0.468750 0.125000 +vt 0.437500 0.312500 +vt 0.437500 0.250000 +vt 0.437500 0.750000 +vt 0.437500 0.687500 +vt 0.437500 0.187500 +vt 0.437500 0.625000 +vt 0.437500 0.125000 +vt 0.437500 0.562500 +vt 0.437500 0.062500 +vt 0.437500 0.500000 +vt 0.453124 1.000000 +vt 0.437500 0.937500 +vt 0.453125 0.000000 +vt 0.437500 0.437500 +vt 0.437500 0.875000 +vt 0.437500 0.375000 +vt 0.437500 0.812500 +vt 0.406250 0.125000 +vt 0.421875 0.000000 +vt 0.406250 0.500000 +vt 0.406250 0.437500 +vt 0.406250 0.937500 +vt 0.406250 0.875000 +vt 0.406250 0.375000 +vt 0.406250 0.812500 +vt 0.406250 0.312500 +vt 0.406250 0.750000 +vt 0.406250 0.250000 +vt 0.406250 0.687500 +vt 0.406250 0.187500 +vt 0.406250 0.625000 +vt 0.406250 0.562500 +vt 0.421874 1.000000 +vt 0.375000 0.250000 +vt 0.375000 0.187500 +vt 0.375000 0.687500 +vt 0.375000 0.625000 +vt 0.375000 0.562500 +vt 0.375000 0.500000 +vt 0.390625 1.000000 +vt 0.375000 0.937500 +vt 0.375000 0.437500 +vt 0.375000 0.875000 +vt 0.375000 0.375000 +vt 0.375000 0.812500 +vt 0.375000 0.312500 +vt 0.375000 0.750000 +vt 0.343750 0.937500 +vt 0.343750 0.875000 +vt 0.343750 0.437500 +vt 0.343750 0.375000 +vt 0.343750 0.812500 +vt 0.343750 0.312500 +vt 0.343750 0.750000 +vt 0.343750 0.250000 +vt 0.343750 0.687500 +vt 0.343750 0.187500 +vt 0.343750 0.625000 +vt 0.343750 0.562500 +vt 0.328125 0.000000 +vt 0.312500 0.125000 +vt 0.343750 0.500000 +vt 0.359375 1.000000 +vt 0.312500 0.687500 +vt 0.312500 0.625000 +vt 0.312500 0.187500 +vt 0.312500 0.562500 +vt 0.296875 0.000000 +vt 0.281250 0.125000 +vt 0.312500 0.500000 +vt 0.328125 1.000000 +vt 0.312500 0.937500 +vt 0.312500 0.437500 +vt 0.312500 0.875000 +vt 0.312500 0.375000 +vt 0.312500 0.812500 +vt 0.312500 0.312500 +vt 0.312500 0.750000 +vt 0.312500 0.250000 +vt 0.281250 0.437500 +vt 0.281250 0.375000 +vt 0.281250 0.875000 +vt 0.281250 0.812500 +vt 0.281250 0.312500 +vt 0.281250 0.750000 +vt 0.281250 0.250000 +vt 0.281250 0.687500 +vt 0.281250 0.187500 +vt 0.281250 0.625000 +vt 0.281250 0.562500 +vt 0.265625 0.000000 +vt 0.250000 0.125000 +vt 0.281250 0.500000 +vt 0.296875 1.000000 +vt 0.281250 0.937500 +vt 0.250000 0.187500 +vt 0.250000 0.625000 +vt 0.250000 0.562500 +vt 0.234375 0.000000 +vt 0.218750 0.125000 +vt 0.250000 0.500000 +vt 0.265625 1.000000 +vt 0.250000 0.937500 +vt 0.250000 0.437500 +vt 0.250000 0.875000 +vt 0.250000 0.375000 +vt 0.250000 0.812500 +vt 0.250000 0.312500 +vt 0.250000 0.750000 +vt 0.250000 0.250000 +vt 0.250000 0.687500 +vt 0.218750 0.875000 +vt 0.218750 0.812500 +vt 0.218750 0.375000 +vt 0.218750 0.312500 +vt 0.218750 0.750000 +vt 0.218750 0.250000 +vt 0.218750 0.687500 +vt 0.218750 0.187500 +vt 0.218750 0.625000 +vt 0.218750 0.562500 +vt 0.203125 0.000000 +vt 0.187500 0.125000 +vt 0.218750 0.500000 +vt 0.234375 1.000000 +vt 0.218750 0.937500 +vt 0.218750 0.437500 +vt 0.187500 0.625000 +vt 0.187500 0.562500 +vt 0.187500 0.500000 +vt 0.203125 1.000000 +vt 0.187500 0.937500 +vt 0.187500 0.437500 +vt 0.187500 0.875000 +vt 0.187500 0.375000 +vt 0.187500 0.812500 +vt 0.187500 0.312500 +vt 0.187500 0.750000 +vt 0.187500 0.250000 +vt 0.187500 0.687500 +vt 0.187500 0.187500 +vt 0.156250 0.375000 +vt 0.156250 0.312500 +vt 0.156250 0.812500 +vt 0.156250 0.750000 +vt 0.156250 0.250000 +vt 0.156250 0.687500 +vt 0.156250 0.187500 +vt 0.156250 0.625000 +vt 0.156250 0.125000 +vt 0.156250 0.562500 +vt 0.156250 0.500000 +vt 0.171875 1.000000 +vt 0.156250 0.937500 +vt 0.156250 0.437500 +vt 0.156250 0.875000 +vt 0.125000 0.562500 +vt 0.125000 0.500000 +vt 0.140625 1.000000 +vt 0.125000 0.937500 +vt 0.125000 0.437500 +vt 0.125000 0.875000 +vt 0.125000 0.375000 +vt 0.125000 0.812500 +vt 0.125000 0.312500 +vt 0.125000 0.750000 +vt 0.125000 0.250000 +vt 0.125000 0.687500 +vt 0.125000 0.187500 +vt 0.125000 0.625000 +vt 0.125000 0.125000 +vt 0.093750 0.312500 +vt 0.093750 0.250000 +vt 0.093750 0.750000 +vt 0.093750 0.687500 +vt 0.093750 0.187500 +vt 0.093750 0.625000 +vt 0.093750 0.125000 +vt 0.093750 0.562500 +vt 0.093750 0.500000 +vt 0.109375 1.000000 +vt 0.093750 0.937500 +vt 0.093750 0.437500 +vt 0.093750 0.875000 +vt 0.093750 0.375000 +vt 0.093750 0.812500 +vt 0.078125 1.000000 +vt 0.062500 0.937500 +vt 0.062500 0.500000 +vt 0.062500 0.437500 +vt 0.062500 0.875000 +vt 0.062500 0.375000 +vt 0.062500 0.812500 +vt 0.062500 0.312500 +vt 0.062500 0.750000 +vt 0.062500 0.250000 +vt 0.062500 0.687500 +vt 0.062500 0.187500 +vt 0.062500 0.625000 +vt 0.062500 0.125000 +vt 0.062500 0.562500 +vt 0.062500 0.062500 +vt 0.171875 0.000000 +vt 0.031250 0.750000 +vt 0.031250 0.687500 +vt 0.031250 0.250000 +vt 0.031250 0.187500 +vt 0.031250 0.625000 +vt 0.031250 0.125000 +vt 0.031250 0.562500 +vt 0.031250 0.062500 +vt 0.031250 0.500000 +vt 0.046875 1.000000 +vt 0.031250 0.937500 +vt 0.046875 0.000000 +vt 0.031250 0.437500 +vt 0.031250 0.875000 +vt 0.031250 0.375000 +vt 0.031250 0.812500 +vt 0.031250 0.312500 +vt 0.000000 0.500000 +vt 0.000000 0.437500 +vt 0.000000 0.937500 +vt 0.000000 0.875000 +vt 0.000000 0.375000 +vt 0.000000 0.812500 +vt 0.000000 0.312500 +vt 0.000000 0.750000 +vt 0.000000 0.250000 +vt 0.000000 0.687500 +vt 0.000000 0.187500 +vt 0.000000 0.625000 +vt 0.000000 0.125000 +vt 0.000000 0.562500 +vt 0.000000 0.062500 +vt 0.015625 1.000000 +vt 0.015625 0.000000 +vt 1.000000 0.187500 +vt 1.000000 0.250000 +vt 0.968750 0.250000 +vt 0.968750 0.187500 +vt 1.000000 0.625000 +vt 1.000000 0.687500 +vt 0.968750 0.687500 +vt 0.968750 0.625000 +vt 1.000000 0.125000 +vt 0.968750 0.125000 +vt 1.000000 0.562500 +vt 0.968750 0.562500 +vt 1.000000 0.062500 +vt 0.968750 0.062500 +vt 1.000000 0.500000 +vt 0.968750 0.500000 +vt 1.000000 0.937500 +vt 0.984375 1.000000 +vt 0.968750 0.937500 +vt 0.984375 0.000000 +vt 1.000000 0.437500 +vt 0.968750 0.437500 +vt 1.000000 0.875000 +vt 0.968750 0.875000 +vt 1.000000 0.375000 +vt 0.968750 0.375000 +vt 1.000000 0.812500 +vt 0.968750 0.812500 +vt 1.000000 0.312500 +vt 0.968750 0.312500 +vt 1.000000 0.750000 +vt 0.968750 0.750000 +vt 0.937500 0.937500 +vt 0.937500 0.875000 +vt 0.937500 0.437500 +vt 0.937500 0.375000 +vt 0.937500 0.812500 +vt 0.937500 0.312500 +vt 0.937500 0.750000 +vt 0.937500 0.250000 +vt 0.937500 0.687500 +vt 0.937500 0.187500 +vt 0.937500 0.625000 +vt 0.937500 0.125000 +vt 0.937500 0.562500 +vt 0.937500 0.062500 +vt 0.937500 0.500000 +vt 0.953125 1.000000 +vt 0.953125 0.000000 +vt 0.906250 0.687500 +vt 0.906250 0.625000 +vt 0.906250 0.187500 +vt 0.906250 0.125000 +vt 0.906250 0.562500 +vt 0.906250 0.062500 +vt 0.906250 0.500000 +vt 0.921875 1.000000 +vt 0.906250 0.937500 +vt 0.921875 0.000000 +vt 0.906250 0.437500 +vt 0.906250 0.875000 +vt 0.906250 0.375000 +vt 0.906250 0.812500 +vt 0.906250 0.312500 +vt 0.906250 0.750000 +vt 0.906250 0.250000 +vt 0.875000 0.437500 +vt 0.875000 0.375000 +vt 0.875000 0.875000 +vt 0.875000 0.812500 +vt 0.875000 0.312500 +vt 0.875000 0.750000 +vt 0.875000 0.250000 +vt 0.875000 0.687500 +vt 0.875000 0.187500 +vt 0.875000 0.625000 +vt 0.875000 0.125000 +vt 0.875000 0.562500 +vt 0.875000 0.062500 +vt 0.875000 0.500000 +vt 0.890625 1.000000 +vt 0.875000 0.937500 +vt 0.890625 0.000000 +vt 0.843750 0.187500 +vt 0.843750 0.125000 +vt 0.843750 0.625000 +vt 0.843750 0.562500 +vt 0.843750 0.062500 +vt 0.843750 0.500000 +vt 0.859375 1.000000 +vt 0.843750 0.937500 +vt 0.859375 0.000000 +vt 0.843750 0.437500 +vt 0.843750 0.875000 +vt 0.843750 0.375000 +vt 0.843750 0.812500 +vt 0.843750 0.312500 +vt 0.843750 0.750000 +vt 0.843750 0.250000 +vt 0.843750 0.687500 +vt 0.812500 0.375000 +vt 0.812500 0.312500 +vt 0.812500 0.812500 +vt 0.812500 0.750000 +vt 0.812500 0.250000 +vt 0.812500 0.687500 +vt 0.812500 0.187500 +vt 0.812500 0.625000 +vt 0.812500 0.125000 +vt 0.812500 0.562500 +vt 0.812500 0.062500 +vt 0.812500 0.500000 +vt 0.828125 1.000000 +vt 0.812500 0.937500 +vt 0.828125 0.000000 +vt 0.812500 0.437500 +vt 0.812500 0.875000 +vt 0.781250 0.125000 +vt 0.781250 0.062500 +vt 0.781250 0.562500 +vt 0.781250 0.500000 +vt 0.796875 1.000000 +vt 0.781250 0.937500 +vt 0.796875 0.000000 +vt 0.781250 0.437500 +vt 0.781250 0.875000 +vt 0.781250 0.375000 +vt 0.781250 0.812500 +vt 0.781250 0.312500 +vt 0.781250 0.750000 +vt 0.781250 0.250000 +vt 0.781250 0.687500 +vt 0.781250 0.187500 +vt 0.781250 0.625000 +vt 0.765625 1.000000 +vt 0.765625 0.000000 +vn 0.2761 -0.9468 -0.1656 +vn -0.3037 0.8258 -0.4752 +vn 0.7360 -0.6018 -0.3100 +vn -0.0462 0.5010 -0.8642 +vn 0.9809 -0.1944 -0.0040 +vn 0.0311 0.1943 -0.9804 +vn 1.0000 -0.0091 -0.0024 +vn 0.0843 0.0102 -0.9964 +vn 0.2339 -0.1713 -0.9570 +vn 0.0234 0.9864 0.1628 +vn -0.9672 0.2514 0.0360 +vn 0.3026 -0.7000 -0.6469 +vn -0.0304 0.9417 -0.3351 +vn 0.2442 -0.8784 -0.4108 +vn -0.3485 0.7802 -0.5194 +vn 0.0559 -0.7034 -0.7086 +vn -0.0029 0.9275 -0.3738 +vn -0.1247 -0.9700 -0.2089 +vn 0.1124 0.7836 -0.6111 +vn 0.5330 -0.8078 -0.2517 +vn 0.2090 0.5313 -0.8210 +vn 0.9845 -0.1754 -0.0068 +vn 0.2239 0.1581 -0.9617 +vn 1.0000 -0.0093 -0.0024 +vn 0.2152 0.0202 -0.9764 +vn -1.0000 0.0001 0.0000 +vn 0.2681 -0.3739 -0.8879 +vn 0.0176 0.9867 0.1617 +vn 1.0000 0.0000 0.0000 +vn 0.2770 -0.7371 -0.6164 +vn 0.0818 0.9545 -0.2866 +vn 0.9891 -0.1374 -0.0526 +vn 0.5704 0.0608 -0.8191 +vn 1.0000 -0.0009 -0.0010 +vn 0.4904 -0.4345 -0.7555 +vn 0.0145 0.9869 0.1604 +vn 0.3780 -0.7542 -0.5369 +vn 0.1625 0.9571 -0.2400 +vn 0.4532 -0.5299 -0.7168 +vn 0.1039 0.9529 -0.2849 +vn -0.0044 -0.9951 -0.0987 +vn 0.2182 0.7560 -0.6171 +vn 0.1071 -0.9525 -0.2850 +vn 0.3764 0.5213 -0.7659 +vn 0.1782 -0.9699 -0.1659 +vn 0.5410 0.1053 -0.8344 +vn 0.1981 0.9574 -0.2103 +vn 0.1252 -0.9900 -0.0646 +vn 0.3986 0.7830 -0.4776 +vn 0.2182 -0.9648 -0.1467 +vn 0.5555 0.4609 -0.6921 +vn 0.3908 -0.8965 -0.2084 +vn 0.6854 0.0126 -0.7280 +vn 0.8042 -0.5060 -0.3118 +vn 0.6768 0.1358 -0.7235 +vn 1.0000 -0.0043 -0.0023 +vn 0.5677 -0.4212 -0.7073 +vn 0.1151 0.9667 0.2285 +vn 1.0000 -0.0001 -0.0000 +vn 0.3317 -0.6942 -0.6388 +vn 0.2226 0.9614 -0.1615 +vn 0.4053 -0.7411 -0.5352 +vn 0.7544 0.2099 -0.6220 +vn 1.0000 -0.0023 -0.0003 +vn 0.6957 -0.4156 -0.5859 +vn 0.1858 0.9352 0.3013 +vn 1.0000 0.0002 -0.0000 +vn 0.6201 -0.5203 -0.5871 +vn 0.4769 0.8688 0.1329 +vn 0.3503 -0.9087 -0.2270 +vn 0.5022 0.8551 0.1289 +vn 0.2317 -0.9728 -0.0020 +vn 0.5185 0.8388 -0.1660 +vn 0.2451 -0.9670 -0.0695 +vn 0.6820 0.4570 -0.5710 +vn 0.6736 -0.6861 -0.2748 +vn 0.7681 -0.0480 -0.6386 +vn 0.7466 -0.4858 -0.4545 +vn 0.1561 -0.9866 -0.0469 +vn 0.2826 0.9510 -0.1253 +vn 0.3330 -0.9099 0.2474 +vn 0.7251 0.4512 -0.5202 +vn 0.6403 -0.6146 -0.4606 +vn 0.8318 -0.0443 -0.5533 +vn 0.8349 0.0203 -0.5501 +vn 0.8160 0.1999 -0.5423 +vn -1.0000 0.0048 0.0010 +vn 0.7754 -0.4238 -0.4681 +vn 0.1552 0.9555 0.2510 +vn -1.0000 0.0001 0.0001 +vn 0.7375 -0.3304 -0.5890 +vn 0.4602 0.8844 0.0780 +vn 0.1611 -0.9383 -0.3061 +vn 0.4557 0.8877 0.0662 +vn 0.9991 -0.0382 -0.0182 +vn 0.8294 -0.3628 -0.4248 +vn 0.0813 0.9956 0.0472 +vn 1.0000 -0.0007 0.0004 +vn 0.8461 -0.4577 -0.2732 +vn 0.5380 0.8202 0.1946 +vn 0.3289 -0.9423 -0.0632 +vn 0.3103 0.9496 0.0435 +vn 0.0612 -0.9967 -0.0535 +vn 0.1133 0.9789 -0.1702 +vn 0.2475 -0.9688 -0.0150 +vn 0.6708 0.5519 -0.4954 +vn 0.5959 -0.5435 -0.5912 +vn 0.8549 -0.1486 -0.4970 +vn 0.3972 -0.7294 -0.5569 +vn 0.9109 0.1837 -0.3696 +vn 0.2121 0.9772 -0.0055 +vn 0.2494 -0.8851 -0.3929 +vn 0.6032 0.7774 -0.1783 +vn 0.5619 -0.6346 -0.5306 +vn 0.8572 -0.1639 -0.4882 +vn -0.1355 -0.9268 -0.3502 +vn 0.9161 -0.0530 -0.3974 +vn 0.9845 -0.1641 -0.0614 +vn 0.9481 -0.2181 -0.2313 +vn 0.0462 0.9901 -0.1324 +vn 0.7321 -0.6362 -0.2435 +vn 0.5502 0.8302 -0.0901 +vn 0.3557 -0.9307 -0.0847 +vn 0.1318 0.9886 -0.0722 +vn 0.1061 -0.9864 -0.1257 +vn 0.9592 -0.1508 -0.2390 +vn 0.0469 0.9939 -0.0999 +vn 1.0000 0.0001 -0.0000 +vn 0.7559 -0.6076 -0.2437 +vn 0.5378 0.8339 -0.1237 +vn 0.2519 -0.9657 -0.0633 +vn 0.1587 0.9836 -0.0853 +vn 0.2291 -0.9722 -0.0482 +vn 0.1823 0.9724 -0.1455 +vn 0.1493 -0.9886 -0.0173 +vn 0.5206 0.8360 -0.1735 +vn 0.4801 -0.8756 0.0530 +vn 0.9971 -0.0638 0.0415 +vn -0.2466 -0.9637 -0.1025 +vn 0.9932 -0.0904 -0.0730 +vn 0.9977 -0.0644 -0.0220 +vn 0.0667 -0.9143 -0.3995 +vn 0.4608 0.8875 0.0064 +vn 0.4475 -0.8814 -0.1513 +vn 0.9962 -0.0735 0.0461 +vn 0.0299 -0.9990 0.0338 +vn 0.9920 -0.0297 0.1230 +vn -0.9833 -0.1814 -0.0120 +vn 0.9796 -0.0897 0.1797 +vn 0.0374 0.9982 -0.0471 +vn -1.0000 -0.0001 0.0000 +vn 0.8330 -0.5531 0.0116 +vn 0.4828 0.8676 0.1186 +vn 0.1647 -0.9829 -0.0828 +vn 0.2024 0.9746 0.0954 +vn 0.3542 -0.9280 -0.1159 +vn 0.0700 0.9945 0.0776 +vn -0.9931 0.1163 0.0175 +vn 0.7805 -0.5245 0.3403 +vn 0.4692 0.8724 0.1369 +vn 0.1048 -0.9922 0.0676 +vn 0.2624 0.9633 0.0569 +vn 0.4168 -0.8958 0.1543 +vn 0.0723 0.9944 -0.0766 +vn 0.1524 -0.9482 -0.2787 +vn 0.3957 0.9071 0.1434 +vn 0.3492 -0.8977 -0.2688 +vn 0.9170 0.0464 0.3962 +vn 0.0893 -0.9951 -0.0416 +vn 0.8997 -0.2328 0.3693 +vn 0.9092 0.0175 0.4160 +vn 0.0426 0.9973 -0.0598 +vn 0.1903 -0.5880 -0.7861 +vn 0.5128 0.1057 0.8520 +vn 0.3801 0.9086 -0.1730 +vn 0.6911 -0.1137 0.7137 +vn 0.7503 -0.1082 0.6522 +vn 0.0015 1.0000 -0.0005 +vn 0.6492 -0.4519 0.6119 +vn 0.4129 0.8938 0.1750 +vn 0.1165 -0.9924 0.0404 +vn 0.3109 0.9500 0.0268 +vn 0.3937 -0.8992 0.1909 +vn 0.0590 0.9982 -0.0084 +vn 0.2845 -0.9570 -0.0569 +vn 0.2685 0.8061 0.5273 +vn 0.1675 0.9121 0.3741 +vn 0.1077 -0.9870 0.1193 +vn 0.0193 0.9343 0.3559 +vn 0.2743 -0.9276 0.2535 +vn -0.1505 0.9506 0.2714 +vn 0.3333 -0.9277 0.1683 +vn 0.2315 0.7524 0.6167 +vn 0.1308 -0.8801 -0.4565 +vn 0.4406 0.0566 0.8959 +vn 0.1059 -0.9885 -0.1078 +vn 0.4214 0.1601 0.8926 +vn -0.7485 -0.6586 -0.0770 +vn 0.5107 -0.1986 0.8365 +vn -0.1332 0.9830 0.1261 +vn 0.5149 -0.3587 0.7786 +vn 0.3909 0.0516 0.9190 +vn 0.1575 -0.9759 -0.1512 +vn 0.4078 0.1767 0.8958 +vn -0.9313 -0.3620 -0.0414 +vn 0.4537 -0.0696 0.8884 +vn -0.2718 0.9390 0.2105 +vn 0.4965 -0.3656 0.7873 +vn 0.1081 0.9336 0.3416 +vn 0.1987 -0.9661 0.1650 +vn 0.1687 0.9140 0.3690 +vn 0.2920 -0.9398 0.1778 +vn -0.0727 0.9560 0.2842 +vn 0.4537 -0.8648 0.2151 +vn 0.0794 0.7980 0.5974 +vn 0.0386 -0.9220 -0.3852 +vn 0.2222 -0.9189 0.3261 +vn 0.0119 0.8640 0.5033 +vn 0.2703 -0.9485 0.1654 +vn -0.0927 0.9409 0.3259 +vn 0.5855 -0.7445 0.3208 +vn 0.0440 0.8439 0.5347 +vn 0.2035 -0.8691 -0.4508 +vn 0.1410 0.0477 0.9889 +vn 0.7817 -0.5854 -0.2153 +vn 0.0184 0.0395 0.9991 +vn -0.9333 -0.3569 -0.0408 +vn 0.0202 0.0616 0.9979 +vn -0.2171 0.9572 0.1912 +vn 0.2084 -0.2355 0.9493 +vn 0.0007 0.9551 0.2963 +vn 0.8054 -0.5483 -0.2250 +vn -0.1780 0.0656 0.9818 +vn 0.9333 -0.3569 -0.0408 +vn 0.0279 0.2331 0.9720 +vn -0.0570 0.9846 0.1652 +vn 0.0531 -0.1791 0.9824 +vn -0.1432 0.9406 0.3077 +vn 0.1536 -0.7879 0.5964 +vn -0.2690 0.7536 0.5998 +vn 0.2815 -0.9526 0.1158 +vn -0.2739 0.9255 0.2617 +vn 0.3787 -0.6977 0.6081 +vn -0.1381 0.8490 0.5100 +vn 0.4056 -0.8449 -0.3487 +vn -0.1493 -0.0909 0.9846 +vn 0.2690 0.7536 0.5998 +vn -0.2815 -0.9526 0.1158 +vn 0.2739 0.9255 0.2616 +vn -0.3787 -0.6977 0.6081 +vn 0.1371 0.8494 0.5096 +vn -0.4056 -0.8449 -0.3487 +vn 0.1482 -0.0911 0.9848 +vn -0.8055 -0.5483 -0.2250 +vn 0.1780 0.0656 0.9818 +vn 0.9313 -0.3620 -0.0414 +vn -0.0279 0.2331 0.9720 +vn 0.0570 0.9846 0.1652 +vn -0.0531 -0.1791 0.9824 +vn 0.1432 0.9406 0.3077 +vn -0.1536 -0.7879 0.5964 +vn -0.0184 0.0395 0.9991 +vn -0.0202 0.0616 0.9979 +vn 0.2171 0.9572 0.1912 +vn -0.2084 -0.2355 0.9493 +vn -0.0007 0.9551 0.2963 +vn -0.2222 -0.9189 0.3261 +vn -0.0120 0.8640 0.5034 +vn -0.2703 -0.9485 0.1654 +vn 0.0930 0.9409 0.3255 +vn -0.5855 -0.7445 0.3208 +vn -0.0448 0.8440 0.5345 +vn -0.2035 -0.8691 -0.4508 +vn -0.1409 0.0476 0.9889 +vn -0.7817 -0.5854 -0.2153 +vn -0.2920 -0.9398 0.1778 +vn 0.0723 0.9563 0.2835 +vn -0.4537 -0.8648 0.2151 +vn -0.0799 0.7986 0.5965 +vn -0.0386 -0.9220 -0.3852 +vn -0.3905 0.0513 0.9192 +vn -0.1574 -0.9759 -0.1512 +vn -0.4078 0.1767 0.8958 +vn -0.4537 -0.0696 0.8884 +vn 0.2719 0.9390 0.2105 +vn -0.4965 -0.3656 0.7873 +vn -0.1081 0.9336 0.3416 +vn -0.1987 -0.9661 0.1650 +vn -0.1690 0.9139 0.3690 +vn -0.5107 -0.1986 0.8365 +vn 0.1332 0.9830 0.1261 +vn -0.5149 -0.3587 0.7786 +vn -0.1675 0.9121 0.3741 +vn -0.1077 -0.9870 0.1193 +vn -0.0191 0.9342 0.3562 +vn -0.2743 -0.9276 0.2535 +vn 0.1509 0.9506 0.2712 +vn -0.3333 -0.9277 0.1683 +vn -0.2292 0.7527 0.6171 +vn -0.1308 -0.8801 -0.4565 +vn -0.4406 0.0565 0.8959 +vn -0.1059 -0.9885 -0.1078 +vn -0.4212 0.1598 0.8928 +vn -0.2845 -0.9570 -0.0569 +vn -0.2661 0.8066 0.5278 +vn -0.1903 -0.5880 -0.7861 +vn -0.5125 0.1051 0.8522 +vn -0.3801 0.9086 -0.1729 +vn -0.6911 -0.1137 0.7137 +vn -0.7503 -0.1082 0.6522 +vn -0.0015 1.0000 -0.0005 +vn -0.6492 -0.4519 0.6119 +vn -0.4129 0.8938 0.1750 +vn -0.1165 -0.9924 0.0404 +vn -0.3109 0.9501 0.0269 +vn -0.3937 -0.8992 0.1909 +vn -0.0591 0.9982 -0.0083 +vn -0.0426 0.9973 -0.0598 +vn -0.7805 -0.5245 0.3403 +vn -0.4692 0.8724 0.1369 +vn -0.1048 -0.9922 0.0676 +vn -0.2624 0.9633 0.0569 +vn -0.4168 -0.8958 0.1543 +vn -0.0723 0.9944 -0.0766 +vn -0.1524 -0.9482 -0.2787 +vn -0.3925 0.9082 0.1452 +vn -0.3492 -0.8977 -0.2688 +vn -0.9153 0.0476 0.4000 +vn -0.0892 -0.9951 -0.0416 +vn -0.8995 -0.2331 0.3695 +vn 0.9996 0.0268 0.0068 +vn -0.9092 0.0175 0.4160 +vn -0.4603 0.8878 0.0036 +vn -0.4475 -0.8814 -0.1513 +vn -0.9963 -0.0720 0.0472 +vn -0.0299 -0.9990 0.0338 +vn -0.9920 -0.0299 0.1229 +vn 0.9833 -0.1814 -0.0120 +vn -0.9796 -0.0897 0.1797 +vn -0.0374 0.9982 -0.0471 +vn -0.8330 -0.5531 0.0116 +vn -0.4828 0.8676 0.1186 +vn -0.1647 -0.9829 -0.0828 +vn -0.2024 0.9746 0.0954 +vn -0.3542 -0.9280 -0.1159 +vn -0.0699 0.9945 0.0776 +vn -0.0667 -0.9143 -0.3995 +vn -0.7559 -0.6076 -0.2437 +vn -0.5378 0.8339 -0.1237 +vn -0.2519 -0.9657 -0.0633 +vn -0.1587 0.9836 -0.0853 +vn -0.2291 -0.9722 -0.0482 +vn -0.1823 0.9724 -0.1455 +vn -0.1493 -0.9886 -0.0173 +vn -0.5208 0.8359 -0.1733 +vn -0.4801 -0.8756 0.0530 +vn -0.9971 -0.0637 0.0417 +vn 0.2466 -0.9637 -0.1025 +vn -0.9932 -0.0904 -0.0730 +vn -0.9977 -0.0644 -0.0220 +vn -0.9592 -0.1508 -0.2390 +vn -0.0469 0.9939 -0.0999 +vn -0.5619 -0.6346 -0.5306 +vn -0.8572 -0.1639 -0.4882 +vn 0.1355 -0.9268 -0.3502 +vn -0.9161 -0.0531 -0.3974 +vn -0.9845 -0.1641 -0.0614 +vn -0.9481 -0.2181 -0.2313 +vn -0.0462 0.9901 -0.1324 +vn -1.0000 -0.0000 -0.0000 +vn -0.7321 -0.6362 -0.2435 +vn -0.5502 0.8302 -0.0901 +vn -0.3557 -0.9307 -0.0847 +vn -0.1318 0.9886 -0.0722 +vn -0.1061 -0.9864 -0.1257 +vn -0.2121 0.9772 -0.0055 +vn -0.2494 -0.8851 -0.3929 +vn -0.6032 0.7774 -0.1784 +vn -0.5380 0.8202 0.1946 +vn -0.3289 -0.9423 -0.0632 +vn -0.3103 0.9496 0.0435 +vn -0.0612 -0.9967 -0.0535 +vn -0.1133 0.9789 -0.1702 +vn -0.2475 -0.9688 -0.0150 +vn -0.6709 0.5519 -0.4954 +vn -0.5959 -0.5435 -0.5912 +vn -0.8549 -0.1486 -0.4970 +vn -0.3972 -0.7294 -0.5569 +vn -0.9109 0.1837 -0.3696 +vn -0.9991 -0.0382 -0.0182 +vn -0.8294 -0.3628 -0.4248 +vn -0.0813 0.9956 0.0472 +vn -1.0000 -0.0007 0.0004 +vn -0.8461 -0.4577 -0.2732 +vn -0.8318 -0.0443 -0.5533 +vn -0.8349 0.0203 -0.5501 +vn -0.8160 0.1999 -0.5423 +vn 1.0000 0.0047 0.0010 +vn -0.7754 -0.4238 -0.4681 +vn -0.1552 0.9555 0.2510 +vn 1.0000 0.0001 0.0001 +vn -0.7375 -0.3304 -0.5890 +vn -0.4602 0.8844 0.0780 +vn -0.1611 -0.9383 -0.3061 +vn -0.4557 0.8877 0.0662 +vn -0.1561 -0.9866 -0.0469 +vn -0.2826 0.9510 -0.1253 +vn -0.3330 -0.9099 0.2474 +vn -0.7251 0.4512 -0.5202 +vn -0.6403 -0.6146 -0.4606 +vn -0.3503 -0.9087 -0.2270 +vn -0.5022 0.8551 0.1289 +vn -0.2317 -0.9728 -0.0020 +vn -0.5185 0.8388 -0.1660 +vn -0.2451 -0.9670 -0.0695 +vn -0.6820 0.4570 -0.5710 +vn -0.6736 -0.6861 -0.2748 +vn -0.7681 -0.0480 -0.6386 +vn -0.7466 -0.4858 -0.4545 +vn -0.7544 0.2099 -0.6220 +vn -1.0000 -0.0023 -0.0003 +vn -0.6957 -0.4156 -0.5859 +vn -0.1858 0.9352 0.3013 +vn -1.0000 0.0002 -0.0000 +vn -0.6201 -0.5203 -0.5871 +vn -0.4769 0.8688 0.1329 +vn -0.8042 -0.5060 -0.3118 +vn -0.6768 0.1358 -0.7235 +vn -1.0000 -0.0043 -0.0023 +vn -0.5677 -0.4212 -0.7073 +vn -0.1151 0.9667 0.2285 +vn -0.3317 -0.6942 -0.6388 +vn -0.2226 0.9614 -0.1615 +vn -0.4053 -0.7411 -0.5352 +vn -0.1981 0.9574 -0.2103 +vn -0.1252 -0.9900 -0.0646 +vn -0.3986 0.7830 -0.4776 +vn -0.2182 -0.9648 -0.1467 +vn -0.5555 0.4609 -0.6921 +vn -0.3908 -0.8965 -0.2084 +vn -0.6854 0.0126 -0.7280 +vn 0.0044 -0.9951 -0.0987 +vn -0.2182 0.7560 -0.6171 +vn -0.1071 -0.9525 -0.2850 +vn -0.3764 0.5213 -0.7659 +vn -0.1781 -0.9699 -0.1659 +vn -0.5410 0.1053 -0.8344 +vn -0.9891 -0.1374 -0.0526 +vn -0.5704 0.0608 -0.8191 +vn -1.0000 -0.0009 -0.0010 +vn -0.4904 -0.4345 -0.7555 +vn -0.0145 0.9869 0.1604 +vn -0.3780 -0.7542 -0.5369 +vn -0.1625 0.9571 -0.2400 +vn -0.4532 -0.5299 -0.7168 +vn -0.1039 0.9529 -0.2849 +vn -0.2681 -0.3739 -0.8879 +vn -0.0176 0.9867 0.1617 +vn -0.2770 -0.7371 -0.6164 +vn -0.0818 0.9545 -0.2866 +vn -0.0559 -0.7034 -0.7086 +vn 0.0029 0.9275 -0.3738 +vn 0.1246 -0.9700 -0.2089 +vn -0.1124 0.7836 -0.6111 +vn -0.5330 -0.8078 -0.2517 +vn -0.2090 0.5313 -0.8210 +vn -0.9845 -0.1754 -0.0068 +vn -0.2239 0.1581 -0.9617 +vn -1.0000 -0.0093 -0.0024 +vn -0.2152 0.0202 -0.9764 +vn 0.3037 0.8258 -0.4752 +vn -0.7360 -0.6018 -0.3100 +vn 0.0462 0.5010 -0.8642 +vn -0.9809 -0.1944 -0.0040 +vn -0.0311 0.1943 -0.9804 +vn -1.0000 -0.0091 -0.0024 +vn -0.0843 0.0102 -0.9964 +vn -0.2339 -0.1713 -0.9570 +vn -0.0234 0.9864 0.1628 +vn 0.1219 0.2001 -0.9722 +vn -0.3026 -0.7000 -0.6469 +vn 0.0304 0.9417 -0.3351 +vn -0.2442 -0.8784 -0.4108 +vn 0.3485 0.7802 -0.5194 +vn -0.2761 -0.9468 -0.1656 +usemtl None +s off +f 468/1/1 467/2/1 20/3/1 21/4/1 +f 4/5/2 3/6/2 13/7/2 14/8/2 +f 469/9/3 468/1/3 21/4/3 22/10/3 +f 5/11/4 4/5/4 14/8/4 15/12/4 +f 10/13/5 469/9/5 22/10/5 23/14/5 +f 6/15/6 5/11/6 15/12/6 16/16/6 +f 470/17/7 10/13/7 23/14/7 24/18/7 +f 7/19/8 6/15/8 16/16/8 17/20/8 +f 8/21/9 7/19/9 17/20/9 18/22/9 +f 1/23/10 288/24/10 11/25/10 +f 203/26/11 188/27/11 202/28/11 +f 9/29/12 8/21/12 18/22/12 19/30/12 +f 2/31/13 1/23/13 11/25/13 12/32/13 +f 467/2/14 9/29/14 19/30/14 20/3/14 +f 3/6/15 2/31/15 12/32/15 13/7/15 +f 20/3/16 19/30/16 34/33/16 35/34/16 +f 13/7/17 12/32/17 27/35/17 28/36/17 +f 21/4/18 20/3/18 35/34/18 36/37/18 +f 14/8/19 13/7/19 28/36/19 29/38/19 +f 22/10/20 21/4/20 36/37/20 37/39/20 +f 15/12/21 14/8/21 29/38/21 30/40/21 +f 23/14/22 22/10/22 37/39/22 38/41/22 +f 16/16/23 15/12/23 30/40/23 31/42/23 +f 24/18/24 23/14/24 38/41/24 39/43/24 +f 17/20/25 16/16/25 31/42/25 32/44/25 +f 25/45/26 24/18/26 39/43/26 40/46/26 +f 18/22/27 17/20/27 32/44/27 33/47/27 +f 11/25/28 288/48/28 26/49/28 +f 203/50/29 25/45/29 40/46/29 +f 19/30/30 18/22/30 33/47/30 34/33/30 +f 12/32/31 11/25/31 26/49/31 27/35/31 +f 39/43/32 38/41/32 53/51/32 54/52/32 +f 32/44/33 31/42/33 46/53/33 47/54/33 +f 40/46/34 39/43/34 54/52/34 55/55/34 +f 33/47/35 32/44/35 47/54/35 48/56/35 +f 26/49/36 288/57/36 41/58/36 +f 203/59/29 40/46/29 55/55/29 +f 34/33/37 33/47/37 48/56/37 49/60/37 +f 27/35/38 26/49/38 41/58/38 42/61/38 +f 35/34/39 34/33/39 49/60/39 50/62/39 +f 28/36/40 27/35/40 42/61/40 43/63/40 +f 36/37/41 35/34/41 50/62/41 51/64/41 +f 29/38/42 28/36/42 43/63/42 44/65/42 +f 37/39/43 36/37/43 51/64/43 52/66/43 +f 30/40/44 29/38/44 44/65/44 45/67/44 +f 38/41/45 37/39/45 52/66/45 53/51/45 +f 31/42/46 30/40/46 45/67/46 46/53/46 +f 43/63/47 42/61/47 57/68/47 58/69/47 +f 51/64/48 50/62/48 65/70/48 66/71/48 +f 44/65/49 43/63/49 58/69/49 59/72/49 +f 52/66/50 51/64/50 66/71/50 67/73/50 +f 45/67/51 44/65/51 59/72/51 60/74/51 +f 53/51/52 52/66/52 67/73/52 68/75/52 +f 46/53/53 45/67/53 60/74/53 61/76/53 +f 54/52/54 53/51/54 68/75/54 69/77/54 +f 47/54/55 46/53/55 61/76/55 62/78/55 +f 55/55/56 54/52/56 69/77/56 70/79/56 +f 48/56/57 47/54/57 62/78/57 63/80/57 +f 41/58/58 288/81/58 56/82/58 +f 203/83/59 55/55/59 70/79/59 +f 49/60/60 48/56/60 63/80/60 64/84/60 +f 42/61/61 41/58/61 56/82/61 57/68/61 +f 50/62/62 49/60/62 64/84/62 65/70/62 +f 62/78/63 61/76/63 76/85/63 77/86/63 +f 70/79/64 69/77/64 84/87/64 85/88/64 +f 63/80/65 62/78/65 77/86/65 78/89/65 +f 56/82/66 288/90/66 71/91/66 +f 203/92/67 70/79/67 85/88/67 +f 64/84/68 63/80/68 78/89/68 79/93/68 +f 57/68/69 56/82/69 71/91/69 72/94/69 +f 65/70/70 64/84/70 79/93/70 80/95/70 +f 58/69/71 57/68/71 72/94/71 73/96/71 +f 66/71/72 65/70/72 80/95/72 81/97/72 +f 59/72/73 58/69/73 73/96/73 74/98/73 +f 67/73/74 66/71/74 81/97/74 82/99/74 +f 60/74/75 59/72/75 74/98/75 75/100/75 +f 68/75/76 67/73/76 82/99/76 83/101/76 +f 61/76/77 60/74/77 75/100/77 76/85/77 +f 69/77/78 68/75/78 83/101/78 84/87/78 +f 81/97/79 80/95/79 95/102/79 96/103/79 +f 74/98/80 73/96/80 88/104/80 89/105/80 +f 82/99/81 81/97/81 96/103/81 97/106/81 +f 75/100/82 74/98/82 89/105/82 90/107/82 +f 83/101/83 82/99/83 97/106/83 98/108/83 +f 76/85/84 75/100/84 90/107/84 91/109/84 +f 84/87/85 83/101/85 98/108/85 99/110/85 +f 77/86/86 76/85/86 91/109/86 92/111/86 +f 85/88/87 84/87/87 99/110/87 100/112/87 +f 78/89/88 77/86/88 92/111/88 93/113/88 +f 71/91/89 288/114/89 86/115/89 +f 203/116/90 85/88/90 100/112/90 +f 79/93/91 78/89/91 93/113/91 94/117/91 +f 72/94/92 71/91/92 86/115/92 87/118/92 +f 80/95/93 79/93/93 94/117/93 95/102/93 +f 73/96/94 72/94/94 87/118/94 88/104/94 +f 100/112/95 99/110/95 114/119/95 115/120/95 +f 93/113/96 92/111/96 107/121/96 108/122/96 +f 86/115/97 288/123/97 101/124/97 +f 203/125/98 100/112/98 115/120/98 +f 94/117/99 93/113/99 108/122/99 109/126/99 +f 87/118/100 86/115/100 101/124/100 102/127/100 +f 95/102/101 94/117/101 109/126/101 110/128/101 +f 88/104/102 87/118/102 102/127/102 103/129/102 +f 96/103/103 95/102/103 110/128/103 111/130/103 +f 89/105/104 88/104/104 103/129/104 104/131/104 +f 97/106/105 96/103/105 111/130/105 112/132/105 +f 90/107/106 89/105/106 104/131/106 105/133/106 +f 98/108/107 97/106/107 112/132/107 113/134/107 +f 91/109/108 90/107/108 105/133/108 106/135/108 +f 99/110/109 98/108/109 113/134/109 114/119/109 +f 92/111/110 91/109/110 106/135/110 107/121/110 +f 104/131/111 103/129/111 118/136/111 119/137/111 +f 112/132/112 111/130/112 126/138/112 127/139/112 +f 105/133/113 104/131/113 119/137/113 120/140/113 +f 113/134/114 112/132/114 127/139/114 128/141/114 +f 106/135/115 105/133/115 120/140/115 121/142/115 +f 114/119/116 113/134/116 128/141/116 129/143/116 +f 107/121/117 106/135/117 121/142/117 122/144/117 +f 115/120/118 114/119/118 129/143/118 130/145/118 +f 108/122/119 107/121/119 122/144/119 123/146/119 +f 101/124/120 288/147/120 116/148/120 +f 203/149/29 115/120/29 130/145/29 +f 109/126/121 108/122/121 123/146/121 124/150/121 +f 102/127/122 101/124/122 116/148/122 117/151/122 +f 110/128/123 109/126/123 124/150/123 125/152/123 +f 103/129/124 102/127/124 117/151/124 118/136/124 +f 111/130/125 110/128/125 125/152/125 126/138/125 +f 123/146/126 122/144/126 137/153/126 138/154/126 +f 116/148/127 288/155/127 131/156/127 +f 203/157/128 130/145/128 145/158/128 +f 124/150/129 123/146/129 138/154/129 139/159/129 +f 117/151/130 116/148/130 131/156/130 132/160/130 +f 125/152/131 124/150/131 139/159/131 140/161/131 +f 118/136/132 117/151/132 132/160/132 133/162/132 +f 126/138/133 125/152/133 140/161/133 141/163/133 +f 119/137/134 118/136/134 133/162/134 134/164/134 +f 127/139/135 126/138/135 141/163/135 142/165/135 +f 120/140/136 119/137/136 134/164/136 135/166/136 +f 128/141/137 127/139/137 142/165/137 143/167/137 +f 121/142/138 120/140/138 135/166/138 136/168/138 +f 129/143/139 128/141/139 143/167/139 144/169/139 +f 122/144/140 121/142/140 136/168/140 137/153/140 +f 130/145/141 129/143/141 144/169/141 145/158/141 +f 142/165/142 141/163/142 156/170/142 157/171/142 +f 135/166/143 134/164/143 149/172/143 150/173/143 +f 143/167/144 142/165/144 157/171/144 158/174/144 +f 136/168/145 135/166/145 150/173/145 151/175/145 +f 144/169/146 143/167/146 158/174/146 159/176/146 +f 137/153/147 136/168/147 151/175/147 152/177/147 +f 145/158/148 144/169/148 159/176/148 160/178/148 +f 138/154/149 137/153/149 152/177/149 153/179/149 +f 131/156/150 288/180/150 146/181/150 +f 203/182/151 145/158/151 160/178/151 +f 139/159/152 138/154/152 153/179/152 154/183/152 +f 132/160/153 131/156/153 146/181/153 147/184/153 +f 140/161/154 139/159/154 154/183/154 155/185/154 +f 133/162/155 132/160/155 147/184/155 148/186/155 +f 141/163/156 140/161/156 155/185/156 156/170/156 +f 134/164/157 133/162/157 148/186/157 149/172/157 +f 174/187/158 188/27/158 203/188/158 160/178/158 159/176/158 +f 154/183/159 153/179/159 168/189/159 169/190/159 +f 147/184/160 146/181/160 161/191/160 162/192/160 +f 155/185/161 154/183/161 169/190/161 170/193/161 +f 148/186/162 147/184/162 162/192/162 163/194/162 +f 156/170/163 155/185/163 170/193/163 171/195/163 +f 149/172/164 148/186/164 163/194/164 164/196/164 +f 157/171/165 156/170/165 171/195/165 172/197/165 +f 150/173/166 149/172/166 164/196/166 165/198/166 +f 158/174/167 157/171/167 172/197/167 173/199/167 +f 151/175/168 150/173/168 165/198/168 166/200/168 +f 159/176/169 158/174/169 173/199/169 174/187/169 +f 152/177/170 151/175/170 166/200/170 167/201/170 +f 153/179/171 152/177/171 167/201/171 168/189/171 +f 146/181/172 288/202/172 161/191/172 +f 173/199/173 172/197/173 186/203/173 187/204/173 +f 166/200/174 165/198/174 179/205/174 180/206/174 +f 174/187/175 173/199/175 187/204/175 188/27/175 +f 167/201/176 166/200/176 180/206/176 181/207/176 +f 168/189/177 167/201/177 181/207/177 182/208/177 +f 161/191/178 288/209/178 175/210/178 +f 169/190/179 168/189/179 182/208/179 183/211/179 +f 162/192/180 161/191/180 175/210/180 176/212/180 +f 170/193/181 169/190/181 183/211/181 184/213/181 +f 163/194/182 162/192/182 176/212/182 177/214/182 +f 171/195/183 170/193/183 184/213/183 185/215/183 +f 164/196/184 163/194/184 177/214/184 178/216/184 +f 172/197/185 171/195/185 185/215/185 186/203/185 +f 165/198/186 164/196/186 178/216/186 179/205/186 +f 176/212/187 175/210/187 189/217/187 190/218/187 +f 184/213/188 183/211/188 197/219/188 198/220/188 +f 177/214/189 176/212/189 190/218/189 191/221/189 +f 185/215/190 184/213/190 198/220/190 199/222/190 +f 178/216/191 177/214/191 191/221/191 192/223/191 +f 186/203/192 185/215/192 199/222/192 200/224/192 +f 179/205/193 178/216/193 192/223/193 193/225/193 +f 187/204/194 186/203/194 200/224/194 201/226/194 +f 180/206/195 179/205/195 193/225/195 194/227/195 +f 188/27/196 187/204/196 201/226/196 202/28/196 +f 181/207/197 180/206/197 194/227/197 195/228/197 +f 203/229/198 202/28/198 217/230/198 +f 182/208/199 181/207/199 195/228/199 196/231/199 +f 175/210/200 288/232/200 189/217/200 +f 183/211/201 182/208/201 196/231/201 197/219/201 +f 194/227/202 193/225/202 208/233/202 209/234/202 +f 202/28/203 201/226/203 216/235/203 217/230/203 +f 195/228/204 194/227/204 209/234/204 210/236/204 +f 203/237/205 217/230/205 231/238/205 +f 196/231/206 195/228/206 210/236/206 211/239/206 +f 189/217/207 288/240/207 204/241/207 +f 197/219/208 196/231/208 211/239/208 212/242/208 +f 190/218/209 189/217/209 204/241/209 205/243/209 +f 198/220/210 197/219/210 212/242/210 213/244/210 +f 191/221/211 190/218/211 205/243/211 206/245/211 +f 199/222/212 198/220/212 213/244/212 214/246/212 +f 192/223/213 191/221/213 206/245/213 207/247/213 +f 200/224/214 199/222/214 214/246/214 215/248/214 +f 193/225/215 192/223/215 207/247/215 208/233/215 +f 201/226/216 200/224/216 215/248/216 216/235/216 +f 213/244/217 212/242/217 226/249/217 227/250/217 +f 206/245/218 205/243/218 219/251/218 220/252/218 +f 214/246/219 213/244/219 227/250/219 228/253/219 +f 207/247/220 206/245/220 220/252/220 221/254/220 +f 215/248/221 214/246/221 228/253/221 229/255/221 +f 208/233/222 207/247/222 221/254/222 222/256/222 +f 216/235/223 215/248/223 229/255/223 230/257/223 +f 209/234/224 208/233/224 222/256/224 223/258/224 +f 217/230/225 216/235/225 230/257/225 231/238/225 +f 210/236/226 209/234/226 223/258/226 224/259/226 +f 203/260/227 231/238/227 245/261/227 +f 211/239/228 210/236/228 224/259/228 225/262/228 +f 204/241/229 288/263/229 218/264/229 +f 212/242/230 211/239/230 225/262/230 226/249/230 +f 205/243/231 204/241/231 218/264/231 219/251/231 +f 231/238/232 230/257/232 244/265/232 245/261/232 +f 224/259/233 223/258/233 237/266/233 238/267/233 +f 203/268/234 245/261/234 259/269/234 +f 225/262/235 224/259/235 238/267/235 239/270/235 +f 218/264/236 288/271/236 232/272/236 +f 226/249/237 225/262/237 239/270/237 240/273/237 +f 219/251/238 218/264/238 232/272/238 233/274/238 +f 227/250/239 226/249/239 240/273/239 241/275/239 +f 220/252/240 219/251/240 233/274/240 234/276/240 +f 228/253/241 227/250/241 241/275/241 242/277/241 +f 221/254/242 220/252/242 234/276/242 235/278/242 +f 229/255/243 228/253/243 242/277/243 243/279/243 +f 222/256/244 221/254/244 235/278/244 236/280/244 +f 230/257/245 229/255/245 243/279/245 244/265/245 +f 223/258/246 222/256/246 236/280/246 237/266/246 +f 234/276/247 233/274/247 247/281/247 248/282/247 +f 242/277/248 241/275/248 255/283/248 256/284/248 +f 235/278/249 234/276/249 248/282/249 249/285/249 +f 243/279/250 242/277/250 256/284/250 257/286/250 +f 236/280/251 235/278/251 249/285/251 250/287/251 +f 244/265/252 243/279/252 257/286/252 258/288/252 +f 237/266/253 236/280/253 250/287/253 251/289/253 +f 245/261/254 244/265/254 258/288/254 259/269/254 +f 238/267/255 237/266/255 251/289/255 252/290/255 +f 203/291/256 259/269/256 273/292/256 +f 239/270/257 238/267/257 252/290/257 253/293/257 +f 232/272/258 288/294/258 246/295/258 +f 240/273/259 239/270/259 253/293/259 254/296/259 +f 233/274/260 232/272/260 246/295/260 247/281/260 +f 241/275/261 240/273/261 254/296/261 255/283/261 +f 252/290/262 251/289/262 265/297/262 266/298/262 +f 253/293/263 252/290/263 266/298/263 267/299/263 +f 246/295/264 288/300/264 260/301/264 +f 254/296/265 253/293/265 267/299/265 268/302/265 +f 247/281/266 246/295/266 260/301/266 261/303/266 +f 255/283/267 254/296/267 268/302/267 269/304/267 +f 248/282/268 247/281/268 261/303/268 262/305/268 +f 256/284/269 255/283/269 269/304/269 270/306/269 +f 249/285/270 248/282/270 262/305/270 263/307/270 +f 257/286/271 256/284/271 270/306/271 271/308/271 +f 250/287/272 249/285/272 263/307/272 264/309/272 +f 258/288/273 257/286/273 271/308/273 272/310/273 +f 251/289/274 250/287/274 264/309/274 265/297/274 +f 259/269/275 258/288/275 272/310/275 273/292/275 +f 270/306/276 269/304/276 283/311/276 284/312/276 +f 263/307/277 262/305/277 276/313/277 277/314/277 +f 271/308/278 270/306/278 284/312/278 285/315/278 +f 264/309/279 263/307/279 277/314/279 278/316/279 +f 272/310/280 271/308/280 285/315/280 286/317/280 +f 265/297/281 264/309/281 278/316/281 279/318/281 +f 273/292/282 272/310/282 286/317/282 287/319/282 +f 266/298/283 265/297/283 279/318/283 280/320/283 +f 267/299/284 266/298/284 280/320/284 281/321/284 +f 260/301/285 288/322/285 274/323/285 +f 268/302/286 267/299/286 281/321/286 282/324/286 +f 261/303/287 260/301/287 274/323/287 275/325/287 +f 269/304/288 268/302/288 282/324/288 283/311/288 +f 262/305/289 261/303/289 275/325/289 276/313/289 +f 281/321/290 280/320/290 295/326/290 296/327/290 +f 274/323/291 288/328/291 289/329/291 +f 282/324/292 281/321/292 296/327/292 297/330/292 +f 275/325/293 274/323/293 289/329/293 290/331/293 +f 283/311/294 282/324/294 297/330/294 298/332/294 +f 276/313/295 275/325/295 290/331/295 291/333/295 +f 284/312/296 283/311/296 298/332/296 299/334/296 +f 277/314/297 276/313/297 291/333/297 292/335/297 +f 285/315/298 284/312/298 299/334/298 300/336/298 +f 278/316/299 277/314/299 292/335/299 293/337/299 +f 286/317/300 285/315/300 300/336/300 301/338/300 +f 279/318/301 278/316/301 293/337/301 294/339/301 +f 287/319/302 286/317/302 301/338/302 302/340/302 +f 280/320/303 279/318/303 294/339/303 295/326/303 +f 300/336/304 299/334/304 313/341/304 314/342/304 +f 293/337/305 292/335/305 306/343/305 307/344/305 +f 301/338/306 300/336/306 314/342/306 315/345/306 +f 294/339/307 293/337/307 307/344/307 308/346/307 +f 302/340/308 301/338/308 315/345/308 316/347/308 +f 295/326/309 294/339/309 308/346/309 309/348/309 +f 296/327/310 295/326/310 309/348/310 310/349/310 +f 289/329/311 288/350/311 303/351/311 +f 297/330/312 296/327/312 310/349/312 311/352/312 +f 290/331/313 289/329/313 303/351/313 304/353/313 +f 298/332/314 297/330/314 311/352/314 312/354/314 +f 291/333/315 290/331/315 304/353/315 305/355/315 +f 299/334/316 298/332/316 312/354/316 313/341/316 +f 292/335/317 291/333/317 305/355/317 306/343/317 +f 303/351/318 288/356/318 317/357/318 +f 311/352/319 310/349/319 324/358/319 325/359/319 +f 304/353/320 303/351/320 317/357/320 318/360/320 +f 312/354/321 311/352/321 325/359/321 326/361/321 +f 305/355/322 304/353/322 318/360/322 319/362/322 +f 313/341/323 312/354/323 326/361/323 327/363/323 +f 306/343/324 305/355/324 319/362/324 320/364/324 +f 314/342/325 313/341/325 327/363/325 328/365/325 +f 307/344/326 306/343/326 320/364/326 321/366/326 +f 315/345/327 314/342/327 328/365/327 329/367/327 +f 308/346/328 307/344/328 321/366/328 322/368/328 +f 316/347/329 315/345/329 329/367/329 330/369/329 +f 309/348/330 308/346/330 322/368/330 323/370/330 +f 287/319/331 302/340/331 316/347/331 330/369/331 331/371/331 203/372/331 273/292/331 +f 310/349/332 309/348/332 323/370/332 324/358/332 +f 321/366/333 320/364/333 335/373/333 336/374/333 +f 329/367/334 328/365/334 343/375/334 344/376/334 +f 322/368/335 321/366/335 336/374/335 337/377/335 +f 330/369/336 329/367/336 344/376/336 345/378/336 +f 323/370/337 322/368/337 337/377/337 338/379/337 +f 331/371/338 330/369/338 345/378/338 346/380/338 +f 324/358/339 323/370/339 338/379/339 339/381/339 +f 317/357/340 288/382/340 332/383/340 +f 203/384/59 331/371/59 346/380/59 +f 325/359/341 324/358/341 339/381/341 340/385/341 +f 318/360/342 317/357/342 332/383/342 333/386/342 +f 326/361/343 325/359/343 340/385/343 341/387/343 +f 319/362/344 318/360/344 333/386/344 334/388/344 +f 327/363/345 326/361/345 341/387/345 342/389/345 +f 320/364/346 319/362/346 334/388/346 335/373/346 +f 328/365/347 327/363/347 342/389/347 343/375/347 +f 340/385/348 339/381/348 354/390/348 355/391/348 +f 333/386/349 332/383/349 347/392/349 348/393/349 +f 341/387/350 340/385/350 355/391/350 356/394/350 +f 334/388/351 333/386/351 348/393/351 349/395/351 +f 342/389/352 341/387/352 356/394/352 357/396/352 +f 335/373/353 334/388/353 349/395/353 350/397/353 +f 343/375/354 342/389/354 357/396/354 358/398/354 +f 336/374/355 335/373/355 350/397/355 351/399/355 +f 344/376/356 343/375/356 358/398/356 359/400/356 +f 337/377/357 336/374/357 351/399/357 352/401/357 +f 345/378/358 344/376/358 359/400/358 360/402/358 +f 338/379/359 337/377/359 352/401/359 353/403/359 +f 346/380/360 345/378/360 360/402/360 361/404/360 +f 339/381/361 338/379/361 353/403/361 354/390/361 +f 332/383/362 288/405/362 347/392/362 +f 203/406/26 346/380/26 361/404/26 +f 359/407/363 358/408/363 373/409/363 374/410/363 +f 352/411/364 351/412/364 366/413/364 367/414/364 +f 360/415/365 359/407/365 374/410/365 375/416/365 +f 353/417/366 352/411/366 367/414/366 368/418/366 +f 361/419/367 360/415/367 375/416/367 376/420/367 +f 354/421/368 353/417/368 368/418/368 369/422/368 +f 347/423/369 288/424/369 362/425/369 +f 203/426/370 361/419/370 376/420/370 +f 355/427/371 354/421/371 369/422/371 370/428/371 +f 348/429/372 347/423/372 362/425/372 363/430/372 +f 356/431/373 355/427/373 370/428/373 371/432/373 +f 349/433/374 348/429/374 363/430/374 364/434/374 +f 357/435/375 356/431/375 371/432/375 372/436/375 +f 350/437/376 349/433/376 364/434/376 365/438/376 +f 358/408/377 357/435/377 372/436/377 373/409/377 +f 351/412/378 350/437/378 365/438/378 366/413/378 +f 363/430/379 362/425/379 377/439/379 378/440/379 +f 371/432/380 370/428/380 385/441/380 386/442/380 +f 364/434/381 363/430/381 378/440/381 379/443/381 +f 372/436/382 371/432/382 386/442/382 387/444/382 +f 365/438/383 364/434/383 379/443/383 380/445/383 +f 373/409/384 372/436/384 387/444/384 388/446/384 +f 366/413/385 365/438/385 380/445/385 381/447/385 +f 374/410/386 373/409/386 388/446/386 389/448/386 +f 367/414/387 366/413/387 381/447/387 382/449/387 +f 375/416/388 374/410/388 389/448/388 390/450/388 +f 368/418/389 367/414/389 382/449/389 383/451/389 +f 376/420/390 375/416/390 390/450/390 391/452/390 +f 369/422/391 368/418/391 383/451/391 384/453/391 +f 362/425/392 288/454/392 377/439/392 +f 203/455/393 376/420/393 391/452/393 +f 370/428/394 369/422/394 384/453/394 385/441/394 +f 382/449/395 381/447/395 396/456/395 397/457/395 +f 390/450/396 389/448/396 404/458/396 405/459/396 +f 383/451/397 382/449/397 397/457/397 398/460/397 +f 391/452/398 390/450/398 405/459/398 406/461/398 +f 384/453/399 383/451/399 398/460/399 399/462/399 +f 377/439/400 288/463/400 392/464/400 +f 203/465/401 391/452/401 406/461/401 +f 385/441/402 384/453/402 399/462/402 400/466/402 +f 378/440/403 377/439/403 392/464/403 393/467/403 +f 386/442/404 385/441/404 400/466/404 401/468/404 +f 379/443/405 378/440/405 393/467/405 394/469/405 +f 387/444/406 386/442/406 401/468/406 402/470/406 +f 380/445/407 379/443/407 394/469/407 395/471/407 +f 388/446/408 387/444/408 402/470/408 403/472/408 +f 381/447/409 380/445/409 395/471/409 396/456/409 +f 389/448/410 388/446/410 403/472/410 404/458/410 +f 401/468/411 400/466/411 415/473/411 416/474/411 +f 394/469/412 393/467/412 408/475/412 409/476/412 +f 402/470/413 401/468/413 416/474/413 417/477/413 +f 395/471/414 394/469/414 409/476/414 410/478/414 +f 403/472/415 402/470/415 417/477/415 418/479/415 +f 396/456/416 395/471/416 410/478/416 411/480/416 +f 404/458/417 403/472/417 418/479/417 419/481/417 +f 397/457/418 396/456/418 411/480/418 412/482/418 +f 405/459/419 404/458/419 419/481/419 420/483/419 +f 398/460/420 397/457/420 412/482/420 413/484/420 +f 406/461/421 405/459/421 420/483/421 421/485/421 +f 399/462/422 398/460/422 413/484/422 414/486/422 +f 392/464/423 288/487/423 407/488/423 +f 203/489/424 406/461/424 421/485/424 +f 400/466/425 399/462/425 414/486/425 415/473/425 +f 393/467/426 392/464/426 407/488/426 408/475/426 +f 420/483/427 419/481/427 434/490/427 435/491/427 +f 413/484/428 412/482/428 427/492/428 428/493/428 +f 421/485/429 420/483/429 435/491/429 436/494/429 +f 414/486/430 413/484/430 428/493/430 429/495/430 +f 407/488/431 288/496/431 422/497/431 +f 203/498/151 421/485/151 436/494/151 +f 415/473/432 414/486/432 429/495/432 430/499/432 +f 408/475/433 407/488/433 422/497/433 423/500/433 +f 416/474/434 415/473/434 430/499/434 431/501/434 +f 409/476/435 408/475/435 423/500/435 424/502/435 +f 417/477/436 416/474/436 431/501/436 432/503/436 +f 410/478/437 409/476/437 424/502/437 425/504/437 +f 418/479/438 417/477/438 432/503/438 433/505/438 +f 411/480/439 410/478/439 425/504/439 426/506/439 +f 419/481/440 418/479/440 433/505/440 434/490/440 +f 412/482/441 411/480/441 426/506/441 427/492/441 +f 432/503/442 431/501/442 446/507/442 447/508/442 +f 425/504/443 424/502/443 439/509/443 440/510/443 +f 433/505/444 432/503/444 447/508/444 448/511/444 +f 426/506/445 425/504/445 440/510/445 441/512/445 +f 434/490/446 433/505/446 448/511/446 449/513/446 +f 427/492/447 426/506/447 441/512/447 442/514/447 +f 435/491/448 434/490/448 449/513/448 450/515/448 +f 428/493/449 427/492/449 442/514/449 443/516/449 +f 436/494/450 435/491/450 450/515/450 451/517/450 +f 429/495/451 428/493/451 443/516/451 444/518/451 +f 422/497/452 288/519/452 437/520/452 +f 203/521/370 436/494/370 451/517/370 +f 430/499/453 429/495/453 444/518/453 445/522/453 +f 423/500/454 422/497/454 437/520/454 438/523/454 +f 431/501/455 430/499/455 445/522/455 446/507/455 +f 424/502/456 423/500/456 438/523/456 439/509/456 +f 451/517/128 450/515/128 465/524/128 466/525/128 +f 444/518/457 443/516/457 458/526/457 459/527/457 +f 437/520/458 288/528/458 452/529/458 +f 203/530/370 451/517/370 466/525/370 +f 445/522/459 444/518/459 459/527/459 460/531/459 +f 438/523/460 437/520/460 452/529/460 453/532/460 +f 446/507/461 445/522/461 460/531/461 461/533/461 +f 439/509/462 438/523/462 453/532/462 454/534/462 +f 447/508/463 446/507/463 461/533/463 462/535/463 +f 440/510/464 439/509/464 454/534/464 455/536/464 +f 448/511/465 447/508/465 462/535/465 463/537/465 +f 441/512/466 440/510/466 455/536/466 456/538/466 +f 449/513/467 448/511/467 463/537/467 464/539/467 +f 442/514/468 441/512/468 456/538/468 457/540/468 +f 450/515/469 449/513/469 464/539/469 465/524/469 +f 443/516/470 442/514/470 457/540/470 458/526/470 +f 455/536/471 454/534/471 3/6/471 4/5/471 +f 463/537/472 462/535/472 468/1/472 469/9/472 +f 456/538/473 455/536/473 4/5/473 5/11/473 +f 464/539/474 463/537/474 469/9/474 10/13/474 +f 457/540/475 456/538/475 5/11/475 6/15/475 +f 465/524/476 464/539/476 10/13/476 470/17/476 +f 458/526/477 457/540/477 6/15/477 7/19/477 +f 459/527/478 458/526/478 7/19/478 8/21/478 +f 452/529/479 288/541/479 1/23/479 +f 466/525/480 465/524/480 470/17/480 24/18/480 25/45/480 203/542/480 +f 460/531/481 459/527/481 8/21/481 9/29/481 +f 453/532/482 452/529/482 1/23/482 2/31/482 +f 461/533/483 460/531/483 9/29/483 467/2/483 +f 454/534/484 453/532/484 2/31/484 3/6/484 +f 462/535/485 461/533/485 467/2/485 468/1/485 diff --git a/assets/models/plane.mtl b/assets/models/plane.mtl new file mode 100644 index 0000000..d023afb --- /dev/null +++ b/assets/models/plane.mtl @@ -0,0 +1,12 @@ +# Blender MTL File: 'None' +# Material Count: 1 + +newmtl Material.001 +Ns 323.999994 +Ka 1.000000 1.000000 1.000000 +Kd 0.066773 0.057077 0.064266 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.000000 +d 1.000000 +illum 2 diff --git a/assets/models/plane.obj b/assets/models/plane.obj new file mode 100644 index 0000000..adf8662 --- /dev/null +++ b/assets/models/plane.obj @@ -0,0 +1,16 @@ +# Blender v2.90.1 OBJ File: '' +# www.blender.org +mtllib plane.mtl +o Plane +v -10.000000 0.000000 10.000000 +v 10.000000 0.000000 10.000000 +v -10.000000 0.000000 -10.000000 +v 10.000000 0.000000 -10.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vn 0.0000 1.0000 0.0000 +usemtl Material.001 +s off +f 1/1/1 2/2/1 4/3/1 3/4/1 diff --git a/assets/models/sphere.mtl b/assets/models/sphere.mtl new file mode 100644 index 0000000..aa26edb --- /dev/null +++ b/assets/models/sphere.mtl @@ -0,0 +1,12 @@ +# Blender MTL File: 'None' +# Material Count: 1 + +newmtl Material.001 +Ns 323.999994 +Ka 1.000000 1.000000 1.000000 +Kd 0.015470 0.800000 0.000000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.000000 +d 1.000000 +illum 2 diff --git a/assets/models/sphere.obj b/assets/models/sphere.obj new file mode 100644 index 0000000..598cf3c --- /dev/null +++ b/assets/models/sphere.obj @@ -0,0 +1,2071 @@ +# Blender v2.90.1 OBJ File: '' +# www.blender.org +mtllib sphere.mtl +o Sphere +v 0.000000 0.980785 -0.195090 +v 0.000000 0.923880 -0.382683 +v 0.000000 0.831470 -0.555570 +v 0.000000 0.707107 -0.707107 +v 0.000000 0.555570 -0.831470 +v 0.000000 0.382683 -0.923880 +v 0.000000 0.195090 -0.980785 +v 0.000000 0.000000 -1.000000 +v 0.000000 -0.195090 -0.980785 +v 0.000000 -0.831470 -0.555570 +v 0.038060 0.980785 -0.191342 +v 0.074658 0.923880 -0.375330 +v 0.108386 0.831470 -0.544895 +v 0.137950 0.707107 -0.693520 +v 0.162212 0.555570 -0.815493 +v 0.180240 0.382683 -0.906127 +v 0.191342 0.195090 -0.961940 +v 0.195090 0.000000 -0.980785 +v 0.191342 -0.195090 -0.961940 +v 0.180240 -0.382683 -0.906127 +v 0.162212 -0.555570 -0.815493 +v 0.137950 -0.707107 -0.693520 +v 0.108386 -0.831470 -0.544895 +v 0.074658 -0.923880 -0.375330 +v 0.038060 -0.980785 -0.191341 +v 0.074658 0.980785 -0.180240 +v 0.146447 0.923880 -0.353553 +v 0.212608 0.831470 -0.513280 +v 0.270598 0.707107 -0.653281 +v 0.318190 0.555570 -0.768178 +v 0.353553 0.382683 -0.853553 +v 0.375330 0.195090 -0.906127 +v 0.382684 0.000000 -0.923879 +v 0.375330 -0.195090 -0.906127 +v 0.353554 -0.382683 -0.853553 +v 0.318190 -0.555570 -0.768178 +v 0.270598 -0.707107 -0.653281 +v 0.212608 -0.831470 -0.513280 +v 0.146447 -0.923880 -0.353553 +v 0.074658 -0.980785 -0.180240 +v 0.108387 0.980785 -0.162212 +v 0.212608 0.923880 -0.318190 +v 0.308658 0.831470 -0.461940 +v 0.392848 0.707107 -0.587938 +v 0.461940 0.555570 -0.691342 +v 0.513280 0.382683 -0.768178 +v 0.544895 0.195090 -0.815493 +v 0.555570 0.000000 -0.831469 +v 0.544895 -0.195090 -0.815493 +v 0.513280 -0.382683 -0.768178 +v 0.461940 -0.555570 -0.691342 +v 0.392848 -0.707107 -0.587938 +v 0.308658 -0.831470 -0.461940 +v 0.212608 -0.923880 -0.318189 +v 0.108386 -0.980785 -0.162211 +v 0.137950 0.980785 -0.137950 +v 0.270598 0.923880 -0.270598 +v 0.392848 0.831470 -0.392847 +v 0.500000 0.707107 -0.500000 +v 0.587938 0.555570 -0.587938 +v 0.653282 0.382683 -0.653281 +v 0.693520 0.195090 -0.693520 +v 0.707107 0.000000 -0.707107 +v 0.693520 -0.195090 -0.693520 +v 0.653282 -0.382683 -0.653281 +v 0.587938 -0.555570 -0.587938 +v 0.500000 -0.707107 -0.500000 +v 0.392848 -0.831470 -0.392847 +v 0.270598 -0.923880 -0.270598 +v 0.137950 -0.980785 -0.137949 +v 0.162212 0.980785 -0.108386 +v 0.318190 0.923880 -0.212607 +v 0.461940 0.831470 -0.308658 +v 0.587938 0.707107 -0.392847 +v 0.691342 0.555570 -0.461940 +v 0.768178 0.382683 -0.513280 +v 0.815493 0.195090 -0.544895 +v 0.831470 0.000000 -0.555570 +v 0.815493 -0.195090 -0.544895 +v 0.768178 -0.382683 -0.513280 +v 0.691342 -0.555570 -0.461940 +v 0.587938 -0.707107 -0.392847 +v 0.461940 -0.831470 -0.308658 +v 0.318190 -0.923880 -0.212607 +v 0.162212 -0.980785 -0.108386 +v 0.180240 0.980785 -0.074658 +v 0.353554 0.923880 -0.146446 +v 0.513280 0.831470 -0.212607 +v 0.653282 0.707107 -0.270598 +v 0.768178 0.555570 -0.318189 +v 0.853554 0.382683 -0.353553 +v 0.906128 0.195090 -0.375330 +v 0.923880 0.000000 -0.382683 +v 0.906128 -0.195090 -0.375330 +v 0.853554 -0.382683 -0.353553 +v 0.768178 -0.555570 -0.318189 +v 0.653282 -0.707107 -0.270598 +v 0.513280 -0.831470 -0.212607 +v 0.353554 -0.923880 -0.146446 +v 0.180240 -0.980785 -0.074658 +v 0.191342 0.980785 -0.038060 +v 0.375331 0.923880 -0.074658 +v 0.544895 0.831470 -0.108386 +v 0.693520 0.707107 -0.137949 +v 0.815493 0.555570 -0.162211 +v 0.906128 0.382683 -0.180240 +v 0.961940 0.195090 -0.191341 +v 0.980785 0.000000 -0.195090 +v 0.961940 -0.195090 -0.191341 +v 0.906128 -0.382683 -0.180240 +v 0.815493 -0.555570 -0.162211 +v 0.693520 -0.707107 -0.137949 +v 0.544895 -0.831470 -0.108386 +v 0.375330 -0.923880 -0.074658 +v 0.191342 -0.980785 -0.038060 +v 0.195091 0.980785 0.000000 +v 0.382684 0.923880 0.000000 +v 0.555570 0.831470 0.000000 +v 0.707107 0.707107 0.000000 +v 0.831470 0.555570 0.000000 +v 0.923880 0.382683 0.000000 +v 0.980785 0.195090 0.000000 +v 1.000000 0.000000 0.000000 +v 0.980785 -0.195090 0.000000 +v 0.923880 -0.382683 0.000000 +v 0.831470 -0.555570 0.000000 +v 0.707107 -0.707107 0.000000 +v 0.555570 -0.831470 0.000000 +v 0.382684 -0.923880 0.000000 +v 0.195090 -0.980785 0.000000 +v 0.191342 0.980785 0.038061 +v 0.375331 0.923880 0.074658 +v 0.544895 0.831470 0.108387 +v 0.693520 0.707107 0.137950 +v 0.815493 0.555570 0.162212 +v 0.906128 0.382683 0.180240 +v 0.961940 0.195090 0.191342 +v 0.980785 0.000000 0.195091 +v 0.961940 -0.195090 0.191342 +v 0.906128 -0.382683 0.180240 +v 0.815493 -0.555570 0.162212 +v 0.693520 -0.707107 0.137950 +v 0.544895 -0.831470 0.108387 +v 0.375330 -0.923880 0.074658 +v 0.191342 -0.980785 0.038061 +v 0.180240 0.980785 0.074658 +v 0.353554 0.923880 0.146447 +v 0.513280 0.831470 0.212608 +v 0.653282 0.707107 0.270598 +v 0.768178 0.555570 0.318190 +v 0.853554 0.382683 0.353554 +v 0.906127 0.195090 0.375331 +v 0.923880 0.000000 0.382684 +v 0.906127 -0.195090 0.375331 +v 0.853554 -0.382683 0.353554 +v 0.768178 -0.555570 0.318190 +v 0.653282 -0.707107 0.270598 +v 0.513280 -0.831470 0.212608 +v 0.353553 -0.923880 0.146447 +v 0.180240 -0.980785 0.074658 +v 0.162212 0.980785 0.108387 +v 0.318190 0.923880 0.212608 +v 0.461940 0.831470 0.308659 +v 0.587938 0.707107 0.392848 +v 0.691342 0.555570 0.461940 +v 0.768178 0.382683 0.513280 +v 0.815493 0.195090 0.544895 +v 0.831470 0.000000 0.555571 +v 0.815493 -0.195090 0.544895 +v 0.768178 -0.382683 0.513280 +v 0.691342 -0.555570 0.461940 +v 0.587938 -0.707107 0.392848 +v 0.461940 -0.831470 0.308659 +v 0.318190 -0.923880 0.212608 +v 0.162212 -0.980785 0.108387 +v 0.137950 0.980785 0.137950 +v 0.270598 0.923880 0.270599 +v 0.392848 0.831470 0.392848 +v 0.500000 0.707107 0.500000 +v 0.587938 0.555570 0.587938 +v 0.653282 0.382683 0.653282 +v 0.693520 0.195090 0.693520 +v 0.707107 0.000000 0.707107 +v 0.693520 -0.195090 0.693520 +v 0.653282 -0.382683 0.653282 +v 0.587938 -0.555570 0.587938 +v 0.500000 -0.707107 0.500000 +v 0.392848 -0.831470 0.392848 +v 0.270598 -0.923880 0.270598 +v 0.137950 -0.980785 0.137950 +v 0.108386 0.980785 0.162212 +v 0.212608 0.923880 0.318190 +v 0.308658 0.831470 0.461940 +v 0.392848 0.707107 0.587938 +v 0.461940 0.555570 0.691342 +v 0.513280 0.382683 0.768178 +v 0.544895 0.195090 0.815493 +v 0.555570 0.000000 0.831470 +v 0.544895 -0.195090 0.815493 +v 0.513280 -0.382683 0.768178 +v 0.461940 -0.555570 0.691342 +v 0.392848 -0.707107 0.587938 +v 0.308658 -0.831470 0.461940 +v 0.212608 -0.923880 0.318190 +v 0.108386 -0.980785 0.162212 +v 0.000000 -1.000000 0.000000 +v 0.074658 0.980785 0.180240 +v 0.146447 0.923880 0.353554 +v 0.212608 0.831470 0.513280 +v 0.270598 0.707107 0.653282 +v 0.318190 0.555570 0.768178 +v 0.353553 0.382683 0.853554 +v 0.375330 0.195090 0.906128 +v 0.382683 0.000000 0.923880 +v 0.375330 -0.195090 0.906128 +v 0.353553 -0.382683 0.853554 +v 0.318190 -0.555570 0.768178 +v 0.270598 -0.707107 0.653282 +v 0.212608 -0.831470 0.513280 +v 0.146447 -0.923880 0.353554 +v 0.074658 -0.980785 0.180240 +v 0.038060 0.980785 0.191342 +v 0.074658 0.923880 0.375331 +v 0.108386 0.831470 0.544896 +v 0.137950 0.707107 0.693520 +v 0.162212 0.555570 0.815493 +v 0.180240 0.382683 0.906128 +v 0.191342 0.195090 0.961940 +v 0.195090 0.000000 0.980786 +v 0.191342 -0.195090 0.961940 +v 0.180240 -0.382683 0.906128 +v 0.162212 -0.555570 0.815493 +v 0.137950 -0.707107 0.693520 +v 0.108386 -0.831470 0.544895 +v 0.074658 -0.923880 0.375331 +v 0.038060 -0.980785 0.191342 +v -0.000000 0.980785 0.195091 +v 0.000000 0.923880 0.382684 +v 0.000000 0.831470 0.555571 +v -0.000000 0.707107 0.707107 +v -0.000000 0.555570 0.831470 +v 0.000000 0.382683 0.923880 +v -0.000000 0.195090 0.980785 +v -0.000000 0.000000 1.000000 +v -0.000000 -0.195090 0.980785 +v 0.000000 -0.382683 0.923880 +v -0.000000 -0.555570 0.831470 +v -0.000000 -0.707107 0.707107 +v -0.000000 -0.831470 0.555570 +v 0.000000 -0.923880 0.382684 +v 0.000000 -0.980785 0.195091 +v -0.038060 0.980785 0.191342 +v -0.074658 0.923880 0.375331 +v -0.108386 0.831470 0.544896 +v -0.137950 0.707107 0.693520 +v -0.162212 0.555570 0.815493 +v -0.180240 0.382683 0.906128 +v -0.191342 0.195090 0.961940 +v -0.195090 0.000000 0.980786 +v -0.191342 -0.195090 0.961940 +v -0.180240 -0.382683 0.906128 +v -0.162212 -0.555570 0.815493 +v -0.137950 -0.707107 0.693520 +v -0.108386 -0.831470 0.544895 +v -0.074658 -0.923880 0.375331 +v -0.038060 -0.980785 0.191342 +v -0.074658 0.980785 0.180240 +v -0.146447 0.923880 0.353554 +v -0.212608 0.831470 0.513280 +v -0.270598 0.707107 0.653282 +v -0.318190 0.555570 0.768178 +v -0.353553 0.382683 0.853554 +v -0.375330 0.195090 0.906127 +v -0.382684 0.000000 0.923880 +v -0.375330 -0.195090 0.906127 +v -0.353553 -0.382683 0.853554 +v -0.318190 -0.555570 0.768178 +v -0.270598 -0.707107 0.653282 +v -0.212608 -0.831470 0.513280 +v -0.146447 -0.923880 0.353554 +v -0.074658 -0.980785 0.180240 +v -0.108386 0.980785 0.162212 +v -0.212608 0.923880 0.318190 +v -0.308658 0.831470 0.461940 +v -0.392847 0.707107 0.587938 +v -0.461940 0.555570 0.691342 +v -0.513280 0.382683 0.768178 +v -0.544895 0.195090 0.815493 +v -0.555570 0.000000 0.831470 +v -0.544895 -0.195090 0.815493 +v -0.513280 -0.382683 0.768178 +v -0.461940 -0.555570 0.691342 +v -0.392847 -0.707107 0.587938 +v -0.308658 -0.831470 0.461940 +v -0.212607 -0.923880 0.318190 +v -0.108386 -0.980785 0.162212 +v -0.000000 1.000000 0.000001 +v -0.137950 0.980785 0.137950 +v -0.270598 0.923880 0.270598 +v -0.392848 0.831470 0.392848 +v -0.500000 0.707107 0.500000 +v -0.587938 0.555570 0.587938 +v -0.653281 0.382683 0.653282 +v -0.693520 0.195090 0.693520 +v -0.707107 0.000000 0.707107 +v -0.693520 -0.195090 0.693520 +v -0.653281 -0.382683 0.653282 +v -0.587938 -0.555570 0.587938 +v -0.500000 -0.707107 0.500000 +v -0.392847 -0.831470 0.392848 +v -0.270598 -0.923880 0.270598 +v -0.137950 -0.980785 0.137950 +v -0.162212 0.980785 0.108387 +v -0.318190 0.923880 0.212608 +v -0.461940 0.831470 0.308659 +v -0.587938 0.707107 0.392848 +v -0.691342 0.555570 0.461940 +v -0.768178 0.382683 0.513280 +v -0.815493 0.195090 0.544895 +v -0.831470 0.000000 0.555570 +v -0.815493 -0.195090 0.544895 +v -0.768178 -0.382683 0.513280 +v -0.691342 -0.555570 0.461940 +v -0.587938 -0.707107 0.392848 +v -0.461940 -0.831470 0.308658 +v -0.318190 -0.923880 0.212608 +v -0.162212 -0.980785 0.108387 +v -0.180240 0.980785 0.074658 +v -0.353553 0.923880 0.146447 +v -0.513280 0.831470 0.212608 +v -0.653281 0.707107 0.270598 +v -0.768177 0.555570 0.318190 +v -0.853553 0.382683 0.353554 +v -0.906127 0.195090 0.375330 +v -0.923880 0.000000 0.382684 +v -0.906127 -0.195090 0.375330 +v -0.853553 -0.382683 0.353554 +v -0.768177 -0.555570 0.318190 +v -0.653281 -0.707107 0.270598 +v -0.513280 -0.831470 0.212608 +v -0.353553 -0.923880 0.146447 +v -0.180240 -0.980785 0.074658 +v -0.191342 0.980785 0.038061 +v -0.375330 0.923880 0.074658 +v -0.544895 0.831470 0.108387 +v -0.693520 0.707107 0.137950 +v -0.815493 0.555570 0.162212 +v -0.906127 0.382683 0.180240 +v -0.961939 0.195090 0.191342 +v -0.980785 0.000000 0.195090 +v -0.961939 -0.195090 0.191342 +v -0.906127 -0.382683 0.180240 +v -0.815493 -0.555570 0.162212 +v -0.693520 -0.707107 0.137950 +v -0.544895 -0.831470 0.108387 +v -0.375330 -0.923880 0.074658 +v -0.191342 -0.980785 0.038061 +v -0.195090 0.980785 0.000000 +v -0.382683 0.923880 0.000000 +v -0.555570 0.831470 0.000000 +v -0.707107 0.707107 0.000000 +v -0.831469 0.555570 0.000000 +v -0.923879 0.382683 0.000000 +v -0.980785 0.195090 0.000000 +v -1.000000 0.000000 0.000000 +v -0.980785 -0.195090 0.000000 +v -0.923879 -0.382683 0.000000 +v -0.831469 -0.555570 0.000000 +v -0.707107 -0.707107 0.000000 +v -0.555570 -0.831470 0.000000 +v -0.382683 -0.923880 0.000000 +v -0.195090 -0.980785 0.000000 +v -0.191342 0.980785 -0.038060 +v -0.375330 0.923880 -0.074658 +v -0.544895 0.831470 -0.108386 +v -0.693520 0.707107 -0.137949 +v -0.815493 0.555570 -0.162211 +v -0.906127 0.382683 -0.180240 +v -0.961939 0.195090 -0.191342 +v -0.980785 0.000000 -0.195090 +v -0.961939 -0.195090 -0.191342 +v -0.906127 -0.382683 -0.180240 +v -0.815493 -0.555570 -0.162211 +v -0.693520 -0.707107 -0.137949 +v -0.544895 -0.831470 -0.108386 +v -0.375330 -0.923880 -0.074658 +v -0.191342 -0.980785 -0.038060 +v -0.180240 0.980785 -0.074658 +v -0.353553 0.923880 -0.146446 +v -0.513280 0.831470 -0.212607 +v -0.653281 0.707107 -0.270598 +v -0.768177 0.555570 -0.318189 +v -0.853553 0.382683 -0.353553 +v -0.906127 0.195090 -0.375330 +v -0.923879 0.000000 -0.382683 +v -0.906127 -0.195090 -0.375330 +v -0.853553 -0.382683 -0.353553 +v -0.768177 -0.555570 -0.318189 +v -0.653281 -0.707107 -0.270598 +v -0.513280 -0.831470 -0.212607 +v -0.353553 -0.923880 -0.146446 +v -0.180240 -0.980785 -0.074657 +v -0.162212 0.980785 -0.108386 +v -0.318190 0.923880 -0.212607 +v -0.461940 0.831470 -0.308658 +v -0.587938 0.707107 -0.392847 +v -0.691341 0.555570 -0.461939 +v -0.768178 0.382683 -0.513280 +v -0.815493 0.195090 -0.544895 +v -0.831469 0.000000 -0.555570 +v -0.815493 -0.195090 -0.544895 +v -0.768178 -0.382683 -0.513280 +v -0.691341 -0.555570 -0.461939 +v -0.587938 -0.707107 -0.392847 +v -0.461940 -0.831470 -0.308658 +v -0.318189 -0.923880 -0.212607 +v -0.162212 -0.980785 -0.108386 +v -0.137950 0.980785 -0.137949 +v -0.270598 0.923880 -0.270598 +v -0.392847 0.831470 -0.392847 +v -0.500000 0.707107 -0.500000 +v -0.587937 0.555570 -0.587937 +v -0.653281 0.382683 -0.653281 +v -0.693519 0.195090 -0.693519 +v -0.707106 0.000000 -0.707106 +v -0.693519 -0.195090 -0.693519 +v -0.653281 -0.382683 -0.653281 +v -0.587937 -0.555570 -0.587937 +v -0.500000 -0.707107 -0.500000 +v -0.392847 -0.831470 -0.392847 +v -0.270598 -0.923880 -0.270598 +v -0.137950 -0.980785 -0.137949 +v -0.108386 0.980785 -0.162211 +v -0.212607 0.923880 -0.318189 +v -0.308658 0.831470 -0.461939 +v -0.392847 0.707107 -0.587937 +v -0.461939 0.555570 -0.691341 +v -0.513280 0.382683 -0.768177 +v -0.544895 0.195090 -0.815492 +v -0.555570 0.000000 -0.831469 +v -0.544895 -0.195090 -0.815492 +v -0.513280 -0.382683 -0.768177 +v -0.461939 -0.555570 -0.691341 +v -0.392847 -0.707107 -0.587937 +v -0.308658 -0.831470 -0.461939 +v -0.212607 -0.923880 -0.318189 +v -0.108386 -0.980785 -0.162211 +v -0.074658 0.980785 -0.180240 +v -0.146447 0.923880 -0.353553 +v -0.212607 0.831470 -0.513280 +v -0.270598 0.707107 -0.653281 +v -0.318189 0.555570 -0.768177 +v -0.353553 0.382683 -0.853553 +v -0.375330 0.195090 -0.906127 +v -0.382683 0.000000 -0.923879 +v -0.375330 -0.195090 -0.906127 +v -0.353553 -0.382683 -0.853553 +v -0.318189 -0.555570 -0.768177 +v -0.270598 -0.707107 -0.653281 +v -0.212607 -0.831470 -0.513279 +v -0.146446 -0.923880 -0.353553 +v -0.074658 -0.980785 -0.180240 +v -0.038060 0.980785 -0.191342 +v -0.074658 0.923880 -0.375330 +v -0.108386 0.831470 -0.544895 +v -0.137950 0.707107 -0.693520 +v -0.162211 0.555570 -0.815492 +v -0.180240 0.382683 -0.906127 +v -0.191341 0.195090 -0.961939 +v -0.195090 0.000000 -0.980785 +v -0.191341 -0.195090 -0.961939 +v -0.180240 -0.382683 -0.906127 +v -0.162211 -0.555570 -0.815492 +v -0.137950 -0.707107 -0.693520 +v -0.108386 -0.831470 -0.544895 +v -0.074658 -0.923880 -0.375330 +v -0.038060 -0.980785 -0.191341 +v 0.000000 -0.382683 -0.923879 +v 0.000000 -0.555570 -0.831469 +v 0.000000 -0.707107 -0.707106 +v 0.000000 -0.923880 -0.382683 +v 0.000000 -0.980785 -0.195090 +vt 0.750000 0.500000 +vt 0.750000 0.562500 +vt 0.718750 0.562500 +vt 0.718750 0.500000 +vt 0.750000 0.937500 +vt 0.734375 1.000000 +vt 0.718750 0.937500 +vt 0.734375 0.000000 +vt 0.750000 0.062500 +vt 0.718750 0.062500 +vt 0.750000 0.437500 +vt 0.718750 0.437500 +vt 0.750000 0.875000 +vt 0.718750 0.875000 +vt 0.750000 0.375000 +vt 0.718750 0.375000 +vt 0.750000 0.812500 +vt 0.718750 0.812500 +vt 0.750000 0.312500 +vt 0.718750 0.312500 +vt 0.750000 0.750000 +vt 0.718750 0.750000 +vt 0.750000 0.250000 +vt 0.718750 0.250000 +vt 0.750000 0.687500 +vt 0.718750 0.687500 +vt 0.750000 0.187500 +vt 0.718750 0.187500 +vt 0.750000 0.625000 +vt 0.718750 0.625000 +vt 0.750000 0.125000 +vt 0.718750 0.125000 +vt 0.687500 0.625000 +vt 0.687500 0.562500 +vt 0.687500 0.125000 +vt 0.687500 0.062500 +vt 0.687500 0.500000 +vt 0.703125 1.000000 +vt 0.687500 0.937500 +vt 0.703125 0.000000 +vt 0.687500 0.437500 +vt 0.687500 0.875000 +vt 0.687500 0.375000 +vt 0.687500 0.812500 +vt 0.687500 0.312500 +vt 0.687500 0.750000 +vt 0.687500 0.250000 +vt 0.687500 0.687500 +vt 0.687500 0.187500 +vt 0.656250 0.375000 +vt 0.656250 0.312500 +vt 0.656250 0.812500 +vt 0.656250 0.750000 +vt 0.656250 0.250000 +vt 0.656250 0.687500 +vt 0.656250 0.187500 +vt 0.656250 0.625000 +vt 0.656250 0.125000 +vt 0.656250 0.562500 +vt 0.656250 0.062500 +vt 0.656250 0.500000 +vt 0.671875 1.000000 +vt 0.656250 0.937500 +vt 0.671875 0.000000 +vt 0.656250 0.437500 +vt 0.656250 0.875000 +vt 0.625000 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.562500 +vt 0.625000 0.500000 +vt 0.640625 1.000000 +vt 0.625000 0.937500 +vt 0.640625 0.000000 +vt 0.625000 0.437500 +vt 0.625000 0.875000 +vt 0.625000 0.375000 +vt 0.625000 0.812500 +vt 0.625000 0.312500 +vt 0.625000 0.750000 +vt 0.625000 0.250000 +vt 0.625000 0.687500 +vt 0.625000 0.187500 +vt 0.625000 0.625000 +vt 0.593750 0.812500 +vt 0.593750 0.750000 +vt 0.593750 0.312500 +vt 0.593750 0.250000 +vt 0.593750 0.687500 +vt 0.593750 0.187500 +vt 0.593750 0.625000 +vt 0.593750 0.125000 +vt 0.593750 0.562500 +vt 0.593750 0.062500 +vt 0.593750 0.500000 +vt 0.609375 1.000000 +vt 0.593750 0.937500 +vt 0.609375 0.000000 +vt 0.593750 0.437500 +vt 0.593750 0.875000 +vt 0.593750 0.375000 +vt 0.562500 0.562500 +vt 0.562500 0.500000 +vt 0.578125 1.000000 +vt 0.562500 0.937500 +vt 0.578125 0.000000 +vt 0.562500 0.062500 +vt 0.562500 0.437500 +vt 0.562500 0.875000 +vt 0.562500 0.375000 +vt 0.562500 0.812500 +vt 0.562500 0.312500 +vt 0.562500 0.750000 +vt 0.562500 0.250000 +vt 0.562500 0.687500 +vt 0.562500 0.187500 +vt 0.562500 0.625000 +vt 0.562500 0.125000 +vt 0.531250 0.312500 +vt 0.531250 0.250000 +vt 0.531250 0.750000 +vt 0.531250 0.687500 +vt 0.531250 0.187500 +vt 0.531250 0.625000 +vt 0.531250 0.125000 +vt 0.531250 0.562500 +vt 0.531250 0.062500 +vt 0.531250 0.500000 +vt 0.546875 1.000000 +vt 0.531250 0.937500 +vt 0.546875 0.000000 +vt 0.531250 0.437500 +vt 0.531250 0.875000 +vt 0.531250 0.375000 +vt 0.531250 0.812500 +vt 0.515625 0.000000 +vt 0.500000 0.062500 +vt 0.500000 0.500000 +vt 0.500000 0.437500 +vt 0.500000 0.937500 +vt 0.500000 0.875000 +vt 0.500000 0.375000 +vt 0.500000 0.812500 +vt 0.500000 0.312500 +vt 0.500000 0.750000 +vt 0.500000 0.250000 +vt 0.500000 0.687500 +vt 0.500000 0.187500 +vt 0.500000 0.625000 +vt 0.500000 0.125000 +vt 0.500000 0.562500 +vt 0.515625 1.000000 +vt 0.468750 0.250000 +vt 0.468750 0.187500 +vt 0.468750 0.687500 +vt 0.468750 0.625000 +vt 0.468750 0.125000 +vt 0.468750 0.562500 +vt 0.468750 0.062500 +vt 0.468750 0.500000 +vt 0.484374 1.000000 +vt 0.468750 0.937500 +vt 0.484375 0.000000 +vt 0.468750 0.437500 +vt 0.468750 0.875000 +vt 0.468750 0.375000 +vt 0.468750 0.812500 +vt 0.468750 0.312500 +vt 0.468750 0.750000 +vt 0.437500 0.937500 +vt 0.437500 0.875000 +vt 0.437500 0.437500 +vt 0.437500 0.375000 +vt 0.437500 0.812500 +vt 0.437500 0.312500 +vt 0.437500 0.750000 +vt 0.437500 0.250000 +vt 0.437500 0.687500 +vt 0.437500 0.187500 +vt 0.437500 0.625000 +vt 0.437500 0.125000 +vt 0.437500 0.562500 +vt 0.437500 0.062500 +vt 0.437500 0.500000 +vt 0.453124 1.000000 +vt 0.453125 0.000000 +vt 0.406250 0.687500 +vt 0.406250 0.625000 +vt 0.406250 0.187500 +vt 0.406250 0.125000 +vt 0.406250 0.562500 +vt 0.406250 0.062500 +vt 0.406250 0.500000 +vt 0.421874 1.000000 +vt 0.406250 0.937500 +vt 0.421875 0.000000 +vt 0.406250 0.437500 +vt 0.406250 0.875000 +vt 0.406250 0.375000 +vt 0.406250 0.812500 +vt 0.406250 0.312500 +vt 0.406250 0.750000 +vt 0.406250 0.250000 +vt 0.375000 0.437500 +vt 0.375000 0.375000 +vt 0.375000 0.875000 +vt 0.375000 0.812500 +vt 0.375000 0.312500 +vt 0.375000 0.750000 +vt 0.375000 0.250000 +vt 0.375000 0.687500 +vt 0.375000 0.187500 +vt 0.375000 0.625000 +vt 0.375000 0.125000 +vt 0.375000 0.562500 +vt 0.375000 0.062500 +vt 0.375000 0.500000 +vt 0.390625 1.000000 +vt 0.375000 0.937500 +vt 0.390625 0.000000 +vt 0.343750 0.187500 +vt 0.343750 0.125000 +vt 0.343750 0.625000 +vt 0.343750 0.562500 +vt 0.343750 0.062500 +vt 0.343750 0.500000 +vt 0.359375 1.000000 +vt 0.343750 0.937500 +vt 0.359375 0.000000 +vt 0.343750 0.437500 +vt 0.343750 0.875000 +vt 0.343750 0.375000 +vt 0.343750 0.812500 +vt 0.343750 0.312500 +vt 0.343750 0.750000 +vt 0.343750 0.250000 +vt 0.343750 0.687500 +vt 0.312500 0.875000 +vt 0.312500 0.812500 +vt 0.312500 0.375000 +vt 0.312500 0.312500 +vt 0.312500 0.750000 +vt 0.312500 0.250000 +vt 0.312500 0.687500 +vt 0.312500 0.187500 +vt 0.312500 0.625000 +vt 0.312500 0.125000 +vt 0.312500 0.562500 +vt 0.312500 0.062500 +vt 0.312500 0.500000 +vt 0.328125 1.000000 +vt 0.312500 0.937500 +vt 0.328125 0.000000 +vt 0.312500 0.437500 +vt 0.281250 0.625000 +vt 0.281250 0.562500 +vt 0.281250 0.125000 +vt 0.281250 0.062500 +vt 0.281250 0.500000 +vt 0.296875 1.000000 +vt 0.281250 0.937500 +vt 0.296875 0.000000 +vt 0.281250 0.437500 +vt 0.281250 0.875000 +vt 0.281250 0.375000 +vt 0.281250 0.812500 +vt 0.281250 0.312500 +vt 0.281250 0.750000 +vt 0.281250 0.250000 +vt 0.281250 0.687500 +vt 0.281250 0.187500 +vt 0.250000 0.375000 +vt 0.250000 0.312500 +vt 0.250000 0.812500 +vt 0.250000 0.750000 +vt 0.250000 0.250000 +vt 0.250000 0.687500 +vt 0.250000 0.187500 +vt 0.250000 0.625000 +vt 0.250000 0.125000 +vt 0.250000 0.562500 +vt 0.250000 0.062500 +vt 0.250000 0.500000 +vt 0.265625 1.000000 +vt 0.250000 0.937500 +vt 0.265625 0.000000 +vt 0.250000 0.437500 +vt 0.250000 0.875000 +vt 0.218750 0.125000 +vt 0.218750 0.062500 +vt 0.218750 0.562500 +vt 0.218750 0.500000 +vt 0.234375 1.000000 +vt 0.218750 0.937500 +vt 0.234375 0.000000 +vt 0.218750 0.437500 +vt 0.218750 0.875000 +vt 0.218750 0.375000 +vt 0.218750 0.812500 +vt 0.218750 0.312500 +vt 0.218750 0.750000 +vt 0.218750 0.250000 +vt 0.218750 0.687500 +vt 0.218750 0.187500 +vt 0.218750 0.625000 +vt 0.187500 0.312500 +vt 0.187500 0.250000 +vt 0.187500 0.750000 +vt 0.187500 0.687500 +vt 0.187500 0.187500 +vt 0.187500 0.625000 +vt 0.187500 0.125000 +vt 0.187500 0.562500 +vt 0.187500 0.062500 +vt 0.187500 0.500000 +vt 0.203125 1.000000 +vt 0.187500 0.937500 +vt 0.203125 0.000000 +vt 0.187500 0.437500 +vt 0.187500 0.875000 +vt 0.187500 0.375000 +vt 0.187500 0.812500 +vt 0.171875 1.000000 +vt 0.156250 0.937500 +vt 0.171875 0.000000 +vt 0.156250 0.062500 +vt 0.156250 0.500000 +vt 0.156250 0.437500 +vt 0.156250 0.875000 +vt 0.156250 0.375000 +vt 0.156250 0.812500 +vt 0.156250 0.312500 +vt 0.156250 0.750000 +vt 0.156250 0.250000 +vt 0.156250 0.687500 +vt 0.156250 0.187500 +vt 0.156250 0.625000 +vt 0.156250 0.125000 +vt 0.156250 0.562500 +vt 0.125000 0.750000 +vt 0.125000 0.687500 +vt 0.125000 0.250000 +vt 0.125000 0.187500 +vt 0.125000 0.625000 +vt 0.125000 0.125000 +vt 0.125000 0.562500 +vt 0.125000 0.062500 +vt 0.125000 0.500000 +vt 0.140625 1.000000 +vt 0.125000 0.937500 +vt 0.140625 0.000000 +vt 0.125000 0.437500 +vt 0.125000 0.875000 +vt 0.125000 0.375000 +vt 0.125000 0.812500 +vt 0.125000 0.312500 +vt 0.093750 0.500000 +vt 0.093750 0.437500 +vt 0.093750 0.937500 +vt 0.093750 0.875000 +vt 0.093750 0.375000 +vt 0.093750 0.812500 +vt 0.093750 0.312500 +vt 0.093750 0.750000 +vt 0.093750 0.250000 +vt 0.093750 0.687500 +vt 0.093750 0.187500 +vt 0.093750 0.625000 +vt 0.093750 0.125000 +vt 0.093750 0.562500 +vt 0.093750 0.062500 +vt 0.109375 1.000000 +vt 0.109375 0.000000 +vt 0.062500 0.250000 +vt 0.062500 0.187500 +vt 0.062500 0.687500 +vt 0.062500 0.625000 +vt 0.062500 0.125000 +vt 0.062500 0.562500 +vt 0.062500 0.062500 +vt 0.062500 0.500000 +vt 0.078125 1.000000 +vt 0.062500 0.937500 +vt 0.078125 0.000000 +vt 0.062500 0.437500 +vt 0.062500 0.875000 +vt 0.062500 0.375000 +vt 0.062500 0.812500 +vt 0.062500 0.312500 +vt 0.062500 0.750000 +vt 0.031250 0.937500 +vt 0.031250 0.875000 +vt 0.031250 0.437500 +vt 0.031250 0.375000 +vt 0.031250 0.812500 +vt 0.031250 0.312500 +vt 0.031250 0.750000 +vt 0.031250 0.250000 +vt 0.031250 0.687500 +vt 0.031250 0.187500 +vt 0.031250 0.625000 +vt 0.031250 0.125000 +vt 0.031250 0.562500 +vt 0.031250 0.062500 +vt 0.031250 0.500000 +vt 0.046875 1.000000 +vt 0.046875 0.000000 +vt 0.000000 0.687500 +vt 0.000000 0.625000 +vt 0.000000 0.187500 +vt 0.000000 0.125000 +vt 0.000000 0.562500 +vt 0.000000 0.062500 +vt 0.000000 0.500000 +vt 0.015625 1.000000 +vt 0.000000 0.937500 +vt 0.015625 0.000000 +vt 0.000000 0.437500 +vt 0.000000 0.875000 +vt 0.000000 0.375000 +vt 0.000000 0.812500 +vt 0.000000 0.312500 +vt 0.000000 0.750000 +vt 0.000000 0.250000 +vt 1.000000 0.375000 +vt 1.000000 0.437500 +vt 0.968750 0.437500 +vt 0.968750 0.375000 +vt 1.000000 0.812500 +vt 1.000000 0.875000 +vt 0.968750 0.875000 +vt 0.968750 0.812500 +vt 1.000000 0.312500 +vt 0.968750 0.312500 +vt 1.000000 0.750000 +vt 0.968750 0.750000 +vt 1.000000 0.250000 +vt 0.968750 0.250000 +vt 1.000000 0.687500 +vt 0.968750 0.687500 +vt 1.000000 0.187500 +vt 0.968750 0.187500 +vt 1.000000 0.625000 +vt 0.968750 0.625000 +vt 1.000000 0.125000 +vt 0.968750 0.125000 +vt 1.000000 0.562500 +vt 0.968750 0.562500 +vt 1.000000 0.062500 +vt 0.968750 0.062500 +vt 1.000000 0.500000 +vt 0.968750 0.500000 +vt 1.000000 0.937500 +vt 0.984375 1.000000 +vt 0.968750 0.937500 +vt 0.984375 0.000000 +vt 0.937500 0.187500 +vt 0.937500 0.125000 +vt 0.937500 0.625000 +vt 0.937500 0.562500 +vt 0.937500 0.062500 +vt 0.937500 0.500000 +vt 0.953125 1.000000 +vt 0.937500 0.937500 +vt 0.953125 0.000000 +vt 0.937500 0.437500 +vt 0.937500 0.875000 +vt 0.937500 0.375000 +vt 0.937500 0.812500 +vt 0.937500 0.312500 +vt 0.937500 0.750000 +vt 0.937500 0.250000 +vt 0.937500 0.687500 +vt 0.906250 0.375000 +vt 0.906250 0.312500 +vt 0.906250 0.812500 +vt 0.906250 0.750000 +vt 0.906250 0.250000 +vt 0.906250 0.687500 +vt 0.906250 0.187500 +vt 0.906250 0.625000 +vt 0.906250 0.125000 +vt 0.906250 0.562500 +vt 0.906250 0.062500 +vt 0.906250 0.500000 +vt 0.921875 1.000000 +vt 0.906250 0.937500 +vt 0.921875 0.000000 +vt 0.906250 0.437500 +vt 0.906250 0.875000 +vt 0.875000 0.125000 +vt 0.875000 0.062500 +vt 0.875000 0.562500 +vt 0.875000 0.500000 +vt 0.890625 1.000000 +vt 0.875000 0.937500 +vt 0.890625 0.000000 +vt 0.875000 0.437500 +vt 0.875000 0.875000 +vt 0.875000 0.375000 +vt 0.875000 0.812500 +vt 0.875000 0.312500 +vt 0.875000 0.750000 +vt 0.875000 0.250000 +vt 0.875000 0.687500 +vt 0.875000 0.187500 +vt 0.875000 0.625000 +vt 0.843750 0.812500 +vt 0.843750 0.750000 +vt 0.843750 0.312500 +vt 0.843750 0.250000 +vt 0.843750 0.687500 +vt 0.843750 0.187500 +vt 0.843750 0.625000 +vt 0.843750 0.125000 +vt 0.843750 0.562500 +vt 0.843750 0.062500 +vt 0.843750 0.500000 +vt 0.859375 1.000000 +vt 0.843750 0.937500 +vt 0.859375 0.000000 +vt 0.843750 0.437500 +vt 0.843750 0.875000 +vt 0.843750 0.375000 +vt 0.812500 0.562500 +vt 0.812500 0.500000 +vt 0.828125 1.000000 +vt 0.812500 0.937500 +vt 0.828125 0.000000 +vt 0.812500 0.062500 +vt 0.812500 0.437500 +vt 0.812500 0.875000 +vt 0.812500 0.375000 +vt 0.812500 0.812500 +vt 0.812500 0.312500 +vt 0.812500 0.750000 +vt 0.812500 0.250000 +vt 0.812500 0.687500 +vt 0.812500 0.187500 +vt 0.812500 0.625000 +vt 0.812500 0.125000 +vt 0.781250 0.312500 +vt 0.781250 0.250000 +vt 0.781250 0.750000 +vt 0.781250 0.687500 +vt 0.781250 0.187500 +vt 0.781250 0.625000 +vt 0.781250 0.125000 +vt 0.781250 0.562500 +vt 0.781250 0.062500 +vt 0.781250 0.500000 +vt 0.796875 1.000000 +vt 0.781250 0.937500 +vt 0.796875 0.000000 +vt 0.781250 0.437500 +vt 0.781250 0.875000 +vt 0.781250 0.375000 +vt 0.781250 0.812500 +vt 0.765625 1.000000 +vt 0.765625 0.000000 +vn 0.0975 0.0975 -0.9904 +vn 0.0097 0.9951 -0.0980 +vn 0.0097 -0.9951 -0.0980 +vn 0.0976 -0.0975 -0.9904 +vn 0.0286 0.9565 -0.2902 +vn 0.0938 -0.2890 -0.9527 +vn 0.0464 0.8810 -0.4709 +vn 0.0865 -0.4696 -0.8786 +vn 0.0624 0.7715 -0.6332 +vn 0.0759 -0.6326 -0.7708 +vn 0.0759 0.6326 -0.7708 +vn 0.0624 -0.7715 -0.6332 +vn 0.0865 0.4696 -0.8786 +vn 0.0464 -0.8810 -0.4709 +vn 0.0938 0.2890 -0.9527 +vn 0.0286 -0.9565 -0.2902 +vn 0.2779 0.2890 -0.9161 +vn 0.0846 -0.9565 -0.2790 +vn 0.2889 0.0975 -0.9524 +vn 0.0286 0.9951 -0.0942 +vn 0.0286 -0.9951 -0.0942 +vn 0.2889 -0.0975 -0.9524 +vn 0.0846 0.9565 -0.2790 +vn 0.2779 -0.2890 -0.9161 +vn 0.1374 0.8810 -0.4528 +vn 0.2563 -0.4696 -0.8448 +vn 0.1847 0.7715 -0.6088 +vn 0.2248 -0.6326 -0.7412 +vn 0.2248 0.6326 -0.7412 +vn 0.1847 -0.7715 -0.6088 +vn 0.2563 0.4696 -0.8448 +vn 0.1374 -0.8810 -0.4528 +vn 0.4162 -0.4696 -0.7786 +vn 0.2999 0.7715 -0.5611 +vn 0.3651 -0.6326 -0.6831 +vn 0.3651 0.6326 -0.6831 +vn 0.2999 -0.7715 -0.5611 +vn 0.4162 0.4696 -0.7786 +vn 0.2230 -0.8810 -0.4173 +vn 0.4513 0.2890 -0.8443 +vn 0.1374 -0.9565 -0.2571 +vn 0.4691 0.0975 -0.8777 +vn 0.0464 0.9951 -0.0869 +vn 0.0464 -0.9951 -0.0869 +vn 0.4691 -0.0975 -0.8777 +vn 0.1374 0.9565 -0.2571 +vn 0.4513 -0.2890 -0.8443 +vn 0.2230 0.8810 -0.4173 +vn 0.1850 -0.9565 -0.2254 +vn 0.6314 0.0976 -0.7693 +vn 0.0625 0.9951 -0.0761 +vn 0.0625 -0.9951 -0.0761 +vn 0.6314 -0.0976 -0.7693 +vn 0.1850 0.9565 -0.2254 +vn 0.6073 -0.2890 -0.7400 +vn 0.3002 0.8810 -0.3658 +vn 0.5601 -0.4696 -0.6825 +vn 0.4036 0.7715 -0.4918 +vn 0.4913 -0.6326 -0.5987 +vn 0.4913 0.6326 -0.5987 +vn 0.4036 -0.7715 -0.4918 +vn 0.5601 0.4696 -0.6825 +vn 0.3002 -0.8810 -0.3658 +vn 0.6073 0.2890 -0.7400 +vn 0.4918 0.7715 -0.4036 +vn 0.5987 -0.6326 -0.4913 +vn 0.5987 0.6326 -0.4913 +vn 0.4918 -0.7715 -0.4036 +vn 0.6825 0.4696 -0.5601 +vn 0.3658 -0.8810 -0.3002 +vn 0.7400 0.2890 -0.6073 +vn 0.2254 -0.9565 -0.1850 +vn 0.7693 0.0975 -0.6314 +vn 0.0761 0.9951 -0.0625 +vn 0.0761 -0.9951 -0.0625 +vn 0.7693 -0.0975 -0.6314 +vn 0.2254 0.9565 -0.1850 +vn 0.7400 -0.2890 -0.6073 +vn 0.3658 0.8810 -0.3002 +vn 0.6825 -0.4696 -0.5601 +vn 0.8777 0.0976 -0.4691 +vn 0.0869 0.9951 -0.0464 +vn 0.0869 -0.9951 -0.0464 +vn 0.8777 -0.0976 -0.4691 +vn 0.2571 0.9565 -0.1374 +vn 0.8443 -0.2890 -0.4513 +vn 0.4173 0.8810 -0.2231 +vn 0.7786 -0.4696 -0.4162 +vn 0.5611 0.7715 -0.2999 +vn 0.6831 -0.6326 -0.3651 +vn 0.6831 0.6326 -0.3651 +vn 0.5611 -0.7715 -0.2999 +vn 0.7786 0.4696 -0.4162 +vn 0.4173 -0.8810 -0.2231 +vn 0.8443 0.2890 -0.4513 +vn 0.2571 -0.9565 -0.1374 +vn 0.7412 -0.6326 -0.2248 +vn 0.7412 0.6326 -0.2248 +vn 0.6088 -0.7715 -0.1847 +vn 0.8448 0.4696 -0.2563 +vn 0.4528 -0.8810 -0.1374 +vn 0.9161 0.2890 -0.2779 +vn 0.2790 -0.9565 -0.0846 +vn 0.9524 0.0976 -0.2889 +vn 0.0942 0.9951 -0.0286 +vn 0.0942 -0.9951 -0.0286 +vn 0.9524 -0.0976 -0.2889 +vn 0.2790 0.9565 -0.0846 +vn 0.9161 -0.2890 -0.2779 +vn 0.4528 0.8810 -0.1374 +vn 0.8448 -0.4696 -0.2563 +vn 0.6088 0.7715 -0.1847 +vn 0.0980 -0.9951 -0.0097 +vn 0.9904 -0.0976 -0.0975 +vn 0.2902 0.9565 -0.0286 +vn 0.9527 -0.2890 -0.0938 +vn 0.4709 0.8810 -0.0464 +vn 0.8786 -0.4696 -0.0865 +vn 0.6332 0.7715 -0.0624 +vn 0.7708 -0.6326 -0.0759 +vn 0.7708 0.6326 -0.0759 +vn 0.6332 -0.7715 -0.0624 +vn 0.8786 0.4696 -0.0865 +vn 0.4709 -0.8810 -0.0464 +vn 0.9527 0.2890 -0.0938 +vn 0.2902 -0.9565 -0.0286 +vn 0.9904 0.0976 -0.0975 +vn 0.0980 0.9951 -0.0097 +vn 0.6332 -0.7715 0.0624 +vn 0.8786 0.4696 0.0865 +vn 0.4709 -0.8810 0.0464 +vn 0.9527 0.2890 0.0938 +vn 0.2902 -0.9565 0.0286 +vn 0.9904 0.0976 0.0975 +vn 0.0980 0.9951 0.0097 +vn 0.0980 -0.9951 0.0097 +vn 0.9904 -0.0976 0.0975 +vn 0.2902 0.9565 0.0286 +vn 0.9527 -0.2890 0.0938 +vn 0.4709 0.8810 0.0464 +vn 0.8786 -0.4696 0.0865 +vn 0.6332 0.7715 0.0624 +vn 0.7708 -0.6326 0.0759 +vn 0.7708 0.6326 0.0759 +vn 0.2790 0.9565 0.0846 +vn 0.9161 -0.2890 0.2779 +vn 0.4528 0.8810 0.1374 +vn 0.8448 -0.4696 0.2563 +vn 0.6088 0.7715 0.1847 +vn 0.7412 -0.6326 0.2248 +vn 0.7412 0.6326 0.2248 +vn 0.6088 -0.7715 0.1847 +vn 0.8448 0.4696 0.2563 +vn 0.4528 -0.8810 0.1374 +vn 0.9161 0.2890 0.2779 +vn 0.2790 -0.9565 0.0846 +vn 0.9524 0.0976 0.2889 +vn 0.0942 0.9951 0.0286 +vn 0.0942 -0.9951 0.0286 +vn 0.9524 -0.0976 0.2889 +vn 0.7786 0.4696 0.4162 +vn 0.4173 -0.8810 0.2231 +vn 0.8443 0.2890 0.4513 +vn 0.2571 -0.9565 0.1374 +vn 0.8777 0.0976 0.4691 +vn 0.0869 0.9951 0.0464 +vn 0.0869 -0.9951 0.0464 +vn 0.8777 -0.0976 0.4691 +vn 0.2571 0.9565 0.1374 +vn 0.8443 -0.2890 0.4513 +vn 0.4173 0.8810 0.2231 +vn 0.7786 -0.4696 0.4162 +vn 0.5611 0.7715 0.2999 +vn 0.6831 -0.6326 0.3651 +vn 0.6831 0.6326 0.3651 +vn 0.5611 -0.7715 0.2999 +vn 0.7400 -0.2890 0.6073 +vn 0.3658 0.8810 0.3002 +vn 0.6825 -0.4696 0.5601 +vn 0.4918 0.7715 0.4036 +vn 0.5987 -0.6326 0.4913 +vn 0.5987 0.6326 0.4913 +vn 0.4918 -0.7715 0.4036 +vn 0.6825 0.4696 0.5601 +vn 0.3658 -0.8810 0.3002 +vn 0.7400 0.2890 0.6073 +vn 0.2254 -0.9565 0.1850 +vn 0.7693 0.0976 0.6314 +vn 0.0761 0.9951 0.0625 +vn 0.0761 -0.9951 0.0625 +vn 0.7693 -0.0976 0.6314 +vn 0.2254 0.9565 0.1850 +vn 0.3002 -0.8810 0.3658 +vn 0.6073 0.2890 0.7400 +vn 0.1850 -0.9565 0.2254 +vn 0.6314 0.0976 0.7693 +vn 0.0625 0.9951 0.0761 +vn 0.0625 -0.9951 0.0761 +vn 0.6314 -0.0976 0.7693 +vn 0.1850 0.9565 0.2254 +vn 0.6073 -0.2890 0.7400 +vn 0.3002 0.8810 0.3658 +vn 0.5601 -0.4696 0.6825 +vn 0.4036 0.7715 0.4918 +vn 0.4913 -0.6326 0.5987 +vn 0.4913 0.6326 0.5987 +vn 0.4036 -0.7715 0.4918 +vn 0.5601 0.4696 0.6825 +vn 0.2230 0.8810 0.4173 +vn 0.4162 -0.4696 0.7786 +vn 0.2999 0.7715 0.5611 +vn 0.3651 -0.6326 0.6831 +vn 0.3651 0.6326 0.6831 +vn 0.2999 -0.7715 0.5611 +vn 0.4162 0.4696 0.7786 +vn 0.2230 -0.8810 0.4173 +vn 0.4513 0.2890 0.8443 +vn 0.1374 -0.9565 0.2571 +vn 0.4691 0.0976 0.8777 +vn 0.0464 0.9951 0.0869 +vn 0.0464 -0.9951 0.0869 +vn 0.4691 -0.0976 0.8777 +vn 0.1374 0.9565 0.2571 +vn 0.4513 -0.2890 0.8443 +vn 0.2779 0.2890 0.9161 +vn 0.0846 -0.9565 0.2790 +vn 0.2889 0.0976 0.9524 +vn 0.0286 0.9951 0.0942 +vn 0.0286 -0.9951 0.0942 +vn 0.2889 -0.0976 0.9524 +vn 0.0846 0.9565 0.2790 +vn 0.2779 -0.2890 0.9161 +vn 0.1374 0.8810 0.4528 +vn 0.2563 -0.4696 0.8448 +vn 0.1847 0.7715 0.6088 +vn 0.2248 -0.6326 0.7412 +vn 0.2248 0.6326 0.7412 +vn 0.1847 -0.7715 0.6088 +vn 0.2563 0.4696 0.8448 +vn 0.1374 -0.8810 0.4528 +vn 0.0865 -0.4696 0.8786 +vn 0.0624 0.7715 0.6332 +vn 0.0759 -0.6326 0.7708 +vn 0.0759 0.6326 0.7708 +vn 0.0624 -0.7715 0.6332 +vn 0.0865 0.4696 0.8786 +vn 0.0464 -0.8810 0.4709 +vn 0.0938 0.2890 0.9527 +vn 0.0286 -0.9565 0.2902 +vn 0.0975 0.0976 0.9904 +vn 0.0097 0.9951 0.0980 +vn 0.0097 -0.9951 0.0980 +vn 0.0975 -0.0976 0.9904 +vn 0.0286 0.9565 0.2902 +vn 0.0938 -0.2890 0.9527 +vn 0.0464 0.8810 0.4709 +vn -0.0286 -0.9565 0.2902 +vn -0.0976 0.0976 0.9904 +vn -0.0097 0.9951 0.0980 +vn -0.0097 -0.9951 0.0980 +vn -0.0976 -0.0976 0.9904 +vn -0.0286 0.9565 0.2902 +vn -0.0938 -0.2890 0.9527 +vn -0.0464 0.8810 0.4709 +vn -0.0865 -0.4696 0.8786 +vn -0.0624 0.7715 0.6332 +vn -0.0759 -0.6326 0.7708 +vn -0.0759 0.6326 0.7708 +vn -0.0624 -0.7715 0.6332 +vn -0.0865 0.4696 0.8786 +vn -0.0464 -0.8810 0.4709 +vn -0.0938 0.2890 0.9527 +vn -0.2248 -0.6326 0.7412 +vn -0.2248 0.6326 0.7412 +vn -0.1847 -0.7715 0.6088 +vn -0.2563 0.4696 0.8448 +vn -0.1374 -0.8810 0.4528 +vn -0.2779 0.2890 0.9161 +vn -0.0846 -0.9565 0.2790 +vn -0.2889 0.0976 0.9524 +vn -0.0286 0.9951 0.0942 +vn -0.0286 -0.9951 0.0942 +vn -0.2889 -0.0976 0.9524 +vn -0.0846 0.9565 0.2790 +vn -0.2779 -0.2890 0.9161 +vn -0.1374 0.8810 0.4528 +vn -0.2563 -0.4696 0.8448 +vn -0.1847 0.7715 0.6088 +vn -0.0464 0.9951 0.0869 +vn -0.0464 -0.9951 0.0869 +vn -0.4691 -0.0976 0.8777 +vn -0.1374 0.9565 0.2571 +vn -0.4513 -0.2890 0.8443 +vn -0.2230 0.8810 0.4173 +vn -0.4162 -0.4696 0.7786 +vn -0.2999 0.7715 0.5611 +vn -0.3651 -0.6326 0.6831 +vn -0.3651 0.6326 0.6831 +vn -0.2999 -0.7715 0.5611 +vn -0.4162 0.4696 0.7786 +vn -0.2230 -0.8810 0.4173 +vn -0.4513 0.2890 0.8443 +vn -0.1374 -0.9565 0.2571 +vn -0.4691 0.0976 0.8777 +vn -0.4913 0.6326 0.5987 +vn -0.4036 -0.7715 0.4918 +vn -0.5601 0.4696 0.6825 +vn -0.3002 -0.8810 0.3658 +vn -0.6073 0.2890 0.7400 +vn -0.1850 -0.9565 0.2254 +vn -0.6314 0.0976 0.7693 +vn -0.0625 0.9951 0.0761 +vn -0.0625 -0.9951 0.0761 +vn -0.6314 -0.0976 0.7693 +vn -0.1850 0.9565 0.2254 +vn -0.6073 -0.2890 0.7400 +vn -0.3002 0.8810 0.3658 +vn -0.5601 -0.4696 0.6825 +vn -0.4036 0.7715 0.4918 +vn -0.4913 -0.6326 0.5987 +vn -0.7693 -0.0976 0.6314 +vn -0.2254 0.9565 0.1850 +vn -0.7400 -0.2890 0.6073 +vn -0.3658 0.8810 0.3002 +vn -0.6825 -0.4696 0.5601 +vn -0.4918 0.7715 0.4036 +vn -0.5987 -0.6326 0.4913 +vn -0.5987 0.6326 0.4913 +vn -0.4918 -0.7715 0.4036 +vn -0.6825 0.4696 0.5601 +vn -0.3658 -0.8810 0.3002 +vn -0.7400 0.2890 0.6073 +vn -0.2254 -0.9565 0.1850 +vn -0.7693 0.0976 0.6314 +vn -0.0761 0.9951 0.0625 +vn -0.0761 -0.9951 0.0625 +vn -0.5611 -0.7715 0.2999 +vn -0.7786 0.4696 0.4162 +vn -0.4173 -0.8810 0.2231 +vn -0.8443 0.2890 0.4513 +vn -0.2571 -0.9565 0.1374 +vn -0.8777 0.0976 0.4691 +vn -0.0869 0.9951 0.0464 +vn -0.0869 -0.9951 0.0464 +vn -0.8777 -0.0976 0.4691 +vn -0.2571 0.9565 0.1374 +vn -0.8443 -0.2890 0.4513 +vn -0.4173 0.8810 0.2231 +vn -0.7786 -0.4696 0.4162 +vn -0.5611 0.7715 0.2999 +vn -0.6831 -0.6326 0.3651 +vn -0.6831 0.6326 0.3651 +vn -0.2790 0.9565 0.0846 +vn -0.9161 -0.2890 0.2779 +vn -0.4528 0.8810 0.1374 +vn -0.8448 -0.4696 0.2563 +vn -0.6088 0.7715 0.1847 +vn -0.7412 -0.6326 0.2248 +vn -0.7412 0.6326 0.2248 +vn -0.6088 -0.7715 0.1847 +vn -0.8448 0.4696 0.2563 +vn -0.4528 -0.8810 0.1374 +vn -0.9161 0.2890 0.2779 +vn -0.2790 -0.9565 0.0846 +vn -0.9524 0.0976 0.2889 +vn -0.0942 0.9951 0.0286 +vn -0.0942 -0.9951 0.0286 +vn -0.9524 -0.0976 0.2889 +vn -0.8786 0.4696 0.0865 +vn -0.4709 -0.8810 0.0464 +vn -0.9527 0.2890 0.0938 +vn -0.2902 -0.9565 0.0286 +vn -0.9904 0.0976 0.0975 +vn -0.0980 0.9951 0.0097 +vn -0.0980 -0.9951 0.0097 +vn -0.9904 -0.0976 0.0975 +vn -0.2902 0.9565 0.0286 +vn -0.9527 -0.2890 0.0938 +vn -0.4709 0.8810 0.0464 +vn -0.8786 -0.4696 0.0865 +vn -0.6332 0.7715 0.0624 +vn -0.7708 -0.6326 0.0759 +vn -0.7708 0.6326 0.0759 +vn -0.6332 -0.7715 0.0624 +vn -0.9527 -0.2890 -0.0938 +vn -0.4709 0.8810 -0.0464 +vn -0.8786 -0.4696 -0.0865 +vn -0.6332 0.7715 -0.0624 +vn -0.7708 -0.6326 -0.0759 +vn -0.7708 0.6326 -0.0759 +vn -0.6332 -0.7715 -0.0624 +vn -0.8786 0.4696 -0.0865 +vn -0.4709 -0.8810 -0.0464 +vn -0.9527 0.2890 -0.0938 +vn -0.2902 -0.9565 -0.0286 +vn -0.9904 0.0976 -0.0976 +vn -0.0980 0.9951 -0.0097 +vn -0.0980 -0.9951 -0.0097 +vn -0.9904 -0.0976 -0.0976 +vn -0.2902 0.9565 -0.0286 +vn -0.4528 -0.8810 -0.1374 +vn -0.9161 0.2890 -0.2779 +vn -0.2790 -0.9565 -0.0846 +vn -0.9524 0.0976 -0.2889 +vn -0.0942 0.9951 -0.0286 +vn -0.0942 -0.9951 -0.0286 +vn -0.9524 -0.0976 -0.2889 +vn -0.2790 0.9565 -0.0846 +vn -0.9161 -0.2890 -0.2779 +vn -0.4528 0.8810 -0.1374 +vn -0.8448 -0.4696 -0.2563 +vn -0.6088 0.7715 -0.1847 +vn -0.7412 -0.6326 -0.2248 +vn -0.7412 0.6326 -0.2248 +vn -0.6088 -0.7715 -0.1847 +vn -0.8448 0.4696 -0.2563 +vn -0.7786 -0.4696 -0.4162 +vn -0.5611 0.7715 -0.2999 +vn -0.6831 -0.6326 -0.3651 +vn -0.6831 0.6326 -0.3651 +vn -0.5611 -0.7715 -0.2999 +vn -0.7786 0.4696 -0.4162 +vn -0.4173 -0.8810 -0.2231 +vn -0.8443 0.2890 -0.4513 +vn -0.2571 -0.9565 -0.1374 +vn -0.8777 0.0976 -0.4691 +vn -0.0869 0.9951 -0.0464 +vn -0.0869 -0.9951 -0.0464 +vn -0.8777 -0.0976 -0.4691 +vn -0.2571 0.9565 -0.1374 +vn -0.8443 -0.2890 -0.4513 +vn -0.4173 0.8810 -0.2231 +vn -0.2254 -0.9565 -0.1850 +vn -0.7693 0.0976 -0.6314 +vn -0.0761 0.9951 -0.0625 +vn -0.0761 -0.9951 -0.0625 +vn -0.7693 -0.0976 -0.6314 +vn -0.2254 0.9565 -0.1850 +vn -0.7400 -0.2890 -0.6073 +vn -0.3658 0.8810 -0.3002 +vn -0.6825 -0.4696 -0.5601 +vn -0.4918 0.7715 -0.4036 +vn -0.5987 -0.6326 -0.4913 +vn -0.5987 0.6326 -0.4913 +vn -0.4918 -0.7715 -0.4036 +vn -0.6825 0.4696 -0.5601 +vn -0.3658 -0.8810 -0.3002 +vn -0.7400 0.2890 -0.6073 +vn -0.4036 0.7715 -0.4918 +vn -0.4913 -0.6326 -0.5987 +vn -0.4913 0.6326 -0.5987 +vn -0.4036 -0.7715 -0.4918 +vn -0.5601 0.4696 -0.6825 +vn -0.3002 -0.8810 -0.3658 +vn -0.6073 0.2890 -0.7400 +vn -0.1850 -0.9565 -0.2254 +vn -0.6314 0.0976 -0.7693 +vn -0.0625 0.9951 -0.0761 +vn -0.0625 -0.9951 -0.0761 +vn -0.6314 -0.0976 -0.7693 +vn -0.1850 0.9565 -0.2254 +vn -0.6073 -0.2890 -0.7400 +vn -0.3002 0.8810 -0.3658 +vn -0.5601 -0.4696 -0.6825 +vn -0.4691 0.0976 -0.8777 +vn -0.0464 0.9951 -0.0869 +vn -0.0464 -0.9951 -0.0869 +vn -0.4691 -0.0976 -0.8777 +vn -0.1374 0.9565 -0.2571 +vn -0.4513 -0.2890 -0.8443 +vn -0.2230 0.8810 -0.4173 +vn -0.4162 -0.4696 -0.7786 +vn -0.2999 0.7715 -0.5611 +vn -0.3651 -0.6326 -0.6831 +vn -0.3651 0.6326 -0.6831 +vn -0.2999 -0.7715 -0.5611 +vn -0.4162 0.4696 -0.7786 +vn -0.2230 -0.8810 -0.4173 +vn -0.4513 0.2890 -0.8443 +vn -0.1374 -0.9565 -0.2571 +vn -0.2248 -0.6326 -0.7412 +vn -0.2248 0.6326 -0.7412 +vn -0.1847 -0.7715 -0.6088 +vn -0.2563 0.4696 -0.8448 +vn -0.1374 -0.8810 -0.4528 +vn -0.2779 0.2890 -0.9161 +vn -0.0846 -0.9565 -0.2790 +vn -0.2889 0.0976 -0.9524 +vn -0.0286 0.9951 -0.0942 +vn -0.0286 -0.9951 -0.0942 +vn -0.2889 -0.0976 -0.9524 +vn -0.0846 0.9565 -0.2790 +vn -0.2779 -0.2890 -0.9161 +vn -0.1374 0.8810 -0.4528 +vn -0.2563 -0.4696 -0.8448 +vn -0.1847 0.7715 -0.6088 +vn -0.0097 0.9951 -0.0980 +vn -0.0097 -0.9951 -0.0980 +vn -0.0976 -0.0976 -0.9904 +vn -0.0286 0.9565 -0.2902 +vn -0.0938 -0.2890 -0.9527 +vn -0.0464 0.8810 -0.4709 +vn -0.0865 -0.4696 -0.8786 +vn -0.0624 0.7715 -0.6332 +vn -0.0759 -0.6326 -0.7708 +vn -0.0759 0.6326 -0.7708 +vn -0.0624 -0.7715 -0.6332 +vn -0.0865 0.4696 -0.8786 +vn -0.0464 -0.8810 -0.4709 +vn -0.0938 0.2890 -0.9527 +vn -0.0286 -0.9565 -0.2902 +vn -0.0976 0.0976 -0.9904 +usemtl Material.001 +s off +f 8/1/1 7/2/1 17/3/1 18/4/1 +f 1/5/2 297/6/2 11/7/2 +f 206/8/3 482/9/3 25/10/3 +f 9/11/4 8/1/4 18/4/4 19/12/4 +f 2/13/5 1/5/5 11/7/5 12/14/5 +f 478/15/6 9/11/6 19/12/6 20/16/6 +f 3/17/7 2/13/7 12/14/7 13/18/7 +f 479/19/8 478/15/8 20/16/8 21/20/8 +f 4/21/9 3/17/9 13/18/9 14/22/9 +f 480/23/10 479/19/10 21/20/10 22/24/10 +f 5/25/11 4/21/11 14/22/11 15/26/11 +f 10/27/12 480/23/12 22/24/12 23/28/12 +f 6/29/13 5/25/13 15/26/13 16/30/13 +f 481/31/14 10/27/14 23/28/14 24/32/14 +f 7/2/15 6/29/15 16/30/15 17/3/15 +f 482/9/16 481/31/16 24/32/16 25/10/16 +f 17/3/17 16/30/17 31/33/17 32/34/17 +f 25/10/18 24/32/18 39/35/18 40/36/18 +f 18/4/19 17/3/19 32/34/19 33/37/19 +f 11/7/20 297/38/20 26/39/20 +f 206/40/21 25/10/21 40/36/21 +f 19/12/22 18/4/22 33/37/22 34/41/22 +f 12/14/23 11/7/23 26/39/23 27/42/23 +f 20/16/24 19/12/24 34/41/24 35/43/24 +f 13/18/25 12/14/25 27/42/25 28/44/25 +f 21/20/26 20/16/26 35/43/26 36/45/26 +f 14/22/27 13/18/27 28/44/27 29/46/27 +f 22/24/28 21/20/28 36/45/28 37/47/28 +f 15/26/29 14/22/29 29/46/29 30/48/29 +f 23/28/30 22/24/30 37/47/30 38/49/30 +f 16/30/31 15/26/31 30/48/31 31/33/31 +f 24/32/32 23/28/32 38/49/32 39/35/32 +f 36/45/33 35/43/33 50/50/33 51/51/33 +f 29/46/34 28/44/34 43/52/34 44/53/34 +f 37/47/35 36/45/35 51/51/35 52/54/35 +f 30/48/36 29/46/36 44/53/36 45/55/36 +f 38/49/37 37/47/37 52/54/37 53/56/37 +f 31/33/38 30/48/38 45/55/38 46/57/38 +f 39/35/39 38/49/39 53/56/39 54/58/39 +f 32/34/40 31/33/40 46/57/40 47/59/40 +f 40/36/41 39/35/41 54/58/41 55/60/41 +f 33/37/42 32/34/42 47/59/42 48/61/42 +f 26/39/43 297/62/43 41/63/43 +f 206/64/44 40/36/44 55/60/44 +f 34/41/45 33/37/45 48/61/45 49/65/45 +f 27/42/46 26/39/46 41/63/46 42/66/46 +f 35/43/47 34/41/47 49/65/47 50/50/47 +f 28/44/48 27/42/48 42/66/48 43/52/48 +f 55/60/49 54/58/49 69/67/49 70/68/49 +f 48/61/50 47/59/50 62/69/50 63/70/50 +f 41/63/51 297/71/51 56/72/51 +f 206/73/52 55/60/52 70/68/52 +f 49/65/53 48/61/53 63/70/53 64/74/53 +f 42/66/54 41/63/54 56/72/54 57/75/54 +f 50/50/55 49/65/55 64/74/55 65/76/55 +f 43/52/56 42/66/56 57/75/56 58/77/56 +f 51/51/57 50/50/57 65/76/57 66/78/57 +f 44/53/58 43/52/58 58/77/58 59/79/58 +f 52/54/59 51/51/59 66/78/59 67/80/59 +f 45/55/60 44/53/60 59/79/60 60/81/60 +f 53/56/61 52/54/61 67/80/61 68/82/61 +f 46/57/62 45/55/62 60/81/62 61/83/62 +f 54/58/63 53/56/63 68/82/63 69/67/63 +f 47/59/64 46/57/64 61/83/64 62/69/64 +f 59/79/65 58/77/65 73/84/65 74/85/65 +f 67/80/66 66/78/66 81/86/66 82/87/66 +f 60/81/67 59/79/67 74/85/67 75/88/67 +f 68/82/68 67/80/68 82/87/68 83/89/68 +f 61/83/69 60/81/69 75/88/69 76/90/69 +f 69/67/70 68/82/70 83/89/70 84/91/70 +f 62/69/71 61/83/71 76/90/71 77/92/71 +f 70/68/72 69/67/72 84/91/72 85/93/72 +f 63/70/73 62/69/73 77/92/73 78/94/73 +f 56/72/74 297/95/74 71/96/74 +f 206/97/75 70/68/75 85/93/75 +f 64/74/76 63/70/76 78/94/76 79/98/76 +f 57/75/77 56/72/77 71/96/77 72/99/77 +f 65/76/78 64/74/78 79/98/78 80/100/78 +f 58/77/79 57/75/79 72/99/79 73/84/79 +f 66/78/80 65/76/80 80/100/80 81/86/80 +f 78/94/81 77/92/81 92/101/81 93/102/81 +f 71/96/82 297/103/82 86/104/82 +f 206/105/83 85/93/83 100/106/83 +f 79/98/84 78/94/84 93/102/84 94/107/84 +f 72/99/85 71/96/85 86/104/85 87/108/85 +f 80/100/86 79/98/86 94/107/86 95/109/86 +f 73/84/87 72/99/87 87/108/87 88/110/87 +f 81/86/88 80/100/88 95/109/88 96/111/88 +f 74/85/89 73/84/89 88/110/89 89/112/89 +f 82/87/90 81/86/90 96/111/90 97/113/90 +f 75/88/91 74/85/91 89/112/91 90/114/91 +f 83/89/92 82/87/92 97/113/92 98/115/92 +f 76/90/93 75/88/93 90/114/93 91/116/93 +f 84/91/94 83/89/94 98/115/94 99/117/94 +f 77/92/95 76/90/95 91/116/95 92/101/95 +f 85/93/96 84/91/96 99/117/96 100/106/96 +f 97/113/97 96/111/97 111/118/97 112/119/97 +f 90/114/98 89/112/98 104/120/98 105/121/98 +f 98/115/99 97/113/99 112/119/99 113/122/99 +f 91/116/100 90/114/100 105/121/100 106/123/100 +f 99/117/101 98/115/101 113/122/101 114/124/101 +f 92/101/102 91/116/102 106/123/102 107/125/102 +f 100/106/103 99/117/103 114/124/103 115/126/103 +f 93/102/104 92/101/104 107/125/104 108/127/104 +f 86/104/105 297/128/105 101/129/105 +f 206/130/106 100/106/106 115/126/106 +f 94/107/107 93/102/107 108/127/107 109/131/107 +f 87/108/108 86/104/108 101/129/108 102/132/108 +f 95/109/109 94/107/109 109/131/109 110/133/109 +f 88/110/110 87/108/110 102/132/110 103/134/110 +f 96/111/111 95/109/111 110/133/111 111/118/111 +f 89/112/112 88/110/112 103/134/112 104/120/112 +f 206/135/113 115/126/113 130/136/113 +f 109/131/114 108/127/114 123/137/114 124/138/114 +f 102/132/115 101/129/115 116/139/115 117/140/115 +f 110/133/116 109/131/116 124/138/116 125/141/116 +f 103/134/117 102/132/117 117/140/117 118/142/117 +f 111/118/118 110/133/118 125/141/118 126/143/118 +f 104/120/119 103/134/119 118/142/119 119/144/119 +f 112/119/120 111/118/120 126/143/120 127/145/120 +f 105/121/121 104/120/121 119/144/121 120/146/121 +f 113/122/122 112/119/122 127/145/122 128/147/122 +f 106/123/123 105/121/123 120/146/123 121/148/123 +f 114/124/124 113/122/124 128/147/124 129/149/124 +f 107/125/125 106/123/125 121/148/125 122/150/125 +f 115/126/126 114/124/126 129/149/126 130/136/126 +f 108/127/127 107/125/127 122/150/127 123/137/127 +f 101/129/128 297/151/128 116/139/128 +f 128/147/129 127/145/129 142/152/129 143/153/129 +f 121/148/130 120/146/130 135/154/130 136/155/130 +f 129/149/131 128/147/131 143/153/131 144/156/131 +f 122/150/132 121/148/132 136/155/132 137/157/132 +f 130/136/133 129/149/133 144/156/133 145/158/133 +f 123/137/134 122/150/134 137/157/134 138/159/134 +f 116/139/135 297/160/135 131/161/135 +f 206/162/136 130/136/136 145/158/136 +f 124/138/137 123/137/137 138/159/137 139/163/137 +f 117/140/138 116/139/138 131/161/138 132/164/138 +f 125/141/139 124/138/139 139/163/139 140/165/139 +f 118/142/140 117/140/140 132/164/140 133/166/140 +f 126/143/141 125/141/141 140/165/141 141/167/141 +f 119/144/142 118/142/142 133/166/142 134/168/142 +f 127/145/143 126/143/143 141/167/143 142/152/143 +f 120/146/144 119/144/144 134/168/144 135/154/144 +f 132/164/145 131/161/145 146/169/145 147/170/145 +f 140/165/146 139/163/146 154/171/146 155/172/146 +f 133/166/147 132/164/147 147/170/147 148/173/147 +f 141/167/148 140/165/148 155/172/148 156/174/148 +f 134/168/149 133/166/149 148/173/149 149/175/149 +f 142/152/150 141/167/150 156/174/150 157/176/150 +f 135/154/151 134/168/151 149/175/151 150/177/151 +f 143/153/152 142/152/152 157/176/152 158/178/152 +f 136/155/153 135/154/153 150/177/153 151/179/153 +f 144/156/154 143/153/154 158/178/154 159/180/154 +f 137/157/155 136/155/155 151/179/155 152/181/155 +f 145/158/156 144/156/156 159/180/156 160/182/156 +f 138/159/157 137/157/157 152/181/157 153/183/157 +f 131/161/158 297/184/158 146/169/158 +f 206/185/159 145/158/159 160/182/159 +f 139/163/160 138/159/160 153/183/160 154/171/160 +f 151/179/161 150/177/161 165/186/161 166/187/161 +f 159/180/162 158/178/162 173/188/162 174/189/162 +f 152/181/163 151/179/163 166/187/163 167/190/163 +f 160/182/164 159/180/164 174/189/164 175/191/164 +f 153/183/165 152/181/165 167/190/165 168/192/165 +f 146/169/166 297/193/166 161/194/166 +f 206/195/167 160/182/167 175/191/167 +f 154/171/168 153/183/168 168/192/168 169/196/168 +f 147/170/169 146/169/169 161/194/169 162/197/169 +f 155/172/170 154/171/170 169/196/170 170/198/170 +f 148/173/171 147/170/171 162/197/171 163/199/171 +f 156/174/172 155/172/172 170/198/172 171/200/172 +f 149/175/173 148/173/173 163/199/173 164/201/173 +f 157/176/174 156/174/174 171/200/174 172/202/174 +f 150/177/175 149/175/175 164/201/175 165/186/175 +f 158/178/176 157/176/176 172/202/176 173/188/176 +f 170/198/177 169/196/177 184/203/177 185/204/177 +f 163/199/178 162/197/178 177/205/178 178/206/178 +f 171/200/179 170/198/179 185/204/179 186/207/179 +f 164/201/180 163/199/180 178/206/180 179/208/180 +f 172/202/181 171/200/181 186/207/181 187/209/181 +f 165/186/182 164/201/182 179/208/182 180/210/182 +f 173/188/183 172/202/183 187/209/183 188/211/183 +f 166/187/184 165/186/184 180/210/184 181/212/184 +f 174/189/185 173/188/185 188/211/185 189/213/185 +f 167/190/186 166/187/186 181/212/186 182/214/186 +f 175/191/187 174/189/187 189/213/187 190/215/187 +f 168/192/188 167/190/188 182/214/188 183/216/188 +f 161/194/189 297/217/189 176/218/189 +f 206/219/190 175/191/190 190/215/190 +f 169/196/191 168/192/191 183/216/191 184/203/191 +f 162/197/192 161/194/192 176/218/192 177/205/192 +f 189/213/193 188/211/193 203/220/193 204/221/193 +f 182/214/194 181/212/194 196/222/194 197/223/194 +f 190/215/195 189/213/195 204/221/195 205/224/195 +f 183/216/196 182/214/196 197/223/196 198/225/196 +f 176/218/197 297/226/197 191/227/197 +f 206/228/198 190/215/198 205/224/198 +f 184/203/199 183/216/199 198/225/199 199/229/199 +f 177/205/200 176/218/200 191/227/200 192/230/200 +f 185/204/201 184/203/201 199/229/201 200/231/201 +f 178/206/202 177/205/202 192/230/202 193/232/202 +f 186/207/203 185/204/203 200/231/203 201/233/203 +f 179/208/204 178/206/204 193/232/204 194/234/204 +f 187/209/205 186/207/205 201/233/205 202/235/205 +f 180/210/206 179/208/206 194/234/206 195/236/206 +f 188/211/207 187/209/207 202/235/207 203/220/207 +f 181/212/208 180/210/208 195/236/208 196/222/208 +f 193/232/209 192/230/209 208/237/209 209/238/209 +f 201/233/210 200/231/210 216/239/210 217/240/210 +f 194/234/211 193/232/211 209/238/211 210/241/211 +f 202/235/212 201/233/212 217/240/212 218/242/212 +f 195/236/213 194/234/213 210/241/213 211/243/213 +f 203/220/214 202/235/214 218/242/214 219/244/214 +f 196/222/215 195/236/215 211/243/215 212/245/215 +f 204/221/216 203/220/216 219/244/216 220/246/216 +f 197/223/217 196/222/217 212/245/217 213/247/217 +f 205/224/218 204/221/218 220/246/218 221/248/218 +f 198/225/219 197/223/219 213/247/219 214/249/219 +f 191/227/220 297/250/220 207/251/220 +f 206/252/221 205/224/221 221/248/221 +f 199/229/222 198/225/222 214/249/222 215/253/222 +f 192/230/223 191/227/223 207/251/223 208/237/223 +f 200/231/224 199/229/224 215/253/224 216/239/224 +f 213/247/225 212/245/225 227/254/225 228/255/225 +f 221/248/226 220/246/226 235/256/226 236/257/226 +f 214/249/227 213/247/227 228/255/227 229/258/227 +f 207/251/228 297/259/228 222/260/228 +f 206/261/229 221/248/229 236/257/229 +f 215/253/230 214/249/230 229/258/230 230/262/230 +f 208/237/231 207/251/231 222/260/231 223/263/231 +f 216/239/232 215/253/232 230/262/232 231/264/232 +f 209/238/233 208/237/233 223/263/233 224/265/233 +f 217/240/234 216/239/234 231/264/234 232/266/234 +f 210/241/235 209/238/235 224/265/235 225/267/235 +f 218/242/236 217/240/236 232/266/236 233/268/236 +f 211/243/237 210/241/237 225/267/237 226/269/237 +f 219/244/238 218/242/238 233/268/238 234/270/238 +f 212/245/239 211/243/239 226/269/239 227/254/239 +f 220/246/240 219/244/240 234/270/240 235/256/240 +f 232/266/241 231/264/241 246/271/241 247/272/241 +f 225/267/242 224/265/242 239/273/242 240/274/242 +f 233/268/243 232/266/243 247/272/243 248/275/243 +f 226/269/244 225/267/244 240/274/244 241/276/244 +f 234/270/245 233/268/245 248/275/245 249/277/245 +f 227/254/246 226/269/246 241/276/246 242/278/246 +f 235/256/247 234/270/247 249/277/247 250/279/247 +f 228/255/248 227/254/248 242/278/248 243/280/248 +f 236/257/249 235/256/249 250/279/249 251/281/249 +f 229/258/250 228/255/250 243/280/250 244/282/250 +f 222/260/251 297/283/251 237/284/251 +f 206/285/252 236/257/252 251/281/252 +f 230/262/253 229/258/253 244/282/253 245/286/253 +f 223/263/254 222/260/254 237/284/254 238/287/254 +f 231/264/255 230/262/255 245/286/255 246/271/255 +f 224/265/256 223/263/256 238/287/256 239/273/256 +f 251/281/257 250/279/257 265/288/257 266/289/257 +f 244/282/258 243/280/258 258/290/258 259/291/258 +f 237/284/259 297/292/259 252/293/259 +f 206/294/260 251/281/260 266/289/260 +f 245/286/261 244/282/261 259/291/261 260/295/261 +f 238/287/262 237/284/262 252/293/262 253/296/262 +f 246/271/263 245/286/263 260/295/263 261/297/263 +f 239/273/264 238/287/264 253/296/264 254/298/264 +f 247/272/265 246/271/265 261/297/265 262/299/265 +f 240/274/266 239/273/266 254/298/266 255/300/266 +f 248/275/267 247/272/267 262/299/267 263/301/267 +f 241/276/268 240/274/268 255/300/268 256/302/268 +f 249/277/269 248/275/269 263/301/269 264/303/269 +f 242/278/270 241/276/270 256/302/270 257/304/270 +f 250/279/271 249/277/271 264/303/271 265/288/271 +f 243/280/272 242/278/272 257/304/272 258/290/272 +f 263/301/273 262/299/273 277/305/273 278/306/273 +f 256/302/274 255/300/274 270/307/274 271/308/274 +f 264/303/275 263/301/275 278/306/275 279/309/275 +f 257/304/276 256/302/276 271/308/276 272/310/276 +f 265/288/277 264/303/277 279/309/277 280/311/277 +f 258/290/278 257/304/278 272/310/278 273/312/278 +f 266/289/279 265/288/279 280/311/279 281/313/279 +f 259/291/280 258/290/280 273/312/280 274/314/280 +f 252/293/281 297/315/281 267/316/281 +f 206/317/282 266/289/282 281/313/282 +f 260/295/283 259/291/283 274/314/283 275/318/283 +f 253/296/284 252/293/284 267/316/284 268/319/284 +f 261/297/285 260/295/285 275/318/285 276/320/285 +f 254/298/286 253/296/286 268/319/286 269/321/286 +f 262/299/287 261/297/287 276/320/287 277/305/287 +f 255/300/288 254/298/288 269/321/288 270/307/288 +f 267/316/289 297/322/289 282/323/289 +f 206/324/290 281/313/290 296/325/290 +f 275/318/291 274/314/291 289/326/291 290/327/291 +f 268/319/292 267/316/292 282/323/292 283/328/292 +f 276/320/293 275/318/293 290/327/293 291/329/293 +f 269/321/294 268/319/294 283/328/294 284/330/294 +f 277/305/295 276/320/295 291/329/295 292/331/295 +f 270/307/296 269/321/296 284/330/296 285/332/296 +f 278/306/297 277/305/297 292/331/297 293/333/297 +f 271/308/298 270/307/298 285/332/298 286/334/298 +f 279/309/299 278/306/299 293/333/299 294/335/299 +f 272/310/300 271/308/300 286/334/300 287/336/300 +f 280/311/301 279/309/301 294/335/301 295/337/301 +f 273/312/302 272/310/302 287/336/302 288/338/302 +f 281/313/303 280/311/303 295/337/303 296/325/303 +f 274/314/304 273/312/304 288/338/304 289/326/304 +f 286/334/305 285/332/305 301/339/305 302/340/305 +f 294/335/306 293/333/306 309/341/306 310/342/306 +f 287/336/307 286/334/307 302/340/307 303/343/307 +f 295/337/308 294/335/308 310/342/308 311/344/308 +f 288/338/309 287/336/309 303/343/309 304/345/309 +f 296/325/310 295/337/310 311/344/310 312/346/310 +f 289/326/311 288/338/311 304/345/311 305/347/311 +f 282/323/312 297/348/312 298/349/312 +f 206/350/313 296/325/313 312/346/313 +f 290/327/314 289/326/314 305/347/314 306/351/314 +f 283/328/315 282/323/315 298/349/315 299/352/315 +f 291/329/316 290/327/316 306/351/316 307/353/316 +f 284/330/317 283/328/317 299/352/317 300/354/317 +f 292/331/318 291/329/318 307/353/318 308/355/318 +f 285/332/319 284/330/319 300/354/319 301/339/319 +f 293/333/320 292/331/320 308/355/320 309/341/320 +f 306/351/321 305/347/321 320/356/321 321/357/321 +f 299/352/322 298/349/322 313/358/322 314/359/322 +f 307/353/323 306/351/323 321/357/323 322/360/323 +f 300/354/324 299/352/324 314/359/324 315/361/324 +f 308/355/325 307/353/325 322/360/325 323/362/325 +f 301/339/326 300/354/326 315/361/326 316/363/326 +f 309/341/327 308/355/327 323/362/327 324/364/327 +f 302/340/328 301/339/328 316/363/328 317/365/328 +f 310/342/329 309/341/329 324/364/329 325/366/329 +f 303/343/330 302/340/330 317/365/330 318/367/330 +f 311/344/331 310/342/331 325/366/331 326/368/331 +f 304/345/332 303/343/332 318/367/332 319/369/332 +f 312/346/333 311/344/333 326/368/333 327/370/333 +f 305/347/334 304/345/334 319/369/334 320/356/334 +f 298/349/335 297/371/335 313/358/335 +f 206/372/336 312/346/336 327/370/336 +f 325/366/337 324/364/337 339/373/337 340/374/337 +f 318/367/338 317/365/338 332/375/338 333/376/338 +f 326/368/339 325/366/339 340/374/339 341/377/339 +f 319/369/340 318/367/340 333/376/340 334/378/340 +f 327/370/341 326/368/341 341/377/341 342/379/341 +f 320/356/342 319/369/342 334/378/342 335/380/342 +f 313/358/343 297/381/343 328/382/343 +f 206/383/344 327/370/344 342/379/344 +f 321/357/345 320/356/345 335/380/345 336/384/345 +f 314/359/346 313/358/346 328/382/346 329/385/346 +f 322/360/347 321/357/347 336/384/347 337/386/347 +f 315/361/348 314/359/348 329/385/348 330/387/348 +f 323/362/349 322/360/349 337/386/349 338/388/349 +f 316/363/350 315/361/350 330/387/350 331/389/350 +f 324/364/351 323/362/351 338/388/351 339/373/351 +f 317/365/352 316/363/352 331/389/352 332/375/352 +f 329/385/353 328/382/353 343/390/353 344/391/353 +f 337/386/354 336/384/354 351/392/354 352/393/354 +f 330/387/355 329/385/355 344/391/355 345/394/355 +f 338/388/356 337/386/356 352/393/356 353/395/356 +f 331/389/357 330/387/357 345/394/357 346/396/357 +f 339/373/358 338/388/358 353/395/358 354/397/358 +f 332/375/359 331/389/359 346/396/359 347/398/359 +f 340/374/360 339/373/360 354/397/360 355/399/360 +f 333/376/361 332/375/361 347/398/361 348/400/361 +f 341/377/362 340/374/362 355/399/362 356/401/362 +f 334/378/363 333/376/363 348/400/363 349/402/363 +f 342/379/364 341/377/364 356/401/364 357/403/364 +f 335/380/365 334/378/365 349/402/365 350/404/365 +f 328/382/366 297/405/366 343/390/366 +f 206/406/367 342/379/367 357/403/367 +f 336/384/368 335/380/368 350/404/368 351/392/368 +f 348/400/369 347/398/369 362/407/369 363/408/369 +f 356/401/370 355/399/370 370/409/370 371/410/370 +f 349/402/371 348/400/371 363/408/371 364/411/371 +f 357/403/372 356/401/372 371/410/372 372/412/372 +f 350/404/373 349/402/373 364/411/373 365/413/373 +f 343/390/374 297/414/374 358/415/374 +f 206/416/375 357/403/375 372/412/375 +f 351/392/376 350/404/376 365/413/376 366/417/376 +f 344/391/377 343/390/377 358/415/377 359/418/377 +f 352/393/378 351/392/378 366/417/378 367/419/378 +f 345/394/379 344/391/379 359/418/379 360/420/379 +f 353/395/380 352/393/380 367/419/380 368/421/380 +f 346/396/381 345/394/381 360/420/381 361/422/381 +f 354/397/382 353/395/382 368/421/382 369/423/382 +f 347/398/383 346/396/383 361/422/383 362/407/383 +f 355/399/384 354/397/384 369/423/384 370/409/384 +f 367/424/385 366/425/385 381/426/385 382/427/385 +f 360/428/386 359/429/386 374/430/386 375/431/386 +f 368/432/387 367/424/387 382/427/387 383/433/387 +f 361/434/388 360/428/388 375/431/388 376/435/388 +f 369/436/389 368/432/389 383/433/389 384/437/389 +f 362/438/390 361/434/390 376/435/390 377/439/390 +f 370/440/391 369/436/391 384/437/391 385/441/391 +f 363/442/392 362/438/392 377/439/392 378/443/392 +f 371/444/393 370/440/393 385/441/393 386/445/393 +f 364/446/394 363/442/394 378/443/394 379/447/394 +f 372/448/395 371/444/395 386/445/395 387/449/395 +f 365/450/396 364/446/396 379/447/396 380/451/396 +f 358/452/397 297/453/397 373/454/397 +f 206/455/398 372/448/398 387/449/398 +f 366/425/399 365/450/399 380/451/399 381/426/399 +f 359/429/400 358/452/400 373/454/400 374/430/400 +f 386/445/401 385/441/401 400/456/401 401/457/401 +f 379/447/402 378/443/402 393/458/402 394/459/402 +f 387/449/403 386/445/403 401/457/403 402/460/403 +f 380/451/404 379/447/404 394/459/404 395/461/404 +f 373/454/405 297/462/405 388/463/405 +f 206/464/406 387/449/406 402/460/406 +f 381/426/407 380/451/407 395/461/407 396/465/407 +f 374/430/408 373/454/408 388/463/408 389/466/408 +f 382/427/409 381/426/409 396/465/409 397/467/409 +f 375/431/410 374/430/410 389/466/410 390/468/410 +f 383/433/411 382/427/411 397/467/411 398/469/411 +f 376/435/412 375/431/412 390/468/412 391/470/412 +f 384/437/413 383/433/413 398/469/413 399/471/413 +f 377/439/414 376/435/414 391/470/414 392/472/414 +f 385/441/415 384/437/415 399/471/415 400/456/415 +f 378/443/416 377/439/416 392/472/416 393/458/416 +f 398/469/417 397/467/417 412/473/417 413/474/417 +f 391/470/418 390/468/418 405/475/418 406/476/418 +f 399/471/419 398/469/419 413/474/419 414/477/419 +f 392/472/420 391/470/420 406/476/420 407/478/420 +f 400/456/421 399/471/421 414/477/421 415/479/421 +f 393/458/422 392/472/422 407/478/422 408/480/422 +f 401/457/423 400/456/423 415/479/423 416/481/423 +f 394/459/424 393/458/424 408/480/424 409/482/424 +f 402/460/425 401/457/425 416/481/425 417/483/425 +f 395/461/426 394/459/426 409/482/426 410/484/426 +f 388/463/427 297/485/427 403/486/427 +f 206/487/428 402/460/428 417/483/428 +f 396/465/429 395/461/429 410/484/429 411/488/429 +f 389/466/430 388/463/430 403/486/430 404/489/430 +f 397/467/431 396/465/431 411/488/431 412/473/431 +f 390/468/432 389/466/432 404/489/432 405/475/432 +f 417/483/433 416/481/433 431/490/433 432/491/433 +f 410/484/434 409/482/434 424/492/434 425/493/434 +f 403/486/435 297/494/435 418/495/435 +f 206/496/436 417/483/436 432/491/436 +f 411/488/437 410/484/437 425/493/437 426/497/437 +f 404/489/438 403/486/438 418/495/438 419/498/438 +f 412/473/439 411/488/439 426/497/439 427/499/439 +f 405/475/440 404/489/440 419/498/440 420/500/440 +f 413/474/441 412/473/441 427/499/441 428/501/441 +f 406/476/442 405/475/442 420/500/442 421/502/442 +f 414/477/443 413/474/443 428/501/443 429/503/443 +f 407/478/444 406/476/444 421/502/444 422/504/444 +f 415/479/445 414/477/445 429/503/445 430/505/445 +f 408/480/446 407/478/446 422/504/446 423/506/446 +f 416/481/447 415/479/447 430/505/447 431/490/447 +f 409/482/448 408/480/448 423/506/448 424/492/448 +f 421/502/449 420/500/449 435/507/449 436/508/449 +f 429/503/450 428/501/450 443/509/450 444/510/450 +f 422/504/451 421/502/451 436/508/451 437/511/451 +f 430/505/452 429/503/452 444/510/452 445/512/452 +f 423/506/453 422/504/453 437/511/453 438/513/453 +f 431/490/454 430/505/454 445/512/454 446/514/454 +f 424/492/455 423/506/455 438/513/455 439/515/455 +f 432/491/456 431/490/456 446/514/456 447/516/456 +f 425/493/457 424/492/457 439/515/457 440/517/457 +f 418/495/458 297/518/458 433/519/458 +f 206/520/459 432/491/459 447/516/459 +f 426/497/460 425/493/460 440/517/460 441/521/460 +f 419/498/461 418/495/461 433/519/461 434/522/461 +f 427/499/462 426/497/462 441/521/462 442/523/462 +f 420/500/463 419/498/463 434/522/463 435/507/463 +f 428/501/464 427/499/464 442/523/464 443/509/464 +f 440/517/465 439/515/465 454/524/465 455/525/465 +f 433/519/466 297/526/466 448/527/466 +f 206/528/467 447/516/467 462/529/467 +f 441/521/468 440/517/468 455/525/468 456/530/468 +f 434/522/469 433/519/469 448/527/469 449/531/469 +f 442/523/470 441/521/470 456/530/470 457/532/470 +f 435/507/471 434/522/471 449/531/471 450/533/471 +f 443/509/472 442/523/472 457/532/472 458/534/472 +f 436/508/473 435/507/473 450/533/473 451/535/473 +f 444/510/474 443/509/474 458/534/474 459/536/474 +f 437/511/475 436/508/475 451/535/475 452/537/475 +f 445/512/476 444/510/476 459/536/476 460/538/476 +f 438/513/477 437/511/477 452/537/477 453/539/477 +f 446/514/478 445/512/478 460/538/478 461/540/478 +f 439/515/479 438/513/479 453/539/479 454/524/479 +f 447/516/480 446/514/480 461/540/480 462/529/480 +f 459/536/481 458/534/481 473/541/481 474/542/481 +f 452/537/482 451/535/482 466/543/482 467/544/482 +f 460/538/483 459/536/483 474/542/483 475/545/483 +f 453/539/484 452/537/484 467/544/484 468/546/484 +f 461/540/485 460/538/485 475/545/485 476/547/485 +f 454/524/486 453/539/486 468/546/486 469/548/486 +f 462/529/487 461/540/487 476/547/487 477/549/487 +f 455/525/488 454/524/488 469/548/488 470/550/488 +f 448/527/489 297/551/489 463/552/489 +f 206/553/490 462/529/490 477/549/490 +f 456/530/491 455/525/491 470/550/491 471/554/491 +f 449/531/492 448/527/492 463/552/492 464/555/492 +f 457/532/493 456/530/493 471/554/493 472/556/493 +f 450/533/494 449/531/494 464/555/494 465/557/494 +f 458/534/495 457/532/495 472/556/495 473/541/495 +f 451/535/496 450/533/496 465/557/496 466/543/496 +f 463/552/497 297/558/497 1/5/497 +f 206/559/498 477/549/498 482/9/498 +f 471/554/499 470/550/499 8/1/499 9/11/499 +f 464/555/500 463/552/500 1/5/500 2/13/500 +f 472/556/501 471/554/501 9/11/501 478/15/501 +f 465/557/502 464/555/502 2/13/502 3/17/502 +f 473/541/503 472/556/503 478/15/503 479/19/503 +f 466/543/504 465/557/504 3/17/504 4/21/504 +f 474/542/505 473/541/505 479/19/505 480/23/505 +f 467/544/506 466/543/506 4/21/506 5/25/506 +f 475/545/507 474/542/507 480/23/507 10/27/507 +f 468/546/508 467/544/508 5/25/508 6/29/508 +f 476/547/509 475/545/509 10/27/509 481/31/509 +f 469/548/510 468/546/510 6/29/510 7/2/510 +f 477/549/511 476/547/511 481/31/511 482/9/511 +f 470/550/512 469/548/512 7/2/512 8/1/512 diff --git a/assets/models/tort.mtl b/assets/models/tort.mtl new file mode 100644 index 0000000..6ac0a63 --- /dev/null +++ b/assets/models/tort.mtl @@ -0,0 +1,12 @@ +# Blender MTL File: 'None' +# Material Count: 1 + +newmtl Material.004 +Ns 323.999994 +Ka 1.000000 1.000000 1.000000 +Kd 0.800000 0.693157 0.000000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.000000 +d 1.000000 +illum 2 diff --git a/assets/models/tort.obj b/assets/models/tort.obj new file mode 100644 index 0000000..a294f0f --- /dev/null +++ b/assets/models/tort.obj @@ -0,0 +1,2083 @@ +# Blender v2.90.1 OBJ File: '' +# www.blender.org +mtllib tort.mtl +o Torus +v 1.250000 0.000000 0.000000 +v 1.216506 0.125000 0.000000 +v 1.125000 0.216506 0.000000 +v 1.000000 0.250000 0.000000 +v 0.875000 0.216506 0.000000 +v 0.783494 0.125000 0.000000 +v 0.750000 0.000000 0.000000 +v 0.783494 -0.125000 0.000000 +v 0.875000 -0.216506 0.000000 +v 1.000000 -0.250000 0.000000 +v 1.125000 -0.216506 0.000000 +v 1.216506 -0.125000 0.000000 +v 1.239306 0.000000 -0.163158 +v 1.206099 0.125000 -0.158786 +v 1.115376 0.216506 -0.146842 +v 0.991445 0.250000 -0.130526 +v 0.867514 0.216506 -0.114210 +v 0.776791 0.125000 -0.102266 +v 0.743584 0.000000 -0.097895 +v 0.776791 -0.125000 -0.102266 +v 0.867514 -0.216506 -0.114210 +v 0.991445 -0.250000 -0.130526 +v 1.115376 -0.216506 -0.146842 +v 1.206099 -0.125000 -0.158786 +v 1.207407 0.000000 -0.323524 +v 1.175055 0.125000 -0.314855 +v 1.086667 0.216506 -0.291171 +v 0.965926 0.250000 -0.258819 +v 0.845185 0.216506 -0.226467 +v 0.756797 0.125000 -0.202783 +v 0.724444 0.000000 -0.194114 +v 0.756797 -0.125000 -0.202783 +v 0.845185 -0.216506 -0.226467 +v 0.965926 -0.250000 -0.258819 +v 1.086667 -0.216506 -0.291171 +v 1.175055 -0.125000 -0.314855 +v 1.154849 0.000000 -0.478354 +v 1.123905 0.125000 -0.465537 +v 1.039364 0.216506 -0.430519 +v 0.923880 0.250000 -0.382683 +v 0.808395 0.216506 -0.334848 +v 0.723854 0.125000 -0.299830 +v 0.692910 0.000000 -0.287013 +v 0.723854 -0.125000 -0.299830 +v 0.808395 -0.216506 -0.334848 +v 0.923880 -0.250000 -0.382683 +v 1.039364 -0.216506 -0.430519 +v 1.123905 -0.125000 -0.465537 +v 1.082532 0.000000 -0.625000 +v 1.053525 0.125000 -0.608253 +v 0.974279 0.216506 -0.562500 +v 0.866025 0.250000 -0.500000 +v 0.757772 0.216506 -0.437500 +v 0.678525 0.125000 -0.391747 +v 0.649519 0.000000 -0.375000 +v 0.678525 -0.125000 -0.391747 +v 0.757772 -0.216506 -0.437500 +v 0.866025 -0.250000 -0.500000 +v 0.974279 -0.216506 -0.562500 +v 1.053525 -0.125000 -0.608253 +v 0.991692 0.000000 -0.760952 +v 0.965119 0.125000 -0.740562 +v 0.892523 0.216506 -0.684856 +v 0.793353 0.250000 -0.608761 +v 0.694184 0.216506 -0.532666 +v 0.621587 0.125000 -0.476961 +v 0.595015 0.000000 -0.456571 +v 0.621587 -0.125000 -0.476961 +v 0.694184 -0.216506 -0.532666 +v 0.793353 -0.250000 -0.608761 +v 0.892523 -0.216506 -0.684856 +v 0.965119 -0.125000 -0.740562 +v 0.883883 0.000000 -0.883884 +v 0.860200 0.125000 -0.860200 +v 0.795495 0.216506 -0.795495 +v 0.707107 0.250000 -0.707107 +v 0.618718 0.216506 -0.618719 +v 0.554014 0.125000 -0.554014 +v 0.530330 0.000000 -0.530330 +v 0.554014 -0.125000 -0.554014 +v 0.618718 -0.216506 -0.618719 +v 0.707107 -0.250000 -0.707107 +v 0.795495 -0.216506 -0.795495 +v 0.860200 -0.125000 -0.860200 +v 0.760952 0.000000 -0.991691 +v 0.740562 0.125000 -0.965119 +v 0.684857 0.216506 -0.892522 +v 0.608762 0.250000 -0.793353 +v 0.532666 0.216506 -0.694184 +v 0.476961 0.125000 -0.621587 +v 0.456571 0.000000 -0.595015 +v 0.476961 -0.125000 -0.621587 +v 0.532666 -0.216506 -0.694184 +v 0.608762 -0.250000 -0.793353 +v 0.684857 -0.216506 -0.892522 +v 0.740562 -0.125000 -0.965119 +v 0.625000 0.000000 -1.082532 +v 0.608253 0.125000 -1.053525 +v 0.562500 0.216506 -0.974279 +v 0.500000 0.250000 -0.866025 +v 0.437500 0.216506 -0.757772 +v 0.391747 0.125000 -0.678525 +v 0.375000 0.000000 -0.649519 +v 0.391747 -0.125000 -0.678525 +v 0.437500 -0.216506 -0.757772 +v 0.500000 -0.250000 -0.866025 +v 0.562500 -0.216506 -0.974279 +v 0.608253 -0.125000 -1.053525 +v 0.478355 0.000000 -1.154849 +v 0.465537 0.125000 -1.123905 +v 0.430519 0.216506 -1.039364 +v 0.382684 0.250000 -0.923879 +v 0.334848 0.216506 -0.808394 +v 0.299830 0.125000 -0.723854 +v 0.287013 0.000000 -0.692910 +v 0.299830 -0.125000 -0.723854 +v 0.334848 -0.216506 -0.808394 +v 0.382684 -0.250000 -0.923879 +v 0.430519 -0.216506 -1.039364 +v 0.465537 -0.125000 -1.123905 +v 0.323524 0.000000 -1.207407 +v 0.314855 0.125000 -1.175055 +v 0.291171 0.216506 -1.086667 +v 0.258819 0.250000 -0.965926 +v 0.226467 0.216506 -0.845185 +v 0.202783 0.125000 -0.756797 +v 0.194114 0.000000 -0.724444 +v 0.202783 -0.125000 -0.756797 +v 0.226467 -0.216506 -0.845185 +v 0.258819 -0.250000 -0.965926 +v 0.291171 -0.216506 -1.086667 +v 0.314855 -0.125000 -1.175055 +v 0.163158 0.000000 -1.239306 +v 0.158786 0.125000 -1.206099 +v 0.146842 0.216506 -1.115376 +v 0.130526 0.250000 -0.991445 +v 0.114210 0.216506 -0.867514 +v 0.102266 0.125000 -0.776791 +v 0.097895 0.000000 -0.743584 +v 0.102266 -0.125000 -0.776791 +v 0.114210 -0.216506 -0.867514 +v 0.130526 -0.250000 -0.991445 +v 0.146842 -0.216506 -1.115376 +v 0.158786 -0.125000 -1.206099 +v 0.000000 0.000000 -1.250000 +v 0.000000 0.125000 -1.216506 +v 0.000000 0.216506 -1.125000 +v 0.000000 0.250000 -1.000000 +v 0.000000 0.216506 -0.875000 +v 0.000000 0.125000 -0.783494 +v 0.000000 0.000000 -0.750000 +v 0.000000 -0.125000 -0.783494 +v 0.000000 -0.216506 -0.875000 +v 0.000000 -0.250000 -1.000000 +v 0.000000 -0.216506 -1.125000 +v 0.000000 -0.125000 -1.216506 +v -0.163158 0.000000 -1.239306 +v -0.158786 0.125000 -1.206099 +v -0.146842 0.216506 -1.115375 +v -0.130526 0.250000 -0.991445 +v -0.114211 0.216506 -0.867514 +v -0.102267 0.125000 -0.776791 +v -0.097895 0.000000 -0.743584 +v -0.102267 -0.125000 -0.776791 +v -0.114211 -0.216506 -0.867514 +v -0.130526 -0.250000 -0.991445 +v -0.146842 -0.216506 -1.115375 +v -0.158786 -0.125000 -1.206099 +v -0.323524 0.000000 -1.207407 +v -0.314855 0.125000 -1.175055 +v -0.291171 0.216506 -1.086667 +v -0.258819 0.250000 -0.965926 +v -0.226467 0.216506 -0.845185 +v -0.202783 0.125000 -0.756797 +v -0.194114 0.000000 -0.724444 +v -0.202783 -0.125000 -0.756797 +v -0.226467 -0.216506 -0.845185 +v -0.258819 -0.250000 -0.965926 +v -0.291171 -0.216506 -1.086667 +v -0.314855 -0.125000 -1.175055 +v -0.478354 0.000000 -1.154849 +v -0.465537 0.125000 -1.123905 +v -0.430519 0.216506 -1.039364 +v -0.382684 0.250000 -0.923880 +v -0.334848 0.216506 -0.808395 +v -0.299830 0.125000 -0.723854 +v -0.287013 0.000000 -0.692910 +v -0.299830 -0.125000 -0.723854 +v -0.334848 -0.216506 -0.808395 +v -0.382684 -0.250000 -0.923880 +v -0.430519 -0.216506 -1.039364 +v -0.465537 -0.125000 -1.123905 +v -0.625000 0.000000 -1.082532 +v -0.608253 0.125000 -1.053526 +v -0.562500 0.216506 -0.974279 +v -0.500000 0.250000 -0.866026 +v -0.437500 0.216506 -0.757772 +v -0.391747 0.125000 -0.678525 +v -0.375000 0.000000 -0.649519 +v -0.391747 -0.125000 -0.678525 +v -0.437500 -0.216506 -0.757772 +v -0.500000 -0.250000 -0.866026 +v -0.562500 -0.216506 -0.974279 +v -0.608253 -0.125000 -1.053526 +v -0.760952 0.000000 -0.991692 +v -0.740562 0.125000 -0.965119 +v -0.684857 0.216506 -0.892522 +v -0.608761 0.250000 -0.793353 +v -0.532666 0.216506 -0.694184 +v -0.476961 0.125000 -0.621587 +v -0.456571 0.000000 -0.595015 +v -0.476961 -0.125000 -0.621587 +v -0.532666 -0.216506 -0.694184 +v -0.608761 -0.250000 -0.793353 +v -0.684857 -0.216506 -0.892522 +v -0.740562 -0.125000 -0.965119 +v -0.883884 0.000000 -0.883883 +v -0.860200 0.125000 -0.860200 +v -0.795495 0.216506 -0.795495 +v -0.707107 0.250000 -0.707107 +v -0.618719 0.216506 -0.618718 +v -0.554014 0.125000 -0.554013 +v -0.530330 0.000000 -0.530330 +v -0.554014 -0.125000 -0.554013 +v -0.618719 -0.216506 -0.618718 +v -0.707107 -0.250000 -0.707107 +v -0.795495 -0.216506 -0.795495 +v -0.860200 -0.125000 -0.860200 +v -0.991692 0.000000 -0.760952 +v -0.965119 0.125000 -0.740562 +v -0.892522 0.216506 -0.684857 +v -0.793353 0.250000 -0.608761 +v -0.694184 0.216506 -0.532666 +v -0.621587 0.125000 -0.476961 +v -0.595015 0.000000 -0.456571 +v -0.621587 -0.125000 -0.476961 +v -0.694184 -0.216506 -0.532666 +v -0.793353 -0.250000 -0.608761 +v -0.892522 -0.216506 -0.684857 +v -0.965119 -0.125000 -0.740562 +v -1.082532 0.000000 -0.625000 +v -1.053525 0.125000 -0.608253 +v -0.974278 0.216506 -0.562500 +v -0.866025 0.250000 -0.500000 +v -0.757772 0.216506 -0.437500 +v -0.678525 0.125000 -0.391747 +v -0.649519 0.000000 -0.375000 +v -0.678525 -0.125000 -0.391747 +v -0.757772 -0.216506 -0.437500 +v -0.866025 -0.250000 -0.500000 +v -0.974278 -0.216506 -0.562500 +v -1.053525 -0.125000 -0.608253 +v -1.154849 0.000000 -0.478354 +v -1.123905 0.125000 -0.465537 +v -1.039364 0.216506 -0.430519 +v -0.923880 0.250000 -0.382683 +v -0.808395 0.216506 -0.334848 +v -0.723854 0.125000 -0.299830 +v -0.692910 0.000000 -0.287013 +v -0.723854 -0.125000 -0.299830 +v -0.808395 -0.216506 -0.334848 +v -0.923880 -0.250000 -0.382683 +v -1.039364 -0.216506 -0.430519 +v -1.123905 -0.125000 -0.465537 +v -1.207407 0.000000 -0.323524 +v -1.175055 0.125000 -0.314855 +v -1.086667 0.216506 -0.291171 +v -0.965926 0.250000 -0.258819 +v -0.845185 0.216506 -0.226467 +v -0.756797 0.125000 -0.202783 +v -0.724444 0.000000 -0.194114 +v -0.756797 -0.125000 -0.202783 +v -0.845185 -0.216506 -0.226467 +v -0.965926 -0.250000 -0.258819 +v -1.086667 -0.216506 -0.291171 +v -1.175055 -0.125000 -0.314855 +v -1.239306 0.000000 -0.163158 +v -1.206099 0.125000 -0.158786 +v -1.115375 0.216506 -0.146842 +v -0.991445 0.250000 -0.130526 +v -0.867514 0.216506 -0.114211 +v -0.776791 0.125000 -0.102267 +v -0.743584 0.000000 -0.097895 +v -0.776791 -0.125000 -0.102267 +v -0.867514 -0.216506 -0.114211 +v -0.991445 -0.250000 -0.130526 +v -1.115375 -0.216506 -0.146842 +v -1.206099 -0.125000 -0.158786 +v -1.250000 0.000000 -0.000000 +v -1.216506 0.125000 -0.000000 +v -1.125000 0.216506 -0.000000 +v -1.000000 0.250000 -0.000000 +v -0.875000 0.216506 -0.000000 +v -0.783494 0.125000 -0.000000 +v -0.750000 0.000000 -0.000000 +v -0.783494 -0.125000 -0.000000 +v -0.875000 -0.216506 -0.000000 +v -1.000000 -0.250000 -0.000000 +v -1.125000 -0.216506 -0.000000 +v -1.216506 -0.125000 -0.000000 +v -1.239306 0.000000 0.163158 +v -1.206099 0.125000 0.158786 +v -1.115375 0.216506 0.146842 +v -0.991445 0.250000 0.130526 +v -0.867514 0.216506 0.114211 +v -0.776791 0.125000 0.102267 +v -0.743584 0.000000 0.097895 +v -0.776791 -0.125000 0.102267 +v -0.867514 -0.216506 0.114211 +v -0.991445 -0.250000 0.130526 +v -1.115375 -0.216506 0.146842 +v -1.206099 -0.125000 0.158786 +v -1.207407 0.000000 0.323524 +v -1.175055 0.125000 0.314855 +v -1.086667 0.216506 0.291171 +v -0.965926 0.250000 0.258819 +v -0.845185 0.216506 0.226467 +v -0.756797 0.125000 0.202783 +v -0.724444 0.000000 0.194114 +v -0.756797 -0.125000 0.202783 +v -0.845185 -0.216506 0.226467 +v -0.965926 -0.250000 0.258819 +v -1.086667 -0.216506 0.291171 +v -1.175055 -0.125000 0.314855 +v -1.154850 0.000000 0.478354 +v -1.123906 0.125000 0.465536 +v -1.039365 0.216506 0.430518 +v -0.923880 0.250000 0.382683 +v -0.808395 0.216506 0.334848 +v -0.723854 0.125000 0.299830 +v -0.692910 0.000000 0.287012 +v -0.723854 -0.125000 0.299830 +v -0.808395 -0.216506 0.334848 +v -0.923880 -0.250000 0.382683 +v -1.039365 -0.216506 0.430518 +v -1.123906 -0.125000 0.465536 +v -1.082532 0.000000 0.625000 +v -1.053526 0.125000 0.608253 +v -0.974279 0.216506 0.562500 +v -0.866026 0.250000 0.500000 +v -0.757772 0.216506 0.437500 +v -0.678525 0.125000 0.391747 +v -0.649519 0.000000 0.375000 +v -0.678525 -0.125000 0.391747 +v -0.757772 -0.216506 0.437500 +v -0.866026 -0.250000 0.500000 +v -0.974279 -0.216506 0.562500 +v -1.053526 -0.125000 0.608253 +v -0.991692 0.000000 0.760952 +v -0.965119 0.125000 0.740562 +v -0.892522 0.216506 0.684857 +v -0.793353 0.250000 0.608761 +v -0.694184 0.216506 0.532666 +v -0.621587 0.125000 0.476961 +v -0.595015 0.000000 0.456571 +v -0.621587 -0.125000 0.476961 +v -0.694184 -0.216506 0.532666 +v -0.793353 -0.250000 0.608761 +v -0.892522 -0.216506 0.684857 +v -0.965119 -0.125000 0.740562 +v -0.883884 0.000000 0.883883 +v -0.860200 0.125000 0.860200 +v -0.795495 0.216506 0.795495 +v -0.707107 0.250000 0.707107 +v -0.618719 0.216506 0.618718 +v -0.554014 0.125000 0.554013 +v -0.530330 0.000000 0.530330 +v -0.554014 -0.125000 0.554013 +v -0.618719 -0.216506 0.618718 +v -0.707107 -0.250000 0.707107 +v -0.795495 -0.216506 0.795495 +v -0.860200 -0.125000 0.860200 +v -0.760952 0.000000 0.991691 +v -0.740563 0.125000 0.965119 +v -0.684857 0.216506 0.892522 +v -0.608762 0.250000 0.793353 +v -0.532667 0.216506 0.694184 +v -0.476961 0.125000 0.621587 +v -0.456571 0.000000 0.595015 +v -0.476961 -0.125000 0.621587 +v -0.532667 -0.216506 0.694184 +v -0.608762 -0.250000 0.793353 +v -0.684857 -0.216506 0.892522 +v -0.740563 -0.125000 0.965119 +v -0.625000 0.000000 1.082532 +v -0.608253 0.125000 1.053526 +v -0.562500 0.216506 0.974279 +v -0.500000 0.250000 0.866026 +v -0.437500 0.216506 0.757772 +v -0.391747 0.125000 0.678525 +v -0.375000 0.000000 0.649519 +v -0.391747 -0.125000 0.678525 +v -0.437500 -0.216506 0.757772 +v -0.500000 -0.250000 0.866026 +v -0.562500 -0.216506 0.974279 +v -0.608253 -0.125000 1.053526 +v -0.478354 0.000000 1.154849 +v -0.465537 0.125000 1.123905 +v -0.430519 0.216506 1.039364 +v -0.382684 0.250000 0.923880 +v -0.334848 0.216506 0.808395 +v -0.299830 0.125000 0.723854 +v -0.287013 0.000000 0.692910 +v -0.299830 -0.125000 0.723854 +v -0.334848 -0.216506 0.808395 +v -0.382684 -0.250000 0.923880 +v -0.430519 -0.216506 1.039364 +v -0.465537 -0.125000 1.123905 +v -0.323524 0.000000 1.207407 +v -0.314855 0.125000 1.175055 +v -0.291172 0.216506 1.086666 +v -0.258819 0.250000 0.965926 +v -0.226467 0.216506 0.845185 +v -0.202783 0.125000 0.756797 +v -0.194115 0.000000 0.724444 +v -0.202783 -0.125000 0.756797 +v -0.226467 -0.216506 0.845185 +v -0.258819 -0.250000 0.965926 +v -0.291172 -0.216506 1.086666 +v -0.314855 -0.125000 1.175055 +v -0.163158 0.000000 1.239306 +v -0.158787 0.125000 1.206099 +v -0.146843 0.216506 1.115375 +v -0.130527 0.250000 0.991445 +v -0.114211 0.216506 0.867514 +v -0.102267 0.125000 0.776791 +v -0.097895 0.000000 0.743584 +v -0.102267 -0.125000 0.776791 +v -0.114211 -0.216506 0.867514 +v -0.130527 -0.250000 0.991445 +v -0.146843 -0.216506 1.115375 +v -0.158787 -0.125000 1.206099 +v 0.000000 0.000000 1.250000 +v 0.000000 0.125000 1.216506 +v 0.000000 0.216506 1.125000 +v 0.000000 0.250000 1.000000 +v 0.000000 0.216506 0.875000 +v 0.000000 0.125000 0.783494 +v 0.000000 0.000000 0.750000 +v 0.000000 -0.125000 0.783494 +v 0.000000 -0.216506 0.875000 +v 0.000000 -0.250000 1.000000 +v 0.000000 -0.216506 1.125000 +v 0.000000 -0.125000 1.216506 +v 0.163158 0.000000 1.239306 +v 0.158786 0.125000 1.206099 +v 0.146842 0.216506 1.115376 +v 0.130526 0.250000 0.991445 +v 0.114210 0.216506 0.867514 +v 0.102266 0.125000 0.776791 +v 0.097895 0.000000 0.743584 +v 0.102266 -0.125000 0.776791 +v 0.114210 -0.216506 0.867514 +v 0.130526 -0.250000 0.991445 +v 0.146842 -0.216506 1.115376 +v 0.158786 -0.125000 1.206099 +v 0.323523 0.000000 1.207407 +v 0.314854 0.125000 1.175055 +v 0.291171 0.216506 1.086667 +v 0.258819 0.250000 0.965926 +v 0.226466 0.216506 0.845185 +v 0.202783 0.125000 0.756797 +v 0.194114 0.000000 0.724444 +v 0.202783 -0.125000 0.756797 +v 0.226466 -0.216506 0.845185 +v 0.258819 -0.250000 0.965926 +v 0.291171 -0.216506 1.086667 +v 0.314854 -0.125000 1.175055 +v 0.478355 0.000000 1.154849 +v 0.465537 0.125000 1.123905 +v 0.430519 0.216506 1.039364 +v 0.382684 0.250000 0.923879 +v 0.334848 0.216506 0.808394 +v 0.299830 0.125000 0.723854 +v 0.287013 0.000000 0.692910 +v 0.299830 -0.125000 0.723854 +v 0.334848 -0.216506 0.808394 +v 0.382684 -0.250000 0.923879 +v 0.430519 -0.216506 1.039364 +v 0.465537 -0.125000 1.123905 +v 0.625000 0.000000 1.082532 +v 0.608253 0.125000 1.053525 +v 0.562500 0.216506 0.974279 +v 0.500000 0.250000 0.866025 +v 0.437500 0.216506 0.757772 +v 0.391747 0.125000 0.678525 +v 0.375000 0.000000 0.649519 +v 0.391747 -0.125000 0.678525 +v 0.437500 -0.216506 0.757772 +v 0.500000 -0.250000 0.866025 +v 0.562500 -0.216506 0.974279 +v 0.608253 -0.125000 1.053525 +v 0.760952 0.000000 0.991692 +v 0.740562 0.125000 0.965120 +v 0.684856 0.216506 0.892523 +v 0.608761 0.250000 0.793353 +v 0.532666 0.216506 0.694184 +v 0.476961 0.125000 0.621587 +v 0.456571 0.000000 0.595015 +v 0.476961 -0.125000 0.621587 +v 0.532666 -0.216506 0.694184 +v 0.608761 -0.250000 0.793353 +v 0.684856 -0.216506 0.892523 +v 0.740562 -0.125000 0.965120 +v 0.883883 0.000000 0.883884 +v 0.860199 0.125000 0.860200 +v 0.795495 0.216506 0.795496 +v 0.707106 0.250000 0.707107 +v 0.618718 0.216506 0.618719 +v 0.554013 0.125000 0.554014 +v 0.530330 0.000000 0.530330 +v 0.554013 -0.125000 0.554014 +v 0.618718 -0.216506 0.618719 +v 0.707106 -0.250000 0.707107 +v 0.795495 -0.216506 0.795496 +v 0.860199 -0.125000 0.860200 +v 0.991692 0.000000 0.760952 +v 0.965119 0.125000 0.740562 +v 0.892523 0.216506 0.684856 +v 0.793353 0.250000 0.608761 +v 0.694184 0.216506 0.532666 +v 0.621587 0.125000 0.476961 +v 0.595015 0.000000 0.456571 +v 0.621587 -0.125000 0.476961 +v 0.694184 -0.216506 0.532666 +v 0.793353 -0.250000 0.608761 +v 0.892523 -0.216506 0.684856 +v 0.965119 -0.125000 0.740562 +v 1.082532 0.000000 0.625000 +v 1.053525 0.125000 0.608253 +v 0.974279 0.216506 0.562500 +v 0.866025 0.250000 0.500000 +v 0.757772 0.216506 0.437500 +v 0.678525 0.125000 0.391747 +v 0.649519 0.000000 0.375000 +v 0.678525 -0.125000 0.391747 +v 0.757772 -0.216506 0.437500 +v 0.866025 -0.250000 0.500000 +v 0.974279 -0.216506 0.562500 +v 1.053525 -0.125000 0.608253 +v 1.154849 0.000000 0.478355 +v 1.123905 0.125000 0.465537 +v 1.039364 0.216506 0.430519 +v 0.923879 0.250000 0.382684 +v 0.808394 0.216506 0.334848 +v 0.723854 0.125000 0.299830 +v 0.692910 0.000000 0.287013 +v 0.723854 -0.125000 0.299830 +v 0.808394 -0.216506 0.334848 +v 0.923879 -0.250000 0.382684 +v 1.039364 -0.216506 0.430519 +v 1.123905 -0.125000 0.465537 +v 1.207407 0.000000 0.323523 +v 1.175055 0.125000 0.314855 +v 1.086667 0.216506 0.291171 +v 0.965926 0.250000 0.258819 +v 0.845185 0.216506 0.226466 +v 0.756797 0.125000 0.202783 +v 0.724444 0.000000 0.194114 +v 0.756797 -0.125000 0.202783 +v 0.845185 -0.216506 0.226466 +v 0.965926 -0.250000 0.258819 +v 1.086667 -0.216506 0.291171 +v 1.175055 -0.125000 0.314855 +v 1.239306 0.000000 0.163158 +v 1.206099 0.125000 0.158786 +v 1.115376 0.216506 0.146842 +v 0.991445 0.250000 0.130526 +v 0.867514 0.216506 0.114210 +v 0.776791 0.125000 0.102266 +v 0.743584 0.000000 0.097895 +v 0.776791 -0.125000 0.102266 +v 0.867514 -0.216506 0.114210 +v 0.991445 -0.250000 0.130526 +v 1.115376 -0.216506 0.146842 +v 1.206099 -0.125000 0.158786 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.520833 0.583333 +vt 0.500000 0.583333 +vt 0.520833 0.666667 +vt 0.500000 0.666667 +vt 0.520833 0.750000 +vt 0.500000 0.750000 +vt 0.520833 0.833333 +vt 0.500000 0.833333 +vt 0.520833 0.916667 +vt 0.500000 0.916667 +vt 0.520833 1.000000 +vt 0.500000 1.000000 +vt 0.500000 0.000000 +vt 0.520833 0.000000 +vt 0.520833 0.083333 +vt 0.500000 0.083333 +vt 0.520833 0.166667 +vt 0.500000 0.166667 +vt 0.520833 0.250000 +vt 0.500000 0.250000 +vt 0.520833 0.333333 +vt 0.500000 0.333333 +vt 0.520833 0.416667 +vt 0.500000 0.416667 +vt 0.541667 0.500000 +vt 0.541667 0.583333 +vt 0.541667 0.666667 +vt 0.541667 0.750000 +vt 0.541667 0.833333 +vt 0.541667 0.916667 +vt 0.541667 1.000000 +vt 0.541667 0.000000 +vt 0.541667 0.083333 +vt 0.541667 0.166667 +vt 0.541667 0.250000 +vt 0.541667 0.333333 +vt 0.541667 0.416667 +vt 0.562500 0.500000 +vt 0.562500 0.583333 +vt 0.562500 0.666667 +vt 0.562500 0.750000 +vt 0.562500 0.833333 +vt 0.562500 0.916667 +vt 0.562500 1.000000 +vt 0.562500 0.000000 +vt 0.562500 0.083333 +vt 0.562500 0.166667 +vt 0.562500 0.250000 +vt 0.562500 0.333333 +vt 0.562500 0.416667 +vt 0.583333 0.500000 +vt 0.583333 0.583333 +vt 0.583333 0.666667 +vt 0.583333 0.750000 +vt 0.583333 0.833333 +vt 0.583333 0.916667 +vt 0.583333 1.000000 +vt 0.583333 0.000000 +vt 0.583333 0.083333 +vt 0.583333 0.166667 +vt 0.583333 0.250000 +vt 0.583333 0.333333 +vt 0.583333 0.416667 +vt 0.604167 0.500000 +vt 0.604167 0.583333 +vt 0.604167 0.666667 +vt 0.604167 0.750000 +vt 0.604167 0.833333 +vt 0.604167 0.916667 +vt 0.604167 1.000000 +vt 0.604167 0.000000 +vt 0.604167 0.083333 +vt 0.604167 0.166667 +vt 0.604167 0.250000 +vt 0.604167 0.333333 +vt 0.604167 0.416667 +vt 0.625000 0.500000 +vt 0.625000 0.583333 +vt 0.625000 0.666667 +vt 0.625000 0.750000 +vt 0.625000 0.833333 +vt 0.625000 0.916667 +vt 0.625000 1.000000 +vt 0.625000 0.000000 +vt 0.625000 0.083333 +vt 0.625000 0.166667 +vt 0.625000 0.250000 +vt 0.625000 0.333333 +vt 0.625000 0.416667 +vt 0.645833 0.500000 +vt 0.645833 0.583333 +vt 0.645833 0.666667 +vt 0.645833 0.750000 +vt 0.645833 0.833333 +vt 0.645833 0.916667 +vt 0.645833 1.000000 +vt 0.645833 0.000000 +vt 0.645833 0.083333 +vt 0.645833 0.166667 +vt 0.645833 0.250000 +vt 0.645833 0.333333 +vt 0.645833 0.416667 +vt 0.666667 0.500000 +vt 0.666667 0.583333 +vt 0.666667 0.666667 +vt 0.666667 0.750000 +vt 0.666667 0.833333 +vt 0.666667 0.916667 +vt 0.666667 1.000000 +vt 0.666667 0.000000 +vt 0.666667 0.083333 +vt 0.666667 0.166667 +vt 0.666667 0.250000 +vt 0.666667 0.333333 +vt 0.666667 0.416667 +vt 0.687500 0.500000 +vt 0.687500 0.583333 +vt 0.687500 0.666667 +vt 0.687500 0.750000 +vt 0.687500 0.833333 +vt 0.687500 0.916667 +vt 0.687500 1.000000 +vt 0.687500 0.000000 +vt 0.687500 0.083333 +vt 0.687500 0.166667 +vt 0.687500 0.250000 +vt 0.687500 0.333333 +vt 0.687500 0.416667 +vt 0.708333 0.500000 +vt 0.708333 0.583333 +vt 0.708333 0.666667 +vt 0.708333 0.750000 +vt 0.708333 0.833333 +vt 0.708333 0.916667 +vt 0.708333 1.000000 +vt 0.708333 0.000000 +vt 0.708333 0.083333 +vt 0.708333 0.166667 +vt 0.708333 0.250000 +vt 0.708333 0.333333 +vt 0.708333 0.416667 +vt 0.729167 0.500000 +vt 0.729167 0.583333 +vt 0.729167 0.666667 +vt 0.729167 0.750000 +vt 0.729167 0.833333 +vt 0.729167 0.916667 +vt 0.729167 1.000000 +vt 0.729167 0.000000 +vt 0.729167 0.083333 +vt 0.729167 0.166667 +vt 0.729167 0.250000 +vt 0.729167 0.333333 +vt 0.729167 0.416667 +vt 0.750000 0.500000 +vt 0.750000 0.583333 +vt 0.750000 0.666667 +vt 0.750000 0.750000 +vt 0.750000 0.833333 +vt 0.750000 0.916667 +vt 0.750000 1.000000 +vt 0.750000 0.000000 +vt 0.750000 0.083333 +vt 0.750000 0.166667 +vt 0.750000 0.250000 +vt 0.750000 0.333333 +vt 0.750000 0.416667 +vt 0.770833 0.500000 +vt 0.770833 0.583333 +vt 0.770833 0.666667 +vt 0.770833 0.750000 +vt 0.770833 0.833333 +vt 0.770833 0.916667 +vt 0.770833 1.000000 +vt 0.770833 0.000000 +vt 0.770833 0.083333 +vt 0.770833 0.166667 +vt 0.770833 0.250000 +vt 0.770833 0.333333 +vt 0.770833 0.416667 +vt 0.791667 0.500000 +vt 0.791667 0.583333 +vt 0.791667 0.666667 +vt 0.791667 0.750000 +vt 0.791667 0.833333 +vt 0.791667 0.916667 +vt 0.791667 1.000000 +vt 0.791667 0.000000 +vt 0.791667 0.083333 +vt 0.791667 0.166667 +vt 0.791667 0.250000 +vt 0.791667 0.333333 +vt 0.791667 0.416667 +vt 0.812500 0.500000 +vt 0.812500 0.583333 +vt 0.812500 0.666667 +vt 0.812500 0.750000 +vt 0.812500 0.833333 +vt 0.812500 0.916667 +vt 0.812500 1.000000 +vt 0.812500 0.000000 +vt 0.812500 0.083333 +vt 0.812500 0.166667 +vt 0.812500 0.250000 +vt 0.812500 0.333333 +vt 0.812500 0.416667 +vt 0.833333 0.500000 +vt 0.833333 0.583333 +vt 0.833333 0.666667 +vt 0.833333 0.750000 +vt 0.833333 0.833333 +vt 0.833333 0.916667 +vt 0.833333 1.000000 +vt 0.833333 0.000000 +vt 0.833333 0.083333 +vt 0.833333 0.166667 +vt 0.833333 0.250000 +vt 0.833333 0.333333 +vt 0.833333 0.416667 +vt 0.854167 0.500000 +vt 0.854167 0.583333 +vt 0.854167 0.666667 +vt 0.854167 0.750000 +vt 0.854167 0.833333 +vt 0.854167 0.916667 +vt 0.854167 1.000000 +vt 0.854167 0.000000 +vt 0.854167 0.083333 +vt 0.854167 0.166667 +vt 0.854167 0.250000 +vt 0.854167 0.333333 +vt 0.854167 0.416667 +vt 0.875000 0.500000 +vt 0.875000 0.583333 +vt 0.875000 0.666667 +vt 0.875000 0.750000 +vt 0.875000 0.833333 +vt 0.875000 0.916667 +vt 0.875000 1.000000 +vt 0.875000 0.000000 +vt 0.875000 0.083333 +vt 0.875000 0.166667 +vt 0.875000 0.250000 +vt 0.875000 0.333333 +vt 0.875000 0.416667 +vt 0.895833 0.500000 +vt 0.895833 0.583333 +vt 0.895833 0.666667 +vt 0.895833 0.750000 +vt 0.895833 0.833333 +vt 0.895833 0.916667 +vt 0.895833 1.000000 +vt 0.895833 0.000000 +vt 0.895833 0.083333 +vt 0.895833 0.166667 +vt 0.895833 0.250000 +vt 0.895833 0.333333 +vt 0.895833 0.416667 +vt 0.916667 0.500000 +vt 0.916667 0.583333 +vt 0.916667 0.666667 +vt 0.916667 0.750000 +vt 0.916667 0.833333 +vt 0.916667 0.916667 +vt 0.916667 1.000000 +vt 0.916667 0.000000 +vt 0.916667 0.083333 +vt 0.916667 0.166667 +vt 0.916667 0.250000 +vt 0.916667 0.333333 +vt 0.916667 0.416667 +vt 0.937500 0.500000 +vt 0.937500 0.583333 +vt 0.937500 0.666667 +vt 0.937500 0.750000 +vt 0.937500 0.833333 +vt 0.937500 0.916667 +vt 0.937500 1.000000 +vt 0.937500 0.000000 +vt 0.937500 0.083333 +vt 0.937500 0.166667 +vt 0.937500 0.250000 +vt 0.937500 0.333333 +vt 0.937500 0.416667 +vt 0.958333 0.500000 +vt 0.958333 0.583333 +vt 0.958333 0.666667 +vt 0.958333 0.750000 +vt 0.958333 0.833333 +vt 0.958333 0.916667 +vt 0.958333 1.000000 +vt 0.958333 0.000000 +vt 0.958333 0.083333 +vt 0.958333 0.166667 +vt 0.958333 0.250000 +vt 0.958333 0.333333 +vt 0.958333 0.416667 +vt 0.979167 0.500000 +vt 0.979167 0.583333 +vt 0.979167 0.666667 +vt 0.979167 0.750000 +vt 0.979167 0.833333 +vt 0.979167 0.916667 +vt 0.979167 1.000000 +vt 0.979167 0.000000 +vt 0.979167 0.083333 +vt 0.979167 0.166667 +vt 0.979167 0.250000 +vt 0.979167 0.333333 +vt 0.979167 0.416667 +vt 1.000000 0.500000 +vt 1.000000 0.583333 +vt 1.000000 0.666667 +vt 1.000000 0.750000 +vt 1.000000 0.833333 +vt 1.000000 0.916667 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 1.000000 0.083333 +vt 1.000000 0.166667 +vt 1.000000 0.250000 +vt 1.000000 0.333333 +vt 1.000000 0.416667 +vt 0.000000 0.500000 +vt 0.020833 0.500000 +vt 0.020833 0.583333 +vt 0.000000 0.583333 +vt 0.020833 0.666667 +vt 0.000000 0.666667 +vt 0.020833 0.750000 +vt 0.000000 0.750000 +vt 0.020833 0.833333 +vt 0.000000 0.833333 +vt 0.020833 0.916667 +vt 0.000000 0.916667 +vt 0.020833 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.020833 0.000000 +vt 0.020833 0.083333 +vt 0.000000 0.083333 +vt 0.020833 0.166667 +vt 0.000000 0.166667 +vt 0.020833 0.250000 +vt 0.000000 0.250000 +vt 0.020833 0.333333 +vt 0.000000 0.333333 +vt 0.020833 0.416667 +vt 0.000000 0.416667 +vt 0.041667 0.500000 +vt 0.041667 0.583333 +vt 0.041667 0.666667 +vt 0.041667 0.750000 +vt 0.041667 0.833333 +vt 0.041667 0.916667 +vt 0.041667 1.000000 +vt 0.041667 0.000000 +vt 0.041667 0.083333 +vt 0.041667 0.166667 +vt 0.041667 0.250000 +vt 0.041667 0.333333 +vt 0.041667 0.416667 +vt 0.062500 0.500000 +vt 0.062500 0.583333 +vt 0.062500 0.666667 +vt 0.062500 0.750000 +vt 0.062500 0.833333 +vt 0.062500 0.916667 +vt 0.062500 1.000000 +vt 0.062500 0.000000 +vt 0.062500 0.083333 +vt 0.062500 0.166667 +vt 0.062500 0.250000 +vt 0.062500 0.333333 +vt 0.062500 0.416667 +vt 0.083333 0.500000 +vt 0.083333 0.583333 +vt 0.083333 0.666667 +vt 0.083333 0.750000 +vt 0.083333 0.833333 +vt 0.083333 0.916667 +vt 0.083333 1.000000 +vt 0.083333 0.000000 +vt 0.083333 0.083333 +vt 0.083333 0.166667 +vt 0.083333 0.250000 +vt 0.083333 0.333333 +vt 0.083333 0.416667 +vt 0.104167 0.500000 +vt 0.104167 0.583333 +vt 0.104167 0.666667 +vt 0.104167 0.750000 +vt 0.104167 0.833333 +vt 0.104167 0.916667 +vt 0.104167 1.000000 +vt 0.104167 0.000000 +vt 0.104167 0.083333 +vt 0.104167 0.166667 +vt 0.104167 0.250000 +vt 0.104167 0.333333 +vt 0.104167 0.416667 +vt 0.125000 0.500000 +vt 0.125000 0.583333 +vt 0.125000 0.666667 +vt 0.125000 0.750000 +vt 0.125000 0.833333 +vt 0.125000 0.916667 +vt 0.125000 1.000000 +vt 0.125000 0.000000 +vt 0.125000 0.083333 +vt 0.125000 0.166667 +vt 0.125000 0.250000 +vt 0.125000 0.333333 +vt 0.125000 0.416667 +vt 0.145833 0.500000 +vt 0.145833 0.583333 +vt 0.145833 0.666667 +vt 0.145833 0.750000 +vt 0.145833 0.833333 +vt 0.145833 0.916667 +vt 0.145833 1.000000 +vt 0.145833 0.000000 +vt 0.145833 0.083333 +vt 0.145833 0.166667 +vt 0.145833 0.250000 +vt 0.145833 0.333333 +vt 0.145833 0.416667 +vt 0.166667 0.500000 +vt 0.166667 0.583333 +vt 0.166667 0.666667 +vt 0.166667 0.750000 +vt 0.166667 0.833333 +vt 0.166667 0.916667 +vt 0.166667 1.000000 +vt 0.166667 0.000000 +vt 0.166667 0.083333 +vt 0.166667 0.166667 +vt 0.166667 0.250000 +vt 0.166667 0.333333 +vt 0.166667 0.416667 +vt 0.187500 0.500000 +vt 0.187500 0.583333 +vt 0.187500 0.666667 +vt 0.187500 0.750000 +vt 0.187500 0.833333 +vt 0.187500 0.916667 +vt 0.187500 1.000000 +vt 0.187500 0.000000 +vt 0.187500 0.083333 +vt 0.187500 0.166667 +vt 0.187500 0.250000 +vt 0.187500 0.333333 +vt 0.187500 0.416667 +vt 0.208333 0.500000 +vt 0.208333 0.583333 +vt 0.208333 0.666667 +vt 0.208333 0.750000 +vt 0.208333 0.833333 +vt 0.208333 0.916667 +vt 0.208333 1.000000 +vt 0.208333 0.000000 +vt 0.208333 0.083333 +vt 0.208333 0.166667 +vt 0.208333 0.250000 +vt 0.208333 0.333333 +vt 0.208333 0.416667 +vt 0.229167 0.500000 +vt 0.229167 0.583333 +vt 0.229167 0.666667 +vt 0.229167 0.750000 +vt 0.229167 0.833333 +vt 0.229167 0.916667 +vt 0.229167 1.000000 +vt 0.229167 0.000000 +vt 0.229167 0.083333 +vt 0.229167 0.166667 +vt 0.229167 0.250000 +vt 0.229167 0.333333 +vt 0.229167 0.416667 +vt 0.250000 0.500000 +vt 0.250000 0.583333 +vt 0.250000 0.666667 +vt 0.250000 0.750000 +vt 0.250000 0.833333 +vt 0.250000 0.916667 +vt 0.250000 1.000000 +vt 0.250000 0.000000 +vt 0.250000 0.083333 +vt 0.250000 0.166667 +vt 0.250000 0.250000 +vt 0.250000 0.333333 +vt 0.250000 0.416667 +vt 0.270833 0.500000 +vt 0.270833 0.583333 +vt 0.270833 0.666667 +vt 0.270833 0.750000 +vt 0.270833 0.833333 +vt 0.270833 0.916667 +vt 0.270833 1.000000 +vt 0.270833 0.000000 +vt 0.270833 0.083333 +vt 0.270833 0.166667 +vt 0.270833 0.250000 +vt 0.270833 0.333333 +vt 0.270833 0.416667 +vt 0.291667 0.500000 +vt 0.291667 0.583333 +vt 0.291667 0.666667 +vt 0.291667 0.750000 +vt 0.291667 0.833333 +vt 0.291667 0.916667 +vt 0.291667 1.000000 +vt 0.291667 0.000000 +vt 0.291667 0.083333 +vt 0.291667 0.166667 +vt 0.291667 0.250000 +vt 0.291667 0.333333 +vt 0.291667 0.416667 +vt 0.312500 0.500000 +vt 0.312500 0.583333 +vt 0.312500 0.666667 +vt 0.312500 0.750000 +vt 0.312500 0.833333 +vt 0.312500 0.916667 +vt 0.312500 1.000000 +vt 0.312500 0.000000 +vt 0.312500 0.083333 +vt 0.312500 0.166667 +vt 0.312500 0.250000 +vt 0.312500 0.333333 +vt 0.312500 0.416667 +vt 0.333333 0.500000 +vt 0.333333 0.583333 +vt 0.333333 0.666667 +vt 0.333333 0.750000 +vt 0.333333 0.833333 +vt 0.333333 0.916667 +vt 0.333333 1.000000 +vt 0.333333 0.000000 +vt 0.333333 0.083333 +vt 0.333333 0.166667 +vt 0.333333 0.250000 +vt 0.333333 0.333333 +vt 0.333333 0.416667 +vt 0.354167 0.500000 +vt 0.354167 0.583333 +vt 0.354167 0.666667 +vt 0.354167 0.750000 +vt 0.354167 0.833333 +vt 0.354167 0.916667 +vt 0.354167 1.000000 +vt 0.354167 0.000000 +vt 0.354167 0.083333 +vt 0.354167 0.166667 +vt 0.354167 0.250000 +vt 0.354167 0.333333 +vt 0.354167 0.416667 +vt 0.375000 0.500000 +vt 0.375000 0.583333 +vt 0.375000 0.666667 +vt 0.375000 0.750000 +vt 0.375000 0.833333 +vt 0.375000 0.916667 +vt 0.375000 1.000000 +vt 0.375000 0.000000 +vt 0.375000 0.083333 +vt 0.375000 0.166667 +vt 0.375000 0.250000 +vt 0.375000 0.333333 +vt 0.375000 0.416667 +vt 0.395833 0.500000 +vt 0.395833 0.583333 +vt 0.395833 0.666667 +vt 0.395833 0.750000 +vt 0.395833 0.833333 +vt 0.395833 0.916667 +vt 0.395833 1.000000 +vt 0.395833 0.000000 +vt 0.395833 0.083333 +vt 0.395833 0.166667 +vt 0.395833 0.250000 +vt 0.395833 0.333333 +vt 0.395833 0.416667 +vt 0.416667 0.500000 +vt 0.416667 0.583333 +vt 0.416667 0.666667 +vt 0.416667 0.750000 +vt 0.416667 0.833333 +vt 0.416667 0.916667 +vt 0.416667 1.000000 +vt 0.416667 0.000000 +vt 0.416667 0.083333 +vt 0.416667 0.166667 +vt 0.416667 0.250000 +vt 0.416667 0.333333 +vt 0.416667 0.416667 +vt 0.437500 0.500000 +vt 0.437500 0.583333 +vt 0.437500 0.666667 +vt 0.437500 0.750000 +vt 0.437500 0.833333 +vt 0.437500 0.916667 +vt 0.437500 1.000000 +vt 0.437500 0.000000 +vt 0.437500 0.083333 +vt 0.437500 0.166667 +vt 0.437500 0.250000 +vt 0.437500 0.333333 +vt 0.437500 0.416667 +vt 0.458333 0.500000 +vt 0.458333 0.583333 +vt 0.458333 0.666667 +vt 0.458333 0.750000 +vt 0.458333 0.833333 +vt 0.458333 0.916667 +vt 0.458333 1.000000 +vt 0.458333 0.000000 +vt 0.458333 0.083333 +vt 0.458333 0.166667 +vt 0.458333 0.250000 +vt 0.458333 0.333333 +vt 0.458333 0.416667 +vt 0.479167 0.500000 +vt 0.479167 0.583333 +vt 0.479167 0.666667 +vt 0.479167 0.750000 +vt 0.479167 0.833333 +vt 0.479167 0.916667 +vt 0.479167 1.000000 +vt 0.479167 0.000000 +vt 0.479167 0.083333 +vt 0.479167 0.166667 +vt 0.479167 0.250000 +vt 0.479167 0.333333 +vt 0.479167 0.416667 +vn 0.9640 0.2583 -0.0632 +vn 0.7063 0.7063 -0.0463 +vn 0.2588 0.9658 -0.0170 +vn -0.2588 0.9658 0.0170 +vn -0.7063 0.7063 0.0463 +vn -0.9640 0.2583 0.0632 +vn -0.9640 -0.2583 0.0632 +vn -0.7063 -0.7063 0.0463 +vn -0.2588 -0.9658 0.0170 +vn 0.2588 -0.9658 -0.0170 +vn 0.7063 -0.7063 -0.0463 +vn 0.9640 -0.2583 -0.0632 +vn 0.9475 0.2583 -0.1885 +vn 0.6943 0.7063 -0.1381 +vn 0.2544 0.9658 -0.0506 +vn -0.2544 0.9658 0.0506 +vn -0.6943 0.7063 0.1381 +vn -0.9475 0.2583 0.1885 +vn -0.9475 -0.2583 0.1885 +vn -0.6943 -0.7063 0.1381 +vn -0.2544 -0.9658 0.0506 +vn 0.2544 -0.9658 -0.0506 +vn 0.6943 -0.7063 -0.1381 +vn 0.9475 -0.2583 -0.1885 +vn 0.9148 0.2583 -0.3105 +vn 0.6703 0.7063 -0.2275 +vn 0.2456 0.9658 -0.0834 +vn -0.2456 0.9658 0.0834 +vn -0.6703 0.7063 0.2275 +vn -0.9148 0.2583 0.3105 +vn -0.9148 -0.2583 0.3105 +vn -0.6703 -0.7063 0.2275 +vn -0.2456 -0.9658 0.0834 +vn 0.2456 -0.9658 -0.0834 +vn 0.6703 -0.7063 -0.2275 +vn 0.9148 -0.2583 -0.3105 +vn 0.8664 0.2583 -0.4273 +vn 0.6349 0.7063 -0.3131 +vn 0.2326 0.9658 -0.1147 +vn -0.2326 0.9658 0.1147 +vn -0.6349 0.7063 0.3131 +vn -0.8664 0.2583 0.4273 +vn -0.8664 -0.2583 0.4273 +vn -0.6349 -0.7063 0.3131 +vn -0.2326 -0.9658 0.1147 +vn 0.2326 -0.9658 -0.1147 +vn 0.6349 -0.7063 -0.3131 +vn 0.8664 -0.2583 -0.4273 +vn 0.8033 0.2583 -0.5367 +vn 0.5886 0.7063 -0.3933 +vn 0.2156 0.9658 -0.1441 +vn -0.2156 0.9658 0.1441 +vn -0.5886 0.7063 0.3933 +vn -0.8033 0.2583 0.5367 +vn -0.8033 -0.2583 0.5367 +vn -0.5886 -0.7063 0.3933 +vn -0.2156 -0.9658 0.1441 +vn 0.2156 -0.9658 -0.1441 +vn 0.5886 -0.7063 -0.3933 +vn 0.8033 -0.2583 -0.5367 +vn 0.7263 0.2583 -0.6370 +vn 0.5322 0.7063 -0.4667 +vn 0.1950 0.9658 -0.1710 +vn -0.1950 0.9658 0.1710 +vn -0.5322 0.7063 0.4667 +vn -0.7263 0.2583 0.6370 +vn -0.7263 -0.2583 0.6370 +vn -0.5322 -0.7063 0.4667 +vn -0.1950 -0.9658 0.1710 +vn 0.1950 -0.9658 -0.1710 +vn 0.5322 -0.7063 -0.4667 +vn 0.7263 -0.2583 -0.6370 +vn 0.6370 0.2583 -0.7263 +vn 0.4667 0.7063 -0.5322 +vn 0.1710 0.9658 -0.1950 +vn -0.1710 0.9658 0.1950 +vn -0.4667 0.7063 0.5322 +vn -0.6370 0.2583 0.7263 +vn -0.6370 -0.2583 0.7263 +vn -0.4667 -0.7063 0.5322 +vn -0.1710 -0.9658 0.1950 +vn 0.1710 -0.9658 -0.1950 +vn 0.4667 -0.7063 -0.5322 +vn 0.6370 -0.2583 -0.7263 +vn 0.5367 0.2583 -0.8033 +vn 0.3933 0.7063 -0.5886 +vn 0.1441 0.9658 -0.2156 +vn -0.1441 0.9658 0.2156 +vn -0.3933 0.7063 0.5886 +vn -0.5367 0.2583 0.8033 +vn -0.5367 -0.2583 0.8033 +vn -0.3933 -0.7063 0.5886 +vn -0.1441 -0.9658 0.2156 +vn 0.1441 -0.9658 -0.2156 +vn 0.3933 -0.7063 -0.5886 +vn 0.5367 -0.2583 -0.8033 +vn 0.4273 0.2583 -0.8664 +vn 0.3131 0.7063 -0.6349 +vn 0.1147 0.9658 -0.2326 +vn -0.1147 0.9658 0.2326 +vn -0.3131 0.7063 0.6349 +vn -0.4273 0.2583 0.8664 +vn -0.4273 -0.2583 0.8664 +vn -0.3131 -0.7063 0.6349 +vn -0.1147 -0.9658 0.2326 +vn 0.1147 -0.9658 -0.2326 +vn 0.3131 -0.7063 -0.6349 +vn 0.4273 -0.2583 -0.8664 +vn 0.3105 0.2583 -0.9148 +vn 0.2275 0.7063 -0.6703 +vn 0.0834 0.9658 -0.2456 +vn -0.0834 0.9658 0.2456 +vn -0.2275 0.7063 0.6703 +vn -0.3105 0.2583 0.9148 +vn -0.3105 -0.2583 0.9148 +vn -0.2275 -0.7063 0.6703 +vn -0.0834 -0.9658 0.2456 +vn 0.0834 -0.9658 -0.2456 +vn 0.2275 -0.7063 -0.6703 +vn 0.3105 -0.2583 -0.9148 +vn 0.1885 0.2583 -0.9475 +vn 0.1381 0.7063 -0.6943 +vn 0.0506 0.9658 -0.2544 +vn -0.0506 0.9658 0.2544 +vn -0.1381 0.7063 0.6943 +vn -0.1885 0.2583 0.9475 +vn -0.1885 -0.2583 0.9475 +vn -0.1381 -0.7063 0.6943 +vn -0.0506 -0.9658 0.2544 +vn 0.0506 -0.9658 -0.2544 +vn 0.1381 -0.7063 -0.6943 +vn 0.1885 -0.2583 -0.9475 +vn 0.0632 0.2583 -0.9640 +vn 0.0463 0.7063 -0.7063 +vn 0.0170 0.9658 -0.2588 +vn -0.0170 0.9658 0.2588 +vn -0.0463 0.7063 0.7063 +vn -0.0632 0.2583 0.9640 +vn -0.0632 -0.2583 0.9640 +vn -0.0463 -0.7063 0.7063 +vn -0.0170 -0.9658 0.2588 +vn 0.0170 -0.9658 -0.2588 +vn 0.0463 -0.7063 -0.7063 +vn 0.0632 -0.2583 -0.9640 +vn -0.0632 0.2583 -0.9640 +vn -0.0463 0.7063 -0.7063 +vn -0.0170 0.9658 -0.2588 +vn 0.0170 0.9658 0.2588 +vn 0.0463 0.7063 0.7063 +vn 0.0632 0.2583 0.9640 +vn 0.0632 -0.2583 0.9640 +vn 0.0463 -0.7063 0.7063 +vn 0.0170 -0.9658 0.2588 +vn -0.0170 -0.9658 -0.2588 +vn -0.0463 -0.7063 -0.7063 +vn -0.0632 -0.2583 -0.9640 +vn -0.1885 0.2583 -0.9475 +vn -0.1381 0.7063 -0.6943 +vn -0.0506 0.9658 -0.2544 +vn 0.0506 0.9658 0.2544 +vn 0.1381 0.7063 0.6943 +vn 0.1885 0.2583 0.9475 +vn 0.1885 -0.2583 0.9475 +vn 0.1381 -0.7063 0.6943 +vn 0.0506 -0.9658 0.2544 +vn -0.0506 -0.9658 -0.2544 +vn -0.1381 -0.7063 -0.6943 +vn -0.1885 -0.2583 -0.9475 +vn -0.3105 0.2583 -0.9148 +vn -0.2275 0.7063 -0.6703 +vn -0.0834 0.9658 -0.2456 +vn 0.0834 0.9658 0.2456 +vn 0.2275 0.7063 0.6703 +vn 0.3105 0.2583 0.9148 +vn 0.3105 -0.2583 0.9148 +vn 0.2275 -0.7063 0.6703 +vn 0.0834 -0.9658 0.2456 +vn -0.0834 -0.9658 -0.2456 +vn -0.2275 -0.7063 -0.6703 +vn -0.3105 -0.2583 -0.9148 +vn -0.4273 0.2583 -0.8664 +vn -0.3131 0.7063 -0.6349 +vn -0.1147 0.9658 -0.2326 +vn 0.1147 0.9658 0.2326 +vn 0.3131 0.7063 0.6349 +vn 0.4273 0.2583 0.8664 +vn 0.4273 -0.2583 0.8664 +vn 0.3131 -0.7063 0.6349 +vn 0.1147 -0.9658 0.2326 +vn -0.1147 -0.9658 -0.2326 +vn -0.3131 -0.7063 -0.6349 +vn -0.4273 -0.2583 -0.8664 +vn -0.5367 0.2583 -0.8033 +vn -0.3933 0.7063 -0.5886 +vn -0.1441 0.9658 -0.2156 +vn 0.1441 0.9658 0.2156 +vn 0.3933 0.7063 0.5886 +vn 0.5367 0.2583 0.8033 +vn 0.5367 -0.2583 0.8033 +vn 0.3933 -0.7063 0.5886 +vn 0.1441 -0.9658 0.2156 +vn -0.1441 -0.9658 -0.2156 +vn -0.3933 -0.7063 -0.5886 +vn -0.5367 -0.2583 -0.8033 +vn -0.6370 0.2583 -0.7263 +vn -0.4667 0.7063 -0.5322 +vn -0.1710 0.9658 -0.1950 +vn 0.1710 0.9658 0.1950 +vn 0.4667 0.7063 0.5322 +vn 0.6370 0.2583 0.7263 +vn 0.6370 -0.2583 0.7263 +vn 0.4667 -0.7063 0.5322 +vn 0.1710 -0.9658 0.1950 +vn -0.1710 -0.9658 -0.1950 +vn -0.4667 -0.7063 -0.5322 +vn -0.6370 -0.2583 -0.7263 +vn -0.7263 0.2583 -0.6370 +vn -0.5322 0.7063 -0.4667 +vn -0.1950 0.9658 -0.1710 +vn 0.1950 0.9658 0.1710 +vn 0.5322 0.7063 0.4667 +vn 0.7263 0.2583 0.6370 +vn 0.7263 -0.2583 0.6370 +vn 0.5322 -0.7063 0.4667 +vn 0.1950 -0.9658 0.1710 +vn -0.1950 -0.9658 -0.1710 +vn -0.5322 -0.7063 -0.4667 +vn -0.7263 -0.2583 -0.6370 +vn -0.8033 0.2583 -0.5367 +vn -0.5886 0.7063 -0.3933 +vn -0.2156 0.9658 -0.1441 +vn 0.2156 0.9658 0.1441 +vn 0.5886 0.7063 0.3933 +vn 0.8033 0.2583 0.5367 +vn 0.8033 -0.2583 0.5367 +vn 0.5886 -0.7063 0.3933 +vn 0.2156 -0.9658 0.1441 +vn -0.2156 -0.9658 -0.1441 +vn -0.5886 -0.7063 -0.3933 +vn -0.8033 -0.2583 -0.5367 +vn -0.8664 0.2583 -0.4273 +vn -0.6349 0.7063 -0.3131 +vn -0.2326 0.9658 -0.1147 +vn 0.2326 0.9658 0.1147 +vn 0.6349 0.7063 0.3131 +vn 0.8664 0.2583 0.4273 +vn 0.8664 -0.2583 0.4273 +vn 0.6349 -0.7063 0.3131 +vn 0.2326 -0.9658 0.1147 +vn -0.2326 -0.9658 -0.1147 +vn -0.6349 -0.7063 -0.3131 +vn -0.8664 -0.2583 -0.4273 +vn -0.9148 0.2583 -0.3105 +vn -0.6703 0.7063 -0.2275 +vn -0.2456 0.9658 -0.0834 +vn 0.2456 0.9658 0.0834 +vn 0.6703 0.7063 0.2275 +vn 0.9148 0.2583 0.3105 +vn 0.9148 -0.2583 0.3105 +vn 0.6703 -0.7063 0.2275 +vn 0.2456 -0.9658 0.0834 +vn -0.2456 -0.9658 -0.0834 +vn -0.6703 -0.7063 -0.2275 +vn -0.9148 -0.2583 -0.3105 +vn -0.9475 0.2583 -0.1885 +vn -0.6943 0.7063 -0.1381 +vn -0.2544 0.9658 -0.0506 +vn 0.2544 0.9658 0.0506 +vn 0.6943 0.7063 0.1381 +vn 0.9475 0.2583 0.1885 +vn 0.9475 -0.2583 0.1885 +vn 0.6943 -0.7063 0.1381 +vn 0.2544 -0.9658 0.0506 +vn -0.2544 -0.9658 -0.0506 +vn -0.6943 -0.7063 -0.1381 +vn -0.9475 -0.2583 -0.1885 +vn -0.9640 0.2583 -0.0632 +vn -0.7063 0.7063 -0.0463 +vn -0.2588 0.9658 -0.0170 +vn 0.2588 0.9658 0.0170 +vn 0.7063 0.7063 0.0463 +vn 0.9640 0.2583 0.0632 +vn 0.9640 -0.2583 0.0632 +vn 0.7063 -0.7063 0.0463 +vn 0.2588 -0.9658 0.0170 +vn -0.2588 -0.9658 -0.0170 +vn -0.7063 -0.7063 -0.0463 +vn -0.9640 -0.2583 -0.0632 +usemtl Material.004 +s off +f 1/1/1 13/2/1 14/3/1 2/4/1 +f 2/4/2 14/3/2 15/5/2 3/6/2 +f 3/6/3 15/5/3 16/7/3 4/8/3 +f 4/8/4 16/7/4 17/9/4 5/10/4 +f 5/10/5 17/9/5 18/11/5 6/12/5 +f 6/12/6 18/11/6 19/13/6 7/14/6 +f 7/15/7 19/16/7 20/17/7 8/18/7 +f 8/18/8 20/17/8 21/19/8 9/20/8 +f 9/20/9 21/19/9 22/21/9 10/22/9 +f 10/22/10 22/21/10 23/23/10 11/24/10 +f 11/24/11 23/23/11 24/25/11 12/26/11 +f 12/26/12 24/25/12 13/2/12 1/1/12 +f 13/2/13 25/27/13 26/28/13 14/3/13 +f 14/3/14 26/28/14 27/29/14 15/5/14 +f 15/5/15 27/29/15 28/30/15 16/7/15 +f 16/7/16 28/30/16 29/31/16 17/9/16 +f 17/9/17 29/31/17 30/32/17 18/11/17 +f 18/11/18 30/32/18 31/33/18 19/13/18 +f 19/16/19 31/34/19 32/35/19 20/17/19 +f 20/17/20 32/35/20 33/36/20 21/19/20 +f 21/19/21 33/36/21 34/37/21 22/21/21 +f 22/21/22 34/37/22 35/38/22 23/23/22 +f 23/23/23 35/38/23 36/39/23 24/25/23 +f 24/25/24 36/39/24 25/27/24 13/2/24 +f 25/27/25 37/40/25 38/41/25 26/28/25 +f 26/28/26 38/41/26 39/42/26 27/29/26 +f 27/29/27 39/42/27 40/43/27 28/30/27 +f 28/30/28 40/43/28 41/44/28 29/31/28 +f 29/31/29 41/44/29 42/45/29 30/32/29 +f 30/32/30 42/45/30 43/46/30 31/33/30 +f 31/34/31 43/47/31 44/48/31 32/35/31 +f 32/35/32 44/48/32 45/49/32 33/36/32 +f 33/36/33 45/49/33 46/50/33 34/37/33 +f 34/37/34 46/50/34 47/51/34 35/38/34 +f 35/38/35 47/51/35 48/52/35 36/39/35 +f 36/39/36 48/52/36 37/40/36 25/27/36 +f 37/40/37 49/53/37 50/54/37 38/41/37 +f 38/41/38 50/54/38 51/55/38 39/42/38 +f 39/42/39 51/55/39 52/56/39 40/43/39 +f 40/43/40 52/56/40 53/57/40 41/44/40 +f 41/44/41 53/57/41 54/58/41 42/45/41 +f 42/45/42 54/58/42 55/59/42 43/46/42 +f 43/47/43 55/60/43 56/61/43 44/48/43 +f 44/48/44 56/61/44 57/62/44 45/49/44 +f 45/49/45 57/62/45 58/63/45 46/50/45 +f 46/50/46 58/63/46 59/64/46 47/51/46 +f 47/51/47 59/64/47 60/65/47 48/52/47 +f 48/52/48 60/65/48 49/53/48 37/40/48 +f 49/53/49 61/66/49 62/67/49 50/54/49 +f 50/54/50 62/67/50 63/68/50 51/55/50 +f 51/55/51 63/68/51 64/69/51 52/56/51 +f 52/56/52 64/69/52 65/70/52 53/57/52 +f 53/57/53 65/70/53 66/71/53 54/58/53 +f 54/58/54 66/71/54 67/72/54 55/59/54 +f 55/60/55 67/73/55 68/74/55 56/61/55 +f 56/61/56 68/74/56 69/75/56 57/62/56 +f 57/62/57 69/75/57 70/76/57 58/63/57 +f 58/63/58 70/76/58 71/77/58 59/64/58 +f 59/64/59 71/77/59 72/78/59 60/65/59 +f 60/65/60 72/78/60 61/66/60 49/53/60 +f 61/66/61 73/79/61 74/80/61 62/67/61 +f 62/67/62 74/80/62 75/81/62 63/68/62 +f 63/68/63 75/81/63 76/82/63 64/69/63 +f 64/69/64 76/82/64 77/83/64 65/70/64 +f 65/70/65 77/83/65 78/84/65 66/71/65 +f 66/71/66 78/84/66 79/85/66 67/72/66 +f 67/73/67 79/86/67 80/87/67 68/74/67 +f 68/74/68 80/87/68 81/88/68 69/75/68 +f 69/75/69 81/88/69 82/89/69 70/76/69 +f 70/76/70 82/89/70 83/90/70 71/77/70 +f 71/77/71 83/90/71 84/91/71 72/78/71 +f 72/78/72 84/91/72 73/79/72 61/66/72 +f 73/79/73 85/92/73 86/93/73 74/80/73 +f 74/80/74 86/93/74 87/94/74 75/81/74 +f 75/81/75 87/94/75 88/95/75 76/82/75 +f 76/82/76 88/95/76 89/96/76 77/83/76 +f 77/83/77 89/96/77 90/97/77 78/84/77 +f 78/84/78 90/97/78 91/98/78 79/85/78 +f 79/86/79 91/99/79 92/100/79 80/87/79 +f 80/87/80 92/100/80 93/101/80 81/88/80 +f 81/88/81 93/101/81 94/102/81 82/89/81 +f 82/89/82 94/102/82 95/103/82 83/90/82 +f 83/90/83 95/103/83 96/104/83 84/91/83 +f 84/91/84 96/104/84 85/92/84 73/79/84 +f 85/92/85 97/105/85 98/106/85 86/93/85 +f 86/93/86 98/106/86 99/107/86 87/94/86 +f 87/94/87 99/107/87 100/108/87 88/95/87 +f 88/95/88 100/108/88 101/109/88 89/96/88 +f 89/96/89 101/109/89 102/110/89 90/97/89 +f 90/97/90 102/110/90 103/111/90 91/98/90 +f 91/99/91 103/112/91 104/113/91 92/100/91 +f 92/100/92 104/113/92 105/114/92 93/101/92 +f 93/101/93 105/114/93 106/115/93 94/102/93 +f 94/102/94 106/115/94 107/116/94 95/103/94 +f 95/103/95 107/116/95 108/117/95 96/104/95 +f 96/104/96 108/117/96 97/105/96 85/92/96 +f 97/105/97 109/118/97 110/119/97 98/106/97 +f 98/106/98 110/119/98 111/120/98 99/107/98 +f 99/107/99 111/120/99 112/121/99 100/108/99 +f 100/108/100 112/121/100 113/122/100 101/109/100 +f 101/109/101 113/122/101 114/123/101 102/110/101 +f 102/110/102 114/123/102 115/124/102 103/111/102 +f 103/112/103 115/125/103 116/126/103 104/113/103 +f 104/113/104 116/126/104 117/127/104 105/114/104 +f 105/114/105 117/127/105 118/128/105 106/115/105 +f 106/115/106 118/128/106 119/129/106 107/116/106 +f 107/116/107 119/129/107 120/130/107 108/117/107 +f 108/117/108 120/130/108 109/118/108 97/105/108 +f 109/118/109 121/131/109 122/132/109 110/119/109 +f 110/119/110 122/132/110 123/133/110 111/120/110 +f 111/120/111 123/133/111 124/134/111 112/121/111 +f 112/121/112 124/134/112 125/135/112 113/122/112 +f 113/122/113 125/135/113 126/136/113 114/123/113 +f 114/123/114 126/136/114 127/137/114 115/124/114 +f 115/125/115 127/138/115 128/139/115 116/126/115 +f 116/126/116 128/139/116 129/140/116 117/127/116 +f 117/127/117 129/140/117 130/141/117 118/128/117 +f 118/128/118 130/141/118 131/142/118 119/129/118 +f 119/129/119 131/142/119 132/143/119 120/130/119 +f 120/130/120 132/143/120 121/131/120 109/118/120 +f 121/131/121 133/144/121 134/145/121 122/132/121 +f 122/132/122 134/145/122 135/146/122 123/133/122 +f 123/133/123 135/146/123 136/147/123 124/134/123 +f 124/134/124 136/147/124 137/148/124 125/135/124 +f 125/135/125 137/148/125 138/149/125 126/136/125 +f 126/136/126 138/149/126 139/150/126 127/137/126 +f 127/138/127 139/151/127 140/152/127 128/139/127 +f 128/139/128 140/152/128 141/153/128 129/140/128 +f 129/140/129 141/153/129 142/154/129 130/141/129 +f 130/141/130 142/154/130 143/155/130 131/142/130 +f 131/142/131 143/155/131 144/156/131 132/143/131 +f 132/143/132 144/156/132 133/144/132 121/131/132 +f 133/144/133 145/157/133 146/158/133 134/145/133 +f 134/145/134 146/158/134 147/159/134 135/146/134 +f 135/146/135 147/159/135 148/160/135 136/147/135 +f 136/147/136 148/160/136 149/161/136 137/148/136 +f 137/148/137 149/161/137 150/162/137 138/149/137 +f 138/149/138 150/162/138 151/163/138 139/150/138 +f 139/151/139 151/164/139 152/165/139 140/152/139 +f 140/152/140 152/165/140 153/166/140 141/153/140 +f 141/153/141 153/166/141 154/167/141 142/154/141 +f 142/154/142 154/167/142 155/168/142 143/155/142 +f 143/155/143 155/168/143 156/169/143 144/156/143 +f 144/156/144 156/169/144 145/157/144 133/144/144 +f 145/157/145 157/170/145 158/171/145 146/158/145 +f 146/158/146 158/171/146 159/172/146 147/159/146 +f 147/159/147 159/172/147 160/173/147 148/160/147 +f 148/160/148 160/173/148 161/174/148 149/161/148 +f 149/161/149 161/174/149 162/175/149 150/162/149 +f 150/162/150 162/175/150 163/176/150 151/163/150 +f 151/164/151 163/177/151 164/178/151 152/165/151 +f 152/165/152 164/178/152 165/179/152 153/166/152 +f 153/166/153 165/179/153 166/180/153 154/167/153 +f 154/167/154 166/180/154 167/181/154 155/168/154 +f 155/168/155 167/181/155 168/182/155 156/169/155 +f 156/169/156 168/182/156 157/170/156 145/157/156 +f 157/170/157 169/183/157 170/184/157 158/171/157 +f 158/171/158 170/184/158 171/185/158 159/172/158 +f 159/172/159 171/185/159 172/186/159 160/173/159 +f 160/173/160 172/186/160 173/187/160 161/174/160 +f 161/174/161 173/187/161 174/188/161 162/175/161 +f 162/175/162 174/188/162 175/189/162 163/176/162 +f 163/177/163 175/190/163 176/191/163 164/178/163 +f 164/178/164 176/191/164 177/192/164 165/179/164 +f 165/179/165 177/192/165 178/193/165 166/180/165 +f 166/180/166 178/193/166 179/194/166 167/181/166 +f 167/181/167 179/194/167 180/195/167 168/182/167 +f 168/182/168 180/195/168 169/183/168 157/170/168 +f 169/183/169 181/196/169 182/197/169 170/184/169 +f 170/184/170 182/197/170 183/198/170 171/185/170 +f 171/185/171 183/198/171 184/199/171 172/186/171 +f 172/186/172 184/199/172 185/200/172 173/187/172 +f 173/187/173 185/200/173 186/201/173 174/188/173 +f 174/188/174 186/201/174 187/202/174 175/189/174 +f 175/190/175 187/203/175 188/204/175 176/191/175 +f 176/191/176 188/204/176 189/205/176 177/192/176 +f 177/192/177 189/205/177 190/206/177 178/193/177 +f 178/193/178 190/206/178 191/207/178 179/194/178 +f 179/194/179 191/207/179 192/208/179 180/195/179 +f 180/195/180 192/208/180 181/196/180 169/183/180 +f 181/196/181 193/209/181 194/210/181 182/197/181 +f 182/197/182 194/210/182 195/211/182 183/198/182 +f 183/198/183 195/211/183 196/212/183 184/199/183 +f 184/199/184 196/212/184 197/213/184 185/200/184 +f 185/200/185 197/213/185 198/214/185 186/201/185 +f 186/201/186 198/214/186 199/215/186 187/202/186 +f 187/203/187 199/216/187 200/217/187 188/204/187 +f 188/204/188 200/217/188 201/218/188 189/205/188 +f 189/205/189 201/218/189 202/219/189 190/206/189 +f 190/206/190 202/219/190 203/220/190 191/207/190 +f 191/207/191 203/220/191 204/221/191 192/208/191 +f 192/208/192 204/221/192 193/209/192 181/196/192 +f 193/209/193 205/222/193 206/223/193 194/210/193 +f 194/210/194 206/223/194 207/224/194 195/211/194 +f 195/211/195 207/224/195 208/225/195 196/212/195 +f 196/212/196 208/225/196 209/226/196 197/213/196 +f 197/213/197 209/226/197 210/227/197 198/214/197 +f 198/214/198 210/227/198 211/228/198 199/215/198 +f 199/216/199 211/229/199 212/230/199 200/217/199 +f 200/217/200 212/230/200 213/231/200 201/218/200 +f 201/218/201 213/231/201 214/232/201 202/219/201 +f 202/219/202 214/232/202 215/233/202 203/220/202 +f 203/220/203 215/233/203 216/234/203 204/221/203 +f 204/221/204 216/234/204 205/222/204 193/209/204 +f 205/222/205 217/235/205 218/236/205 206/223/205 +f 206/223/206 218/236/206 219/237/206 207/224/206 +f 207/224/207 219/237/207 220/238/207 208/225/207 +f 208/225/208 220/238/208 221/239/208 209/226/208 +f 209/226/209 221/239/209 222/240/209 210/227/209 +f 210/227/210 222/240/210 223/241/210 211/228/210 +f 211/229/211 223/242/211 224/243/211 212/230/211 +f 212/230/212 224/243/212 225/244/212 213/231/212 +f 213/231/213 225/244/213 226/245/213 214/232/213 +f 214/232/214 226/245/214 227/246/214 215/233/214 +f 215/233/215 227/246/215 228/247/215 216/234/215 +f 216/234/216 228/247/216 217/235/216 205/222/216 +f 217/235/217 229/248/217 230/249/217 218/236/217 +f 218/236/218 230/249/218 231/250/218 219/237/218 +f 219/237/219 231/250/219 232/251/219 220/238/219 +f 220/238/220 232/251/220 233/252/220 221/239/220 +f 221/239/221 233/252/221 234/253/221 222/240/221 +f 222/240/222 234/253/222 235/254/222 223/241/222 +f 223/242/223 235/255/223 236/256/223 224/243/223 +f 224/243/224 236/256/224 237/257/224 225/244/224 +f 225/244/225 237/257/225 238/258/225 226/245/225 +f 226/245/226 238/258/226 239/259/226 227/246/226 +f 227/246/227 239/259/227 240/260/227 228/247/227 +f 228/247/228 240/260/228 229/248/228 217/235/228 +f 229/248/229 241/261/229 242/262/229 230/249/229 +f 230/249/230 242/262/230 243/263/230 231/250/230 +f 231/250/231 243/263/231 244/264/231 232/251/231 +f 232/251/232 244/264/232 245/265/232 233/252/232 +f 233/252/233 245/265/233 246/266/233 234/253/233 +f 234/253/234 246/266/234 247/267/234 235/254/234 +f 235/255/235 247/268/235 248/269/235 236/256/235 +f 236/256/236 248/269/236 249/270/236 237/257/236 +f 237/257/237 249/270/237 250/271/237 238/258/237 +f 238/258/238 250/271/238 251/272/238 239/259/238 +f 239/259/239 251/272/239 252/273/239 240/260/239 +f 240/260/240 252/273/240 241/261/240 229/248/240 +f 241/261/241 253/274/241 254/275/241 242/262/241 +f 242/262/242 254/275/242 255/276/242 243/263/242 +f 243/263/243 255/276/243 256/277/243 244/264/243 +f 244/264/244 256/277/244 257/278/244 245/265/244 +f 245/265/245 257/278/245 258/279/245 246/266/245 +f 246/266/246 258/279/246 259/280/246 247/267/246 +f 247/268/247 259/281/247 260/282/247 248/269/247 +f 248/269/248 260/282/248 261/283/248 249/270/248 +f 249/270/249 261/283/249 262/284/249 250/271/249 +f 250/271/250 262/284/250 263/285/250 251/272/250 +f 251/272/251 263/285/251 264/286/251 252/273/251 +f 252/273/252 264/286/252 253/274/252 241/261/252 +f 253/274/253 265/287/253 266/288/253 254/275/253 +f 254/275/254 266/288/254 267/289/254 255/276/254 +f 255/276/255 267/289/255 268/290/255 256/277/255 +f 256/277/256 268/290/256 269/291/256 257/278/256 +f 257/278/257 269/291/257 270/292/257 258/279/257 +f 258/279/258 270/292/258 271/293/258 259/280/258 +f 259/281/259 271/294/259 272/295/259 260/282/259 +f 260/282/260 272/295/260 273/296/260 261/283/260 +f 261/283/261 273/296/261 274/297/261 262/284/261 +f 262/284/262 274/297/262 275/298/262 263/285/262 +f 263/285/263 275/298/263 276/299/263 264/286/263 +f 264/286/264 276/299/264 265/287/264 253/274/264 +f 265/287/265 277/300/265 278/301/265 266/288/265 +f 266/288/266 278/301/266 279/302/266 267/289/266 +f 267/289/267 279/302/267 280/303/267 268/290/267 +f 268/290/268 280/303/268 281/304/268 269/291/268 +f 269/291/269 281/304/269 282/305/269 270/292/269 +f 270/292/270 282/305/270 283/306/270 271/293/270 +f 271/294/271 283/307/271 284/308/271 272/295/271 +f 272/295/272 284/308/272 285/309/272 273/296/272 +f 273/296/273 285/309/273 286/310/273 274/297/273 +f 274/297/274 286/310/274 287/311/274 275/298/274 +f 275/298/275 287/311/275 288/312/275 276/299/275 +f 276/299/276 288/312/276 277/300/276 265/287/276 +f 277/300/277 289/313/277 290/314/277 278/301/277 +f 278/301/278 290/314/278 291/315/278 279/302/278 +f 279/302/279 291/315/279 292/316/279 280/303/279 +f 280/303/280 292/316/280 293/317/280 281/304/280 +f 281/304/281 293/317/281 294/318/281 282/305/281 +f 282/305/282 294/318/282 295/319/282 283/306/282 +f 283/307/283 295/320/283 296/321/283 284/308/283 +f 284/308/284 296/321/284 297/322/284 285/309/284 +f 285/309/285 297/322/285 298/323/285 286/310/285 +f 286/310/286 298/323/286 299/324/286 287/311/286 +f 287/311/287 299/324/287 300/325/287 288/312/287 +f 288/312/288 300/325/288 289/313/288 277/300/288 +f 289/326/6 301/327/6 302/328/6 290/329/6 +f 290/329/5 302/328/5 303/330/5 291/331/5 +f 291/331/4 303/330/4 304/332/4 292/333/4 +f 292/333/3 304/332/3 305/334/3 293/335/3 +f 293/335/2 305/334/2 306/336/2 294/337/2 +f 294/337/1 306/336/1 307/338/1 295/339/1 +f 295/340/12 307/341/12 308/342/12 296/343/12 +f 296/343/11 308/342/11 309/344/11 297/345/11 +f 297/345/10 309/344/10 310/346/10 298/347/10 +f 298/347/9 310/346/9 311/348/9 299/349/9 +f 299/349/8 311/348/8 312/350/8 300/351/8 +f 300/351/7 312/350/7 301/327/7 289/326/7 +f 301/327/18 313/352/18 314/353/18 302/328/18 +f 302/328/17 314/353/17 315/354/17 303/330/17 +f 303/330/16 315/354/16 316/355/16 304/332/16 +f 304/332/15 316/355/15 317/356/15 305/334/15 +f 305/334/14 317/356/14 318/357/14 306/336/14 +f 306/336/13 318/357/13 319/358/13 307/338/13 +f 307/341/24 319/359/24 320/360/24 308/342/24 +f 308/342/23 320/360/23 321/361/23 309/344/23 +f 309/344/22 321/361/22 322/362/22 310/346/22 +f 310/346/21 322/362/21 323/363/21 311/348/21 +f 311/348/20 323/363/20 324/364/20 312/350/20 +f 312/350/19 324/364/19 313/352/19 301/327/19 +f 313/352/30 325/365/30 326/366/30 314/353/30 +f 314/353/29 326/366/29 327/367/29 315/354/29 +f 315/354/28 327/367/28 328/368/28 316/355/28 +f 316/355/27 328/368/27 329/369/27 317/356/27 +f 317/356/26 329/369/26 330/370/26 318/357/26 +f 318/357/25 330/370/25 331/371/25 319/358/25 +f 319/359/36 331/372/36 332/373/36 320/360/36 +f 320/360/35 332/373/35 333/374/35 321/361/35 +f 321/361/34 333/374/34 334/375/34 322/362/34 +f 322/362/33 334/375/33 335/376/33 323/363/33 +f 323/363/32 335/376/32 336/377/32 324/364/32 +f 324/364/31 336/377/31 325/365/31 313/352/31 +f 325/365/42 337/378/42 338/379/42 326/366/42 +f 326/366/41 338/379/41 339/380/41 327/367/41 +f 327/367/40 339/380/40 340/381/40 328/368/40 +f 328/368/39 340/381/39 341/382/39 329/369/39 +f 329/369/38 341/382/38 342/383/38 330/370/38 +f 330/370/37 342/383/37 343/384/37 331/371/37 +f 331/372/48 343/385/48 344/386/48 332/373/48 +f 332/373/47 344/386/47 345/387/47 333/374/47 +f 333/374/46 345/387/46 346/388/46 334/375/46 +f 334/375/45 346/388/45 347/389/45 335/376/45 +f 335/376/44 347/389/44 348/390/44 336/377/44 +f 336/377/43 348/390/43 337/378/43 325/365/43 +f 337/378/54 349/391/54 350/392/54 338/379/54 +f 338/379/53 350/392/53 351/393/53 339/380/53 +f 339/380/52 351/393/52 352/394/52 340/381/52 +f 340/381/51 352/394/51 353/395/51 341/382/51 +f 341/382/50 353/395/50 354/396/50 342/383/50 +f 342/383/49 354/396/49 355/397/49 343/384/49 +f 343/385/60 355/398/60 356/399/60 344/386/60 +f 344/386/59 356/399/59 357/400/59 345/387/59 +f 345/387/58 357/400/58 358/401/58 346/388/58 +f 346/388/57 358/401/57 359/402/57 347/389/57 +f 347/389/56 359/402/56 360/403/56 348/390/56 +f 348/390/55 360/403/55 349/391/55 337/378/55 +f 349/391/66 361/404/66 362/405/66 350/392/66 +f 350/392/65 362/405/65 363/406/65 351/393/65 +f 351/393/64 363/406/64 364/407/64 352/394/64 +f 352/394/63 364/407/63 365/408/63 353/395/63 +f 353/395/62 365/408/62 366/409/62 354/396/62 +f 354/396/61 366/409/61 367/410/61 355/397/61 +f 355/398/72 367/411/72 368/412/72 356/399/72 +f 356/399/71 368/412/71 369/413/71 357/400/71 +f 357/400/70 369/413/70 370/414/70 358/401/70 +f 358/401/69 370/414/69 371/415/69 359/402/69 +f 359/402/68 371/415/68 372/416/68 360/403/68 +f 360/403/67 372/416/67 361/404/67 349/391/67 +f 361/404/78 373/417/78 374/418/78 362/405/78 +f 362/405/77 374/418/77 375/419/77 363/406/77 +f 363/406/76 375/419/76 376/420/76 364/407/76 +f 364/407/75 376/420/75 377/421/75 365/408/75 +f 365/408/74 377/421/74 378/422/74 366/409/74 +f 366/409/73 378/422/73 379/423/73 367/410/73 +f 367/411/84 379/424/84 380/425/84 368/412/84 +f 368/412/83 380/425/83 381/426/83 369/413/83 +f 369/413/82 381/426/82 382/427/82 370/414/82 +f 370/414/81 382/427/81 383/428/81 371/415/81 +f 371/415/80 383/428/80 384/429/80 372/416/80 +f 372/416/79 384/429/79 373/417/79 361/404/79 +f 373/417/90 385/430/90 386/431/90 374/418/90 +f 374/418/89 386/431/89 387/432/89 375/419/89 +f 375/419/88 387/432/88 388/433/88 376/420/88 +f 376/420/87 388/433/87 389/434/87 377/421/87 +f 377/421/86 389/434/86 390/435/86 378/422/86 +f 378/422/85 390/435/85 391/436/85 379/423/85 +f 379/424/96 391/437/96 392/438/96 380/425/96 +f 380/425/95 392/438/95 393/439/95 381/426/95 +f 381/426/94 393/439/94 394/440/94 382/427/94 +f 382/427/93 394/440/93 395/441/93 383/428/93 +f 383/428/92 395/441/92 396/442/92 384/429/92 +f 384/429/91 396/442/91 385/430/91 373/417/91 +f 385/430/102 397/443/102 398/444/102 386/431/102 +f 386/431/101 398/444/101 399/445/101 387/432/101 +f 387/432/100 399/445/100 400/446/100 388/433/100 +f 388/433/99 400/446/99 401/447/99 389/434/99 +f 389/434/98 401/447/98 402/448/98 390/435/98 +f 390/435/97 402/448/97 403/449/97 391/436/97 +f 391/437/108 403/450/108 404/451/108 392/438/108 +f 392/438/107 404/451/107 405/452/107 393/439/107 +f 393/439/106 405/452/106 406/453/106 394/440/106 +f 394/440/105 406/453/105 407/454/105 395/441/105 +f 395/441/104 407/454/104 408/455/104 396/442/104 +f 396/442/103 408/455/103 397/443/103 385/430/103 +f 397/443/114 409/456/114 410/457/114 398/444/114 +f 398/444/113 410/457/113 411/458/113 399/445/113 +f 399/445/112 411/458/112 412/459/112 400/446/112 +f 400/446/111 412/459/111 413/460/111 401/447/111 +f 401/447/110 413/460/110 414/461/110 402/448/110 +f 402/448/109 414/461/109 415/462/109 403/449/109 +f 403/450/120 415/463/120 416/464/120 404/451/120 +f 404/451/119 416/464/119 417/465/119 405/452/119 +f 405/452/118 417/465/118 418/466/118 406/453/118 +f 406/453/117 418/466/117 419/467/117 407/454/117 +f 407/454/116 419/467/116 420/468/116 408/455/116 +f 408/455/115 420/468/115 409/456/115 397/443/115 +f 409/456/126 421/469/126 422/470/126 410/457/126 +f 410/457/125 422/470/125 423/471/125 411/458/125 +f 411/458/124 423/471/124 424/472/124 412/459/124 +f 412/459/123 424/472/123 425/473/123 413/460/123 +f 413/460/122 425/473/122 426/474/122 414/461/122 +f 414/461/121 426/474/121 427/475/121 415/462/121 +f 415/463/132 427/476/132 428/477/132 416/464/132 +f 416/464/131 428/477/131 429/478/131 417/465/131 +f 417/465/130 429/478/130 430/479/130 418/466/130 +f 418/466/129 430/479/129 431/480/129 419/467/129 +f 419/467/128 431/480/128 432/481/128 420/468/128 +f 420/468/127 432/481/127 421/469/127 409/456/127 +f 421/469/138 433/482/138 434/483/138 422/470/138 +f 422/470/137 434/483/137 435/484/137 423/471/137 +f 423/471/136 435/484/136 436/485/136 424/472/136 +f 424/472/135 436/485/135 437/486/135 425/473/135 +f 425/473/134 437/486/134 438/487/134 426/474/134 +f 426/474/133 438/487/133 439/488/133 427/475/133 +f 427/476/144 439/489/144 440/490/144 428/477/144 +f 428/477/143 440/490/143 441/491/143 429/478/143 +f 429/478/142 441/491/142 442/492/142 430/479/142 +f 430/479/141 442/492/141 443/493/141 431/480/141 +f 431/480/140 443/493/140 444/494/140 432/481/140 +f 432/481/139 444/494/139 433/482/139 421/469/139 +f 433/482/150 445/495/150 446/496/150 434/483/150 +f 434/483/149 446/496/149 447/497/149 435/484/149 +f 435/484/148 447/497/148 448/498/148 436/485/148 +f 436/485/147 448/498/147 449/499/147 437/486/147 +f 437/486/146 449/499/146 450/500/146 438/487/146 +f 438/487/145 450/500/145 451/501/145 439/488/145 +f 439/489/156 451/502/156 452/503/156 440/490/156 +f 440/490/155 452/503/155 453/504/155 441/491/155 +f 441/491/154 453/504/154 454/505/154 442/492/154 +f 442/492/153 454/505/153 455/506/153 443/493/153 +f 443/493/152 455/506/152 456/507/152 444/494/152 +f 444/494/151 456/507/151 445/495/151 433/482/151 +f 445/495/162 457/508/162 458/509/162 446/496/162 +f 446/496/161 458/509/161 459/510/161 447/497/161 +f 447/497/160 459/510/160 460/511/160 448/498/160 +f 448/498/159 460/511/159 461/512/159 449/499/159 +f 449/499/158 461/512/158 462/513/158 450/500/158 +f 450/500/157 462/513/157 463/514/157 451/501/157 +f 451/502/168 463/515/168 464/516/168 452/503/168 +f 452/503/167 464/516/167 465/517/167 453/504/167 +f 453/504/166 465/517/166 466/518/166 454/505/166 +f 454/505/165 466/518/165 467/519/165 455/506/165 +f 455/506/164 467/519/164 468/520/164 456/507/164 +f 456/507/163 468/520/163 457/508/163 445/495/163 +f 457/508/174 469/521/174 470/522/174 458/509/174 +f 458/509/173 470/522/173 471/523/173 459/510/173 +f 459/510/172 471/523/172 472/524/172 460/511/172 +f 460/511/171 472/524/171 473/525/171 461/512/171 +f 461/512/170 473/525/170 474/526/170 462/513/170 +f 462/513/169 474/526/169 475/527/169 463/514/169 +f 463/515/180 475/528/180 476/529/180 464/516/180 +f 464/516/179 476/529/179 477/530/179 465/517/179 +f 465/517/178 477/530/178 478/531/178 466/518/178 +f 466/518/177 478/531/177 479/532/177 467/519/177 +f 467/519/176 479/532/176 480/533/176 468/520/176 +f 468/520/175 480/533/175 469/521/175 457/508/175 +f 469/521/186 481/534/186 482/535/186 470/522/186 +f 470/522/185 482/535/185 483/536/185 471/523/185 +f 471/523/184 483/536/184 484/537/184 472/524/184 +f 472/524/183 484/537/183 485/538/183 473/525/183 +f 473/525/182 485/538/182 486/539/182 474/526/182 +f 474/526/181 486/539/181 487/540/181 475/527/181 +f 475/528/192 487/541/192 488/542/192 476/529/192 +f 476/529/191 488/542/191 489/543/191 477/530/191 +f 477/530/190 489/543/190 490/544/190 478/531/190 +f 478/531/189 490/544/189 491/545/189 479/532/189 +f 479/532/188 491/545/188 492/546/188 480/533/188 +f 480/533/187 492/546/187 481/534/187 469/521/187 +f 481/534/198 493/547/198 494/548/198 482/535/198 +f 482/535/197 494/548/197 495/549/197 483/536/197 +f 483/536/196 495/549/196 496/550/196 484/537/196 +f 484/537/195 496/550/195 497/551/195 485/538/195 +f 485/538/194 497/551/194 498/552/194 486/539/194 +f 486/539/193 498/552/193 499/553/193 487/540/193 +f 487/541/204 499/554/204 500/555/204 488/542/204 +f 488/542/203 500/555/203 501/556/203 489/543/203 +f 489/543/202 501/556/202 502/557/202 490/544/202 +f 490/544/201 502/557/201 503/558/201 491/545/201 +f 491/545/200 503/558/200 504/559/200 492/546/200 +f 492/546/199 504/559/199 493/547/199 481/534/199 +f 493/547/210 505/560/210 506/561/210 494/548/210 +f 494/548/209 506/561/209 507/562/209 495/549/209 +f 495/549/208 507/562/208 508/563/208 496/550/208 +f 496/550/207 508/563/207 509/564/207 497/551/207 +f 497/551/206 509/564/206 510/565/206 498/552/206 +f 498/552/205 510/565/205 511/566/205 499/553/205 +f 499/554/216 511/567/216 512/568/216 500/555/216 +f 500/555/215 512/568/215 513/569/215 501/556/215 +f 501/556/214 513/569/214 514/570/214 502/557/214 +f 502/557/213 514/570/213 515/571/213 503/558/213 +f 503/558/212 515/571/212 516/572/212 504/559/212 +f 504/559/211 516/572/211 505/560/211 493/547/211 +f 505/560/222 517/573/222 518/574/222 506/561/222 +f 506/561/221 518/574/221 519/575/221 507/562/221 +f 507/562/220 519/575/220 520/576/220 508/563/220 +f 508/563/219 520/576/219 521/577/219 509/564/219 +f 509/564/218 521/577/218 522/578/218 510/565/218 +f 510/565/217 522/578/217 523/579/217 511/566/217 +f 511/567/228 523/580/228 524/581/228 512/568/228 +f 512/568/227 524/581/227 525/582/227 513/569/227 +f 513/569/226 525/582/226 526/583/226 514/570/226 +f 514/570/225 526/583/225 527/584/225 515/571/225 +f 515/571/224 527/584/224 528/585/224 516/572/224 +f 516/572/223 528/585/223 517/573/223 505/560/223 +f 517/573/234 529/586/234 530/587/234 518/574/234 +f 518/574/233 530/587/233 531/588/233 519/575/233 +f 519/575/232 531/588/232 532/589/232 520/576/232 +f 520/576/231 532/589/231 533/590/231 521/577/231 +f 521/577/230 533/590/230 534/591/230 522/578/230 +f 522/578/229 534/591/229 535/592/229 523/579/229 +f 523/580/240 535/593/240 536/594/240 524/581/240 +f 524/581/239 536/594/239 537/595/239 525/582/239 +f 525/582/238 537/595/238 538/596/238 526/583/238 +f 526/583/237 538/596/237 539/597/237 527/584/237 +f 527/584/236 539/597/236 540/598/236 528/585/236 +f 528/585/235 540/598/235 529/586/235 517/573/235 +f 529/586/246 541/599/246 542/600/246 530/587/246 +f 530/587/245 542/600/245 543/601/245 531/588/245 +f 531/588/244 543/601/244 544/602/244 532/589/244 +f 532/589/243 544/602/243 545/603/243 533/590/243 +f 533/590/242 545/603/242 546/604/242 534/591/242 +f 534/591/241 546/604/241 547/605/241 535/592/241 +f 535/593/252 547/606/252 548/607/252 536/594/252 +f 536/594/251 548/607/251 549/608/251 537/595/251 +f 537/595/250 549/608/250 550/609/250 538/596/250 +f 538/596/249 550/609/249 551/610/249 539/597/249 +f 539/597/248 551/610/248 552/611/248 540/598/248 +f 540/598/247 552/611/247 541/599/247 529/586/247 +f 541/599/258 553/612/258 554/613/258 542/600/258 +f 542/600/257 554/613/257 555/614/257 543/601/257 +f 543/601/256 555/614/256 556/615/256 544/602/256 +f 544/602/255 556/615/255 557/616/255 545/603/255 +f 545/603/254 557/616/254 558/617/254 546/604/254 +f 546/604/253 558/617/253 559/618/253 547/605/253 +f 547/606/264 559/619/264 560/620/264 548/607/264 +f 548/607/263 560/620/263 561/621/263 549/608/263 +f 549/608/262 561/621/262 562/622/262 550/609/262 +f 550/609/261 562/622/261 563/623/261 551/610/261 +f 551/610/260 563/623/260 564/624/260 552/611/260 +f 552/611/259 564/624/259 553/612/259 541/599/259 +f 553/612/270 565/625/270 566/626/270 554/613/270 +f 554/613/269 566/626/269 567/627/269 555/614/269 +f 555/614/268 567/627/268 568/628/268 556/615/268 +f 556/615/267 568/628/267 569/629/267 557/616/267 +f 557/616/266 569/629/266 570/630/266 558/617/266 +f 558/617/265 570/630/265 571/631/265 559/618/265 +f 559/619/276 571/632/276 572/633/276 560/620/276 +f 560/620/275 572/633/275 573/634/275 561/621/275 +f 561/621/274 573/634/274 574/635/274 562/622/274 +f 562/622/273 574/635/273 575/636/273 563/623/273 +f 563/623/272 575/636/272 576/637/272 564/624/272 +f 564/624/271 576/637/271 565/625/271 553/612/271 +f 565/625/282 1/1/282 2/4/282 566/626/282 +f 566/626/281 2/4/281 3/6/281 567/627/281 +f 567/627/280 3/6/280 4/8/280 568/628/280 +f 568/628/279 4/8/279 5/10/279 569/629/279 +f 569/629/278 5/10/278 6/12/278 570/630/278 +f 570/630/277 6/12/277 7/14/277 571/631/277 +f 571/632/288 7/15/288 8/18/288 572/633/288 +f 572/633/287 8/18/287 9/20/287 573/634/287 +f 573/634/286 9/20/286 10/22/286 574/635/286 +f 574/635/285 10/22/285 11/24/285 575/636/285 +f 575/636/284 11/24/284 12/26/284 576/637/284 +f 576/637/283 12/26/283 1/1/283 565/625/283 diff --git a/assets/shaders/basicColor.json b/assets/shaders/basicColor.json new file mode 100644 index 0000000..fd2dc40 --- /dev/null +++ b/assets/shaders/basicColor.json @@ -0,0 +1,5 @@ +{ + "name":"basicColor", + "vert":"basicColor/basicColor.vert", + "frag":"basicColor/basicColor.frag" +} \ No newline at end of file diff --git a/assets/shaders/basicColor/basicColor.frag b/assets/shaders/basicColor/basicColor.frag new file mode 100644 index 0000000..75b7c1a --- /dev/null +++ b/assets/shaders/basicColor/basicColor.frag @@ -0,0 +1,16 @@ +#version 330 core +// The result : color of the fragment. +out vec4 FragColor; + + +// The input variable from the vertex shader (same name and same type). +in vec3 color; +uniform float intensity; +uniform vec4 colorDiffuse0; // Input Color. + +void main() { + + vec3 ambient = vec3(0.7333, 0.7333, 0.7333); + vec3 diffuse = color; + FragColor = intensity * vec4(ambient + diffuse, 1.0)*colorDiffuse0; +} \ No newline at end of file diff --git a/assets/shaders/basicColor/basicColor.vert b/assets/shaders/basicColor/basicColor.vert new file mode 100644 index 0000000..528df63 --- /dev/null +++ b/assets/shaders/basicColor/basicColor.vert @@ -0,0 +1,30 @@ +#version 330 core +// Input : vertex attributes. +layout (location = 0) in vec3 aPos; // Position of the vertex. +layout (location = 1) in vec3 aNormal; // Normal of the vertex. +layout (location = 2) in vec2 aTexCoords; // Texture coordonate of the vertex. +layout (location = 3) in vec3 aTangent; // Texture coordonate of the vertex. +layout (location = 4) in vec3 aBitangent; // Texture coordonate of the vertex. + +// The result : color of the fragment. +out vec3 color; + +// Uniform input variable. +uniform mat4 projection; // Projection of the camera. +uniform mat4 model; // Transforms transformation. +uniform mat4 view; // View transformation of the camera. +uniform vec3 lightPos; + +void main() { + + gl_Position = projection * view * model * vec4(aPos, 1.0); + vec4 newPos = model * vec4(aPos, 1.0); + // vec4 newNormal = model * vec4(aNormal, 1.0); + vec3 newPos3 = newPos.xyz; + // vec3 newNormal3 = newNormal.xyz; + vec3 newNormal3 = mat3(transpose(inverse(model))) * aNormal; + vec3 lightVec = vec3(normalize((lightPos - newPos3))); + float diffuse = dot(lightVec, newNormal3); + //color = vec3(1,1,1); + color = vec3(diffuse); +} \ No newline at end of file diff --git a/assets/shaders/basicColor2.json b/assets/shaders/basicColor2.json new file mode 100644 index 0000000..39b6cd2 --- /dev/null +++ b/assets/shaders/basicColor2.json @@ -0,0 +1,5 @@ +{ + "name":"basicColor2", + "vert":"basicColor2/basicColor2.vert", + "frag":"basicColor2/basicColor2.frag" +} \ No newline at end of file diff --git a/assets/shaders/basicColor2/basicColor2.frag b/assets/shaders/basicColor2/basicColor2.frag new file mode 100644 index 0000000..775c464 --- /dev/null +++ b/assets/shaders/basicColor2/basicColor2.frag @@ -0,0 +1,17 @@ +#version 330 core +// The result : color of the fragment. +out vec4 FragColor; + + +// The input variable from the vertex shader (same name and same type). +in vec3 color; +in vec2 TexCoords; +uniform float intensity; +uniform vec4 colorDiffuse0; // Input Color. +uniform sampler2D textureDiffuse0; +void main() { + + vec3 ambient = vec3(0.7333, 0.7333, 0.7333); + vec3 diffuse = color; + FragColor = intensity * vec4(ambient + diffuse, 1.0)*colorDiffuse0 * texture(textureDiffuse0, TexCoords); +} \ No newline at end of file diff --git a/assets/shaders/basicColor2/basicColor2.vert b/assets/shaders/basicColor2/basicColor2.vert new file mode 100644 index 0000000..e4e526d --- /dev/null +++ b/assets/shaders/basicColor2/basicColor2.vert @@ -0,0 +1,32 @@ +#version 330 core +// Input : vertex attributes. +layout (location = 0) in vec3 aPos; // Position of the vertex. +layout (location = 1) in vec3 aNormal; // Normal of the vertex. +layout (location = 2) in vec2 aTexCoords; // Texture coordonate of the vertex. +layout (location = 3) in vec3 aTangent; // Texture coordonate of the vertex. +layout (location = 4) in vec3 aBitangent; // Texture coordonate of the vertex. + +// The result : color of the fragment. +out vec3 color; +out vec2 TexCoords; + +// Uniform input variable. +uniform mat4 projection; // Projection of the camera. +uniform mat4 model; // Transforms transformation. +uniform mat4 view; // View transformation of the camera. +uniform vec3 lightPos; + +void main() { + + gl_Position = projection * view * model * vec4(aPos, 1.0); + vec4 newPos = model * vec4(aPos, 1.0); + // vec4 newNormal = model * vec4(aNormal, 1.0); + vec3 newPos3 = newPos.xyz; + // vec3 newNormal3 = newNormal.xyz; + vec3 newNormal3 = mat3(transpose(inverse(model))) * aNormal; + vec3 lightVec = vec3(normalize((lightPos - newPos3))); + float diffuse = dot(lightVec, newNormal3); + //color = vec3(1,1,1); + color = vec3(diffuse); + TexCoords = aTexCoords; +} \ No newline at end of file diff --git a/assets/shrekt.png b/assets/shrekt.png new file mode 100644 index 0000000..803ae4e Binary files /dev/null and b/assets/shrekt.png differ diff --git a/assets/spaceEngine.png b/assets/spaceEngine.png new file mode 100644 index 0000000..a7208a1 Binary files /dev/null and b/assets/spaceEngine.png differ diff --git a/assets/spaceEngineIcon.png b/assets/spaceEngineIcon.png new file mode 100644 index 0000000..d3cf38c Binary files /dev/null and b/assets/spaceEngineIcon.png differ diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in new file mode 100644 index 0000000..56a1576 --- /dev/null +++ b/doc/Doxyfile.in @@ -0,0 +1,331 @@ +# Doxyfile 1.8.13 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = @PROJECT@ +PROJECT_NUMBER = +PROJECT_BRIEF = +PROJECT_LOGO = +OUTPUT_DIRECTORY = "@CMAKE_CURRENT_BINARY_DIR@/doc_html" +CREATE_SUBDIRS = NO +ALLOW_UNICODE_NAMES = NO +OUTPUT_LANGUAGE = French +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +QT_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 4 +ALIASES = +TCL_SUBST = +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = NO +OPTIMIZE_FOR_FORTRAN = NO +OPTIMIZE_OUTPUT_VHDL = NO +EXTENSION_MAPPING = +MARKDOWN_SUPPORT = YES +TOC_INCLUDE_HEADINGS = 0 +AUTOLINK_SUPPORT = YES +BUILTIN_STL_SUPPORT = NO +CPP_CLI_SUPPORT = NO +SIP_SUPPORT = NO +IDL_PROPERTY_SUPPORT = YES +DISTRIBUTE_GROUP_DOC = NO +GROUP_NESTED_COMPOUNDS = NO +SUBGROUPING = YES +INLINE_GROUPED_CLASSES = NO +INLINE_SIMPLE_STRUCTS = NO +TYPEDEF_HIDES_STRUCT = NO +LOOKUP_CACHE_SIZE = 0 +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = NO +EXTRACT_PACKAGE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +EXTRACT_ANON_NSPACES = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = NO +HIDE_SCOPE_NAMES = YES +HIDE_COMPOUND_REFERENCE= NO +SHOW_INCLUDE_FILES = YES +SHOW_GROUPED_MEMB_INC = NO +FORCE_LOCAL_INCLUDES = NO +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_MEMBERS_CTORS_1ST = NO +SORT_GROUP_NAMES = NO +SORT_BY_SCOPE_NAME = NO +STRICT_PROTO_MATCHING = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_FILES = YES +SHOW_NAMESPACES = YES +FILE_VERSION_FILTER = +LAYOUT_FILE = +CITE_BIB_FILES = +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_AS_ERROR = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = "@CMAKE_CURRENT_SOURCE_DIR@/src/" +INPUT_ENCODING = UTF-8 +FILE_PATTERNS = *.hpp *.h +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXCLUDE_SYMBOLS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +FILTER_SOURCE_PATTERNS = +USE_MDFILE_AS_MAINPAGE = +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = NO +REFERENCES_LINK_SOURCE = YES +SOURCE_TOOLTIPS = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +CLANG_ASSISTED_PARSING = NO +CLANG_OPTIONS = +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +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 = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_EXTRA_STYLESHEET = +HTML_EXTRA_FILES = +HTML_COLORSTYLE_HUE = 194 +HTML_COLORSTYLE_SAT = 177 +HTML_COLORSTYLE_GAMMA = 103 +HTML_TIMESTAMP = NO +HTML_DYNAMIC_SECTIONS = NO +HTML_INDEX_NUM_ENTRIES = 100 +GENERATE_DOCSET = NO +DOCSET_FEEDNAME = "Doxygen generated docs" +DOCSET_BUNDLE_ID = org.doxygen.Project +DOCSET_PUBLISHER_ID = org.doxygen.Publisher +DOCSET_PUBLISHER_NAME = Publisher +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +CHM_INDEX_ENCODING = +BINARY_TOC = NO +TOC_EXPAND = NO +GENERATE_QHP = NO +QCH_FILE = +QHP_NAMESPACE = org.doxygen.Project +QHP_VIRTUAL_FOLDER = doc +QHP_CUST_FILTER_NAME = +QHP_CUST_FILTER_ATTRS = +QHP_SECT_FILTER_ATTRS = +QHG_LOCATION = +GENERATE_ECLIPSEHELP = NO +ECLIPSE_DOC_ID = org.doxygen.Project +DISABLE_INDEX = NO +GENERATE_TREEVIEW = YES +ENUM_VALUES_PER_LINE = 4 +TREEVIEW_WIDTH = 250 +EXT_LINKS_IN_WINDOW = NO +FORMULA_FONTSIZE = 10 +FORMULA_TRANSPARENT = YES +USE_MATHJAX = NO +MATHJAX_FORMAT = HTML-CSS +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest +MATHJAX_EXTENSIONS = +MATHJAX_CODEFILE = +SEARCHENGINE = NO +SERVER_BASED_SEARCH = NO +EXTERNAL_SEARCH = NO +SEARCHENGINE_URL = +SEARCHDATA_FILE = searchdata.xml +EXTERNAL_SEARCH_ID = +EXTRA_SEARCH_MAPPINGS = +#--------------------------------------------------------------------------- +# 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 = a4 +EXTRA_PACKAGES = +LATEX_HEADER = +LATEX_FOOTER = +LATEX_EXTRA_STYLESHEET = +LATEX_EXTRA_FILES = +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +LATEX_SOURCE_CODE = NO +LATEX_BIB_STYLE = plain +LATEX_TIMESTAMP = 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 = +RTF_SOURCE_CODE = NO +#--------------------------------------------------------------------------- +# Configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_SUBDIR = +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# Configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# Configuration options related to the DOCBOOK output +#--------------------------------------------------------------------------- +GENERATE_DOCBOOK = NO +DOCBOOK_OUTPUT = docbook +DOCBOOK_PROGRAMLISTING = NO +#--------------------------------------------------------------------------- +# 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 = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration options related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +EXTERNAL_PAGES = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = NO +MSCGEN_PATH = +DIA_PATH = +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +DOT_NUM_THREADS = 0 +DOT_FONTNAME = Helvetica +DOT_FONTSIZE = 10 +DOT_FONTPATH = +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +UML_LIMIT_NUM_FIELDS = 10 +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +INTERACTIVE_SVG = NO +DOT_PATH = +DOTFILE_DIRS = +MSCFILE_DIRS = +DIAFILE_DIRS = +PLANTUML_JAR_PATH = +PLANTUML_CFG_FILE = +PLANTUML_INCLUDE_PATH = +DOT_GRAPH_MAX_NODES = 50 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES diff --git a/lib/All/entt/.bazelignore b/lib/All/entt/.bazelignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/lib/All/entt/.bazelignore @@ -0,0 +1 @@ +test diff --git a/lib/All/entt/.bazeliskrc b/lib/All/entt/.bazeliskrc new file mode 100644 index 0000000..773a4f4 --- /dev/null +++ b/lib/All/entt/.bazeliskrc @@ -0,0 +1 @@ +USE_BAZEL_VERSION=6.x diff --git a/lib/All/entt/.bazelrc b/lib/All/entt/.bazelrc new file mode 100644 index 0000000..f47b186 --- /dev/null +++ b/lib/All/entt/.bazelrc @@ -0,0 +1,16 @@ +common --enable_bzlmod +build --enable_platform_specific_config +build --incompatible_enable_cc_toolchain_resolution +build --enable_runfiles +build --incompatible_strict_action_env + +# required for googletest +build:linux --cxxopt=-std=c++17 +build:macos --cxxopt=-std=c++17 + +common:ci --announce_rc +common:ci --verbose_failures +common:ci --keep_going +test:ci --test_output=errors + +try-import %workspace%/user.bazelrc diff --git a/lib/All/entt/.clang-format b/lib/All/entt/.clang-format new file mode 100644 index 0000000..f7bc6eb --- /dev/null +++ b/lib/All/entt/.clang-format @@ -0,0 +1,43 @@ +BasedOnStyle: llvm +--- +AccessModifierOffset: -4 +AlignEscapedNewlines: DontAlign +AllowShortBlocksOnASingleLine: Always +AllowShortEnumsOnASingleLine: true +AllowShortFunctionsOnASingleLine: Empty +AllowShortIfStatementsOnASingleLine: WithoutElse +AllowShortLambdasOnASingleLine: All +AllowShortLoopsOnASingleLine: true +AlwaysBreakTemplateDeclarations: Yes +BreakBeforeBinaryOperators: NonAssignment +BreakBeforeTernaryOperators: true +ColumnLimit: 0 +DerivePointerAlignment: false +IncludeCategories: + - Regex: '<[[:alnum:]_]+>' + Priority: 1 + - Regex: '<(gtest|gmock)/' + Priority: 2 + - Regex: '<[[:alnum:]_./]+>' + Priority: 3 + - Regex: ' + bugprone-*, + clang-analyzer-*, + -clang-analyzer-optin.core.EnumCastOutOfRange, + concurrency-*, + cppcoreguidelines-*, + -cppcoreguidelines-owning-memory, + -cppcoreguidelines-pro-bounds-constant-array-index, + -cppcoreguidelines-pro-type-const-cast, + -cppcoreguidelines-pro-type-member-init, + -cppcoreguidelines-pro-type-reinterpret-cast, + -cppcoreguidelines-pro-type-union-access, + misc-*, + -misc-include-cleaner, + -misc-no-recursion, + modernize-*, + -modernize-use-trailing-return-type, + performance-*, + portability-*, + readability-*, + -readability-function-cognitive-complexity, + -readability-named-parameter, + -readability-uppercase-literal-suffix, +CheckOptions: + - key: cppcoreguidelines-avoid-magic-numbers.IgnoreAllFloatingPointValues + value: true + - key: cppcoreguidelines-avoid-magic-numbers.IgnorePowersOf2IntegerValues + value: true + - key: cppcoreguidelines-rvalue-reference-param-not-moved.AllowPartialMove + value: true + - key: cppcoreguidelines-rvalue-reference-param-not-moved.IgnoreUnnamedParams + value: true + - key: cppcoreguidelines-special-member-functions.AllowMissingMoveFunctions + value: true + - key: cppcoreguidelines-special-member-functions.AllowMissingMoveFunctionsWhenCopyIsDeleted + value: true + - key: cppcoreguidelines-special-member-functions.AllowSoleDefaultDtor + value: true + - key: misc-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic + value: true + - key: misc-non-private-member-variables-in-classes.IgnorePublicMemberVariables + value: true + - key: modernize-avoid-c-arrays.AllowStringArrays + value: true + - key: performance-enum-size.EnumIgnoreList + value: meta_traits + - key: readability-function-cognitive-complexity.IgnoreMacros + value: true + - key: readability-identifier-length.MinimumParameterNameLength + value: 2 + - key: readability-identifier-length.MinimumVariableNameLength + value: 2 + - key: readability-magic-numbers.IgnoreAllFloatingPointValues + value: true + - key: readability-magic-numbers.IgnorePowersOf2IntegerValues + value: true diff --git a/lib/All/entt/.github/FUNDING.yml b/lib/All/entt/.github/FUNDING.yml new file mode 100644 index 0000000..1f5e723 --- /dev/null +++ b/lib/All/entt/.github/FUNDING.yml @@ -0,0 +1,4 @@ +# These are supported funding model platforms + +github: skypjack +custom: https://www.paypal.me/skypjack diff --git a/lib/All/entt/.github/workflows/bazel-release-archive.yml b/lib/All/entt/.github/workflows/bazel-release-archive.yml new file mode 100644 index 0000000..72c4eff --- /dev/null +++ b/lib/All/entt/.github/workflows/bazel-release-archive.yml @@ -0,0 +1,23 @@ +name: Bazel Release + +on: + release: + types: [published] + +jobs: + # A release archive is required for bzlmod + # See: https://blog.bazel.build/2023/02/15/github-archive-checksum.html + bazel-release-archive: + runs-on: ubuntu-latest + continue-on-error: true + permissions: + contents: write + steps: + - uses: actions/setup-go@v5 + - run: go install github.com/bazelbuild/buildtools/buildozer@latest + - uses: actions/checkout@v4 + - run: ./scripts/sync_bzlmod_version.sh + - run: git archive $GITHUB_REF -o "entt-${GITHUB_REF:10}.tar.gz" + - run: gh release upload ${GITHUB_REF:10} "entt-${GITHUB_REF:10}.tar.gz" + env: + GH_TOKEN: ${{ github.token }} diff --git a/lib/All/entt/.github/workflows/bazel.yml b/lib/All/entt/.github/workflows/bazel.yml new file mode 100644 index 0000000..d0cc387 --- /dev/null +++ b/lib/All/entt/.github/workflows/bazel.yml @@ -0,0 +1,23 @@ +name: bazel + +on: [push, pull_request] + +jobs: + + test: + strategy: + matrix: + os: + - ubuntu-latest + - windows-latest + - macos-latest + + runs-on: ${{ matrix.os }} + continue-on-error: true + + steps: + - uses: actions/checkout@v4 + - run: bazelisk test --config=ci ... + working-directory: test + env: + USE_BAZEL_VERSION: 6.x diff --git a/lib/All/entt/.github/workflows/build.yml b/lib/All/entt/.github/workflows/build.yml new file mode 100644 index 0000000..aab487e --- /dev/null +++ b/lib/All/entt/.github/workflows/build.yml @@ -0,0 +1,104 @@ +name: build + +on: [push, pull_request] + +jobs: + + linux: + strategy: + matrix: + compiler: + - { pkg: g++, exe: 'g++', version: 12 } + - { pkg: g++, exe: 'g++', version: 13 } + - { pkg: g++, exe: 'g++', version: 14 } + - { pkg: clang, exe: 'clang++', version: 16 } + - { pkg: clang, exe: 'clang++', version: 17 } + - { pkg: clang, exe: 'clang++', version: 18 } + + timeout-minutes: 15 + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Install compiler + run: | + sudo apt update + sudo apt install -y ${{ matrix.compiler.pkg }}-${{ matrix.compiler.version }} + - name: Compile tests + working-directory: build + env: + CXX: ${{ matrix.compiler.exe }}-${{ matrix.compiler.version }} + run: | + cmake -DENTT_BUILD_TESTING=ON -DENTT_BUILD_LIB=ON -DENTT_BUILD_EXAMPLE=ON .. + make -j4 + - name: Run tests + working-directory: build + env: + CTEST_OUTPUT_ON_FAILURE: 1 + run: ctest -C Debug -j4 + + windows: + strategy: + matrix: + toolset: [default, v142, clang-cl] + include: + - toolset: v142 + toolset_option: -T"v142" + - toolset: clang-cl + toolset_option: -T"ClangCl" + + timeout-minutes: 15 + runs-on: windows-latest + + steps: + - uses: actions/checkout@v4 + - name: Compile tests + working-directory: build + run: | + cmake -DENTT_BUILD_TESTING=ON -DENTT_BUILD_LIB=ON -DENTT_BUILD_EXAMPLE=ON ${{ matrix.toolset_option }} .. + cmake --build . -j 4 + - name: Run tests + working-directory: build + env: + CTEST_OUTPUT_ON_FAILURE: 1 + run: ctest -C Debug -j4 + + macos: + timeout-minutes: 15 + runs-on: macOS-latest + + steps: + - uses: actions/checkout@v4 + - name: Compile tests + working-directory: build + run: | + cmake -DENTT_BUILD_TESTING=ON -DENTT_BUILD_LIB=ON -DENTT_BUILD_EXAMPLE=ON .. + make -j4 + - name: Run tests + working-directory: build + env: + CTEST_OUTPUT_ON_FAILURE: 1 + run: ctest -C Debug -j4 + + extra: + strategy: + matrix: + os: [windows-latest, macOS-latest, ubuntu-latest] + id_type: ["std::uint32_t", "std::uint64_t"] + cxx_std: [cxx_std_17, cxx_std_20] + + timeout-minutes: 15 + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v4 + - name: Compile tests + working-directory: build + run: | + cmake -DENTT_BUILD_TESTING=ON -DENTT_CXX_STD=${{ matrix.cxx_std }} -DENTT_ID_TYPE=${{ matrix.id_type }} .. + cmake --build . -j 4 + - name: Run tests + working-directory: build + env: + CTEST_OUTPUT_ON_FAILURE: 1 + run: ctest -C Debug -j4 diff --git a/lib/All/entt/.github/workflows/coverage.yml b/lib/All/entt/.github/workflows/coverage.yml new file mode 100644 index 0000000..a21135a --- /dev/null +++ b/lib/All/entt/.github/workflows/coverage.yml @@ -0,0 +1,38 @@ +name: coverage + +on: [push, pull_request] + +jobs: + + codecov: + timeout-minutes: 15 + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Compile tests + working-directory: build + env: + CXXFLAGS: "--coverage -fno-elide-constructors -fno-inline -fno-default-inline" + CXX: g++ + run: | + cmake -DENTT_BUILD_TESTING=ON -DENTT_BUILD_LIB=ON -DENTT_BUILD_EXAMPLE=ON .. + make -j4 + - name: Run tests + working-directory: build + env: + CTEST_OUTPUT_ON_FAILURE: 1 + run: ctest -C Debug -j4 + - name: Collect data + working-directory: build + run: | + sudo apt install lcov + lcov -c -d . -o coverage.info --ignore-errors gcov,gcov,mismatch,mismatch + lcov -l coverage.info + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v3 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: build/coverage.info + name: EnTT + fail_ci_if_error: true diff --git a/lib/All/entt/.github/workflows/deploy.yml b/lib/All/entt/.github/workflows/deploy.yml new file mode 100644 index 0000000..1d58b67 --- /dev/null +++ b/lib/All/entt/.github/workflows/deploy.yml @@ -0,0 +1,39 @@ +name: deploy + +on: + release: + types: published + +jobs: + + homebrew-entt: + timeout-minutes: 5 + runs-on: ubuntu-latest + + env: + GH_REPO: homebrew-entt + FORMULA: entt.rb + + steps: + - uses: actions/checkout@v3 + - name: Clone repository + working-directory: build + env: + PERSONAL_ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} + run: git clone https://$GITHUB_ACTOR:$PERSONAL_ACCESS_TOKEN@github.com/$GITHUB_ACTOR/$GH_REPO.git + - name: Prepare formula + working-directory: build + run: | + cd $GH_REPO + curl "https://github.com/${{ github.repository }}/archive/${{ github.ref }}.tar.gz" --location --fail --silent --show-error --output archive.tar.gz + sed -i -e '/url/s/".*"/"'$(echo "https://github.com/${{ github.repository }}/archive/${{ github.ref }}.tar.gz" | sed -e 's/[\/&]/\\&/g')'"/' $FORMULA + sed -i -e '/sha256/s/".*"/"'$(openssl sha256 archive.tar.gz | cut -d " " -f 2)'"/' $FORMULA + - name: Update remote + working-directory: build + run: | + cd $GH_REPO + git config --local user.email "action@github.com" + git config --local user.name "$GITHUB_ACTOR" + git add $FORMULA + git commit -m "Update to ${{ github.ref }}" + git push origin master diff --git a/lib/All/entt/.github/workflows/sanitizer.yml b/lib/All/entt/.github/workflows/sanitizer.yml new file mode 100644 index 0000000..930cb79 --- /dev/null +++ b/lib/All/entt/.github/workflows/sanitizer.yml @@ -0,0 +1,31 @@ +name: sanitizer + +on: [push, pull_request] + +jobs: + + clang: + timeout-minutes: 15 + + strategy: + matrix: + compiler: [clang++] + id_type: ["std::uint32_t", "std::uint64_t"] + cxx_std: [cxx_std_17, cxx_std_20] + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Compile tests + working-directory: build + env: + CXX: ${{ matrix.compiler }} + run: | + cmake -DENTT_USE_SANITIZER=ON -DENTT_BUILD_TESTING=ON -DENTT_BUILD_LIB=ON -DENTT_BUILD_EXAMPLE=ON -DENTT_CXX_STD=${{ matrix.cxx_std }} -DENTT_ID_TYPE=${{ matrix.id_type }} .. + make -j4 + - name: Run tests + working-directory: build + env: + CTEST_OUTPUT_ON_FAILURE: 1 + run: ctest -C Debug -j4 diff --git a/lib/All/entt/.github/workflows/tools.yml b/lib/All/entt/.github/workflows/tools.yml new file mode 100644 index 0000000..8196c7b --- /dev/null +++ b/lib/All/entt/.github/workflows/tools.yml @@ -0,0 +1,84 @@ +name: tools + +on: + push: + branches: + - tools + +jobs: + + iwyu: + timeout-minutes: 60 + + env: + IWYU: "0.23" + LLVM: "19" + + runs-on: ubuntu-latest + continue-on-error: true + + steps: + - uses: actions/checkout@v4 + - name: Install llvm/clang + # see: https://apt.llvm.org/ + run: | + wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - + sudo add-apt-repository "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-$LLVM main" + sudo apt update + sudo apt remove -y "llvm*" + sudo apt remove -y "libclang*" + sudo apt remove -y "clang*" + sudo apt install -y llvm-$LLVM-dev + sudo apt install -y libclang-$LLVM-dev + sudo apt install -y clang-$LLVM + - name: Compile iwyu + # see: https://github.com/include-what-you-use/include-what-you-use + working-directory: build + run: | + git clone https://github.com/include-what-you-use/include-what-you-use.git --branch $IWYU --depth 1 + mkdir include-what-you-use/build + cd include-what-you-use/build + cmake -DCMAKE_C_COMPILER=clang-$LLVM \ + -DCMAKE_CXX_COMPILER=clang++-$LLVM \ + -DCMAKE_INSTALL_PREFIX=./ \ + .. + make -j4 + bin/include-what-you-use --version + - name: Compile tests + working-directory: build + run: | + export PATH=$PATH:${GITHUB_WORKSPACE}/build/include-what-you-use/build/bin + cmake -DCMAKE_C_COMPILER=clang-$LLVM \ + -DCMAKE_CXX_COMPILER=clang++-$LLVM \ + -DENTT_BUILD_TESTING=ON \ + -DENTT_BUILD_BENCHMARK=ON \ + -DENTT_BUILD_EXAMPLE=ON \ + -DENTT_BUILD_LIB=ON \ + -DENTT_BUILD_SNAPSHOT=ON \ + -DENTT_BUILD_TOOLS=ON \ + -DCMAKE_CXX_INCLUDE_WHAT_YOU_USE="include-what-you-use;-Xiwyu;--mapping_file=${GITHUB_WORKSPACE}/entt.imp;-Xiwyu;--no_fwd_decls;-Xiwyu;--verbose=1" \ + .. + make -j4 + + clang-tidy: + timeout-minutes: 60 + + runs-on: ubuntu-latest + continue-on-error: true + + steps: + - uses: actions/checkout@v4 + - name: Compile tests + working-directory: build + env: + CXX: clang++ + run: | + cmake -DENTT_BUILD_TESTING=ON \ + -DENTT_BUILD_BENCHMARK=ON \ + -DENTT_BUILD_EXAMPLE=ON \ + -DENTT_BUILD_LIB=ON \ + -DENTT_BUILD_SNAPSHOT=ON \ + -DENTT_BUILD_TOOLS=ON \ + -DENTT_USE_CLANG_TIDY=ON \ + .. + make -j4 diff --git a/lib/All/entt/.gitignore b/lib/All/entt/.gitignore new file mode 100644 index 0000000..ddcbd98 --- /dev/null +++ b/lib/All/entt/.gitignore @@ -0,0 +1,16 @@ +# Conan +conan/test_package/build + +# IDEs +*.user +.idea +.vscode +.vs +CMakeSettings.json +cpp.hint + +# Bazel +/bazel-* +/test/bazel-* +/user.bazelrc +*.bazel.lock diff --git a/lib/All/entt/AUTHORS b/lib/All/entt/AUTHORS new file mode 100644 index 0000000..13b5fed --- /dev/null +++ b/lib/All/entt/AUTHORS @@ -0,0 +1,56 @@ +# Author + +skypjack + +# Contributors + +alexames +BenediktConze +bjadamson +ceeac +ColinH +corystegel +Croydon +cschreib +cugone +dbacchet +dBagrat +djarek +DNKpp +DonKult +drglove +eliasdaler +erez-o +eugeneko +gale83 +ghost +grdowns +Green-Sky +Innokentiy-Alaytsev +Kerndog73 +Koward +Lawrencemm +markand +mhammerc +Milerius +Minimonium +morbo84 +m-waka +netpoetica +NixAJ +Oortonaut +Paolo-Oliverio +pgruenbacher +prowolf +Qix- +stefanofiorentino +suVrik +szunhammer +The5-1 +vblanco20-1 +willtunnels +WizardIke +WoLfulus +w1th0utnam3 +xissburg +zaucy diff --git a/lib/All/entt/BUILD.bazel b/lib/All/entt/BUILD.bazel new file mode 100644 index 0000000..aafff39 --- /dev/null +++ b/lib/All/entt/BUILD.bazel @@ -0,0 +1,6 @@ +package(default_visibility = ["//visibility:public"]) + +alias( + name = "entt", + actual = "//src:entt", +) diff --git a/lib/All/entt/CMakeLists.txt b/lib/All/entt/CMakeLists.txt new file mode 100644 index 0000000..597995e --- /dev/null +++ b/lib/All/entt/CMakeLists.txt @@ -0,0 +1,330 @@ +# EnTT + +cmake_minimum_required(VERSION 3.15.7) + +# Read project version + +set(ENTT_VERSION_REGEX "#define ENTT_VERSION_.*[ \t]+(.+)") +file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/src/entt/config/version.h" ENTT_VERSION REGEX ${ENTT_VERSION_REGEX}) +list(TRANSFORM ENTT_VERSION REPLACE ${ENTT_VERSION_REGEX} "\\1") +string(JOIN "." ENTT_VERSION ${ENTT_VERSION}) + +# Project configuration + +project( + EnTT + VERSION ${ENTT_VERSION} + DESCRIPTION "Gaming meets modern C++ - a fast and reliable entity-component system (ECS) and much more" + HOMEPAGE_URL "https://github.com/skypjack/entt" + LANGUAGES C CXX +) + +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Debug) +endif() + +message(VERBOSE "*") +message(VERBOSE "* ${PROJECT_NAME} v${PROJECT_VERSION} (${CMAKE_BUILD_TYPE})") +message(VERBOSE "* Copyright (c) 2017-2025 Michele Caini ") +message(VERBOSE "*") + +# CMake stuff + +list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules) + +# Compiler stuff + +option(ENTT_USE_LIBCPP "Use libc++ by adding -stdlib=libc++ flag if available." OFF) +option(ENTT_USE_SANITIZER "Enable sanitizers by adding -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined flags if available." OFF) +option(ENTT_USE_CLANG_TIDY "Enable static analysis with clang-tidy" OFF) + +if(ENTT_USE_LIBCPP) + if(NOT WIN32) + include(CheckCXXSourceCompiles) + include(CMakePushCheckState) + + cmake_push_check_state() + + set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -stdlib=libc++") + + check_cxx_source_compiles(" + #include + int main() { return std::is_same_v; } + " ENTT_HAS_LIBCPP) + + cmake_pop_check_state() + endif() + + if(NOT ENTT_HAS_LIBCPP) + message(VERBOSE "The option ENTT_USE_LIBCPP is set but libc++ is not available.") + endif() +endif() + +if(ENTT_USE_SANITIZER) + if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU") + set(ENTT_HAS_SANITIZER TRUE CACHE BOOL "" FORCE) + mark_as_advanced(ENTT_HAS_SANITIZER) + endif() + + if(NOT ENTT_HAS_SANITIZER) + message(VERBOSE "The option ENTT_USE_SANITIZER is set but sanitizer support is not available.") + endif() +endif() + +if(ENTT_USE_CLANG_TIDY) + find_program(ENTT_CLANG_TIDY_EXECUTABLE "clang-tidy") + + if(NOT ENTT_CLANG_TIDY_EXECUTABLE) + message(VERBOSE "The option ENTT_USE_CLANG_TIDY is set but clang-tidy executable is not available.") + endif() +endif() + +# Add EnTT target + +include(GNUInstallDirs) + +add_library(EnTT INTERFACE) +add_library(EnTT::EnTT ALIAS EnTT) + +target_include_directories( + EnTT + INTERFACE + $ + $ +) + +target_compile_features(EnTT INTERFACE cxx_std_17) + +if(ENTT_HAS_LIBCPP) + target_compile_options(EnTT BEFORE INTERFACE -stdlib=libc++) +endif() + +if(ENTT_HAS_SANITIZER) + target_compile_options(EnTT INTERFACE $<$:-fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined>) + target_link_libraries(EnTT INTERFACE $<$:-fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined>) +endif() + +if(ENTT_CLANG_TIDY_EXECUTABLE) + set(CMAKE_CXX_CLANG_TIDY "${ENTT_CLANG_TIDY_EXECUTABLE};--config-file=${EnTT_SOURCE_DIR}/.clang-tidy;--header-filter=${EnTT_SOURCE_DIR}/src/entt/.*") +endif() + +# Add EnTT goodies + +option(ENTT_INCLUDE_HEADERS "Add all EnTT headers to the EnTT target." OFF) +option(ENTT_INCLUDE_NATVIS "Add EnTT natvis files to the EnTT target." OFF) + +if(ENTT_INCLUDE_NATVIS) + if(MSVC) + set(ENTT_HAS_NATVIS TRUE CACHE BOOL "" FORCE) + mark_as_advanced(ENTT_HAS_NATVIS) + endif() + + if(NOT ENTT_HAS_NATVIS) + message(VERBOSE "The option ENTT_INCLUDE_NATVIS is set but natvis files are not supported. They will not be added to the target.") + endif() +endif() + +if(ENTT_INCLUDE_HEADERS) + target_sources( + EnTT + INTERFACE + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + ) +endif() + +if(ENTT_HAS_NATVIS) + target_sources( + EnTT + INTERFACE + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + $ + ) +endif() + +# Install EnTT and all related files + +option(ENTT_INSTALL "Install EnTT and all related files." OFF) + +if(ENTT_INSTALL) + # Install pkg-config file + + include(JoinPaths) + + set(EnTT_PKGCONFIG ${CMAKE_CURRENT_BINARY_DIR}/entt.pc) + + join_paths(EnTT_PKGCONFIG_INCLUDEDIR "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}") + + configure_file( + ${EnTT_SOURCE_DIR}/cmake/in/entt.pc.in + ${EnTT_PKGCONFIG} + @ONLY + ) + + install( + FILES ${EnTT_PKGCONFIG} + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + ) + + # Install EnTT + + include(CMakePackageConfigHelpers) + + install( + TARGETS EnTT + EXPORT EnTTTargets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + ) + + write_basic_package_version_file( + EnTTConfigVersion.cmake + VERSION ${PROJECT_VERSION} + COMPATIBILITY AnyNewerVersion + ) + + configure_package_config_file( + ${EnTT_SOURCE_DIR}/cmake/in/EnTTConfig.cmake.in + EnTTConfig.cmake + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/EnTT/cmake + ) + + export( + EXPORT EnTTTargets + FILE ${CMAKE_CURRENT_BINARY_DIR}/EnTTTargets.cmake + NAMESPACE EnTT:: + ) + + install( + EXPORT EnTTTargets + FILE EnTTTargets.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/EnTT/cmake + NAMESPACE EnTT:: + ) + + install( + FILES + ${PROJECT_BINARY_DIR}/EnTTConfig.cmake + ${PROJECT_BINARY_DIR}/EnTTConfigVersion.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/EnTT/cmake + ) + + install( + DIRECTORY src/ + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + FILES_MATCHING + PATTERN "*.h" + PATTERN "*.hpp" + ) + + export(PACKAGE EnTT) +endif() + +# Tests + +option(ENTT_BUILD_TESTING "Enable building tests." OFF) + +if(ENTT_BUILD_TESTING) + option(ENTT_FIND_GTEST_PACKAGE "Enable finding gtest package." OFF) + + option(ENTT_BUILD_BENCHMARK "Build benchmark." OFF) + option(ENTT_BUILD_EXAMPLE "Build examples." OFF) + option(ENTT_BUILD_LIB "Build lib tests." OFF) + option(ENTT_BUILD_SNAPSHOT "Build snapshot test with Cereal." OFF) + + set(ENTT_ID_TYPE std::uint32_t CACHE STRING "Type of identifiers to use for the tests") + set(ENTT_CXX_STD cxx_std_17 CACHE STRING "C++ standard revision to use for the tests") + + include(CTest) + enable_testing() + add_subdirectory(test) +endif() + +# Documentation + +option(ENTT_BUILD_DOCS "Enable building with documentation." OFF) + +if(ENTT_BUILD_DOCS) + add_subdirectory(docs) +endif() diff --git a/lib/All/entt/CONTRIBUTING.md b/lib/All/entt/CONTRIBUTING.md new file mode 100644 index 0000000..117ede6 --- /dev/null +++ b/lib/All/entt/CONTRIBUTING.md @@ -0,0 +1,43 @@ +# Contributing + +First of all, thank you very much for taking the time to contribute to the +`EnTT` library.
+How to do it mostly depends on the type of contribution: + +* If you have a question, **please** ensure there isn't already an answer for + you by searching on GitHub under + [issues](https://github.com/skypjack/entt/issues). Do not forget to search + also through the closed ones. If you are unable to find a proper answer, feel + free to [open a new issue](https://github.com/skypjack/entt/issues/new). + Usually, questions are marked as such and closed in a few days. + +* If you want to fix a typo in the inline documentation or in the README file, + if you want to add some new sections or if you want to help me with the + language by reviewing what I wrote so far (I'm not a native speaker after + all), **please** open a new + [pull request](https://github.com/skypjack/entt/pulls) with your changes. + +* If you found a bug, **please** ensure there isn't already an answer for you by + searching on GitHub under [issues](https://github.com/skypjack/entt/issues). + If you are unable to find an open issue addressing the problem, feel free to + [open a new one](https://github.com/skypjack/entt/issues/new). **Please**, do + not forget to carefully describe how to reproduce the problem, then add all + the information about the system on which you are experiencing it and point + out the version of `EnTT` you are using (tag or commit). + +* If you found a bug and you wrote a patch to fix it, open a new + [pull request](https://github.com/skypjack/entt/pulls) with your code. + **Please**, add some tests to avoid regressions in future if possible, it + would be really appreciated. Note that the `EnTT` library has a + [coverage at 100%](https://coveralls.io/github/skypjack/entt?branch=master) + (at least it was at 100% at the time I wrote this file) and this is the reason + for which you can be confident with using it in a production environment. + +* If you want to propose a new feature and you know how to code it, **please** + do not issue directly a pull request. Before to do it, + [create a new issue](https://github.com/skypjack/entt/issues/new) to discuss + your proposal. Other users could be interested in your idea and the discussion + that will follow can refine it and therefore give us a better solution. + +* If you want to request a new feature, I'm available for hiring. Take a look at + [my profile](https://github.com/skypjack) and feel free to write me. diff --git a/lib/All/entt/LICENSE b/lib/All/entt/LICENSE new file mode 100644 index 0000000..e178e28 --- /dev/null +++ b/lib/All/entt/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2017-2025 Michele Caini, author of EnTT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copy of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copy or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/lib/All/entt/MODULE.bazel b/lib/All/entt/MODULE.bazel new file mode 100644 index 0000000..445754c --- /dev/null +++ b/lib/All/entt/MODULE.bazel @@ -0,0 +1,4 @@ +module(name = "entt") + +bazel_dep(name = "rules_cc", version = "0.0.8") +bazel_dep(name = "bazel_skylib", version = "1.4.2") diff --git a/lib/All/entt/README.md b/lib/All/entt/README.md new file mode 100644 index 0000000..5d3b288 --- /dev/null +++ b/lib/All/entt/README.md @@ -0,0 +1,414 @@ +![EnTT: Gaming meets modern C++](https://user-images.githubusercontent.com/1812216/103550016-90752280-4ea8-11eb-8667-12ed2219e137.png) + +[![Build Status](https://github.com/skypjack/entt/workflows/build/badge.svg)](https://github.com/skypjack/entt/actions) +[![Coverage](https://codecov.io/gh/skypjack/entt/branch/master/graph/badge.svg)](https://codecov.io/gh/skypjack/entt) +[![Try online](https://img.shields.io/badge/try-online-brightgreen)](https://godbolt.org/z/zxW73f) +[![Documentation](https://img.shields.io/badge/docs-doxygen-blue)](https://skypjack.github.io/entt/) +[![Vcpkg port](https://img.shields.io/vcpkg/v/entt)](https://vcpkg.link/ports/entt) +[![Conan Center](https://img.shields.io/conan/v/entt)](https://conan.io/center/recipes/entt) +[![Gitter chat](https://badges.gitter.im/skypjack/entt.png)](https://gitter.im/skypjack/entt) +[![Discord channel](https://img.shields.io/discord/707607951396962417?logo=discord)](https://discord.gg/5BjPWBd) + +> `EnTT` has been a dream so far, we haven't found a single bug to date and it's +> super easy to work with +> +> -- Every EnTT User Ever + +`EnTT` is a header-only, tiny and easy to use library for game programming and +much more written in **modern C++**.
+[Among others](https://github.com/skypjack/entt/wiki/EnTT-in-Action), it's used +in [**Minecraft**](https://minecraft.net/en-us/attribution/) by Mojang, the +[**ArcGIS Runtime SDKs**](https://developers.arcgis.com/arcgis-runtime/) by Esri +and the amazing [**Ragdoll**](https://ragdolldynamics.com/).
+If you don't see your project in the list, please open an issue, submit a PR or +add the [\#entt](https://github.com/topics/entt) tag to your _topics_! :+1: + +--- + +Do you want to **keep up with changes** or do you have a **question** that +doesn't require you to open an issue?
+Join the [gitter channel](https://gitter.im/skypjack/entt) and the +[discord server](https://discord.gg/5BjPWBd), meet other users like you. The +more we are, the better for everyone.
+Don't forget to check the +[FAQs](https://github.com/skypjack/entt/wiki/Frequently-Asked-Questions) and the +[wiki](https://github.com/skypjack/entt/wiki) too. Your answers may already be +there. + +Do you want to support `EnTT`? Consider becoming a +[**sponsor**](https://github.com/users/skypjack/sponsorship) or making a +donation via [**PayPal**](https://www.paypal.me/skypjack).
+Many thanks to [these people](https://skypjack.github.io/sponsorship/) and +**special** thanks to: + +[![mojang](https://user-images.githubusercontent.com/1812216/106253145-67ca1980-6217-11eb-9c0b-d93561b37098.png)](https://mojang.com) +[![imgly](https://user-images.githubusercontent.com/1812216/106253726-271ed000-6218-11eb-98e0-c9c681925770.png)](https://img.ly/) + +# Table of Contents + +* [Introduction](#introduction) + * [Code Example](#code-example) + * [Motivation](#motivation) + * [Benchmark](#benchmark) +* [Integration](#integration) + * [Requirements](#requirements) + * [CMake](#cmake) + * [Natvis support](#natvis-support) + * [Packaging Tools](#packaging-tools) + * [pkg-config](#pkg-config) +* [Documentation](#documentation) +* [Tests](#tests) +* [EnTT in Action](#entt-in-action) +* [Contributors](#contributors) +* [License](#license) + +# Introduction + +The entity-component-system (also known as _ECS_) is an architectural pattern +used mostly in game development. For further details: + +* [Entity Systems Wiki](http://entity-systems.wikidot.com/) +* [Evolve Your Hierarchy](http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/) +* [ECS on Wikipedia](https://en.wikipedia.org/wiki/Entity%E2%80%93component%E2%80%93system) + +This project started off as a pure entity-component system. Over time the +codebase has grown as more and more classes and functionalities were added.
+Here is a brief, yet incomplete list of what it offers today: + +* Built-in **RTTI system** mostly similar to the standard one. +* A `constexpr` utility for human-readable **resource names**. +* Minimal **configuration system** built using the monostate pattern. +* Incredibly fast **entity-component system** with its own _pay for what you + use_ policy, unconstrained component types with optional pointer stability and + hooks for storage customization. +* Views and groups to iterate entities and components and allow different access + patterns, from **perfect SoA** to fully random. +* A lot of **facilities** built on top of the entity-component system to help + the users and avoid reinventing the wheel. +* General purpose **execution graph builder** for optimal scheduling. +* The smallest and most basic implementation of a **service locator** ever seen. +* A built-in, non-intrusive and macro-free runtime **reflection system**. +* **Static polymorphism** made simple and within everyone's reach. +* A few homemade containers, like a sparse set based **hash map**. +* A **cooperative scheduler** for processes of any type. +* All that is needed for **resource management** (cache, loaders, handles). +* Delegates, **signal handlers** and a tiny event dispatcher. +* A general purpose **event emitter** as a CRTP idiom based class template. +* And **much more**! Check out the + [**wiki**](https://github.com/skypjack/entt/wiki). + +Consider this list a work in progress as well as the project. The whole API is +fully documented in-code for those who are brave enough to read it.
+Please, do note that all tools are also DLL-friendly now and run smoothly across +boundaries. + +One thing known to most is that `EnTT` is also used in **Minecraft**.
+Given that the game is available literally everywhere, I can confidently say +that the library has been sufficiently tested on every platform that can come to +mind. + +## Code Example + +```cpp +#include + +struct position { + float x; + float y; +}; + +struct velocity { + float dx; + float dy; +}; + +void update(entt::registry ®istry) { + auto view = registry.view(); + + // use a callback + view.each([](const auto &pos, auto &vel) { /* ... */ }); + + // use an extended callback + view.each([](const auto entity, const auto &pos, auto &vel) { /* ... */ }); + + // use a range-for + for(auto [entity, pos, vel]: view.each()) { + // ... + } + + // use forward iterators and get only the components of interest + for(auto entity: view) { + auto &vel = view.get(entity); + // ... + } +} + +int main() { + entt::registry registry; + + for(auto i = 0u; i < 10u; ++i) { + const auto entity = registry.create(); + registry.emplace(entity, i * 1.f, i * 1.f); + if(i % 2 == 0) { registry.emplace(entity, i * .1f, i * .1f); } + } + + update(registry); +} +``` + +## Motivation + +I started developing `EnTT` for the _wrong_ reason: my goal was to design an +entity-component system to beat another well known open source library both in +terms of performance and possibly memory usage.
+In the end, I did it, but it wasn't very satisfying. Actually it wasn't +satisfying at all. The fastest and nothing more, fairly little indeed. When I +realized it, I tried hard to keep intact the great performance of `EnTT` and to +add all the features I wanted to see in *my own library* at the same time. + +Nowadays, `EnTT` is finally what I was looking for: still faster than its +_competitors_, lower memory usage in the average case, a really good API and an +amazing set of features. And even more, of course. + +## Benchmark + +For what it's worth, you'll **never** see me trying to make other projects look +bad or offer dubious comparisons just to make this library seem cooler.
+I leave this activity to others, if they enjoy it (and it seems that some people +actually like it). I prefer to make better use of my time. + +If you are interested, you can compile the `benchmark` test in release mode (to +enable compiler optimizations, otherwise it would make little sense) by setting +the `ENTT_BUILD_BENCHMARK` option of `CMake` to `ON`, then evaluate yourself +whether you're satisfied with the results or not. + +There are also a lot of projects out there that use `EnTT` as a basis for +comparison (this should already tell you a lot). Many of these benchmarks are +completely wrong, many others are simply incomplete, good at omitting some +information and using the wrong function to compare a given feature. Certainly +there are also good ones but they age quickly if nobody updates them, especially +when the library they are dealing with is actively developed.
+Out of all of them, [this](https://github.com/abeimler/ecs_benchmark) seems like +the most up-to-date project and also covers a certain number of libraries. I +can't say exactly whether `EnTT` is used correctly or not. However, even if used +poorly, it should still give the reader an idea of where it's going to operate. + +# Integration + +`EnTT` is a header-only library. This means that including the `entt.hpp` header +is enough to include the library as a whole and use it. For those who are +interested only in the entity-component system, consider to include the sole +`entity/registry.hpp` header instead.
+It's a matter of adding the following line to the top of a file: + +```cpp +#include +``` + +Use the line below to include only the entity-component system instead: + +```cpp +#include +``` + +Then pass the proper `-I` argument to the compiler to add the `src` directory to +the include paths. + +## Requirements + +To be able to use `EnTT`, users must provide a full-featured compiler that +supports at least C++17.
+The requirements below are mandatory to compile the tests and to extract the +documentation: + +* `CMake` version 3.7 or later. +* `Doxygen` version 1.8 or later. + +Alternatively, [Bazel](https://bazel.build) is also supported as a build system +(credits to [zaucy](https://github.com/zaucy) who offered to maintain it).
+In the documentation below I'll still refer to `CMake`, this being the official +build system of the library. + +## CMake + +To use `EnTT` from a `CMake` project, just link an existing target to the +`EnTT::EnTT` alias.
+The library offers everything you need for locating (as in `find_package`), +embedding (as in `add_subdirectory`), fetching (as in `FetchContent`) or using +it in many of the ways that you can think of and that involve `CMake`.
+Covering all possible cases would require a treatise and not a simple README +file, but I'm confident that anyone reading this section also knows what it's +about and can use `EnTT` from a `CMake` project without problems. + +## Natvis support + +When using `CMake`, just enable the option `ENTT_INCLUDE_NATVIS` and enjoy +it.
+Otherwise, most of the tools are covered via Natvis and all files can be found +in the `natvis` directory, divided by module.
+If you spot errors or have suggestions, any contribution is welcome! + +## Packaging Tools + +`EnTT` is available for some of the most known packaging tools. In particular: + +* [`Conan`](https://github.com/conan-io/conan-center-index), the C/C++ Package + Manager for Developers. + +* [`vcpkg`](https://github.com/Microsoft/vcpkg), Microsoft VC++ Packaging + Tool.
+ You can download and install `EnTT` in just a few simple steps: + + ``` + $ git clone https://github.com/Microsoft/vcpkg.git + $ cd vcpkg + $ ./bootstrap-vcpkg.sh + $ ./vcpkg integrate install + $ vcpkg install entt + ``` + + Or you can use the `experimental` feature to test the latest changes: + + ``` + vcpkg install entt[experimental] --head + ``` + + The `EnTT` port in `vcpkg` is kept up to date by Microsoft team members and + community contributors.
+ If the version is out of date, please + [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the + `vcpkg` repository. + +* [`Homebrew`](https://github.com/skypjack/homebrew-entt), the missing package + manager for macOS.
+ Available as a homebrew formula. Just type the following to install it: + + ``` + brew install skypjack/entt/entt + ``` + +* [`build2`](https://build2.org), build toolchain for developing and packaging C + and C++ code.
+ In order to use the [`entt`](https://cppget.org/entt) package in a `build2` + project, add the following line or a similar one to the `manifest` file: + + ``` + depends: entt ^3.0.0 + ``` + + Also check that the configuration refers to a valid repository, so that the + package can be found by `build2`: + + * [`cppget.org`](https://cppget.org), the open-source community central + repository, accessible as `https://pkg.cppget.org/1/stable`. + + * [Package source repository](https://github.com/build2-packaging/entt): + accessible as either `https://github.com/build2-packaging/entt.git` or + `ssh://git@github.com/build2-packaging/entt.git`. + Feel free to [report issues](https://github.com/build2-packaging/entt) with + this package. + + Both can be used with `bpkg add-repo` or added in a project + `repositories.manifest`. See the official + [documentation](https://build2.org/build2-toolchain/doc/build2-toolchain-intro.xhtml#guide-repositories) + for more details. + +* [`bzlmod`](https://bazel.build/external/overview#bzlmod), Bazel's external + dependency management system.
+ To use the [`entt`](https://registry.bazel.build/modules/entt) module in a + `bazel` project, add the following to your `MODULE.bazel` file: + + ```starlark + bazel_dep(name = "entt", version = "3.12.2") + ``` + + EnTT will now be available as `@entt` (short for `@entt//:entt`) to be used + in your `cc_*` rule `deps`. + +Consider this list a work in progress and help me to make it longer if you like. + +## pkg-config + +`EnTT` also supports `pkg-config` (for some definition of _supports_ at least). +A suitable file called `entt.pc` is generated and installed in a proper +directory when running `CMake`.
+This should also make it easier to use with tools such as `Meson` or similar. + +# Documentation + +The documentation is based on [doxygen](http://www.doxygen.nl/). To build it: + + $ cd build + $ cmake .. -DENTT_BUILD_DOCS=ON + $ make + +The API reference is created in HTML format in the `build/docs/html` directory. +To navigate it with your favorite browser: + + $ cd build + $ your_favorite_browser docs/html/index.html + +The same version is also available [online](https://skypjack.github.io/entt/) +for the latest release, that is the last stable tag.
+Moreover, there exists a [wiki](https://github.com/skypjack/entt/wiki) dedicated +to the project where users can find all related documentation pages. + +# Tests + +To compile and run the tests, `EnTT` requires *googletest*.
+`cmake` downloads and compiles the library before compiling anything else. In +order to build the tests, set the `CMake` option `ENTT_BUILD_TESTING` to `ON`. + +To build the most basic set of tests: + +* `$ cd build` +* `$ cmake -DENTT_BUILD_TESTING=ON ..` +* `$ make` +* `$ make test` + +Note that benchmarks are not part of this set. + +# EnTT in Action + +`EnTT` is widely used in private and commercial applications. I cannot even +mention most of them because of some signatures I put on some documents time +ago. Fortunately, there are also people who took the time to implement open +source projects based on `EnTT` and did not hold back when it came to +documenting them. + +[Here](https://github.com/skypjack/entt/wiki/EnTT-in-Action) you can find an +incomplete list of games, applications and articles that can be used as a +reference. + +If you know of other resources out there that are about `EnTT`, feel free to +open an issue or a PR and I'll be glad to add them to the list. + +# Contributors + +Requests for features, PRs, suggestions and feedback are highly appreciated. + +If you find you can help and want to contribute to the project with your +experience or you do want to get part of the project for some other reason, feel +free to contact me directly (you can find the mail in the +[profile](https://github.com/skypjack)).
+I can't promise that each and every contribution will be accepted, but I can +assure that I'll do my best to take them all as soon as possible. + +If you decide to participate, please see the guidelines for +[contributing](https://github.com/skypjack/entt/blob/master/CONTRIBUTING.md) +before to create issues or pull requests.
+Take also a look at the +[contributors list](https://github.com/skypjack/entt/blob/master/AUTHORS) to +know who has participated so far. + +# License + +Code and documentation Copyright (c) 2017-2025 Michele Caini.
+Colorful logo Copyright (c) 2018-2021 Richard Caseres. + +Code released under +[the MIT license](https://github.com/skypjack/entt/blob/master/LICENSE).
+Documentation released under +[CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).
+All logos released under +[CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/). diff --git a/lib/All/entt/TODO b/lib/All/entt/TODO new file mode 100644 index 0000000..590c670 --- /dev/null +++ b/lib/All/entt/TODO @@ -0,0 +1,37 @@ +EXAMPLES +* filter on runtime values/variables (not only types) +* support to polymorphic types (see #859) + +DOC: +* custom storage/view +* update entity doc when the storage based model is in place +* in-place O(1) release/destroy for non-orphaned entities, out-of-sync model +* view: single vs multi type views are no longer a thing actually +* bump entities, reserved bits on identifiers + +TODO: +* review all NOLINT +* bring nested groups back in place (see bd34e7f) +* work stealing job system (see #100) + mt scheduler based on const awareness for types +* view: reduce inst due to/improve perf with index-based approach in dispatch_get/pick_and_each/each (single type too, define storage ::at and ::at_as_tuple) +* view: update natvis as needed after the last rework, merge pools/filter in the same array, drop check (?) and turn view into a position +* view: type-only view_iterator (dyn get/excl sizes), type-only basic_common_view (dyn get/excl sizes with pointer to array from derived) +* combine version-mask-vs-version-bits tricks with reserved bits to allow things like enabling/disabling +* self contained entity traits to avoid explicit specializations (ie enum constants) +* auto type info data from types if present +* test: push sharing types further +* storage entity: fast range-push from above +* table: pop back to support swap and pop, single column access, empty type optimization +* review cmake warning about FetchContent_Populate (need .28 and EXCLUDE_FROM_ALL for FetchContent) +* suppress -Wself-move on CI with g++13 +* view specializations for multi, single and filtered elements +* don't pass reactive storage by default to callback +* runtime types support for meta for types that aren't backed by C++ types +* built-in no-pagination storage - no_pagination page size as limits::max +* any cdynamic to support const ownership construction +* allow passing arguments to meta setter/getter (we can fallback on meta invoke probably) +* FetchContent_Populate -> FetchContent_MakeAvailable warnings +* doc: IMPLICIT_DIR_DOCS for dir docs or \dir +* meta non-const allow_cast overloads: (const int &) to (int &) is not allowed, but (const int &) to (double &) is allowed (support only for convertibles) +* improve non-const allow cast with in-place switch +* meta fixed_size could return the size directly if present diff --git a/lib/All/entt/WORKSPACE.bazel b/lib/All/entt/WORKSPACE.bazel new file mode 100644 index 0000000..600260d --- /dev/null +++ b/lib/All/entt/WORKSPACE.bazel @@ -0,0 +1 @@ +# SEE MODULE.bazel diff --git a/lib/All/entt/bazel/BUILD.bazel b/lib/All/entt/bazel/BUILD.bazel new file mode 100644 index 0000000..e69de29 diff --git a/lib/All/entt/bazel/copts.bzl b/lib/All/entt/bazel/copts.bzl new file mode 100644 index 0000000..83f71ca --- /dev/null +++ b/lib/All/entt/bazel/copts.bzl @@ -0,0 +1,13 @@ +load("@bazel_skylib//lib:selects.bzl", "selects") + +COPTS = selects.with_or({ + ("//conditions:default", "@rules_cc//cc/compiler:clang", "@rules_cc//cc/compiler:gcc", "@rules_cc//cc/compiler:mingw-gcc"): [ + "-std=c++17", + "-w", + ], + ("@rules_cc//cc/compiler:msvc-cl", "@rules_cc//cc/compiler:clang-cl"): [ + "/std:c++17", + "/permissive-", + "/w", + ], +}) diff --git a/lib/All/entt/build/.gitignore b/lib/All/entt/build/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/lib/All/entt/build/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/lib/All/entt/cmake/in/EnTTConfig.cmake.in b/lib/All/entt/cmake/in/EnTTConfig.cmake.in new file mode 100644 index 0000000..f34782e --- /dev/null +++ b/lib/All/entt/cmake/in/EnTTConfig.cmake.in @@ -0,0 +1,5 @@ +@PACKAGE_INIT@ + +set(EnTT_VERSION "@PROJECT_VERSION@") +include("${CMAKE_CURRENT_LIST_DIR}/EnTTTargets.cmake") +check_required_components("@PROJECT_NAME@") diff --git a/lib/All/entt/cmake/in/entt.pc.in b/lib/All/entt/cmake/in/entt.pc.in new file mode 100644 index 0000000..c4df519 --- /dev/null +++ b/lib/All/entt/cmake/in/entt.pc.in @@ -0,0 +1,8 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +includedir=@EnTT_PKGCONFIG_INCLUDEDIR@ + +Name: EnTT +Description: Gaming meets modern C++ +Url: https://github.com/skypjack/entt +Version: @ENTT_VERSION@ +Cflags: -I${includedir} diff --git a/lib/All/entt/cmake/modules/JoinPaths.cmake b/lib/All/entt/cmake/modules/JoinPaths.cmake new file mode 100644 index 0000000..fa0be17 --- /dev/null +++ b/lib/All/entt/cmake/modules/JoinPaths.cmake @@ -0,0 +1,23 @@ +# This module provides function for joining paths +# known from most languages +# +# SPDX-License-Identifier: (MIT OR CC0-1.0) +# Copyright 2020 Jan Tojnar +# https://github.com/jtojnar/cmake-snips +# +# Modelled after Pythons os.path.join +# https://docs.python.org/3.7/library/os.path.html#os.path.join +# Windows not supported +function(join_paths joined_path first_path_segment) + set(temp_path "${first_path_segment}") + foreach(current_segment IN LISTS ARGN) + if(NOT ("${current_segment}" STREQUAL "")) + if(IS_ABSOLUTE "${current_segment}") + set(temp_path "${current_segment}") + else() + set(temp_path "${temp_path}/${current_segment}") + endif() + endif() + endforeach() + set(${joined_path} "${temp_path}" PARENT_SCOPE) +endfunction() diff --git a/lib/All/entt/conan/build.py b/lib/All/entt/conan/build.py new file mode 100644 index 0000000..462f9c5 --- /dev/null +++ b/lib/All/entt/conan/build.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +from cpt.packager import ConanMultiPackager +import os + +if __name__ == "__main__": + username = os.getenv("GITHUB_ACTOR") + tag_version = os.getenv("GITHUB_REF") + tag_package = os.getenv("GITHUB_REPOSITORY") + login_username = os.getenv("CONAN_LOGIN_USERNAME") + package_version = tag_version.replace("refs/tags/v", "") + package_name = tag_package.replace("skypjack/", "") + reference = "{}/{}".format(package_name, package_version) + channel = os.getenv("CONAN_CHANNEL", "stable") + upload = os.getenv("CONAN_UPLOAD") + stable_branch_pattern = os.getenv("CONAN_STABLE_BRANCH_PATTERN", r"v\d+\.\d+\.\d+.*") + test_folder = os.getenv("CPT_TEST_FOLDER", os.path.join("conan", "test_package")) + upload_only_when_stable = os.getenv("CONAN_UPLOAD_ONLY_WHEN_STABLE", True) + disable_shared = os.getenv("CONAN_DISABLE_SHARED_BUILD", "False") + + builder = ConanMultiPackager(username=username, + reference=reference, + channel=channel, + login_username=login_username, + upload=upload, + stable_branch_pattern=stable_branch_pattern, + upload_only_when_stable=upload_only_when_stable, + test_folder=test_folder) + builder.add() + + filtered_builds = [] + for settings, options, env_vars, build_requires, reference in builder.items: + if disable_shared == "False" or not options["{}:shared".format(package_name)]: + filtered_builds.append([settings, options, env_vars, build_requires]) + builder.builds = filtered_builds + + builder.run() diff --git a/lib/All/entt/conan/ci/build.sh b/lib/All/entt/conan/ci/build.sh new file mode 100644 index 0000000..d24e9b5 --- /dev/null +++ b/lib/All/entt/conan/ci/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +set -e +set -x + +conan user +python conan/build.py diff --git a/lib/All/entt/conan/ci/install.sh b/lib/All/entt/conan/ci/install.sh new file mode 100644 index 0000000..7b54284 --- /dev/null +++ b/lib/All/entt/conan/ci/install.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +set -e +set -x + +pip install -U conan_package_tools conan diff --git a/lib/All/entt/conan/test_package/CMakeLists.txt b/lib/All/entt/conan/test_package/CMakeLists.txt new file mode 100644 index 0000000..2e9fedb --- /dev/null +++ b/lib/All/entt/conan/test_package/CMakeLists.txt @@ -0,0 +1,13 @@ +cmake_minimum_required(VERSION 3.7.2) +project(test_package) + +set(CMAKE_VERBOSE_MAKEFILE TRUE) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) +conan_basic_setup() + +add_executable(${PROJECT_NAME} test_package.cpp) +target_link_libraries(${PROJECT_NAME} ${CONAN_LIBS}) diff --git a/lib/All/entt/conan/test_package/conanfile.py b/lib/All/entt/conan/test_package/conanfile.py new file mode 100644 index 0000000..d63f408 --- /dev/null +++ b/lib/All/entt/conan/test_package/conanfile.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from conans import ConanFile, CMake +import os + + +class TestPackageConan(ConanFile): + settings = "os", "compiler", "build_type", "arch" + generators = "cmake" + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def test(self): + bin_path = os.path.join("bin", "test_package") + self.run(bin_path, run_environment=True) diff --git a/lib/All/entt/conan/test_package/test_package.cpp b/lib/All/entt/conan/test_package/test_package.cpp new file mode 100644 index 0000000..138d540 --- /dev/null +++ b/lib/All/entt/conan/test_package/test_package.cpp @@ -0,0 +1,56 @@ +#include +#include + +struct position { + float x; + float y; +}; + +struct velocity { + float dx; + float dy; +}; + +void update(entt::registry ®istry) { + auto view = registry.view(); + + for(auto entity: view) { + // gets only the elements that are going to be used ... + + auto &vel = view.get(entity); + + vel.dx = 0.; + vel.dy = 0.; + + // ... + } +} + +void update(std::uint64_t dt, entt::registry ®istry) { + registry.view().each([dt](auto &pos, auto &vel) { + // gets all the elements of the view at once ... + + pos.x += vel.dx * dt; + pos.y += vel.dy * dt; + + // ... + }); +} + +int main() { + entt::registry registry; + std::uint64_t dt = 16; + + for(auto i = 0; i < 10; ++i) { + auto entity = registry.create(); + registry.emplace(entity, i * 1.f, i * 1.f); + if(i % 2 == 0) { registry.emplace(entity, i * .1f, i * .1f); } + } + + update(dt, registry); + update(registry); + + // ... + + return EXIT_SUCCESS; +} diff --git a/lib/All/entt/conanfile.py b/lib/All/entt/conanfile.py new file mode 100644 index 0000000..c987d77 --- /dev/null +++ b/lib/All/entt/conanfile.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +from conans import ConanFile + + +class EnttConan(ConanFile): + name = "entt" + description = "Gaming meets modern C++ - a fast and reliable entity-component system (ECS) and much more " + topics = ("conan," "entt", "gaming", "entity", "ecs") + url = "https://github.com/skypjack/entt" + homepage = url + author = "Michele Caini " + license = "MIT" + exports = ["LICENSE"] + exports_sources = ["src/*"] + no_copy_source = True + + def package(self): + self.copy(pattern="LICENSE", dst="licenses") + self.copy(pattern="*", dst="include", src="src", keep_path=True) + + def package_info(self): + if not self.in_local_cache: + self.cpp_info.includedirs = ["src"] + + def package_id(self): + self.info.header_only() diff --git a/lib/All/entt/docs/CMakeLists.txt b/lib/All/entt/docs/CMakeLists.txt new file mode 100644 index 0000000..56df7dd --- /dev/null +++ b/lib/All/entt/docs/CMakeLists.txt @@ -0,0 +1,59 @@ +# Doxygen configuration (documentation) + +find_package(Doxygen 1.13) + +if(DOXYGEN_FOUND) + include(FetchContent) + + FetchContent_Declare( + doxygen-awesome-css + GIT_REPOSITORY https://github.com/jothepro/doxygen-awesome-css + GIT_TAG main + GIT_SHALLOW 1 + ) + + FetchContent_GetProperties(doxygen-awesome-css) + + if(NOT doxygen-awesome-css_POPULATED) + FetchContent_Populate(doxygen-awesome-css) + set(doxygen-awesome-css_INCLUDE_DIR ${doxygen-awesome-css_SOURCE_DIR}) + endif() + + set(DOXY_SOURCE_DIRECTORY ${EnTT_SOURCE_DIR}/src) + set(DOXY_CSS_DIRECTORY ${doxygen-awesome-css_INCLUDE_DIR}) + set(DOXY_DOCS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) + set(DOXY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + + configure_file(doxy.in doxy.cfg @ONLY) + + add_custom_target( + docs ALL + COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/doxy.cfg + WORKING_DIRECTORY ${EnTT_SOURCE_DIR} + VERBATIM + SOURCES + md/config.md + md/container.md + md/core.md + md/entity.md + md/faq.md + md/lib.md + md/links.md + md/locator.md + md/meta.md + md/poly.md + md/process.md + md/reference.md + md/resource.md + md/signal.md + md/unreal.md + doxy.in + ) + + if(ENTT_INSTALL) + install( + DIRECTORY ${DOXY_OUTPUT_DIRECTORY}/html + DESTINATION share/${PROJECT_NAME}-${PROJECT_VERSION}/ + ) + endif() +endif() diff --git a/lib/All/entt/docs/doxy.in b/lib/All/entt/docs/doxy.in new file mode 100644 index 0000000..62a6cac --- /dev/null +++ b/lib/All/entt/docs/doxy.in @@ -0,0 +1,2914 @@ +# Doxyfile 1.13.2 + +# This file describes the settings to be used by the documentation system +# Doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). +# +# Note: +# +# Use Doxygen to compare the used configuration file with the template +# configuration file: +# doxygen -x [configFile] +# Use Doxygen to compare the used configuration file with the template +# configuration file without replacing the environment variables or CMake type +# replacement variables: +# doxygen -x_noenv [configFile] + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the configuration +# file that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = @PROJECT_NAME@ + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = @PROJECT_VERSION@ + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewers a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# With the PROJECT_ICON tag one can specify an icon that is included in the tabs +# when the HTML document is shown. Doxygen will copy the logo to the output +# directory. + +PROJECT_ICON = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where Doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = @DOXY_OUTPUT_DIRECTORY@ + +# If the CREATE_SUBDIRS tag is set to YES then Doxygen will create up to 4096 +# sub-directories (in 2 levels) under the output directory of each output format +# and will distribute the generated files over these directories. Enabling this +# option can be useful when feeding Doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise cause +# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to +# control the number of sub-directories. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# Controls the number of sub-directories that will be created when +# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every +# level increment doubles the number of directories, resulting in 4096 +# directories at level 8 which is the default and also the maximum value. The +# sub-directories are organized in 2 levels, the first level always has a fixed +# number of 16 directories. +# Minimum value: 0, maximum value: 8, default value: 8. +# This tag requires that the tag CREATE_SUBDIRS is set to YES. + +CREATE_SUBDIRS_LEVEL = 8 + +# If the ALLOW_UNICODE_NAMES tag is set to YES, Doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by Doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, +# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English +# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek, +# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with +# English messages), Korean, Korean-en (Korean with English messages), Latvian, +# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, +# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, +# Swedish, Turkish, Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, Doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, Doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, Doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, Doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which Doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where Doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, Doxygen will generate much shorter (but +# less readable) file names. This can be useful if your file system doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen will interpret the +# first line (until the first dot, question mark or exclamation mark) of a +# Javadoc-style comment as the brief description. If set to NO, the Javadoc- +# style will behave just like regular Qt-style comments (thus requiring an +# explicit @brief command for a brief description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the JAVADOC_BANNER tag is set to YES then Doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by Doxygen. +# The default value is: NO. + +JAVADOC_BANNER = NO + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will interpret the first +# line (until the first dot, question mark or exclamation mark) of a Qt-style +# comment as the brief description. If set to NO, the Qt-style will behave just +# like regular Qt-style comments (thus requiring an explicit \brief command for +# a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# By default Python docstrings are displayed as preformatted text and Doxygen's +# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the +# Doxygen's special commands can be used and the contents of the docstring +# documentation blocks is shown as Doxygen documentation. +# The default value is: YES. + +PYTHON_DOCSTRING = YES + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then Doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:^^" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". Note that you cannot put \n's in the value part of an alias +# to insert newlines (in the resulting output). You can put ^^ in the value part +# of an alias to insert a newline as if a physical newline was in the original +# file. When you need a literal { or } or , in the value part of an alias you +# have to escape them by means of a backslash (\), this can lead to conflicts +# with the commands \{ and \} for these it is advised to use the version @{ and +# @} or use a double escape (\\{ and \\}) + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_SLICE = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by Doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, +# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files). For instance to make Doxygen treat .inc files +# as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by Doxygen. When specifying no_extension you should add +# * to the FILE_PATTERNS. +# +# Note see also the list of default file extension mappings. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then Doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See https://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by Doxygen, so you can +# mix Doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 6. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 5 + +# The MARKDOWN_ID_STYLE tag can be used to specify the algorithm used to +# generate identifiers for the Markdown headings. Note: Every identifier is +# unique. +# Possible values are: DOXYGEN use a fixed 'autotoc_md' string followed by a +# sequence number starting at 0 and GITHUB use the lower case version of title +# with any whitespace replaced by '-' and punctuation characters removed. +# The default value is: DOXYGEN. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +MARKDOWN_ID_STYLE = GITHUB + +# When enabled Doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. Words listed in the +# AUTOLINK_IGNORE_WORDS tag are excluded from automatic linking. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# This tag specifies a list of words that, when matching the start of a word in +# the documentation, will suppress auto links generation, if it is enabled via +# AUTOLINK_SUPPORT. This list does not affect affect links explicitly created +# using \# or the \link or commands. +# This tag requires that the tag AUTOLINK_SUPPORT is set to YES. + +AUTOLINK_IGNORE_WORDS = + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let Doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also makes the inheritance and +# collaboration diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# https://www.riverbankcomputing.com/software) sources only. Doxygen will parse +# them like normal C++ but will assume all classes use public instead of private +# inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# Doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then Doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, Doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# Doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run Doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +# The NUM_PROC_THREADS specifies the number of threads Doxygen is allowed to use +# during processing. When set to 0 Doxygen will based this on the number of +# cores available in the system. You can set it explicitly to a value larger +# than 0 to get more control over the balance between CPU load and processing +# speed. At this moment only the input processing can be done using multiple +# threads. Since this is still an experimental feature the default is set to 1, +# which effectively disables parallel processing. Please report any issues you +# encounter. Generating dot graphs in parallel is controlled by the +# DOT_NUM_THREADS setting. +# Minimum value: 0, maximum value: 32, default value: 1. + +NUM_PROC_THREADS = 1 + +# If the TIMESTAMP tag is set different from NO then each generated page will +# contain the date or date and time when the page was generated. Setting this to +# NO can help when comparing the output of multiple runs. +# Possible values are: YES, NO, DATETIME and DATE. +# The default value is: NO. + +TIMESTAMP = NO + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, Doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If this flag is set to YES, the name of an unnamed parameter in a declaration +# will be determined by the corresponding definition. By default unnamed +# parameters remain unnamed in the output. +# The default value is: YES. + +RESOLVE_UNNAMED_PARAMS = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# will also hide undocumented C++ concepts if enabled. This option has no effect +# if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_UNDOC_NAMESPACES tag is set to YES, Doxygen will hide all +# undocumented namespaces that are normally visible in the namespace hierarchy. +# If set to NO, these namespaces will be included in the various overviews. This +# option has no effect if EXTRACT_ALL is enabled. +# The default value is: YES. + +HIDE_UNDOC_NAMESPACES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all friend +# declarations. If set to NO, these declarations will be included in the +# documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# With the correct setting of option CASE_SENSE_NAMES Doxygen will better be +# able to match the capabilities of the underlying filesystem. In case the +# filesystem is case sensitive (i.e. it supports files in the same directory +# whose names only differ in casing), the option must be set to YES to properly +# deal with such files in case they appear in the input. For filesystems that +# are not case sensitive the option should be set to NO to properly deal with +# output files written for symbols that only differ in casing, such as for two +# classes, one named CLASS and the other named Class, and to also support +# references to files without having to specify the exact matching casing. On +# Windows (including Cygwin) and macOS, users should typically set this option +# to NO, whereas on Linux or other Unix flavors it should typically be set to +# YES. +# Possible values are: SYSTEM, NO and YES. +# The default value is: SYSTEM. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO then Doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then Doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class +# will show which file needs to be included to use the class. +# The default value is: YES. + +SHOW_HEADERFILE = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES then Doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then Doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then Doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then Doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then Doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and Doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING Doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# Doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by Doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by Doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents Doxygen's defaults, run Doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. See also section "Changing the +# layout of pages" for information. +# +# Note that if you run Doxygen from a directory containing a file called +# DoxygenLayout.xml, Doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +# The EXTERNAL_TOOL_PATH tag can be used to extend the search path (PATH +# environment variable) so that external tools such as latex and gs can be +# found. +# Note: Directories specified with EXTERNAL_TOOL_PATH are added in front of the +# path already specified by the PATH variable, and are added in the order +# specified. +# Note: This option is particularly useful for macOS version 14 (Sonoma) and +# higher, when running Doxygen from Doxywizard, because in this case any user- +# defined changes to the PATH are ignored. A typical example on macOS is to set +# EXTERNAL_TOOL_PATH = /Library/TeX/texbin /usr/local/bin +# together with the standard path, the full search path used by doxygen when +# launching external tools will then become +# PATH=/Library/TeX/texbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin + +EXTERNAL_TOOL_PATH = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by Doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by Doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then Doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, Doxygen will generate warnings for +# potential errors in the documentation, such as documenting some parameters in +# a documented function twice, or documenting parameters that don't exist or +# using markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# If WARN_IF_INCOMPLETE_DOC is set to YES, Doxygen will warn about incomplete +# function parameter documentation. If set to NO, Doxygen will accept that some +# parameters have no documentation without warning. +# The default value is: YES. + +WARN_IF_INCOMPLETE_DOC = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, Doxygen will only warn about wrong parameter +# documentation, but not about the absence of documentation. If EXTRACT_ALL is +# set to YES then this flag will automatically be disabled. See also +# WARN_IF_INCOMPLETE_DOC +# The default value is: NO. + +WARN_NO_PARAMDOC = YES + +# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, Doxygen will warn about +# undocumented enumeration values. If set to NO, Doxygen will accept +# undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: NO. + +WARN_IF_UNDOC_ENUM_VAL = YES + +# If WARN_LAYOUT_FILE option is set to YES, Doxygen will warn about issues found +# while parsing the user defined layout file, such as missing or wrong elements. +# See also LAYOUT_FILE for details. If set to NO, problems with the layout file +# will be suppressed. +# The default value is: YES. + +WARN_LAYOUT_FILE = YES + +# If the WARN_AS_ERROR tag is set to YES then Doxygen will immediately stop when +# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS +# then Doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but +# at the end of the Doxygen process Doxygen will return with a non-zero status. +# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then Doxygen behaves +# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined Doxygen will not +# write the warning messages in between other messages but write them at the end +# of a run, in case a WARN_LOGFILE is defined the warning messages will be +# besides being in the defined file also be shown at the end of a run, unless +# the WARN_LOGFILE is defined as - i.e. standard output (stdout) in that case +# the behavior will remain as with the setting FAIL_ON_WARNINGS. +# Possible values are: NO, YES, FAIL_ON_WARNINGS and FAIL_ON_WARNINGS_PRINT. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that Doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# See also: WARN_LINE_FORMAT +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# In the $text part of the WARN_FORMAT command it is possible that a reference +# to a more specific place is given. To make it easier to jump to this place +# (outside of Doxygen) the user can define a custom "cut" / "paste" string. +# Example: +# WARN_LINE_FORMAT = "'vi $file +$line'" +# See also: WARN_FORMAT +# The default value is: at line $line of file $file. + +WARN_LINE_FORMAT = "at line $line of file $file" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). In case the file specified cannot be opened for writing the +# warning and error messages are written to standard error. When as file - is +# specified the warning and error messages are written to standard output +# (stdout). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = @DOXY_SOURCE_DIRECTORY@ \ + @DOXY_DOCS_DIRECTORY@ \ + @PROJECT_SOURCE_DIR@/README.md + +# This tag can be used to specify the character encoding of the source files +# that Doxygen parses. Internally Doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: +# https://www.gnu.org/software/libiconv/) for the list of possible encodings. +# See also: INPUT_FILE_ENCODING +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# This tag can be used to specify the character encoding of the source files +# that Doxygen parses. The INPUT_FILE_ENCODING tag can be used to specify +# character encoding on a per file pattern basis. Doxygen will compare the file +# name with each pattern and apply the encoding instead of the default +# INPUT_ENCODING if there is a match. The character encodings are a list of the +# form: pattern=encoding (like *.php=ISO-8859-1). +# See also: INPUT_ENCODING for further information on supported encodings. + +INPUT_FILE_ENCODING = + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by Doxygen. +# +# Note the list of default checked file patterns might differ from the list of +# default file extension mappings. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cxxm, +# *.cpp, *.cppm, *.ccm, *.c++, *.c++m, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, +# *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.ixx, *.l, *.cs, *.d, +# *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to +# be provided as Doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, +# *.f18, *.f, *.for, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice. + +FILE_PATTERNS = *.h \ + *.hpp \ + *.md + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which Doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# ANamespace::AClass, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that Doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that Doxygen will use the data processed and written to standard output +# for further processing, therefore nothing else, like debug statements or used +# commands (so in case of a Windows batch file always use @echo OFF), should be +# written to standard output. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by Doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by Doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the Doxygen output. + +USE_MDFILE_AS_MAINPAGE = @PROJECT_SOURCE_DIR@/README.md + +# If the IMPLICIT_DIR_DOCS tag is set to YES, any README.md file found in sub- +# directories of the project's root, is used as the documentation for that sub- +# directory, except when the README.md starts with a \dir, \page or \mainpage +# command. If set to NO, the README.md file needs to start with an explicit \dir +# command in order to be used as directory documentation. +# The default value is: YES. + +IMPLICIT_DIR_DOCS = YES + +# The Fortran standard specifies that for fixed formatted Fortran code all +# characters from position 72 are to be considered as comment. A common +# extension is to allow longer lines before the automatic comment starts. The +# setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can +# be processed before the automatic comment starts. +# Minimum value: 7, maximum value: 10000, default value: 72. + +FORTRAN_COMMENT_AFTER = 72 + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# multi-line macros, enums or list initialized variables directly into the +# documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct Doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# entity all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of Doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see https://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by Doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then Doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then Doxygen will use the +# clang parser (see: +# http://clang.llvm.org/) for more accurate parsing at the cost of reduced +# performance. This can be particularly helpful with template rich C++ code for +# which Doxygen's built-in parser lacks the necessary type information. +# Note: The availability of this option depends on whether or not Doxygen was +# generated with the -Duse_libclang=ON option for CMake. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If the CLANG_ASSISTED_PARSING tag is set to YES and the CLANG_ADD_INC_PATHS +# tag is set to YES then Doxygen will add the directory of each input to the +# include path. +# The default value is: YES. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_ADD_INC_PATHS = YES + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by Doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +# If clang assisted parsing is enabled you can provide the clang parser with the +# path to the directory containing a file called compile_commands.json. This +# file is the compilation database (see: +# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the +# options used when the source files were built. This is equivalent to +# specifying the -p option to a clang tool, such as clang-check. These options +# will then be passed to the parser. Any options specified with CLANG_OPTIONS +# will be added as well. +# Note: The availability of this option depends on whether or not Doxygen was +# generated with the -Duse_libclang=ON option for CMake. + +CLANG_DATABASE_PATH = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes) +# that should be ignored while generating the index headers. The IGNORE_PREFIX +# tag works for classes, function and member names. The entity will be placed in +# the alphabetical list under the first letter of the entity name that remains +# after removing the prefix. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, Doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank Doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that Doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that Doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of Doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank Doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that Doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank Doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that Doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = @DOXY_CSS_DIRECTORY@/doxygen-awesome.css + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by Doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). +# Note: Since the styling of scrollbars can currently not be overruled in +# Webkit/Chromium, the styling will be left out of the default doxygen.css if +# one or more extra stylesheets have been specified. So if scrollbar +# customization is desired it has to be added explicitly. For an example see the +# documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output +# should be rendered with a dark or light theme. +# Possible values are: LIGHT always generates light mode output, DARK always +# generates dark mode output, AUTO_LIGHT automatically sets the mode according +# to the user preference, uses light mode if no preference is set (the default), +# AUTO_DARK automatically sets the mode according to the user preference, uses +# dark mode if no preference is set and TOGGLE allows a user to switch between +# light and dark mode via a button. +# The default value is: AUTO_LIGHT. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE = AUTO_DARK + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a color-wheel, see +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use gray-scales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via JavaScript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have JavaScript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_MENUS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# If the HTML_CODE_FOLDING tag is set to YES then classes and functions can be +# dynamically folded and expanded in the generated HTML source code. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_CODE_FOLDING = YES + +# If the HTML_COPY_CLIPBOARD tag is set to YES then Doxygen will show an icon in +# the top right corner of code and text fragments that allows the user to copy +# its content to the clipboard. Note this only works if supported by the browser +# and the web page is served via a secure context (see: +# https://www.w3.org/TR/secure-contexts/), i.e. using the https: or file: +# protocol. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COPY_CLIPBOARD = YES + +# Doxygen stores a couple of settings persistently in the browser (via e.g. +# cookies). By default these settings apply to all HTML pages generated by +# Doxygen across all projects. The HTML_PROJECT_COOKIE tag can be used to store +# the settings under a project specific key, such that the user preferences will +# be stored separately. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_PROJECT_COOKIE = + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: +# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To +# create a documentation set, Doxygen will generate a Makefile in the HTML +# output directory. Running make will produce the docset in that directory and +# running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag determines the URL of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDURL = + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then Doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# on Windows. In the beginning of 2021 Microsoft took the original page, with +# a.o. the download links, offline (the HTML help workshop was already many +# years in maintenance mode). You can download the HTML help workshop from the +# web archives at Installation executable (see: +# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo +# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by Doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# Doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the main .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# The SITEMAP_URL tag is used to specify the full URL of the place where the +# generated documentation will be placed on the server by the user during the +# deployment of the documentation. The generated sitemap is called sitemap.xml +# and placed on the directory specified by HTML_OUTPUT. In case no SITEMAP_URL +# is specified no sitemap is generated. For information about the sitemap +# protocol see https://www.sitemaps.org +# This tag requires that the tag GENERATE_HTML is set to YES. + +SITEMAP_URL = + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location (absolute path +# including file name) of Qt's qhelpgenerator. If non-empty Doxygen will try to +# run qhelpgenerator on the generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine tune the look of the index (see "Fine-tuning the output"). As an +# example, the default style sheet generated by Doxygen has an example that +# shows how to put an image at the root of the tree instead of the PROJECT_NAME. +# Since the tree basically has the same information as the tab index, you could +# consider setting DISABLE_INDEX to YES when enabling this option. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = NO + +# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the +# FULL_SIDEBAR option determines if the side bar is limited to only the treeview +# area (value NO) or if it should extend to the full height of the window (value +# YES). Setting this to YES gives a layout similar to +# https://docs.readthedocs.io with more room for contents, but less room for the +# project logo, title, and description. If either GENERATE_TREEVIEW or +# DISABLE_INDEX is set to NO, this option has no effect. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FULL_SIDEBAR = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# Doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# When the SHOW_ENUM_VALUES tag is set doxygen will show the specified +# enumeration values besides the enumeration mnemonics. +# The default value is: NO. + +SHOW_ENUM_VALUES = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, Doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# If the OBFUSCATE_EMAILS tag is set to YES, Doxygen will obfuscate email +# addresses. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +OBFUSCATE_EMAILS = YES + +# If the HTML_FORMULA_FORMAT option is set to svg, Doxygen will use the pdf2svg +# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see +# https://inkscape.org) to generate formulas as SVG images instead of PNGs for +# the HTML output. These images will generally look nicer at scaled resolutions. +# Possible values are: png (the default) and svg (looks nicer but requires the +# pdf2svg or inkscape tool). +# The default value is: png. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FORMULA_FORMAT = png + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# Doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. + +FORMULA_MACROFILE = + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# https://www.mathjax.org) which uses client side JavaScript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# With MATHJAX_VERSION it is possible to specify the MathJax version to be used. +# Note that the different versions of MathJax have different requirements with +# regards to the different settings, so it is possible that also other MathJax +# settings have to be changed when switching between the different MathJax +# versions. +# Possible values are: MathJax_2 and MathJax_3. +# The default value is: MathJax_2. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_VERSION = MathJax_2 + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. For more details about the output format see MathJax +# version 2 (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3 +# (see: +# http://docs.mathjax.org/en/latest/web/components/output.html). +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility. This is the name for Mathjax version 2, for MathJax version 3 +# this will be translated into chtml), NativeMML (i.e. MathML. Only supported +# for MathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This +# is the name for Mathjax version 3, for MathJax version 2 this will be +# translated into HTML-CSS) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from https://www.mathjax.org before deployment. The default value is: +# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 +# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/ + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# for MathJax version 2 (see +# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions): +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# For example for MathJax version 3 (see +# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html): +# MATHJAX_EXTENSIONS = ams +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with JavaScript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled Doxygen will generate a search box for +# the HTML output. The underlying search engine uses JavaScript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the JavaScript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /