diff --git a/CMakeLists.txt b/CMakeLists.txt index 0633958..937d2f2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,7 @@ file(GLOB_RECURSE SRC_FILES src/**.cpp) add_executable(VulkanSimulation ${SRC_FILES}) find_package(Vulkan REQUIRED) +find_package(OpenMP REQUIRED) include(deps.cmake) if (WIN32) @@ -18,7 +19,7 @@ FetchContent_MakeAvailable(tetgen) FetchContent_MakeAvailable(assimp) target_compile_options(assimp PRIVATE -Wno-unknown-pragmas) -target_link_libraries(VulkanSimulation glm glfw Vulkan::Vulkan GPUOpen::VulkanMemoryAllocator assimp tet) +target_link_libraries(VulkanSimulation glm glfw Vulkan::Vulkan GPUOpen::VulkanMemoryAllocator assimp tet OpenMP::OpenMP_CXX) target_include_directories(VulkanSimulation PRIVATE include) target_compile_definitions(VulkanSimulation PRIVATE GLM_FORCE_RADIANS diff --git a/include/constraints.hpp b/include/constraints.hpp index 14d0f8d..58dcc47 100644 --- a/include/constraints.hpp +++ b/include/constraints.hpp @@ -1,6 +1,10 @@ #pragma once #include +#include +#include + +using std::vector; struct Edge { uint32_t a; @@ -24,4 +28,47 @@ struct Tetrahedron { uint32_t c; uint32_t d; float volume; -}; \ No newline at end of file +}; + +struct ConstraintData { + vector edges; + vector triangles; + vector tetrahedra; + + struct Partition { + uint32_t offset; + uint32_t size; + }; + + uint32_t partitionCount; + + vector edgePartitions; + vector trianglePartitions; + vector tetrahedronPartitions; + + void recordNewPartition(); + void writePartitionInformation(); +private: + uint32_t prePartitionEdgeCount; + uint32_t prePartitionTetrahedronCount; +}; + +struct Constraint { + virtual ~Constraint() {} + virtual void writeData(ConstraintData& dataLists) const {}; +}; + +struct DistanceConstraint : Edge, Constraint { + explicit DistanceConstraint(const Edge &edge) : Edge(edge) {} + void writeData(ConstraintData &dataLists) const override; +}; + +struct AreaConstraint : Triangle, Constraint { + explicit AreaConstraint(const Triangle& triangle) : Triangle(triangle) {} + void writeData(ConstraintData &dataLists) const override; +}; + +struct VolumeConstraint : Tetrahedron, Constraint { + explicit VolumeConstraint(const Tetrahedron& tetrahedron) : Tetrahedron(tetrahedron) {} + void writeData(ConstraintData &dataLists) const override; +}; diff --git a/include/simulation.hpp b/include/simulation.hpp index 8c28e62..b5fac55 100644 --- a/include/simulation.hpp +++ b/include/simulation.hpp @@ -1,6 +1,8 @@ #pragma once #include "application.hpp" +#include "constraints.hpp" +#include class SoftBody; class Buffer; @@ -17,8 +19,31 @@ private: unique_ptr tetrahedronBuffer; void createMeshBuffers(); + struct SizeInformation { + uint32_t vertexCount; + uint32_t faceCount; + uint32_t edgeCount; + uint32_t triangleCount; + uint32_t tetrahedronCount; + }; unique_ptr sizeInformationBuffer; + struct Properties { + glm::vec3 gravity; + float dt; + uint32_t k; + }; + unique_ptr propertiesBuffer; + Properties properties {}; + + struct PBDPushData { + uint32_t state; + ConstraintData::Partition edgePartition; + ConstraintData::Partition tetrahedronPartition; + }; + + ConstraintData constraintData {}; + unique_ptr pbdPipeline; unique_ptr normalPipeline; void createComputePipelines(); diff --git a/include/soft_body.hpp b/include/soft_body.hpp index 36acd44..8e78534 100644 --- a/include/soft_body.hpp +++ b/include/soft_body.hpp @@ -4,14 +4,17 @@ #include #include #include +#include +#include +#include "constraints.hpp" +using std::unordered_map; +using std::unordered_set; using std::vector; struct Vertex; -struct Edge; -struct Triangle; -struct Face; -struct Tetrahedron; + +typedef unordered_map> Graph; class Mesh; @@ -21,18 +24,16 @@ public: uint32_t firstIndex = 0; int32_t vertexOffset = 0; - uint32_t partitionCount = 0; float compliance; vector vertices; - vector edges; - vector triangles; vector faces; - vector tetrahedra; + ConstraintData constraintData; void applyVertexOffset(const glm::vec3& offset); - void applyIndexOffset(int32_t offset); SoftBody& operator =(const SoftBody& other) = delete; private: + void splitConstraints(); + void reorderConstraintIndices(const vector> &partitions); }; \ No newline at end of file diff --git a/include/tetgen.h b/include/tetgen.h index f1d54d3..14e8d44 100644 --- a/include/tetgen.h +++ b/include/tetgen.h @@ -1000,7 +1000,7 @@ public: // // // Each arraypool contains an array of pointers to a number of blocks. Each // // block contains the same fixed number of objects. Each index of the array // -// addresses a particular object in the pool. The most significant bits add- // +// addresses a particular object in the pool. The most significant bits writeData- // // ress the index of the block containing the object. The less significant // // bits address this object within the block. // // // diff --git a/include/vulkan/vertex.hpp b/include/vulkan/vertex.hpp index baca6a8..2df0d1d 100644 --- a/include/vulkan/vertex.hpp +++ b/include/vulkan/vertex.hpp @@ -8,6 +8,9 @@ struct Vertex { alignas(16) glm::vec3 position; alignas(16) glm::vec3 color; alignas(16) glm::vec3 normal; + alignas(16) glm::vec3 velocity; + glm::vec3 prevPosition; + float inverseMass; static VkVertexInputBindingDescription getBindingDescription(); diff --git a/models/bunny_medium.ply b/models/bunny_medium.ply new file mode 100644 index 0000000..e7a3bb6 --- /dev/null +++ b/models/bunny_medium.ply @@ -0,0 +1,6009 @@ +ply +format ascii 1.0 +comment Created by Blender 3.0.1 - www.blender.org +element vertex 2001 +property float x +property float y +property float z +element face 3998 +property list uchar uint vertex_indices +end_header +0.692345 0.469534 0.061368 +0.728168 0.524345 0.064868 +0.686346 0.512729 0.084943 +0.755059 0.465447 -0.000725 +0.751936 0.505407 0.037427 +0.609325 0.111715 0.005521 +0.665342 0.067219 -0.001580 +0.653045 0.115000 -0.012507 +0.690345 0.436151 0.025875 +0.625249 0.452605 0.078116 +0.624224 0.412590 0.047028 +0.686783 0.405821 -0.011481 +0.559151 0.110043 0.027015 +0.511577 0.081504 0.048300 +0.562352 0.043391 0.033752 +0.623034 0.053151 0.014215 +0.583598 0.163348 -0.020829 +0.620364 0.384785 0.005309 +0.555031 0.401450 0.047816 +0.553451 0.355742 0.011924 +0.557222 0.443920 0.079140 +0.556846 0.488166 0.106779 +0.593672 0.532255 0.120062 +0.551162 0.525914 0.124160 +0.621763 0.508024 0.103632 +0.772790 0.565883 0.048589 +0.788705 0.524166 0.001070 +0.803207 0.569386 0.012097 +0.775402 0.629328 0.048968 +0.736425 0.569168 0.073645 +0.805683 0.629677 0.013816 +0.769515 0.693803 0.043001 +0.735084 0.629419 0.070191 +0.803910 0.693315 0.011823 +0.756395 0.757954 0.028607 +0.729077 0.693200 0.064403 +0.792433 0.757070 -0.000312 +0.776944 0.820892 -0.018410 +0.690259 0.567688 0.094116 +0.688023 0.629018 0.088235 +0.715488 0.757794 0.050686 +0.682937 0.692378 0.082312 +0.698473 0.822538 0.031536 +0.673174 0.758176 0.073887 +0.739920 0.821781 0.008012 +0.724696 0.886735 -0.015147 +0.679054 0.953485 -0.007594 +0.725070 0.955976 -0.014837 +0.680075 1.023265 -0.009105 +0.724941 1.023398 -0.012234 +0.638348 0.568304 0.108393 +0.639296 0.628928 0.103934 +0.599265 0.572717 0.125780 +0.633799 0.690866 0.098051 +0.599059 0.629816 0.125432 +0.626635 0.756749 0.096622 +0.593137 0.691270 0.122971 +0.655325 0.823176 0.054246 +0.638706 0.887401 0.034189 +0.609725 0.822937 0.081492 +0.684000 0.886531 0.007858 +0.623933 0.947562 -0.000862 +0.624044 1.022053 -0.012575 +0.551366 0.572369 0.134288 +0.550988 0.630105 0.139637 +0.578010 0.751420 0.109427 +0.546688 0.690687 0.135072 +0.526680 0.785141 0.114939 +0.551807 0.815258 0.099809 +0.543856 0.878644 0.077627 +0.590200 0.886385 0.059091 +0.532048 0.916271 0.056565 +0.560281 0.940421 0.026781 +0.561580 0.991039 -0.018410 +0.622285 1.495279 0.538000 +0.665959 1.456078 0.513488 +0.669037 1.495233 0.514068 +0.629673 1.548514 0.534578 +0.672791 1.541993 0.517292 +0.781747 1.355413 0.064101 +0.766659 1.332476 0.104106 +0.777192 1.326233 0.065682 +0.789013 1.411545 0.161842 +0.770826 1.388598 0.202143 +0.781139 1.375788 0.158763 +0.780215 1.397497 0.108459 +0.785457 1.363239 0.106230 +0.775567 1.384051 0.069774 +0.788084 1.464525 0.226864 +0.766775 1.420250 0.262303 +0.795018 1.421031 0.216321 +0.773237 1.446817 0.164716 +0.788928 1.534744 0.350010 +0.765271 1.508517 0.382533 +0.785620 1.495587 0.352875 +0.773226 1.511145 0.295272 +0.799371 1.472465 0.293857 +0.736814 1.307873 0.288678 +0.720321 1.270469 0.322938 +0.729460 1.261291 0.284987 +0.742710 1.308283 0.226646 +0.737226 1.252953 0.229120 +0.750492 1.300970 0.162178 +0.739407 1.248301 0.165640 +0.758515 1.294322 0.098975 +0.741344 1.240840 0.101497 +0.762877 1.295944 0.036663 +0.741438 1.223192 0.034108 +0.723115 1.367454 0.344772 +0.718954 1.324171 0.388601 +0.730609 1.302535 0.349062 +0.733479 1.367810 0.289595 +0.746245 1.369312 0.226381 +0.752069 1.348046 0.160847 +0.773860 1.352405 0.023413 +0.730224 1.425505 0.348196 +0.713945 1.370826 0.390645 +0.744045 1.420386 0.303721 +0.751964 1.431216 0.103097 +0.751697 1.398528 0.042154 +0.750085 1.471287 0.354645 +0.717390 1.431608 0.392893 +0.737069 1.491566 0.396430 +0.761905 1.454602 0.319685 +0.749984 1.494175 0.238143 +0.741993 1.470423 0.174012 +0.732257 1.454387 0.132289 +0.723085 1.539745 0.455738 +0.773387 1.549650 0.420356 +0.788456 1.535832 0.392767 +0.749052 1.555667 0.362532 +0.743164 1.525324 0.307011 +0.736742 1.508748 0.271122 +0.719548 1.090129 -0.020576 +0.688505 1.273791 0.316735 +0.693744 1.260295 0.275763 +0.693566 1.247584 0.225014 +0.692356 1.233343 0.165956 +0.691237 1.217686 0.107923 +0.689591 1.203440 0.050779 +0.710880 1.163470 -0.026133 +0.688914 1.288831 0.362707 +0.692505 1.310975 0.410229 +0.699984 1.353431 0.449941 +0.701680 1.431165 0.438706 +0.679780 1.375694 0.482706 +0.697933 1.432648 0.090164 +0.687185 1.491874 0.482995 +0.682163 1.431612 0.490026 +0.709233 1.491228 0.442925 +0.699616 1.491700 0.240005 +0.698803 1.471044 0.176450 +0.698430 1.452099 0.131296 +0.695998 1.540213 0.489108 +0.712479 1.518261 0.307678 +0.678835 1.510083 0.340805 +0.704211 1.537951 0.362220 +0.717769 1.506571 0.272060 +0.685396 1.499026 0.296090 +0.645396 1.092462 -0.019060 +0.683519 1.090805 -0.015658 +0.656565 1.164587 -0.022816 +0.685129 1.163199 -0.021501 +0.667183 1.271443 0.265388 +0.656547 1.262561 0.222725 +0.645373 1.251002 0.164972 +0.637975 1.239476 0.104438 +0.634073 1.220274 0.041716 +0.661019 1.329122 0.396896 +0.657368 1.319893 0.353143 +0.651064 1.301145 0.293150 +0.629362 1.300645 0.229067 +0.619788 1.298772 0.164713 +0.616542 1.295236 0.099422 +0.618909 1.287216 0.027958 +0.642000 1.380545 0.471703 +0.643766 1.366994 0.421639 +0.635604 1.365793 0.358702 +0.625678 1.358878 0.295776 +0.613149 1.356421 0.165152 +0.615067 1.357084 0.230815 +0.634460 1.345636 0.036313 +0.619543 1.355165 0.100137 +0.624990 1.426332 0.489975 +0.634147 1.447410 0.527324 +0.626670 1.427575 0.423849 +0.625976 1.425585 0.361200 +0.624818 1.419624 0.296330 +0.627119 1.415334 0.231486 +0.634706 1.411279 0.168064 +0.652234 1.409718 0.105747 +0.661249 1.386165 0.045482 +0.699434 1.407817 0.040121 +0.619810 1.491101 0.481519 +0.650095 1.489305 0.364057 +0.630682 1.489305 0.426814 +0.652381 1.469625 0.297063 +0.656946 1.460208 0.234525 +0.663011 1.448356 0.176851 +0.670249 1.438514 0.136860 +0.630831 1.544977 0.483043 +0.649632 1.539388 0.439949 +0.675197 1.537995 0.399904 +0.619213 1.257283 -0.027832 +0.648005 1.580786 0.519109 +0.675387 1.577201 0.516871 +0.739914 1.588567 0.427748 +0.733707 1.571456 0.394414 +0.697974 1.597987 0.490007 +0.732163 1.586663 0.468365 +0.692960 1.574950 0.430229 +0.711580 1.562934 0.396268 +0.654375 1.579672 0.483525 +0.665074 1.567925 0.451959 +0.492481 0.034182 0.030049 +0.491585 0.047209 0.096478 +0.470166 0.102006 0.145875 +0.458133 0.064725 0.194166 +0.474294 0.051300 0.156306 +0.480295 0.105714 0.091613 +0.502700 0.109657 0.039786 +0.452832 0.134599 0.131684 +0.455462 0.149180 0.080137 +0.488369 0.156311 0.029431 +0.540090 0.162795 0.004635 +0.439441 0.183463 0.043301 +0.473091 0.220684 0.023686 +0.529348 0.227848 -0.002644 +0.485524 0.286328 0.033673 +0.537146 0.293084 0.005615 +0.490239 0.387179 0.063091 +0.489926 0.337296 0.045269 +0.489943 0.438601 0.079328 +0.490144 0.522574 0.119232 +0.489518 0.482575 0.099367 +0.420099 0.035349 0.155009 +0.422648 0.046690 0.215416 +0.425024 0.036488 0.094689 +0.427701 0.041397 0.030446 +0.413365 0.103248 0.215812 +0.444842 0.105506 0.180932 +0.400960 0.141730 0.196701 +0.422830 0.149569 0.157933 +0.420088 0.172821 0.107242 +0.420581 0.236312 0.033672 +0.421869 0.329385 0.049664 +0.429152 0.285397 0.039400 +0.426387 0.378377 0.073669 +0.430807 0.425702 0.096189 +0.422013 0.516941 0.119863 +0.420787 0.470689 0.106839 +0.360426 0.034593 0.157003 +0.362550 0.039491 0.225638 +0.362558 0.064097 0.096013 +0.366576 0.082272 0.031548 +0.361326 0.105249 0.238186 +0.371884 0.179286 0.150450 +0.302629 0.224819 0.161025 +0.314943 0.223529 0.115180 +0.378299 0.186032 0.108702 +0.334046 0.217233 0.057145 +0.399902 0.193342 0.053403 +0.363031 0.239830 0.028520 +0.344180 0.306381 0.056943 +0.373049 0.283034 0.034992 +0.358645 0.373929 0.079905 +0.318659 0.300048 0.122869 +0.330827 0.434457 0.201709 +0.331585 0.371817 0.134748 +0.353764 0.443687 0.133052 +0.374194 0.420273 0.095617 +0.340413 0.497856 0.212220 +0.310189 0.432211 0.249244 +0.361510 0.505930 0.148453 +0.297055 0.040985 0.224502 +0.296519 0.034514 0.158119 +0.298656 0.083729 0.098611 +0.299732 0.081268 0.033533 +0.353157 0.165468 0.200395 +0.296261 0.106081 0.234853 +0.286461 0.167946 0.208547 +0.302866 0.299033 0.172547 +0.277426 0.232398 0.201815 +0.296082 0.365825 0.231883 +0.254682 0.298869 0.254284 +0.285838 0.298866 0.218266 +0.317236 0.367439 0.189389 +0.264225 0.363603 0.269127 +0.290260 0.497439 0.294780 +0.254872 0.459105 0.316203 +0.274834 0.430355 0.294044 +0.322892 0.496468 0.260528 +0.230728 0.047325 0.217055 +0.230980 0.032356 0.158172 +0.231667 0.081894 0.099114 +0.232020 0.080723 0.034266 +0.229551 0.109497 0.229370 +0.238892 0.238055 0.235538 +0.194451 0.205854 0.247823 +0.221141 0.177779 0.223573 +0.203319 0.244506 0.260824 +0.219104 0.352798 0.299452 +0.223175 0.403318 0.318450 +0.218119 0.448318 0.329980 +0.216119 0.500344 0.331605 +0.257106 0.503045 0.317783 +0.164925 0.056010 0.207039 +0.165116 0.031683 0.157390 +0.164755 0.079412 0.098511 +0.164709 0.081271 0.034573 +0.160522 0.162132 0.232872 +0.154195 0.200016 0.255577 +0.155786 0.243541 0.275648 +0.159275 0.295138 0.298524 +0.213425 0.297576 0.281460 +0.161688 0.395230 0.323844 +0.160910 0.347328 0.314487 +0.160895 0.444504 0.331409 +0.160430 0.499245 0.328769 +0.099043 0.062637 0.199754 +0.099106 0.031795 0.156607 +0.097993 0.072420 0.097125 +0.097039 0.081118 0.034316 +0.164103 0.113154 0.215102 +0.097791 0.156434 0.236924 +0.096396 0.197722 0.256831 +0.099369 0.117224 0.205678 +0.096549 0.242926 0.280162 +0.097431 0.299861 0.289920 +0.097814 0.353785 0.304672 +0.098627 0.403670 0.310521 +0.098896 0.451641 0.322888 +0.032662 0.064216 0.197265 +0.032736 0.031911 0.156161 +0.031563 0.062289 0.095307 +0.028544 0.081119 0.033165 +0.032941 0.157446 0.235142 +0.032407 0.198346 0.257225 +0.034274 0.118812 0.202377 +0.033301 0.246515 0.269399 +0.033772 0.301816 0.287009 +0.036161 0.416553 0.303026 +0.038879 0.468542 0.313072 +0.034701 0.360976 0.295289 +0.100818 0.502066 0.324334 +0.491901 0.571135 0.136833 +0.491011 0.629754 0.138888 +0.539098 0.746985 0.130646 +0.489941 0.690582 0.140350 +0.487475 0.747285 0.135430 +0.489772 0.831889 0.103774 +0.488643 0.879239 0.079738 +0.493928 0.956974 0.034406 +0.496978 0.991652 -0.004599 +0.426307 0.569054 0.135321 +0.429441 0.627979 0.148081 +0.428090 0.689352 0.146841 +0.484287 0.791005 0.118960 +0.425785 0.746388 0.134972 +0.427035 0.837631 0.105408 +0.487238 0.921557 0.060378 +0.427263 0.879126 0.079335 +0.428311 0.960806 0.035014 +0.429280 0.995202 -0.000203 +0.315080 0.560125 0.252876 +0.336358 0.560003 0.207693 +0.366375 0.563549 0.155170 +0.319171 0.615954 0.182773 +0.372771 0.624195 0.165818 +0.308173 0.675040 0.169873 +0.367168 0.685176 0.157269 +0.360866 0.744560 0.144053 +0.360840 0.796535 0.126021 +0.425828 0.795949 0.124944 +0.362199 0.841883 0.110619 +0.362625 0.882139 0.085302 +0.362819 0.915963 0.053634 +0.427332 0.922606 0.060621 +0.362714 0.951426 0.025783 +0.362832 0.982585 -0.007720 +0.290709 0.561612 0.293787 +0.273639 0.617623 0.277695 +0.298715 0.618909 0.237328 +0.256779 0.651958 0.254457 +0.265711 0.665334 0.208017 +0.255159 0.703158 0.175152 +0.290253 0.739573 0.159681 +0.294731 0.801263 0.137965 +0.295232 0.839877 0.107326 +0.296454 0.880562 0.085680 +0.296964 0.913006 0.053463 +0.297632 0.939028 0.016593 +0.210989 0.553590 0.329012 +0.251017 0.560344 0.316254 +0.200808 0.591686 0.320984 +0.225303 0.617482 0.304592 +0.217061 0.683117 0.221689 +0.225561 0.760800 0.166183 +0.228955 0.810030 0.144746 +0.229805 0.879679 0.086281 +0.230380 0.913479 0.055497 +0.230747 0.942337 0.019790 +0.159360 0.552976 0.335226 +0.162112 0.633323 0.308339 +0.219670 0.662127 0.270217 +0.159985 0.693269 0.230099 +0.213110 0.709082 0.176043 +0.161519 0.764005 0.163353 +0.163326 0.811704 0.144300 +0.229421 0.846568 0.116170 +0.163938 0.852005 0.121896 +0.164160 0.917258 0.058497 +0.164313 0.943246 0.020692 +0.100931 0.550143 0.327195 +0.157236 0.596449 0.326028 +0.099044 0.633285 0.305763 +0.161586 0.669690 0.275566 +0.098604 0.672642 0.277756 +0.097650 0.719266 0.185357 +0.157580 0.713587 0.179400 +0.098063 0.768972 0.168689 +0.098327 0.815735 0.149395 +0.164171 0.887252 0.094050 +0.098049 0.853085 0.121587 +0.098036 0.888523 0.093984 +0.099085 0.951918 0.027760 +0.046941 0.545184 0.322917 +0.039686 0.581392 0.315648 +0.099420 0.591777 0.319884 +0.035486 0.627649 0.300742 +0.098337 0.699453 0.235791 +0.033702 0.670496 0.275469 +0.034363 0.698974 0.234624 +0.035405 0.720175 0.185617 +0.033907 0.767467 0.166091 +0.033018 0.821117 0.156844 +0.032795 0.859276 0.128287 +0.032527 0.926806 0.067262 +0.098824 0.925564 0.065516 +0.033196 0.961541 0.036704 +0.099658 0.979830 -0.006748 +0.406544 1.363842 0.010070 +0.356308 1.317414 0.008126 +0.400994 1.322888 -0.000589 +0.366292 1.424035 0.036375 +0.324782 1.391961 0.054511 +0.353369 1.365709 0.037354 +0.407225 1.415959 0.009420 +0.365612 1.482184 0.017785 +0.327671 1.431585 0.060016 +0.401032 1.456507 -0.000705 +0.293487 1.350715 0.040238 +0.285055 1.387879 0.061782 +0.321965 1.488323 0.051605 +0.282617 1.433097 0.078557 +0.300214 1.542542 0.027159 +0.280675 1.490541 0.079269 +0.338272 1.522482 0.007300 +0.234312 1.349446 0.038588 +0.228497 1.387301 0.068585 +0.241834 1.323624 0.004770 +0.298623 1.315119 0.007041 +0.235707 1.492078 0.106897 +0.189757 1.462891 0.118974 +0.221367 1.436590 0.097786 +0.229259 1.545096 0.100873 +0.193246 1.497944 0.128912 +0.265022 1.546062 0.065112 +0.176373 1.348831 0.027351 +0.172591 1.383205 0.072176 +0.203426 1.330802 0.001224 +0.164337 1.422964 0.105054 +0.152464 1.459826 0.131773 +0.190201 1.486607 0.050950 +0.217723 1.447565 0.019965 +0.184663 1.437779 0.032646 +0.157951 1.547086 0.159415 +0.124601 1.518610 0.180753 +0.146152 1.499194 0.156737 +0.194295 1.544446 0.129711 +0.191968 1.533885 0.051279 +0.153380 1.486738 0.075241 +0.155666 1.539128 0.084657 +0.222318 1.487534 0.026673 +0.115571 1.368917 0.030226 +0.119124 1.382659 0.075024 +0.106966 1.445932 0.149205 +0.075482 1.407622 0.098402 +0.145419 1.430283 0.046495 +0.104721 1.478100 0.175056 +0.099813 1.507916 0.196522 +0.114008 1.493080 0.104401 +0.100322 1.549513 0.209472 +0.129421 1.550412 0.184979 +0.122118 1.541178 0.115417 +0.082629 1.499385 0.133662 +0.094020 1.545028 0.146567 +0.073119 1.468532 0.186551 +0.059770 1.450305 0.160088 +0.065747 1.452035 0.120911 +0.063875 1.502200 0.161943 +0.057936 1.500284 0.203854 +0.063893 1.547270 0.203025 +0.075677 1.544067 0.170859 +0.187818 1.577185 0.127261 +0.208739 1.587998 0.094174 +0.236015 1.587556 0.044401 +0.266175 1.570311 0.021091 +0.131284 1.583449 0.184539 +0.155835 1.601285 0.154795 +0.150367 1.622373 0.082872 +0.184613 1.593847 0.035980 +0.103069 1.588167 0.155106 +0.126250 1.576069 0.120212 +0.075521 1.576177 0.195385 +0.098639 1.599644 0.203795 +0.083048 1.570328 0.174992 +0.870015 0.513310 -0.168905 +0.841602 0.475869 -0.232323 +0.871237 0.512948 -0.232456 +0.816611 0.435281 -0.169463 +0.778968 0.407315 -0.131713 +0.786013 0.403253 -0.174262 +0.822166 0.433738 -0.233508 +0.787512 0.402852 -0.233822 +0.813586 0.440569 -0.297662 +0.781482 0.407674 -0.297586 +0.831746 0.481345 -0.105188 +0.794696 0.452034 -0.056166 +0.794903 0.437630 -0.107733 +0.842172 0.530796 -0.071194 +0.814871 0.499760 -0.038725 +0.845505 0.472715 -0.167876 +0.853970 0.522637 -0.112274 +0.837407 0.481407 -0.295357 +0.801339 0.454029 -0.360580 +0.828811 0.493612 -0.356086 +0.852568 0.528863 -0.349591 +0.783484 0.477338 -0.422144 +0.821468 0.515965 -0.416371 +0.846266 0.535836 -0.390211 +0.738581 0.104303 -0.111153 +0.729375 0.064217 -0.059324 +0.742200 0.048784 -0.104619 +0.741971 0.049768 -0.162988 +0.739095 0.104371 -0.157203 +0.724967 0.066679 -0.203200 +0.712096 0.111360 -0.191113 +0.718752 0.133888 -0.146424 +0.755302 0.370298 -0.170735 +0.750534 0.380739 -0.118609 +0.721896 0.338048 -0.230890 +0.754435 0.370753 -0.232542 +0.715004 0.343649 -0.297143 +0.749276 0.375154 -0.297345 +0.745591 0.406795 -0.077711 +0.748412 0.430997 -0.034410 +0.733618 0.390434 -0.360319 +0.770433 0.418948 -0.362192 +0.751170 0.439047 -0.426416 +0.713818 0.408245 -0.423413 +0.720357 0.469555 -0.482617 +0.758112 0.512885 -0.477703 +0.794076 0.530321 -0.457906 +0.682402 0.035712 -0.103521 +0.694918 0.043552 -0.033128 +0.681755 0.037510 -0.164644 +0.689802 0.047211 -0.231401 +0.694087 0.116989 -0.036306 +0.715460 0.111917 -0.075035 +0.673147 0.109942 -0.233364 +0.633193 0.077326 -0.293498 +0.623799 0.090167 -0.294212 +0.658826 0.093720 -0.364434 +0.662178 0.053631 -0.363682 +0.671385 0.095934 -0.428703 +0.672598 0.046256 -0.429146 +0.665935 0.093497 -0.486106 +0.666754 0.049761 -0.488415 +0.655218 0.160243 -0.074937 +0.692806 0.154044 -0.107358 +0.719132 0.134008 -0.120187 +0.693261 0.153997 -0.159187 +0.647702 0.156499 -0.194747 +0.641749 0.123666 -0.366190 +0.655369 0.134109 -0.429985 +0.647124 0.129593 -0.490934 +0.645943 0.175954 -0.144422 +0.680201 0.314129 -0.229843 +0.719748 0.340708 -0.166367 +0.675748 0.319810 -0.168034 +0.669704 0.322026 -0.294594 +0.709006 0.351578 -0.110250 +0.655856 0.335231 -0.073394 +0.666071 0.327734 -0.114196 +0.688433 0.366452 -0.054071 +0.696018 0.363315 -0.359041 +0.653419 0.340770 -0.357782 +0.678047 0.382469 -0.416081 +0.660303 0.401102 -0.455045 +0.677310 0.432645 -0.477627 +0.622891 0.034855 -0.042464 +0.621985 0.034360 -0.103372 +0.621703 0.034617 -0.165079 +0.620826 0.035240 -0.229804 +0.616041 0.036922 -0.296906 +0.614281 0.037139 -0.363279 +0.614241 0.037843 -0.428007 +0.615542 0.038207 -0.488308 +0.629057 0.119944 -0.253009 +0.609918 0.103812 -0.300811 +0.618971 0.162466 -0.045602 +0.589248 0.154774 -0.231800 +0.575127 0.126544 -0.297429 +0.606094 0.148604 -0.366194 +0.620237 0.164694 -0.428227 +0.598546 0.206513 -0.116601 +0.644888 0.176847 -0.121801 +0.590792 0.205781 -0.157854 +0.557270 0.230623 -0.197798 +0.577420 0.182821 -0.457393 +0.610454 0.168391 -0.489349 +0.598192 0.296739 -0.122817 +0.585815 0.224827 -0.074524 +0.593414 0.310923 -0.077395 +0.603490 0.294344 -0.166603 +0.617436 0.292954 -0.220630 +0.526667 0.253877 -0.235465 +0.606168 0.298841 -0.285129 +0.601222 0.322796 -0.351977 +0.623002 0.352277 -0.032630 +0.634821 0.361905 -0.414695 +0.580782 0.342481 -0.408133 +0.618523 0.388287 -0.460206 +0.618920 0.423806 -0.492953 +0.558471 0.033494 -0.038335 +0.559411 0.033395 -0.101752 +0.559773 0.032480 -0.165444 +0.559140 0.032885 -0.230838 +0.557809 0.032282 -0.297221 +0.556678 0.035684 -0.363222 +0.556669 0.037571 -0.427715 +0.558059 0.036798 -0.489602 +0.536031 0.178376 -0.242465 +0.558426 0.173850 -0.363082 +0.573126 0.183135 -0.418383 +0.565785 0.227433 -0.035779 +0.517153 0.238633 -0.293480 +0.532133 0.166647 -0.298130 +0.529339 0.228366 -0.356033 +0.523113 0.223752 -0.405961 +0.534342 0.193765 -0.453290 +0.553889 0.178704 -0.505061 +0.569897 0.293470 -0.031772 +0.554532 0.287283 -0.305900 +0.539949 0.295662 -0.347020 +0.526610 0.302419 -0.390165 +0.577314 0.340034 -0.021958 +0.508089 0.311538 -0.426557 +0.550349 0.366618 -0.457980 +0.554459 0.412777 -0.497401 +0.649096 0.086851 -0.519824 +0.651801 0.061074 -0.524233 +0.660025 0.466757 -0.508995 +0.683695 0.506072 -0.521565 +0.724406 0.528875 -0.510744 +0.620522 0.049376 -0.546826 +0.623362 0.106629 -0.543190 +0.603620 0.148001 -0.535369 +0.617263 0.459940 -0.523128 +0.622136 0.507518 -0.540426 +0.562346 0.042817 -0.558873 +0.563392 0.102284 -0.576907 +0.556397 0.150961 -0.547181 +0.556987 0.453746 -0.527862 +0.559842 0.503787 -0.553783 +0.911361 0.691630 -0.239347 +0.908860 0.658923 -0.204419 +0.914994 0.654122 -0.240271 +0.910672 0.692123 -0.279623 +0.913905 0.655204 -0.285865 +0.909683 0.661394 -0.318841 +0.906115 0.699289 -0.313518 +0.907862 0.724841 -0.203773 +0.910510 0.727540 -0.236466 +0.911266 0.725076 -0.271042 +0.939879 0.904488 -0.300841 +0.908653 0.865135 -0.256914 +0.904152 0.865951 -0.300279 +0.928198 0.910391 -0.361942 +0.890077 0.874579 -0.356911 +0.928344 0.958452 -0.191368 +0.936045 0.901362 -0.246112 +0.946700 0.960385 -0.240773 +0.953822 0.961657 -0.300034 +0.949469 0.963229 -0.363727 +0.919461 0.915727 -0.426240 +0.929282 0.965115 -0.426600 +0.928576 0.915970 -0.488305 +0.932612 0.965839 -0.486074 +0.925899 1.024776 -0.192959 +0.940668 1.025328 -0.242175 +0.948053 1.025709 -0.300589 +0.944026 1.025693 -0.364188 +0.927288 1.020066 -0.424998 +0.921541 1.018362 -0.477961 +0.875453 0.570686 -0.110968 +0.886067 0.568881 -0.170940 +0.887139 0.565689 -0.232909 +0.868618 0.516944 -0.295385 +0.882305 0.567972 -0.293344 +0.870787 0.574436 -0.348327 +0.854912 0.575523 -0.394957 +0.866072 0.630413 -0.058907 +0.883921 0.630942 -0.111334 +0.907615 0.631519 -0.174304 +0.910125 0.615102 -0.234848 +0.906535 0.616464 -0.292453 +0.896654 0.634013 -0.347750 +0.864521 0.632621 -0.398591 +0.861600 0.693569 -0.061957 +0.881791 0.693436 -0.110789 +0.897756 0.692736 -0.166206 +0.908675 0.692188 -0.202161 +0.893666 0.696061 -0.356830 +0.865188 0.695284 -0.401304 +0.853686 0.757126 -0.068909 +0.873731 0.756497 -0.116785 +0.893713 0.752872 -0.177980 +0.901276 0.766078 -0.234311 +0.902130 0.753584 -0.293625 +0.880921 0.758507 -0.350700 +0.850838 0.761621 -0.396893 +0.835028 0.821036 -0.084713 +0.854608 0.823033 -0.126765 +0.872262 0.825977 -0.177669 +0.880299 0.836402 -0.234781 +0.875158 0.823129 -0.292129 +0.857492 0.828684 -0.348333 +0.832811 0.842354 -0.408991 +0.863892 0.891163 -0.122115 +0.895019 0.892005 -0.160898 +0.921364 0.893353 -0.202447 +0.888193 0.879679 -0.423105 +0.862390 0.849426 -0.487700 +0.906812 0.878339 -0.492754 +0.909440 0.957355 -0.148467 +0.854175 1.022356 -0.071992 +0.886721 0.956254 -0.104874 +0.885908 1.023267 -0.106136 +0.903727 1.023694 -0.152326 +0.828375 0.567427 -0.027868 +0.858209 0.571707 -0.063017 +0.832108 0.570745 -0.433334 +0.802528 0.572347 -0.470356 +0.834182 0.629771 -0.023181 +0.832433 0.631598 -0.435709 +0.802087 0.631782 -0.471766 +0.834250 0.693343 -0.023882 +0.833049 0.694715 -0.437972 +0.797939 0.696690 -0.469820 +0.823899 0.756773 -0.034107 +0.818358 0.759959 -0.430477 +0.782134 0.769659 -0.459862 +0.808650 0.820620 -0.050552 +0.805758 0.821336 -0.429240 +0.804985 0.830206 -0.474866 +0.797941 0.888419 -0.065759 +0.834037 0.889872 -0.089725 +0.810572 0.956224 -0.052019 +0.850949 0.955876 -0.075180 +0.811749 1.022348 -0.049121 +0.767135 0.569416 -0.498362 +0.770478 0.631002 -0.504289 +0.764705 0.698498 -0.495257 +0.756730 0.778628 -0.480858 +0.760308 0.887008 -0.040738 +0.767974 0.956627 -0.027877 +0.768291 1.023123 -0.024034 +0.600880 1.051402 -0.022142 +0.927189 0.922514 -0.532546 +0.930579 0.967821 -0.534361 +0.916378 1.025014 -0.520858 +0.862098 0.855897 -0.547775 +0.905387 0.897286 -0.557245 +0.851237 0.869040 -0.583519 +0.867969 0.902394 -0.600569 +0.911763 0.962254 -0.575009 +0.872364 0.960714 -0.611134 +0.898237 1.025806 -0.564690 +0.867489 1.024994 -0.604652 +0.800668 0.833804 -0.531196 +0.810442 0.861852 -0.587143 +0.815648 0.901430 -0.617085 +0.811749 0.960619 -0.628606 +0.831460 1.024323 -0.642203 +0.790718 0.983353 -0.651510 +0.797452 1.023409 -0.662380 +0.728410 0.572279 -0.522469 +0.732560 0.630961 -0.529987 +0.731540 0.696329 -0.521881 +0.727770 0.772533 -0.496131 +0.746159 0.828546 -0.540321 +0.756795 0.854262 -0.598415 +0.760419 0.888406 -0.634438 +0.760351 0.932293 -0.652591 +0.754043 0.973942 -0.659731 +0.755210 1.021063 -0.666538 +0.683957 0.566111 -0.546315 +0.682972 0.629667 -0.546798 +0.683414 0.694346 -0.540411 +0.684026 0.764630 -0.514211 +0.694480 0.835557 -0.528205 +0.702184 0.853852 -0.600797 +0.700901 0.882651 -0.642165 +0.705277 0.921688 -0.663682 +0.706088 0.968670 -0.667087 +0.713573 1.018326 -0.656808 +0.624550 0.565096 -0.561616 +0.625679 0.628887 -0.569965 +0.624628 0.693594 -0.549066 +0.628353 0.761398 -0.532655 +0.650943 0.847557 -0.505687 +0.664209 0.865557 -0.590052 +0.624341 0.898875 -0.566764 +0.649939 0.902096 -0.625289 +0.667669 0.926751 -0.654122 +0.611915 0.959692 -0.579176 +0.635247 0.962306 -0.625209 +0.666234 0.969090 -0.654295 +0.647503 1.022709 -0.610680 +0.621196 1.022371 -0.569550 +0.679504 1.022797 -0.640793 +0.560283 0.565215 -0.560917 +0.561042 0.628535 -0.570670 +0.561440 0.692523 -0.553325 +0.563036 0.757245 -0.539142 +0.574619 0.823849 -0.499599 +0.598272 0.896229 -0.508631 +0.549250 0.844653 -0.483638 +0.553562 0.896465 -0.487454 +0.542746 0.960072 -0.511821 +0.583270 0.958914 -0.538134 +0.551062 1.024528 -0.505935 +0.590925 1.022755 -0.532231 +0.915073 1.090402 -0.203112 +0.921579 1.089583 -0.249847 +0.922743 1.089564 -0.303196 +0.913651 1.090537 -0.365399 +0.912384 1.068573 -0.422759 +0.908953 1.057188 -0.465793 +0.903364 1.151322 -0.260336 +0.913277 1.152809 -0.303578 +0.905163 1.153162 -0.349921 +0.904791 1.206749 -0.265120 +0.917242 1.208040 -0.302938 +0.915560 1.207491 -0.344358 +0.900117 1.159345 -0.386608 +0.909811 1.215481 -0.383711 +0.910361 1.246395 -0.266208 +0.913969 1.249956 -0.300837 +0.912860 1.246129 -0.337046 +0.840054 1.086457 -0.085922 +0.870903 1.087845 -0.119269 +0.901030 1.090484 -0.157753 +0.893075 1.116176 -0.390370 +0.893861 1.104427 -0.431400 +0.898480 1.084702 -0.492111 +0.857116 1.152033 -0.131913 +0.875601 1.150536 -0.175473 +0.887686 1.149666 -0.221511 +0.892570 1.156035 -0.432051 +0.888275 1.151947 -0.491012 +0.838611 1.211531 -0.148475 +0.861098 1.206527 -0.188153 +0.890398 1.210169 -0.227349 +0.887455 1.211938 -0.431099 +0.862382 1.208797 -0.486177 +0.864715 1.254723 -0.193866 +0.890959 1.268678 -0.238935 +0.891974 1.283285 -0.300048 +0.889595 1.267510 -0.362766 +0.864085 1.257433 -0.420486 +0.848809 1.244587 -0.460715 +0.824085 1.150176 -0.099380 +0.802159 1.087157 -0.058596 +0.814229 1.211100 -0.105019 +0.795438 1.152514 -0.062474 +0.780413 1.252912 -0.072717 +0.799529 1.260256 -0.110507 +0.837112 1.276465 -0.164552 +0.846823 1.299163 -0.232557 +0.846206 1.303641 -0.297624 +0.838098 1.297647 -0.359268 +0.813708 1.287451 -0.417890 +0.815103 1.230521 -0.509768 +0.811671 1.261081 -0.470473 +0.799748 1.314529 -0.231761 +0.801418 1.317206 -0.295406 +0.796054 1.311927 -0.351611 +0.787571 1.305186 -0.390358 +0.760782 1.088609 -0.032637 +0.758437 1.221470 -0.028980 +0.751133 1.156096 -0.040054 +0.782489 1.211119 -0.070936 +0.768932 1.283739 -0.037120 +0.775404 1.294327 -0.102405 +0.790784 1.304696 -0.165948 +0.755135 1.295944 -0.437480 +0.760367 1.245951 -0.522105 +0.757462 1.272702 -0.482749 +0.751903 1.351227 -0.032936 +0.741987 1.326998 -0.098787 +0.744436 1.318989 -0.165305 +0.749263 1.324396 -0.231195 +0.750613 1.325611 -0.295006 +0.749358 1.321233 -0.352269 +0.747982 1.311224 -0.397267 +0.734481 1.382195 -0.000526 +0.694144 1.298764 -0.443476 +0.695053 1.360527 -0.041021 +0.688127 1.320791 -0.164700 +0.690170 1.326130 -0.230631 +0.691538 1.328246 -0.294888 +0.692313 1.324547 -0.353207 +0.692913 1.314453 -0.400756 +0.697621 1.384934 -0.001343 +0.618483 1.160236 -0.034295 +0.618757 1.220330 -0.025120 +0.696950 1.274875 -0.487691 +0.631889 1.296846 -0.442566 +0.653134 1.334580 -0.023423 +0.628690 1.291727 -0.098529 +0.628403 1.285964 -0.040364 +0.689006 1.330702 -0.098493 +0.626779 1.322640 -0.228598 +0.631061 1.325198 -0.293857 +0.635234 1.322169 -0.352266 +0.637959 1.312434 -0.398815 +0.669273 1.370410 0.007156 +0.563297 1.094401 -0.043660 +0.609431 1.097759 -0.027182 +0.570705 1.158293 -0.053918 +0.555638 1.150151 -0.440816 +0.572910 1.087054 -0.485616 +0.537356 1.087924 -0.456351 +0.590103 1.147807 -0.470054 +0.612044 1.084597 -0.511753 +0.575702 1.215418 -0.482961 +0.552665 1.216842 -0.440889 +0.616511 1.213230 -0.509142 +0.581253 1.223378 -0.079641 +0.612747 1.275080 -0.092411 +0.585828 1.260515 -0.091890 +0.584805 1.263504 -0.474854 +0.562717 1.288204 -0.428868 +0.634979 1.266158 -0.492619 +0.552342 1.303018 -0.090449 +0.622297 1.314698 -0.162377 +0.558433 1.333869 -0.110309 +0.565602 1.321094 -0.225292 +0.578015 1.318387 -0.292566 +0.547473 1.301634 -0.360671 +0.537602 1.304065 -0.293566 +0.587981 1.314853 -0.351293 +0.596471 1.307832 -0.393371 +0.523991 1.381857 -0.135478 +0.553873 1.351840 -0.162022 +0.884342 1.086934 -0.551124 +0.856363 1.087904 -0.595489 +0.869490 1.145050 -0.540607 +0.838605 1.144850 -0.575827 +0.850771 1.185482 -0.528393 +0.813723 1.087782 -0.634463 +0.792707 1.061905 -0.657155 +0.802816 1.142480 -0.604824 +0.812643 1.193270 -0.552366 +0.790976 1.176140 -0.583812 +0.757090 1.102380 -0.644567 +0.756976 1.064352 -0.660547 +0.754343 1.147289 -0.617012 +0.757827 1.215667 -0.559071 +0.750995 1.184288 -0.590290 +0.722610 1.057176 -0.651822 +0.701406 1.083371 -0.631816 +0.701764 1.138735 -0.610046 +0.700181 1.218131 -0.556629 +0.696081 1.179337 -0.585278 +0.703656 1.249161 -0.524308 +0.662930 1.080060 -0.595877 +0.639252 1.084194 -0.553469 +0.617622 1.149531 -0.509066 +0.667952 1.126354 -0.590551 +0.648017 1.153314 -0.560195 +0.652809 1.211296 -0.540606 +0.662171 1.245225 -0.521499 +0.493870 0.033592 -0.036077 +0.495241 0.032329 -0.100526 +0.495565 0.042038 -0.165538 +0.495179 0.043056 -0.231259 +0.494684 0.038522 -0.297501 +0.494540 0.033112 -0.363284 +0.494584 0.037260 -0.427294 +0.495357 0.036316 -0.488778 +0.505443 0.253166 -0.431335 +0.489537 0.179690 -0.497577 +0.485615 0.230298 -0.463612 +0.476705 0.300531 -0.466683 +0.481095 0.358131 -0.476124 +0.486297 0.404140 -0.497962 +0.429811 0.040254 -0.034820 +0.430058 0.031375 -0.099862 +0.430767 0.043429 -0.165898 +0.430488 0.049009 -0.231688 +0.430160 0.044084 -0.297639 +0.429883 0.033705 -0.363239 +0.429755 0.034928 -0.427286 +0.429523 0.034719 -0.488448 +0.423297 0.183382 -0.500615 +0.425513 0.237332 -0.495988 +0.424602 0.292263 -0.503416 +0.424738 0.339401 -0.511111 +0.367779 0.072940 -0.035623 +0.365597 0.048026 -0.100523 +0.363932 0.029921 -0.165477 +0.365451 0.044610 -0.231842 +0.364970 0.038835 -0.297500 +0.364233 0.031206 -0.363407 +0.363869 0.032741 -0.428613 +0.362673 0.032678 -0.492406 +0.357208 0.237280 -0.488347 +0.349089 0.181823 -0.491527 +0.361163 0.291233 -0.503582 +0.300726 0.078926 -0.034555 +0.301502 0.073935 -0.101691 +0.300161 0.055408 -0.166545 +0.298617 0.040188 -0.231578 +0.299608 0.046938 -0.297439 +0.301031 0.059864 -0.363608 +0.300061 0.062669 -0.429549 +0.296802 0.041966 -0.492814 +0.297147 0.295088 -0.475233 +0.286852 0.235054 -0.463362 +0.297278 0.342772 -0.485659 +0.232519 0.077356 -0.033586 +0.233255 0.075397 -0.100683 +0.233994 0.072686 -0.166730 +0.234398 0.070157 -0.231973 +0.234397 0.069371 -0.297476 +0.234195 0.070910 -0.364220 +0.233737 0.074838 -0.431794 +0.231719 0.060767 -0.494514 +0.241485 0.251043 -0.492913 +0.242218 0.299003 -0.495177 +0.247740 0.342525 -0.494920 +0.164922 0.078049 -0.033205 +0.165101 0.074862 -0.100128 +0.165348 0.072555 -0.166140 +0.165660 0.070517 -0.231624 +0.165857 0.069968 -0.297468 +0.165825 0.071578 -0.364542 +0.165611 0.074398 -0.432535 +0.165567 0.064550 -0.495004 +0.096796 0.078027 -0.033425 +0.096448 0.074855 -0.100313 +0.096397 0.072145 -0.165966 +0.096928 0.070173 -0.231169 +0.097626 0.069588 -0.297160 +0.097871 0.071223 -0.364614 +0.097859 0.074411 -0.432520 +0.099197 0.054038 -0.493345 +0.027354 0.078608 -0.034432 +0.026779 0.073417 -0.101063 +0.027335 0.066966 -0.165839 +0.027850 0.067652 -0.230369 +0.028876 0.069600 -0.296355 +0.029617 0.071106 -0.364345 +0.030208 0.072960 -0.431320 +0.032943 0.037825 -0.491918 +0.496605 0.044185 -0.554352 +0.496556 0.101319 -0.560282 +0.493478 0.146274 -0.535410 +0.492042 0.447348 -0.528697 +0.494571 0.501993 -0.551505 +0.430106 0.054617 -0.540487 +0.429541 0.103948 -0.536731 +0.423933 0.142652 -0.520095 +0.425008 0.387366 -0.517527 +0.427338 0.440558 -0.532719 +0.428616 0.502509 -0.532616 +0.359642 0.053798 -0.552404 +0.363059 0.104549 -0.548110 +0.332473 0.063631 -0.592706 +0.331001 0.100664 -0.591707 +0.347798 0.145026 -0.536606 +0.322879 0.130623 -0.577655 +0.362549 0.334800 -0.516903 +0.360925 0.382248 -0.521025 +0.360696 0.439648 -0.525897 +0.362080 0.500522 -0.534705 +0.295673 0.033216 -0.555609 +0.292284 0.044931 -0.616400 +0.288924 0.100991 -0.619967 +0.287281 0.171127 -0.556574 +0.286245 0.143526 -0.597473 +0.285543 0.201128 -0.514673 +0.287162 0.390375 -0.493594 +0.285956 0.445543 -0.507364 +0.289333 0.503358 -0.518947 +0.230584 0.032091 -0.556322 +0.229889 0.038320 -0.625974 +0.230593 0.101690 -0.641666 +0.230261 0.155821 -0.610845 +0.222202 0.193459 -0.557951 +0.219348 0.234826 -0.522633 +0.213467 0.304802 -0.533775 +0.230435 0.370341 -0.532459 +0.186215 0.308097 -0.572984 +0.193731 0.366470 -0.589158 +0.238102 0.437899 -0.556234 +0.201818 0.432803 -0.614409 +0.252739 0.498248 -0.575524 +0.227819 0.496597 -0.626570 +0.184533 0.460476 -0.643621 +0.197325 0.502969 -0.658872 +0.164675 0.029069 -0.556458 +0.162632 0.044026 -0.618235 +0.164628 0.106160 -0.624763 +0.164272 0.165263 -0.595239 +0.189551 0.258821 -0.564786 +0.164067 0.230723 -0.584590 +0.153727 0.294970 -0.611117 +0.151590 0.349098 -0.625599 +0.152873 0.401404 -0.643949 +0.148321 0.448786 -0.658089 +0.152731 0.501114 -0.676733 +0.097769 0.027036 -0.555911 +0.097581 0.061344 -0.597131 +0.100162 0.115918 -0.597396 +0.098117 0.174042 -0.584221 +0.097827 0.230506 -0.612046 +0.096298 0.282234 -0.634103 +0.095383 0.330534 -0.647759 +0.091605 0.385850 -0.647844 +0.093081 0.439708 -0.667325 +0.094142 0.498604 -0.677955 +0.030664 0.028150 -0.555373 +0.034332 0.082217 -0.575157 +0.037884 0.134224 -0.567793 +0.034041 0.177644 -0.599229 +0.032874 0.226977 -0.629657 +0.031946 0.273572 -0.642861 +0.032407 0.318369 -0.660388 +0.031399 0.375448 -0.660297 +0.032302 0.433456 -0.684093 +0.032159 0.496767 -0.679904 +0.502116 0.888290 -0.453071 +0.493502 0.836863 -0.487680 +0.508678 0.960361 -0.476093 +0.478906 0.910634 -0.432931 +0.479799 0.960975 -0.438358 +0.504312 1.026050 -0.047281 +0.559876 1.038529 -0.033691 +0.485809 1.024412 -0.438045 +0.518086 1.024630 -0.472374 +0.430253 0.868502 -0.458182 +0.429940 0.830019 -0.492282 +0.442262 0.942974 -0.389282 +0.428665 0.902938 -0.427649 +0.436251 1.021434 -0.054304 +0.459059 1.018811 -0.393038 +0.418937 0.961783 -0.361673 +0.436131 1.004865 -0.337813 +0.363503 0.897624 -0.430046 +0.364244 0.860480 -0.457289 +0.365614 0.819429 -0.481874 +0.362339 0.936626 -0.402800 +0.363631 1.006256 -0.051440 +0.419845 1.032003 -0.110982 +0.359126 1.023968 -0.167738 +0.417164 1.038137 -0.169161 +0.360474 1.007094 -0.284953 +0.417120 1.036567 -0.229131 +0.422611 1.025887 -0.286141 +0.362210 0.988234 -0.330112 +0.358089 0.966637 -0.369522 +0.298458 0.781869 -0.506346 +0.297837 0.819925 -0.484339 +0.296404 0.893408 -0.428522 +0.296626 0.857470 -0.455793 +0.298357 0.963761 -0.019498 +0.296247 0.925625 -0.396796 +0.299218 0.981137 -0.060026 +0.360319 1.018823 -0.107049 +0.298768 0.994518 -0.110154 +0.359196 1.019789 -0.229103 +0.298135 1.002167 -0.168093 +0.297157 1.002339 -0.228054 +0.296524 0.992153 -0.282086 +0.296843 0.973145 -0.323210 +0.295951 0.951720 -0.359296 +0.231432 0.788146 -0.514680 +0.230366 0.826793 -0.491512 +0.228555 0.862440 -0.460911 +0.230923 0.963086 -0.019302 +0.228295 0.967549 -0.323653 +0.228245 0.951421 -0.362771 +0.228643 0.928378 -0.402013 +0.228241 0.896193 -0.432267 +0.230897 0.978517 -0.060225 +0.230504 0.991289 -0.110324 +0.230182 0.998468 -0.168168 +0.229728 0.997932 -0.227909 +0.228927 0.985599 -0.281454 +0.162881 0.876918 -0.477464 +0.162833 0.838563 -0.502143 +0.164698 0.969008 -0.014235 +0.163423 0.964963 -0.376773 +0.163889 0.942474 -0.415351 +0.163644 0.913208 -0.449608 +0.164147 0.988280 -0.055591 +0.163633 1.004866 -0.108057 +0.164242 1.013672 -0.167683 +0.164448 1.014597 -0.229352 +0.163570 1.004704 -0.287495 +0.163113 0.984986 -0.335842 +0.096196 0.846948 -0.510167 +0.096880 0.885023 -0.487399 +0.100130 0.981978 -0.390350 +0.099588 0.956950 -0.427705 +0.098625 0.925193 -0.461845 +0.099130 1.003769 -0.049793 +0.103008 1.027675 -0.167685 +0.103663 1.029154 -0.230174 +0.099670 1.022101 -0.291466 +0.099788 1.005059 -0.346562 +0.033412 0.964870 -0.435856 +0.032877 0.929843 -0.466667 +0.032437 0.890459 -0.493448 +0.033937 0.994482 0.002792 +0.098673 1.020687 -0.106456 +0.032934 1.016803 -0.045896 +0.048305 1.037651 -0.169148 +0.048599 1.038384 -0.229177 +0.033251 1.018942 -0.352267 +0.033556 0.991461 -0.397295 +0.495393 0.563401 -0.567469 +0.495980 0.627692 -0.560076 +0.496082 0.691475 -0.554961 +0.497414 0.748612 -0.530787 +0.497992 0.796834 -0.508813 +0.430109 0.563753 -0.546359 +0.430516 0.626574 -0.544069 +0.430691 0.688912 -0.541835 +0.431085 0.745746 -0.532774 +0.430703 0.791439 -0.517316 +0.364361 0.562706 -0.546494 +0.363983 0.625553 -0.544190 +0.363923 0.686528 -0.535982 +0.365110 0.739183 -0.518998 +0.366342 0.779529 -0.499014 +0.295005 0.561190 -0.530899 +0.256669 0.559340 -0.581358 +0.300714 0.622692 -0.550405 +0.246516 0.618332 -0.570388 +0.298462 0.686994 -0.552832 +0.297986 0.740462 -0.529596 +0.229782 0.559306 -0.625791 +0.197437 0.561891 -0.660162 +0.216567 0.614808 -0.611912 +0.181649 0.617748 -0.642755 +0.222130 0.675290 -0.548944 +0.197986 0.653346 -0.594455 +0.230369 0.742593 -0.538428 +0.151666 0.561118 -0.678686 +0.142440 0.614232 -0.663183 +0.155241 0.692772 -0.560189 +0.154554 0.665025 -0.619003 +0.130904 0.648441 -0.647802 +0.160803 0.746532 -0.539328 +0.163021 0.796975 -0.522266 +0.093623 0.559275 -0.677237 +0.091592 0.615086 -0.671723 +0.093466 0.683535 -0.619361 +0.088515 0.654600 -0.650806 +0.093306 0.707819 -0.571949 +0.094007 0.748229 -0.537432 +0.096372 0.804828 -0.528845 +0.032154 0.558273 -0.674756 +0.031506 0.614897 -0.672019 +0.030945 0.690749 -0.621993 +0.030527 0.657573 -0.652931 +0.030412 0.715262 -0.578588 +0.030719 0.749497 -0.537288 +0.031995 0.809274 -0.533645 +0.032207 0.850789 -0.513918 +0.510758 1.086273 -0.070436 +0.505148 1.086930 -0.422145 +0.529994 1.157141 -0.086448 +0.489673 1.103853 -0.109286 +0.502026 1.158328 -0.111202 +0.480521 1.115668 -0.140261 +0.523974 1.149282 -0.405666 +0.479067 1.082777 -0.379347 +0.504608 1.143862 -0.350631 +0.483339 1.206321 -0.098419 +0.504913 1.228928 -0.079904 +0.504010 1.219943 -0.298459 +0.487462 1.180086 -0.254644 +0.492132 1.224303 -0.246437 +0.516718 1.211518 -0.352608 +0.494554 1.166851 -0.296827 +0.526510 1.212062 -0.403631 +0.510503 1.271707 -0.299435 +0.496833 1.274358 -0.240021 +0.517084 1.267647 -0.358030 +0.530260 1.258851 -0.400311 +0.496587 1.288358 -0.056570 +0.499391 1.352104 -0.055539 +0.512143 1.314306 -0.224113 +0.476102 1.410625 -0.056287 +0.521800 1.378050 -0.096934 +0.489400 1.413517 -0.099968 +0.494912 1.364537 -0.181066 +0.487631 1.400593 -0.144316 +0.455632 1.444446 -0.064796 +0.453458 1.442613 -0.103386 +0.475586 1.047468 -0.086274 +0.464563 1.062196 -0.119072 +0.451786 1.081194 -0.286673 +0.453678 1.088091 -0.227753 +0.459343 1.074905 -0.336907 +0.479690 1.162200 -0.170219 +0.485748 1.167574 -0.138924 +0.476277 1.154912 -0.226989 +0.463531 1.087253 -0.166619 +0.476814 1.127802 -0.284833 +0.481330 1.114914 -0.324866 +0.431630 1.244929 -0.058703 +0.433176 1.217800 -0.104843 +0.424684 1.231723 -0.156995 +0.469875 1.224469 -0.204265 +0.457151 1.280097 -0.206256 +0.414010 1.291735 -0.177004 +0.449750 1.357211 -0.015982 +0.430279 1.296581 -0.024384 +0.464397 1.319679 -0.202134 +0.432408 1.353658 -0.175660 +0.443563 1.414264 -0.021805 +0.432906 1.419306 -0.146798 +0.425989 1.464819 -0.040869 +0.415880 1.466279 -0.094820 +0.411025 1.447780 -0.125134 +0.373402 1.247985 -0.092200 +0.373658 1.256098 -0.057517 +0.364758 1.266692 -0.125098 +0.365922 1.282501 -0.023256 +0.366301 1.305627 -0.150099 +0.383590 1.354444 -0.129997 +0.379472 1.414112 -0.138581 +0.342332 1.361276 -0.108899 +0.346197 1.412439 -0.096573 +0.381971 1.501002 -0.037521 +0.381637 1.452018 -0.125242 +0.359163 1.483711 -0.098669 +0.339532 1.526316 -0.031128 +0.334546 1.513075 -0.066887 +0.336675 1.267413 -0.081896 +0.337485 1.268732 -0.060069 +0.306316 1.286044 -0.039537 +0.305557 1.296330 -0.097187 +0.329095 1.319095 -0.131481 +0.289197 1.358287 -0.101427 +0.301964 1.409825 -0.050618 +0.303117 1.473395 -0.068523 +0.280436 1.437934 -0.025955 +0.279363 1.475708 -0.031122 +0.291037 1.551026 -0.023938 +0.296918 1.522473 -0.064704 +0.244800 1.308707 -0.034080 +0.245492 1.317155 -0.070629 +0.232993 1.352390 -0.086974 +0.243176 1.388253 -0.039668 +0.253510 1.480709 -0.001716 +0.242476 1.429555 -0.004310 +0.217883 1.532493 0.022050 +0.270527 1.510830 -0.042462 +0.244758 1.535088 -0.019298 +0.202886 1.326142 -0.031206 +0.214610 1.327392 -0.055742 +0.169035 1.361407 -0.037103 +0.200972 1.345554 -0.063329 +0.190512 1.407376 0.005068 +0.136481 1.375242 -0.007208 +0.160219 1.404806 0.016002 +0.001025 1.041126 -0.136114 +0.006675 1.043672 -0.174811 +0.006658 1.043875 -0.224088 +0.000624 1.041811 -0.262075 +0.030536 1.035256 -0.290320 +0.264651 1.570577 -0.002185 +0.232960 1.584242 -0.004536 +0.208070 1.568151 0.014344 +-0.034331 0.068867 0.192698 +-0.034441 0.031253 0.156213 +-0.033673 0.046551 0.093916 +-0.038313 0.079261 0.030499 +-0.032846 0.161658 0.230858 +-0.032097 0.206126 0.248149 +-0.030846 0.123274 0.195152 +-0.029784 0.251622 0.259514 +-0.029566 0.304841 0.275773 +-0.029267 0.365383 0.285876 +0.011927 0.514818 0.310255 +-0.017974 0.493639 0.302307 +-0.027397 0.427197 0.295942 +-0.101673 0.032890 0.155151 +-0.100172 0.078881 0.183386 +-0.098457 0.027971 0.094658 +-0.098796 0.043572 0.029834 +-0.098433 0.123881 0.198148 +-0.095515 0.216636 0.245117 +-0.087798 0.258457 0.256274 +-0.097739 0.169904 0.220925 +-0.086448 0.309620 0.256319 +-0.091297 0.429302 0.282510 +-0.088097 0.494177 0.286280 +-0.160128 0.049016 0.145411 +-0.161189 0.030859 0.094289 +-0.164939 0.029051 0.031739 +-0.161384 0.089797 0.171603 +-0.164292 0.133523 0.191088 +-0.128517 0.268117 0.248169 +-0.159507 0.240416 0.237709 +-0.162254 0.184151 0.208181 +-0.173986 0.305627 0.236105 +-0.133635 0.311814 0.246304 +-0.089646 0.367892 0.268974 +-0.141537 0.368431 0.256768 +-0.143555 0.429040 0.263096 +-0.139678 0.492981 0.261975 +-0.181973 0.492902 0.242107 +-0.193281 0.072746 0.128856 +-0.205556 0.069109 0.090874 +-0.228286 0.072699 0.026617 +-0.230213 0.115402 0.105439 +-0.207416 0.102695 0.147262 +-0.257625 0.123909 0.058354 +-0.213124 0.153205 0.161515 +-0.225737 0.198744 0.192487 +-0.223970 0.244782 0.220595 +-0.183302 0.366869 0.244833 +-0.221534 0.304880 0.219212 +-0.185112 0.428486 0.246052 +-0.227140 0.366064 0.228732 +-0.227069 0.429049 0.225851 +-0.295177 0.089144 -0.007376 +-0.296023 0.167010 0.100344 +-0.260632 0.161688 0.136926 +-0.323115 0.181236 0.053366 +-0.258517 0.257693 0.194495 +-0.276143 0.228721 0.164836 +-0.314731 0.232967 0.121760 +-0.295491 0.299712 0.167821 +-0.262540 0.306033 0.195981 +-0.299428 0.366231 0.165955 +-0.263350 0.367103 0.193906 +-0.271741 0.429761 0.203592 +-0.225822 0.493360 0.221129 +-0.270745 0.493669 0.200631 +-0.310386 0.430147 0.176370 +-0.365088 0.130944 0.006826 +-0.302163 0.135381 0.018022 +-0.344888 0.238997 0.080642 +-0.366969 0.187059 0.019770 +-0.331621 0.299212 0.134850 +-0.339027 0.365457 0.139916 +-0.364772 0.300270 0.100898 +-0.344387 0.430865 0.143167 +-0.373805 0.365351 0.109595 +-0.308616 0.494866 0.172297 +-0.348832 0.495268 0.145739 +-0.372461 0.431715 0.108004 +-0.430681 0.180863 0.019502 +-0.423925 0.243647 0.010640 +-0.378799 0.243321 0.041516 +-0.395880 0.301876 0.064051 +-0.423548 0.303227 0.015783 +-0.407101 0.365127 0.077153 +-0.434105 0.365017 0.035556 +-0.403623 0.431419 0.075839 +-0.436220 0.430392 0.041398 +-0.411000 0.495781 0.084464 +-0.380828 0.495005 0.116041 +-0.436535 0.495835 0.045416 +-0.490028 0.148105 -0.017828 +-0.428314 0.135261 -0.003667 +-0.486913 0.239770 0.015312 +-0.465539 0.300123 -0.013775 +-0.453954 0.360890 -0.015528 +-0.462484 0.428439 -0.002506 +-0.462314 0.495447 0.004052 +0.011236 0.538640 0.314948 +0.046310 0.508367 0.320343 +-0.017640 0.557695 0.301097 +-0.026699 0.616051 0.285570 +-0.031498 0.662117 0.266130 +-0.030414 0.692528 0.227113 +-0.027891 0.715189 0.178850 +-0.031554 0.812693 0.140949 +0.032317 0.890667 0.095424 +-0.032739 0.862312 0.132016 +-0.032741 0.928943 0.069590 +-0.032726 0.958965 0.034962 +-0.032796 0.988579 -0.000409 +-0.084476 0.555237 0.277137 +-0.088130 0.608472 0.273194 +-0.095754 0.647548 0.252283 +-0.095160 0.681604 0.215688 +-0.030331 0.762914 0.159342 +-0.092144 0.709143 0.171127 +-0.096693 0.810785 0.139342 +-0.098305 0.858597 0.129200 +-0.098097 0.896558 0.103564 +-0.032805 0.899382 0.105948 +-0.098494 0.933572 0.074016 +-0.098518 0.962520 0.036930 +-0.133934 0.551939 0.257146 +-0.176921 0.556993 0.241835 +-0.129776 0.596105 0.258059 +-0.158348 0.664678 0.199617 +-0.160041 0.707844 0.173317 +-0.094389 0.756781 0.150018 +-0.160953 0.799812 0.128072 +-0.162566 0.845535 0.115367 +-0.162993 0.887197 0.093490 +-0.164071 0.925471 0.065595 +-0.099170 0.991473 0.000378 +-0.164588 0.955258 0.029291 +-0.224043 0.555340 0.218177 +-0.217327 0.607276 0.205725 +-0.159318 0.619541 0.237581 +-0.229226 0.699016 0.168638 +-0.230314 0.744899 0.145854 +-0.161353 0.754672 0.150451 +-0.225326 0.782637 0.113007 +-0.226641 0.828179 0.096800 +-0.228067 0.871695 0.076674 +-0.227980 0.906560 0.047070 +-0.266443 0.552762 0.196356 +-0.258245 0.595604 0.189831 +-0.303440 0.557338 0.169833 +-0.222973 0.648854 0.184037 +-0.293022 0.677269 0.148202 +-0.293498 0.724243 0.125484 +-0.292651 0.768163 0.103314 +-0.291282 0.808708 0.077625 +-0.290953 0.847625 0.052255 +-0.291319 0.881931 0.022141 +-0.228202 0.936155 0.011466 +-0.348759 0.555478 0.144790 +-0.346168 0.608516 0.140904 +-0.288270 0.620903 0.170198 +-0.347725 0.652938 0.118089 +-0.347135 0.702715 0.097749 +-0.348913 0.748891 0.082715 +-0.351695 0.785767 0.056224 +-0.350076 0.824453 0.029810 +-0.387925 0.552969 0.123632 +-0.445612 0.560936 0.053270 +-0.418297 0.559351 0.093655 +-0.381366 0.596126 0.120564 +-0.435221 0.625995 0.046655 +-0.396949 0.624333 0.089859 +-0.389000 0.686683 0.068791 +-0.384940 0.731572 0.062153 +-0.420693 0.689571 0.032906 +-0.385925 0.799845 0.006182 +-0.467558 0.561356 0.009076 +-0.461161 0.626603 0.003648 +-0.526581 0.197407 -0.008245 +-0.486791 0.186593 0.007446 +-0.524537 0.301070 -0.009363 +-0.038980 0.067693 -0.035531 +-0.034086 0.030259 -0.099548 +-0.033715 0.025436 -0.165306 +-0.033588 0.026155 -0.231214 +-0.036491 0.049927 -0.296332 +-0.038794 0.072484 -0.363381 +-0.036439 0.068157 -0.428279 +-0.033059 0.025201 -0.491176 +-0.099461 0.027319 -0.034029 +-0.100103 0.029272 -0.099989 +-0.100154 0.026700 -0.165427 +-0.100113 0.024990 -0.231038 +-0.099905 0.024813 -0.297087 +-0.102328 0.057575 -0.361972 +-0.099452 0.044187 -0.425940 +-0.099118 0.021871 -0.490340 +-0.164809 0.025103 -0.034227 +-0.164684 0.033707 -0.100926 +-0.165317 0.033056 -0.165814 +-0.165450 0.031257 -0.230922 +-0.165201 0.024237 -0.296769 +-0.164774 0.024703 -0.362713 +-0.163965 0.022498 -0.427610 +-0.165071 0.023825 -0.491117 +-0.230729 0.040579 -0.037049 +-0.231063 0.024223 -0.100659 +-0.230051 0.034387 -0.166264 +-0.229538 0.036244 -0.230366 +-0.230504 0.024743 -0.296596 +-0.231268 0.028005 -0.363742 +-0.227113 0.031662 -0.428806 +-0.225524 0.051075 -0.490266 +-0.297344 0.051446 -0.047233 +-0.297465 0.028808 -0.103138 +-0.296816 0.022684 -0.166290 +-0.296554 0.025091 -0.230894 +-0.296309 0.038824 -0.294891 +-0.297741 0.064981 -0.361442 +-0.273043 0.068125 -0.423186 +-0.261108 0.073288 -0.464731 +-0.330959 0.116906 -0.389724 +-0.301611 0.114218 -0.435508 +-0.238954 0.112453 -0.501502 +-0.274585 0.115174 -0.473591 +-0.280024 0.180081 -0.473814 +-0.321501 0.175710 -0.447193 +-0.242371 0.179324 -0.500344 +-0.363914 0.058773 -0.057309 +-0.361992 0.041645 -0.108096 +-0.361769 0.031051 -0.167323 +-0.359859 0.038916 -0.229048 +-0.359402 0.052304 -0.285756 +-0.362613 0.077400 -0.332371 +-0.364381 0.088839 -0.018770 +-0.374474 0.115131 -0.361578 +-0.386776 0.149347 -0.376834 +-0.363820 0.176807 -0.402930 +-0.381030 0.239248 -0.435314 +-0.303857 0.238406 -0.498529 +-0.342488 0.237705 -0.470048 +-0.353749 0.301681 -0.484807 +-0.427497 0.072528 -0.073385 +-0.419451 0.058636 -0.116612 +-0.417762 0.053307 -0.169460 +-0.415610 0.057418 -0.225889 +-0.414690 0.066477 -0.274632 +-0.423176 0.084151 -0.314528 +-0.428095 0.099391 -0.033418 +-0.431136 0.111409 -0.353939 +-0.437489 0.146123 -0.382303 +-0.425772 0.194251 -0.387783 +-0.417797 0.249250 -0.388902 +-0.425020 0.302127 -0.412100 +-0.394054 0.300621 -0.456171 +-0.428800 0.364393 -0.424201 +-0.396376 0.365516 -0.460854 +-0.428864 0.429825 -0.427705 +-0.400272 0.430704 -0.466544 +-0.357887 0.366911 -0.489395 +-0.432275 0.495625 -0.433290 +-0.403481 0.496014 -0.470819 +-0.364406 0.431641 -0.496319 +-0.457575 0.073737 -0.128147 +-0.460429 0.073301 -0.171318 +-0.458897 0.074985 -0.222988 +-0.452961 0.079785 -0.262669 +-0.483789 0.118147 -0.052882 +-0.484185 0.092428 -0.103548 +-0.499566 0.091104 -0.167069 +-0.497932 0.093617 -0.227573 +-0.480571 0.099660 -0.287173 +-0.484006 0.126617 -0.334908 +-0.494264 0.159248 -0.366772 +-0.493581 0.203094 -0.389404 +-0.476412 0.250624 -0.386459 +-0.454978 0.300877 -0.366383 +-0.492979 0.353391 -0.051769 +-0.481832 0.350456 -0.333770 +-0.508719 0.300315 -0.368523 +-0.451959 0.360306 -0.376841 +-0.486591 0.418307 -0.066442 +-0.483593 0.417416 -0.326671 +-0.456682 0.427199 -0.385141 +-0.487695 0.496836 -0.047242 +-0.505434 0.445813 -0.115690 +-0.481093 0.495929 -0.344478 +-0.502714 0.444562 -0.277826 +-0.501011 0.506229 -0.289726 +-0.458413 0.495224 -0.392635 +-0.034706 0.037900 -0.549208 +-0.027304 0.103229 -0.552578 +-0.026215 0.143084 -0.567904 +-0.030804 0.179593 -0.609227 +-0.032173 0.225676 -0.639015 +-0.030890 0.273399 -0.642683 +-0.030354 0.315644 -0.662604 +-0.029903 0.371831 -0.663862 +-0.031008 0.431920 -0.681197 +-0.030516 0.495884 -0.677689 +-0.098295 0.050271 -0.538717 +-0.089990 0.111121 -0.541545 +-0.093116 0.145340 -0.575234 +-0.096038 0.186226 -0.606517 +-0.093040 0.235512 -0.623301 +-0.090767 0.281848 -0.640144 +-0.085648 0.321462 -0.657407 +-0.084430 0.373602 -0.653690 +-0.086542 0.432714 -0.661093 +-0.085968 0.495039 -0.658613 +-0.156470 0.061460 -0.527695 +-0.148889 0.116094 -0.530035 +-0.152229 0.161129 -0.553495 +-0.157755 0.205334 -0.586340 +-0.152163 0.249260 -0.610260 +-0.146503 0.308453 -0.620193 +-0.122967 0.332719 -0.644617 +-0.167146 0.369812 -0.627597 +-0.128401 0.375603 -0.644823 +-0.175976 0.431884 -0.633601 +-0.134396 0.432889 -0.652088 +-0.133380 0.494343 -0.647674 +-0.176925 0.495069 -0.633523 +-0.197411 0.072395 -0.519092 +-0.198456 0.117510 -0.521198 +-0.201910 0.175036 -0.529270 +-0.216868 0.234089 -0.566202 +-0.188858 0.264999 -0.584224 +-0.237457 0.303983 -0.568057 +-0.197285 0.310959 -0.591892 +-0.210331 0.370064 -0.601576 +-0.248905 0.369202 -0.574765 +-0.218928 0.432018 -0.610418 +-0.224520 0.494939 -0.617943 +-0.267005 0.235843 -0.532708 +-0.278545 0.302803 -0.540667 +-0.318915 0.301612 -0.515407 +-0.280702 0.369994 -0.540660 +-0.294598 0.432146 -0.556497 +-0.260522 0.431568 -0.587801 +-0.264808 0.494239 -0.592764 +-0.302451 0.495500 -0.566354 +-0.317882 0.368897 -0.512824 +-0.327829 0.432412 -0.523619 +-0.335441 0.496009 -0.531790 +-0.372868 0.496131 -0.505162 +-0.032831 0.962965 -0.434651 +-0.031950 0.892343 -0.496018 +-0.032686 0.931319 -0.468380 +-0.033166 1.015422 -0.043409 +-0.034321 1.036586 -0.091951 +0.030186 1.033662 -0.108254 +-0.034393 1.035956 -0.306294 +-0.033360 1.020271 -0.356534 +-0.033178 0.993809 -0.399651 +-0.097970 0.923159 -0.458314 +-0.096481 0.885698 -0.486418 +-0.095956 1.035511 -0.092531 +-0.096184 1.035648 -0.306351 +-0.099640 1.018276 -0.355728 +-0.099597 0.960512 -0.431937 +-0.100389 0.990898 -0.396909 +-0.160524 0.873113 -0.469398 +-0.094603 0.843485 -0.506611 +-0.156893 0.826763 -0.485604 +-0.164169 0.915288 -0.449518 +-0.098657 1.016188 -0.043420 +-0.164482 0.979389 -0.010890 +-0.163846 1.005859 -0.054329 +-0.166391 1.008868 -0.345125 +-0.168319 0.983966 -0.389031 +-0.167028 0.952922 -0.423600 +-0.229110 0.902182 -0.437972 +-0.224975 0.861040 -0.459639 +-0.221371 0.818349 -0.480713 +-0.230410 0.935972 -0.406586 +-0.227737 0.961938 -0.027929 +-0.218603 1.003271 -0.117127 +-0.157283 1.028156 -0.111009 +-0.170543 1.030442 -0.170291 +-0.171047 1.030078 -0.228979 +-0.220252 1.008459 -0.171096 +-0.218971 1.002704 -0.281938 +-0.158371 1.028220 -0.288266 +-0.229098 0.963289 -0.369091 +-0.227669 0.985569 -0.326619 +-0.280385 0.805691 -0.469179 +-0.222948 0.778924 -0.507769 +-0.280977 0.762472 -0.487802 +-0.291515 0.879817 -0.416635 +-0.286331 0.840546 -0.442820 +-0.290199 0.913942 -0.012709 +-0.226783 0.985840 -0.071623 +-0.283107 0.939966 -0.050151 +-0.286499 0.945182 -0.349340 +-0.292887 0.916305 -0.385475 +-0.256115 0.984067 -0.128721 +-0.296456 0.962134 -0.167741 +-0.281483 0.961487 -0.102968 +-0.260924 0.986206 -0.172815 +-0.297324 0.962877 -0.231414 +-0.220864 1.008472 -0.229118 +-0.257607 0.986392 -0.271013 +-0.261602 0.986732 -0.227353 +-0.284831 0.965898 -0.297077 +-0.330078 0.749465 -0.468131 +-0.385142 0.690825 -0.455651 +-0.367531 0.750611 -0.437608 +-0.288162 0.721249 -0.519068 +-0.343195 0.692042 -0.495502 +-0.324204 0.792105 -0.459272 +-0.347876 0.809666 -0.427849 +-0.352002 0.856530 -0.005548 +-0.352675 0.853368 -0.390955 +-0.320547 0.918541 -0.067657 +-0.362127 0.895638 -0.106032 +-0.345526 0.889519 -0.048519 +-0.326917 0.927206 -0.109478 +-0.367507 0.897715 -0.167308 +-0.334110 0.931048 -0.168149 +-0.367722 0.897600 -0.230299 +-0.334440 0.931166 -0.230365 +-0.364000 0.896659 -0.291599 +-0.329851 0.930345 -0.289381 +-0.323979 0.923251 -0.331176 +-0.348056 0.891461 -0.349334 +-0.431384 0.560732 -0.433385 +-0.405208 0.561217 -0.472704 +-0.429989 0.626029 -0.431101 +-0.402164 0.627162 -0.470210 +-0.373909 0.560963 -0.506774 +-0.415394 0.688455 -0.417708 +-0.366960 0.625808 -0.503519 +-0.401540 0.754860 0.027254 +-0.448592 0.690510 -0.010246 +-0.400480 0.747166 -0.401955 +-0.441584 0.687175 -0.378257 +-0.431754 0.752889 -0.354329 +-0.430126 0.754095 -0.036920 +-0.397161 0.818515 -0.039413 +-0.444159 0.776719 -0.100369 +-0.417871 0.820119 -0.102014 +-0.447432 0.782879 -0.163214 +-0.417918 0.820011 -0.292192 +-0.446244 0.781906 -0.228001 +-0.423188 0.820993 -0.228695 +-0.398566 0.817532 -0.355016 +-0.442550 0.774731 -0.292082 +-0.383121 0.791848 -0.394681 +-0.381913 0.857440 -0.063699 +-0.391932 0.859969 -0.108441 +-0.423320 0.820785 -0.164625 +-0.395807 0.860757 -0.167131 +-0.396251 0.860965 -0.229099 +-0.393374 0.860491 -0.287791 +-0.383572 0.858069 -0.332341 +-0.487744 0.562242 -0.043239 +-0.503127 0.507287 -0.105500 +-0.500513 0.565367 -0.103294 +-0.508123 0.514743 -0.166909 +-0.503230 0.567823 -0.229682 +-0.505251 0.568126 -0.166231 +-0.498406 0.565598 -0.293003 +-0.506673 0.513523 -0.228300 +-0.479319 0.561817 -0.348704 +-0.457382 0.560862 -0.394274 +-0.482356 0.626286 -0.044840 +-0.497618 0.627655 -0.102787 +-0.497719 0.628190 -0.230132 +-0.501212 0.628574 -0.165952 +-0.491188 0.627033 -0.293088 +-0.472553 0.624527 -0.346675 +-0.451727 0.624886 -0.389542 +-0.468586 0.685099 -0.052331 +-0.482480 0.687508 -0.104771 +-0.483733 0.688602 -0.229409 +-0.486916 0.689576 -0.165706 +-0.476574 0.685327 -0.290165 +-0.461869 0.681750 -0.339223 +-0.458256 0.729141 -0.062048 +-0.465737 0.737867 -0.106238 +-0.464014 0.739944 -0.227807 +-0.467279 0.741958 -0.165043 +-0.459276 0.733478 -0.286349 +-0.452613 0.724444 -0.328555 +-0.030016 0.557647 -0.673671 +-0.029502 0.610723 -0.663292 +-0.031509 0.654000 -0.649471 +-0.031737 0.750411 -0.538960 +-0.032902 0.689803 -0.620921 +-0.032944 0.713965 -0.576431 +-0.031434 0.805583 -0.527921 +-0.031656 0.851645 -0.516475 +-0.087625 0.555550 -0.669510 +-0.084947 0.602729 -0.654416 +-0.095120 0.679126 -0.611057 +-0.092257 0.641188 -0.638572 +-0.093069 0.745798 -0.533188 +-0.094037 0.707816 -0.568486 +-0.092957 0.794265 -0.513676 +-0.133130 0.551924 -0.654191 +-0.172201 0.556193 -0.631462 +-0.126439 0.592471 -0.648466 +-0.156037 0.615918 -0.628644 +-0.161106 0.708365 -0.573528 +-0.157919 0.662782 -0.595576 +-0.160828 0.750332 -0.545753 +-0.156628 0.784330 -0.506898 +-0.215883 0.552916 -0.601984 +-0.213323 0.603634 -0.597711 +-0.224733 0.695836 -0.561308 +-0.218702 0.645222 -0.574594 +-0.227044 0.741799 -0.540565 +-0.259246 0.551115 -0.586182 +-0.297466 0.558013 -0.564622 +-0.249220 0.591244 -0.576683 +-0.281168 0.621175 -0.564088 +-0.283690 0.678818 -0.546048 +-0.333573 0.558621 -0.530690 +-0.329130 0.618502 -0.531498 +-0.320635 0.663628 -0.523370 +-0.039551 1.047284 -0.175061 +-0.039626 1.047349 -0.224176 +-0.040162 1.043735 -0.266457 +-0.089418 1.043739 -0.132507 +-0.039860 1.044124 -0.131744 +-0.088980 1.047857 -0.175348 +-0.089297 1.044067 -0.265888 +-0.126530 1.039830 -0.138131 +-0.130605 1.042805 -0.223395 +-0.130234 1.042327 -0.175794 +-0.088984 1.048106 -0.223833 +-0.127081 1.040824 -0.260484 +-0.526545 0.135628 -0.065085 +-0.535203 0.122492 -0.108151 +-0.542943 0.117528 -0.167380 +-0.541950 0.118655 -0.228646 +-0.532071 0.126594 -0.284525 +-0.522966 0.141780 -0.321096 +-0.549933 0.174190 -0.043563 +-0.571220 0.154455 -0.105058 +-0.579685 0.146832 -0.167048 +-0.567760 0.158495 -0.286666 +-0.579369 0.147509 -0.229512 +-0.545508 0.177212 -0.334803 +-0.569646 0.236583 -0.024396 +-0.533360 0.241528 0.002302 +-0.546135 0.232797 -0.365832 +-0.517385 0.259386 -0.383512 +-0.572592 0.299023 -0.023221 +-0.558163 0.294978 -0.362366 +-0.562205 0.350367 -0.047541 +-0.552943 0.345794 -0.340743 +-0.558683 0.387396 -0.082457 +-0.551704 0.410796 -0.124436 +-0.550897 0.383683 -0.308110 +-0.509369 0.455896 -0.170277 +-0.509290 0.455318 -0.223190 +-0.554606 0.422079 -0.171884 +-0.547318 0.408023 -0.268139 +-0.553302 0.421327 -0.222960 +-0.588136 0.198847 -0.068192 +-0.605357 0.189822 -0.109977 +-0.612780 0.182094 -0.168110 +-0.612768 0.182679 -0.229286 +-0.601730 0.193238 -0.283550 +-0.582519 0.202164 -0.318856 +-0.601045 0.241637 -0.062488 +-0.635764 0.227325 -0.169890 +-0.628690 0.243113 -0.113096 +-0.635543 0.227517 -0.227352 +-0.627152 0.243290 -0.282379 +-0.594210 0.240838 -0.330686 +-0.635766 0.300043 -0.096926 +-0.606110 0.295627 -0.057930 +-0.630225 0.299118 -0.296168 +-0.600368 0.293669 -0.335407 +-0.604480 0.340419 -0.062290 +-0.596857 0.336526 -0.328851 +-0.622012 0.361016 -0.290907 +-0.606056 0.403149 -0.126649 +-0.643575 0.379077 -0.167912 +-0.627680 0.364201 -0.103128 +-0.612531 0.411197 -0.171524 +-0.641784 0.377686 -0.229984 +-0.601251 0.399957 -0.267800 +-0.610980 0.410201 -0.226258 +-0.645920 0.267723 -0.138712 +-0.650532 0.263686 -0.175123 +-0.648529 0.264537 -0.221723 +-0.643638 0.268680 -0.255812 +-0.656943 0.301021 -0.175289 +-0.650241 0.300385 -0.134563 +-0.654237 0.300740 -0.221604 +-0.646167 0.299936 -0.259232 +-0.647240 0.335552 -0.135807 +-0.655043 0.339578 -0.223142 +-0.655628 0.340523 -0.174574 +-0.646725 0.334361 -0.260379 +3 0 1 2 +3 0 3 4 +3 5 6 7 +3 8 9 10 +3 10 11 8 +3 2 9 0 +3 12 13 14 +3 12 15 5 +3 16 12 5 +3 17 18 19 +3 20 10 9 +3 21 22 23 +3 21 9 24 +3 25 1 4 +3 25 26 27 +3 28 29 25 +3 28 27 30 +3 31 32 28 +3 31 30 33 +3 34 35 31 +3 36 31 33 +3 37 34 36 +3 38 1 29 +3 39 29 32 +3 35 39 32 +3 40 41 35 +3 42 43 40 +3 44 40 34 +3 45 42 44 +3 46 45 47 +3 48 47 49 +3 50 22 24 +3 50 2 38 +3 51 52 50 +3 51 38 39 +3 53 54 51 +3 41 51 39 +3 55 56 53 +3 43 53 41 +3 57 55 43 +3 58 59 57 +3 60 57 42 +3 61 60 46 +3 62 46 48 +3 63 22 52 +3 54 63 52 +3 56 64 54 +3 65 66 56 +3 67 65 68 +3 59 65 55 +3 69 59 70 +3 71 70 72 +3 61 70 58 +3 73 61 62 +3 74 75 76 +3 77 76 78 +3 79 80 81 +3 82 83 84 +3 85 84 86 +3 87 86 79 +3 88 89 90 +3 91 90 82 +3 92 93 94 +3 95 94 96 +3 97 98 99 +3 100 99 101 +3 102 101 103 +3 104 103 105 +3 106 105 107 +3 81 104 106 +3 108 109 110 +3 108 97 111 +3 111 100 112 +3 113 100 102 +3 113 83 112 +3 80 102 104 +3 86 113 80 +3 114 81 106 +3 115 116 108 +3 117 108 111 +3 89 111 112 +3 89 83 90 +3 118 82 85 +3 87 118 85 +3 87 114 119 +3 120 121 115 +3 120 93 122 +3 123 115 117 +3 123 94 120 +3 123 89 96 +3 124 96 88 +3 125 88 91 +3 126 91 118 +3 127 122 128 +3 128 93 129 +3 130 129 92 +3 131 92 95 +3 132 95 124 +3 133 48 49 +3 99 134 135 +3 101 135 136 +3 103 136 137 +3 105 137 138 +3 139 105 138 +3 139 140 107 +3 141 109 142 +3 141 98 110 +3 143 109 116 +3 144 145 143 +3 144 116 121 +3 119 146 118 +3 147 75 148 +3 147 144 149 +3 149 121 122 +3 125 150 124 +3 126 151 125 +3 126 146 152 +3 153 76 147 +3 127 147 149 +3 154 155 156 +3 131 156 130 +3 157 158 154 +3 132 154 131 +3 157 124 150 +3 159 48 160 +3 161 160 162 +3 136 163 164 +3 137 164 165 +3 138 165 166 +3 139 166 167 +3 139 161 162 +3 141 168 169 +3 134 169 170 +3 134 163 135 +3 171 163 170 +3 172 164 171 +3 173 165 172 +3 174 166 173 +3 143 175 176 +3 143 168 142 +3 177 168 176 +3 178 169 177 +3 178 171 170 +3 179 171 180 +3 181 173 182 +3 183 75 184 +3 148 175 145 +3 185 175 183 +3 186 176 185 +3 187 177 186 +3 188 178 187 +3 189 180 188 +3 190 179 189 +3 191 182 190 +3 191 146 192 +3 193 184 74 +3 193 185 183 +3 194 185 195 +3 196 186 194 +3 196 155 158 +3 197 187 196 +3 150 196 158 +3 198 188 197 +3 151 197 150 +3 199 189 198 +3 199 151 152 +3 199 146 190 +3 200 74 77 +3 201 193 200 +3 202 195 201 +3 202 155 194 +3 203 167 174 +3 204 78 205 +3 206 127 128 +3 207 128 130 +3 205 153 208 +3 209 153 127 +3 210 209 206 +3 211 202 210 +3 211 206 207 +3 211 130 156 +3 204 200 77 +3 212 205 208 +3 213 200 212 +3 213 208 210 +3 210 201 213 +3 214 13 215 +3 216 217 218 +3 216 215 219 +3 219 13 220 +3 221 219 222 +3 222 220 223 +3 224 220 12 +3 225 223 226 +3 227 223 224 +3 228 227 229 +3 19 230 231 +3 231 229 19 +3 232 18 20 +3 21 233 234 +3 234 20 21 +3 235 217 236 +3 237 218 235 +3 238 215 237 +3 239 217 240 +3 241 240 242 +3 221 240 216 +3 243 221 222 +3 225 243 222 +3 244 225 226 +3 228 245 246 +3 246 226 228 +3 247 231 230 +3 248 230 232 +3 234 249 250 +3 250 232 234 +3 251 236 252 +3 253 235 251 +3 238 253 254 +3 239 252 236 +3 241 255 239 +3 256 241 242 +3 243 256 242 +3 257 256 258 +3 258 259 260 +3 261 259 243 +3 262 261 244 +3 263 258 260 +3 263 262 264 +3 264 245 263 +3 264 244 246 +3 265 266 263 +3 265 245 247 +3 267 268 269 +3 270 268 265 +3 270 250 269 +3 270 247 248 +3 271 272 267 +3 273 267 269 +3 273 250 249 +3 251 274 275 +3 253 275 276 +3 277 253 276 +3 255 274 252 +3 278 279 255 +3 257 280 278 +3 281 282 257 +3 266 257 258 +3 283 284 285 +3 286 285 281 +3 268 281 266 +3 272 287 283 +3 267 283 286 +3 288 289 290 +3 288 272 291 +3 275 292 293 +3 294 275 293 +3 295 276 294 +3 279 292 274 +3 280 296 279 +3 297 298 299 +3 282 299 280 +3 284 300 297 +3 285 297 282 +3 301 284 287 +3 302 289 303 +3 302 287 290 +3 304 289 305 +3 293 306 307 +3 308 293 307 +3 309 294 308 +3 296 306 292 +3 310 298 311 +3 310 296 299 +3 312 298 300 +3 313 300 314 +3 301 315 316 +3 316 314 301 +3 317 302 303 +3 318 303 304 +3 307 319 320 +3 321 307 320 +3 309 321 322 +3 323 319 306 +3 324 311 325 +3 310 326 323 +3 327 311 312 +3 328 312 313 +3 329 315 330 +3 316 328 313 +3 317 330 315 +3 318 331 317 +3 320 332 333 +3 334 320 333 +3 322 334 335 +3 326 332 319 +3 336 325 337 +3 324 338 326 +3 339 325 327 +3 328 339 327 +3 329 340 328 +3 341 331 342 +3 330 343 329 +3 344 342 331 +3 345 23 63 +3 346 63 64 +3 66 346 64 +3 347 348 66 +3 67 349 347 +3 350 67 68 +3 69 350 68 +3 71 351 69 +3 352 71 72 +3 353 72 73 +3 354 233 345 +3 355 345 346 +3 356 346 348 +3 349 356 348 +3 357 358 349 +3 359 357 350 +3 351 359 350 +3 360 361 351 +3 362 360 352 +3 363 352 353 +3 364 271 365 +3 365 273 366 +3 366 249 354 +3 367 366 368 +3 368 354 355 +3 369 368 370 +3 370 355 356 +3 371 356 358 +3 372 358 373 +3 374 373 359 +3 375 359 361 +3 376 361 377 +3 378 377 362 +3 379 362 363 +3 380 305 288 +3 364 288 291 +3 381 364 382 +3 382 365 367 +3 383 382 384 +3 384 367 369 +3 385 369 386 +3 371 369 370 +3 387 371 372 +3 388 372 374 +3 389 374 375 +3 390 375 376 +3 391 376 378 +3 392 305 393 +3 394 393 395 +3 381 393 380 +3 383 395 381 +3 396 383 384 +3 385 396 384 +3 397 385 386 +3 387 397 386 +3 388 398 387 +3 399 388 389 +3 400 389 390 +3 401 390 391 +3 392 318 304 +3 394 402 392 +3 403 394 395 +3 404 403 395 +3 405 404 396 +3 406 405 396 +3 407 406 397 +3 408 397 398 +3 409 408 398 +3 399 410 409 +3 411 399 400 +3 412 400 401 +3 413 318 402 +3 414 413 402 +3 415 414 403 +3 416 415 403 +3 405 417 416 +3 418 405 419 +3 407 418 419 +3 408 420 407 +3 410 421 408 +3 422 423 410 +3 411 424 422 +3 425 411 412 +3 426 344 413 +3 427 413 428 +3 429 428 415 +3 417 429 415 +3 430 431 417 +3 418 432 430 +3 420 433 418 +3 421 434 420 +3 423 435 421 +3 424 436 423 +3 437 424 438 +3 439 438 425 +3 440 439 425 +3 441 442 443 +3 444 445 446 +3 444 441 447 +3 448 449 444 +3 450 444 447 +3 451 445 452 +3 451 442 446 +3 449 452 445 +3 453 454 449 +3 455 456 453 +3 457 453 448 +3 458 452 459 +3 451 460 461 +3 454 459 452 +3 462 463 464 +3 462 454 456 +3 465 466 462 +3 467 462 456 +3 468 459 469 +3 458 470 460 +3 471 463 472 +3 464 469 459 +3 466 472 463 +3 473 474 475 +3 476 477 478 +3 476 466 479 +3 480 481 482 +3 480 483 473 +3 484 469 485 +3 471 486 487 +3 471 485 469 +3 488 485 487 +3 489 477 490 +3 478 486 472 +3 491 488 487 +3 481 475 488 +3 492 477 493 +3 494 495 496 +3 482 491 494 +3 486 497 498 +3 499 486 498 +3 490 497 489 +3 500 497 501 +3 495 498 500 +3 491 499 495 +3 502 490 492 +3 503 501 502 +3 496 500 503 +3 504 465 505 +3 506 465 467 +3 507 467 455 +3 508 476 509 +3 504 476 479 +3 510 504 505 +3 511 482 510 +3 511 505 506 +3 508 492 493 +3 512 508 509 +3 513 496 512 +3 513 482 494 +3 514 492 515 +3 516 502 514 +3 516 515 512 +3 516 496 503 +3 517 518 519 +3 520 521 522 +3 523 522 524 +3 518 520 523 +3 525 524 526 +3 527 528 529 +3 527 530 531 +3 527 520 532 +3 532 533 527 +3 518 525 534 +3 534 519 518 +3 534 535 536 +3 537 534 536 +3 536 538 539 +3 540 536 539 +3 541 542 543 +3 541 544 545 +3 545 546 547 +3 548 541 545 +3 549 521 550 +3 549 551 552 +3 552 522 549 +3 552 553 554 +3 554 524 552 +3 555 528 556 +3 555 521 529 +3 526 557 558 +3 558 525 526 +3 559 557 560 +3 559 535 558 +3 3 26 4 +3 3 528 531 +3 538 561 562 +3 563 538 562 +3 564 542 565 +3 544 564 566 +3 546 566 567 +3 568 6 565 +3 568 542 569 +3 570 546 567 +3 570 571 572 +3 573 571 574 +3 575 574 576 +3 577 576 578 +3 579 569 580 +3 581 569 541 +3 548 580 581 +3 548 547 582 +3 583 547 570 +3 584 575 585 +3 585 577 586 +3 587 580 582 +3 588 589 590 +3 553 588 591 +3 592 593 594 +3 592 555 595 +3 592 590 589 +3 589 550 592 +3 596 591 597 +3 557 553 596 +3 598 557 596 +3 556 8 11 +3 11 555 556 +3 560 599 600 +3 561 560 600 +3 601 6 15 +3 564 601 602 +3 566 602 603 +3 604 566 603 +3 571 604 605 +3 574 605 606 +3 607 574 606 +3 578 607 608 +3 572 609 570 +3 573 610 572 +3 611 5 7 +3 579 7 568 +3 583 609 612 +3 613 609 610 +3 614 610 584 +3 615 584 585 +3 586 615 585 +3 616 611 579 +3 617 579 580 +3 587 616 617 +3 587 583 618 +3 618 612 619 +3 620 615 621 +3 622 623 616 +3 594 624 622 +3 622 618 625 +3 625 594 622 +3 625 619 626 +3 626 590 625 +3 626 627 628 +3 628 588 626 +3 629 591 628 +3 630 11 17 +3 630 593 595 +3 631 629 632 +3 598 597 631 +3 599 631 633 +3 634 599 633 +3 635 15 14 +3 636 601 635 +3 637 602 636 +3 604 637 638 +3 605 638 639 +3 606 639 640 +3 641 606 640 +3 642 607 641 +3 613 643 612 +3 644 613 614 +3 645 614 615 +3 646 224 16 +3 623 16 611 +3 619 643 627 +3 647 643 648 +3 649 648 644 +3 650 644 645 +3 651 645 620 +3 620 652 651 +3 653 227 646 +3 653 623 624 +3 654 627 647 +3 654 649 655 +3 629 654 655 +3 656 649 650 +3 656 629 655 +3 657 229 653 +3 657 17 19 +3 657 624 630 +3 632 658 659 +3 633 632 659 +3 660 633 659 +3 661 578 662 +3 561 663 664 +3 665 561 664 +3 662 608 666 +3 661 586 577 +3 661 666 667 +3 668 586 667 +3 663 634 669 +3 670 663 669 +3 666 642 671 +3 672 666 671 +3 668 652 621 +3 668 672 673 +3 674 634 660 +3 675 669 674 +3 676 677 678 +3 679 678 680 +3 679 681 682 +3 683 676 684 +3 685 676 679 +3 686 687 688 +3 689 688 690 +3 691 692 693 +3 693 686 694 +3 694 689 695 +3 695 696 697 +3 697 698 699 +3 700 693 701 +3 701 694 702 +3 702 695 703 +3 704 695 697 +3 705 697 699 +3 706 530 533 +3 707 533 517 +3 708 517 519 +3 708 709 710 +3 710 537 711 +3 711 540 712 +3 713 706 714 +3 714 707 715 +3 716 707 708 +3 716 677 715 +3 716 710 717 +3 717 678 716 +3 717 711 718 +3 681 717 718 +3 719 711 712 +3 720 714 721 +3 722 714 715 +3 722 677 723 +3 724 681 718 +3 724 719 725 +3 726 721 727 +3 727 722 728 +3 683 722 723 +3 729 683 684 +3 685 729 684 +3 685 682 730 +3 731 682 724 +3 731 725 732 +3 733 727 734 +3 735 727 728 +3 735 729 736 +3 737 729 730 +3 737 687 736 +3 737 731 738 +3 738 688 737 +3 738 732 739 +3 740 735 741 +3 742 735 736 +3 742 687 692 +3 690 739 743 +3 743 689 690 +3 743 744 745 +3 745 696 743 +3 746 740 741 +3 691 741 742 +3 747 748 749 +3 749 746 750 +3 750 691 700 +3 751 26 531 +3 751 530 752 +3 753 540 539 +3 753 563 754 +3 755 27 751 +3 755 752 713 +3 756 712 753 +3 756 754 757 +3 33 755 758 +3 758 713 720 +3 725 756 759 +3 759 757 760 +3 36 758 761 +3 761 720 726 +3 732 759 762 +3 762 760 763 +3 37 761 764 +3 764 726 733 +3 765 732 762 +3 765 763 766 +3 766 739 765 +3 767 733 768 +3 768 734 740 +3 769 768 770 +3 770 740 748 +3 771 770 747 +3 772 563 562 +3 773 754 772 +3 760 773 774 +3 763 774 775 +3 776 44 37 +3 776 764 767 +3 47 776 777 +3 777 767 769 +3 778 47 777 +3 771 777 769 +3 779 73 62 +3 699 780 781 +3 782 699 781 +3 745 783 784 +3 780 745 784 +3 784 785 786 +3 787 780 784 +3 787 786 788 +3 789 781 787 +3 790 787 788 +3 766 775 791 +3 791 744 766 +3 792 783 791 +3 793 785 792 +3 788 793 794 +3 795 788 794 +3 795 796 797 +3 772 665 798 +3 773 798 799 +3 800 773 799 +3 801 774 800 +3 802 775 801 +3 803 791 802 +3 804 792 803 +3 805 793 804 +3 796 805 806 +3 807 796 806 +3 808 665 664 +3 809 798 808 +3 810 799 809 +3 811 800 810 +3 812 801 811 +3 813 802 812 +3 804 813 814 +3 815 804 814 +3 816 805 815 +3 817 806 816 +3 808 670 818 +3 809 818 819 +3 820 809 819 +3 821 810 820 +3 822 811 821 +3 823 812 822 +3 824 823 822 +3 814 823 825 +3 826 814 825 +3 827 825 824 +3 828 826 825 +3 816 826 829 +3 830 827 831 +3 830 829 828 +3 832 816 829 +3 833 670 675 +3 834 818 833 +3 835 819 834 +3 836 820 835 +3 837 821 836 +3 838 839 840 +3 838 822 837 +3 841 838 840 +3 842 824 838 +3 843 842 841 +3 831 842 844 +3 845 701 846 +3 846 702 847 +3 847 703 848 +3 849 703 704 +3 850 704 705 +3 851 847 852 +3 853 847 848 +3 854 852 855 +3 856 852 853 +3 856 857 858 +3 859 855 860 +3 861 855 856 +3 862 749 863 +3 863 750 864 +3 864 700 845 +3 849 865 848 +3 850 866 849 +3 850 782 867 +3 868 864 869 +3 869 845 870 +3 870 846 851 +3 853 865 857 +3 871 865 866 +3 872 866 867 +3 873 869 874 +3 874 870 875 +3 875 851 854 +3 876 857 871 +3 877 871 872 +3 878 875 879 +3 859 875 854 +3 880 859 860 +3 861 880 860 +3 861 858 881 +3 882 858 876 +3 883 876 877 +3 862 771 747 +3 884 885 862 +3 884 863 868 +3 886 887 884 +3 886 868 873 +3 888 886 889 +3 889 873 890 +3 878 873 874 +3 891 878 879 +3 892 879 880 +3 893 880 881 +3 882 893 881 +3 883 894 882 +3 883 895 896 +3 897 890 891 +3 898 891 892 +3 899 892 893 +3 900 893 894 +3 901 49 778 +3 885 778 771 +3 887 901 885 +3 902 140 903 +3 904 903 887 +3 905 107 902 +3 888 902 904 +3 906 888 889 +3 907 889 890 +3 896 908 894 +3 896 909 910 +3 911 106 905 +3 912 905 906 +3 913 906 907 +3 914 907 897 +3 915 897 898 +3 899 915 898 +3 900 916 899 +3 900 908 917 +3 918 114 911 +3 140 160 133 +3 903 133 901 +3 910 919 908 +3 912 920 911 +3 921 912 913 +3 922 913 914 +3 923 914 915 +3 916 923 915 +3 917 924 916 +3 917 919 925 +3 918 192 119 +3 918 920 926 +3 159 779 62 +3 927 159 161 +3 928 161 167 +3 929 930 919 +3 931 174 181 +3 932 933 931 +3 934 931 920 +3 921 932 934 +3 935 921 922 +3 936 922 923 +3 937 923 924 +3 938 924 925 +3 938 919 930 +3 939 181 191 +3 939 192 926 +3 939 920 931 +3 940 779 941 +3 942 941 927 +3 943 944 945 +3 946 947 944 +3 928 942 927 +3 948 943 949 +3 950 946 948 +3 203 951 928 +3 933 203 174 +3 952 953 933 +3 954 949 955 +3 954 930 956 +3 954 950 948 +3 932 957 952 +3 958 959 932 +3 960 958 935 +3 961 935 936 +3 961 962 963 +3 964 936 937 +3 965 962 964 +3 965 937 938 +3 965 930 955 +3 966 959 967 +3 968 782 789 +3 969 789 790 +3 970 867 968 +3 971 968 969 +3 972 872 970 +3 969 795 973 +3 974 795 797 +3 975 969 973 +3 972 895 877 +3 972 971 976 +3 977 971 975 +3 974 978 973 +3 974 807 979 +3 975 978 980 +3 981 895 976 +3 977 981 976 +3 977 980 982 +3 983 832 984 +3 983 978 979 +3 983 807 817 +3 985 978 984 +3 982 986 981 +3 982 985 987 +3 988 910 909 +3 988 981 986 +3 989 831 990 +3 989 832 830 +3 991 990 947 +3 992 990 993 +3 992 987 985 +3 992 984 989 +3 994 991 950 +3 994 987 993 +3 995 950 956 +3 995 929 988 +3 995 986 994 +3 944 844 843 +3 990 844 947 +3 635 214 996 +3 997 635 996 +3 998 636 997 +3 638 998 999 +3 639 999 1000 +3 640 1000 1001 +3 1002 640 1001 +3 1003 641 1002 +3 651 1004 650 +3 651 1005 1006 +3 656 1004 658 +3 1007 1004 1006 +3 1008 658 1007 +3 1009 659 1008 +3 1010 214 238 +3 1011 996 1010 +3 1012 997 1011 +3 999 1012 1013 +3 1000 1013 1014 +3 1015 1000 1014 +3 1016 1001 1015 +3 1017 1002 1016 +3 1006 1018 1019 +3 1007 1019 1020 +3 1021 1007 1020 +3 1022 238 254 +3 1023 1010 1022 +3 1012 1023 1024 +3 1025 1012 1024 +3 1014 1025 1026 +3 1015 1026 1027 +3 1016 1027 1028 +3 1017 1028 1029 +3 1030 1018 1031 +3 1032 1019 1030 +3 1033 254 277 +3 1034 1022 1033 +3 1035 1023 1034 +3 1025 1035 1036 +3 1037 1025 1036 +3 1027 1037 1038 +3 1028 1038 1039 +3 1040 1028 1039 +3 1041 1030 1042 +3 1043 1032 1041 +3 1044 277 295 +3 1045 1033 1044 +3 1046 1034 1045 +3 1047 1035 1046 +3 1037 1047 1048 +3 1038 1048 1049 +3 1039 1049 1050 +3 1040 1050 1051 +3 1041 1052 1053 +3 1054 1041 1053 +3 1055 295 309 +3 1056 1044 1055 +3 1057 1045 1056 +3 1058 1046 1057 +3 1059 1047 1058 +3 1049 1059 1060 +3 1050 1060 1061 +3 1051 1061 1062 +3 1055 322 1063 +3 1056 1063 1064 +3 1065 1056 1064 +3 1066 1057 1065 +3 1067 1058 1066 +3 1068 1059 1067 +3 1061 1068 1069 +3 1070 1061 1069 +3 1063 335 1071 +3 1064 1071 1072 +3 1065 1072 1073 +3 1074 1065 1073 +3 1075 1066 1074 +3 1076 1067 1075 +3 1077 1068 1076 +3 1070 1077 1078 +3 1079 642 1003 +3 172 182 173 +3 513 509 510 +3 1080 671 1079 +3 1081 652 673 +3 673 1080 1081 +3 1082 660 1009 +3 1083 674 1082 +3 1084 1003 1017 +3 1080 1084 1085 +3 1086 1005 1081 +3 1081 1085 1086 +3 1087 1008 1021 +3 1088 1009 1087 +3 1089 1082 1088 +3 1084 1029 1090 +3 1091 1084 1090 +3 1091 1092 1093 +3 1086 1031 1018 +3 1086 1091 1094 +3 1095 1091 1093 +3 1096 1020 1032 +3 1097 1021 1096 +3 1098 1087 1097 +3 1099 1088 1098 +3 1090 1040 1100 +3 1092 1100 1101 +3 1102 1092 1101 +3 1095 1103 1094 +3 1095 1102 1104 +3 1105 1030 1031 +3 1105 1094 1103 +3 1097 1043 1106 +3 1098 1106 1107 +3 1108 1098 1107 +3 1109 1040 1051 +3 1101 1109 1110 +3 1102 1110 1111 +3 1112 1103 1104 +3 1112 1102 1111 +3 1105 1052 1042 +3 1105 1113 1114 +3 1115 1052 1114 +3 1054 1115 1116 +3 1106 1054 1116 +3 1116 1117 1118 +3 1119 1106 1116 +3 1119 1118 1120 +3 1108 1119 1121 +3 1121 1120 1122 +3 1122 1123 1124 +3 1109 1062 1125 +3 1126 1109 1125 +3 1111 1126 1127 +3 1112 1127 1128 +3 1113 1129 1114 +3 1113 1128 1130 +3 1115 1129 1117 +3 1131 1129 1130 +3 1132 1117 1131 +3 1133 1118 1132 +3 1123 1133 1134 +3 1135 1123 1134 +3 1125 1070 1136 +3 1137 1125 1136 +3 1127 1137 1138 +3 1128 1138 1139 +3 1130 1139 1140 +3 1131 1140 1141 +3 1142 1131 1141 +3 1143 1132 1142 +3 1144 1133 1143 +3 1145 1134 1144 +3 1136 1078 1146 +3 1137 1146 1147 +3 1138 1147 1148 +3 1139 1148 1149 +3 1140 1149 1150 +3 1141 1150 1151 +3 1152 1141 1151 +3 1153 1142 1152 +3 1154 1143 1153 +3 1155 1144 1154 +3 1156 839 1157 +3 1158 1159 1160 +3 1158 840 1156 +3 1161 73 1162 +3 1163 1158 1160 +3 1164 841 1158 +3 1165 1159 1156 +3 1165 1157 1166 +3 1167 1159 1168 +3 1169 353 1161 +3 1170 1171 1172 +3 1170 1160 1167 +3 1165 1173 1168 +3 1174 1166 1175 +3 1176 1171 1167 +3 1176 1168 1173 +3 1177 363 1169 +3 1178 1177 1169 +3 1179 1178 1180 +3 1181 1182 1183 +3 1184 1183 1172 +3 1184 1171 1185 +3 1175 1186 1187 +3 1174 1188 1173 +3 1174 1187 1189 +3 1190 378 379 +3 1191 1185 1176 +3 1191 1173 1188 +3 1192 379 1177 +3 1193 1192 1177 +3 1179 1194 1193 +3 1195 1196 1179 +3 1181 1197 1195 +3 1184 1198 1181 +3 1199 1185 1200 +3 1187 1201 1202 +3 1203 1188 1189 +3 1189 1202 1203 +3 1204 391 1190 +3 1200 1205 1199 +3 1191 1206 1200 +3 1207 1188 1208 +3 1209 1190 1192 +3 1210 1192 1194 +3 1196 1210 1194 +3 1197 1211 1196 +3 1198 1212 1197 +3 1213 1199 1205 +3 1214 1208 1203 +3 1203 1215 1214 +3 1216 401 1204 +3 1207 1217 1206 +3 1218 1208 1219 +3 1220 1204 1209 +3 1210 1220 1209 +3 1211 1221 1210 +3 1212 1222 1211 +3 1213 1223 1212 +3 1205 1224 1213 +3 1225 1206 1217 +3 1214 1226 1227 +3 440 412 1216 +3 1218 1228 1217 +3 1219 1229 1218 +3 1219 1227 1230 +3 1220 440 1216 +3 1221 1231 1220 +3 1232 1221 1222 +3 1223 1232 1222 +3 1224 1233 1223 +3 1225 1234 1224 +3 1235 1217 1228 +3 1230 1236 1229 +3 1237 1227 1238 +3 1231 1239 440 +3 1240 1241 1231 +3 1242 1240 1232 +3 1243 1232 1233 +3 1234 1243 1233 +3 1244 1234 1235 +3 1245 1235 1228 +3 1245 1229 1236 +3 1246 675 1083 +3 1247 833 1246 +3 1248 834 1247 +3 1249 835 1248 +3 1250 839 837 +3 1250 836 1249 +3 1251 1083 1089 +3 1247 1251 1252 +3 1253 1247 1252 +3 1254 1248 1253 +3 1250 1166 1157 +3 1255 1249 1254 +3 1256 1089 1099 +3 1257 1251 1256 +3 1258 1252 1257 +3 1259 1253 1258 +3 1255 1175 1166 +3 1260 1254 1259 +3 1261 1099 1108 +3 1261 1121 1262 +3 1263 1256 1261 +3 1263 1262 1264 +3 1265 1257 1263 +3 1259 1186 1260 +3 1266 1258 1265 +3 1267 1121 1122 +3 1267 1124 1268 +3 1269 1262 1267 +3 1269 1268 1270 +3 1265 1264 1271 +3 1272 1264 1269 +3 1266 1201 1186 +3 1273 1265 1271 +3 1274 1124 1135 +3 1270 1274 1275 +3 1272 1276 1271 +3 1272 1270 1277 +3 1278 1270 1275 +3 1273 1276 1279 +3 1280 1202 1201 +3 1201 1279 1280 +3 1281 1135 1145 +3 1275 1281 1282 +3 1283 1276 1277 +3 1278 1283 1277 +3 1278 1282 1284 +3 1279 1285 1286 +3 1287 1215 1280 +3 1280 1286 1287 +3 1288 1145 1155 +3 1282 1288 1289 +3 1284 1290 1283 +3 1284 1289 1291 +3 1292 1286 1285 +3 1292 1283 1290 +3 1287 1293 1294 +3 1295 1227 1226 +3 1226 1294 1295 +3 1296 1162 940 +3 1297 1164 1163 +3 945 843 1164 +3 1298 940 942 +3 1298 1299 1296 +3 1300 1301 1299 +3 1302 1303 1304 +3 1302 945 1297 +3 951 1298 942 +3 1305 1298 1306 +3 1307 1308 1309 +3 1310 1311 1307 +3 1310 1302 1304 +3 1312 943 1302 +3 953 1306 951 +3 1313 1309 1314 +3 1315 1307 1313 +3 1315 963 962 +3 1316 1310 1315 +3 1316 962 955 +3 1316 949 1312 +3 957 1317 953 +3 959 1318 957 +3 1319 967 960 +3 963 1314 1319 +3 963 960 961 +3 1320 1321 1322 +3 966 1322 1321 +3 966 1323 1324 +3 1325 1322 1326 +3 1327 1161 1296 +3 1327 1178 1169 +3 1299 1327 1296 +3 1328 1180 1178 +3 1301 1328 1299 +3 1329 1182 1330 +3 1331 1183 1329 +3 1331 1170 1172 +3 1303 1163 1170 +3 1332 1301 1333 +3 1334 1335 1332 +3 1336 1330 1334 +3 1336 1308 1311 +3 1337 1329 1336 +3 1337 1311 1304 +3 1337 1303 1331 +3 1305 1338 1339 +3 1305 1333 1300 +3 1340 1333 1339 +3 1341 1332 1340 +3 1341 1308 1334 +3 1317 1338 1306 +3 1342 1340 1343 +3 1314 1341 1342 +3 1344 443 1345 +3 1344 1317 1318 +3 1346 1343 1347 +3 1346 1323 1319 +3 1319 1342 1346 +3 1348 441 1344 +3 1320 1344 1318 +3 1324 1326 1322 +3 1324 1347 1349 +3 450 1348 1350 +3 1325 1348 1320 +3 1351 1325 1326 +3 1352 1326 1349 +3 1180 1195 1179 +3 1330 1180 1335 +3 1353 1338 1354 +3 1340 1353 1355 +3 1356 443 442 +3 1345 1354 1338 +3 1343 1355 1357 +3 1358 1343 1357 +3 1359 1360 1361 +3 1349 1358 1359 +3 1362 450 1350 +3 1351 1362 1350 +3 1363 1361 1364 +3 1363 1351 1352 +3 1352 1359 1363 +3 457 1362 1365 +3 1366 1362 1364 +3 1367 1354 1368 +3 1369 442 461 +3 1356 1368 1354 +3 1370 1368 1369 +3 1355 1367 1370 +3 1371 1355 1370 +3 1372 1371 1370 +3 1358 1371 1360 +3 1361 1372 1373 +3 1374 1375 1376 +3 1374 1361 1373 +3 1377 457 1365 +3 1378 1365 1366 +3 1366 1374 1378 +3 1379 461 460 +3 1380 1369 1379 +3 1372 1380 1381 +3 1382 1375 1373 +3 1382 1372 1381 +3 1383 474 483 +3 1383 1375 1384 +3 1385 1383 483 +3 1386 1383 1387 +3 1386 1377 1378 +3 1386 1374 1376 +3 1388 460 470 +3 1389 1379 1388 +3 1390 470 468 +3 1391 1388 1390 +3 1391 1382 1381 +3 1381 1389 1391 +3 1392 474 1384 +3 1392 1382 1390 +3 1393 468 484 +3 1394 484 488 +3 1394 475 1392 +3 1392 1393 1394 +3 1395 1242 1396 +3 1396 1243 1397 +3 1398 1243 1399 +3 1400 455 1377 +3 1401 507 1400 +3 1400 1387 1401 +3 1402 480 511 +3 1402 506 1401 +3 1402 1387 1385 +3 333 1403 1404 +3 1405 333 1404 +3 335 1405 1406 +3 338 1403 332 +3 1407 337 1408 +3 336 1409 338 +3 339 1408 337 +3 340 1410 339 +3 343 1411 340 +3 341 1412 343 +3 342 1413 1414 +3 342 1415 341 +3 1416 1403 1417 +3 1418 1404 1416 +3 1419 1405 1418 +3 1409 1417 1403 +3 1407 1420 1409 +3 1421 1410 1422 +3 1408 1423 1407 +3 1411 1422 1410 +3 1412 1424 1411 +3 1425 1412 1415 +3 1426 1415 1414 +3 1418 1427 1428 +3 1419 1428 1429 +3 1430 1420 1431 +3 1417 1427 1416 +3 1423 1431 1420 +3 1421 1432 1433 +3 1421 1434 1423 +3 1424 1432 1422 +3 1435 1432 1436 +3 1437 1436 1424 +3 1438 1435 1436 +3 1439 1437 1425 +3 1440 1425 1426 +3 1441 1439 1440 +3 1428 1442 1443 +3 1429 1443 1444 +3 1430 1442 1427 +3 1445 1442 1446 +3 1447 1443 1445 +3 1448 1434 1449 +3 1431 1446 1430 +3 1448 1445 1446 +3 1450 1434 1433 +3 1435 1450 1433 +3 1451 1452 1435 +3 1453 1438 1439 +3 1453 1454 1451 +3 1441 1455 1453 +3 1447 1456 1444 +3 1457 1445 1458 +3 1459 1447 1457 +3 1449 1460 1461 +3 1449 1458 1448 +3 1462 1458 1461 +3 1452 1460 1450 +3 1463 1460 1464 +3 1454 1464 1452 +3 1465 1464 1466 +3 1455 1466 1454 +3 1467 1465 1466 +3 1468 1467 1455 +3 1469 1470 1467 +3 1459 1471 1472 +3 1462 1459 1457 +3 1473 1474 1459 +3 1463 1462 1461 +3 1475 1473 1462 +3 1465 1475 1463 +3 1476 1477 1475 +3 1470 1476 1465 +3 1478 1479 1476 +3 1480 1478 1470 +3 1481 1482 1478 +3 1483 1471 1474 +3 1484 1474 1485 +3 1486 1473 1477 +3 1487 1485 1486 +3 1488 1477 1479 +3 1489 1486 1488 +3 1490 1479 1482 +3 1491 1488 1490 +3 1492 1482 1493 +3 1494 1490 1492 +3 1483 1495 1496 +3 1497 1483 1484 +3 1498 1484 1487 +3 1499 1487 1489 +3 1500 1489 1491 +3 1501 1491 1494 +3 1502 1503 426 +3 1504 1413 1502 +3 427 1502 426 +3 1505 427 429 +3 431 1505 429 +3 432 1506 431 +3 433 1507 432 +3 434 1508 433 +3 1509 434 435 +3 436 1509 435 +3 1510 1511 436 +3 1512 1510 437 +3 1513 437 439 +3 1514 439 1239 +3 1515 1414 1504 +3 1505 1515 1504 +3 1506 1516 1505 +3 1507 1517 1506 +3 1508 1518 1507 +3 1519 1520 1508 +3 1521 1519 1509 +3 1522 1509 1511 +3 1523 1511 1524 +3 1512 1523 1524 +3 1513 1525 1512 +3 1514 1526 1513 +3 1527 1426 1515 +3 1528 1440 1527 +3 1529 1515 1516 +3 1529 1528 1527 +3 1517 1529 1516 +3 1530 1517 1518 +3 1531 1518 1520 +3 1532 1531 1520 +3 1533 1532 1521 +3 1534 1521 1522 +3 1535 1522 1523 +3 1536 1523 1525 +3 1526 1536 1525 +3 1537 1538 1526 +3 1539 1441 1528 +3 1540 1528 1541 +3 1530 1540 1541 +3 1542 1530 1531 +3 1543 1531 1544 +3 1545 1544 1533 +3 1546 1533 1534 +3 1547 1534 1535 +3 1548 1535 1536 +3 1538 1548 1536 +3 1549 1468 1539 +3 1549 1480 1469 +3 1550 1539 1540 +3 1550 1551 1549 +3 1552 1550 1540 +3 1553 1552 1542 +3 1554 1542 1543 +3 1555 1543 1545 +3 1556 1545 1546 +3 1557 1546 1547 +3 1558 1547 1548 +3 1559 1558 1548 +3 1560 1480 1551 +3 1561 1551 1562 +3 1563 1562 1553 +3 1564 1553 1554 +3 1565 1554 1555 +3 1566 1555 1556 +3 1567 1556 1557 +3 1558 1567 1557 +3 1568 1481 1560 +3 1568 1492 1493 +3 1569 1492 1570 +3 1571 1560 1561 +3 1571 1570 1568 +3 1563 1571 1561 +3 1572 1570 1573 +3 1574 1563 1564 +3 1574 1572 1573 +3 1575 1564 1565 +3 1575 1576 1574 +3 1566 1575 1565 +3 1577 1566 1567 +3 1578 1494 1569 +3 1572 1578 1569 +3 1576 1579 1572 +3 1497 1580 1581 +3 1582 1497 1498 +3 1071 1406 1583 +3 1072 1583 1584 +3 1073 1584 1585 +3 1586 1073 1585 +3 1587 1074 1586 +3 1588 1075 1587 +3 1589 1076 1588 +3 1078 1589 1590 +3 1583 1419 1591 +3 1584 1591 1592 +3 1585 1592 1593 +3 1594 1585 1593 +3 1595 1586 1594 +3 1596 1587 1595 +3 1597 1588 1596 +3 1590 1597 1598 +3 1591 1429 1599 +3 1592 1599 1600 +3 1593 1600 1601 +3 1594 1601 1602 +3 1603 1594 1602 +3 1604 1595 1603 +3 1597 1604 1605 +3 1598 1605 1606 +3 1607 1429 1444 +3 1600 1607 1608 +3 1609 1600 1608 +3 1610 1601 1609 +3 1611 1602 1610 +3 1604 1611 1612 +3 1613 1604 1612 +3 1606 1613 1614 +3 1607 1456 1615 +3 1608 1615 1616 +3 1609 1616 1617 +3 1618 1609 1617 +3 1619 1610 1618 +3 1612 1619 1620 +3 1621 1612 1620 +3 1622 1613 1621 +3 1623 1621 1620 +3 1624 1622 1621 +3 1625 1622 1626 +3 1627 1624 1628 +3 1629 1626 1627 +3 1616 1630 1631 +3 1617 1631 1632 +3 1633 1617 1632 +3 1634 1618 1633 +3 1635 1619 1634 +3 1456 1471 1636 +3 1636 1615 1456 +3 1623 1635 1637 +3 1638 1623 1637 +3 1628 1623 1639 +3 1640 1628 1639 +3 1641 1628 1642 +3 1643 1641 1642 +3 1631 1644 1645 +3 1632 1645 1646 +3 1647 1632 1646 +3 1648 1633 1647 +3 1649 1634 1648 +3 1636 1496 1650 +3 1650 1630 1636 +3 1637 1649 1651 +3 1638 1651 1652 +3 1653 1638 1652 +3 1640 1653 1654 +3 1655 1640 1654 +3 1656 1642 1640 +3 1657 1656 1655 +3 1658 1643 1656 +3 1659 1658 1657 +3 1660 1661 1658 +3 1662 1660 1659 +3 1663 1664 1660 +3 1646 1665 1666 +3 1667 1646 1666 +3 1668 1647 1667 +3 1669 1496 1495 +3 1644 1669 1670 +3 1644 1665 1645 +3 1671 1665 1670 +3 1672 1666 1671 +3 1672 1668 1667 +3 1649 1668 1673 +3 1674 1649 1673 +3 1652 1674 1675 +3 1653 1675 1676 +3 1677 1653 1676 +3 1678 1654 1677 +3 1679 1498 1499 +3 1680 1678 1681 +3 1682 1655 1678 +3 1683 1499 1500 +3 1684 1682 1680 +3 1685 1657 1682 +3 1686 1500 1501 +3 1686 1687 1683 +3 1688 1689 1690 +3 1688 1685 1684 +3 1691 1659 1685 +3 1692 1078 1590 +3 1147 1692 1693 +3 1148 1693 1694 +3 1149 1694 1695 +3 1150 1695 1696 +3 1697 1150 1696 +3 1698 1151 1697 +3 1699 1152 1698 +3 1700 1153 1699 +3 1701 1154 1700 +3 1702 1590 1598 +3 1693 1702 1703 +3 1694 1703 1704 +3 1695 1704 1705 +3 1696 1705 1706 +3 1697 1706 1707 +3 1698 1707 1708 +3 1699 1708 1709 +3 1710 1699 1709 +3 1701 1710 1711 +3 1712 1598 1606 +3 1713 1702 1712 +3 1704 1713 1714 +3 1705 1714 1715 +3 1706 1715 1716 +3 1707 1716 1717 +3 1718 1707 1717 +3 1719 1718 1717 +3 1709 1718 1720 +3 1721 1720 1719 +3 1710 1720 1722 +3 1723 1721 1724 +3 1723 1710 1722 +3 1725 1606 1614 +3 1625 1725 1614 +3 1713 1725 1726 +3 1727 1625 1629 +3 1714 1726 1727 +3 1715 1727 1728 +3 1729 1715 1728 +3 1730 1729 1728 +3 1717 1729 1731 +3 1732 1730 1733 +3 1719 1731 1732 +3 1721 1732 1734 +3 1724 1734 1735 +3 1736 1627 1641 +3 1736 1727 1629 +3 1737 1641 1738 +3 1730 1736 1737 +3 1733 1737 1739 +3 1740 1733 1739 +3 1734 1733 1741 +3 1742 1740 1743 +3 1735 1741 1742 +3 1661 1738 1643 +3 1744 1737 1738 +3 1745 1661 1664 +3 1745 1739 1744 +3 1746 1664 1747 +3 1746 1740 1745 +3 1237 1748 1236 +3 1237 1749 1750 +3 1751 1239 1241 +3 1752 1241 1753 +3 1244 1754 1399 +3 1245 1755 1244 +3 1756 1236 1748 +3 1757 1748 1750 +3 1750 1758 1757 +3 1751 1537 1514 +3 1759 1751 1752 +3 1755 1760 1754 +3 1756 1761 1755 +3 1756 1762 1763 +3 1764 1765 1766 +3 1767 1762 1757 +3 1757 1764 1767 +3 1768 1769 1537 +3 1759 1770 1768 +3 1771 1760 1761 +3 1772 1761 1763 +3 1763 1773 1772 +3 1764 1774 1767 +3 1775 1766 1776 +3 1769 1559 1538 +3 1777 1772 1773 +3 1773 1774 1777 +3 1770 1778 1769 +3 1779 1770 1780 +3 1781 1779 1780 +3 1782 1783 1781 +3 1784 1782 1785 +3 1771 1784 1785 +3 1771 1786 1787 +3 1788 1789 1790 +3 1775 1791 1774 +3 1792 1776 1788 +3 1778 1793 1559 +3 1794 1795 1778 +3 1796 1787 1786 +3 1777 1796 1786 +3 1777 1791 1797 +3 1798 1794 1779 +3 1798 1799 1800 +3 1783 1798 1779 +3 1801 1802 1799 +3 1803 1801 1783 +3 1804 1802 1805 +3 1804 1803 1784 +3 1804 1787 1806 +3 1807 1808 1809 +3 1807 1810 1811 +3 1812 1809 1813 +3 1812 1792 1788 +3 1812 1790 1807 +3 1793 1814 1558 +3 1815 1797 1791 +3 1815 1792 1813 +3 1816 1793 1795 +3 1816 1817 1818 +3 1800 1816 1795 +3 1819 1820 1817 +3 1799 1819 1800 +3 1821 1822 1820 +3 1823 1799 1802 +3 1823 1824 1822 +3 1825 1802 1806 +3 1826 1824 1825 +3 1826 1806 1796 +3 1826 1797 1827 +3 1828 1663 1662 +3 1829 1747 1663 +3 1830 1829 1828 +3 1831 1832 1829 +3 1833 1831 1830 +3 1808 1834 1831 +3 1835 1836 1576 +3 1837 1838 1839 +3 1837 1808 1833 +3 1577 1840 1835 +3 1814 1577 1567 +3 1841 1842 1840 +3 1843 1844 1842 +3 1845 1846 1847 +3 1848 1849 1845 +3 1850 1839 1848 +3 1850 1815 1813 +3 1850 1809 1837 +3 1851 1814 1818 +3 1851 1843 1841 +3 1817 1851 1818 +3 1852 1853 1843 +3 1820 1852 1817 +3 1854 1847 1853 +3 1855 1820 1822 +3 1856 1847 1855 +3 1856 1822 1824 +3 1857 1845 1856 +3 1857 1824 1827 +3 1857 1815 1848 +3 1858 1501 1578 +3 1858 1859 1686 +3 1860 1861 1859 +3 1862 1861 1863 +3 1864 1865 1862 +3 1866 1690 1864 +3 1866 1691 1688 +3 1867 1662 1691 +3 1579 1858 1578 +3 1868 1860 1858 +3 1869 1863 1860 +3 1870 1863 1871 +3 1872 1862 1870 +3 1873 1864 1872 +3 1874 1866 1873 +3 1830 1867 1874 +3 1836 1868 1579 +3 1875 1869 1868 +3 1876 1871 1869 +3 1877 1871 1878 +3 1879 1870 1877 +3 1880 1872 1879 +3 1880 1874 1873 +3 1833 1874 1838 +3 1881 1836 1840 +3 1881 1876 1875 +3 1842 1881 1840 +3 1882 1878 1876 +3 1844 1882 1842 +3 1883 1878 1884 +3 1885 1877 1883 +3 1849 1883 1846 +3 1886 1879 1885 +3 1886 1849 1839 +3 1886 1838 1880 +3 1846 1884 1844 +3 1846 1853 1847 +3 1887 1155 1701 +3 1888 1288 1887 +3 1889 1290 1291 +3 1291 1888 1889 +3 1292 1890 1293 +3 1292 1891 1892 +3 1893 1293 1890 +3 1894 1238 1295 +3 1894 1294 1893 +3 1895 1701 1711 +3 1896 1887 1895 +3 1897 1892 1891 +3 1889 1897 1891 +3 1889 1896 1898 +3 1899 1892 1900 +3 1901 1890 1899 +3 1894 1758 1749 +3 1765 1893 1901 +3 1902 1724 1903 +3 1902 1711 1723 +3 1904 1903 1905 +3 1904 1898 1896 +3 1904 1895 1902 +3 1897 1906 1900 +3 1907 1898 1905 +3 1908 1900 1906 +3 1901 1766 1765 +3 1909 1899 1908 +3 1910 1724 1735 +3 1911 1903 1910 +3 1907 1912 1906 +3 1907 1911 1913 +3 1914 1906 1912 +3 1909 1776 1766 +3 1789 1908 1914 +3 1915 1743 1916 +3 1915 1735 1742 +3 1917 1916 1918 +3 1917 1913 1911 +3 1917 1910 1915 +3 1919 1913 1918 +3 1914 1790 1789 +3 1810 1912 1919 +3 1920 1747 1832 +3 1920 1743 1746 +3 1921 1832 1834 +3 1921 1916 1920 +3 1922 1834 1811 +3 1922 1810 1919 +3 1922 1918 1921 +3 1395 1752 1753 +3 1923 1395 1396 +3 1397 1923 1396 +3 1398 1924 1397 +3 1398 1754 1925 +3 1926 1752 1927 +3 1923 1926 1927 +3 1924 1928 1923 +3 1929 1924 1925 +3 1929 1754 1760 +3 1930 1759 1926 +3 1930 1781 1780 +3 1928 1930 1926 +3 1931 1781 1932 +3 1933 1932 1928 +3 1934 1782 1931 +3 1934 1933 1929 +3 1934 1760 1785 +3 1670 1935 1936 +3 1671 1936 1937 +3 1672 1937 1938 +3 1939 1672 1938 +3 1940 1673 1939 +3 1495 1580 1941 +3 1495 1935 1669 +3 1942 1935 1941 +3 1942 1937 1936 +3 1943 1938 1937 +3 1944 1938 1945 +3 1944 1940 1939 +3 1675 1940 1946 +3 1947 1580 1948 +3 1676 1946 1949 +3 1950 1676 1949 +3 1951 1948 1582 +3 1952 1950 1949 +3 1681 1677 1950 +3 1953 1582 1679 +3 1954 1681 1952 +3 1955 1679 1683 +3 1956 1683 1687 +3 1957 1689 1684 +3 1957 1680 1954 +3 1958 1956 1687 +3 1958 1859 1861 +3 1959 1960 1958 +3 1959 1861 1865 +3 1959 1961 1962 +3 1690 1959 1865 +3 1942 1963 1964 +3 1943 1964 1965 +3 1945 1965 1966 +3 1967 1945 1966 +3 1968 1944 1967 +3 1947 1963 1941 +3 1969 1964 1963 +3 1970 1964 1971 +3 1970 1966 1965 +3 1972 1967 1966 +3 1973 1968 1967 +3 1949 1968 1974 +3 1951 1969 1947 +3 1975 1969 1976 +3 1977 1974 1973 +3 1952 1974 1978 +3 1979 1951 1953 +3 1979 1975 1976 +3 1955 1979 1953 +3 1980 1977 1981 +3 1980 1957 1954 +3 1980 1952 1978 +3 1982 1955 1956 +3 1982 1983 1984 +3 1960 1982 1956 +3 1985 1986 1983 +3 1962 1985 1960 +3 1987 1986 1988 +3 1987 1962 1961 +3 1987 1957 1981 +3 1970 1989 1990 +3 1991 1970 1990 +3 1992 1972 1991 +3 1975 1989 1971 +3 1993 1989 1994 +3 1995 1990 1993 +3 1995 1992 1991 +3 1977 1992 1996 +3 1997 1975 1984 +3 1997 1993 1994 +3 1983 1997 1984 +3 1998 1993 1999 +3 1986 1999 1983 +3 2000 1995 1998 +3 2000 1986 1981 +3 2000 1977 1996 +3 0 4 1 +3 0 8 3 +3 5 15 6 +3 8 0 9 +3 10 17 11 +3 2 24 9 +3 12 220 13 +3 12 14 15 +3 16 224 12 +3 17 10 18 +3 20 18 10 +3 21 24 22 +3 21 20 9 +3 25 29 1 +3 25 4 26 +3 28 32 29 +3 28 25 27 +3 31 35 32 +3 31 28 30 +3 34 40 35 +3 36 34 31 +3 37 44 34 +3 38 2 1 +3 39 38 29 +3 35 41 39 +3 40 43 41 +3 42 57 43 +3 44 42 40 +3 45 60 42 +3 46 60 45 +3 48 46 47 +3 50 52 22 +3 50 24 2 +3 51 54 52 +3 51 50 38 +3 53 56 54 +3 41 53 51 +3 55 65 56 +3 43 55 53 +3 57 59 55 +3 58 70 59 +3 60 58 57 +3 61 58 60 +3 62 61 46 +3 63 23 22 +3 54 64 63 +3 56 66 64 +3 65 347 66 +3 67 347 65 +3 59 68 65 +3 69 68 59 +3 71 69 70 +3 61 72 70 +3 73 72 61 +3 74 184 75 +3 77 74 76 +3 79 86 80 +3 82 90 83 +3 85 82 84 +3 87 85 86 +3 88 96 89 +3 91 88 90 +3 92 129 93 +3 95 92 94 +3 97 110 98 +3 100 97 99 +3 102 100 101 +3 104 102 103 +3 106 104 105 +3 81 80 104 +3 108 116 109 +3 108 110 97 +3 111 97 100 +3 113 112 100 +3 113 84 83 +3 80 113 102 +3 86 84 113 +3 114 79 81 +3 115 121 116 +3 117 115 108 +3 89 117 111 +3 89 112 83 +3 118 91 82 +3 87 119 118 +3 87 79 114 +3 120 122 121 +3 120 94 93 +3 123 120 115 +3 123 96 94 +3 123 117 89 +3 124 95 96 +3 125 124 88 +3 126 125 91 +3 127 149 122 +3 128 122 93 +3 130 128 129 +3 131 130 92 +3 132 131 95 +3 133 160 48 +3 99 98 134 +3 101 99 135 +3 103 101 136 +3 105 103 137 +3 139 107 105 +3 139 162 140 +3 141 110 109 +3 141 134 98 +3 143 142 109 +3 144 148 145 +3 144 143 116 +3 119 192 146 +3 147 76 75 +3 147 148 144 +3 149 144 121 +3 125 151 150 +3 126 152 151 +3 126 118 146 +3 153 78 76 +3 127 153 147 +3 154 158 155 +3 131 154 156 +3 157 150 158 +3 132 157 154 +3 157 132 124 +3 159 62 48 +3 161 159 160 +3 136 135 163 +3 137 136 164 +3 138 137 165 +3 139 138 166 +3 139 167 161 +3 141 142 168 +3 134 141 169 +3 134 170 163 +3 171 164 163 +3 172 165 164 +3 173 166 165 +3 174 167 166 +3 143 145 175 +3 143 176 168 +3 177 169 168 +3 178 170 169 +3 178 180 171 +3 179 172 171 +3 181 174 173 +3 183 148 75 +3 148 183 175 +3 185 176 175 +3 186 177 176 +3 187 178 177 +3 188 180 178 +3 189 179 180 +3 190 182 179 +3 191 181 182 +3 191 190 146 +3 193 183 184 +3 193 195 185 +3 194 186 185 +3 196 187 186 +3 196 194 155 +3 197 188 187 +3 150 197 196 +3 198 189 188 +3 151 198 197 +3 199 190 189 +3 199 198 151 +3 199 152 146 +3 200 193 74 +3 201 195 193 +3 202 194 195 +3 202 156 155 +3 203 928 167 +3 204 77 78 +3 206 209 127 +3 207 206 128 +3 205 78 153 +3 209 208 153 +3 210 208 209 +3 211 156 202 +3 211 210 206 +3 211 207 130 +3 204 212 200 +3 212 204 205 +3 213 201 200 +3 213 212 208 +3 210 202 201 +3 214 14 13 +3 216 240 217 +3 216 218 215 +3 219 215 13 +3 221 216 219 +3 222 219 220 +3 224 223 220 +3 225 222 223 +3 227 226 223 +3 228 226 227 +3 19 18 230 +3 231 228 229 +3 232 230 18 +3 21 23 233 +3 234 232 20 +3 235 218 217 +3 237 215 218 +3 238 214 215 +3 239 236 217 +3 241 239 240 +3 221 242 240 +3 243 242 221 +3 225 261 243 +3 244 261 225 +3 228 231 245 +3 246 244 226 +3 247 245 231 +3 248 247 230 +3 234 233 249 +3 250 248 232 +3 251 235 236 +3 253 237 235 +3 238 237 253 +3 239 255 252 +3 241 278 255 +3 256 278 241 +3 243 259 256 +3 257 278 256 +3 258 256 259 +3 261 260 259 +3 262 260 261 +3 263 266 258 +3 263 260 262 +3 264 246 245 +3 264 262 244 +3 265 268 266 +3 265 263 245 +3 267 286 268 +3 270 269 268 +3 270 248 250 +3 270 265 247 +3 271 291 272 +3 273 271 267 +3 273 269 250 +3 251 252 274 +3 253 251 275 +3 277 254 253 +3 255 279 274 +3 278 280 279 +3 257 282 280 +3 281 285 282 +3 266 281 257 +3 283 287 284 +3 286 283 285 +3 268 286 281 +3 272 290 287 +3 267 272 283 +3 288 305 289 +3 288 290 272 +3 275 274 292 +3 294 276 275 +3 295 277 276 +3 279 296 292 +3 280 299 296 +3 297 300 298 +3 282 297 299 +3 284 314 300 +3 285 284 297 +3 301 314 284 +3 302 290 289 +3 302 301 287 +3 304 303 289 +3 293 292 306 +3 308 294 293 +3 309 295 294 +3 296 323 306 +3 310 299 298 +3 310 323 296 +3 312 311 298 +3 313 312 300 +3 301 302 315 +3 316 313 314 +3 317 315 302 +3 318 317 303 +3 307 306 319 +3 321 308 307 +3 309 308 321 +3 323 326 319 +3 324 310 311 +3 310 324 326 +3 327 325 311 +3 328 327 312 +3 329 316 315 +3 316 329 328 +3 317 331 330 +3 318 344 331 +3 320 319 332 +3 334 321 320 +3 322 321 334 +3 326 338 332 +3 336 324 325 +3 324 336 338 +3 339 337 325 +3 328 340 339 +3 329 343 340 +3 341 330 331 +3 330 341 343 +3 344 1503 342 +3 345 233 23 +3 346 345 63 +3 66 348 346 +3 347 349 348 +3 67 357 349 +3 350 357 67 +3 69 351 350 +3 71 360 351 +3 352 360 71 +3 353 352 72 +3 354 249 233 +3 355 354 345 +3 356 355 346 +3 349 358 356 +3 357 373 358 +3 359 373 357 +3 351 361 359 +3 360 377 361 +3 362 377 360 +3 363 362 352 +3 364 291 271 +3 365 271 273 +3 366 273 249 +3 367 365 366 +3 368 366 354 +3 369 367 368 +3 370 368 355 +3 371 370 356 +3 372 371 358 +3 374 372 373 +3 375 374 359 +3 376 375 361 +3 378 376 377 +3 379 378 362 +3 380 393 305 +3 364 380 288 +3 381 380 364 +3 382 364 365 +3 383 381 382 +3 384 382 367 +3 385 384 369 +3 371 386 369 +3 387 386 371 +3 388 387 372 +3 389 388 374 +3 390 389 375 +3 391 390 376 +3 392 304 305 +3 394 392 393 +3 381 395 393 +3 383 404 395 +3 396 404 383 +3 385 406 396 +3 397 406 385 +3 387 398 397 +3 388 409 398 +3 399 409 388 +3 400 399 389 +3 401 400 390 +3 392 402 318 +3 394 414 402 +3 403 414 394 +3 404 416 403 +3 405 416 404 +3 406 419 405 +3 407 419 406 +3 408 407 397 +3 409 410 408 +3 399 422 410 +3 411 422 399 +3 412 411 400 +3 413 344 318 +3 414 428 413 +3 415 428 414 +3 416 417 415 +3 405 430 417 +3 418 430 405 +3 407 420 418 +3 408 421 420 +3 410 423 421 +3 422 424 423 +3 411 438 424 +3 425 438 411 +3 426 1503 344 +3 427 426 413 +3 429 427 428 +3 417 431 429 +3 430 432 431 +3 418 433 432 +3 420 434 433 +3 421 435 434 +3 423 436 435 +3 424 1510 436 +3 437 1510 424 +3 439 437 438 +3 440 1239 439 +3 441 446 442 +3 444 449 445 +3 444 446 441 +3 448 453 449 +3 450 448 444 +3 451 446 445 +3 451 461 442 +3 449 454 452 +3 453 456 454 +3 455 467 456 +3 457 455 453 +3 458 451 452 +3 451 458 460 +3 454 464 459 +3 462 466 463 +3 462 464 454 +3 465 479 466 +3 467 465 462 +3 468 458 459 +3 458 468 470 +3 471 464 463 +3 464 471 469 +3 466 478 472 +3 473 483 474 +3 476 493 477 +3 476 478 466 +3 480 473 481 +3 480 1385 483 +3 484 468 469 +3 471 472 486 +3 471 487 485 +3 488 484 485 +3 489 478 477 +3 478 489 486 +3 491 481 488 +3 481 473 475 +3 492 490 477 +3 494 491 495 +3 482 481 491 +3 486 489 497 +3 499 487 486 +3 490 501 497 +3 500 498 497 +3 495 499 498 +3 491 487 499 +3 502 501 490 +3 503 500 501 +3 496 495 500 +3 504 479 465 +3 506 505 465 +3 507 506 467 +3 508 493 476 +3 504 509 476 +3 510 509 504 +3 511 480 482 +3 511 510 505 +3 508 515 492 +3 512 515 508 +3 513 494 496 +3 513 510 482 +3 514 502 492 +3 516 503 502 +3 516 514 515 +3 516 512 496 +3 517 532 518 +3 520 529 521 +3 523 520 522 +3 518 532 520 +3 525 523 524 +3 527 531 528 +3 527 533 530 +3 527 529 520 +3 532 517 533 +3 518 523 525 +3 534 709 519 +3 534 525 535 +3 537 709 534 +3 536 535 538 +3 540 537 536 +3 541 569 542 +3 541 543 544 +3 545 544 546 +3 548 581 541 +3 549 522 521 +3 549 589 551 +3 552 524 522 +3 552 551 553 +3 554 526 524 +3 555 529 528 +3 555 550 521 +3 526 554 557 +3 558 535 525 +3 559 558 557 +3 559 538 535 +3 3 531 26 +3 3 556 528 +3 538 559 561 +3 563 539 538 +3 564 543 542 +3 544 543 564 +3 546 544 566 +3 568 7 6 +3 568 565 542 +3 570 547 546 +3 570 567 571 +3 573 572 571 +3 575 573 574 +3 577 575 576 +3 579 568 569 +3 581 580 569 +3 548 582 580 +3 548 545 547 +3 583 582 547 +3 584 573 575 +3 585 575 577 +3 587 617 580 +3 588 551 589 +3 553 551 588 +3 592 595 593 +3 592 550 555 +3 592 594 590 +3 589 549 550 +3 596 553 591 +3 557 554 553 +3 598 560 557 +3 556 3 8 +3 11 595 555 +3 560 598 599 +3 561 559 560 +3 601 565 6 +3 564 565 601 +3 566 564 602 +3 604 567 566 +3 571 567 604 +3 574 571 605 +3 607 576 574 +3 578 576 607 +3 572 610 609 +3 573 584 610 +3 611 16 5 +3 579 611 7 +3 583 570 609 +3 613 612 609 +3 614 613 610 +3 615 614 584 +3 586 621 615 +3 616 623 611 +3 617 616 579 +3 587 618 616 +3 587 582 583 +3 618 583 612 +3 620 645 615 +3 622 624 623 +3 594 593 624 +3 622 616 618 +3 625 590 594 +3 625 618 619 +3 626 588 590 +3 626 619 627 +3 628 591 588 +3 629 597 591 +3 630 595 11 +3 630 624 593 +3 631 597 629 +3 598 596 597 +3 599 598 631 +3 634 600 599 +3 635 601 15 +3 636 602 601 +3 637 603 602 +3 604 603 637 +3 605 604 638 +3 606 605 639 +3 641 607 606 +3 642 608 607 +3 613 648 643 +3 644 648 613 +3 645 644 614 +3 646 227 224 +3 623 646 16 +3 619 612 643 +3 647 627 643 +3 649 647 648 +3 650 649 644 +3 651 650 645 +3 620 621 652 +3 653 229 227 +3 653 646 623 +3 654 628 627 +3 654 647 649 +3 629 628 654 +3 656 655 649 +3 656 632 629 +3 657 19 229 +3 657 630 17 +3 657 653 624 +3 632 656 658 +3 633 631 632 +3 660 634 633 +3 661 577 578 +3 561 600 663 +3 665 562 561 +3 662 578 608 +3 661 667 586 +3 661 662 666 +3 668 621 586 +3 663 600 634 +3 670 664 663 +3 666 608 642 +3 672 667 666 +3 668 673 652 +3 668 667 672 +3 674 669 634 +3 675 670 669 +3 676 723 677 +3 679 676 678 +3 679 680 681 +3 683 723 676 +3 685 684 676 +3 686 692 687 +3 689 686 688 +3 691 742 692 +3 693 692 686 +3 694 686 689 +3 695 689 696 +3 697 696 698 +3 700 691 693 +3 701 693 694 +3 702 694 695 +3 704 703 695 +3 705 704 697 +3 706 752 530 +3 707 706 533 +3 708 707 517 +3 708 519 709 +3 710 709 537 +3 711 537 540 +3 713 752 706 +3 714 706 707 +3 716 715 707 +3 716 678 677 +3 716 708 710 +3 717 680 678 +3 717 710 711 +3 681 680 717 +3 719 718 711 +3 720 713 714 +3 722 721 714 +3 722 715 677 +3 724 682 681 +3 724 718 719 +3 726 720 721 +3 727 721 722 +3 683 728 722 +3 729 728 683 +3 685 730 729 +3 685 679 682 +3 731 730 682 +3 731 724 725 +3 733 726 727 +3 735 734 727 +3 735 728 729 +3 737 736 729 +3 737 688 687 +3 737 730 731 +3 738 690 688 +3 738 731 732 +3 740 734 735 +3 742 741 735 +3 742 736 687 +3 690 738 739 +3 743 696 689 +3 743 739 744 +3 745 698 696 +3 746 748 740 +3 691 746 741 +3 747 770 748 +3 749 748 746 +3 750 746 691 +3 751 27 26 +3 751 531 530 +3 753 712 540 +3 753 539 563 +3 755 30 27 +3 755 751 752 +3 756 719 712 +3 756 753 754 +3 33 30 755 +3 758 755 713 +3 725 719 756 +3 759 756 757 +3 36 33 758 +3 761 758 720 +3 732 725 759 +3 762 759 760 +3 37 36 761 +3 764 761 726 +3 765 739 732 +3 765 762 763 +3 766 744 739 +3 767 764 733 +3 768 733 734 +3 769 767 768 +3 770 768 740 +3 771 769 770 +3 772 754 563 +3 773 757 754 +3 760 757 773 +3 763 760 774 +3 776 45 44 +3 776 37 764 +3 47 45 776 +3 777 776 767 +3 778 49 47 +3 771 778 777 +3 779 1162 73 +3 699 698 780 +3 782 705 699 +3 745 744 783 +3 780 698 745 +3 784 783 785 +3 787 781 780 +3 787 784 786 +3 789 782 781 +3 790 789 787 +3 766 763 775 +3 791 783 744 +3 792 785 783 +3 793 786 785 +3 788 786 793 +3 795 790 788 +3 795 794 796 +3 772 562 665 +3 773 772 798 +3 800 774 773 +3 801 775 774 +3 802 791 775 +3 803 792 791 +3 804 793 792 +3 805 794 793 +3 796 794 805 +3 807 797 796 +3 808 798 665 +3 809 799 798 +3 810 800 799 +3 811 801 800 +3 812 802 801 +3 813 803 802 +3 804 803 813 +3 815 805 804 +3 816 806 805 +3 817 807 806 +3 808 664 670 +3 809 808 818 +3 820 810 809 +3 821 811 810 +3 822 812 811 +3 823 813 812 +3 824 825 823 +3 814 813 823 +3 826 815 814 +3 827 828 825 +3 828 829 826 +3 816 815 826 +3 830 828 827 +3 830 832 829 +3 832 817 816 +3 833 818 670 +3 834 819 818 +3 835 820 819 +3 836 821 820 +3 837 822 821 +3 838 837 839 +3 838 824 822 +3 841 842 838 +3 842 827 824 +3 843 844 842 +3 831 827 842 +3 845 700 701 +3 846 701 702 +3 847 702 703 +3 849 848 703 +3 850 849 704 +3 851 846 847 +3 853 852 847 +3 854 851 852 +3 856 855 852 +3 856 853 857 +3 859 854 855 +3 861 860 855 +3 862 747 749 +3 863 749 750 +3 864 750 700 +3 849 866 865 +3 850 867 866 +3 850 705 782 +3 868 863 864 +3 869 864 845 +3 870 845 846 +3 853 848 865 +3 871 857 865 +3 872 871 866 +3 873 868 869 +3 874 869 870 +3 875 870 851 +3 876 858 857 +3 877 876 871 +3 878 874 875 +3 859 879 875 +3 880 879 859 +3 861 881 880 +3 861 856 858 +3 882 881 858 +3 883 882 876 +3 862 885 771 +3 884 887 885 +3 884 862 863 +3 886 904 887 +3 886 884 868 +3 888 904 886 +3 889 886 873 +3 878 890 873 +3 891 890 878 +3 892 891 879 +3 893 892 880 +3 882 894 893 +3 883 896 894 +3 883 877 895 +3 897 907 890 +3 898 897 891 +3 899 898 892 +3 900 899 893 +3 901 133 49 +3 885 901 778 +3 887 903 901 +3 902 107 140 +3 904 902 903 +3 905 106 107 +3 888 905 902 +3 906 905 888 +3 907 906 889 +3 896 910 908 +3 896 895 909 +3 911 114 106 +3 912 911 905 +3 913 912 906 +3 914 913 907 +3 915 914 897 +3 899 916 915 +3 900 917 916 +3 900 894 908 +3 918 119 114 +3 140 162 160 +3 903 140 133 +3 910 929 919 +3 912 934 920 +3 921 934 912 +3 922 921 913 +3 923 922 914 +3 916 924 923 +3 917 925 924 +3 917 908 919 +3 918 926 192 +3 918 911 920 +3 159 941 779 +3 927 941 159 +3 928 927 161 +3 929 956 930 +3 931 933 174 +3 932 952 933 +3 934 932 931 +3 921 958 932 +3 935 958 921 +3 936 935 922 +3 937 936 923 +3 938 937 924 +3 938 925 919 +3 939 931 181 +3 939 191 192 +3 939 926 920 +3 940 1162 779 +3 942 940 941 +3 943 946 944 +3 946 991 947 +3 928 951 942 +3 948 946 943 +3 950 991 946 +3 203 953 951 +3 933 953 203 +3 952 957 953 +3 954 948 949 +3 954 955 930 +3 954 956 950 +3 932 959 957 +3 958 967 959 +3 960 967 958 +3 961 960 935 +3 961 964 962 +3 964 961 936 +3 965 955 962 +3 965 964 937 +3 965 938 930 +3 966 1321 959 +3 968 867 782 +3 969 968 789 +3 970 872 867 +3 971 970 968 +3 972 877 872 +3 969 790 795 +3 974 973 795 +3 975 971 969 +3 972 976 895 +3 972 970 971 +3 977 976 971 +3 974 979 978 +3 974 797 807 +3 975 973 978 +3 981 909 895 +3 977 982 981 +3 977 975 980 +3 983 817 832 +3 983 984 978 +3 983 979 807 +3 985 980 978 +3 982 987 986 +3 982 980 985 +3 988 929 910 +3 988 909 981 +3 989 830 831 +3 989 984 832 +3 991 993 990 +3 992 989 990 +3 992 993 987 +3 992 985 984 +3 994 993 991 +3 994 986 987 +3 995 994 950 +3 995 956 929 +3 995 988 986 +3 944 947 844 +3 990 831 844 +3 635 14 214 +3 997 636 635 +3 998 637 636 +3 638 637 998 +3 639 638 999 +3 640 639 1000 +3 1002 641 640 +3 1003 642 641 +3 651 1006 1004 +3 651 652 1005 +3 656 650 1004 +3 1007 658 1004 +3 1008 659 658 +3 1009 660 659 +3 1010 996 214 +3 1011 997 996 +3 1012 998 997 +3 999 998 1012 +3 1000 999 1013 +3 1015 1001 1000 +3 1016 1002 1001 +3 1017 1003 1002 +3 1006 1005 1018 +3 1007 1006 1019 +3 1021 1008 1007 +3 1022 1010 238 +3 1023 1011 1010 +3 1012 1011 1023 +3 1025 1013 1012 +3 1014 1013 1025 +3 1015 1014 1026 +3 1016 1015 1027 +3 1017 1016 1028 +3 1030 1019 1018 +3 1032 1020 1019 +3 1033 1022 254 +3 1034 1023 1022 +3 1035 1024 1023 +3 1025 1024 1035 +3 1037 1026 1025 +3 1027 1026 1037 +3 1028 1027 1038 +3 1040 1029 1028 +3 1041 1032 1030 +3 1043 1096 1032 +3 1044 1033 277 +3 1045 1034 1033 +3 1046 1035 1034 +3 1047 1036 1035 +3 1037 1036 1047 +3 1038 1037 1048 +3 1039 1038 1049 +3 1040 1039 1050 +3 1041 1042 1052 +3 1054 1043 1041 +3 1055 1044 295 +3 1056 1045 1044 +3 1057 1046 1045 +3 1058 1047 1046 +3 1059 1048 1047 +3 1049 1048 1059 +3 1050 1049 1060 +3 1051 1050 1061 +3 1055 309 322 +3 1056 1055 1063 +3 1065 1057 1056 +3 1066 1058 1057 +3 1067 1059 1058 +3 1068 1060 1059 +3 1061 1060 1068 +3 1070 1062 1061 +3 1063 322 335 +3 1064 1063 1071 +3 1065 1064 1072 +3 1074 1066 1065 +3 1075 1067 1066 +3 1076 1068 1067 +3 1077 1069 1068 +3 1070 1069 1077 +3 1079 671 642 +3 172 179 182 +3 513 512 509 +3 1080 672 671 +3 1081 1005 652 +3 673 672 1080 +3 1082 674 660 +3 1083 675 674 +3 1084 1079 1003 +3 1080 1079 1084 +3 1086 1018 1005 +3 1081 1080 1085 +3 1087 1009 1008 +3 1088 1082 1009 +3 1089 1083 1082 +3 1084 1017 1029 +3 1091 1085 1084 +3 1091 1090 1092 +3 1086 1094 1031 +3 1086 1085 1091 +3 1095 1094 1091 +3 1096 1021 1020 +3 1097 1087 1021 +3 1098 1088 1087 +3 1099 1089 1088 +3 1090 1029 1040 +3 1092 1090 1100 +3 1102 1093 1092 +3 1095 1104 1103 +3 1095 1093 1102 +3 1105 1042 1030 +3 1105 1031 1094 +3 1097 1096 1043 +3 1098 1097 1106 +3 1108 1099 1098 +3 1109 1100 1040 +3 1101 1100 1109 +3 1102 1101 1110 +3 1112 1113 1103 +3 1112 1104 1102 +3 1105 1114 1052 +3 1105 1103 1113 +3 1115 1053 1052 +3 1054 1053 1115 +3 1106 1043 1054 +3 1116 1115 1117 +3 1119 1107 1106 +3 1119 1116 1118 +3 1108 1107 1119 +3 1121 1119 1120 +3 1122 1120 1123 +3 1109 1051 1062 +3 1126 1110 1109 +3 1111 1110 1126 +3 1112 1111 1127 +3 1113 1130 1129 +3 1113 1112 1128 +3 1115 1114 1129 +3 1131 1117 1129 +3 1132 1118 1117 +3 1133 1120 1118 +3 1123 1120 1133 +3 1135 1124 1123 +3 1125 1062 1070 +3 1137 1126 1125 +3 1127 1126 1137 +3 1128 1127 1138 +3 1130 1128 1139 +3 1131 1130 1140 +3 1142 1132 1131 +3 1143 1133 1132 +3 1144 1134 1133 +3 1145 1135 1134 +3 1136 1070 1078 +3 1137 1136 1146 +3 1138 1137 1147 +3 1139 1138 1148 +3 1140 1139 1149 +3 1141 1140 1150 +3 1152 1142 1141 +3 1153 1143 1142 +3 1154 1144 1143 +3 1155 1145 1144 +3 1156 840 839 +3 1158 1156 1159 +3 1158 841 840 +3 1161 353 73 +3 1163 1164 1158 +3 1164 843 841 +3 1165 1168 1159 +3 1165 1156 1157 +3 1167 1160 1159 +3 1169 363 353 +3 1170 1167 1171 +3 1170 1163 1160 +3 1165 1174 1173 +3 1174 1165 1166 +3 1176 1185 1171 +3 1176 1167 1168 +3 1177 379 363 +3 1178 1193 1177 +3 1179 1193 1178 +3 1181 1195 1182 +3 1184 1181 1183 +3 1184 1172 1171 +3 1175 1260 1186 +3 1174 1189 1188 +3 1174 1175 1187 +3 1190 391 378 +3 1191 1200 1185 +3 1191 1176 1173 +3 1192 1190 379 +3 1193 1194 1192 +3 1179 1196 1194 +3 1195 1197 1196 +3 1181 1198 1197 +3 1184 1199 1198 +3 1199 1184 1185 +3 1187 1186 1201 +3 1203 1208 1188 +3 1189 1187 1202 +3 1204 401 391 +3 1200 1206 1205 +3 1191 1207 1206 +3 1207 1191 1188 +3 1209 1204 1190 +3 1210 1209 1192 +3 1196 1211 1210 +3 1197 1212 1211 +3 1198 1213 1212 +3 1213 1198 1199 +3 1214 1219 1208 +3 1203 1202 1215 +3 1216 412 401 +3 1207 1218 1217 +3 1218 1207 1208 +3 1220 1216 1204 +3 1210 1221 1220 +3 1211 1222 1221 +3 1212 1223 1222 +3 1213 1224 1223 +3 1205 1225 1224 +3 1225 1205 1206 +3 1214 1215 1226 +3 440 425 412 +3 1218 1229 1228 +3 1219 1230 1229 +3 1219 1214 1227 +3 1220 1231 440 +3 1221 1240 1231 +3 1232 1240 1221 +3 1223 1233 1232 +3 1224 1234 1233 +3 1225 1235 1234 +3 1235 1225 1217 +3 1230 1237 1236 +3 1237 1230 1227 +3 1231 1241 1239 +3 1240 1753 1241 +3 1242 1753 1240 +3 1243 1242 1232 +3 1234 1399 1243 +3 1244 1399 1234 +3 1245 1244 1235 +3 1245 1228 1229 +3 1246 833 675 +3 1247 834 833 +3 1248 835 834 +3 1249 836 835 +3 1250 1157 839 +3 1250 837 836 +3 1251 1246 1083 +3 1247 1246 1251 +3 1253 1248 1247 +3 1254 1249 1248 +3 1250 1255 1166 +3 1255 1250 1249 +3 1256 1251 1089 +3 1257 1252 1251 +3 1258 1253 1252 +3 1259 1254 1253 +3 1255 1260 1175 +3 1260 1255 1254 +3 1261 1256 1099 +3 1261 1108 1121 +3 1263 1257 1256 +3 1263 1261 1262 +3 1265 1258 1257 +3 1259 1266 1186 +3 1266 1259 1258 +3 1267 1262 1121 +3 1267 1122 1124 +3 1269 1264 1262 +3 1269 1267 1268 +3 1265 1263 1264 +3 1272 1271 1264 +3 1266 1273 1201 +3 1273 1266 1265 +3 1274 1268 1124 +3 1270 1268 1274 +3 1272 1277 1276 +3 1272 1269 1270 +3 1278 1277 1270 +3 1273 1271 1276 +3 1280 1215 1202 +3 1201 1273 1279 +3 1281 1274 1135 +3 1275 1274 1281 +3 1283 1285 1276 +3 1278 1284 1283 +3 1278 1275 1282 +3 1279 1276 1285 +3 1287 1226 1215 +3 1280 1279 1286 +3 1288 1281 1145 +3 1282 1281 1288 +3 1284 1291 1290 +3 1284 1282 1289 +3 1292 1293 1286 +3 1292 1285 1283 +3 1287 1286 1293 +3 1295 1238 1227 +3 1226 1287 1294 +3 1296 1161 1162 +3 1297 945 1164 +3 945 944 843 +3 1298 1296 940 +3 1298 1300 1299 +3 1300 1333 1301 +3 1302 1297 1303 +3 1302 943 945 +3 951 1306 1298 +3 1305 1300 1298 +3 1307 1311 1308 +3 1310 1304 1311 +3 1310 1312 1302 +3 1312 949 943 +3 953 1317 1306 +3 1313 1307 1309 +3 1315 1310 1307 +3 1315 1313 963 +3 1316 1312 1310 +3 1316 1315 962 +3 1316 955 949 +3 957 1318 1317 +3 959 1321 1318 +3 1319 1323 967 +3 963 1313 1314 +3 963 1319 960 +3 1320 1318 1321 +3 966 1324 1322 +3 966 967 1323 +3 1325 1320 1322 +3 1327 1169 1161 +3 1327 1328 1178 +3 1299 1328 1327 +3 1328 1335 1180 +3 1301 1335 1328 +3 1329 1183 1182 +3 1331 1172 1183 +3 1331 1303 1170 +3 1303 1297 1163 +3 1332 1335 1301 +3 1334 1330 1335 +3 1336 1329 1330 +3 1336 1334 1308 +3 1337 1331 1329 +3 1337 1336 1311 +3 1337 1304 1303 +3 1305 1306 1338 +3 1305 1339 1333 +3 1340 1332 1333 +3 1341 1334 1332 +3 1341 1309 1308 +3 1317 1345 1338 +3 1342 1341 1340 +3 1314 1309 1341 +3 1344 441 443 +3 1344 1345 1317 +3 1346 1342 1343 +3 1346 1347 1323 +3 1319 1314 1342 +3 1348 447 441 +3 1320 1348 1344 +3 1324 1349 1326 +3 1324 1323 1347 +3 450 447 1348 +3 1325 1350 1348 +3 1351 1350 1325 +3 1352 1351 1326 +3 1180 1182 1195 +3 1330 1182 1180 +3 1353 1339 1338 +3 1340 1339 1353 +3 1356 1345 443 +3 1345 1356 1354 +3 1343 1340 1355 +3 1358 1347 1343 +3 1359 1358 1360 +3 1349 1347 1358 +3 1362 448 450 +3 1351 1364 1362 +3 1363 1359 1361 +3 1363 1364 1351 +3 1352 1349 1359 +3 457 448 1362 +3 1366 1365 1362 +3 1367 1353 1354 +3 1369 1356 442 +3 1356 1369 1368 +3 1370 1367 1368 +3 1355 1353 1367 +3 1371 1357 1355 +3 1372 1360 1371 +3 1358 1357 1371 +3 1361 1360 1372 +3 1374 1373 1375 +3 1374 1364 1361 +3 1377 455 457 +3 1378 1377 1365 +3 1366 1364 1374 +3 1379 1369 461 +3 1380 1370 1369 +3 1372 1370 1380 +3 1382 1384 1375 +3 1382 1373 1372 +3 1383 1384 474 +3 1383 1376 1375 +3 1385 1387 1383 +3 1386 1376 1383 +3 1386 1387 1377 +3 1386 1378 1374 +3 1388 1379 460 +3 1389 1380 1379 +3 1390 1388 470 +3 1391 1389 1388 +3 1391 1390 1382 +3 1381 1380 1389 +3 1392 475 474 +3 1392 1384 1382 +3 1393 1390 468 +3 1394 1393 484 +3 1394 488 475 +3 1392 1390 1393 +3 1395 1753 1242 +3 1396 1242 1243 +3 1398 1397 1243 +3 1400 507 455 +3 1401 506 507 +3 1400 1377 1387 +3 1402 1385 480 +3 1402 511 506 +3 1402 1401 1387 +3 333 332 1403 +3 1405 334 333 +3 335 334 1405 +3 338 1409 1403 +3 1407 336 337 +3 336 1407 1409 +3 339 1410 1408 +3 340 1411 1410 +3 343 1412 1411 +3 341 1415 1412 +3 342 1503 1413 +3 342 1414 1415 +3 1416 1404 1403 +3 1418 1405 1404 +3 1419 1406 1405 +3 1409 1420 1417 +3 1407 1423 1420 +3 1421 1408 1410 +3 1408 1421 1423 +3 1411 1424 1422 +3 1412 1437 1424 +3 1425 1437 1412 +3 1426 1425 1415 +3 1418 1416 1427 +3 1419 1418 1428 +3 1430 1417 1420 +3 1417 1430 1427 +3 1423 1434 1431 +3 1421 1422 1432 +3 1421 1433 1434 +3 1424 1436 1432 +3 1435 1433 1432 +3 1437 1438 1436 +3 1438 1451 1435 +3 1439 1438 1437 +3 1440 1439 1425 +3 1441 1453 1439 +3 1428 1427 1442 +3 1429 1428 1443 +3 1430 1446 1442 +3 1445 1443 1442 +3 1447 1444 1443 +3 1448 1431 1434 +3 1431 1448 1446 +3 1448 1458 1445 +3 1450 1449 1434 +3 1435 1452 1450 +3 1451 1454 1452 +3 1453 1451 1438 +3 1453 1455 1454 +3 1441 1468 1455 +3 1447 1472 1456 +3 1457 1447 1445 +3 1459 1472 1447 +3 1449 1450 1460 +3 1449 1461 1458 +3 1462 1457 1458 +3 1452 1464 1460 +3 1463 1461 1460 +3 1454 1466 1464 +3 1465 1463 1464 +3 1455 1467 1466 +3 1467 1470 1465 +3 1468 1469 1467 +3 1469 1480 1470 +3 1459 1474 1471 +3 1462 1473 1459 +3 1473 1485 1474 +3 1463 1475 1462 +3 1475 1477 1473 +3 1465 1476 1475 +3 1476 1479 1477 +3 1470 1478 1476 +3 1478 1482 1479 +3 1480 1481 1478 +3 1481 1493 1482 +3 1483 1496 1471 +3 1484 1483 1474 +3 1486 1485 1473 +3 1487 1484 1485 +3 1488 1486 1477 +3 1489 1487 1486 +3 1490 1488 1479 +3 1491 1489 1488 +3 1492 1490 1482 +3 1494 1491 1490 +3 1483 1581 1495 +3 1497 1581 1483 +3 1498 1497 1484 +3 1499 1498 1487 +3 1500 1499 1489 +3 1501 1500 1491 +3 1502 1413 1503 +3 1504 1414 1413 +3 427 1504 1502 +3 1505 1504 427 +3 431 1506 1505 +3 432 1507 1506 +3 433 1508 1507 +3 434 1519 1508 +3 1509 1519 434 +3 436 1511 1509 +3 1510 1524 1511 +3 1512 1524 1510 +3 1513 1512 437 +3 1514 1513 439 +3 1515 1426 1414 +3 1505 1516 1515 +3 1506 1517 1516 +3 1507 1518 1517 +3 1508 1520 1518 +3 1519 1532 1520 +3 1521 1532 1519 +3 1522 1521 1509 +3 1523 1522 1511 +3 1512 1525 1523 +3 1513 1526 1525 +3 1514 1537 1526 +3 1527 1440 1426 +3 1528 1441 1440 +3 1529 1527 1515 +3 1529 1541 1528 +3 1517 1541 1529 +3 1530 1541 1517 +3 1531 1530 1518 +3 1532 1544 1531 +3 1533 1544 1532 +3 1534 1533 1521 +3 1535 1534 1522 +3 1536 1535 1523 +3 1526 1538 1536 +3 1537 1769 1538 +3 1539 1468 1441 +3 1540 1539 1528 +3 1530 1552 1540 +3 1542 1552 1530 +3 1543 1542 1531 +3 1545 1543 1544 +3 1546 1545 1533 +3 1547 1546 1534 +3 1548 1547 1535 +3 1538 1559 1548 +3 1549 1469 1468 +3 1549 1551 1480 +3 1550 1549 1539 +3 1550 1562 1551 +3 1552 1562 1550 +3 1553 1562 1552 +3 1554 1553 1542 +3 1555 1554 1543 +3 1556 1555 1545 +3 1557 1556 1546 +3 1558 1557 1547 +3 1559 1793 1558 +3 1560 1481 1480 +3 1561 1560 1551 +3 1563 1561 1562 +3 1564 1563 1553 +3 1565 1564 1554 +3 1566 1565 1555 +3 1567 1566 1556 +3 1558 1814 1567 +3 1568 1493 1481 +3 1568 1570 1492 +3 1569 1494 1492 +3 1571 1568 1560 +3 1571 1573 1570 +3 1563 1573 1571 +3 1572 1569 1570 +3 1574 1573 1563 +3 1574 1576 1572 +3 1575 1574 1564 +3 1575 1835 1576 +3 1566 1835 1575 +3 1577 1835 1566 +3 1578 1501 1494 +3 1572 1579 1578 +3 1576 1836 1579 +3 1497 1948 1580 +3 1582 1948 1497 +3 1071 335 1406 +3 1072 1071 1583 +3 1073 1072 1584 +3 1586 1074 1073 +3 1587 1075 1074 +3 1588 1076 1075 +3 1589 1077 1076 +3 1078 1077 1589 +3 1583 1406 1419 +3 1584 1583 1591 +3 1585 1584 1592 +3 1594 1586 1585 +3 1595 1587 1586 +3 1596 1588 1587 +3 1597 1589 1588 +3 1590 1589 1597 +3 1591 1419 1429 +3 1592 1591 1599 +3 1593 1592 1600 +3 1594 1593 1601 +3 1603 1595 1594 +3 1604 1596 1595 +3 1597 1596 1604 +3 1598 1597 1605 +3 1607 1599 1429 +3 1600 1599 1607 +3 1609 1601 1600 +3 1610 1602 1601 +3 1611 1603 1602 +3 1604 1603 1611 +3 1613 1605 1604 +3 1606 1605 1613 +3 1607 1444 1456 +3 1608 1607 1615 +3 1609 1608 1616 +3 1618 1610 1609 +3 1619 1611 1610 +3 1612 1611 1619 +3 1621 1613 1612 +3 1622 1614 1613 +3 1623 1624 1621 +3 1624 1626 1622 +3 1625 1614 1622 +3 1627 1626 1624 +3 1629 1625 1626 +3 1616 1615 1630 +3 1617 1616 1631 +3 1633 1618 1617 +3 1634 1619 1618 +3 1635 1620 1619 +3 1456 1472 1471 +3 1636 1630 1615 +3 1623 1620 1635 +3 1638 1639 1623 +3 1628 1624 1623 +3 1640 1642 1628 +3 1641 1627 1628 +3 1643 1738 1641 +3 1631 1630 1644 +3 1632 1631 1645 +3 1647 1633 1632 +3 1648 1634 1633 +3 1649 1635 1634 +3 1636 1471 1496 +3 1650 1644 1630 +3 1637 1635 1649 +3 1638 1637 1651 +3 1653 1639 1638 +3 1640 1639 1653 +3 1655 1656 1640 +3 1656 1643 1642 +3 1657 1658 1656 +3 1658 1661 1643 +3 1659 1660 1658 +3 1660 1664 1661 +3 1662 1663 1660 +3 1663 1747 1664 +3 1646 1645 1665 +3 1667 1647 1646 +3 1668 1648 1647 +3 1669 1650 1496 +3 1644 1650 1669 +3 1644 1670 1665 +3 1671 1666 1665 +3 1672 1667 1666 +3 1672 1673 1668 +3 1649 1648 1668 +3 1674 1651 1649 +3 1652 1651 1674 +3 1653 1652 1675 +3 1677 1654 1653 +3 1678 1655 1654 +3 1679 1582 1498 +3 1680 1682 1678 +3 1682 1657 1655 +3 1683 1679 1499 +3 1684 1685 1682 +3 1685 1659 1657 +3 1686 1683 1500 +3 1686 1859 1687 +3 1688 1684 1689 +3 1688 1691 1685 +3 1691 1662 1659 +3 1692 1146 1078 +3 1147 1146 1692 +3 1148 1147 1693 +3 1149 1148 1694 +3 1150 1149 1695 +3 1697 1151 1150 +3 1698 1152 1151 +3 1699 1153 1152 +3 1700 1154 1153 +3 1701 1155 1154 +3 1702 1692 1590 +3 1693 1692 1702 +3 1694 1693 1703 +3 1695 1694 1704 +3 1696 1695 1705 +3 1697 1696 1706 +3 1698 1697 1707 +3 1699 1698 1708 +3 1710 1700 1699 +3 1701 1700 1710 +3 1712 1702 1598 +3 1713 1703 1702 +3 1704 1703 1713 +3 1705 1704 1714 +3 1706 1705 1715 +3 1707 1706 1716 +3 1718 1708 1707 +3 1719 1720 1718 +3 1709 1708 1718 +3 1721 1722 1720 +3 1710 1709 1720 +3 1723 1722 1721 +3 1723 1711 1710 +3 1725 1712 1606 +3 1625 1726 1725 +3 1713 1712 1725 +3 1727 1726 1625 +3 1714 1713 1726 +3 1715 1714 1727 +3 1729 1716 1715 +3 1730 1731 1729 +3 1717 1716 1729 +3 1732 1731 1730 +3 1719 1717 1731 +3 1721 1719 1732 +3 1724 1721 1734 +3 1736 1629 1627 +3 1736 1728 1727 +3 1737 1736 1641 +3 1730 1728 1736 +3 1733 1730 1737 +3 1740 1741 1733 +3 1734 1732 1733 +3 1742 1741 1740 +3 1735 1734 1741 +3 1661 1744 1738 +3 1744 1739 1737 +3 1745 1744 1661 +3 1745 1740 1739 +3 1746 1745 1664 +3 1746 1743 1740 +3 1237 1750 1748 +3 1237 1238 1749 +3 1751 1514 1239 +3 1752 1751 1241 +3 1244 1755 1754 +3 1245 1756 1755 +3 1756 1245 1236 +3 1757 1762 1748 +3 1750 1749 1758 +3 1751 1768 1537 +3 1759 1768 1751 +3 1755 1761 1760 +3 1756 1763 1761 +3 1756 1748 1762 +3 1764 1758 1765 +3 1767 1773 1762 +3 1757 1758 1764 +3 1768 1770 1769 +3 1759 1780 1770 +3 1771 1785 1760 +3 1772 1771 1761 +3 1763 1762 1773 +3 1764 1775 1774 +3 1775 1764 1766 +3 1769 1778 1559 +3 1777 1786 1772 +3 1773 1767 1774 +3 1770 1794 1778 +3 1779 1794 1770 +3 1781 1783 1779 +3 1782 1803 1783 +3 1784 1803 1782 +3 1771 1787 1784 +3 1771 1772 1786 +3 1788 1776 1789 +3 1775 1792 1791 +3 1792 1775 1776 +3 1778 1795 1793 +3 1794 1800 1795 +3 1796 1806 1787 +3 1777 1797 1796 +3 1777 1774 1791 +3 1798 1800 1794 +3 1798 1801 1799 +3 1783 1801 1798 +3 1801 1805 1802 +3 1803 1805 1801 +3 1804 1806 1802 +3 1804 1805 1803 +3 1804 1784 1787 +3 1807 1811 1808 +3 1807 1790 1810 +3 1812 1807 1809 +3 1812 1813 1792 +3 1812 1788 1790 +3 1793 1818 1814 +3 1815 1827 1797 +3 1815 1791 1792 +3 1816 1818 1793 +3 1816 1819 1817 +3 1800 1819 1816 +3 1819 1821 1820 +3 1799 1821 1819 +3 1821 1823 1822 +3 1823 1821 1799 +3 1823 1825 1824 +3 1825 1823 1802 +3 1826 1827 1824 +3 1826 1825 1806 +3 1826 1796 1797 +3 1828 1829 1663 +3 1829 1832 1747 +3 1830 1831 1829 +3 1831 1834 1832 +3 1833 1808 1831 +3 1808 1811 1834 +3 1835 1840 1836 +3 1837 1833 1838 +3 1837 1809 1808 +3 1577 1841 1840 +3 1814 1841 1577 +3 1841 1843 1842 +3 1843 1853 1844 +3 1845 1849 1846 +3 1848 1839 1849 +3 1850 1837 1839 +3 1850 1848 1815 +3 1850 1813 1809 +3 1851 1841 1814 +3 1851 1852 1843 +3 1817 1852 1851 +3 1852 1854 1853 +3 1820 1854 1852 +3 1854 1855 1847 +3 1855 1854 1820 +3 1856 1845 1847 +3 1856 1855 1822 +3 1857 1848 1845 +3 1857 1856 1824 +3 1857 1827 1815 +3 1858 1686 1501 +3 1858 1860 1859 +3 1860 1863 1861 +3 1862 1865 1861 +3 1864 1690 1865 +3 1866 1688 1690 +3 1866 1867 1691 +3 1867 1828 1662 +3 1579 1868 1858 +3 1868 1869 1860 +3 1869 1871 1863 +3 1870 1862 1863 +3 1872 1864 1862 +3 1873 1866 1864 +3 1874 1867 1866 +3 1830 1828 1867 +3 1836 1875 1868 +3 1875 1876 1869 +3 1876 1878 1871 +3 1877 1870 1871 +3 1879 1872 1870 +3 1880 1873 1872 +3 1880 1838 1874 +3 1833 1830 1874 +3 1881 1875 1836 +3 1881 1882 1876 +3 1842 1882 1881 +3 1882 1884 1878 +3 1844 1884 1882 +3 1883 1877 1878 +3 1885 1879 1877 +3 1849 1885 1883 +3 1886 1880 1879 +3 1886 1885 1849 +3 1886 1839 1838 +3 1846 1883 1884 +3 1846 1844 1853 +3 1887 1288 1155 +3 1888 1289 1288 +3 1889 1891 1290 +3 1291 1289 1888 +3 1292 1892 1890 +3 1292 1290 1891 +3 1893 1294 1293 +3 1894 1749 1238 +3 1894 1295 1294 +3 1895 1887 1701 +3 1896 1888 1887 +3 1897 1900 1892 +3 1889 1898 1897 +3 1889 1888 1896 +3 1899 1890 1892 +3 1901 1893 1890 +3 1894 1765 1758 +3 1765 1894 1893 +3 1902 1723 1724 +3 1902 1895 1711 +3 1904 1902 1903 +3 1904 1905 1898 +3 1904 1896 1895 +3 1897 1907 1906 +3 1907 1897 1898 +3 1908 1899 1900 +3 1901 1909 1766 +3 1909 1901 1899 +3 1910 1903 1724 +3 1911 1905 1903 +3 1907 1913 1912 +3 1907 1905 1911 +3 1914 1908 1906 +3 1909 1789 1776 +3 1789 1909 1908 +3 1915 1742 1743 +3 1915 1910 1735 +3 1917 1915 1916 +3 1917 1918 1913 +3 1917 1911 1910 +3 1919 1912 1913 +3 1914 1810 1790 +3 1810 1914 1912 +3 1920 1746 1747 +3 1920 1916 1743 +3 1921 1920 1832 +3 1921 1918 1916 +3 1922 1921 1834 +3 1922 1811 1810 +3 1922 1919 1918 +3 1395 1927 1752 +3 1923 1927 1395 +3 1397 1924 1923 +3 1398 1925 1924 +3 1398 1399 1754 +3 1926 1759 1752 +3 1923 1928 1926 +3 1924 1933 1928 +3 1929 1933 1924 +3 1929 1925 1754 +3 1930 1780 1759 +3 1930 1932 1781 +3 1928 1932 1930 +3 1931 1782 1781 +3 1933 1931 1932 +3 1934 1785 1782 +3 1934 1931 1933 +3 1934 1929 1760 +3 1670 1669 1935 +3 1671 1670 1936 +3 1672 1671 1937 +3 1939 1673 1672 +3 1940 1674 1673 +3 1495 1581 1580 +3 1495 1941 1935 +3 1942 1936 1935 +3 1942 1943 1937 +3 1943 1945 1938 +3 1944 1939 1938 +3 1944 1946 1940 +3 1675 1674 1940 +3 1947 1941 1580 +3 1676 1675 1946 +3 1950 1677 1676 +3 1951 1947 1948 +3 1952 1681 1950 +3 1681 1678 1677 +3 1953 1951 1582 +3 1954 1680 1681 +3 1955 1953 1679 +3 1956 1955 1683 +3 1957 1961 1689 +3 1957 1684 1680 +3 1958 1960 1956 +3 1958 1687 1859 +3 1959 1962 1960 +3 1959 1958 1861 +3 1959 1689 1961 +3 1690 1689 1959 +3 1942 1941 1963 +3 1943 1942 1964 +3 1945 1943 1965 +3 1967 1944 1945 +3 1968 1946 1944 +3 1947 1969 1963 +3 1969 1971 1964 +3 1970 1965 1964 +3 1970 1972 1966 +3 1972 1973 1967 +3 1973 1974 1968 +3 1949 1946 1968 +3 1951 1976 1969 +3 1975 1971 1969 +3 1977 1978 1974 +3 1952 1949 1974 +3 1979 1976 1951 +3 1979 1984 1975 +3 1955 1984 1979 +3 1980 1978 1977 +3 1980 1981 1957 +3 1980 1954 1952 +3 1982 1984 1955 +3 1982 1985 1983 +3 1960 1985 1982 +3 1985 1988 1986 +3 1962 1988 1985 +3 1987 1981 1986 +3 1987 1988 1962 +3 1987 1961 1957 +3 1970 1971 1989 +3 1991 1972 1970 +3 1992 1973 1972 +3 1975 1994 1989 +3 1993 1990 1989 +3 1995 1991 1990 +3 1995 1996 1992 +3 1977 1973 1992 +3 1997 1994 1975 +3 1997 1999 1993 +3 1983 1999 1997 +3 1998 1995 1993 +3 1986 1998 1999 +3 2000 1996 1995 +3 2000 1998 1986 +3 2000 1981 1977 diff --git a/models/sphere_medium.ply b/models/sphere_medium.ply new file mode 100644 index 0000000..d91a393 --- /dev/null +++ b/models/sphere_medium.ply @@ -0,0 +1,598 @@ +ply +format ascii 1.0 +comment Created by Blender 3.0.1 - www.blender.org +element vertex 310 +property float x +property float y +property float z +property float s +property float t +element face 276 +property list uchar uint vertex_indices +end_header +0.000000 0.707107 0.707107 0.739130 0.750000 +0.000000 0.866025 0.500000 0.739130 0.833333 +-0.134898 0.866025 0.481459 0.695652 0.833333 +-0.190775 0.707107 0.680885 0.695652 0.750000 +-0.000000 -0.866025 0.500000 0.739130 0.166667 +0.000000 -0.707107 0.707107 0.739130 0.250000 +-0.190775 -0.707107 0.680885 0.695652 0.250000 +-0.134898 -0.866025 0.481459 0.695652 0.166667 +0.000000 -0.258819 0.965926 0.739130 0.416667 +0.000000 -0.000000 1.000000 0.739130 0.500000 +-0.269797 -0.000000 0.962917 0.695652 0.500000 +-0.260604 -0.258819 0.930107 0.695652 0.416667 +0.000000 0.500000 0.866025 0.739130 0.666667 +-0.233651 0.500000 0.833911 0.695652 0.666667 +-0.000000 -0.965926 0.258819 0.739130 0.083333 +-0.069829 -0.965926 0.249221 0.695652 0.083333 +0.000000 0.965926 0.258819 0.739130 0.916667 +0.000000 1.000000 -0.000000 0.717391 1.000000 +-0.069829 0.965926 0.249221 0.695652 0.916667 +0.000000 -0.500000 0.866025 0.739130 0.333333 +-0.233651 -0.500000 0.833911 0.695652 0.333333 +0.000000 0.258819 0.965926 0.739130 0.583333 +-0.260604 0.258819 0.930107 0.695652 0.583333 +0.000000 -1.000000 -0.000000 0.717391 0.000000 +-0.501880 -0.258819 0.825306 0.652174 0.416667 +-0.449973 -0.500000 0.739949 0.652174 0.333333 +-0.449973 0.500000 0.739949 0.652174 0.666667 +-0.501880 0.258819 0.825306 0.652174 0.583333 +0.000000 -1.000000 -0.000000 0.673913 0.000000 +-0.134478 -0.965926 0.221140 0.652174 0.083333 +-0.134478 0.965926 0.221140 0.652174 0.916667 +-0.259792 0.866025 0.427210 0.652174 0.833333 +-0.367401 -0.707107 0.604166 0.652174 0.250000 +-0.519584 -0.000000 0.854419 0.652174 0.500000 +-0.367401 0.707107 0.604166 0.652174 0.750000 +-0.259792 -0.866025 0.427210 0.652174 0.166667 +0.000000 1.000000 -0.000000 0.673913 1.000000 +-0.730836 -0.000000 0.682553 0.608696 0.500000 +-0.705933 -0.258819 0.659296 0.608696 0.416667 +-0.516779 0.707107 0.482638 0.608696 0.750000 +-0.632923 0.500000 0.591108 0.608696 0.666667 +-0.365418 -0.866025 0.341277 0.608696 0.166667 +-0.189154 -0.965926 0.176658 0.608696 0.083333 +0.000000 1.000000 -0.000000 0.630435 1.000000 +-0.189154 0.965926 0.176658 0.608696 0.916667 +-0.632923 -0.500000 0.591108 0.608696 0.333333 +-0.705933 0.258819 0.659296 0.608696 0.583333 +0.000000 -1.000000 -0.000000 0.630435 0.000000 +-0.365418 0.866025 0.341276 0.608696 0.833333 +-0.516779 -0.707107 0.482638 0.608696 0.250000 +-0.768931 -0.500000 0.398428 0.565217 0.333333 +-0.627830 -0.707107 0.325315 0.565217 0.250000 +-0.857631 0.258819 0.444389 0.565217 0.583333 +-0.887885 -0.000000 0.460065 0.565217 0.500000 +-0.443943 0.866025 0.230032 0.565217 0.833333 +-0.627830 0.707107 0.325315 0.565217 0.750000 +-0.443943 -0.866025 0.230032 0.565217 0.166667 +-0.857631 -0.258819 0.444389 0.565217 0.416667 +-0.768931 0.500000 0.398428 0.565217 0.666667 +-0.229802 -0.965926 0.119074 0.565217 0.083333 +0.000000 1.000000 -0.000000 0.586957 1.000000 +-0.229802 0.965926 0.119074 0.565217 0.916667 +0.000000 -1.000000 -0.000000 0.586957 0.000000 +0.000000 1.000000 -0.000000 0.543478 1.000000 +-0.253406 0.965926 0.052658 0.521739 0.916667 +-0.945723 -0.258819 0.196523 0.521739 0.416667 +-0.847912 -0.500000 0.176198 0.521739 0.333333 +-0.847912 0.500000 0.176198 0.521739 0.666667 +-0.945723 0.258819 0.196523 0.521739 0.583333 +0.000000 -1.000000 -0.000000 0.543478 0.000000 +-0.253406 -0.965926 0.052658 0.521739 0.083333 +-0.489542 0.866025 0.101728 0.521739 0.833333 +-0.692317 -0.707107 0.143865 0.521739 0.250000 +-0.979084 -0.000000 0.203456 0.521739 0.500000 +-0.692317 0.707107 0.143865 0.521739 0.750000 +-0.489542 -0.866025 0.101728 0.521739 0.166667 +-0.705458 -0.707107 -0.048255 0.478261 0.250000 +-0.498835 -0.866025 -0.034121 0.478261 0.166667 +-0.997669 -0.000000 -0.068243 0.478261 0.500000 +-0.963674 -0.258819 -0.065917 0.478261 0.416667 +-0.705458 0.707107 -0.048255 0.478261 0.750000 +-0.864007 0.500000 -0.059100 0.478261 0.666667 +-0.258216 -0.965926 -0.017663 0.478261 0.083333 +0.000000 1.000000 -0.000000 0.500000 1.000000 +-0.258216 0.965926 -0.017663 0.478261 0.916667 +-0.864006 -0.500000 -0.059100 0.478261 0.333333 +-0.963674 0.258819 -0.065917 0.478261 0.583333 +0.000000 -1.000000 -0.000000 0.500000 0.000000 +-0.498834 0.866025 -0.034121 0.478261 0.833333 +-0.243875 0.965926 -0.086673 0.434783 0.916667 +-0.471130 0.866025 -0.167440 0.434783 0.833333 +-0.816022 -0.500000 -0.290014 0.434783 0.333333 +-0.666279 -0.707107 -0.236796 0.434783 0.250000 +-0.910154 0.258819 -0.323469 0.434783 0.583333 +-0.942261 -0.000000 -0.334880 0.434783 0.500000 +-0.666279 0.707107 -0.236796 0.434783 0.750000 +-0.471131 -0.866025 -0.167440 0.434783 0.166667 +-0.910154 -0.258819 -0.323469 0.434783 0.416667 +-0.816022 0.500000 -0.290014 0.434783 0.666667 +-0.243875 -0.965926 -0.086673 0.434783 0.083333 +0.000000 1.000000 -0.000000 0.456522 1.000000 +0.000000 -1.000000 -0.000000 0.456522 0.000000 +-0.408485 -0.866025 -0.288340 0.391304 0.166667 +-0.211448 -0.965926 -0.149256 0.391304 0.083333 +0.000000 1.000000 -0.000000 0.413043 1.000000 +-0.211447 0.965926 -0.149256 0.391304 0.916667 +-0.789132 -0.258819 -0.557030 0.391304 0.416667 +-0.707517 -0.500000 -0.499420 0.391304 0.333333 +-0.707517 0.500000 -0.499420 0.391304 0.666667 +-0.789132 0.258819 -0.557030 0.391304 0.583333 +0.000000 -1.000000 -0.000000 0.413043 0.000000 +-0.408485 0.866025 -0.288340 0.391304 0.833333 +-0.577685 -0.707107 -0.407775 0.391304 0.250000 +-0.816970 -0.000000 -0.576680 0.391304 0.500000 +-0.577685 0.707107 -0.407775 0.391304 0.750000 +-0.315544 0.866025 -0.387856 0.347826 0.833333 +-0.446246 0.707107 -0.548511 0.347826 0.750000 +-0.446246 -0.707107 -0.548511 0.347826 0.250000 +-0.315544 -0.866025 -0.387856 0.347826 0.166667 +-0.631088 -0.000000 -0.775711 0.347826 0.500000 +-0.609584 -0.258819 -0.749279 0.347826 0.416667 +-0.546538 0.500000 -0.671786 0.347826 0.666667 +-0.163338 -0.965926 -0.200769 0.347826 0.083333 +0.000000 1.000000 -0.000000 0.369565 1.000000 +-0.163338 0.965926 -0.200769 0.347826 0.916667 +-0.546538 -0.500000 -0.671786 0.347826 0.333333 +-0.609584 0.258819 -0.749279 0.347826 0.583333 +0.000000 -1.000000 -0.000000 0.369565 0.000000 +0.000000 -1.000000 -0.000000 0.326087 0.000000 +-0.103114 -0.965926 -0.237392 0.304348 0.083333 +-0.103114 0.965926 -0.237392 0.304348 0.916667 +-0.199200 0.866025 -0.458606 0.304348 0.833333 +-0.345025 -0.500000 -0.794328 0.304348 0.333333 +-0.281712 -0.707107 -0.648566 0.304348 0.250000 +-0.384826 0.258819 -0.885958 0.304348 0.583333 +-0.398401 -0.000000 -0.917211 0.304348 0.500000 +-0.281712 0.707107 -0.648566 0.304348 0.750000 +-0.199201 -0.866025 -0.458606 0.304348 0.166667 +-0.384826 -0.258819 -0.885958 0.304348 0.416667 +-0.345025 0.500000 -0.794328 0.304348 0.666667 +0.000000 1.000000 -0.000000 0.326087 1.000000 +-0.096284 0.707107 -0.700521 0.260870 0.750000 +-0.117924 0.500000 -0.857959 0.260870 0.666667 +-0.068083 -0.866025 -0.495343 0.260870 0.166667 +-0.035242 -0.965926 -0.256409 0.260870 0.083333 +0.000000 1.000000 -0.000000 0.282609 1.000000 +-0.035242 0.965926 -0.256409 0.260870 0.916667 +-0.131527 -0.258819 -0.956929 0.260870 0.416667 +-0.117924 -0.500000 -0.857959 0.260870 0.333333 +-0.131527 0.258819 -0.956929 0.260870 0.583333 +0.000000 -1.000000 -0.000000 0.282609 0.000000 +-0.068083 0.866025 -0.495343 0.260870 0.833333 +-0.096284 -0.707107 -0.700521 0.260870 0.250000 +-0.136166 -0.000000 -0.990686 0.260870 0.500000 +0.068083 0.866025 -0.495343 0.217391 0.833333 +0.096285 0.707107 -0.700521 0.217391 0.750000 +0.096285 -0.707107 -0.700521 0.217391 0.250000 +0.068083 -0.866025 -0.495343 0.217391 0.166667 +0.136167 -0.000000 -0.990686 0.217391 0.500000 +0.131527 -0.258819 -0.956929 0.217391 0.416667 +0.117924 0.500000 -0.857959 0.217391 0.666667 +0.035243 -0.965926 -0.256409 0.217391 0.083333 +0.000000 1.000000 -0.000000 0.239130 1.000000 +0.035243 0.965926 -0.256408 0.217391 0.916667 +0.117924 -0.500000 -0.857959 0.217391 0.333333 +0.131527 0.258819 -0.956929 0.217391 0.583333 +0.000000 -1.000000 -0.000000 0.239130 0.000000 +0.345026 0.500000 -0.794328 0.173913 0.666667 +0.384826 0.258819 -0.885958 0.173913 0.583333 +0.000000 -1.000000 -0.000000 0.195652 0.000000 +0.103114 -0.965926 -0.237392 0.173913 0.083333 +0.103114 0.965926 -0.237392 0.173913 0.916667 +0.199201 0.866025 -0.458606 0.173913 0.833333 +0.345026 -0.500000 -0.794328 0.173913 0.333333 +0.281712 -0.707107 -0.648566 0.173913 0.250000 +0.398401 -0.000000 -0.917211 0.173913 0.500000 +0.281712 0.707107 -0.648566 0.173913 0.750000 +0.199201 -0.866025 -0.458606 0.173913 0.166667 +0.384826 -0.258819 -0.885958 0.173913 0.416667 +0.000000 1.000000 -0.000000 0.195652 1.000000 +0.446247 0.707107 -0.548511 0.130435 0.750000 +0.546538 0.500000 -0.671786 0.130435 0.666667 +0.315544 -0.866025 -0.387856 0.130435 0.166667 +0.163338 -0.965926 -0.200769 0.130435 0.083333 +0.000000 1.000000 -0.000000 0.152174 1.000000 +0.163338 0.965926 -0.200769 0.130435 0.916667 +0.609584 -0.258819 -0.749279 0.130435 0.416667 +0.546538 -0.500000 -0.671786 0.130435 0.333333 +0.609584 0.258819 -0.749279 0.130435 0.583333 +0.000000 -1.000000 -0.000000 0.152174 0.000000 +0.315544 0.866025 -0.387856 0.130435 0.833333 +0.446247 -0.707107 -0.548511 0.130435 0.250000 +0.631088 -0.000000 -0.775711 0.130435 0.500000 +0.789132 0.258819 -0.557030 0.086957 0.583333 +0.816970 -0.000000 -0.576680 0.086957 0.500000 +0.408485 0.866025 -0.288340 0.086957 0.833333 +0.577685 0.707107 -0.407774 0.086957 0.750000 +0.577685 -0.707107 -0.407774 0.086957 0.250000 +0.408485 -0.866025 -0.288340 0.086957 0.166667 +0.789132 -0.258819 -0.557030 0.086957 0.416667 +0.707517 0.500000 -0.499420 0.086957 0.666667 +0.211448 -0.965926 -0.149256 0.086957 0.083333 +0.000000 1.000000 -0.000000 0.108696 1.000000 +0.211447 0.965926 -0.149256 0.086957 0.916667 +0.707517 -0.500000 -0.499420 0.086957 0.333333 +0.000000 -1.000000 -0.000000 0.108696 0.000000 +0.816022 0.500000 -0.290014 0.043478 0.666667 +0.910154 0.258819 -0.323469 0.043478 0.583333 +0.000000 -1.000000 -0.000000 0.065217 0.000000 +0.243875 -0.965926 -0.086673 0.043478 0.083333 +0.243875 0.965926 -0.086673 0.043478 0.916667 +0.471130 0.866025 -0.167440 0.043478 0.833333 +0.816022 -0.500000 -0.290014 0.043478 0.333333 +0.666279 -0.707107 -0.236795 0.043478 0.250000 +0.942261 -0.000000 -0.334879 0.043478 0.500000 +0.666279 0.707107 -0.236795 0.043478 0.750000 +0.471131 -0.866025 -0.167440 0.043478 0.166667 +0.910154 -0.258819 -0.323469 0.043478 0.416667 +0.000000 1.000000 -0.000000 0.065217 1.000000 +0.997669 -0.000000 -0.068242 0.000000 0.500000 +0.963674 -0.258819 -0.065917 0.000000 0.416667 +0.705458 0.707107 -0.048255 0.000000 0.750000 +0.864007 0.500000 -0.059099 0.000000 0.666667 +0.498834 -0.866025 -0.034121 0.000000 0.166667 +0.258216 -0.965926 -0.017662 0.000000 0.083333 +0.000000 1.000000 -0.000000 0.021739 1.000000 +0.258216 0.965926 -0.017662 0.000000 0.916667 +0.864006 -0.500000 -0.059099 0.000000 0.333333 +0.963674 0.258819 -0.065917 0.000000 0.583333 +0.000000 -1.000000 -0.000000 0.021739 0.000000 +0.498834 0.866025 -0.034121 0.000000 0.833333 +0.705458 -0.707107 -0.048255 0.000000 0.250000 +0.997669 -0.000000 -0.068242 1.000000 0.500000 +0.963674 0.258819 -0.065917 1.000000 0.583333 +0.945722 0.258819 0.196524 0.956522 0.583333 +0.979084 -0.000000 0.203456 0.956522 0.500000 +0.705458 0.707107 -0.048255 1.000000 0.750000 +0.498834 0.866025 -0.034121 1.000000 0.833333 +0.489542 0.866025 0.101728 0.956522 0.833333 +0.692317 0.707107 0.143865 0.956522 0.750000 +0.498834 -0.866025 -0.034121 1.000000 0.166667 +0.705458 -0.707107 -0.048255 1.000000 0.250000 +0.692317 -0.707107 0.143865 0.956522 0.250000 +0.489542 -0.866025 0.101728 0.956522 0.166667 +0.963674 -0.258819 -0.065917 1.000000 0.416667 +0.945722 -0.258819 0.196524 0.956522 0.416667 +0.864007 0.500000 -0.059099 1.000000 0.666667 +0.847912 0.500000 0.176198 0.956522 0.666667 +0.258216 -0.965926 -0.017662 1.000000 0.083333 +0.253406 -0.965926 0.052658 0.956522 0.083333 +0.258216 0.965926 -0.017662 1.000000 0.916667 +0.000000 1.000000 -0.000000 0.978261 1.000000 +0.253406 0.965926 0.052658 0.956522 0.916667 +0.864006 -0.500000 -0.059099 1.000000 0.333333 +0.847911 -0.500000 0.176198 0.956522 0.333333 +0.000000 -1.000000 -0.000000 0.978261 0.000000 +0.857631 -0.258819 0.444389 0.913043 0.416667 +0.768931 -0.500000 0.398428 0.913043 0.333333 +0.768931 0.500000 0.398428 0.913043 0.666667 +0.857631 0.258819 0.444389 0.913043 0.583333 +0.000000 -1.000000 -0.000000 0.934783 0.000000 +0.229802 -0.965926 0.119074 0.913043 0.083333 +0.229802 0.965926 0.119074 0.913043 0.916667 +0.443942 0.866025 0.230033 0.913043 0.833333 +0.627830 -0.707107 0.325315 0.913043 0.250000 +0.887885 -0.000000 0.460065 0.913043 0.500000 +0.627830 0.707107 0.325315 0.913043 0.750000 +0.443943 -0.866025 0.230033 0.913043 0.166667 +0.000000 1.000000 -0.000000 0.934783 1.000000 +0.730836 -0.000000 0.682553 0.869565 0.500000 +0.705933 -0.258819 0.659296 0.869565 0.416667 +0.516779 0.707107 0.482638 0.869565 0.750000 +0.632922 0.500000 0.591109 0.869565 0.666667 +0.365418 -0.866025 0.341277 0.869565 0.166667 +0.189154 -0.965926 0.176658 0.869565 0.083333 +0.000000 1.000000 -0.000000 0.891304 1.000000 +0.189154 0.965926 0.176658 0.869565 0.916667 +0.632922 -0.500000 0.591108 0.869565 0.333333 +0.705933 0.258819 0.659296 0.869565 0.583333 +0.000000 -1.000000 -0.000000 0.891304 0.000000 +0.365418 0.866025 0.341277 0.869565 0.833333 +0.516779 -0.707107 0.482638 0.869565 0.250000 +0.449973 -0.500000 0.739949 0.826087 0.333333 +0.367401 -0.707107 0.604166 0.826087 0.250000 +0.501879 0.258819 0.825306 0.826087 0.583333 +0.519583 -0.000000 0.854420 0.826087 0.500000 +0.259792 0.866025 0.427210 0.826087 0.833333 +0.367401 0.707107 0.604166 0.826087 0.750000 +0.259792 -0.866025 0.427210 0.826087 0.166667 +0.501879 -0.258819 0.825306 0.826087 0.416667 +0.449973 0.500000 0.739949 0.826087 0.666667 +0.134478 -0.965926 0.221140 0.826087 0.083333 +0.000000 1.000000 -0.000000 0.847826 1.000000 +0.134478 0.965926 0.221140 0.826087 0.916667 +0.000000 -1.000000 -0.000000 0.847826 0.000000 +0.000000 1.000000 -0.000000 0.804348 1.000000 +0.069828 0.965926 0.249221 0.782609 0.916667 +0.260603 -0.258819 0.930106 0.782609 0.416667 +0.233650 -0.500000 0.833911 0.782609 0.333333 +0.233650 0.500000 0.833911 0.782609 0.666667 +0.260603 0.258819 0.930106 0.782609 0.583333 +0.000000 -1.000000 -0.000000 0.804348 0.000000 +0.069828 -0.965926 0.249221 0.782609 0.083333 +0.134898 0.866025 0.481459 0.782609 0.833333 +0.190775 -0.707107 0.680885 0.782609 0.250000 +0.269796 -0.000000 0.962917 0.782609 0.500000 +0.190775 0.707107 0.680885 0.782609 0.750000 +0.134898 -0.866025 0.481459 0.782609 0.166667 +0.000000 1.000000 -0.000000 0.760870 1.000000 +0.000000 -1.000000 -0.000000 0.760870 0.000000 +4 0 1 2 3 +4 4 5 6 7 +4 8 9 10 11 +4 12 0 3 13 +4 14 4 7 15 +3 16 17 18 +4 19 8 11 20 +4 21 12 13 22 +3 23 14 15 +4 1 16 18 2 +4 5 19 20 6 +4 9 21 22 10 +4 20 11 24 25 +4 22 13 26 27 +3 28 15 29 +4 2 18 30 31 +4 6 20 25 32 +4 10 22 27 33 +4 3 2 31 34 +4 7 6 32 35 +4 11 10 33 24 +4 13 3 34 26 +4 15 7 35 29 +3 18 36 30 +4 24 33 37 38 +4 26 34 39 40 +4 29 35 41 42 +3 30 43 44 +4 25 24 38 45 +4 27 26 40 46 +3 47 29 42 +4 31 30 44 48 +4 32 25 45 49 +4 33 27 46 37 +4 34 31 48 39 +4 35 32 49 41 +4 49 45 50 51 +4 37 46 52 53 +4 39 48 54 55 +4 41 49 51 56 +4 38 37 53 57 +4 40 39 55 58 +4 42 41 56 59 +3 44 60 61 +4 45 38 57 50 +4 46 40 58 52 +3 62 42 59 +4 48 44 61 54 +3 61 63 64 +4 50 57 65 66 +4 52 58 67 68 +3 69 59 70 +4 54 61 64 71 +4 51 50 66 72 +4 53 52 68 73 +4 55 54 71 74 +4 56 51 72 75 +4 57 53 73 65 +4 58 55 74 67 +4 59 56 75 70 +4 75 72 76 77 +4 65 73 78 79 +4 67 74 80 81 +4 70 75 77 82 +3 64 83 84 +4 66 65 79 85 +4 68 67 81 86 +3 87 70 82 +4 71 64 84 88 +4 72 66 85 76 +4 73 68 86 78 +4 74 71 88 80 +4 88 84 89 90 +4 76 85 91 92 +4 78 86 93 94 +4 80 88 90 95 +4 77 76 92 96 +4 79 78 94 97 +4 81 80 95 98 +4 82 77 96 99 +3 84 100 89 +4 85 79 97 91 +4 86 81 98 93 +3 101 82 99 +4 99 96 102 103 +3 89 104 105 +4 91 97 106 107 +4 93 98 108 109 +3 110 99 103 +4 90 89 105 111 +4 92 91 107 112 +4 94 93 109 113 +4 95 90 111 114 +4 96 92 112 102 +4 97 94 113 106 +4 98 95 114 108 +4 114 111 115 116 +4 102 112 117 118 +4 106 113 119 120 +4 108 114 116 121 +4 103 102 118 122 +3 105 123 124 +4 107 106 120 125 +4 109 108 121 126 +3 127 103 122 +4 111 105 124 115 +4 112 107 125 117 +4 113 109 126 119 +3 128 122 129 +4 115 124 130 131 +4 117 125 132 133 +4 119 126 134 135 +4 116 115 131 136 +4 118 117 133 137 +4 120 119 135 138 +4 121 116 136 139 +4 122 118 137 129 +3 124 140 130 +4 125 120 138 132 +4 126 121 139 134 +4 139 136 141 142 +4 129 137 143 144 +3 130 145 146 +4 132 138 147 148 +4 134 139 142 149 +3 150 129 144 +4 131 130 146 151 +4 133 132 148 152 +4 135 134 149 153 +4 136 131 151 141 +4 137 133 152 143 +4 138 135 153 147 +4 141 151 154 155 +4 143 152 156 157 +4 147 153 158 159 +4 142 141 155 160 +4 144 143 157 161 +3 146 162 163 +4 148 147 159 164 +4 149 142 160 165 +3 166 144 161 +4 151 146 163 154 +4 152 148 164 156 +4 153 149 165 158 +4 165 160 167 168 +3 169 161 170 +4 154 163 171 172 +4 156 164 173 174 +4 158 165 168 175 +4 155 154 172 176 +4 157 156 174 177 +4 159 158 175 178 +4 160 155 176 167 +4 161 157 177 170 +3 163 179 171 +4 164 159 178 173 +4 167 176 180 181 +4 170 177 182 183 +3 171 184 185 +4 173 178 186 187 +4 168 167 181 188 +3 189 170 183 +4 172 171 185 190 +4 174 173 187 191 +4 175 168 188 192 +4 176 172 190 180 +4 177 174 191 182 +4 178 175 192 186 +4 192 188 193 194 +4 180 190 195 196 +4 182 191 197 198 +4 186 192 194 199 +4 181 180 196 200 +4 183 182 198 201 +3 185 202 203 +4 187 186 199 204 +4 188 181 200 193 +3 205 183 201 +4 190 185 203 195 +4 191 187 204 197 +4 193 200 206 207 +3 208 201 209 +4 195 203 210 211 +4 197 204 212 213 +4 194 193 207 214 +4 196 195 211 215 +4 198 197 213 216 +4 199 194 214 217 +4 200 196 215 206 +4 201 198 216 209 +3 203 218 210 +4 204 199 217 212 +4 217 214 219 220 +4 206 215 221 222 +4 209 216 223 224 +3 210 225 226 +4 212 217 220 227 +4 207 206 222 228 +3 229 209 224 +4 211 210 226 230 +4 213 212 227 231 +4 214 207 228 219 +4 215 211 230 221 +4 216 213 231 223 +4 232 233 234 235 +4 236 237 238 239 +4 240 241 242 243 +4 244 232 235 245 +4 246 236 239 247 +4 248 240 243 249 +3 250 251 252 +4 253 244 245 254 +4 233 246 247 234 +3 255 248 249 +4 237 250 252 238 +4 241 253 254 242 +4 254 245 256 257 +4 234 247 258 259 +3 260 249 261 +4 238 252 262 263 +4 242 254 257 264 +4 235 234 259 265 +4 239 238 263 266 +4 243 242 264 267 +4 245 235 265 256 +4 247 239 266 258 +4 249 243 267 261 +3 252 268 262 +4 256 265 269 270 +4 258 266 271 272 +4 261 267 273 274 +3 262 275 276 +4 257 256 270 277 +4 259 258 272 278 +3 279 261 274 +4 263 262 276 280 +4 264 257 277 281 +4 265 259 278 269 +4 266 263 280 271 +4 267 264 281 273 +4 281 277 282 283 +4 269 278 284 285 +4 271 280 286 287 +4 273 281 283 288 +4 270 269 285 289 +4 272 271 287 290 +4 274 273 288 291 +3 276 292 293 +4 277 270 289 282 +4 278 272 290 284 +3 294 274 291 +4 280 276 293 286 +3 293 295 296 +4 282 289 297 298 +4 284 290 299 300 +3 301 291 302 +4 286 293 296 303 +4 283 282 298 304 +4 285 284 300 305 +4 287 286 303 306 +4 288 283 304 307 +4 289 285 305 297 +4 290 287 306 299 +4 291 288 307 302 +4 307 304 5 4 +4 297 305 9 8 +4 299 306 0 12 +4 302 307 4 14 +3 296 308 16 +4 298 297 8 19 +4 300 299 12 21 +3 309 302 14 +4 303 296 16 1 +4 304 298 19 5 +4 305 300 21 9 +4 306 303 1 0 diff --git a/shaders/normal.comp b/shaders/normal.comp index 9bb7901..17aea95 100644 --- a/shaders/normal.comp +++ b/shaders/normal.comp @@ -3,85 +3,88 @@ layout (local_size_x = 32) in; struct Vertex { - vec3 position; - vec3 color; - uvec3 normal; + vec3 position; + vec3 color; + uvec3 normal; + vec3 velocity; + vec3 prevPosition; + float invM; }; struct Face { - uint a; - uint b; - uint c; + uint a; + uint b; + uint c; }; layout (std430, set = 0, binding = 0) buffer VertexBuffer { - Vertex vertices[]; + Vertex vertices[]; }; layout (std430, set = 0, binding = 1) buffer FaceBuffer { - Face faces[]; + Face faces[]; }; layout (std140, set = 0, binding = 5) uniform Sizes { - uint vertexCount; - uint faceCount; + uint vertexCount; + uint faceCount; }; layout (push_constant) uniform PushConstants { - uint state; + uint state; }; void atomicAddVec3(uint vID, vec3 add){ - for (int i = 0; i < 3; i++) { - uint expected_memory = vertices[vID].normal[i]; - float floatInput = uintBitsToFloat(vertices[vID].normal[i]) + add[i]; - uint actual_content = atomicCompSwap(vertices[vID].normal[i], expected_memory, floatBitsToUint(floatInput)); - while (actual_content != expected_memory) { - expected_memory = actual_content; - floatInput = uintBitsToFloat(expected_memory) + add[i]; - actual_content = atomicCompSwap(vertices[vID].normal[i], expected_memory, floatBitsToUint(floatInput)); - } - } + for (int i = 0; i < 3; i++) { + uint expected_memory = vertices[vID].normal[i]; + float floatInput = uintBitsToFloat(vertices[vID].normal[i]) + add[i]; + uint actual_content = atomicCompSwap(vertices[vID].normal[i], expected_memory, floatBitsToUint(floatInput)); + while (actual_content != expected_memory) { + expected_memory = actual_content; + floatInput = uintBitsToFloat(expected_memory) + add[i]; + actual_content = atomicCompSwap(vertices[vID].normal[i], expected_memory, floatBitsToUint(floatInput)); + } + } } void reset(uint vID){ - vertices[vID].normal = floatBitsToUint(vec3(0, 0, 0)); + vertices[vID].normal = floatBitsToUint(vec3(0, 0, 0)); } void accumulate(uint fID){ - Face f = faces[fID]; + Face f = faces[fID]; - Vertex v1 = vertices[f.a]; - Vertex v2 = vertices[f.b]; - Vertex v3 = vertices[f.c]; + Vertex v1 = vertices[f.a]; + Vertex v2 = vertices[f.b]; + Vertex v3 = vertices[f.c]; - vec3 weightedNormal = cross(v3.position - v1.position, v2.position - v1.position); - atomicAddVec3(f.a, weightedNormal); - atomicAddVec3(f.b, weightedNormal); - atomicAddVec3(f.c, weightedNormal); + vec3 weightedNormal = cross(v3.position - v1.position, v2.position - v1.position); + atomicAddVec3(f.a, weightedNormal); + atomicAddVec3(f.b, weightedNormal); + atomicAddVec3(f.c, weightedNormal); } void norm(uint vID){ - vertices[vID].normal = floatBitsToUint(normalize(uintBitsToFloat(vertices[vID].normal))); + vertices[vID].normal = floatBitsToUint(normalize(uintBitsToFloat(vertices[vID].normal))); } void main() { - uint id = gl_GlobalInvocationID.x; - switch (state){ - case 0: - if (id < vertexCount){ - reset(id); - } - break; - case 1: - if (id < faceCount){ - accumulate(id); - } - break; - case 2: - if (id < vertexCount){ - norm(id); - } - break; - } + uint id = gl_GlobalInvocationID.x; + switch (state){ + case 0: + if (id < vertexCount){ + reset(id); + } + break; + case 1: + if (id < faceCount){ + accumulate(id); + } + break; + case 2: + if (id < vertexCount){ + norm(id); + } + break; + } } \ No newline at end of file diff --git a/shaders/pbd.comp b/shaders/pbd.comp index 5296486..1dec462 100644 --- a/shaders/pbd.comp +++ b/shaders/pbd.comp @@ -3,61 +3,110 @@ layout (local_size_x = 32) in; struct Vertex { - vec3 position; - vec3 color; - vec3 normal; + vec3 position; + vec3 color; + vec3 normal; + vec3 velocity; + vec3 prevPosition; + float w; }; struct Edge { - uint a; - uint b; + uint a; + uint b; + float restLength; }; + layout (std430, set = 0, binding = 0) buffer VertexBuffer { - Vertex vertices[]; + Vertex vertices[]; }; layout (std430, set = 0, binding = 2) buffer EdgeBuffer { - Edge edges[]; + Edge edges[]; }; layout (std140, set = 0, binding = 5) uniform Sizes { - uint vertexCount; - uint faceCount; + uint vertexCount; + uint faceCount; +}; + +layout (std140, set = 1, binding = 0) uniform Properties { + vec3 gravity; + float dt; + uint k; }; -layout (std140, set = 1, binding = 0) uniform UBO { - float dt; - vec3 gravity; +struct Partition { + uint offset; + uint size; }; -layout (push_constant) uniform PushConstants { - uint state; - int vertexOffset; +layout (push_constant, std430) uniform PushConstants { + uint state; + Partition edgePartition; + Partition tetrahedronPartition; }; void preSolve(uint vID){ - vertices[vID].position += vec3(0.0001, 0, 0); + vertices[vID].prevPosition = vertices[vID].position; + // vertices[vID].velocity += dt * gravity; + vertices[vID].position += dt * vertices[vID].velocity; +} + +void solveEdge(uint eID){ + Edge e = edges[eID]; + + Vertex v1 = vertices[e.a]; + Vertex v2 = vertices[e.b]; + + vec3 diff = v1.position - v2.position; + float currentLength = length(diff); + + float alpha = 0.0001 / (dt * dt); + + float s = (currentLength - e.restLength) / (1 + 1 + alpha); + + vec3 g1 = normalize(diff); + vec3 g2 = -g1; + + vec3 delta1 = -s * 1 * g1; + vec3 delta2 = -s * 1 * g2; + + vertices[e.a].position += delta1; + vertices[e.b].position += delta2; +} + +void solveTetrahedron(uint tetID){ + } void postSolve(uint vID){ - vertices[vID].position += vec3(0, 0.0001, 0); + vertices[vID].velocity = (vertices[vID].position - vertices[vID].prevPosition) / dt; } void main() { - uint id = gl_GlobalInvocationID.x; - switch (state){ - case 0: - if (id < vertexCount){ - preSolve(id); - } - break; - case 2: - if (id < vertexCount){ - postSolve(id); - } - break; - } + uint id = gl_GlobalInvocationID.x; + switch (state){ + case 0: + if (id < vertexCount){ + preSolve(id); + } + break; + case 1: + if (id < edgePartition.size){ + solveEdge(id + edgePartition.offset); + } + if (id < tetrahedronPartition.size){ + solveTetrahedron(id + tetrahedronPartition.offset); + } + break; + case 2: + if (id < vertexCount){ + postSolve(id); + } + break; + } } \ No newline at end of file diff --git a/src/constraints.cpp b/src/constraints.cpp index de9a90d..fb80a56 100644 --- a/src/constraints.cpp +++ b/src/constraints.cpp @@ -1 +1,23 @@ -#include "constraints.hpp" \ No newline at end of file +#include "constraints.hpp" + +void ConstraintData::recordNewPartition() { + prePartitionEdgeCount = edges.size(); + prePartitionTetrahedronCount = tetrahedra.size(); +} + +void ConstraintData::writePartitionInformation() { + edgePartitions.emplace_back(prePartitionEdgeCount, edges.size() - prePartitionEdgeCount); + tetrahedronPartitions.emplace_back(prePartitionTetrahedronCount, tetrahedra.size() - prePartitionTetrahedronCount); +} + +void DistanceConstraint::writeData(ConstraintData &dataLists) const { + dataLists.edges.push_back(Edge(a, b, length)); +} + +void AreaConstraint::writeData(ConstraintData &dataLists) const { + dataLists.triangles.push_back(Triangle(Face(a, b, c), area)); +} + +void VolumeConstraint::writeData(ConstraintData &dataLists) const { + dataLists.tetrahedra.push_back(Tetrahedron(a, b, c, d, volume)); +} diff --git a/src/simulation.cpp b/src/simulation.cpp index c8d16f5..8df125e 100644 --- a/src/simulation.cpp +++ b/src/simulation.cpp @@ -12,14 +12,6 @@ Simulation::Simulation() { createMeshBuffers(); - struct SizeInformation { - uint32_t vertexCount; - uint32_t faceCount; - - uint32_t edgeCount; - uint32_t triangleCount; - uint32_t tetrahedronCount; - }; SizeInformation sizeInformation {}; sizeInformation.vertexCount = vertexBuffer->size / sizeof(Vertex); sizeInformation.faceCount = faceBuffer->size / sizeof(Face); @@ -29,6 +21,15 @@ Simulation::Simulation() { VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE, 0); + properties.gravity = {0, -9.81, 0}; + properties.k = 10; + properties.dt = 1.f / 144.f / static_cast(properties.k); + + propertiesBuffer = make_unique( + sizeof(Properties), &properties, sizeof(properties), + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, + VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE, 0); + descriptorPool->bindBuffer(*vertexBuffer, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, DescriptorSet::MESH, 0); descriptorPool->bindBuffer(*faceBuffer, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, DescriptorSet::MESH, 1); descriptorPool->bindBuffer(*edgeBuffer, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, DescriptorSet::MESH, 2); @@ -36,6 +37,8 @@ Simulation::Simulation() { descriptorPool->bindBuffer(*tetrahedronBuffer, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, DescriptorSet::MESH, 4); descriptorPool->bindBuffer(*sizeInformationBuffer, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, DescriptorSet::MESH, 5); + descriptorPool->bindBuffer(*propertiesBuffer, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, DescriptorSet::SIMULATION, 0); + createComputePipelines(); char* stats; @@ -45,8 +48,8 @@ Simulation::Simulation() { } void Simulation::createMeshBuffers() { - Mesh sphere("models/sphere_high.ply"); - Mesh bunny("models/bunny_high.ply"); + Mesh sphere("models/sphere_medium.ply"); + Mesh bunny("models/bunny_medium.ply"); auto body = std::make_unique(&sphere, 0.3f); @@ -64,40 +67,79 @@ void Simulation::createMeshBuffers() { } vector vertices; - vector edges; - vector triangles; vector faces; - vector tetrahedra; - for (std::unique_ptr &softBody : softBodies){ - softBody->firstIndex = faces.size() * 3; - softBody->vertexOffset = static_cast(vertices.size()); + for (std::unique_ptr ¤tSoftBody : softBodies){ + currentSoftBody->firstIndex = faces.size() * 3; + currentSoftBody->vertexOffset = static_cast(vertices.size()); + + int32_t vertexOffset = currentSoftBody->vertexOffset; - int32_t off = softBody->vertexOffset; + for (auto &face : currentSoftBody->faces){ + face.a += vertexOffset; + face.b += vertexOffset; + face.c += vertexOffset; + } - for (auto &edge : softBody->edges){ - edge.a += off; - edge.b += off; + for (auto &edge : currentSoftBody->constraintData.edges){ + edge.a += vertexOffset; + edge.b += vertexOffset; } - for (auto &face : softBody->faces){ - face.a += off; - face.b += off; - face.c += off; + for (auto &triangle : currentSoftBody->constraintData.triangles){ + triangle.a += vertexOffset; + triangle.b += vertexOffset; + triangle.c += vertexOffset; } - for (auto &tetrahedron : softBody->tetrahedra){ - tetrahedron.a += off; - tetrahedron.b += off; - tetrahedron.c += off; - tetrahedron.d += off; + for (auto &tetrahedron : currentSoftBody->constraintData.tetrahedra){ + tetrahedron.a += vertexOffset; + tetrahedron.b += vertexOffset; + tetrahedron.c += vertexOffset; + tetrahedron.d += vertexOffset; } - vertices.insert(vertices.end(), softBody->vertices.begin(), softBody->vertices.end()); - edges.insert(edges.end(), softBody->edges.begin(), softBody->edges.end()); - triangles.insert(triangles.end(), softBody->triangles.begin(), softBody->triangles.end()); - faces.insert(faces.end(), softBody->faces.begin(), softBody->faces.end()); - tetrahedra.insert(tetrahedra.end(), softBody->tetrahedra.begin(), softBody->tetrahedra.end()); + vertices.insert(vertices.end(), currentSoftBody->vertices.begin(), currentSoftBody->vertices.end()); + faces.insert(faces.end(), currentSoftBody->faces.begin(), currentSoftBody->faces.end()); + + constraintData.partitionCount = std::max(constraintData.partitionCount, currentSoftBody->constraintData.partitionCount); + + auto combine = [¤tSoftBody, this] ( + auto &globalIndices, auto &bodyIndices, + vector &globalPartitions, vector &bodyPartitions){ + if (globalPartitions.size() < currentSoftBody->constraintData.partitionCount) + globalPartitions.resize(currentSoftBody->constraintData.partitionCount); + + uint32_t offsetAdded = 0; + + for (uint32_t partition = 0; partition < constraintData.partitionCount; partition++){ + + ConstraintData::Partition &globalPartition = globalPartitions[partition]; + globalPartition.offset += offsetAdded; + + if (partition < bodyPartitions.size()){ + const ConstraintData::Partition &bodyPartition = bodyPartitions[partition]; + + auto dst = globalIndices.begin() + globalPartition.offset; + auto srcStart = bodyIndices.begin() + bodyPartition.offset; + uint32_t count = bodyPartition.size; + globalIndices.insert(dst, srcStart, srcStart + count); + + globalPartition.size += count; + + offsetAdded += count; + } + } + }; + + combine(constraintData.edges, currentSoftBody->constraintData.edges, + constraintData.edgePartitions, currentSoftBody->constraintData.edgePartitions); + + combine(constraintData.tetrahedra, currentSoftBody->constraintData.tetrahedra, + constraintData.tetrahedronPartitions, currentSoftBody->constraintData.tetrahedronPartitions); + + constraintData.triangles.insert(constraintData.triangles.end(), currentSoftBody->constraintData.triangles.begin(), currentSoftBody->constraintData.triangles.end()); + constraintData.tetrahedra.insert(constraintData.tetrahedra.end(), currentSoftBody->constraintData.tetrahedra.begin(), currentSoftBody->constraintData.tetrahedra.end()); } class SimulationBuffer : public Buffer { @@ -106,11 +148,13 @@ void Simulation::createMeshBuffers() { : Buffer(size, data, size, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | additionalUsageFlags, VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE, 0) {} }; + vertices[0].position += glm::vec3(0, 0.2, 0); + vertexBuffer = make_unique(vertices.data(), vertices.size() * sizeof(Vertex), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT); faceBuffer = make_unique(faces.data(), faces.size() * sizeof(Face), VK_BUFFER_USAGE_INDEX_BUFFER_BIT); - edgeBuffer = make_unique(edges.data(), edges.size() * sizeof(Edge)); - triangleBuffer = make_unique(triangles.data(), triangles.size() * sizeof(Triangle)); - tetrahedronBuffer = make_unique(tetrahedra.data(), tetrahedra.size() * sizeof(Tetrahedron)); + edgeBuffer = make_unique(constraintData.edges.data(), constraintData.edges.size() * sizeof(Edge)); + triangleBuffer = make_unique(constraintData.triangles.data(), constraintData.triangles.size() * sizeof(Triangle)); + tetrahedronBuffer = make_unique(constraintData.tetrahedra.data(), constraintData.tetrahedra.size() * sizeof(Tetrahedron)); } void Simulation::recordDrawCommands() { @@ -144,25 +188,38 @@ void Simulation::recordComputeCommands(VkCommandBuffer cmdBuffer) { vkCmdBindPipeline(cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, pbdPipeline->handle); vkCmdBindDescriptorSets(cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, pbdPipeline->layout, 0, 1, &descriptorPool->sets[DescriptorSet::MESH], 0, nullptr); + vkCmdBindDescriptorSets(cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, pbdPipeline->layout, 1, 1, &descriptorPool->sets[DescriptorSet::SIMULATION], 0, nullptr); uint32_t state; - size_t subSteps = 10; - - for (size_t i = 0; i < subSteps; i++){ + for (size_t i = 0; i < properties.k; i++){ state = 0; vkCmdPushConstants(cmdBuffer, pbdPipeline->layout, VK_SHADER_STAGE_COMPUTE_BIT, 0, sizeof(uint32_t), &state); vkCmdDispatch(cmdBuffer, vertexGroupCount, 1, 1); vkCmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, 0, 1, &barrier, 0, nullptr, 0, nullptr); - /* - uint32_t partitionCount = 1; - for (uint32_t partition = 0; partition < partitionCount; partition++){ - uint32_t partitionSize = 1; - vkCmdDispatch(cmdBuffer, partitionSize, 1, 1); + state = 1; + vkCmdPushConstants(cmdBuffer, pbdPipeline->layout, VK_SHADER_STAGE_COMPUTE_BIT, 0, sizeof(uint32_t), &state); + + for (uint32_t partition = 0; partition < constraintData.partitionCount; partition++){ + auto edgePartition = constraintData.edgePartitions[partition]; + auto tetrahedronPartition = constraintData.tetrahedronPartitions[partition]; + + if (edgePartition.size == 0 && tetrahedronPartition.size == 0) + continue; + + ConstraintData::Partition partitions[2] = {edgePartition, tetrahedronPartition}; + + vkCmdPushConstants(cmdBuffer, pbdPipeline->layout, VK_SHADER_STAGE_COMPUTE_BIT, + offsetof(PBDPushData, edgePartition), + sizeof(partitions), partitions); + + uint32_t invocations = getGroupCount(std::max(edgePartition.size, tetrahedronPartition.size), BlOCK_SIZE); + vkCmdDispatch(cmdBuffer, invocations, 1, 1); + vkCmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, 0, 1, &barrier, 0, nullptr, 0, nullptr); } - */ + state = 2; vkCmdPushConstants(cmdBuffer, pbdPipeline->layout, VK_SHADER_STAGE_COMPUTE_BIT, 0, sizeof(uint32_t), &state); vkCmdDispatch(cmdBuffer, vertexGroupCount, 1, 1); @@ -195,10 +252,11 @@ void Simulation::createComputePipelines() { { layouts.push_back(descriptorPool->layouts[DescriptorSet::MESH]); + layouts.push_back(descriptorPool->layouts[DescriptorSet::SIMULATION]); pushRanges.push_back({ .stageFlags = VK_SHADER_STAGE_COMPUTE_BIT, .offset = 0, - .size = 2 * sizeof(uint32_t) + .size = sizeof(PBDPushData) }); pbdPipeline = unique_ptr(new ComputePipeline("shaders/pbd.spv", layouts, pushRanges)); } diff --git a/src/soft_body.cpp b/src/soft_body.cpp index 16425f8..86150a6 100644 --- a/src/soft_body.cpp +++ b/src/soft_body.cpp @@ -3,10 +3,13 @@ #include "mesh.hpp" #include "constraints.hpp" #include "tetgen.h" +#include "timer.hpp" +#include +#include SoftBody::SoftBody(Mesh* mesh, float compliance) : compliance(compliance) { tetgenbehavior behavior; - behavior.parse_commandline(std::string("pYa0.01Qfez").data()); + behavior.parse_commandline(std::string("pYa0.001Qfez").data()); tetgenio in; in.numberofpoints = static_cast(mesh->vertices.size()); @@ -57,34 +60,35 @@ SoftBody::SoftBody(Mesh* mesh, float compliance) : compliance(compliance) { } faces.reserve(out.numberoftrifaces); - triangles.reserve(out.numberoftrifaces); + constraintData.triangles.reserve(out.numberoftrifaces); for (size_t i = 0; i < out.numberoftrifaces; i++){ uint32_t a = out.trifacelist[i * 3 + 0]; uint32_t b = out.trifacelist[i * 3 + 1]; uint32_t c = out.trifacelist[i * 3 + 2]; if (out.trifacemarkerlist[i] != 0) faces.emplace_back(Face(a, b, c)); - triangles.emplace_back(Triangle(Face(a, b, c))); + constraintData.triangles.emplace_back(Triangle(Face(a, b, c), 0)); } faces.shrink_to_fit(); - edges.reserve(out.numberofedges); + constraintData.edges.reserve(out.numberofedges); for (size_t i = 0; i < out.numberofedges; i++) { uint32_t a = out.edgelist[i * 2 + 0]; uint32_t b = out.edgelist[i * 2 + 1]; float length = glm::length(vertices[a].position - vertices[b].position); - edges.emplace_back(Edge(a, b, length)); + constraintData.edges.emplace_back(Edge(a, b, length)); } - tetrahedra.reserve(out.numberoftetrahedra); + constraintData.tetrahedra.reserve(out.numberoftetrahedra); for (size_t i = 0; i < out.numberoftetrahedra; i++){ uint32_t a = out.tetrahedronlist[i * 4 + 0]; uint32_t b = out.tetrahedronlist[i * 4 + 1]; uint32_t c = out.tetrahedronlist[i * 4 + 2]; uint32_t d = out.tetrahedronlist[i * 4 + 3]; - tetrahedra.emplace_back(Tetrahedron(a, b, c, d)); + constraintData.tetrahedra.emplace_back(Tetrahedron(a, b, c, d, 0)); } + splitConstraints(); } void SoftBody::applyVertexOffset(const glm::vec3 &offset) { @@ -93,6 +97,116 @@ void SoftBody::applyVertexOffset(const glm::vec3 &offset) { } } -void SoftBody::applyIndexOffset(int32_t offset) { +vector> createPartitions(const Graph &graph){ + unordered_map constraintToColor; + vector> colorToConstraintList; + for (const auto& [constraint, adjacentList] : graph){ + + unordered_set forbiddenColors; + for (auto adjacent : adjacentList) + if (constraintToColor.contains(adjacent)) + forbiddenColors.insert(constraintToColor.at(adjacent)); + + uint32_t assignColor; + if (forbiddenColors.size() == colorToConstraintList.size()) { + assignColor = forbiddenColors.size(); + colorToConstraintList.emplace_back(); + } else { + uint32_t minColor; + uint32_t minColorUseCount = UINT32_MAX; + for (uint32_t color = 0; color < colorToConstraintList.size(); color++){ + if (colorToConstraintList[color].size() < minColorUseCount && !forbiddenColors.contains(color)){ + minColorUseCount = colorToConstraintList[color].size(); + minColor = color; + } + } + assignColor = minColor; + } + + constraintToColor[constraint] = assignColor; + colorToConstraintList[assignColor].insert(constraint); + } + + return colorToConstraintList; +} + +void SoftBody::splitConstraints() { + omp_set_num_threads(omp_get_num_procs() - 2); + + unordered_map> pointToConstraints; + + vector lengthConstraints; + vector volumeConstraints; + lengthConstraints.reserve(constraintData.edges.size()); + volumeConstraints.reserve(constraintData.tetrahedra.size()); + + for (const Edge &edge : constraintData.edges) + lengthConstraints.push_back(DistanceConstraint(edge)); + for (const Tetrahedron &tetrahedron : constraintData.tetrahedra) + volumeConstraints.push_back(VolumeConstraint(tetrahedron)); + + for (const DistanceConstraint &distanceConstraint : lengthConstraints){ + pointToConstraints[distanceConstraint.a].push_back(&distanceConstraint); + pointToConstraints[distanceConstraint.b].push_back(&distanceConstraint); + } + + for (const VolumeConstraint &volumeConstraint : volumeConstraints){ + pointToConstraints[volumeConstraint.a].push_back(&volumeConstraint); + pointToConstraints[volumeConstraint.b].push_back(&volumeConstraint); + pointToConstraints[volumeConstraint.c].push_back(&volumeConstraint); + pointToConstraints[volumeConstraint.d].push_back(&volumeConstraint); + } + + Graph graph; + + auto setNeighbors = [&pointToConstraints, &graph](const Constraint * constraint, const vector &vIDs){ + unordered_set neighbors; + for (uint32_t vID : vIDs) + neighbors.insert(pointToConstraints[vID].begin(), pointToConstraints[vID].end()); + neighbors.erase(constraint); + #pragma omp critical + graph[constraint].insert(graph[constraint].end(), neighbors.begin(), neighbors.end()); + }; + + #pragma omp parallel for default(none) shared(setNeighbors, lengthConstraints) + for (const DistanceConstraint &distanceConstraint : lengthConstraints){ + setNeighbors(&distanceConstraint, { + distanceConstraint.a, + distanceConstraint.b + }); + } + + #pragma omp parallel for default(none) shared(setNeighbors, volumeConstraints) + for (const VolumeConstraint &volumeConstraint : volumeConstraints){ + setNeighbors(&volumeConstraint, { + volumeConstraint.a, + volumeConstraint.b, + volumeConstraint.c, + volumeConstraint.d, + }); + } + + vector> partitions = createPartitions(graph); + constraintData.partitionCount = partitions.size(); + + reorderConstraintIndices(partitions); +} + +void SoftBody::reorderConstraintIndices(const vector> &partitions) { + ConstraintData reordered; + for (uint32_t partition = 0; partition < partitions.size(); partition++){ + reordered.recordNewPartition(); + for (const Constraint * constraint : partitions[partition]) + constraint->writeData(reordered); + reordered.writePartitionInformation(); + } + std::swap(reordered.edgePartitions, constraintData.edgePartitions); + std::swap(reordered.tetrahedronPartitions, constraintData.tetrahedronPartitions); + std::swap(reordered.edges, constraintData.edges); + std::swap(reordered.tetrahedra, constraintData.tetrahedra); + //std::swap(reordered, constraintData); + //reordered.triangles.swap(constraintData.triangles); + //reordered.tetrahedra.swap(constraintData.tetrahedra); + //std::swap(reordered.partitionCount, constraintData.partitionCount); } diff --git a/src/vulkan/descriptor_pool.cpp b/src/vulkan/descriptor_pool.cpp index 714ad8e..12178fa 100644 --- a/src/vulkan/descriptor_pool.cpp +++ b/src/vulkan/descriptor_pool.cpp @@ -49,7 +49,7 @@ DescriptorPool::DescriptorPool() { // sizes addBinding(DescriptorSet::MESH, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, VK_SHADER_STAGE_COMPUTE_BIT); - // dt + // simulation properties addBinding(DescriptorSet::SIMULATION, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, VK_SHADER_STAGE_COMPUTE_BIT); for (const auto &[set, bindings] : setBindings)