diff --git a/CHANGES b/CHANGES new file mode 100644 index 0000000000..f538787744 --- /dev/null +++ b/CHANGES @@ -0,0 +1,1969 @@ +------------------------------------------------------------------------ +The list of most significant changes made over time in +Intel(R) Threading Building Blocks (Intel(R) TBB). + +Intel TBB 4.4 +TBB_INTERFACE_VERSION == 9000 + +- The following features are now fully supported: + tbb::flow::composite_node; + additional policies of tbb::flow::graph_node::reset(). +- Platform abstraction layer for Windows* OS updated to use compiler + intrinsics for most atomic operations. +- The tbb/compat/thread header updated to automatically include + C++11 where available. +- Fixes and refactoring in the task scheduler and class task_arena. +- Added key_matching policy to tbb::flow::join_node, which removes + the restriction on the type that can be compared-against. +- For tag_matching join_node, tag_value is redefined to be 64 bits + wide on all architectures. +- Expanded the documentation for the flow graph with details about + node semantics and behavior. +- Added dynamic replacement of C11 standard function aligned_alloc() + under Linux* OS. +- Added C++11 move constructors and assignment operators to + tbb::enumerable_thread_specific container. +- Added hashing support for tbb::tbb_thread::id. +- On OS X*, binaries that depend on libstdc++ are not provided anymore. + In the makefiles, libc++ is now used by default; for building with + libstdc++, specify stdlib=libstdc++ in the make command line. + +Preview Features: + +- Added a new example, graph/fgbzip2, that shows usage of + tbb::flow::async_node. +- Modification to the low-level API for memory pools: + added a function for finding a memory pool by an object allocated + from that pool. +- tbb::memory_pool now does not request memory till the first allocation + from the pool. + +Changes affecting backward compatibility: + +- Internal layout of flow graph nodes has changed; recompilation is + recommended for all binaries that use the flow graph. +- Resetting a tbb::flow::source_node will immediately activate it, + unless it was created in inactive state. + +Bugs fixed: + +- Failure at creation of a memory pool will not cause process + termination anymore. + +Open-source contributions integrated: + +- Supported building TBB with Clang on AArch64 with use of built-in + intrinsics by David A. + +------------------------------------------------------------------------ +Intel TBB 4.3 Update 6 +TBB_INTERFACE_VERSION == 8006 + +Changes (w.r.t. Intel TBB 4.3 Update 5): +- Supported zero-copy realloc for objects >1MB under Linux* via + mremap system call. +- C++11 move-aware insert and emplace methods have been added to + concurrent_hash_map container. +- install_name is set to @rpath/ on OS X*. + +Preview Features: +- Added template class async_node to the flow graph API. It allows a + flow graph to communicate with an external activity managed by + the user or another runtime. +- Improved speed of flow::graph::reset() clearing graph edges. + rf_extract flag has been renamed rf_clear_edges. +- extract() method of graph nodes now takes no arguments. + +Bugs fixed: +- concurrent_unordered_{set,map} behaves correctly for degenerate + hashes. +- Fixed a race condition in the memory allocator that may lead to + excessive memory consumption under high multithreading load. + +------------------------------------------------------------------------ +Intel TBB 4.3 Update 5 +TBB_INTERFACE_VERSION == 8005 + +Changes (w.r.t. Intel TBB 4.3 Update 4): +- Added add_ref_count() method of class tbb::task. + +Preview Features: +- Added class global_control for application-wide control of allowed + parallelism and thread stack size. +- memory_pool_allocator now throws the std::bad_alloc exception on + allocation failure. +- Exceptions thrown for by memory pool constructors changed from + std::bad_alloc to std::invalid_argument and std::runtime_error. + +Bugs fixed: +- scalable_allocator now throws the std::bad_alloc exception on + allocation failure. +- Fixed a race condition in the memory allocator that may lead to + excessive memory consumption under high multithreading load. +- A new scheduler created right after destruction of the previous one + might be unable to modify the number of worker threads. + +Open-source contributions integrated: +- (Added but not enabled) push_front() method of class tbb::task_list + by Raf Schietekat. + +------------------------------------------------------------------------ +Intel TBB 4.3 Update 4 +TBB_INTERFACE_VERSION == 8004 + +Changes (w.r.t. Intel TBB 4.3 Update 3): +- Added a C++11 variadic constructor for enumerable_thread_specific. + The arguments from this constructor are used to construct + thread-local values. +- Improved exception safety for enumerable_thread_specific. +- Added documentation for tbb::flow::tagged_msg class and + tbb::flow::output_port function. +- Fixed build errors for systems that do not support dynamic linking. +- C++11 move-aware insert and emplace methods have been added to + concurrent unordered containers. + +Preview Features: +- Interface-breaking change: typedefs changed for node predecessor and + successor lists, affecting copy_predecessors and copy_successors + methods. +- Added template class composite_node to the flow graph API. It packages + a subgraph to represent it as a first-class flow graph node. +- make_edge and remove_edge now accept multiport nodes as arguments, + automatically using the node port with index 0 for an edge. + +Open-source contributions integrated: +- Draft code for enumerable_thread_specific constructor with multiple + arguments (see above) by Adrien Guinet. +- Fix for GCC invocation on IBM* Blue Gene* + by Jeff Hammond and Raf Schietekat. +- Extended testing with smart pointers for Clang & libc++ + by Raf Schietekat. + +------------------------------------------------------------------------ +Intel TBB 4.3 Update 3 +TBB_INTERFACE_VERSION == 8003 + +Changes (w.r.t. Intel TBB 4.3 Update 2): + +- Move constructor and assignment operator were added to unique_lock. + +Preview Features: + +- Time overhead for memory pool destruction was reduced. + +Open-source contributions integrated: + +- Build error fix for iOS* by Raf Schietekat. + +------------------------------------------------------------------------ +Intel TBB 4.3 Update 2 +TBB_INTERFACE_VERSION == 8002 + +Changes (w.r.t. Intel TBB 4.3 Update 1): + +- Binary files for 64-bit Android* applications were added as part of the + Linux* OS package. +- Exact exception propagation is enabled for Intel C++ Compiler on OS X*. +- concurrent_vector::shrink_to_fit was optimized for types that support + C++11 move semantics. + +Bugs fixed: + +- Fixed concurrent unordered containers to insert elements much faster + in debug mode. +- Fixed concurrent priority queue to support types that do not have + copy constructors. +- Fixed enumerable_thread_specific to forbid copying from an instance + with a different value type. + +Open-source contributions integrated: + +- Support for PathScale* EKOPath* Compiler by Erik Lindahl. + +------------------------------------------------------------------------ +Intel TBB 4.3 Update 1 +TBB_INTERFACE_VERSION == 8001 + +Changes (w.r.t. Intel TBB 4.3): + +- The ability to split blocked_ranges in a proportion, used by + affinity_partitioner since version 4.2 Update 4, became a formal + extension of the Range concept. +- More checks for an incorrect address to release added to the debug + version of the memory allocator. +- Different kind of solutions for each TBB example were merged. + +Preview Features: + +- Task priorities are re-enabled in preview binaries. + +Bugs fixed: + +- Fixed a duplicate symbol when TBB_PREVIEW_VARIADIC_PARALLEL_INVOKE is + used in multiple compilation units. +- Fixed a crash in __itt_fini_ittlib seen on Ubuntu 14.04. +- Fixed a crash in memory release after dynamic replacement of the + OS X* memory allocator. +- Fixed incorrect indexing of arrays in seismic example. +- Fixed a data race in lazy initialization of task_arena. + +Open-source contributions integrated: + +- Fix for dumping information about gcc and clang compiler versions + by Misty De Meo. + +------------------------------------------------------------------------ +Intel TBB 4.3 +TBB_INTERFACE_VERSION == 8000 + +Changes (w.r.t. Intel TBB 4.2 Update 5): + +- The following features are now fully supported: flow::indexer_node, + task_arena, speculative_spin_rw_mutex. +- Compatibility with C++11 standard improved for tbb/compat/thread + and tbb::mutex. +- C++11 move constructors have been added to concurrent_queue and + concurrent_bounded_queue. +- C++11 move constructors and assignment operators have been added to + concurrent_vector, concurrent_hash_map, concurrent_priority_queue, + concurrent_unordered_{set,multiset,map,multimap}. +- C++11 move-aware emplace/push/pop methods have been added to + concurrent_vector, concurrent_queue, concurrent_bounded_queue, + concurrent_priority_queue. +- Methods to insert a C++11 initializer list have been added: + concurrent_vector::grow_by(), concurrent_hash_map::insert(), + concurrent_unordered_{set,multiset,map,multimap}::insert(). +- Testing for compatibility of containers with some C++11 standard + library types has been added. +- Dynamic replacement of standard memory allocation routines has been + added for OS X*. +- Microsoft* Visual Studio* projects for Intel TBB examples updated + to VS 2010. +- For open-source packages, debugging information (line numbers) in + precompiled binaries now matches the source code. +- Debug information was added to release builds for OS X*, Solaris*, + FreeBSD* operating systems and MinGW*. +- Various improvements in documentation, debug diagnostics and examples. + +Preview Features: + +- Additional actions on reset of graphs, and extraction of individual + nodes from a graph (TBB_PREVIEW_FLOW_GRAPH_FEATURES). +- Support for an arbitrary number of arguments in parallel_invoke + (TBB_PREVIEW_VARIADIC_PARALLEL_INVOKE). + +Changes affecting backward compatibility: + +- For compatibility with C++11 standard, copy and move constructors and + assignment operators are disabled for all mutex classes. To allow + the old behavior, use TBB_DEPRECATED_MUTEX_COPYING macro. +- flow::sequencer_node rejects messages with repeating sequence numbers. +- Changed internal interface between tbbmalloc and tbbmalloc_proxy. +- Following deprecated functionality has been removed: + old debugging macros TBB_DO_ASSERT & TBB_DO_THREADING_TOOLS; + no-op depth-related methods in class task; + tbb::deprecated::concurrent_queue; + deprecated variants of concurrent_vector methods. +- register_successor() and remove_successor() are deprecated as methods + to add and remove edges in flow::graph; use make_edge() and + remove_edge() instead. + +Bugs fixed: + +- Fixed incorrect scalable_msize() implementation for aligned objects. +- Flow graph buffering nodes now destroy their copy of forwarded items. +- Multiple fixes in task_arena implementation, including for: + inconsistent task scheduler state inside executed functions; + incorrect floating-point settings and exception propagation; + possible stalls in concurrent invocations of execute(). +- Fixed floating-point settings propagation when the same instance of + task_group_context is used in different arenas. +- Fixed compilation error in pipeline.h with Intel Compiler on OS X*. +- Added missed headers for individual components to tbb.h. + +Open-source contributions integrated: + +- Range interface addition to parallel_do, parallel_for_each and + parallel_sort by Stephan Dollberg. +- Variadic template implementation of parallel_invoke + by Kizza George Mbidde (see Preview Features). +- Improvement in Seismic example for MacBook Pro* with Retina* display + by Raf Schietekat. + +------------------------------------------------------------------------ +Intel TBB 4.2 Update 5 +TBB_INTERFACE_VERSION == 7005 + +Changes (w.r.t. Intel TBB 4.2 Update 4): + +- The second template argument of class aligned_space now is set + to 1 by default. + +Preview Features: + +- Better support for exception safety, task priorities and floating + point settings in class task_arena. +- task_arena::current_slot() has been renamed to + task_arena::current_thread_index(). + +Bugs fixed: + +- Task priority change possibly ignored by a worker thread entering + a nested parallel construct. +- Memory leaks inside the task scheduler when running on + Intel(R) Xeon Phi(tm) coprocessor. + +Open-source contributions integrated: + +- Improved detection of X Window support for Intel TBB examples + and other feedback by Raf Schietekat. + +------------------------------------------------------------------------ +Intel TBB 4.2 Update 4 +TBB_INTERFACE_VERSION == 7004 + +Changes (w.r.t. Intel TBB 4.2 Update 3): + +- Added possibility to specify floating-point settings at invocation + of most parallel algorithms (including flow::graph) via + task_group_context. +- Added dynamic replacement of malloc_usable_size() under + Linux*/Android* and dlmalloc_usable_size() under Android*. +- Added new methods to concurrent_vector: + grow_by() that appends a sequence between two given iterators; + grow_to_at_least() that initializes new elements with a given value. +- Improved affinity_partitioner for better performance on balanced + workloads. +- Improvements in the task scheduler, including better scalability + when threads search for a task arena, and better diagnostics. +- Improved allocation performance for workloads that do intensive + allocation/releasing of same-size objects larger than ~8KB from + multiple threads. +- Exception support is enabled by default for 32-bit MinGW compilers. +- The tachyon example for Android* can be built for all targets + supported by the installed NDK. +- Added Windows Store* version of the tachyon example. +- GettingStarted/sub_string_finder example ported to offload execution + on Windows* for Intel(R) Many Integrated Core Architecture. + +Preview Features: + +- Removed task_scheduler_observer::on_scheduler_leaving() callback. +- Added task_scheduler_observer::may_sleep() callback. +- The CPF or_node has been renamed indexer_node. The input to + indexer_node is now a list of types. The output of indexer_node is + a tagged_msg type composed of a tag and a value. For indexer_node, + the tag is a size_t. + +Bugs fixed: + +- Fixed data races in preview extensions of task_scheduler_observer. +- Added noexcept(false) for destructor of task_group_base to avoid + crash on cancelation of structured task group in C++11. + +Open-source contributions integrated: + +- Improved concurrency detection for BG/Q, and other improvements + by Raf Schietekat. +- Fix for crashes in enumerable_thread_specific in case if a contained + object is too big to be constructed on the stack by Adrien Guinet. + +------------------------------------------------------------------------ +Intel TBB 4.2 Update 3 +TBB_INTERFACE_VERSION == 7003 + +Changes (w.r.t. Intel TBB 4.2 Update 2): + +- Added support for Microsoft* Visual Studio* 2013. +- Improved Microsoft* PPL-compatible form of parallel_for for better + support of auto-vectorization. +- Added a new example for cancellation and reset in the flow graph: + Kohonen self-organizing map (examples/graph/som). +- Various improvements in source code, tests, and makefiles. + +Bugs fixed: + +- Added dynamic replacement of _aligned_msize() previously missed. +- Fixed task_group::run_and_wait() to throw invalid_multiple_scheduling + exception if the specified task handle is already scheduled. + +Open-source contributions integrated: + +- A fix for ARM* processors by Steve Capper. +- Improvements in std::swap calls by Robert Maynard. + +------------------------------------------------------------------------ +Intel TBB 4.2 Update 2 +TBB_INTERFACE_VERSION == 7002 + +Changes (w.r.t. Intel TBB 4.2 Update 1): + +- Enable C++11 features for Microsoft* Visual Studio* 2013 Preview. +- Added a test for compatibility of TBB containers with C++11 + range-based for loop. + +Changes affecting backward compatibility: + +- Internal layout changed for class tbb::flow::limiter_node. + +Preview Features: + +- Added speculative_spin_rw_mutex, a read-write lock class which uses + Intel(R) Transactional Synchronization Extensions. + +Bugs fixed: + +- When building for Intel(R) Xeon Phi(tm) coprocessor, TBB programs + no longer require explicit linking with librt and libpthread. + +Open-source contributions integrated: + +- Fixes for ARM* processors by Steve Capper, Leif Lindholm + and Steven Noonan. +- Support for Clang on Linux by Raf Schietekat. +- Typo correction in scheduler.cpp by Julien Schueller. + +------------------------------------------------------------------------ +Intel TBB 4.2 Update 1 +TBB_INTERFACE_VERSION == 7001 + +Changes (w.r.t. Intel TBB 4.2): + +- Added project files for Microsoft* Visual Studio* 2010. +- Initial support of Microsoft* Visual Studio* 2013 Preview. +- Enable C++11 features available in Intel(R) C++ Compiler 14.0. +- scalable_allocation_mode(TBBMALLOC_SET_SOFT_HEAP_LIMIT, ) can be + used to urge releasing memory from tbbmalloc internal buffers when + the given limit is exceeded. + +Preview Features: + +- Class task_arena no longer requires linking with a preview library, + though still remains a community preview feature. +- The method task_arena::wait_until_empty() is removed. +- The method task_arena::current_slot() now returns -1 if + the task scheduler is not initialized in the thread. + +Changes affecting backward compatibility: + +- Because of changes in internal layout of graph nodes, the namespace + interface number of flow::graph has been incremented from 6 to 7. + +Bugs fixed: + +- Fixed a race in lazy initialization of task_arena. +- Fixed flow::graph::reset() to prevent situations where tasks would be + spawned in the process of resetting the graph to its initial state. +- Fixed decrement bug in limiter_node. +- Fixed a race in arc deletion in the flow graph. + +Open-source contributions integrated: + +- Improved support for IBM* Blue Gene* by Raf Schietekat. + +------------------------------------------------------------------------ +Intel TBB 4.2 +TBB_INTERFACE_VERSION == 7000 + +Changes (w.r.t. Intel TBB 4.1 Update 4): + +- Added speculative_spin_mutex, which uses Intel(R) Transactional + Synchronization Extensions when they are supported by hardware. +- Binary files linked with libc++ (the C++ standard library in Clang) + were added on OS X*. +- For OS X* exact exception propagation is supported with Clang; + it requires use of libc++ and corresponding Intel TBB binaries. +- Support for C++11 initializer lists in constructor and assigment + has been added to concurrent_hash_map, concurrent_unordered_set, + concurrent_unordered_multiset, concurrent_unordered_map, + concurrent_unordered_multimap. +- The memory allocator may now clean its per-thread memory caches + when it cannot get more memory. +- Added the scalable_allocation_command() function for on-demand + cleaning of internal memory caches. +- Reduced the time overhead for freeing memory objects smaller than ~8K. +- Simplified linking with the debug library for applications that use + Intel TBB in code offloaded to Intel(R) Xeon Phi(tm) coprocessors. + See an example in + examples/GettingStarted/sub_string_finder/Makefile. +- Various improvements in source code, scripts and makefiles. + +Changes affecting backward compatibility: + +- tbb::flow::graph has been modified to spawn its tasks; + the old behaviour (task enqueuing) is deprecated. This change may + impact applications that expected a flow graph to make progress + without calling wait_for_all(), which is no longer guaranteed. See + the documentation for more details. +- Changed the return values of the scalable_allocation_mode() function. + +Bugs fixed: + +- Fixed a leak of parallel_reduce body objects when execution is + cancelled or an exception is thrown, as suggested by Darcy Harrison. +- Fixed a race in the task scheduler which can lower the effective + priority despite the existence of higher priority tasks. +- On Linux an error during destruction of the internal thread local + storage no longer results in an exception. + +Open-source contributions integrated: + +- Fixed task_group_context state propagation to unrelated context trees + by Raf Schietekat. + +------------------------------------------------------------------------ +Intel TBB 4.1 Update 4 +TBB_INTERFACE_VERSION == 6105 + +Changes (w.r.t. Intel TBB 4.1 Update 3): + +- Use /volatile:iso option with VS 2012 to disable extended + semantics for volatile variables. +- Various improvements in affinity_partitioner, scheduler, + tests, examples, makefiles. +- Concurrent_priority_queue class now supports initialization/assignment + via C++11 initializer list feature (std::initializer_list). + +Bugs fixed: + +- Fixed more possible stalls in concurrent invocations of + task_arena::execute(), especially waiting for enqueued tasks. +- Fixed requested number of workers for task_arena(P,0). +- Fixed interoperability with Intel(R) VTune(TM) Amplifier XE in + case of using task_arena::enqueue() from a terminating thread. + +Open-source contributions integrated: + +- Type fixes, cleanups, and code beautification by Raf Schietekat. +- Improvements in atomic operations for big endian platforms + by Raf Schietekat. + +------------------------------------------------------------------------ +Intel TBB 4.1 Update 3 +TBB_INTERFACE_VERSION == 6103 + +Changes (w.r.t. Intel TBB 4.1 Update 2): + +- Binary files for Android* applications were added to the Linux* OS + package. +- Binary files for Windows Store* applications were added to the + Windows* OS package. +- Exact exception propagation (exception_ptr) support on Linux OS is + now turned on by default for GCC 4.4 and higher. +- Stopped implicit use of large memory pages by tbbmalloc (Linux-only). + Now use of large pages must be explicitly enabled with + scalable_allocation_mode() function or TBB_MALLOC_USE_HUGE_PAGES + environment variable. + +Community Preview Features: + +- Extended class task_arena constructor and method initialize() to + allow some concurrency to be reserved strictly for application + threads. +- New methods terminate() and is_active() were added to class + task_arena. + +Bugs fixed: + +- Fixed initialization of hashing helper constant in the hash + containers. +- Fixed possible stalls in concurrent invocations of + task_arena::execute() when no worker thread is available to make + progress. +- Fixed incorrect calculation of hardware concurrency in the presence + of inactive processor groups, particularly on systems running + Windows* 8 and Windows* Server 2012. + +Open-source contributions integrated: + +- The fix for the GUI examples on OS X* systems by Raf Schietekat. +- Moved some power-of-2 calculations to functions to improve readability + by Raf Schietekat. +- C++11/Clang support improvements by arcata. +- ARM* platform isolation layer by Steve Capper, Leif Lindholm, Leo Lara + (ARM). + +------------------------------------------------------------------------ +Intel TBB 4.1 Update 2 +TBB_INTERFACE_VERSION == 6102 + +Changes (w.r.t. Intel TBB 4.1 Update 1): + +- Objects up to 128 MB are now cached by the tbbmalloc. Previously + the threshold was 8MB. Objects larger than 128 MB are still + processed by direct OS calls. +- concurrent_unordered_multiset and concurrent_unordered_multimap + have been added, based on Microsoft* PPL prototype. +- Ability to value-initialize a tbb::atomic variable on construction + in C++11, with const expressions properly supported. + +Community Preview Features: + +- Added a possibility to wait until all worker threads terminate. + This is necessary before calling fork() from an application. + +Bugs fixed: + +- Fixed data race in tbbmalloc that might lead to memory leaks + for large object allocations. +- Fixed task_arena::enqueue() to use task_group_context of target arena. +- Improved implementation of 64 bit atomics on ia32. + +------------------------------------------------------------------------ +Intel TBB 4.1 Update 1 +TBB_INTERFACE_VERSION == 6101 + +Changes (w.r.t. Intel TBB 4.1): + +- concurrent_vector class now supports initialization/assignment + via C++11 initializer list feature (std::initializer_list) +- Added implementation of the platform isolation layer based on + Intel compiler atomic built-ins; it is supposed to work on + any platform supported by compiler version 12.1 and newer. +- Using GetNativeSystemInfo() instead of GetSystemInfo() to support + more than 32 processors for 32-bit applications under WOW64. +- The following form of parallel_for: + parallel_for(first, last, [step,] f[, context]) now accepts an + optional partitioner parameter after the function f. + +Backward-incompatible API changes: + +- The library no longer injects tuple in to namespace std. + In previous releases, tuple was injected into namespace std by + flow_graph.h when std::tuple was not available. In this release, + flow_graph.h now uses tbb::flow::tuple. On platforms where + std::tuple is available, tbb::flow::tuple is typedef'ed to + std::tuple. On all other platforms, tbb::flow::tuple provides + a subset of the functionality defined by std::tuple. Users of + flow_graph.h may need to change their uses of std::tuple to + tbb::flow::tuple to ensure compatibility with non-C++11 compliant + compilers. + +Bugs fixed: + +- Fixed local observer to be able to override propagated CPU state and + to provide correct value of task_arena::current_slot() in callbacks. + +------------------------------------------------------------------------ +Intel TBB 4.1 +TBB_INTERFACE_VERSION == 6100 + +Changes (w.r.t. Intel TBB 4.0 Update 5): + +- _WIN32_WINNT must be set to 0x0501 or greater in order to use TBB + on Microsoft* Windows*. +- parallel_deterministic_reduce template function is fully supported. +- TBB headers can be used with C++0x/C++11 mode (-std=c++0x) of GCC + and Intel(R) Compiler. +- C++11 std::make_exception_ptr is used where available, instead of + std::copy_exception from earlier C++0x implementations. +- Improvements in the TBB allocator to reduce extra memory consumption. +- Partial refactoring of the task scheduler data structures. +- TBB examples allow more flexible specification of the thread number, + including arithmetic and geometric progression. + +Bugs fixed: + +- On Linux & OS X*, pre-built TBB binaries do not yet support exact + exception propagation via C++11 exception_ptr. To prevent run time + errors, by default TBB headers disable exact exception propagation + even if the C++ implementation provides exception_ptr. + +Community Preview Features: + +- Added: class task_arena, for work submission by multiple application + threads with thread-independent control of concurrency level. +- Added: task_scheduler_observer can be created as local to a master + thread, to observe threads that work on behalf of that master. + Local observers may have new on_scheduler_leaving() callback. + +------------------------------------------------------------------------ +Intel TBB 4.0 Update 5 +TBB_INTERFACE_VERSION == 6005 + +Changes (w.r.t. Intel TBB 4.0 Update 4): + +- Parallel pipeline optimization (directly storing small objects in the + interstage data buffers) limited to trivially-copyable types for + C++11 and a short list of types for earlier compilers. +- _VARIADIC_MAX switch is honored for TBB tuple implementation + and flow::graph nodes based on tuple. +- Support of Cocoa framework was added to the GUI examples on OS X* + systems. + +Bugs fixed: + +- Fixed a tv_nsec overflow bug in condition_variable::wait_for. +- Fixed execution order of enqueued tasks with different priorities. +- Fixed a bug with task priority changes causing lack of progress + for fire-and-forget tasks when TBB was initialized to use 1 thread. +- Fixed duplicate symbol problem when linking multiple compilation + units that include flow_graph.h on VC 10. + +------------------------------------------------------------------------ +Intel TBB 4.0 Update 4 +TBB_INTERFACE_VERSION == 6004 + +Changes (w.r.t. Intel TBB 4.0 Update 3): + +- The TBB memory allocator transparently supports large pages on Linux. +- A new flow_graph example, logic_sim, was added. +- Support for DirectX* 9 was added to GUI examples. + +Community Preview Features: + +- Added: aggregator, a new concurrency control mechanism. + +Bugs fixed: + +- The abort operation on concurrent_bounded_queue now leaves the queue + in a reusable state. If a bad_alloc or bad_last_alloc exception is + thrown while the queue is recovering from an abort, that exception + will be reported instead of user_abort on the thread on which it + occurred, and the queue will not be reusable. +- Steal limiting heuristic fixed to avoid premature stealing disabling + when large amount of __thread data is allocated on thread stack. +- Fixed a low-probability leak of arenas in the task scheduler. +- In STL-compatible allocator classes, the method construct() was fixed + to comply with C++11 requirements. +- Fixed a bug that prevented creation of fixed-size memory pools + smaller than 2M. +- Significantly reduced the amount of warnings from various compilers. + +Open-source contributions integrated: + +- Multiple improvements by Raf Schietekat. +- Basic support for Clang on OS X* by Blas Rodriguez Somoza. +- Fixes for warnings and corner-case bugs by Blas Rodriguez Somoza + and Edward Lam. + +------------------------------------------------------------------------ +Intel TBB 4.0 Update 3 +TBB_INTERFACE_VERSION == 6003 + +Changes (w.r.t. Intel TBB 4.0 Update 2): + +- Modifications to the low-level API for memory pools: + added support for aligned allocations; + pool policies reworked to allow backward-compatible extensions; + added a policy to not return memory space till destruction; + pool_reset() does not return memory space anymore. +- Class tbb::flow::graph_iterator added to iterate over all nodes + registered with a graph instance. +- multioutput_function_node has been renamed multifunction_node. + multifunction_node and split_node are now fully-supported features. +- For the tagged join node, the policy for try_put of an item with + already existing tag has been defined: the item will be rejected. +- Matching the behavior on Windows, on other platforms the optional + shared libraries (libtbbmalloc, libirml) now are also searched + only in the directory where libtbb is located. +- The platform isolation layer based on GCC built-ins is extended. + +Backward-incompatible API changes: + +- a graph reference parameter is now required to be passed to the + constructors of the following flow graph nodes: overwrite_node, + write_once_node, broadcast_node, and the CPF or_node. +- the following tbb::flow node methods and typedefs have been renamed: + Old New + join_node and or_node: + inputs() -> input_ports() + input_ports_tuple_type -> input_ports_type + multifunction_node and split_node: + ports_type -> output_ports_type + +Bugs fixed: + +- Not all logical processors were utilized on systems with more than + 64 cores split by Windows into several processor groups. + +------------------------------------------------------------------------ +Intel TBB 4.0 Update 2 commercial-aligned release +TBB_INTERFACE_VERSION == 6002 + +Changes (w.r.t. Intel TBB 4.0 Update 1 commercial-aligned release): + +- concurrent_bounded_queue now has an abort() operation that releases + threads involved in pending push or pop operations. The released + threads will receive a tbb::user_abort exception. +- Added Community Preview Feature: concurrent_lru_cache container, + a concurrent implementation of LRU (least-recently-used) cache. + +Bugs fixed: + +- fixed a race condition in the TBB scalable allocator. +- concurrent_queue counter wraparound bug was fixed, which occurred when + the number of push and pop operations exceeded ~>4 billion on IA32. +- fixed races in the TBB scheduler that could put workers asleep too + early, especially in presence of affinitized tasks. + +------------------------------------------------------------------------ +Intel TBB 4.0 Update 1 commercial-aligned release +TBB_INTERFACE_VERSION == 6000 (forgotten to increment) + +Changes (w.r.t. Intel TBB 4.0 commercial-aligned release): + +- Memory leaks fixed in binpack example. +- Improvements and fixes in the TBB allocator. + +------------------------------------------------------------------------ +Intel TBB 4.0 commercial-aligned release +TBB_INTERFACE_VERSION == 6000 + +Changes (w.r.t. Intel TBB 3.0 Update 8 commercial-aligned release): + +- concurrent_priority_queue is now a fully supported feature. + Capacity control methods were removed. +- Flow graph is now a fully supported feature. +- A new memory backend has been implemented in the TBB allocator. + It can reuse freed memory for both small and large objects, and + returns unused memory blocks to the OS more actively. +- Improved partitioning algorithms for parallel_for and parallel_reduce + to better handle load imbalance. +- The convex_hull example has been refactored for reproducible + performance results. +- The major interface version has changed from 5 to 6. + Deprecated interfaces might be removed in future releases. + +Community Preview Features: + +- Added: serial subset, i.e. sequential implementations of TBB generic + algorithms (currently, only provided for parallel_for). +- Preview of new flow graph nodes: + or_node (accepts multiple inputs, forwards each input separately + to all successors), + split_node (accepts tuples, and forwards each element of a tuple + to a corresponding successor), and + multioutput_function_node (accepts one input, and passes the input + and a tuple of output ports to the function body to support outputs + to multiple successors). +- Added: memory pools for more control on memory source, grouping, + and collective deallocation. + +------------------------------------------------------------------------ +Intel TBB 3.0 Update 8 commercial-aligned release +TBB_INTERFACE_VERSION == 5008 + +Changes (w.r.t. Intel TBB 3.0 Update 7 commercial-aligned release): + +- Task priorities become an official feature of TBB, + not community preview as before. +- Atomics API extended, and implementation refactored. +- Added task::set_parent() method. +- Added concurrent_unordered_set container. + +Open-source contributions integrated: + +- PowerPC support by Raf Schietekat. +- Fix of potential task pool overrun and other improvements + in the task scheduler by Raf Schietekat. +- Fix in parallel_for_each to work with std::set in Visual* C++ 2010. + +Community Preview Features: + +- Graph community preview feature was renamed to flow graph. + Multiple improvements in the implementation. + Binpack example was added for the feature. +- A number of improvements to concurrent_priority_queue. + Shortpath example was added for the feature. +- TBB runtime loaded functionality was added (Windows*-only). + It allows to specify which versions of TBB should be used, + as well as to set directories for the library search. +- parallel_deterministic_reduce template function was added. + +------------------------------------------------------------------------ +Intel TBB 3.0 Update 7 commercial-aligned release +TBB_INTERFACE_VERSION == 5006 (forgotten to increment) + +Changes (w.r.t. Intel TBB 3.0 Update 6 commercial-aligned release): + +- Added implementation of the platform isolation layer based on + GCC atomic built-ins; it is supposed to work on any platform + where GCC has these built-ins. + +Community Preview Features: + +- Graph's dining_philosophers example added. +- A number of improvements to graph and concurrent_priority_queue. + + +------------------------------------------------------------------------ +Intel TBB 3.0 Update 6 commercial-aligned release +TBB_INTERFACE_VERSION == 5006 + +Changes (w.r.t. Intel TBB 3.0 Update 5 commercial-aligned release): + +- Added Community Preview feature: task and task group priority, and + Fractal example demonstrating it. +- parallel_pipeline optimized for data items of small and large sizes. +- Graph's join_node is now parametrized with a tuple of up to 10 types. +- Improved performance of concurrent_priority_queue. + +Open-source contributions integrated: + +- Initial NetBSD support by Aleksej Saushev. + +Bugs fixed: + +- Failure to enable interoperability with Intel(R) Cilk(tm) Plus runtime + library, and a crash caused by invoking the interoperability layer + after one of the libraries was unloaded. +- Data race that could result in concurrent_unordered_map structure + corruption after call to clear() method. +- Stack corruption caused by PIC version of 64-bit CAS compiled by Intel + compiler on Linux. +- Inconsistency of exception propagation mode possible when application + built with Microsoft* Visual Studio* 2008 or earlier uses TBB built + with Microsoft* Visual Studio* 2010. +- Affinitizing master thread to a subset of available CPUs after TBB + scheduler was initialized tied all worker threads to the same CPUs. +- Method is_stolen_task() always returned 'false' for affinitized tasks. +- write_once_node and overwrite_node did not immediately send buffered + items to successors + +------------------------------------------------------------------------ +Intel TBB 3.0 Update 5 commercial-aligned release +TBB_INTERFACE_VERSION == 5005 + +Changes (w.r.t. Intel TBB 3.0 Update 4 commercial-aligned release): + +- Added Community Preview feature: graph. +- Added automatic propagation of master thread FPU settings to + TBB worker threads. +- Added a public function to perform a sequentially consistent full + memory fence: tbb::atomic_fence() in tbb/atomic.h. + +Bugs fixed: + +- Data race that could result in scheduler data structures corruption + when using fire-and-forget tasks. +- Potential referencing of destroyed concurrent_hash_map element after + using erase(accessor&A) method with A acquired as const_accessor. +- Fixed a correctness bug in the convex hull example. + +Open-source contributions integrated: + +- Patch for calls to internal::atomic_do_once() by Andrey Semashev. + +------------------------------------------------------------------------ +Intel TBB 3.0 Update 4 commercial-aligned release +TBB_INTERFACE_VERSION == 5004 + +Changes (w.r.t. Intel TBB 3.0 Update 3 commercial-aligned release): + +- Added Community Preview feature: concurrent_priority_queue. +- Fixed library loading to avoid possibility for remote code execution, + see http://www.microsoft.com/technet/security/advisory/2269637.mspx. +- Added support of more than 64 cores for appropriate Microsoft* + Windows* versions. For more details, see + http://msdn.microsoft.com/en-us/library/dd405503.aspx. +- Default number of worker threads is adjusted in accordance with + process affinity mask. + +Bugs fixed: + +- Calls of scalable_* functions from inside the allocator library + caused issues if the functions were overridden by another module. +- A crash occurred if methods run() and wait() were called concurrently + for an empty tbb::task_group (1736). +- The tachyon example exhibited build problems associated with + bug 554339 on Microsoft* Visual Studio* 2010. Project files were + modified as a partial workaround to overcome the problem. See + http://connect.microsoft.com/VisualStudio/feedback/details/554339. + +------------------------------------------------------------------------ +Intel TBB 3.0 Update 3 commercial-aligned release +TBB_INTERFACE_VERSION == 5003 + +Changes (w.r.t. Intel TBB 3.0 Update 2 commercial-aligned release): + +- cache_aligned_allocator class reworked to use scalable_aligned_malloc. +- Improved performance of count() and equal_range() methods + in concurrent_unordered_map. +- Improved implementation of 64-bit atomic loads and stores on 32-bit + platforms, including compilation with VC 7.1. +- Added implementation of atomic operations on top of OSAtomic API + provided by OS X*. +- Removed gratuitous try/catch blocks surrounding thread function calls + in tbb_thread. +- Xcode* projects were added for sudoku and game_of_life examples. +- Xcode* projects were updated to work without TBB framework. + +Bugs fixed: + +- Fixed a data race in task scheduler destruction that on rare occasion + could result in memory corruption. +- Fixed idle spinning in thread bound filters in tbb::pipeline (1670). + +Open-source contributions integrated: + +- MinGW-64 basic support by brsomoza (partially). +- Patch for atomic.h by Andrey Semashev. +- Support for AIX & GCC on PowerPC by Giannis Papadopoulos. +- Various improvements by Raf Schietekat. + +------------------------------------------------------------------------ +Intel TBB 3.0 Update 2 commercial-aligned release +TBB_INTERFACE_VERSION == 5002 + +Changes (w.r.t. Intel TBB 3.0 Update 1 commercial-aligned release): + +- Destructor of tbb::task_group class throws missing_wait exception + if there are tasks running when it is invoked. +- Interoperability layer with Intel Cilk Plus runtime library added + to protect TBB TLS in case of nested usage with Intel Cilk Plus. +- Compilation fix for dependent template names in concurrent_queue. +- Memory allocator code refactored to ease development and maintenance. + +Bugs fixed: + +- Improved interoperability with other Intel software tools on Linux in + case of dynamic replacement of memory allocator (1700) +- Fixed install issues that prevented installation on + Mac OS* X 10.6.4 (1711). + +------------------------------------------------------------------------ +Intel TBB 3.0 Update 1 commercial-aligned release +TBB_INTERFACE_VERSION == 5000 (forgotten to increment) + +Changes (w.r.t. Intel TBB 3.0 commercial-aligned release): + +- Decreased memory fragmentation by allocations bigger than 8K. +- Lazily allocate worker threads, to avoid creating unnecessary stacks. + +Bugs fixed: + +- TBB allocator used much more memory than malloc (1703) - see above. +- Deadlocks happened in some specific initialization scenarios + of the TBB allocator (1701, 1704). +- Regression in enumerable_thread_specific: excessive requirements + for object constructors. +- A bug in construction of parallel_pipeline filters when body instance + was a temporary object. +- Incorrect usage of memory fences on PowerPC and XBOX360 platforms. +- A subtle issue in task group context binding that could result + in cancelation signal being missed by nested task groups. +- Incorrect construction of concurrent_unordered_map if specified + number of buckets is not power of two. +- Broken count() and equal_range() of concurrent_unordered_map. +- Return type of postfix form of operator++ for hash map's iterators. + +------------------------------------------------------------------------ +Intel TBB 3.0 commercial-aligned release +TBB_INTERFACE_VERSION == 5000 + +Changes (w.r.t. Intel TBB 2.2 Update 3 commercial-aligned release): + +- All open-source-release changes down to TBB 2.2 U3 below + were incorporated into this release. + +------------------------------------------------------------------------ +20100406 open-source release + +Changes (w.r.t. 20100310 open-source release): + +- Added support for Microsoft* Visual Studio* 2010, including binaries. +- Added a PDF file with recommended Design Patterns for TBB. +- Added parallel_pipeline function and companion classes and functions + that provide a strongly typed lambda-friendly pipeline interface. +- Reworked enumerable_thread_specific to use a custom implementation of + hash map that is more efficient for ETS usage models. +- Added example for class task_group; see examples/task_group/sudoku. +- Removed two examples, as they were long outdated and superceded: + pipeline/text_filter (use pipeline/square); + parallel_while/parallel_preorder (use parallel_do/parallel_preorder). +- PDF documentation updated. +- Other fixes and changes in code, tests, and examples. + +Bugs fixed: + +- Eliminated build errors with MinGW32. +- Fixed post-build step and other issues in VS projects for examples. +- Fixed discrepancy between scalable_realloc and scalable_msize that + caused crashes with malloc replacement on Windows. + +------------------------------------------------------------------------ +20100310 open-source release + +Changes (w.r.t. Intel TBB 2.2 Update 3 commercial-aligned release): + +- Version macros changed in anticipation of a future release. +- Directory structure aligned with Intel(R) C++ Compiler; + now TBB binaries reside in //[bin|lib] + (in TBB 2.x, it was [bin|lib]//). +- Visual Studio projects changed for examples: instead of separate set + of files for each VS version, now there is single 'msvs' directory + that contains workspaces for MS C++ compiler (_cl.sln) and + Intel C++ compiler (_icl.sln). Works with VS 2005 and above. +- The name versioning scheme for backward compatibility was improved; + now compatibility-breaking changes are done in a separate namespace. +- Added concurrent_unordered_map implementation based on a prototype + developed in Microsoft for a future version of PPL. +- Added PPL-compatible writer-preference RW lock (reader_writer_lock). +- Added TBB_IMPLEMENT_CPP0X macro to control injection of C++0x names + implemented in TBB into namespace std. +- Added almost-C++0x-compatible std::condition_variable, plus a bunch + of other C++0x classes required by condition_variable. +- With TBB_IMPLEMENT_CPP0X, tbb_thread can be also used as std::thread. +- task.cpp was split into several translation units to structure + TBB scheduler sources layout. Static data layout and library + initialization logic were also updated. +- TBB scheduler reworked to prevent master threads from stealing + work belonging to other masters. +- Class task was extended with enqueue() method, and slightly changed + semantics of methods spawn() and destroy(). For exact semantics, + refer to TBB Reference manual. +- task_group_context now allows for destruction by non-owner threads. +- Added TBB_USE_EXCEPTIONS macro to control use of exceptions in TBB + headers. It turns off (i.e. sets to 0) automatically if specified + compiler options disable exception handling. +- TBB is enabled to run on top of Microsoft's Concurrency Runtime + on Windows* 7 (via our worker dispatcher known as RML). +- Removed old unused busy-waiting code in concurrent_queue. +- Described the advanced build & test options in src/index.html. +- Warning level for GCC raised with -Wextra and a few other options. +- Multiple fixes and improvements in code, tests, examples, and docs. + +Open-source contributions integrated: + +- Xbox support by Roman Lut (Deep Shadows), though further changes are + required to make it working; e.g. post-2.1 entry points are missing. +- "Eventcount" by Dmitry Vyukov evolved into concurrent_monitor, + an internal class used in the implementation of concurrent_queue. + +------------------------------------------------------------------------ +Intel TBB 2.2 Update 3 commercial-aligned release +TBB_INTERFACE_VERSION == 4003 + +Changes (w.r.t. Intel TBB 2.2 Update 2 commercial-aligned release): + +- PDF documentation updated. + +Bugs fixed: + +- concurrent_hash_map compatibility issue exposed on Linux in case + two versions of the container were used by different modules. +- enforce 16 byte stack alignment for consistence with GCC; required + to work correctly with 128-bit variables processed by SSE. +- construct() methods of allocator classes now use global operator new. + +------------------------------------------------------------------------ +Intel TBB 2.2 Update 2 commercial-aligned release +TBB_INTERFACE_VERSION == 4002 + +Changes (w.r.t. Intel TBB 2.2 Update 1 commercial-aligned release): + +- parallel_invoke and parallel_for_each now take function objects + by const reference, not by value. +- Building TBB with /MT is supported, to avoid dependency on particular + versions of Visual C++* runtime DLLs. TBB DLLs built with /MT + are located in vc_mt directory. +- Class critical_section introduced. +- Improvements in exception support: new exception classes introduced, + all exceptions are thrown via an out-of-line internal method. +- Improvements and fixes in the TBB allocator and malloc replacement, + including robust memory identification, and more reliable dynamic + function substitution on Windows*. +- Method swap() added to class tbb_thread. +- Methods rehash() and bucket_count() added to concurrent_hash_map. +- Added support for Visual Studio* 2010 Beta2. No special binaries + provided, but CRT-independent DLLs (vc_mt) should work. +- Other fixes and improvements in code, tests, examples, and docs. + +Open-source contributions integrated: + +- The fix to build 32-bit TBB on Mac OS* X 10.6. +- GCC-based port for SPARC Solaris by Michailo Matijkiw, with use of + earlier work by Raf Schietekat. + +Bugs fixed: + +- 159 - TBB build for PowerPC* running Mac OS* X. +- 160 - IBM* Java segfault if used with TBB allocator. +- crash in concurrent_queue (1616). + +------------------------------------------------------------------------ +Intel TBB 2.2 Update 1 commercial-aligned release +TBB_INTERFACE_VERSION == 4001 + +Changes (w.r.t. Intel TBB 2.2 commercial-aligned release): + +- Incorporates all changes from open-source releases below. +- Documentation was updated. +- TBB scheduler auto-initialization now covers all possible use cases. +- concurrent_queue: made argument types of sizeof used in paddings + consistent with those actually used. +- Memory allocator was improved: supported corner case of user's malloc + calling scalable_malloc (non-Windows), corrected processing of + memory allocation requests during tbb memory allocator startup + (Linux). +- Windows malloc replacement has got better support for static objects. +- In pipeline setups that do not allow actual parallelism, execution + by a single thread is guaranteed, idle spinning eliminated, and + performance improved. +- RML refactoring and clean-up. +- New constructor for concurrent_hash_map allows reserving space for + a number of items. +- Operator delete() added to the TBB exception classes. +- Lambda support was improved in parallel_reduce. +- gcc 4.3 warnings were fixed for concurrent_queue. +- Fixed possible initialization deadlock in modules using TBB entities + during construction of global static objects. +- Copy constructor in concurrent_hash_map was fixed. +- Fixed a couple of rare crashes in the scheduler possible before + in very specific use cases. +- Fixed a rare crash in the TBB allocator running out of memory. +- New tests were implemented, including test_lambda.cpp that checks + support for lambda expressions. +- A few other small changes in code, tests, and documentation. + +------------------------------------------------------------------------ +20090809 open-source release + +Changes (w.r.t. Intel TBB 2.2 commercial-aligned release): + +- Fixed known exception safety issues in concurrent_vector. +- Better concurrency of simultaneous grow requests in concurrent_vector. +- TBB allocator further improves performance of large object allocation. +- Problem with source of text relocations was fixed on Linux +- Fixed bugs related to malloc replacement under Windows +- A few other small changes in code and documentation. + +------------------------------------------------------------------------ +Intel TBB 2.2 commercial-aligned release +TBB_INTERFACE_VERSION == 4000 + +Changes (w.r.t. Intel TBB 2.1 U4 commercial-aligned release): + +- Incorporates all changes from open-source releases below. +- Architecture folders renamed from em64t to intel64 and from itanium + to ia64. +- Major Interface version changed from 3 to 4. Deprecated interfaces + might be removed in future releases. +- Parallel algorithms that use partitioners have switched to use + the auto_partitioner by default. +- Improved memory allocator performance for allocations bigger than 8K. +- Added new thread-bound filters functionality for pipeline. +- New implementation of concurrent_hash_map that improves performance + significantly. +- A few other small changes in code and documentation. + +------------------------------------------------------------------------ +20090511 open-source release + +Changes (w.r.t. previous open-source release): + +- Basic support for MinGW32 development kit. +- Added tbb::zero_allocator class that initializes memory with zeros. + It can be used as an adaptor to any STL-compatible allocator class. +- Added tbb::parallel_for_each template function as alias to parallel_do. +- Added more overloads for tbb::parallel_for. +- Added support for exact exception propagation (can only be used with + compilers that support C++0x std::exception_ptr). +- tbb::atomic template class can be used with enumerations. +- mutex, recursive_mutex, spin_mutex, spin_rw_mutex classes extended + with explicit lock/unlock methods. +- Fixed size() and grow_to_at_least() methods of tbb::concurrent_vector + to provide space allocation guarantees. More methods added for + compatibility with std::vector, including some from C++0x. +- Preview of a lambda-friendly interface for low-level use of tasks. +- scalable_msize function added to the scalable allocator (Windows only). +- Rationalized internal auxiliary functions for spin-waiting and backoff. +- Several tests undergo decent refactoring. + +Changes affecting backward compatibility: + +- Improvements in concurrent_queue, including limited API changes. + The previous version is deprecated; its functionality is accessible + via methods of the new tbb::concurrent_bounded_queue class. +- grow* and push_back methods of concurrent_vector changed to return + iterators; old semantics is deprecated. + +------------------------------------------------------------------------ +Intel TBB 2.1 Update 4 commercial-aligned release +TBB_INTERFACE_VERSION == 3016 + +Changes (w.r.t. Intel TBB 2.1 U3 commercial-aligned release): + +- Added tests for aligned memory allocations and malloc replacement. +- Several improvements for better bundling with Intel(R) C++ Compiler. +- A few other small changes in code and documentaion. + +Bugs fixed: + +- 150 - request to build TBB examples with debug info in release mode. +- backward compatibility issue with concurrent_queue on Windows. +- dependency on VS 2005 SP1 runtime libraries removed. +- compilation of GUI examples under Xcode* 3.1 (1577). +- On Windows, TBB allocator classes can be instantiated with const types + for compatibility with MS implementation of STL containers (1566). + +------------------------------------------------------------------------ +20090313 open-source release + +Changes (w.r.t. 20081109 open-source release): + +- Includes all changes introduced in TBB 2.1 Update 2 & Update 3 + commercial-aligned releases (see below for details). +- Added tbb::parallel_invoke template function. It runs up to 10 + user-defined functions in parallel and waits for them to complete. +- Added a special library providing ability to replace the standard + memory allocation routines in Microsoft* C/C++ RTL (malloc/free, + global new/delete, etc.) with the TBB memory allocator. + Usage details are described in include/tbb/tbbmalloc_proxy.h file. +- Task scheduler switched to use new implementation of its core + functionality (deque based task pool, new structure of arena slots). +- Preview of Microsoft* Visual Studio* 2005 project files for + building the library is available in build/vsproject folder. +- Added tests for aligned memory allocations and malloc replacement. +- Added parallel_for/game_of_life.net example (for Windows only) + showing TBB usage in a .NET application. +- A number of other fixes and improvements to code, tests, makefiles, + examples and documents. + +Bugs fixed: + +- The same list as in TBB 2.1 Update 4 right above. + +------------------------------------------------------------------------ +Intel TBB 2.1 Update 3 commercial-aligned release +TBB_INTERFACE_VERSION == 3015 + +Changes (w.r.t. Intel TBB 2.1 U2 commercial-aligned release): + +- Added support for aligned allocations to the TBB memory allocator. +- Added a special library to use with LD_PRELOAD on Linux* in order to + replace the standard memory allocation routines in C/C++ with the + TBB memory allocator. +- Added null_mutex and null_rw_mutex: no-op classes interface-compliant + to other TBB mutexes. +- Improved performance of parallel_sort, to close most of the serial gap + with std::sort, and beat it on 2 and more cores. +- A few other small changes. + +Bugs fixed: + +- the problem where parallel_for hanged after exception throw + if affinity_partitioner was used (1556). +- get rid of VS warnings about mbstowcs deprecation (1560), + as well as some other warnings. +- operator== for concurrent_vector::iterator fixed to work correctly + with different vector instances. + +------------------------------------------------------------------------ +Intel TBB 2.1 Update 2 commercial-aligned release +TBB_INTERFACE_VERSION == 3014 + +Changes (w.r.t. Intel TBB 2.1 U1 commercial-aligned release): + +- Incorporates all open-source-release changes down to TBB 2.1 U1, + except for: + - 20081019 addition of enumerable_thread_specific; +- Warning level for Microsoft* Visual C++* compiler raised to /W4 /Wp64; + warnings found on this level were cleaned or suppressed. +- Added TBB_runtime_interface_version API function. +- Added new example: pipeline/square. +- Added exception handling and cancellation support + for parallel_do and pipeline. +- Added copy constructor and [begin,end) constructor to concurrent_queue. +- Added some support for beta version of Intel(R) Parallel Amplifier. +- Added scripts to set environment for cross-compilation of 32-bit + applications on 64-bit Linux with Intel(R) C++ Compiler. +- Fixed semantics of concurrent_vector::clear() to not deallocate + internal arrays. Fixed compact() to perform such deallocation later. +- Fixed the issue with atomic when T is incomplete type. +- Improved support for PowerPC* Macintosh*, including the fix + for a bug in masked compare-and-swap reported by a customer. +- As usual, a number of other improvements everywhere. + +------------------------------------------------------------------------ +20081109 open-source release + +Changes (w.r.t. previous open-source release): + +- Added new serial out of order filter for tbb::pipeline. +- Fixed the issue with atomic::operator= reported at the forum. +- Fixed the issue with using tbb::task::self() in task destructor + reported at the forum. +- A number of other improvements to code, tests, makefiles, examples + and documents. + +Open-source contributions integrated: +- Changes in the memory allocator were partially integrated. + +------------------------------------------------------------------------ +20081019 open-source release + +Changes (w.r.t. previous open-source release): + +- Introduced enumerable_thread_specific. This new class provides a + wrapper around native thread local storage as well as iterators and + ranges for accessing the thread local copies (1533). +- Improved support for Intel(R) Threading Analysis Tools + on Intel(R) 64 architecture. +- Dependency from Microsoft* CRT was integrated to the libraries using + manifests, to avoid issues if called from code that uses different + version of Visual C++* runtime than the library. +- Introduced new defines TBB_USE_ASSERT, TBB_USE_DEBUG, + TBB_USE_PERFORMANCE_WARNINGS, TBB_USE_THREADING_TOOLS. +- A number of other improvements to code, tests, makefiles, examples + and documents. + +Open-source contributions integrated: + +- linker optimization: /incremental:no . + +------------------------------------------------------------------------ +20080925 open-source release + +Changes (w.r.t. previous open-source release): + +- Same fix for a memory leak in the memory allocator as in TBB 2.1 U1. +- Improved support for lambda functions. +- Fixed more concurrent_queue issues reported at the forum. +- A number of other improvements to code, tests, makefiles, examples + and documents. + +------------------------------------------------------------------------ +Intel TBB 2.1 Update 1 commercial-aligned release +TBB_INTERFACE_VERSION == 3013 + +Changes (w.r.t. Intel TBB 2.1 commercial-aligned release): + +- Fixed small memory leak in the memory allocator. +- Incorporates all open-source-release changes since TBB 2.1, + except for: + - 20080825 changes for parallel_do; + +------------------------------------------------------------------------ +20080825 open-source release + +Changes (w.r.t. previous open-source release): + +- Added exception handling and cancellation support for parallel_do. +- Added default HashCompare template argument for concurrent_hash_map. +- Fixed concurrent_queue.clear() issues due to incorrect assumption + about clear() being private method. +- Added the possibility to use TBB in applications that change + default calling conventions (Windows* only). +- Many improvements to code, tests, examples, makefiles and documents. + +Bugs fixed: + +- 120, 130 - memset declaration missed in concurrent_hash_map.h + +------------------------------------------------------------------------ +20080724 open-source release + +Changes (w.r.t. previous open-source release): + +- Inline assembly for atomic operations improved for gcc 4.3 +- A few more improvements to the code. + +------------------------------------------------------------------------ +20080709 open-source release + +Changes (w.r.t. previous open-source release): + +- operator=() was added to the tbb_thread class according to + the current working draft for std::thread. +- Recognizing SPARC* in makefiles for Linux* and Sun Solaris*. + +Bugs fixed: + +- 127 - concurrent_hash_map::range fixed to split correctly. + +Open-source contributions integrated: + +- fix_set_midpoint.diff by jyasskin +- SPARC* support in makefiles by Raf Schietekat + +------------------------------------------------------------------------ +20080622 open-source release + +Changes (w.r.t. previous open-source release): + +- Fixed a hang that rarely happened on Linux + during deinitialization of the TBB scheduler. +- Improved support for Intel(R) Thread Checker. +- A few more improvements to the code. + +------------------------------------------------------------------------ +Intel TBB 2.1 commercial-aligned release +TBB_INTERFACE_VERSION == 3011 + +Changes (w.r.t. Intel TBB 2.0 U3 commercial-aligned release): + +- All open-source-release changes down to, and including, TBB 2.0 below, + were incorporated into this release. + +------------------------------------------------------------------------ +20080605 open-source release + +Changes (w.r.t. previous open-source release): + +- Explicit control of exported symbols by version scripts added on Linux. +- Interfaces polished for exception handling & algorithm cancellation. +- Cache behavior improvements in the scalable allocator. +- Improvements in text_filter, polygon_overlay, and other examples. +- A lot of other stability improvements in code, tests, and makefiles. +- First release where binary packages include headers/docs/examples, so + binary packages are now self-sufficient for using TBB. + +Open-source contributions integrated: + +- atomics patch (partially). +- tick_count warning patch. + +Bugs fixed: + +- 118 - fix for boost compatibility. +- 123 - fix for tbb_machine.h. + +------------------------------------------------------------------------ +20080512 open-source release + +Changes (w.r.t. previous open-source release): + +- Fixed a problem with backward binary compatibility + of debug Linux builds. +- Sun* Studio* support added. +- soname support added on Linux via linker script. To restore backward + binary compatibility, *.so -> *.so.2 softlinks should be created. +- concurrent_hash_map improvements - added few new forms of insert() + method and fixed precondition and guarantees of erase() methods. + Added runtime warning reporting about bad hash function used for + the container. Various improvements for performance and concurrency. +- Cancellation mechanism reworked so that it does not hurt scalability. +- Algorithm parallel_do reworked. Requirement for Body::argument_type + definition removed, and work item argument type can be arbitrarily + cv-qualified. +- polygon_overlay example added. +- A few more improvements to code, tests, examples and Makefiles. + +Open-source contributions integrated: + +- Soname support patch for Bugzilla #112. + +Bugs fixed: + +- 112 - fix for soname support. + +------------------------------------------------------------------------ +Intel TBB 2.0 U3 commercial-aligned release (package 017, April 20, 2008) + +Corresponds to commercial 019 (for Linux*, 020; for Mac OS* X, 018) +packages. + +Changes (w.r.t. Intel TBB 2.0 U2 commercial-aligned release): + +- Does not contain open-source-release changes below; this release is + only a minor update of TBB 2.0 U2. +- Removed spin-waiting in pipeline and concurrent_queue. +- A few more small bug fixes from open-source releases below. + +------------------------------------------------------------------------ +20080408 open-source release + +Changes (w.r.t. previous open-source release): + +- count_strings example reworked: new word generator implemented, hash + function replaced, and tbb_allocator is used with std::string class. +- Static methods of spin_rw_mutex were replaced by normal member + functions, and the class name was versioned. +- tacheon example was renamed to tachyon. +- Improved support for Intel(R) Thread Checker. +- A few more minor improvements. + +Open-source contributions integrated: + +- Two sets of Sun patches for IA Solaris support. + +------------------------------------------------------------------------ +20080402 open-source release + +Changes (w.r.t. previous open-source release): + +- Exception handling and cancellation support for tasks and algorithms + fully enabled. +- Exception safety guaranties defined and fixed for all concurrent + containers. +- User-defined memory allocator support added to all concurrent + containers. +- Performance improvement of concurrent_hash_map, spin_rw_mutex. +- Critical fix for a rare race condition during scheduler + initialization/de-initialization. +- New methods added for concurrent containers to be closer to STL, + as well as automatic filters removal from pipeline + and __TBB_AtomicAND function. +- The volatile keyword dropped from where it is not really needed. +- A few more minor improvements. + +------------------------------------------------------------------------ +20080319 open-source release + +Changes (w.r.t. previous open-source release): + +- Support for gcc version 4.3 was added. +- tbb_thread class, near compatible with std::thread expected in C++0x, + was added. + +Bugs fixed: + +- 116 - fix for compilation issues with gcc version 4.2.1. +- 120 - fix for compilation issues with gcc version 4.3. + +------------------------------------------------------------------------ +20080311 open-source release + +Changes (w.r.t. previous open-source release): + +- An enumerator added for pipeline filter types (serial vs. parallel). +- New task_scheduler_observer class introduced, to observe when + threads start and finish interacting with the TBB task scheduler. +- task_scheduler_init reverted to not use internal versioned class; + binary compatibility guaranteed with stable releases only. +- Various improvements to code, tests, examples and Makefiles. + +------------------------------------------------------------------------ +20080304 open-source release + +Changes (w.r.t. previous open-source release): + +- Task-to-thread affinity support, previously kept under a macro, + now fully legalized. +- Work-in-progress on cache_aligned_allocator improvements. +- Pipeline really supports parallel input stage; it's no more serialized. +- Various improvements to code, tests, examples and Makefiles. + +Bugs fixed: + +- 119 - fix for scalable_malloc sometimes failing to return a big block. +- TR575 - fixed a deadlock occurring on Windows in startup/shutdown + under some conditions. + +------------------------------------------------------------------------ +20080226 open-source release + +Changes (w.r.t. previous open-source release): + +- Introduced tbb_allocator to select between standard allocator and + tbb::scalable_allocator when available. +- Removed spin-waiting in pipeline and concurrent_queue. +- Improved performance of concurrent_hash_map by using tbb_allocator. +- Improved support for Intel(R) Thread Checker. +- Various improvements to code, tests, examples and Makefiles. + +------------------------------------------------------------------------ +Intel TBB 2.0 U2 commercial-aligned release (package 017, February 14, 2008) + +Corresponds to commercial 017 (for Linux*, 018; for Mac OS* X, 016) +packages. + +Changes (w.r.t. Intel TBB 2.0 U1 commercial-aligned release): + +- Does not contain open-source-release changes below; this release is + only a minor update of TBB 2.0 U1. +- Add support for Microsoft* Visual Studio* 2008, including binary + libraries and VS2008 projects for examples. +- Use SwitchToThread() not Sleep() to yield threads on Windows*. +- Enhancements to Doxygen-readable comments in source code. +- A few more small bug fixes from open-source releases below. + +Bugs fixed: + +- TR569 - Memory leak in concurrent_queue. + +------------------------------------------------------------------------ +20080207 open-source release + +Changes (w.r.t. previous open-source release): + +- Improvements and minor fixes in VS2008 projects for examples. +- Improvements in code for gating worker threads that wait for work, + previously consolidated under #if IMPROVED_GATING, now legalized. +- Cosmetic changes in code, examples, tests. + +Bugs fixed: + +- 113 - Iterators and ranges should be convertible to their const + counterparts. +- TR569 - Memory leak in concurrent_queue. + +------------------------------------------------------------------------ +20080122 open-source release + +Changes (w.r.t. previous open-source release): + +- Updated examples/parallel_for/seismic to improve the visuals and to + use the affinity_partitioner (20071127 and forward) for better + performance. +- Minor improvements to unittests and performance tests. + +------------------------------------------------------------------------ +20080115 open-source release + +Changes (w.r.t. previous open-source release): + +- Cleanup, simplifications and enhancements to the Makefiles for + building the libraries (see build/index.html for high-level + changes) and the examples. +- Use SwitchToThread() not Sleep() to yield threads on Windows*. +- Engineering work-in-progress on exception safety/support. +- Engineering work-in-progress on affinity_partitioner for + parallel_reduce. +- Engineering work-in-progress on improved gating for worker threads + (idle workers now block in the OS instead of spinning). +- Enhancements to Doxygen-readable comments in source code. + +Bugs fixed: + +- 102 - Support for parallel build with gmake -j +- 114 - /Wp64 build warning on Windows*. + +------------------------------------------------------------------------ +20071218 open-source release + +Changes (w.r.t. previous open-source release): + +- Full support for Microsoft* Visual Studio* 2008 in open-source. + Binaries for vc9/ will be available in future stable releases. +- New recursive_mutex class. +- Full support for 32-bit PowerMac including export files for builds. +- Improvements to parallel_do. + +------------------------------------------------------------------------ +20071206 open-source release + +Changes (w.r.t. previous open-source release): + +- Support for Microsoft* Visual Studio* 2008 in building libraries + from source as well as in vc9/ projects for examples. +- Small fixes to the affinity_partitioner first introduced in 20071127. +- Small fixes to the thread-stack size hook first introduced in 20071127. +- Engineering work in progress on concurrent_vector. +- Engineering work in progress on exception behavior. +- Unittest improvements. + +------------------------------------------------------------------------ +20071127 open-source release + +Changes (w.r.t. previous open-source release): + +- Task-to-thread affinity support (affinity partitioner) first appears. +- More work on concurrent_vector. +- New parallel_do algorithm (function-style version of parallel while) + and parallel_do/parallel_preorder example. +- New task_scheduler_init() hooks for getting default_num_threads() and + for setting thread stack size. +- Support for weak memory consistency models in the code base. +- Futex usage in the task scheduler (Linux). +- Started adding 32-bit PowerMac support. +- Intel(R) 9.1 compilers are now the base supported Intel(R) compiler + version. +- TBB libraries added to link line automatically on Microsoft Windows* + systems via #pragma comment linker directives. + +Open-source contributions integrated: + +- FreeBSD platform support patches. +- AIX weak memory model patch. + +Bugs fixed: + +- 108 - Removed broken affinity.h reference. +- 101 - Does not build on Debian Lenny (replaced arch with uname -m). + +------------------------------------------------------------------------ +20071030 open-source release + +Changes (w.r.t. previous open-source release): + +- More work on concurrent_vector. +- Better support for building with -Wall -Werror (or not) as desired. +- A few fixes to eliminate extraneous warnings. +- Begin introduction of versioning hooks so that the internal/API + version is tracked via TBB_INTERFACE_VERSION. The newest binary + libraries should always work with previously-compiled code when- + ever possible. +- Engineering work in progress on using futex inside the mutexes (Linux). +- Engineering work in progress on exception behavior. +- Engineering work in progress on a new parallel_do algorithm. +- Unittest improvements. + +------------------------------------------------------------------------ +20070927 open-source release + +Changes (w.r.t. Intel TBB 2.0 U1 commercial-aligned release): + +- Minor update to TBB 2.0 U1 below. +- Begin introduction of new concurrent_vector interfaces not released + with TBB 2.0 U1. + +------------------------------------------------------------------------ +Intel TBB 2.0 U1 commercial-aligned release (package 014, October 1, 2007) + +Corresponds to commercial 014 (for Linux*, 016) packages. + +Changes (w.r.t. Intel TBB 2.0 commercial-aligned release): + +- All open-source-release changes down to, and including, TBB 2.0 + below, were incorporated into this release. +- Made a number of changes to the officially supported OS list: + Added Linux* OSs: + Asianux* 3, Debian* 4.0, Fedora Core* 6, Fedora* 7, + Turbo Linux* 11, Ubuntu* 7.04; + Dropped Linux* OSs: + Asianux* 2, Fedora Core* 4, Haansoft* Linux 2006 Server, + Mandriva/Mandrake* 10.1, Miracle Linux* 4.0, + Red Flag* DC Server 5.0; + Only Mac OS* X 10.4.9 (and forward) and Xcode* tool suite 2.4.1 (and + forward) are now supported. +- Commercial installers on Linux* fixed to recommend the correct + binaries to use in more cases, with less unnecessary warnings. +- Changes to eliminate spurious build warnings. + +Open-source contributions integrated: + +- Two small header guard macro patches; it also fixed bug #94. +- New blocked_range3d class. + +Bugs fixed: + +- 93 - Removed misleading comments in task.h. +- 94 - See above. + +------------------------------------------------------------------------ +20070815 open-source release + +Changes: + +- Changes to eliminate spurious build warnings. +- Engineering work in progress on concurrent_vector allocator behavior. +- Added hooks to use the Intel(R) compiler code coverage tools. + +Open-source contributions integrated: + +- Mac OS* X build warning patch. + +Bugs fixed: + +- 88 - Fixed TBB compilation errors if both VS2005 and Windows SDK are + installed. + +------------------------------------------------------------------------ +20070719 open-source release + +Changes: + +- Minor update to TBB 2.0 commercial-aligned release below. +- Changes to eliminate spurious build warnings. + +------------------------------------------------------------------------ +Intel TBB 2.0 commercial-aligned release (package 010, July 19, 2007) + +Corresponds to commercial 010 (for Linux*, 012) packages. + +- TBB open-source debut release. + +------------------------------------------------------------------------ +Intel TBB 1.1 commercial release (April 10, 2007) + +Changes (w.r.t. Intel TBB 1.0 commercial release): + +- auto_partitioner which offered an automatic alternative to specifying + a grain size parameter to estimate the best granularity for tasks. +- The release was added to the Intel(R) C++ Compiler 10.0 Pro. + +------------------------------------------------------------------------ +Intel TBB 1.0 Update 2 commercial release + +Changes (w.r.t. Intel TBB 1.0 Update 1 commercial release): + +- Mac OS* X 64-bit support added. +- Source packages for commercial releases introduced. + +------------------------------------------------------------------------ +Intel TBB 1.0 Update 1 commercial-aligned release + +Changes (w.r.t. Intel TBB 1.0 commercial release): + +- Fix for critical package issue on Mac OS* X. + +------------------------------------------------------------------------ +Intel TBB 1.0 commercial release (August 29, 2006) + +Changes (w.r.t. Intel TBB 1.0 beta commercial release): + +- New namespace (and compatibility headers for old namespace). + Namespaces are tbb and tbb::internal and all classes are in the + underscore_style not the WindowsStyle. +- New class: scalable_allocator (and cache_aligned_allocator using that + if it exists). +- Added parallel_for/tacheon example. +- Removed C-style casts from headers for better C++ compliance. +- Bug fixes. +- Documentation improvements. +- Improved performance of the concurrent_hash_map class. +- Upgraded parallel_sort() to support STL-style random-access iterators + instead of just pointers. +- The Windows vs7_1 directories renamed to vs7.1 in examples. +- New class: spin version of reader-writer lock. +- Added push_back() interface to concurrent_vector(). + +------------------------------------------------------------------------ +Intel TBB 1.0 beta commercial release + +Initial release. + +Features / APIs: + +- Concurrent containers: ConcurrentHashTable, ConcurrentVector, + ConcurrentQueue. +- Parallel algorithms: ParallelFor, ParallelReduce, ParallelScan, + ParallelWhile, Pipeline, ParallelSort. +- Support: AlignedSpace, BlockedRange (i.e., 1D), BlockedRange2D +- Task scheduler with multi-master support. +- Atomics: read, write, fetch-and-store, fetch-and-add, compare-and-swap. +- Locks: spin, reader-writer, queuing, OS-wrapper. +- Memory allocation: STL-style memory allocator that avoids false + sharing. +- Timers. + +Tools Support: +- Intel(R) Thread Checker 3.0. +- Intel(R) Thread Profiler 3.0. + +Documentation: +- First Use Documents: README.txt, INSTALL.txt, Release_Notes.txt, + Doc_Index.html, Getting_Started.pdf, Tutorial.pdf, Reference.pdf. +- Class hierarchy HTML pages (Doxygen). +- Tree of index.html pages for navigating the installed package, esp. + for the examples. + +Examples: +- One for each of these TBB features: ConcurrentHashTable, ParallelFor, + ParallelReduce, ParallelWhile, Pipeline, Task. +- Live copies of examples from Getting_Started.pdf. +- TestAll example that exercises every class and header in the package + (i.e., a "liveness test"). +- Compilers: see Release_Notes.txt. +- APIs: OpenMP, WinThreads, Pthreads. + +Packaging: +- Package for Windows installs IA-32 and EM64T bits. +- Package for Linux installs IA-32, EM64T and IPF bits. +- Package for Mac OS* X installs IA-32 bits. +- All packages support Intel(R) software setup assistant (ISSA) and + install-time FLEXlm license checking. +- ISSA support allows license file to be specified directly in case of + no Internet connection or problems with IRC or serial #s. +- Linux installer allows root or non-root, RPM or non-RPM installs. +- FLEXlm license servers (for those who need floating/counted licenses) + are provided separately on Intel(R) Premier. + +------------------------------------------------------------------------ +Intel and Cilk are registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. + +* Other names and brands may be claimed as the property of others. diff --git a/COPYING b/COPYING new file mode 100644 index 0000000000..5af6ed874d --- /dev/null +++ b/COPYING @@ -0,0 +1,353 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. +---------------- END OF Gnu General Public License ---------------- + +The source code of Threading Building Blocks is distributed under version 2 +of the GNU General Public License, with the so-called "runtime exception," +as follows (or see any header or implementation file): + + As a special exception, you may use this file as part of a free software + library without restriction. Specifically, if other files instantiate + templates or use macros or inline functions from this file, or you compile + this file and link it with other files to produce an executable, this + file does not by itself cause the resulting executable to be covered by + the GNU General Public License. This exception does not however + invalidate any other reasons why the executable file might be covered by + the GNU General Public License. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000..bc459897b3 --- /dev/null +++ b/Makefile @@ -0,0 +1,80 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +tbb_root?=. +include $(tbb_root)/build/common.inc +.PHONY: default all tbb tbbmalloc tbbproxy test examples + +#workaround for non-depend targets tbb and tbbmalloc which both depend on version_string.ver +#According to documentation, recursively invoked make commands can process their targets in parallel +.NOTPARALLEL: tbb tbbmalloc tbbproxy + +default: tbb tbbmalloc $(if $(use_proxy),tbbproxy) + +all: tbb tbbmalloc tbbproxy test examples + +tbb: mkdir + $(MAKE) -C "$(work_dir)_debug" -r -f $(tbb_root)/build/Makefile.tbb cfg=debug + $(MAKE) -C "$(work_dir)_release" -r -f $(tbb_root)/build/Makefile.tbb cfg=release + +tbbmalloc: mkdir + $(MAKE) -C "$(work_dir)_debug" -r -f $(tbb_root)/build/Makefile.tbbmalloc cfg=debug malloc + $(MAKE) -C "$(work_dir)_release" -r -f $(tbb_root)/build/Makefile.tbbmalloc cfg=release malloc + +tbbproxy: mkdir + $(MAKE) -C "$(work_dir)_debug" -r -f $(tbb_root)/build/Makefile.tbbproxy cfg=debug tbbproxy + $(MAKE) -C "$(work_dir)_release" -r -f $(tbb_root)/build/Makefile.tbbproxy cfg=release tbbproxy + +test: tbb tbbmalloc $(if $(use_proxy),tbbproxy) + -$(MAKE) -C "$(work_dir)_debug" -r -f $(tbb_root)/build/Makefile.tbbmalloc cfg=debug malloc_test + -$(MAKE) -C "$(work_dir)_debug" -r -f $(tbb_root)/build/Makefile.test cfg=debug + -$(MAKE) -C "$(work_dir)_release" -r -f $(tbb_root)/build/Makefile.tbbmalloc cfg=release malloc_test + -$(MAKE) -C "$(work_dir)_release" -r -f $(tbb_root)/build/Makefile.test cfg=release + +rml: mkdir + $(MAKE) -C "$(work_dir)_debug" -r -f $(tbb_root)/build/Makefile.rml cfg=debug + $(MAKE) -C "$(work_dir)_release" -r -f $(tbb_root)/build/Makefile.rml cfg=release + + +examples: tbb tbbmalloc + $(MAKE) -C examples -r -f Makefile tbb_root=.. release test + +.PHONY: clean clean_examples mkdir info + +clean: clean_examples + $(shell $(RM) $(work_dir)_release$(SLASH)*.* >$(NUL) 2>$(NUL)) + $(shell $(RD) $(work_dir)_release >$(NUL) 2>$(NUL)) + $(shell $(RM) $(work_dir)_debug$(SLASH)*.* >$(NUL) 2>$(NUL)) + $(shell $(RD) $(work_dir)_debug >$(NUL) 2>$(NUL)) + @echo clean done + +clean_examples: + $(shell $(MAKE) -s -i -r -C examples -f Makefile tbb_root=.. clean >$(NUL) 2>$(NUL)) + +mkdir: + $(shell $(MD) "$(work_dir)_release" >$(NUL) 2>$(NUL)) + $(shell $(MD) "$(work_dir)_debug" >$(NUL) 2>$(NUL)) + @echo Created $(work_dir)_release and ..._debug directories + +info: + @echo OS: $(tbb_os) + @echo arch=$(arch) + @echo compiler=$(compiler) + @echo runtime=$(runtime) + @echo tbb_build_prefix=$(tbb_build_prefix) + diff --git a/README b/README new file mode 100644 index 0000000000..fcc87af0c9 --- /dev/null +++ b/README @@ -0,0 +1,11 @@ +Intel(R) Threading Building Blocks - README + +See index.html for directions and documentation. + +If source is present (./Makefile and src/ directories), +type 'gmake' in this directory to build and test. + +See examples/index.html for runnable examples and directions. + +See http://threadingbuildingblocks.org for full documentation +and software information. diff --git a/README.md b/README.md index 78810c0513..8bce84b8bb 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,27 @@ -# Intel(R) Threading Building Blocks +# Intel(R) Threading Building Blocks 4.4 Intel(R) Threading Building Blocks (Intel(R) TBB) lets you easily write parallel C++ programs that take full advantage of multicore performance, that are portable, composable and have future-proof scalability. -## Intel(R) TBB Distribution -* Commercial version: [https://software.intel.com/en-us/intel-tbb] (https://software.intel.com/en-us/intel-tbb) -* Community licensing: [https://software.intel.com/sites/campaigns/nest/] (https://software.intel.com/sites/campaigns/nest/) -* Open source version: [https://www.threadingbuildingblocks.org/] (https://www.threadingbuildingblocks.org/) -* Intel(R) TBB for Python\*: [http://anaconda.org/intel/tbb] (http://anaconda.org/intel/tbb) +## Release Information +Here are the latest [Changes] (CHANGES) and [Release Notes] +(doc/Release_Notes.txt) (contains system requirements and known issues). -## Repository Content -This is an official Intel(R) TBB public GitHub repository. All source and binary packages starting from Intel(R) TBB 4.4 -can be found at the [Release page] (https://github.com/01org/tbb/releases). Packages with older versions of Intel(R) TBB can be found -at the [Intel(R) TBB open source site] (https://www.threadingbuildingblocks.org/) +## Licensing +Intel(R) TBB 4.4 is licensed under [GPLv2] (COPYING) with the runtime exception. -## Repository Structure -The Master branch is empty and contains only README.md. +## Documentation +* Intel(R) TBB [tutorial] (https://software.intel.com/en-us/tbb-tutorial) +* Intel(R) TBB general documentation: [stable] (https://software.intel.com/en-us/tbb-documentation) +and [latest] (https://www.threadingbuildingblocks.org/docs/help/index.htm) -tbb_\ - branch for the new major version. All minor versions of the major release will be committed in this branch. +## Support +Please report issues and suggestions via +[GitHub issues](https://github.com/01org/tbb/issues) or start a topic on the +[Intel(R) TBB forum](http://software.intel.com/en-us/forums/intel-threading-building-blocks/). -For example: -* Intel(R) TBB 2017 initial release goes to branch tbb_2017. -* Intel(R) TBB 2017 Update 1 will go to branch tbb_2017 too. -* Intel(R) TBB 2018 initial release will go to branch tbb_2018. +## How to Contribute +Please read the instructions on the official [Intel(R) TBB open source site] (https://www.threadingbuildingblocks.org/submit-contribution). ------------------------------------------------------------------------ Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries in the U.S. and/or other countries. diff --git a/build/AIX.gcc.inc b/build/AIX.gcc.inc new file mode 100644 index 0000000000..3b19a6d92f --- /dev/null +++ b/build/AIX.gcc.inc @@ -0,0 +1,75 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +COMPILE_ONLY = -c -MMD +PREPROC_ONLY = -E -x c++ +INCLUDE_KEY = -I +DEFINE_KEY = -D +OUTPUT_KEY = -o # +OUTPUTOBJ_KEY = -o # +PIC_KEY = -fPIC +WARNING_AS_ERROR_KEY = -Werror +WARNING_KEY = -Wall +DYLIB_KEY = -shared +LIBDL = -ldl + +CPLUS = g++ +CONLY = gcc +LIB_LINK_FLAGS = -shared +LIBS = -lpthread -ldl +C_FLAGS = $(CPLUS_FLAGS) -x c + +ifeq ($(cfg), release) + CPLUS_FLAGS = -O2 -DUSE_PTHREAD -pthread +endif +ifeq ($(cfg), debug) + CPLUS_FLAGS = -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD -pthread +endif + +ASM= +ASM_FLAGS= + +TBB_ASM.OBJ= + +ifeq (powerpc,$(arch)) + CPLUS_FLAGS += -maix64 -Wl,-G + LIB_LINK_FLAGS += -maix64 -Wl,-b64 -Wl,-brtl -Wl,-G +endif + +#------------------------------------------------------------------------------ +# Setting assembler data. +#------------------------------------------------------------------------------ + +ASSEMBLY_SOURCE=ibm_aix51 +ifeq (powerpc,$(arch)) + TBB_ASM.OBJ = atomic_support.o +endif + +#------------------------------------------------------------------------------ +# End of setting assembler data. +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# Setting tbbmalloc data. +#------------------------------------------------------------------------------ + +M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions + +#------------------------------------------------------------------------------ +# End of setting tbbmalloc data. +#------------------------------------------------------------------------------ diff --git a/build/AIX.inc b/build/AIX.inc new file mode 100644 index 0000000000..5f87361d2f --- /dev/null +++ b/build/AIX.inc @@ -0,0 +1,66 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +ifndef arch + arch:=$(shell uname -p) + export arch +endif + +ifndef runtime + gcc_version:=$(shell gcc -dumpversion) + os_version:=$(shell uname -r) + os_kernel_version:=$(shell uname -r | sed -e 's/-.*$$//') + export runtime:=cc$(gcc_version)_kernel$(os_kernel_version) +endif + +native_compiler := gcc +export compiler ?= gcc +debugger ?= gdb + +CMD=$(SHELL) -c +CWD=$(shell pwd) +RM?=rm -f +RD?=rmdir +MD?=mkdir -p +NUL= /dev/null +SLASH=/ +MAKE_VERSIONS=sh $(tbb_root)/build/version_info_aix.sh $(VERSION_FLAGS) >version_string.ver +MAKE_TBBVARS=sh $(tbb_root)/build/generate_tbbvars.sh + +ifdef LIBPATH + export LIBPATH := .:$(LIBPATH) +else + export LIBPATH := . +endif + +####### Build settings ######################################################## + +OBJ = o +DLL = so + +TBB.LST = +TBB.DEF = +TBB.DLL = libtbb$(CPF_SUFFIX)$(DEBUG_SUFFIX).$(DLL) +TBB.LIB = $(TBB.DLL) +LINK_TBB.LIB = $(TBB.LIB) + +MALLOC.DLL = libtbbmalloc$(DEBUG_SUFFIX).$(DLL) +MALLOC.LIB = $(MALLOC.DLL) +LINK_MALLOC.LIB = $(MALLOC.LIB) + +TEST_LAUNCHER=sh $(tbb_root)/build/test_launcher.sh $(largs) diff --git a/build/FreeBSD.clang.inc b/build/FreeBSD.clang.inc new file mode 100644 index 0000000000..5cee5d78fc --- /dev/null +++ b/build/FreeBSD.clang.inc @@ -0,0 +1,116 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +COMPILE_ONLY = -c -MMD +PREPROC_ONLY = -E -x c++ +INCLUDE_KEY = -I +DEFINE_KEY = -D +OUTPUT_KEY = -o # +OUTPUTOBJ_KEY = -o # +PIC_KEY = -fPIC +WARNING_AS_ERROR_KEY = -Werror +WARNING_KEY = -Wall +TEST_WARNING_KEY = -Wextra -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor +WARNING_SUPPRESS = -Wno-parentheses -Wno-non-virtual-dtor -Wno-dangling-else +DYLIB_KEY = -shared +EXPORT_KEY = -Wl,--version-script, +LIBDL = + +CPLUS = clang++ +CONLY = clang +LIB_LINK_FLAGS = $(DYLIB_KEY) -Wl,-soname=$(BUILDING_LIBRARY) +LIBS += -lpthread -lrt +LINK_FLAGS = -Wl,-rpath-link=. -rdynamic +C_FLAGS = $(CPLUS_FLAGS) + +ifeq ($(cfg), release) + CPLUS_FLAGS = $(ITT_NOTIFY) -g -O2 -DUSE_PTHREAD +endif +ifeq ($(cfg), debug) + CPLUS_FLAGS = -DTBB_USE_DEBUG $(ITT_NOTIFY) -g -O0 -DUSE_PTHREAD +endif + +ifeq (libc++,$(stdlib)) + CPLUS_FLAGS += -stdlib=libc++ + LIB_LINK_FLAGS += -stdlib=libc++ +endif + +CPP11_FLAGS = -std=c++11 -D_TBB_CPP0X + +ifneq (00,$(lambdas)$(cpp0x)) + CXX_ONLY_FLAGS += $(CPP11_FLAGS) +endif + +TBB_ASM.OBJ= +MALLOC_ASM.OBJ= + +ifeq (intel64,$(arch)) + ITT_NOTIFY = -DDO_ITT_NOTIFY + CPLUS_FLAGS += -m64 + LIB_LINK_FLAGS += -m64 +endif + +ifeq (ia32,$(arch)) + ITT_NOTIFY = -DDO_ITT_NOTIFY + CPLUS_FLAGS += -m32 -march=pentium4 + LIB_LINK_FLAGS += -m32 +endif + +ifeq (ppc64,$(arch)) + CPLUS_FLAGS += -m64 + LIB_LINK_FLAGS += -m64 +endif + +ifeq (ppc32,$(arch)) + CPLUS_FLAGS += -m32 + LIB_LINK_FLAGS += -m32 +endif + +ifeq (bg,$(arch)) + CPLUS = bgclang++ + CONLY = bgclang +endif + +#------------------------------------------------------------------------------ +# Setting assembler data. +#------------------------------------------------------------------------------ +ASM = as +ifeq (intel64,$(arch)) + ASM_FLAGS += --64 +endif +ifeq (ia32,$(arch)) + ASM_FLAGS += --32 +endif +ifeq ($(cfg),debug) + ASM_FLAGS += -g +endif + +ASSEMBLY_SOURCE=$(arch)-gas +#------------------------------------------------------------------------------ +# End of setting assembler data. +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# Setting tbbmalloc data. +#------------------------------------------------------------------------------ + +M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions + +#------------------------------------------------------------------------------ +# End of setting tbbmalloc data. +#------------------------------------------------------------------------------ diff --git a/build/FreeBSD.gcc.inc b/build/FreeBSD.gcc.inc new file mode 100644 index 0000000000..20f002711a --- /dev/null +++ b/build/FreeBSD.gcc.inc @@ -0,0 +1,86 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +COMPILE_ONLY = -c -MMD +PREPROC_ONLY = -E -x c++ +INCLUDE_KEY = -I +DEFINE_KEY = -D +OUTPUT_KEY = -o # +OUTPUTOBJ_KEY = -o # +PIC_KEY = -fPIC +WARNING_AS_ERROR_KEY = -Werror +WARNING_KEY = -Wall +DYLIB_KEY = -shared +WARNING_SUPPRESS = -Wno-parentheses + +CPLUS = g++ +CONLY = gcc +LIB_LINK_FLAGS = -shared +LIBS = -lpthread +C_FLAGS = $(CPLUS_FLAGS) + +ifeq ($(cfg), release) + CPLUS_FLAGS = -g -O2 -DUSE_PTHREAD +endif +ifeq ($(cfg), debug) + CPLUS_FLAGS = -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD +endif + +ASM= +ASM_FLAGS= + +TBB_ASM.OBJ= +MALLOC_ASM.OBJ= + +ifeq (ia64,$(arch)) +# Position-independent code (PIC) is a must on IA-64 architecture, even for regular (not shared) executables + CPLUS_FLAGS += $(PIC_KEY) +endif + +ifeq (intel64,$(arch)) + CPLUS_FLAGS += -m64 + LIB_LINK_FLAGS += -m64 +endif + +ifeq (ia32,$(arch)) + CPLUS_FLAGS += -m32 + LIB_LINK_FLAGS += -m32 +endif + +#------------------------------------------------------------------------------ +# Setting assembler data. +#------------------------------------------------------------------------------ +ASSEMBLY_SOURCE=$(arch)-gas +ifeq (ia64,$(arch)) + ASM=as + TBB_ASM.OBJ = atomic_support.o lock_byte.o log2.o pause.o + MALLOC_ASM.OBJ = atomic_support.o lock_byte.o pause.o +endif +#------------------------------------------------------------------------------ +# End of setting assembler data. +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# Setting tbbmalloc data. +#------------------------------------------------------------------------------ + +M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions + +#------------------------------------------------------------------------------ +# End of setting tbbmalloc data. +#------------------------------------------------------------------------------ diff --git a/build/FreeBSD.inc b/build/FreeBSD.inc new file mode 100644 index 0000000000..11d125e0de --- /dev/null +++ b/build/FreeBSD.inc @@ -0,0 +1,74 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +ifndef arch + ifeq ($(shell uname -m),i386) + export arch:=ia32 + endif + ifeq ($(shell uname -m),ia64) + export arch:=ia64 + endif + ifeq ($(shell uname -m),amd64) + export arch:=intel64 + endif +endif + +ifndef runtime + gcc_version:=$(shell gcc -dumpversion) + os_version:=$(shell uname -r) + os_kernel_version:=$(shell uname -r | sed -e 's/-.*$$//') + export runtime:=cc$(gcc_version)_kernel$(os_kernel_version) +endif + +native_compiler := gcc +export compiler ?= gcc +debugger ?= gdb + +CMD=$(SHELL) -c +CWD=$(shell pwd) +RM?=rm -f +RD?=rmdir +MD?=mkdir -p +NUL= /dev/null +SLASH=/ +MAKE_VERSIONS=sh $(tbb_root)/build/version_info_linux.sh $(VERSION_FLAGS) >version_string.ver +MAKE_TBBVARS=sh $(tbb_root)/build/generate_tbbvars.sh + +ifdef LD_LIBRARY_PATH + export LD_LIBRARY_PATH := .:$(LD_LIBRARY_PATH) +else + export LD_LIBRARY_PATH := . +endif + +####### Build settings ######################################################## + +OBJ = o +DLL = so +LIBEXT=so + +TBB.LST = +TBB.DEF = +TBB.DLL = libtbb$(CPF_SUFFIX)$(DEBUG_SUFFIX).$(DLL) +TBB.LIB = $(TBB.DLL) +LINK_TBB.LIB = $(TBB.LIB) + +MALLOC.DLL = libtbbmalloc$(DEBUG_SUFFIX).$(DLL) +MALLOC.LIB = $(MALLOC.DLL) +LINK_MALLOC.LIB = $(MALLOC.LIB) + +TEST_LAUNCHER=sh $(tbb_root)/build/test_launcher.sh $(largs) diff --git a/build/Makefile.rml b/build/Makefile.rml new file mode 100644 index 0000000000..43cba2dd60 --- /dev/null +++ b/build/Makefile.rml @@ -0,0 +1,162 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +tbb_root ?= $(TBBROOT) +BUILDING_PHASE=1 +TEST_RESOURCE = $(RML.RES) +include $(tbb_root)/build/common.inc +DEBUG_SUFFIX=$(findstring _debug,_$(cfg)) + +ifeq (android,$(target)) +$(error "RML is not supported on Android") +endif + +# default target +default_rml: rml rml_test + +RML_ROOT ?= $(tbb_root)/src/rml +RML_SERVER_ROOT = $(RML_ROOT)/server + +VPATH = $(tbb_root)/src/tbb $(tbb_root)/src/tbb/$(ASSEMBLY_SOURCE) +VPATH += $(RML_ROOT)/server $(RML_ROOT)/client $(RML_ROOT)/test $(tbb_root)/src/test + +include $(tbb_root)/build/common_rules.inc + +#-------------------------------------------------------------------------- +# Define rules for making the RML server shared library and client objects. +#-------------------------------------------------------------------------- + +# Object files that make up RML server +RML_SERVER.OBJ = rml_server.$(OBJ) + +# Object files that RML clients need +RML_TBB_CLIENT.OBJ ?= rml_tbb.$(OBJ) dynamic_link_rml.$(OBJ) +RML_OMP_CLIENT.OBJ ?= rml_omp.$(OBJ) omp_dynamic_link.$(OBJ) + +RML.OBJ = $(RML_SERVER.OBJ) $(RML_TBB_CLIENT.OBJ) $(RML_OMP_CLIENT.OBJ) +ifeq (windows,$(tbb_os)) +RML_ASM.OBJ = $(if $(findstring intel64,$(arch)),$(TBB_ASM.OBJ)) +endif +ifeq (linux,$(tbb_os)) +RML_ASM.OBJ = $(if $(findstring ia64,$(arch)),$(TBB_ASM.OBJ)) +endif + +RML_TBB_DEP= cache_aligned_allocator_rml.$(OBJ) dynamic_link_rml.$(OBJ) concurrent_vector_rml.$(OBJ) semaphore_rml.$(OBJ) tbb_misc_rml.$(OBJ) tbb_misc_ex_rml.$(OBJ) +TBB_DEP_NON_RML_TEST?= cache_aligned_allocator_rml.$(OBJ) dynamic_link_rml.$(OBJ) $(RML_ASM.OBJ) tbb_misc_rml.$(OBJ) tbb_misc_ex_rml.$(OBJ) +ifeq ($(cfg),debug) +RML_TBB_DEP+= spin_mutex_rml.$(OBJ) +TBB_DEP_RML_TEST?= $(RML_ASM.OBJ) tbb_misc_rml.$(OBJ) +else +TBB_DEP_RML_TEST?= $(RML_ASM.OBJ) +endif +LIBS += $(LIBDL) + +INCLUDES += $(INCLUDE_KEY)$(RML_ROOT)/include $(INCLUDE_KEY). +T_INCLUDES = $(INCLUDES) $(INCLUDE_KEY)$(tbb_root)/src/test $(INCLUDE_KEY)$(RML_SERVER_ROOT) + +ifeq ($(rml_wcrm),1) +CPLUS_FLAGS+=/DRML_USE_WCRM +endif + +# Suppress superfluous warnings for RML compilation +R_CPLUS_FLAGS = $(subst DO_ITT_NOTIFY,DO_ITT_NOTIFY=0,$(CPLUS_FLAGS)) $(WARNING_SUPPRESS) \ + $(DEFINE_KEY)TBB_USE_THREADING_TOOLS=0 $(DEFINE_KEY)__TBB_RML_STATIC=1 $(DEFINE_KEY)__TBB_NO_IMPLICIT_LINKAGE=1 + +%.$(OBJ): %.cpp + $(CPLUS) $(COMPILE_ONLY) $(R_CPLUS_FLAGS) $(PIC_KEY) $(INCLUDES) $< + +ifeq (linux,$(tbb_os)) +omp_dynamic_link.$(OBJ): CPLUS_FLAGS+=-fno-exceptions +endif + +tbb_misc_rml.$(OBJ): version_string.ver + +RML_TEST.OBJ = test_job_automaton.$(OBJ) test_thread_monitor.$(OBJ) test_rml_tbb.$(OBJ) test_rml_omp.$(OBJ) test_rml_mixed.$(OBJ) + +$(RML_TBB_DEP): %_rml.$(OBJ): %.cpp + $(CPLUS) $(COMPILE_ONLY) $(OUTPUTOBJ_KEY)$@ $(R_CPLUS_FLAGS) $(PIC_KEY) $(INCLUDES) $< + +$(RML_TEST.OBJ): %.$(OBJ): %.cpp + $(CPLUS) $(COMPILE_ONLY) $(R_CPLUS_FLAGS) $(PIC_KEY) $(T_INCLUDES) $< + +ifneq (,$(RML.DEF)) +rml.def: $(RML.DEF) + $(CPLUS) $(PREPROC_ONLY) $< $(CPLUS_FLAGS) $(INCLUDES) > $@ + +LIB_LINK_FLAGS += $(EXPORT_KEY)rml.def +$(RML.DLL): rml.def +endif + +$(RML.DLL): BUILDING_LIBRARY = $(RML.DLL) +$(RML.DLL): $(RML_TBB_DEP) $(RML_SERVER.OBJ) $(RML.RES) $(RML_NO_VERSION.DLL) $(RML_ASM.OBJ) + $(LIB_LINK_CMD) $(LIB_OUTPUT_KEY)$(RML.DLL) $(RML_SERVER.OBJ) $(RML_TBB_DEP) $(RML_ASM.OBJ) $(RML.RES) $(LIB_LINK_LIBS) $(LIB_LINK_FLAGS) + +ifneq (,$(RML_NO_VERSION.DLL)) +$(RML_NO_VERSION.DLL): + echo "INPUT ($(RML.DLL))" > $(RML_NO_VERSION.DLL) +endif + +rml: $(RML.DLL) $(RML_TBB_CLIENT.OBJ) $(RML_OMP_CLIENT.OBJ) + +#------------------------------------------------------ +# End of rules for making the RML server shared library +#------------------------------------------------------ + +#------------------------------------------------------ +# Define rules for making the RML unit tests +#------------------------------------------------------ + +add_debug=$(basename $(1))_debug$(suffix $(1)) +cross_suffix=$(if $(crosstest),$(if $(DEBUG_SUFFIX),$(subst _debug,,$(1)),$(call add_debug,$(1))),$(1)) + +RML_TESTS = test_job_automaton.$(TEST_EXT) test_thread_monitor.$(TEST_EXT) +RML_CUSTOM_TESTS = test_rml_tbb.$(TEST_EXT) test_rml_omp.$(TEST_EXT) test_rml_mixed.$(TEST_EXT) test_rml_omp_c_linkage.$(TEST_EXT) + +test_rml_tbb.$(TEST_EXT): test_rml_tbb.$(OBJ) $(RML_TBB_CLIENT.OBJ) $(TBB_DEP_RML_TEST) + $(CPLUS) $(OUTPUT_KEY)$@ $(CPLUS_FLAGS) test_rml_tbb.$(OBJ) $(RML_TBB_CLIENT.OBJ) $(TBB_DEP_RML_TEST) $(LIBS) $(LINK_FLAGS) + +test_rml_omp.$(TEST_EXT): test_rml_omp.$(OBJ) $(RML_OMP_CLIENT.OBJ) $(TBB_DEP_NON_RML_TEST) + $(CPLUS) $(OUTPUT_KEY)$@ $(CPLUS_FLAGS) test_rml_omp.$(OBJ) $(RML_OMP_CLIENT.OBJ) $(TBB_DEP_NON_RML_TEST) $(LIBS) $(LINK_FLAGS) + +test_rml_mixed.$(TEST_EXT): test_rml_mixed.$(OBJ) $(RML_TBB_CLIENT.OBJ) $(RML_OMP_CLIENT.OBJ) $(TBB_DEP_RML_TEST) + $(CPLUS) $(OUTPUT_KEY)$@ $(CPLUS_FLAGS) test_rml_mixed.$(OBJ) $(RML_TBB_CLIENT.OBJ) $(RML_OMP_CLIENT.OBJ) $(TBB_DEP_RML_TEST) $(LIBS) $(LINK_FLAGS) + +rml_omp_stub.$(OBJ): rml_omp_stub.cpp + $(CPLUS) $(COMPILE_ONLY) $(M_CPLUS_FLAGS) $(WARNING_SUPPRESS) $(T_INCLUDES) $(PIC_KEY) $< + +test_rml_omp_c_linkage.$(TEST_EXT): test_rml_omp_c_linkage.$(OBJ) rml_omp_stub.$(OBJ) omp_dynamic_link.$(OBJ) + $(CONLY) $(C_FLAGS) $(OUTPUT_KEY)$@ test_rml_omp_c_linkage.$(OBJ) rml_omp_stub.$(OBJ) omp_dynamic_link.$(OBJ) $(LIBS) $(LINK_FLAGS) + +$(RML_TESTS): %.$(TEST_EXT): %.$(OBJ) $(TBB_DEP_NON_RML_TEST) + $(CPLUS) $(OUTPUT_KEY)$@ $(CPLUS_FLAGS) $< $(TBB_DEP_NON_RML_TEST) $(LIBS) $(LINK_FLAGS) + +### run_cmd is usually empty +rml_test: $(call cross_suffix,$(RML.DLL)) $(TEST_PREREQUISITE) $(RML_TESTS) $(RML_CUSTOM_TESTS) + $(run_cmd) ./test_job_automaton.$(TEST_EXT) $(args) + $(run_cmd) ./test_thread_monitor.$(TEST_EXT) $(args) + $(run_cmd) ./test_rml_tbb.$(TEST_EXT) $(args) + $(run_cmd) ./test_rml_omp.$(TEST_EXT) $(args) + $(run_cmd) ./test_rml_mixed.$(TEST_EXT) $(args) + $(run_cmd) ./test_rml_omp_c_linkage.$(TEST_EXT) $(args) + +#------------------------------------------------------ +# End of rules for making the TBBMalloc unit tests +#------------------------------------------------------ + +# Include automatically generated dependences +-include *.d diff --git a/build/Makefile.tbb b/build/Makefile.tbb new file mode 100644 index 0000000000..06e76e2b32 --- /dev/null +++ b/build/Makefile.tbb @@ -0,0 +1,122 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +#------------------------------------------------------------------------------ +# Define rules for making the TBB shared library. +#------------------------------------------------------------------------------ + +tbb_root ?= "$(TBBROOT)" +BUILDING_PHASE=1 +include $(tbb_root)/build/common.inc +DEBUG_SUFFIX=$(findstring _debug,_$(cfg)) + +#------------------------------------------------------------ +# Define static pattern rules dealing with .cpp source files +#------------------------------------------------------------ +$(warning CONFIG: cfg=$(cfg) arch=$(arch) compiler=$(compiler) target=$(target) runtime=$(runtime)) + +default_tbb: $(TBB.DLL) +.PHONY: default_tbb tbbvars clean +.PRECIOUS: %.$(OBJ) + +VPATH = $(tbb_root)/src/tbb/$(ASSEMBLY_SOURCE) $(tbb_root)/src/tbb $(tbb_root)/src/old $(tbb_root)/src/rml/client + +CPLUS_FLAGS += $(PIC_KEY) $(DEFINE_KEY)__TBB_BUILD=1 + +# suppress warnings for build of itt_notify by GCC3 +ifneq (,$(findstring gcc_cc3., $(compiler)_$(runtime))) +KNOWN_WARNINGS += itt_notify.$(OBJ) +endif + +# Object files (that were compiled from C++ code) that gmake up TBB +TBB_CPLUS.OBJ = concurrent_hash_map.$(OBJ) \ + concurrent_queue.$(OBJ) \ + concurrent_vector.$(OBJ) \ + dynamic_link.$(OBJ) \ + itt_notify.$(OBJ) \ + cache_aligned_allocator.$(OBJ) \ + pipeline.$(OBJ) \ + queuing_mutex.$(OBJ) \ + queuing_rw_mutex.$(OBJ) \ + reader_writer_lock.$(OBJ) \ + spin_rw_mutex.$(OBJ) \ + x86_rtm_rw_mutex.$(OBJ) \ + spin_mutex.$(OBJ) \ + critical_section.$(OBJ) \ + mutex.$(OBJ) \ + recursive_mutex.$(OBJ) \ + condition_variable.$(OBJ) \ + tbb_thread.$(OBJ) \ + concurrent_monitor.$(OBJ) \ + semaphore.$(OBJ) \ + private_server.$(OBJ) \ + rml_tbb.$(OBJ) \ + tbb_misc.$(OBJ) \ + tbb_misc_ex.$(OBJ) \ + task.$(OBJ) \ + task_group_context.$(OBJ) \ + governor.$(OBJ) \ + market.$(OBJ) \ + arena.$(OBJ) \ + scheduler.$(OBJ) \ + observer_proxy.$(OBJ) \ + tbb_statistics.$(OBJ) \ + tbb_main.$(OBJ) + +# OLD/Legacy object files for backward binary compatibility +ifeq (,$(findstring $(DEFINE_KEY)TBB_NO_LEGACY,$(CPLUS_FLAGS))) +TBB_CPLUS_OLD.OBJ = \ + concurrent_vector_v2.$(OBJ) \ + concurrent_queue_v2.$(OBJ) \ + spin_rw_mutex_v2.$(OBJ) \ + task_v2.$(OBJ) +endif + +# Object files that gmake up TBB (TBB_ASM.OBJ is platform-specific) +TBB.OBJ = $(TBB_CPLUS.OBJ) $(TBB_CPLUS_OLD.OBJ) $(TBB_ASM.OBJ) + +# Suppress superfluous warnings for TBB compilation +WARNING_KEY += $(WARNING_SUPPRESS) + +include $(tbb_root)/build/common_rules.inc + +ifneq (,$(TBB.DEF)) +tbb.def: $(TBB.DEF) $(TBB.LST) + $(CPLUS) $(PREPROC_ONLY) $< $(CPLUS_FLAGS) $(INCLUDES) > $@ + +LIB_LINK_FLAGS += $(EXPORT_KEY)tbb.def +$(TBB.DLL): tbb.def +endif + +tbbvars.sh: + $(MAKE_TBBVARS) + +$(TBB.DLL): BUILDING_LIBRARY = $(TBB.DLL) +$(TBB.DLL): $(TBB.OBJ) $(TBB.RES) tbbvars.sh $(TBB_NO_VERSION.DLL) + $(LIB_LINK_CMD) $(LIB_OUTPUT_KEY)$(TBB.DLL) $(TBB.OBJ) $(TBB.RES) $(LIB_LINK_LIBS) $(LIB_LINK_FLAGS) + +ifneq (,$(TBB_NO_VERSION.DLL)) +$(TBB_NO_VERSION.DLL): + echo "INPUT ($(TBB.DLL))" > $(TBB_NO_VERSION.DLL) +endif + +#clean: +# $(RM) *.$(OBJ) *.$(DLL) *.res *.map *.ilk *.pdb *.exp *.manifest *.tmp *.d core core.*[0-9][0-9] *.ver + +# Include automatically generated dependences +-include *.d diff --git a/build/Makefile.tbbmalloc b/build/Makefile.tbbmalloc new file mode 100644 index 0000000000..f2be65e12a --- /dev/null +++ b/build/Makefile.tbbmalloc @@ -0,0 +1,234 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# default target +default_malloc: malloc malloc_test + +tbb_root ?= $(TBBROOT) +BUILDING_PHASE=1 +TEST_RESOURCE = $(MALLOC.RES) +TESTFILE=tbbmalloc +include $(tbb_root)/build/common.inc +DEBUG_SUFFIX=$(findstring _debug,$(call cross_cfg,_$(cfg))) + +MALLOC_ROOT ?= $(tbb_root)/src/tbbmalloc +MALLOC_SOURCE_ROOT ?= $(MALLOC_ROOT) + +VPATH = $(tbb_root)/src/tbb/$(ASSEMBLY_SOURCE) $(tbb_root)/src/tbb $(tbb_root)/src/test +VPATH += $(MALLOC_ROOT) $(MALLOC_SOURCE_ROOT) + +CPLUS_FLAGS += $(if $(crosstest),$(DEFINE_KEY)__TBBMALLOC_NO_IMPLICIT_LINKAGE=1) + +TEST_SUFFIXES=proxy +TEST_PREREQUISITE+=$(MALLOC.LIB) +LINK_FILES+=$(LINK_MALLOC.LIB) +include $(tbb_root)/build/common_rules.inc + +ORIG_CPLUS_FLAGS:=$(CPLUS_FLAGS) +ORIG_INCLUDES:=$(INCLUDES) +ORIG_LINK_MALLOC.LIB:=$(LINK_MALLOC.LIB) + +#------------------------------------------------------ +# Define rules for making the TBBMalloc shared library. +#------------------------------------------------------ + +# Object files that make up TBBMalloc +MALLOC_CPLUS.OBJ = backend.$(OBJ) large_objects.$(OBJ) backref.$(OBJ) tbbmalloc.$(OBJ) +MALLOC.OBJ := $(MALLOC_CPLUS.OBJ) $(MALLOC_ASM.OBJ) itt_notify_malloc.$(OBJ) frontend.$(OBJ) +PROXY.OBJ := proxy.$(OBJ) tbb_function_replacement.$(OBJ) +M_CPLUS_FLAGS := $(subst $(WARNING_KEY),,$(M_CPLUS_FLAGS)) $(DEFINE_KEY)__TBBMALLOC_BUILD=1 +M_INCLUDES := $(INCLUDES) $(INCLUDE_KEY)$(MALLOC_ROOT) $(INCLUDE_KEY)$(MALLOC_SOURCE_ROOT) + +# Suppress superfluous warnings for TBBMalloc compilation +$(MALLOC.OBJ): M_CPLUS_FLAGS += $(WARNING_SUPPRESS) +# Suppress superfluous warnings for TBBMalloc proxy compilation +$(PROXY.OBJ): CPLUS_FLAGS += $(WARNING_SUPPRESS) + +frontend.$(OBJ): frontend.cpp version_string.ver + $(CPLUS) $(COMPILE_ONLY) $(M_CPLUS_FLAGS) $(PIC_KEY) $(M_INCLUDES) $(INCLUDE_KEY). $< + +$(PROXY.OBJ): %.$(OBJ): %.cpp + $(CPLUS) $(COMPILE_ONLY) $(CPLUS_FLAGS) $(PIC_KEY) $(DEFINE_KEY)__TBBMALLOC_BUILD=1 $(M_INCLUDES) $< + +$(MALLOC_CPLUS.OBJ): %.$(OBJ): %.cpp + $(CPLUS) $(COMPILE_ONLY) $(M_CPLUS_FLAGS) $(PIC_KEY) $(M_INCLUDES) $< + +itt_notify_malloc.$(OBJ): itt_notify.cpp + $(CPLUS) $(COMPILE_ONLY) $(M_CPLUS_FLAGS) $(PIC_KEY) $(OUTPUTOBJ_KEY)$@ $(INCLUDES) $< + +MALLOC_LINK_FLAGS = $(LIB_LINK_FLAGS) +PROXY_LINK_FLAGS = $(LIB_LINK_FLAGS) + +ifneq (,$(MALLOC.DEF)) +tbbmalloc.def: $(MALLOC.DEF) + $(CPLUS) $(PREPROC_ONLY) $< $(M_CPLUS_FLAGS) $(WARNING_SUPPRESS) $(INCLUDES) > $@ + +MALLOC_LINK_FLAGS += $(EXPORT_KEY)tbbmalloc.def +$(MALLOC.DLL): tbbmalloc.def +endif + +$(MALLOC.DLL): BUILDING_LIBRARY = $(MALLOC.DLL) +$(MALLOC.DLL): $(MALLOC.OBJ) $(MALLOC.RES) $(MALLOC_NO_VERSION.DLL) + $(subst $(CPLUS),$(CONLY),$(LIB_LINK_CMD)) $(LIB_OUTPUT_KEY)$(MALLOC.DLL) $(MALLOC.OBJ) $(MALLOC.RES) $(LIB_LINK_LIBS) $(MALLOC_LINK_FLAGS) + +ifneq (,$(MALLOCPROXY.DEF)) +tbbmallocproxy.def: $(MALLOCPROXY.DEF) + $(CPLUS) $(PREPROC_ONLY) $< $(CPLUS_FLAGS) $(WARNING_SUPPRESS) $(INCLUDES) > $@ + +PROXY_LINK_FLAGS += $(EXPORT_KEY)tbbmallocproxy.def +$(MALLOCPROXY.DLL): tbbmallocproxy.def +endif + +ifneq (,$(MALLOCPROXY.DLL)) +$(MALLOCPROXY.DLL): BUILDING_LIBRARY = $(MALLOCPROXY.DLL) +$(MALLOCPROXY.DLL): $(PROXY.OBJ) $(MALLOCPROXY_NO_VERSION.DLL) $(MALLOC.DLL) $(MALLOC.RES) + $(LIB_LINK_CMD) $(LIB_OUTPUT_KEY)$(MALLOCPROXY.DLL) $(PROXY.OBJ) $(MALLOC.RES) $(LIB_LINK_LIBS) $(LINK_MALLOC.LIB) $(PROXY_LINK_FLAGS) +endif + +ifneq (,$(MALLOC_NO_VERSION.DLL)) +$(MALLOC_NO_VERSION.DLL): + echo "INPUT ($(MALLOC.DLL))" > $(MALLOC_NO_VERSION.DLL) +endif + +ifneq (,$(MALLOCPROXY_NO_VERSION.DLL)) +$(MALLOCPROXY_NO_VERSION.DLL): + echo "INPUT ($(MALLOCPROXY.DLL))" > $(MALLOCPROXY_NO_VERSION.DLL) +endif + +malloc: $(MALLOC.DLL) $(MALLOCPROXY.DLL) + +malloc_dll: $(MALLOC.DLL) + +malloc_proxy_dll: $(MALLOCPROXY.DLL) + +.PHONY: malloc malloc_dll malloc_proxy_dll + +#------------------------------------------------------ +# End of rules for making the TBBMalloc shared library +#------------------------------------------------------ + +#------------------------------------------------------ +# Define rules for making the TBBMalloc unit tests +#------------------------------------------------------ + +# --------- The list of TBBMalloc unit tests ---------- +MALLOC_TESTS = test_ScalableAllocator.$(TEST_EXT) \ + test_ScalableAllocator_STL.$(TEST_EXT) \ + test_malloc_compliance.$(TEST_EXT) \ + test_malloc_regression.$(TEST_EXT) \ + test_malloc_init_shutdown.$(TEST_EXT) \ + test_malloc_pools.$(TEST_EXT) \ + test_malloc_pure_c.$(TEST_EXT) \ + test_malloc_whitebox.$(TEST_EXT) \ + test_malloc_used_by_lib.$(TEST_EXT) \ + test_malloc_lib_unload.$(TEST_EXT) +ifneq (,$(MALLOCPROXY.DLL)) +MALLOC_TESTS += test_malloc_overload.$(TEST_EXT) \ + test_malloc_overload_proxy.$(TEST_EXT) \ + test_malloc_atexit.$(TEST_EXT) +endif +# ----------------------------------------------------- + +# ------------ Set test specific variables ------------ +ifeq (windows.gcc,$(tbb_os).$(compiler)) +test_malloc_overload.$(TEST_EXT): LIBS += $(MALLOCPROXY.LIB) +endif + +MALLOC_M_CPLUS_TESTS = test_malloc_whitebox.$(TEST_EXT) test_malloc_lib_unload.$(TEST_EXT) \ + test_malloc_used_by_lib.$(TEST_EXT) +MALLOC_NO_LIB_TESTS = test_malloc_whitebox.$(TEST_EXT) test_malloc_lib_unload.$(TEST_EXT) \ + test_malloc_used_by_lib.$(TEST_EXT) test_malloc_overload.$(TEST_EXT) +MALLOC_LINK_PROXY_TESTS = test_malloc_overload_proxy.$(TEST_EXT) +MALLOC_ADD_DLL_TESTS = test_malloc_lib_unload.$(TEST_EXT) test_malloc_used_by_lib.$(TEST_EXT) \ + test_malloc_atexit.$(TEST_EXT) + +# TODO: implement accurate warning suppression for tests to unify with Makefile.test. + +$(MALLOC_M_CPLUS_TESTS): CPLUS_FLAGS=$(M_CPLUS_FLAGS) +$(MALLOC_M_CPLUS_TESTS): INCLUDES=$(M_INCLUDES) +$(MALLOC_NO_LIB_TESTS): LINK_MALLOC.LIB= +$(MALLOC_NO_LIB_TESTS): LINK_FLAGS+=$(LIBDL) +$(MALLOC_LINK_PROXY_TESTS): LINK_MALLOC.LIB=$(LINK_MALLOCPROXY.LIB) +ifneq (,$(DYLIB_KEY)) +$(MALLOC_ADD_DLL_TESTS): %.$(TEST_EXT): %_dll.$(DLL) +$(MALLOC_ADD_DLL_TESTS): TEST_LIBS+=$(@:.$(TEST_EXT)=_dll.$(LIBEXT)) +endif + +test_malloc_over%.$(TEST_EXT): CPLUS_FLAGS=$(subst /MT,/MD,$(M_CPLUS_FLAGS)) +test_malloc_over%.$(TEST_EXT): INCLUDES=$(M_INCLUDES) +test_malloc_overload_proxy.$(TEST_EXT): LINK_FLAGS+=$(LIBDL) + +test_malloc_atexit_dll.$(DLL): CPLUS_FLAGS=$(subst /MT,/MD,$(M_CPLUS_FLAGS)) +test_malloc_atexit.$(TEST_EXT): CPLUS_FLAGS=$(subst /MT,/MD,$(M_CPLUS_FLAGS)) +test_malloc_atexit.$(TEST_EXT): LINK_FLAGS+=$(LIBDL) +# on Ubuntu 11.10 linker called with --as-needed, so dependence on libtbbmalloc_proxy +# is not created, and malloc overload via linking with -ltbbmalloc_proxy is not working. +# Overcome with --no-as-needed. +ifeq (linux.gcc,$(tbb_os).$(compiler)) +test_malloc_atexit.$(TEST_EXT): MALLOCPROXY.LIB := -Wl,--no-as-needed $(MALLOCPROXY.LIB) +endif +# The test isn't added to MALLOC_LINK_PROXY_TESTS, because we need both +# tbbmalloc and proxy libs. For platforms other than Android it's enough +# to modify LINK_MALLOC.LIB for TEST_EXT target only. But under Android build +# of DLL and TEST_EXT can be requested independently, so there is no chance +# to set LINK_MALLOC.LIB in TEST_EXT build rule, and affect DLL build. +test_malloc_atexit.$(TEST_EXT): LINK_MALLOC.LIB := $(LINK_MALLOC.LIB) $(LINK_MALLOCPROXY.LIB) +test_malloc_atexit_dll.$(DLL): LINK_MALLOC.LIB := $(LINK_MALLOC.LIB) $(LINK_MALLOCPROXY.LIB) + +test_malloc_whitebox.$(TEST_EXT): $(MALLOC_ASM.OBJ) version_string.ver +test_malloc_whitebox.$(TEST_EXT): INCLUDES+=$(INCLUDE_KEY). +test_malloc_whitebox.$(TEST_EXT): LINK_FILES+=$(MALLOC_ASM.OBJ) + +# Some _dll targets need to restore variables since they are changed by parent +# target-specific rule of its .exe targets +test_malloc_lib_unload_dll.$(DLL): CPLUS_FLAGS=$(ORIG_CPLUS_FLAGS) +test_malloc_lib_unload_dll.$(DLL): INCLUDES=$(ORIG_INCLUDES) + +test_malloc_used_by_lib_dll.$(DLL): CPLUS_FLAGS=$(subst /MT,/LD,$(M_CPLUS_FLAGS)) +test_malloc_used_by_lib_dll.$(DLL): LINK_FILES+=$(ORIG_LINK_MALLOC.LIB) +test_malloc_used_by_lib_dll.$(DLL): LIBDL= +# ----------------------------------------------------- + +# ---- The list of TBBMalloc test running commands ---- +# run_cmd is usually empty +malloc_test: $(MALLOC.DLL) malloc_test_no_depends + +malloc_test_no_depends: $(TEST_PREREQUISITE) $(MALLOC_TESTS) + $(run_cmd) ./test_malloc_pools.$(TEST_EXT) $(args) 1:4 +ifneq (,$(MALLOCPROXY.DLL)) + $(run_cmd) ./test_malloc_atexit.$(TEST_EXT) $(args) + $(run_cmd) $(TEST_LAUNCHER) -l $(MALLOCPROXY.DLL) ./test_malloc_overload.$(TEST_EXT) $(args) + $(run_cmd) $(TEST_LAUNCHER) ./test_malloc_overload_proxy.$(TEST_EXT) $(args) +endif + $(run_cmd) $(TEST_LAUNCHER) ./test_malloc_lib_unload.$(TEST_EXT) $(args) + $(run_cmd) $(TEST_LAUNCHER) ./test_malloc_used_by_lib.$(TEST_EXT) + $(run_cmd) ./test_malloc_whitebox.$(TEST_EXT) $(args) 1:4 + $(run_cmd) $(TEST_LAUNCHER) -u ./test_malloc_compliance.$(TEST_EXT) $(args) 1:4 + $(run_cmd) ./test_ScalableAllocator.$(TEST_EXT) $(args) + $(run_cmd) ./test_ScalableAllocator_STL.$(TEST_EXT) $(args) + $(run_cmd) ./test_malloc_regression.$(TEST_EXT) $(args) + $(run_cmd) ./test_malloc_init_shutdown.$(TEST_EXT) $(args) + $(run_cmd) ./test_malloc_pure_c.$(TEST_EXT) $(args) +# ----------------------------------------------------- + +#------------------------------------------------------ +# End of rules for making the TBBMalloc unit tests +#------------------------------------------------------ + +# Include automatically generated dependences +-include *.d diff --git a/build/Makefile.tbbproxy b/build/Makefile.tbbproxy new file mode 100644 index 0000000000..706037e7ed --- /dev/null +++ b/build/Makefile.tbbproxy @@ -0,0 +1,109 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# default target +default_tbbproxy: tbbproxy tbbproxy_test + +tbb_root ?= $(TBBROOT) +BUILDING_PHASE=1 +include $(tbb_root)/build/common.inc +DEBUG_SUFFIX=$(findstring _debug,_$(cfg)) + +PROXY_ROOT ?= $(tbb_root)/src/tbbproxy +PROXY_SOURCE_ROOT ?= $(PROXY_ROOT) + +VPATH = $(tbb_root)/src/tbb/$(ASSEMBLY_SOURCE) $(tbb_root)/src/tbb $(tbb_root)/src/test +VPATH += $(PROXY_ROOT) $(PROXY_SOURCE_ROOT) + +CPLUS_FLAGS += $(DEFINE_KEY)__TBB_DLL_NAME=$(TBB.DLL) +CPLUS_FLAGS += $(DEFINE_KEY)__TBB_LST=$(TBB.LST) +CPLUS_FLAGS += $(foreach dir,$(VPATH),$(INCLUDE_KEY)$(dir)) +CPLUS_FLAGS += $(PIC_KEY) + +include $(tbb_root)/build/common_rules.inc + +#------------------------------------------------------ +# Define rules for making the TBB Proxy static library. +#------------------------------------------------------ + +# Object files that make up TBB Proxy +PROXY_CPLUS.OBJ = tbbproxy.$(OBJ) +PROXY_ASM.OBJ = tbbproxy-asm.$(OBJ) +PROXY.OBJ := $(PROXY_CPLUS.OBJ) $(PROXY_ASM.OBJ) + +# Not using intrinsics prevents undesired dependence from ICL libraries (e.g. libirc). +# Not using default libs prevents link issues caused by different CRT versions in tbbproxy and in an app. +$(PROXY.OBJ): CPLUS_FLAGS += $(DEFINE_KEY)ARCH_$(arch) $(DEFINE_KEY)OS_$(tbb_os) $(NOINTRINSIC_KEY) $(NODEFAULTLIB_KEY) + +$(PROXY_CPLUS.OBJ): CPLUS_FLAGS+=$(if $(filter windows.%cl,$(tbb_os).$(compiler)),/Fdtbbproxy$(DEBUG_SUFFIX).pdb) +$(PROXY_CPLUS.OBJ): %.$(OBJ): %.cpp + $(CPLUS) $(COMPILE_ONLY) $(CPLUS_FLAGS) $(INCLUDES) $< + +$(PROXY.LIB): $(PROXY.OBJ) + $(AR) $(AR_FLAGS) $(AR_OUTPUT_KEY)$@ $^ + +.PRECIOUS : %.$(ASMEXT) +tbbproxy-asm.$(ASMEXT) : tbbproxy-$(tbb_os).$(ASMEXT) $(TBB.LST) $(TBB-OBJECTS.LST) + $(CPLUS) $(PREPROC_ONLY) $< $(INCLUDES) $(CPLUS_FLAGS) $(DEFINE_KEY)__TBB_BUILD=1 > $@ + +.PHONY: tbbproxy +ifeq (windows,$(tbb_os)) +tbbproxy: $(PROXY.LIB) +else +tbbproxy: +endif + +#------------------------------------------------------ +# End of rules for making the TBB Proxy static library +#------------------------------------------------------ + +#------------------------------------------------------ +# Define rules for making the TBB Proxy unit tests +#------------------------------------------------------ + +add_debug=$(basename $(1))_debug$(suffix $(1)) +cross_suffix=$(if $(crosstest),$(if $(DEBUG_SUFFIX),$(subst _debug,,$(1)),$(call add_debug,$(1))),$(1)) + +PROXY_LIB = $(call cross_suffix,$(PROXY.LIB)) +PROXY_TESTS_SRCS = test_runtime_loader.cpp +PROXY_TESTS_OBJS = $(PROXY_TESTS_SRCS:.cpp=.$(OBJ)) +PROXY_TESTS_EXES = $(PROXY_TESTS_OBJS:.$(OBJ)=.$(TEST_EXT)) + +# Run rules. +.PHONY: tbbproxy_test +ifeq (windows,$(tbb_os)) +tbbproxy_test: $(call cross_suffix,$(PROXY.LIB)) $(TEST_PREREQUISITE) $(PROXY_TESTS_EXES) + $(run_cmd) ./test_runtime_loader.$(TEST_EXT) $(args) +else +tbbproxy_test: +endif + +# Link rules. +$(PROXY_TESTS_EXES): %.$(TEST_EXT): %.$(OBJ) $(PROXY_LIB) + $(CPLUS) $(OUTPUT_KEY)$@ $(CPLUS_FLAGS) $< $(PROXY_LIB) $(LIBS) $(LIBDL) $(LINK_FLAGS) + +# Compilation rules. +$(PROXY_TESTS_OBJS): %.$(OBJ): %.cpp + $(CPLUS) $(COMPILE_ONLY) $(CPLUS_FLAGS) $(CXX_ONLY_FLAGS) $(CXX_WARN_SUPPRESS) $(INCLUDES) $(OUTPUT_KEY)$@ $< + +#------------------------------------------------------ +# End of rules for making the TBB Proxy unit tests +#------------------------------------------------------ + +# Include automatically generated dependences +-include *.d diff --git a/build/Makefile.test b/build/Makefile.test new file mode 100644 index 0000000000..1ecb764a62 --- /dev/null +++ b/build/Makefile.test @@ -0,0 +1,298 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +#------------------------------------------------------------------------------ +# Define rules for making the TBB tests. +#------------------------------------------------------------------------------ +.PHONY: default test_tbb_plain test_tbb_openmp test_tbb_cilk test_tbb_old clean + +default: test_tbb_plain test_tbb_openmp test_tbb_cilk test_tbb_old + +tbb_root ?= $(TBBROOT) +BUILDING_PHASE=1 +TEST_RESOURCE = $(TBB.RES) +TESTFILE=test +include $(tbb_root)/build/common.inc +DEBUG_SUFFIX=$(findstring _debug,$(call cross_cfg,_$(cfg))) + +#------------------------------------------------------------ +# Define static pattern rules dealing with .cpp source files +#------------------------------------------------------------ + +VPATH = $(tbb_root)/src/tbb/$(ASSEMBLY_SOURCE) $(tbb_root)/src/tbb $(tbb_root)/src/rml/client $(tbb_root)/src/old $(tbb_root)/src/test $(tbb_root)/src/perf +CPLUS_FLAGS += $(if $(crosstest),$(DEFINE_KEY)__TBB_NO_IMPLICIT_LINKAGE=1) $(if $(LINK_TBB.LIB),$(DEFINE_KEY)TEST_USES_TBB=1) + +TEST_PREREQUISITE+=$(TBB.LIB) +LINK_FILES+=$(LINK_TBB.LIB) + +ifdef use_proxy + USE_PROXY_FLAG = $(DEFINE_KEY)HARNESS_USE_RUNTIME_LOADER + CPLUS_FLAGS += $(USE_PROXY_FLAG) + LINK_TBB.LIB = $(PROXY.LIB) + LIBS += $(LIBDL) +endif + +TEST_SUFFIXES=secondary compiler_builtins pic +include $(tbb_root)/build/common_rules.inc + +# Rules for the tests, which use TBB in a dynamically loadable library +test_model_plugin.$(TEST_EXT): LINK_TBB.LIB = +test_model_plugin.$(TEST_EXT): CPLUS_FLAGS := $(CPLUS_FLAGS:$(USE_PROXY_FLAG)=) +test_model_plugin.$(TEST_EXT): LIBS += $(LIBDL) +ifneq (,$(DYLIB_KEY)) +test_model_plugin.$(TEST_EXT): test_model_plugin_dll.$(DLL) +endif + +# tbb_misc.$(OBJ) has to be specified here (instead of harness_inject_scheduler.h) because it carries dependency on version_string.ver +SCHEDULER_DEPENDENCIES = $(TBB_ASM.OBJ) tbb_misc.$(OBJ) + +# These executables don't depend on the TBB library, but include core .cpp files directly +SCHEDULER_DIRECTLY_INCLUDED = test_task_leaks.$(TEST_EXT) \ + test_task_assertions.$(TEST_EXT) \ + test_fast_random.$(TEST_EXT) \ + test_global_control_whitebox.$(TEST_EXT) \ + test_concurrent_queue_whitebox.$(TEST_EXT) + +# Necessary to locate version_string.ver referenced from directly included tbb_misc.cpp +INCLUDES += $(INCLUDE_KEY). + +$(SCHEDULER_DIRECTLY_INCLUDED): WARNING_KEY += $(WARNING_SUPPRESS) +$(SCHEDULER_DIRECTLY_INCLUDED): LIBS += $(LIBDL) +#tbb.lib must not be linked to scheduler white box tests in order to not violate ODR +$(SCHEDULER_DIRECTLY_INCLUDED): LINK_TBB.LIB = +$(SCHEDULER_DIRECTLY_INCLUDED): LINK_FILES += $(SCHEDULER_DEPENDENCIES) +$(SCHEDULER_DIRECTLY_INCLUDED): $(SCHEDULER_DEPENDENCIES) + +# Tests that use some features of C++11 +TEST_TBB_CPP11 = test_lambda.$(TEST_EXT) test_cache_aligned_allocator_STL.$(TEST_EXT) + +ifneq (0,$(cpp0x)) +# Made CPP11 tests use NOSTRICT flags because -strict-ansi combined with +# -std=c++0x on ICC 13.0 results in a compile error when stdlib is included +$(TEST_TBB_CPP11): CPLUS_FLAGS := $(CPLUS_FLAGS_NOSTRICT) +endif + +# test_tbb_header detects "multiple definition" linker error using the test that covers the whole library +TWICE_LINKED_TESTS = test_tbb_header.$(TEST_EXT) \ + test_concurrent_unordered_set.$(TEST_EXT) + +%_secondary.$(OBJ): CPLUS_FLAGS+=$(DEFINE_KEY)__TBB_TEST_SECONDARY=1 + +# Detecting "multiple definition" linker error using the test that covers the whole library +$(TWICE_LINKED_TESTS): %.$(TEST_EXT): %.$(OBJ) %_secondary.$(OBJ) +$(TWICE_LINKED_TESTS): LINK_FILES+=$(@:.$(TEST_EXT)=_secondary.$(OBJ)) + +# Checks that TBB works correctly in position independent code +%_pic.$(OBJ): CPLUS_FLAGS+=$(PIC_KEY) +%_pic.$(OBJ): CPLUS_FLAGS+=$(DEFINE_KEY)__TBB_TEST_PIC=1 + +# Test of generic gcc port and icc intrinsics port +%_compiler_builtins.$(TEST_EXT): LINK_TBB.LIB = +%_compiler_builtins.$(OBJ): CPLUS_FLAGS+=$(DEFINE_KEY)__TBB_TEST_BUILTINS=1 $(DEFINE_KEY)TBB_USE_ASSERT=0 + +# dynamic_link tests don't depend on the TBB library +test_dynamic_link%.$(TEST_EXT): LINK_TBB.LIB = +test_dynamic_link.$(TEST_EXT): LIBS += $(LIBDL) + +# The main list of TBB tests +TEST_TBB_PLAIN.EXE = test_assembly.$(TEST_EXT) \ + test_global_control.$(TEST_EXT) \ + test_tbb_fork.$(TEST_EXT) \ + test_assembly_compiler_builtins.$(TEST_EXT) \ + test_aligned_space.$(TEST_EXT) \ + test_atomic.$(TEST_EXT) \ + test_atomic_pic.$(TEST_EXT) \ + test_atomic_compiler_builtins.$(TEST_EXT) \ + test_blocked_range.$(TEST_EXT) \ + test_blocked_range2d.$(TEST_EXT) \ + test_blocked_range3d.$(TEST_EXT) \ + test_concurrent_queue.$(TEST_EXT) \ + test_concurrent_vector.$(TEST_EXT) \ + test_concurrent_unordered_set.$(TEST_EXT) \ + test_concurrent_unordered_map.$(TEST_EXT) \ + test_concurrent_hash_map.$(TEST_EXT) \ + test_enumerable_thread_specific.$(TEST_EXT) \ + test_handle_perror.$(TEST_EXT) \ + test_halt.$(TEST_EXT) \ + test_model_plugin.$(TEST_EXT) \ + test_mutex.$(TEST_EXT) \ + test_mutex_native_threads.$(TEST_EXT) \ + test_rwm_upgrade_downgrade.$(TEST_EXT) \ + test_cache_aligned_allocator.$(TEST_EXT) \ + test_parallel_for.$(TEST_EXT) \ + test_parallel_reduce.$(TEST_EXT) \ + test_parallel_sort.$(TEST_EXT) \ + test_parallel_scan.$(TEST_EXT) \ + test_parallel_while.$(TEST_EXT) \ + test_parallel_do.$(TEST_EXT) \ + test_pipeline.$(TEST_EXT) \ + test_pipeline_with_tbf.$(TEST_EXT) \ + test_parallel_pipeline.$(TEST_EXT) \ + test_task_scheduler_init.$(TEST_EXT) \ + test_task_scheduler_observer.$(TEST_EXT) \ + test_task.$(TEST_EXT) \ + test_tbb_thread.$(TEST_EXT) \ + test_std_thread.$(TEST_EXT) \ + test_tick_count.$(TEST_EXT) \ + test_inits_loop.$(TEST_EXT) \ + test_yield.$(TEST_EXT) \ + test_eh_tasks.$(TEST_EXT) \ + test_eh_algorithms.$(TEST_EXT) \ + test_eh_flow_graph.$(TEST_EXT) \ + test_parallel_invoke.$(TEST_EXT) \ + test_task_group.$(TEST_EXT) \ + test_ittnotify.$(TEST_EXT) \ + test_parallel_for_each.$(TEST_EXT) \ + test_tbb_header.$(TEST_EXT) \ + test_combinable.$(TEST_EXT) \ + test_task_auto_init.$(TEST_EXT) \ + test_task_arena.$(TEST_EXT) \ + test_concurrent_monitor.$(TEST_EXT) \ + test_semaphore.$(TEST_EXT) \ + test_critical_section.$(TEST_EXT) \ + test_reader_writer_lock.$(TEST_EXT) \ + test_tbb_condition_variable.$(TEST_EXT) \ + test_intrusive_list.$(TEST_EXT) \ + test_concurrent_priority_queue.$(TEST_EXT) \ + test_task_priority.$(TEST_EXT) \ + test_task_enqueue.$(TEST_EXT) \ + test_task_steal_limit.$(TEST_EXT) \ + test_hw_concurrency.$(TEST_EXT) \ + test_fp.$(TEST_EXT) \ + test_tuple.$(TEST_EXT) \ + test_flow_graph.$(TEST_EXT) \ + test_broadcast_node.$(TEST_EXT) \ + test_continue_node.$(TEST_EXT) \ + test_function_node.$(TEST_EXT) \ + test_limiter_node.$(TEST_EXT) \ + test_join_node.$(TEST_EXT) \ + test_buffer_node.$(TEST_EXT) \ + test_queue_node.$(TEST_EXT) \ + test_priority_queue_node.$(TEST_EXT) \ + test_sequencer_node.$(TEST_EXT) \ + test_source_node.$(TEST_EXT) \ + test_overwrite_node.$(TEST_EXT) \ + test_write_once_node.$(TEST_EXT) \ + test_indexer_node.$(TEST_EXT) \ + test_multifunction_node.$(TEST_EXT) \ + test_split_node.$(TEST_EXT) \ + test_static_assert.$(TEST_EXT) \ + test_aggregator.$(TEST_EXT) \ + test_concurrent_lru_cache.$(TEST_EXT) \ + test_examples_common_utility.$(TEST_EXT) \ + test_dynamic_link.$(TEST_EXT) \ + test_parallel_for_vectorization.$(TEST_EXT) \ + test_tagged_msg.$(TEST_EXT) \ + test_partitioner_whitebox.$(TEST_EXT) \ + test_flow_graph_whitebox.$(TEST_EXT) \ + test_composite_node.$(TEST_EXT) \ + test_async_node.$(TEST_EXT) \ + test_tbb_version.$(TEST_EXT) # insert new files right above + +TEST_TBB_PLAIN.EXE += $(TEST_TBB_CPP11) + +# skip mode_plugin for now +skip_tests += test_model_plugin + +ifdef OPENMP_FLAG +test_openmp.$(TEST_EXT): CPLUS_FLAGS += $(OPENMP_FLAG) + +test_tbb_openmp: $(TEST_PREREQUISITE) test_openmp.$(TEST_EXT) + $(run_cmd) ./test_openmp.$(TEST_EXT) 1:4 +else +test_tbb_openmp: + @echo "OpenMP is not available" +endif + +ifdef CILK_AVAILABLE +# Workaround on cilkrts linkage known issue (see Intel(R) C++ Composer XE 2011 Release Notes) +# The issue reveals itself if a version of binutils is prior to 2.17 +ifeq (linux_icc,$(tbb_os)_$(compiler)) +test_cilk_interop.$(TEST_EXT): LIBS += -lcilkrts +endif +test_tbb_cilk: test_cilk_interop.$(TEST_EXT) + $(run_cmd) ./test_cilk_interop.$(TEST_EXT) $(args) +else +test_tbb_cilk: + @echo "Intel(R) Cilk(TM) Plus is not available" +endif + +$(TEST_TBB_PLAIN.EXE): WARNING_KEY += $(TEST_WARNING_KEY) + +# Run tests that are in SCHEDULER_DIRECTLY_INCLUDED and TEST_TBB_PLAIN.EXE but not in skip_tests (which is specified by user) +TESTS_TO_RUN := $(filter-out $(addsuffix .$(TEST_EXT),$(skip_tests)),$(TEST_TBB_PLAIN.EXE) $(SCHEDULER_DIRECTLY_INCLUDED)) + +# This definition intentionally consists of two blank lines +define eol + + +endef + +# First build the targets, then run them +# Form a list of commands separated with end of line +# Note that usually run_cmd is empty, and tests run directly + +test_tbb_plain: $(TEST_PREREQUISITE) $(TESTS_TO_RUN) + $(foreach test, $(TESTS_TO_RUN), $(run_cmd) ./$(test) $(args) $(eol)) + + +# For deprecated files, we don't mind warnings etc., thus compilation rules are most relaxed +CPLUS_FLAGS_DEPRECATED = $(DEFINE_KEY)TBB_DEPRECATED=1 $(subst $(WARNING_KEY),,$(CPLUS_FLAGS)) $(WARNING_SUPPRESS) $(INCLUDE_KEY)$(tbb_root)/src/test +TEST_TBB_OLD.OBJ = test_concurrent_vector_v2.$(OBJ) test_concurrent_queue_v2.$(OBJ) test_mutex_v2.$(OBJ) test_task_scheduler_observer_v3.$(OBJ) + +$(TEST_TBB_OLD.OBJ): CPLUS_FLAGS := $(CPLUS_FLAGS_DEPRECATED) + +TEST_TBB_OLD.EXE = $(subst .$(OBJ),.$(TEST_EXT),$(TEST_TBB_OLD.OBJ)) + +ifeq (,$(NO_LEGACY_TESTS)) +test_tbb_old: $(TEST_PREREQUISITE) $(TEST_TBB_OLD.EXE) + $(run_cmd) ./test_concurrent_vector_v2.$(TEST_EXT) $(args) 1:4 + $(run_cmd) ./test_concurrent_queue_v2.$(TEST_EXT) $(args) 1:4 + $(run_cmd) ./test_mutex_v2.$(TEST_EXT) $(args) 1 + $(run_cmd) ./test_mutex_v2.$(TEST_EXT) $(args) 2 + $(run_cmd) ./test_mutex_v2.$(TEST_EXT) $(args) 4 + $(run_cmd) ./test_task_scheduler_observer_v3.$(TEST_EXT) $(args) 1:4 +else +test_tbb_old: + @echo Legacy tests skipped +endif + +ifneq (,$(codecov)) +codecov_gen: + profmerge + codecov $(if $(findstring -,$(codecov)),$(codecov),) -demang -comp $(tbb_root)/build/codecov.txt +endif + +time_%: time_%.$(TEST_EXT) $(TEST_PREREQUISITE) + $(run_cmd) ./$< $(args) + + +# for some reason, "perf_%.$(TEST_EXT): perf_dll.$(DLL)" does not work TODO: find out how to apply pattern here +perf_sched.$(TEST_EXT): perf_dll.$(DLL) +perf_%.$(TEST_EXT): TEST_LIBS = perf_dll.$(LIBEXT) +perf_%: perf_%.$(TEST_EXT) $(TEST_PREREQUISITE) + $(run_cmd) ./$< $(args) + +clean_%: + $(RM) $*.$(OBJ) $*.exe $*.$(DLL) $*.$(LIBEXT) $*.res $*.map $*.ilk $*.pdb $*.exp $*.*manifest $*.tmp $*.d *.ver + +clean: + $(RM) *.$(OBJ) *.exe *.$(DLL) *.$(LIBEXT) *.res *.map *.ilk *.pdb *.exp *.manifest *.tmp *.d pgopti.* *.dyn core core.*[0-9][0-9] *.ver + +# Include automatically generated dependences +-include *.d diff --git a/build/SunOS.gcc.inc b/build/SunOS.gcc.inc new file mode 100644 index 0000000000..65df43c83c --- /dev/null +++ b/build/SunOS.gcc.inc @@ -0,0 +1,92 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +COMPILE_ONLY = -c -MMD +PREPROC_ONLY = -E -x c++ +INCLUDE_KEY = -I +DEFINE_KEY = -D +OUTPUT_KEY = -o # +OUTPUTOBJ_KEY = -o # +PIC_KEY = -fPIC +WARNING_AS_ERROR_KEY = -Werror +WARNING_KEY = -Wall +TEST_WARNING_KEY = -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor $(if $(findstring cc4., $(runtime)),-Wextra) +WARNING_SUPPRESS = -Wno-parentheses -Wno-non-virtual-dtor +DYLIB_KEY = -shared +LIBDL = -ldl + +CPLUS = g++ +CONLY = gcc +LIB_LINK_FLAGS = -shared +LIBS = -lpthread -lrt -ldl +C_FLAGS = $(CPLUS_FLAGS) -x c + +ifeq ($(cfg), release) + CPLUS_FLAGS = -g -O2 -DUSE_PTHREAD +endif +ifeq ($(cfg), debug) + CPLUS_FLAGS = -DTBB_USE_DEBUG -g -O0 -DUSE_PTHREAD +endif + +ASM= +ASM_FLAGS= + +TBB_ASM.OBJ= + +ifeq (ia64,$(arch)) +# Position-independent code (PIC) is a must for IA-64 + CPLUS_FLAGS += $(PIC_KEY) +endif + +ifeq (intel64,$(arch)) + CPLUS_FLAGS += -m64 + LIB_LINK_FLAGS += -m64 +endif + +ifeq (ia32,$(arch)) + CPLUS_FLAGS += -m32 + LIB_LINK_FLAGS += -m32 +endif + +# for some gcc versions on Solaris, -m64 may imply V9, but perhaps not everywhere (TODO: verify) +ifeq (sparc,$(arch)) + CPLUS_FLAGS += -mcpu=v9 -m64 + LIB_LINK_FLAGS += -mcpu=v9 -m64 +endif + +#------------------------------------------------------------------------------ +# Setting assembler data. +#------------------------------------------------------------------------------ +ASSEMBLY_SOURCE=$(arch)-gas +ifeq (ia64,$(arch)) + ASM=ias + TBB_ASM.OBJ = atomic_support.o lock_byte.o log2.o pause.o +endif +#------------------------------------------------------------------------------ +# End of setting assembler data. +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# Setting tbbmalloc data. +#------------------------------------------------------------------------------ + +M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions + +#------------------------------------------------------------------------------ +# End of setting tbbmalloc data. +#------------------------------------------------------------------------------ diff --git a/build/SunOS.inc b/build/SunOS.inc new file mode 100644 index 0000000000..6f46bab54f --- /dev/null +++ b/build/SunOS.inc @@ -0,0 +1,83 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +ifndef arch + arch:=$(shell uname -p) + ifeq ($(arch),i386) + ifeq ($(shell isainfo -b),64) + arch:=intel64 + else + arch:=ia32 + endif + endif + export arch +# For non-IA systems running Sun OS, 'arch' will contain whatever is printed by uname -p. +# In particular, for SPARC architecture it will contain "sparc". +endif + +ifndef runtime + gcc_version:=$(shell gcc -dumpversion) + os_version:=$(shell uname -r) + os_kernel_version:=$(shell uname -r | sed -e 's/-.*$$//') + export runtime:=cc$(gcc_version)_kernel$(os_kernel_version) +endif + +ifeq ($(arch),sparc) + native_compiler := gcc + export compiler ?= gcc +else + native_compiler := suncc + export compiler ?= suncc +endif +# debugger ?= gdb + +CMD=$(SHELL) -c +CWD=$(shell pwd) +RM?=rm -f +RD?=rmdir +MD?=mkdir -p +NUL= /dev/null +SLASH=/ +MAKE_VERSIONS=bash $(tbb_root)/build/version_info_sunos.sh $(VERSION_FLAGS) >version_string.ver +MAKE_TBBVARS=bash $(tbb_root)/build/generate_tbbvars.sh + +ifdef LD_LIBRARY_PATH + export LD_LIBRARY_PATH := .:$(LD_LIBRARY_PATH) +else + export LD_LIBRARY_PATH := . +endif + +####### Build settings ######################################################## + +OBJ = o +DLL = so +LIBEXT=so + +TBB.LST = +TBB.DEF = +TBB.DLL = libtbb$(CPF_SUFFIX)$(DEBUG_SUFFIX).$(DLL) +TBB.LIB = $(TBB.DLL) +LINK_TBB.LIB = $(TBB.LIB) + +MALLOC.DLL = libtbbmalloc$(DEBUG_SUFFIX).$(DLL) +MALLOC.LIB = $(MALLOC.DLL) +LINK_MALLOC.LIB = $(MALLOC.LIB) + +MALLOCPROXY.DLL = libtbbmalloc_proxy$(DEBUG_SUFFIX).$(DLL) + +TEST_LAUNCHER=sh $(tbb_root)/build/test_launcher.sh $(largs) diff --git a/build/SunOS.suncc.inc b/build/SunOS.suncc.inc new file mode 100644 index 0000000000..4d8819256a --- /dev/null +++ b/build/SunOS.suncc.inc @@ -0,0 +1,90 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +COMPILE_ONLY = -c -xMMD -errtags +PREPROC_ONLY = -E -xMMD +INCLUDE_KEY = -I +DEFINE_KEY = -D +OUTPUT_KEY = -o # +OUTPUTOBJ_KEY = -o # +PIC_KEY = -KPIC +DYLIB_KEY = -G +LIBDL = -ldl +# WARNING_AS_ERROR_KEY = -errwarn=%all +WARNING_AS_ERROR_KEY = Warning as error +# Supported Solaris Studio* 12.2 and above, remove ',inlasmpnu' in the line below to build by compiler prior Solaris Studio* 12.2 +WARNING_SUPPRESS = -erroff=unassigned,attrskipunsup,badargtype2w,badbinaryopw,wbadasg,wvarhidemem,inlasmpnu +tbb_strict=0 + +CPLUS = CC +CONLY = cc +LIB_LINK_FLAGS = -G -R . -M$(tbb_root)/build/suncc.map.pause +LINK_FLAGS += -M$(tbb_root)/build/suncc.map.pause +LIBS = -lpthread -lrt -R . +C_FLAGS = $(CPLUS_FLAGS) + +#TODO: the $(stdlib) instead of hard-wiring STLPort +ifeq ($(cfg), release) + CPLUS_FLAGS = -mt -xO2 -g -library=stlport4 -DUSE_PTHREAD $(WARNING_SUPPRESS) +endif +ifeq ($(cfg), debug) + CPLUS_FLAGS = -mt -DTBB_USE_DEBUG -g -library=stlport4 -DUSE_PTHREAD $(WARNING_SUPPRESS) +endif + +ASM= +ASM_FLAGS= + +TBB_ASM.OBJ= + +ifeq (intel64,$(arch)) + CPLUS_FLAGS += -m64 + ASM_FLAGS += -m64 + LIB_LINK_FLAGS += -m64 +endif + +ifeq (ia32,$(arch)) + CPLUS_FLAGS += -m32 + LIB_LINK_FLAGS += -m32 +endif + +# TODO: verify whether -m64 implies V9 on relevant Sun Studio versions +# (those that handle gcc assembler syntax) +ifeq (sparc,$(arch)) + CPLUS_FLAGS += -m64 + LIB_LINK_FLAGS += -m64 +endif + +export TBB_CUSTOM_VARS_SH=export CXXFLAGS="-I$${TBBROOT}/include -library=stlport4 $(CXXFLAGS) -M$${TBBROOT}/build/suncc.map.pause" +export TBB_CUSTOM_VARS_CSH=setenv CXXFLAGS "-I$${TBBROOT}/include -library=stlport4 $(CXXFLAGS) -M$${TBBROOT}/build/suncc.map.pause" + +#------------------------------------------------------------------------------ +# Setting assembler data. +#------------------------------------------------------------------------------ +ASSEMBLY_SOURCE=$(arch)-fbe +#------------------------------------------------------------------------------ +# End of setting assembler data. +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# Setting tbbmalloc data. +#------------------------------------------------------------------------------ +M_INCLUDES = $(INCLUDES) -I$(MALLOC_ROOT) -I$(MALLOC_SOURCE_ROOT) +M_CPLUS_FLAGS = $(CPLUS_FLAGS) +#------------------------------------------------------------------------------ +# End of setting tbbmalloc data. +#------------------------------------------------------------------------------ diff --git a/build/android.gcc.inc b/build/android.gcc.inc new file mode 100644 index 0000000000..fd4607af57 --- /dev/null +++ b/build/android.gcc.inc @@ -0,0 +1,139 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + + +COMPILE_ONLY = -c -MMD +PREPROC_ONLY = -E -x c++ +INCLUDE_KEY = -I +DEFINE_KEY = -D +OUTPUT_KEY = -o # +OUTPUTOBJ_KEY = -o # +PIC_KEY = -fPIC +WARNING_AS_ERROR_KEY = -Werror +WARNING_KEY = -Wall +TEST_WARNING_KEY = -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra + +WARNING_SUPPRESS = -Wno-parentheses -Wno-non-virtual-dtor +DYLIB_KEY = -shared +EXPORT_KEY = -Wl,--version-script, +LIBDL = -ldl + +CPLUS = $(tbb_tool_prefix)g++ +CONLY = $(tbb_tool_prefix)gcc + +# -soname is necessary for proper linkage to TBB prebuilt libraries when building application with Android SDK +LIB_LINK_FLAGS = $(DYLIB_KEY) -Wl,-soname=$(BUILDING_LIBRARY) + +# pie is necessary for test executables to work and might be removed if newer NDK will add it implicitly +PIE_FLAG = -pie +ifeq ($(APP_PIE), false) + PIE_FLAG= +endif + +LINK_FLAGS = -Wl,-rpath-link=. -rdynamic $(PIE_FLAG) +C_FLAGS = $(CPLUS_FLAGS) + +# gcc 4.4 and higher support C++11 +ifneq (,$(shell $(CPLUS) -dumpversion | egrep "^(4\.[4-9]|[5-9])")) + # On Android/gcc 4.4.3, -std=c++0x causes ::int64_t and ::uint64_t to be undefined. + CPP11_FLAGS = -std=gnu++0x $(DEFINE_KEY)_TBB_CPP0X +endif + +ifeq ($(cfg), release) + CPLUS_FLAGS = -O2 +endif +ifeq ($(cfg), debug) + CPLUS_FLAGS = -g -O0 $(DEFINE_KEY)TBB_USE_DEBUG +endif + +CPLUS_FLAGS += $(DEFINE_KEY)USE_PTHREAD $(DEFINE_KEY)_GLIBCXX_HAVE_FENV_H + +ifneq (,$(findstring $(arch),ia32 intel64)) + CPLUS_FLAGS += $(DEFINE_KEY)DO_ITT_NOTIFY +endif + +ifneq (0, $(dlopen_workaround)) + CPLUS_FLAGS += $(DEFINE_KEY)__TBB_USE_DLOPEN_REENTRANCY_WORKAROUND=1 + CPLUS_FLAGS += $(DEFINE_KEY)__TBB_USE_DLOPEN_MAIN_PROGRAM_WORKAROUND=1 +else + CPLUS_FLAGS += $(DEFINE_KEY)__TBB_USE_DLOPEN_REENTRANCY_WORKAROUND=0 + CPLUS_FLAGS += $(DEFINE_KEY)__TBB_USE_DLOPEN_MAIN_PROGRAM_WORKAROUND=0 +endif + +ifeq (0, $(dynamic_load)) + CPLUS_FLAGS += $(DEFINE_KEY)__TBB_DYNAMIC_LOAD_ENABLED=0 +endif + + +# Paths to the NDK prebuilt tools and libraries +CPLUS_FLAGS += --sysroot=$(SYSROOT) +LIB_LINK_FLAGS += --sysroot=$(SYSROOT) +LIBS = -L$(CPLUS_LIB_PATH) -lgnustl_shared + +# This causes CPP11_FLAGS to be issued twice for test_lambda.cpp +# TODO: Fix this in general for all platforms once the correct strategy is determined. +ifneq (00,$(lambdas)$(cpp0x)) + CXX_ONLY_FLAGS += $(CPP11_FLAGS) +endif + +ifeq (ia32,$(arch)) + # TODO: Determine best setting of -march and add to CPLUS_FLAGS + CPLUS_FLAGS += -m32 + LIB_LINK_FLAGS += -m32 +endif + +ifeq (intel64,$(arch)) + CPLUS_FLAGS += -m64 + LIB_LINK_FLAGS += -m64 +endif + +ifeq (arm,$(findstring arm,$(arch))) + CPLUS_FLAGS += -march=armv7-a $(DEFINE_KEY)TBB_USE_GCC_BUILTINS=1 $(DEFINE_KEY)__TBB_64BIT_ATOMICS=0 +endif + +#------------------------------------------------------------------------------ +# Setting assembler data. +#------------------------------------------------------------------------------ +TBB_ASM.OBJ= +MALLOC_ASM.OBJ= + +ASM = $(tbb_tool_prefix)as +ifeq (intel64,$(arch)) + ASM_FLAGS += --64 +endif +ifeq (ia32,$(arch)) + ASM_FLAGS += --32 +endif +ifeq ($(cfg),debug) + ASM_FLAGS += -g +endif + +ASSEMBLY_SOURCE=$(arch)-gas +#------------------------------------------------------------------------------ +# End of setting assembler data. +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# Setting tbbmalloc data. +#------------------------------------------------------------------------------ + +M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions + +#------------------------------------------------------------------------------ +# End of setting tbbmalloc data. +#------------------------------------------------------------------------------ diff --git a/build/android.inc b/build/android.inc new file mode 100644 index 0000000000..fbe68a7642 --- /dev/null +++ b/build/android.inc @@ -0,0 +1,62 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# +# Extra gmake command-line parameters for use with Android: +# +# dlopen_workaround: Some OS versions need workaround for dlopen to avoid recursive calls. +# + +####### Detections and Commands ############################################### + +ifeq (android,$(findstring android,$(tbb_os))) + $(error TBB only supports cross-compilation for Android. Specify "target=android" instead.) +endif + +ifneq ("command line","$(origin arch)") + ifeq (icc,$(compiler)) + export COMPILER_VERSION := ICC: $(shell icc -V &1 | grep 'Version') + ifneq (,$(findstring IA-32, $(COMPILER_VERSION))) + export arch:=ia32 + else + $(error "No support for Android in $(COMPILER_VERSION)") + endif + + else + ifdef ANDROID_SERIAL + uname_m:=$(shell adb shell uname -m) + ifeq (i686,$(uname_m)) + export arch:=ia32 + else + export arch:=$(uname_m) + endif + else + ifndef arch + $(error "No target architecture specified and \'ANDROID_SERIAL\' environment variable specifying target device not set") + endif + endif + endif +endif + +# Many OS versions (Android 4.0.[0-3] for example) need workaround for dlopen to avoid non-recursive loader lock hang +export dlopen_workaround = 1 + +# Android platform only supported from TBB 4.1 forward +NO_LEGACY_TESTS = 1 + + diff --git a/build/android.linux.inc b/build/android.linux.inc new file mode 100644 index 0000000000..ab40bcc996 --- /dev/null +++ b/build/android.linux.inc @@ -0,0 +1,70 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +####### Detections and Commands ############################################### + +# Must set def_prefix according to target architecture detected above +ifeq (ia32,$(arch)) + def_prefix = lin32 +endif +ifeq (arm,$(findstring arm,$(arch))) + def_prefix = lin32 +endif +ifeq (64,$(findstring 64,$(arch))) + def_prefix = lin64 +endif + +gcc_version = $(shell $(tbb_tool_prefix)g++ -dumpversion) + +ifdef ANDROID_NDK_ROOT + $(warning "NDK version $(ANDROID_NDK_ROOT)") + ndk_version:= $(lastword $(subst -, ,$(ANDROID_NDK_ROOT))) +else + $(warning "NDK version not set in environment, using \'unknown\' instead.") + ndk_version:=unknown +endif + +export runtime:=$(target)_cc$(gcc_version)_NDK$(ndk_version)_version_$(target_os_version) + +AR = $(tbb_tool_prefix)ar +MAKE_VERSIONS=sh $(tbb_root)/build/version_info_android.sh $(VERSION_FLAGS) >version_string.ver + +####### Build settings ######################################################## + +# No SONAME_SUFFIX for Android allowed in library names +TBB.LST = $(tbb_root)/src/tbb/$(def_prefix)-tbb-export.lst +TBB.DEF = $(TBB.LST:.lst=.def) +TBB.DLL = libtbb$(CPF_SUFFIX)$(DEBUG_SUFFIX).$(DLL) +TBB.LIB = $(TBB.DLL) +TBB_NO_VERSION.DLL= +LINK_TBB.LIB = $(TBB.LIB) + +MALLOC.DEF = $(MALLOC_ROOT)/$(def_prefix)-tbbmalloc-export.def +MALLOC.DLL = libtbbmalloc$(DEBUG_SUFFIX).$(DLL) +MALLOC.LIB = $(MALLOC.DLL) +MALLOC_NO_VERSION.DLL= +LINK_MALLOC.LIB = $(MALLOC.LIB) + +MALLOCPROXY.DEF = $(MALLOC_ROOT)/$(def_prefix)-proxy-export.def +MALLOCPROXY.DLL = libtbbmalloc_proxy$(DEBUG_SUFFIX).$(DLL) +MALLOCPROXY_NO_VERSION.DLL= +MALLOCPROXY.LIB = $(MALLOCPROXY.DLL) +LINK_MALLOCPROXY.LIB = $(MALLOCPROXY.LIB) + +TEST_LAUNCHER= +run_cmd ?= -sh $(tbb_root)/build/android.linux.launcher.sh $(largs) diff --git a/build/android.linux.launcher.sh b/build/android.linux.launcher.sh new file mode 100644 index 0000000000..5de025cb8f --- /dev/null +++ b/build/android.linux.launcher.sh @@ -0,0 +1,147 @@ +#!/bin/sh +# +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# Usage: +# android.linux.launcher.sh [-v] [-q] [-s] [-r ] [-u] [-l ] +# where: -v enables verbose output +# where: -q enables quiet mode +# where: -s runs the test in stress mode (until non-zero exit code or ctrl-c pressed) +# where: -r specifies number of times to repeat execution +# where: -u is ignored on Android +# where: -l specifies the library name to be assigned to LD_PRELOAD +# +# Libs and executable necessary for testing should be present in the current directory before running. +# ANDROID_SERIAL must be set to the connected Android target device name for file transfer and test runs. +# ANDROID_TEST_DIRECTORY may be set to the directory used for testing on the Android target device; otherwise, +# the default directory used is "/data/local/tmp/$(basename $PWD)". +# Note: Do not remove the redirections to '/dev/null' in the script, otherwise the nightly test system will fail. + +do_cleanup() # +{ # + adb pull $targetdir/events.txt events.txt > /dev/null 2>&1 # + # Remove target directory on the device + adb shell "rm -r ${targetdir}; mkdir -p ${targetdir}" > /dev/null 2>&1 # +} # +do_trap_cleanup() # +{ # + do_cleanup # + exit -1 # +} # +while getopts "qvsr:ul:" flag # +do case $flag in # + s ) # Stress testing mode + echo Doing stress testing. Press Ctrl-C to terminate + run_env='stressed() { while $*; do :; done; }; ' # + run_prefix="stressed $run_prefix" ;; # + r ) # Repeats test n times + run_env="repeated() { for i in $(seq -s ' ' 1 $OPTARG) ; do echo \$i of $OPTARG:; \$*; done; }; " # + run_prefix="repeated $run_prefix" ;; # + l ) # Additional library + ldpreload="$OPTARG " ;; # + u ) # Stack limit + ;; # + q ) # Quiet mode, removes 'done' but prepends any other output by test name + OUTPUT='2>&1 | sed -e "s/done//;/^[[:space:]]*$/d;s!^!$exename: !"' ;; # + v ) # Verbose mode + SUPPRESS='' # + verbose=1 ;; # +esac done # +shift `expr $OPTIND - 1` # +[ -z "$OUTPUT" ] && OUTPUT='| sed -e "s/\\r$//"' # +[ $verbose ] || SUPPRESS='>/dev/null' # +# Collect the executable name +exename=$(basename $1) # +shift # +# Prepare the target directory on the device +currentdir=$(basename $PWD) # +targetdir=${ANDROID_TEST_DIRECTORY:-/data/local/tmp/$currentdir} # +do_cleanup # +trap do_trap_cleanup INT # if someone hits control-c, cleanup the device +# Collect the list of files to transfer to the target device, starting with executable itself. +fnamelist="$exename" # +# Add the C++ standard library from the NDK, which is required for all tests on Android. +if [ ! -z "${LIB_GNU_STL_ANDROID}" ]; then # + fnamelist="$fnamelist ${LIB_GNU_STL_ANDROID}/libgnustl_shared.so" # +else # + fnamelist="$fnamelist libgnustl_shared.so" # +fi # +# Find the TBB libraries and add them to the list. +# Add TBB libraries from the current directory that contains libtbb* files +files="$(/bin/ls libtbb* 2> /dev/null)" # +[ -z "$files" ] || fnamelist="$fnamelist $files" # +# Add any libraries built for specific tests. +exeroot=${exename%\.*} # +files="$(/bin/ls ${exeroot}*.so ${exeroot}*.so.* 2> /dev/null)" # +[ -z "$files" ] || fnamelist="$fnamelist $files" # +# TODO: Add extra libraries from the Intel(R) Compiler for certain tests +# found=$(echo $exename | egrep 'test_malloc_atexit\|test_malloc_lib_unload' 2> /dev/null) +# if [ ! -z $found ] ; then +# fnamelist="$fnamelist ${compiler_path_lib}/libimf.so \ +# ${compiler_path_lib}/libsvml.so \ +# ${compiler_path_lib}/libintlc.so.5" +# fi + +# Transfer collected executable and library files to the target device. +transfers_ok=1 # +for fullname in $fnamelist; do { # + if [ -r $fullname ]; then { # + # Transfer the executable and libraries to top-level target directory + [ $verbose ] && echo -n "Pushing $fullname: " # + eval "adb push $fullname ${targetdir}/$(basename $fullname) $SUPPRESS 2>&1" # + }; else { # + echo "Error: required file ${currentdir}/${fullname} for test $exename not available for transfer." # + transfers_ok=0 # + }; fi # +}; done # +if [ "${transfers_ok}" = "0" ]; then { # + do_cleanup # + exit -1 # +}; fi # +# Transfer input files used by example codes by scanning the executable argument list. +for fullname in "$@"; do { # + if [ -r $fullname ]; then { # + directory=$(dirname $fullname) # + filename=$(basename $fullname) # + # strip leading "." from fullname if present + if [ "$directory" = "\." ]; then { # + directory="" # + fullname=$filename # + }; fi # + # Create the target directory to hold input file if necessary + if [ ! -z $directory ]; then { # + eval "adb shell 'mkdir $directory' $SUPPRESS 2>&1" # + }; fi # + # Transfer the input file to corresponding directory on target device + [ $verbose ] && echo -n "Pushing $fullname: " # + eval "adb push $fullname ${targetdir}/$fullname $SUPPRESS 2>&1" # + }; fi # +}; done # +# Set LD_PRELOAD if necessary +[ -z "$ldpreload" ] || run_prefix="LD_PRELOAD='$ldpreload' $run_prefix" # +[ $verbose ] && echo Running $run_prefix ./$exename $* # +run_env="$run_env cd $targetdir; export LD_LIBRARY_PATH=." # +# The return_code file is the best way found to return the status of the test execution when using adb shell. +eval 'adb shell "$run_env; $run_prefix ./$exename $* || echo -n \$? >error_code"' "${OUTPUT}" # +# Capture the return code string and remove the trailing \r from the return_code file contents +err=`adb shell "cat $targetdir/error_code 2>/dev/null"` # +[ -z $err ] || echo $exename: exited with error $err # +do_cleanup # +# Return the exit code of the test. +exit $err # diff --git a/build/android.macos.inc b/build/android.macos.inc new file mode 100644 index 0000000000..2f1b348316 --- /dev/null +++ b/build/android.macos.inc @@ -0,0 +1,79 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +####### Detections and Commands ############################################### + +# Must set def_prefix according to target architecture detected above +ifeq (ia32,$(arch)) + def_prefix = lin32 +endif +ifeq (arm,$(findstring arm,$(arch))) + def_prefix = lin32 +endif +ifeq (64,$(findstring 64,$(arch))) + def_prefix = lin64 +endif + +gcc_version = $(shell $(tbb_tool_prefix)g++ -dumpversion) + +ifdef ANDROID_NDK_ROOT + $(warning "NDK version $(ANDROID_NDK_ROOT)") + ndk_version:= $(lastword $(subst -, ,$(ANDROID_NDK_ROOT))) +else + $(warning "NDK version not set in environment, using \'unknown\' instead.") + ndk_version:=unknown +endif + +export runtime:=$(target)_cc$(gcc_version)_NDK$(ndk_version)_version_$(target_os_version) + +AR = $(tbb_tool_prefix)ar +MAKE_VERSIONS=sh $(tbb_root)/build/version_info_android.sh $(VERSION_FLAGS) >version_string.ver + +####### Build settings ######################################################## + +# No SONAME_SUFFIX for Android allowed in library names +TBB.LST = $(tbb_root)/src/tbb/$(def_prefix)-tbb-export.lst +TBB.DEF = $(TBB.LST:.lst=.def) +TBB.DLL = libtbb$(CPF_SUFFIX)$(DEBUG_SUFFIX).$(DLL) +TBB.LIB = $(TBB.DLL) +TBB_NO_VERSION.DLL= +LINK_TBB.LIB = $(TBB.LIB) + +MALLOC.DEF = $(MALLOC_ROOT)/$(def_prefix)-tbbmalloc-export.def +MALLOC.DLL = libtbbmalloc$(DEBUG_SUFFIX).$(DLL) +MALLOC.LIB = $(MALLOC.DLL) +MALLOC_NO_VERSION.DLL= +LINK_MALLOC.LIB = $(MALLOC.LIB) + +MALLOCPROXY.DEF = $(MALLOC_ROOT)/$(def_prefix)-proxy-export.def +MALLOCPROXY.DLL = libtbbmalloc_proxy$(DEBUG_SUFFIX).$(DLL) +MALLOCPROXY_NO_VERSION.DLL= +MALLOCPROXY.LIB = $(MALLOCPROXY.DLL) +LINK_MALLOCPROXY.LIB = $(MALLOCPROXY.LIB) + +TBB.RES = +MALLOC.RES = +RML.RES = +TBB.MANIFEST = +MALLOC.MANIFEST = +RML.MANIFEST = +OBJ = o +DLL = so + +TEST_LAUNCHER= +run_cmd ?= -sh $(tbb_root)/build/android.linux.launcher.sh $(largs) diff --git a/build/android.windows.inc b/build/android.windows.inc new file mode 100644 index 0000000000..742f240a7f --- /dev/null +++ b/build/android.windows.inc @@ -0,0 +1,78 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +####### Detections and Commands ############################################### + +# Must set def_prefix according to target architecture detected above +ifeq (ia32,$(arch)) + def_prefix = lin32 +endif +ifeq (arm,$(findstring arm,$(arch))) + def_prefix = lin32 +endif +ifeq (64,$(findstring 64,$(arch))) + def_prefix = lin64 +endif + +gcc_version = $(shell $(tbb_tool_prefix)g++ -dumpversion) + +ifdef ANDROID_NDK_ROOT + $(warning "NDK version $(ANDROID_NDK_ROOT)") + ndk_version:= $(lastword $(subst -, ,$(ANDROID_NDK_ROOT))) +else + $(warning "NDK version not set in environment, using \'unknown\' instead.") + ndk_version:=unknown +endif + +export runtime:=$(target)_cc$(gcc_version)_NDK$(ndk_version)_version_$(target_os_version) + +AR = $(tbb_tool_prefix)ar +MAKE_VERSIONS = cmd /C cscript /nologo /E:jscript $(subst \,/,$(tbb_root))/build/version_info_windows.js $(CONLY) $(arch) $(subst \,/,"$(VERSION_FLAGS)") > version_string.ver + +####### Build settings ######################################################## + +# No SONAME_SUFFIX for Android allowed in library names +TBB.LST = $(tbb_root)/src/tbb/$(def_prefix)-tbb-export.lst +TBB.DEF = $(TBB.LST:.lst=.def) +TBB.DLL = libtbb$(CPF_SUFFIX)$(DEBUG_SUFFIX).$(DLL) +TBB.LIB = $(TBB.DLL) +TBB_NO_VERSION.DLL= +LINK_TBB.LIB = $(TBB.LIB) + +MALLOC.DEF = $(MALLOC_ROOT)/$(def_prefix)-tbbmalloc-export.def +MALLOC.DLL = libtbbmalloc$(DEBUG_SUFFIX).$(DLL) +MALLOC.LIB = $(MALLOC.DLL) +MALLOC_NO_VERSION.DLL= +LINK_MALLOC.LIB = $(MALLOC.LIB) + +MALLOCPROXY.DEF = $(MALLOC_ROOT)/$(def_prefix)-proxy-export.def +MALLOCPROXY.DLL = libtbbmalloc_proxy$(DEBUG_SUFFIX).$(DLL) +MALLOCPROXY_NO_VERSION.DLL= +MALLOCPROXY.LIB = $(MALLOCPROXY.DLL) + +TBB.RES = +MALLOC.RES = +RML.RES = +TBB.MANIFEST = +MALLOC.MANIFEST = +RML.MANIFEST = +OBJ = o +DLL = so + +TEST_LAUNCHER= +run_cmd ?= -sh $(tbb_root)/build/android.linux.launcher.sh $(largs) diff --git a/build/big_iron.inc b/build/big_iron.inc new file mode 100644 index 0000000000..9bafc78d88 --- /dev/null +++ b/build/big_iron.inc @@ -0,0 +1,76 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +#------------------------------------------------------------------------------ +# Defines settings for building the TBB run-time as a static library. +# Use these only on platforms where dynamic linking is impractical. +# +# IF YOU USE TBB AS A STATIC LIBRARY, YOU MUST GUARANTEE THAT ONLY ONE COPY OF +# THE TBB RUN-TIME IS LINKED INTO AN APPLICATION! LINKING IN MULTIPLE COPIES +# OF THE TBB RUN-TIME, DIRECTLY OR INDIRECTLY, MAY CAUSE PROGRAM FAILURE! +#------------------------------------------------------------------------------ + +# Note that ITT_NOTIFY allows to selectively remove the definition of +# DO_ITT_NOTIFY without sabotaging deferred expansion of CPLUS_FLAGS. +# TODO: currently only in linux.{gcc,xl}.inc + +# Note that -pthread with xl gives "1501-210 (W) command option t contains an incorrect subargument"; +# multithreading is instead achieved by using the _r affix in the compiler name. +# TODO: is -lpthread still relevant/needed with XL and _r affix? + +# Note that usage of dynamic (shared) libraries is disabled +# (via -D__TBB_DYNAMIC_LOAD_ENABLED=0 and LIBDL emptied) primarily for performance. + +# OS specific settings => + LIB_LINK_CMD = ar rcs + LIB_LINK_FLAGS = + LIB_LINK_LIBS = + LIB_OUTPUT_KEY = + DYLIB_KEY = + ifeq ($(tbb_os),linux) + ifeq ($(compiler),clang) + LIBS = -pthread -lrt + endif + ifeq ($(compiler),gcc) + LIBS = -pthread -lrt + endif + ifeq ($(compiler),xl) + LIBS = -lpthread -lrt + endif + LINK_FLAGS = + endif + override CXXFLAGS += -D__TBB_DYNAMIC_LOAD_ENABLED=0 -D__TBB_SOURCE_DIRECTLY_INCLUDED=1 + ITT_NOTIFY = + DLL = a + LIBEXT = a + LIBPREF = lib + LIBDL = +# <= OS specific settings + +TBB.DLL = $(LIBPREF)tbb$(DEBUG_SUFFIX).$(LIBEXT) +LINK_TBB.LIB = $(TBB.DLL) +TBB.LST = +TBB.DEF = +TBB_NO_VERSION.DLL = + +MALLOC.DLL = $(LIBPREF)tbbmalloc$(DEBUG_SUFFIX).$(LIBEXT) +LINK_MALLOC.LIB = $(MALLOC.DLL) +MALLOC.DEF = +MALLOC_NO_VERSION.DLL = +MALLOCPROXY.DLL = +MALLOCPROXY.DEF = diff --git a/build/codecov.txt b/build/codecov.txt new file mode 100644 index 0000000000..e22f8059a2 --- /dev/null +++ b/build/codecov.txt @@ -0,0 +1,7 @@ +src/tbb +src/tbbmalloc +include/tbb +src/rml/server +src/rml/client +src/rml/include +source/malloc diff --git a/build/common.inc b/build/common.inc new file mode 100644 index 0000000000..6aa702d8b6 --- /dev/null +++ b/build/common.inc @@ -0,0 +1,147 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +ifndef tbb_os + + # Windows sets environment variable OS; for other systems, ask uname + ifeq ($(OS),) + OS:=$(shell uname) + ifeq ($(OS),) + $(error "Cannot detect operating system") + endif + export tbb_os=$(OS) + endif + + ifeq ($(OS), Windows_NT) + export tbb_os=windows + endif + ifeq ($(OS), Linux) + export tbb_os=linux + endif + ifeq ($(OS), Darwin) + export tbb_os=macos + endif + +endif # !tbb_os + +ifeq ($(tbb_cpf),1) + export CPF_SUFFIX ?=_preview +endif + +ifeq (,$(wildcard $(tbb_root)/build/$(tbb_os).inc)) + $(error "$(tbb_os)" is not supported. Add build/$(tbb_os).inc file with os-specific settings ) +endif + +# detect arch and runtime versions, provide common host-specific definitions +include $(tbb_root)/build/$(tbb_os).inc + +ifeq ($(arch),) + $(error Architecture not detected) +endif +ifeq ($(runtime),) + $(error Runtime version not detected) +endif + +# process target-dependent compilation and testing configurations +ifdef target + # optionally process target-dependent options for compilation and testing + ifneq (,$(wildcard $(tbb_root)/build/$(target).inc)) + include $(tbb_root)/build/$(target).inc + endif + + # optionally process host-dependent environment for target-dependent compilation and testing + ifneq (,$(wildcard $(tbb_root)/build/$(target).$(tbb_os).inc)) + include $(tbb_root)/build/$(target).$(tbb_os).inc + endif + + # insure at least one target-dependent configuration file was found for compilation and testing + ifeq (,$(wildcard $(tbb_root)/build/$(target).inc)$(wildcard $(tbb_root)/build/$(target).$(tbb_os).inc)) + $(error "$(target)" is not supported. Add build/$(target).inc or build/$(target).$(tbb_os).inc file) + endif +endif #target + +# Support for running debug tests to release library and vice versa +flip_cfg=$(subst _flipcfg,_release,$(subst _release,_debug,$(subst _debug,_flipcfg,$(1)))) +cross_cfg = $(if $(crosstest),$(call flip_cfg,$(1)),$(1)) +# Setting default configuration to release +cfg?=release + +ifdef BUILDING_PHASE + # No lambdas or other C++0x extensions by default for compilers that implement them as experimental features + # TODO: it should become unnecessary when all relevant tests are "moved" to the TEST_TBB_CPP11 set + lambdas ?= 0 + cpp0x ?= 0 + + ifndef target + target:=$(tbb_os) + endif + # process host/target compiler-dependent build configuration + ifeq (,$(wildcard $(tbb_root)/build/$(target).$(compiler).inc)) + $(error "$(compiler)" is not supported on $(target). Add build/$(target).$(compiler).inc file with compiler-specific settings. ) + endif + include $(tbb_root)/build/$(target).$(compiler).inc +endif + +ifneq ($(BUILDING_PHASE),1) + # definitions for top-level Makefiles + origin_build_dir:=$(origin tbb_build_dir) + tbb_build_dir?=$(tbb_root)$(SLASH)build + export tbb_build_prefix?=$(tbb_os)_$(arch)_$(compiler)_$(runtime)$(CPF_SUFFIX) + work_dir=$(tbb_build_dir)$(SLASH)$(tbb_build_prefix) +endif # BUILDING_PHASE != 1 + +ifdef offload + extra_inc=$(offload).offload.inc +endif +ifdef extra_inc + ifneq (,$(wildcard $(tbb_root)/build/$(extra_inc))) + include $(tbb_root)/build/$(extra_inc) + else + $(error specified build file: "build/$(extra_inc)" is not found. ) + endif +endif + +ifndef BUILDING_PHASE + work_dir:=$(work_dir) + # assign new value for tbb_root if path is not absolute (the filter keeps only /* paths) + ifeq ($(filter /% $(SLASH)%, $(subst :, ,$(tbb_root)) ),) + full_tbb_root:=$(CURDIR)/$(tbb_root) + ifeq ($(origin_build_dir),undefined) + #relative path are needed here as a workaround to support whitespaces in path + override tbb_root:=../.. + else + override tbb_root:=$(full_tbb_root) + endif + export tbb_root + endif + endif # !BUILDING_PHASE + +.DELETE_ON_ERROR: # Make will delete target if error occurred when building it. + +# MAKEOVERRIDES contains the command line variable definitions. Reseting it to +# empty allows propogating all exported overridden variables to nested makes. +# NOTEs: +# 1. All variable set in command line are propagated to nested makes. +# 2. All variables declared with the "export" keyword are propagated to +# nested makes. +# 3. "override" allows changing variables set in command line. But it doesn't +# propagate new values to nested makes. For propagation, the "export" keyword +# should be used. +# 4. gmake v3.80 doesn't support exporting of target-specific variables using +# the "export" keyword +MAKEOVERRIDES = diff --git a/build/common_rules.inc b/build/common_rules.inc new file mode 100644 index 0000000000..410bd9afd7 --- /dev/null +++ b/build/common_rules.inc @@ -0,0 +1,165 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + + +ifeq ($(tbb_strict),1) + ifeq ($(WARNING_AS_ERROR_KEY),) + $(error WARNING_AS_ERROR_KEY is empty) + endif + # Do not remove line below! + WARNING_KEY += $(WARNING_AS_ERROR_KEY) +endif + +ifneq (,$(findstring s,$(MAKEFLAGS))) + override largs+=-q +endif +ifneq (,$(repeat)) + override largs+=-r $(repeat) +endif +ifneq (,$(largs)$(run_prefix)) + override run_cmd:=$(run_cmd) $(TEST_LAUNCHER) + TEST_LAUNCHER= + ifeq (,$(strip $(run_cmd))) + $(warning Test launcher is not defined for the platform, ignoring launcher arguments) + endif +endif + +ifndef TEST_EXT + TEST_EXT = exe +endif + +INCLUDES += $(INCLUDE_KEY)$(tbb_root)/src $(INCLUDE_KEY)$(tbb_root)/src/rml/include $(INCLUDE_KEY)$(tbb_root)/include + +CPLUS_FLAGS += $(WARNING_KEY) $(CXXFLAGS) +ifeq ($(tbb_cpf),1) +CPLUS_FLAGS += $(DEFINE_KEY)__TBB_CPF_BUILD=1 +endif +LINK_FLAGS += $(LDFLAGS) +LIB_LINK_FLAGS += $(LDFLAGS) +CPLUS_FLAGS_NOSTRICT = $(subst -strict-ansi,-ansi,$(CPLUS_FLAGS)) + +LIB_LINK_CMD ?= $(CPLUS) $(PIC_KEY) +ifeq ($(origin LIB_OUTPUT_KEY), undefined) + LIB_OUTPUT_KEY = $(OUTPUT_KEY) +endif +ifeq ($(origin LIB_LINK_LIBS), undefined) + LIB_LINK_LIBS = $(LIBDL) $(LIBS) +endif + +CONLY ?= $(CPLUS) + +# The most generic rules +#$(1) - is the target pattern +define make-cxx-obj +$1: %.cpp + $$(CPLUS) $$(OUTPUTOBJ_KEY)$$@ $$(COMPILE_ONLY) $$(CPLUS_FLAGS) $$(CXX_ONLY_FLAGS) $$(CXX_WARN_SUPPRESS) $$(INCLUDES) $$< +endef + +TEST_AFFIXES_OBJS=$(addsuffix .$(OBJ),$(addprefix %_,$(TEST_SUFFIXES)) $(addsuffix _%,$(TEST_PREFIXES))) + +# Make will not process the same recipe for each test pattern (since the dependency on the same %.cpp) +# thus the separated recipes should be provided +$(foreach t,%.$(OBJ) $(TEST_AFFIXES_OBJS),$(eval $(call make-cxx-obj,$(t)))) + +.PRECIOUS: %.$(OBJ) %.$(TEST_EXT) %.res $(TEST_AFFIXES_OBJS) + +# Rules for generating a test DLL +%_dll.$(OBJ): %.cpp + $(CPLUS) $(COMPILE_ONLY) $(OUTPUTOBJ_KEY)$@ $(CPLUS_FLAGS) $(PIC_KEY) $(DEFINE_KEY)_USRDLL $(INCLUDES) $< + +#$(1) - is the binary name +#$(2) - is the input obj files and libraries +define make-test-binary + $(CPLUS) $(OUTPUT_KEY)$(strip $1) $(CPLUS_FLAGS) $(2) $(LIBS) $(LINK_FLAGS) +endef + +# LINK_FILES the list of options to link test specific files (libraries and object files) +LINK_FILES+=$(TEST_LIBS) +# Rule for generating executable test +%.$(TEST_EXT): %.$(OBJ) $(TEST_LIBS) $(TEST_PREREQUISITE) $(if $(use_proxy),$(PROXY.LIB)) + $(call make-test-binary,$@,$< $(LINK_FILES)) + +# Rules for generating a test DLL +%_dll.$(DLL): LINK_FLAGS += $(PIC_KEY) $(DYLIB_KEY) +%_dll.$(DLL): TEST_LIBS := $(subst %_dll.$(DLL),,$(TEST_LIBS)) +%_dll.$(DLL): %_dll.$(OBJ) + $(call make-test-binary,$@,$< $(LINK_FILES)) +.PRECIOUS: %_dll.$(OBJ) %_dll.$(DLL) + +%.$(OBJ): %.c + $(CONLY) $(COMPILE_ONLY) $(OUTPUTOBJ_KEY)$@ $(C_FLAGS) $(INCLUDES) $< + +%.$(OBJ): %.asm + $(ASM) $(ASM_FLAGS) $< + +%.$(OBJ): %.s + cpp <$< | grep -v '^#' >$*.tmp + $(ASM) $(ASM_FLAGS) -o $@ $*.tmp + +# Rule for generating .E file if needed for visual inspection +# Note that due to mapping for ICL all uses of PREPROC_ONLY should be immediately followed by a file name +%.E: %.cpp + $(CPLUS) $(CPLUS_FLAGS) $(CXX_ONLY_FLAGS) $(INCLUDES) $(PREPROC_ONLY) $< >$@ + +# TODO Rule for generating .asm file if needed for visual inspection +%.asm: %.cpp + $(CPLUS) /c /FAs /Fa $(CPLUS_FLAGS) $(CXX_ONLY_FLAGS) $(INCLUDES) $< + +# TODO Rule for generating .s file if needed for visual inspection +%.s: %.cpp + $(CPLUS) -S $(CPLUS_FLAGS) $(CXX_ONLY_FLAGS) $(INCLUDES) $< + +# Customizations +$(KNOWN_WARNINGS): %.$(OBJ): %.cpp + $(CPLUS) $(COMPILE_ONLY) $(subst $(WARNING_KEY),,$(CPLUS_FLAGS)) $(CXX_ONLY_FLAGS) $(CXX_WARN_SUPPRESS) $(INCLUDES) $< + +tbb_misc.$(OBJ): version_string.ver +tbb_misc.$(OBJ): INCLUDES+=$(INCLUDE_KEY). + +tbb_misc.E: tbb_misc.cpp version_string.ver + $(CPLUS) $(CPLUS_FLAGS) $(CXX_ONLY_FLAGS) $(INCLUDE_KEY). $(INCLUDES) $(PREPROC_ONLY) $< >$@ + +%.res: %.rc version_string.ver $(TBB.MANIFEST) + rc /Fo$@ $(INCLUDES) $(filter /D%,$(CPLUS_FLAGS)) $< + +# TODO: add $(LIB_LINK_LIBS) $(LIB_LINK_FLAGS) (in a separate line?) and remove useless $(INCLUDES) +VERSION_FLAGS=$(CPLUS) $(CPLUS_FLAGS) $(CXX_ONLY_FLAGS) $(INCLUDES) + +ifneq (,$(TBB.MANIFEST)) +$(TBB.MANIFEST): + cmd /C "echo #include ^ >tbbmanifest.c" + cmd /C "echo int main(){return 0;} >>tbbmanifest.c" + cl /nologo $(C_FLAGS) tbbmanifest.c + +version_string.ver: $(TBB.MANIFEST) + $(MAKE_VERSIONS) + cmd /C "echo #define TBB_MANIFEST 1 >> version_string.ver" +# TODO: fix parallel build by writting to a temporary file and rename it when complete +else +# TODO: make version strings directly representative for all the libraries +version_string.ver: + $(MAKE_VERSIONS) +endif + +test_% debug_%: test_%.$(TEST_EXT) $(TEST_PREREQUISITE) + $(run_cmd) ./$< $(args) +ifneq (,$(codecov)) + profmerge + codecov $(if $(findstring -,$(codecov)),$(codecov),) -demang -comp $(tbb_root)/build/codecov.txt +endif + diff --git a/build/detect.js b/build/detect.js new file mode 100644 index 0000000000..9315fe2fed --- /dev/null +++ b/build/detect.js @@ -0,0 +1,181 @@ +// Copyright 2005-2015 Intel Corporation. All Rights Reserved. +// +// This file is part of Threading Building Blocks. Threading Building Blocks is free software; +// you can redistribute it and/or modify it under the terms of the GNU General Public License +// version 2 as published by the Free Software Foundation. Threading Building Blocks is +// distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU General Public License for more details. You should have received a copy of +// the GNU General Public License along with Threading Building Blocks; if not, write to the +// Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// +// As a special exception, you may use this file as part of a free software library without +// restriction. Specifically, if other files instantiate templates or use macros or inline +// functions from this file, or you compile this file and link it with other files to produce +// an executable, this file does not by itself cause the resulting executable to be covered +// by the GNU General Public License. This exception does not however invalidate any other +// reasons why the executable file might be covered by the GNU General Public License. + +function doWork() { + var WshShell = WScript.CreateObject("WScript.Shell"); + + var fso = new ActiveXObject("Scripting.FileSystemObject"); + + var tmpExec; + tmpExec = WshShell.Run("cmd /c echo int main(){return 0;} >detect.c", 0, true); + + // The next block deals with GCC (MinGW) + if ( WScript.Arguments.Count() > 1 && WScript.Arguments(1) == "gcc" ) { + if ( WScript.Arguments(0) == "/arch" ) { + // Get predefined macros + tmpExec = WshShell.Run("cmd /C gcc -dM -E detect.c > detect.map", 0, true); + var file = fso.OpenTextFile("detect.map", 1, 0); + var defs = file.readAll(); + file.Close(); + + //detect target architecture + var intel64=/x86_64|amd64/mgi; + var ia32=/i386/mgi; + if ( defs.match(intel64) ) { + WScript.Echo( "intel64" ); + } else if ( defs.match(ia32) ) { + WScript.Echo( "ia32" ); + } else { + WScript.Echo( "unknown" ); + } + } else { + tmpExec = WshShell.Exec("gcc -dumpversion"); + var gcc_version = tmpExec.StdOut.ReadLine(); + if ( WScript.Arguments(0) == "/runtime" ) { + WScript.Echo( "mingw"+gcc_version ); + } + else if ( WScript.Arguments(0) == "/minversion" ) { + // Comparing strings, not numbers; will not work for two-digit versions + if ( gcc_version >= WScript.Arguments(2) ) { + WScript.Echo( "ok" ); + } else { + WScript.Echo( "fail" ); + } + } + } + return; + } + + //Compile binary + tmpExec = WshShell.Exec("cl /MD detect.c /link /MAP"); + while ( tmpExec.Status == 0 ) { + WScript.Sleep(100); + } + //compiler banner that includes version and target arch was printed to stderr + var clVersion = tmpExec.StdErr.ReadAll(); + + if ( WScript.Arguments(0) == "/arch" ) { + //detect target architecture + var intel64=/AMD64|EM64T|x64/mgi; + var ia32=/[80|\s]x86/mgi; + var arm=/ARM/mgi; + if ( clVersion.match(intel64) ) { + WScript.Echo( "intel64" ); + } else if ( clVersion.match(ia32) ) { + WScript.Echo( "ia32" ); + } else if ( clVersion.match(arm) ) { + WScript.Echo( "armv7" ); + } else { + WScript.Echo( "unknown" ); + } + return; + } + + if ( WScript.Arguments(0) == "/runtime" ) { + //read map-file + var map = fso.OpenTextFile("detect.map", 1, 0); + var mapContext = map.readAll(); + map.Close(); + + //detect runtime + var vc71=/MSVCR71\.DLL/mgi; + var vc80=/MSVCR80\.DLL/mgi; + var vc90=/MSVCR90\.DLL/mgi; + var vc100=/MSVCR100\.DLL/mgi; + var vc110=/MSVCR110\.DLL/mgi; + var vc120=/MSVCR120\.DLL/mgi; + var vc140=/VCRUNTIME140\.DLL/mgi; + var psdk=/MSVCRT\.DLL/mgi; + if ( mapContext.match(vc71) ) { + WScript.Echo( "vc7.1" ); + } else if ( mapContext.match(vc80) ) { + WScript.Echo( "vc8" ); + } else if ( mapContext.match(vc90) ) { + WScript.Echo( "vc9" ); + } else if ( mapContext.match(vc100) ) { + WScript.Echo( "vc10" ); + } else if ( mapContext.match(vc110) ) { + WScript.Echo( "vc11" ); + } else if ( mapContext.match(vc120) ) { + WScript.Echo( "vc12" ); + } else if ( mapContext.match(vc140) ) { + WScript.Echo( "vc14" ); + } else { + WScript.Echo( "unknown" ); + } + return; + } + + if ( WScript.Arguments(0) == "/minversion" ) { + var compiler_version; + if ( WScript.Arguments(1) == "cl" ) { + compiler_version = clVersion.match(/Compiler Version ([0-9.]+)\s/mi)[1]; + // compiler_version is in xx.xx.xxxxx.xx format, i.e. a string. + // It will compare well with major.minor versions where major has two digits, + // which is sufficient as the versions of interest start from 13 (for VC7). + } else if ( WScript.Arguments(1) == "icl" ) { + // Get predefined ICL macros + tmpExec = WshShell.Run("cmd /C icl /QdM /E detect.c > detect.map", 0, true); + var file = fso.OpenTextFile("detect.map", 1, 0); + var defs = file.readAll(); + file.Close(); + // In #define __INTEL_COMPILER XXYY, XX is the major ICL version, YY is minor + compiler_version = defs.match(/__INTEL_COMPILER[ \t]*([0-9]+).*$/mi)[1]/100; + // compiler version is a number; it compares well with another major.minor + // version number, where major has one, two, and perhaps more digits (9.1, 11, etc). + } + if ( compiler_version >= WScript.Arguments(2) ) { + WScript.Echo( "ok" ); + } else { + WScript.Echo( "fail" ); + } + return; + } +} + +function doClean() { + var fso = new ActiveXObject("Scripting.FileSystemObject"); + // delete intermediate files + if ( fso.FileExists("detect.c") ) + fso.DeleteFile ("detect.c", false); + if ( fso.FileExists("detect.obj") ) + fso.DeleteFile ("detect.obj", false); + if ( fso.FileExists("detect.map") ) + fso.DeleteFile ("detect.map", false); + if ( fso.FileExists("detect.exe") ) + fso.DeleteFile ("detect.exe", false); + if ( fso.FileExists("detect.exe.manifest") ) + fso.DeleteFile ("detect.exe.manifest", false); +} + +if ( WScript.Arguments.Count() > 0 ) { + + try { + doWork(); + } catch( error ) { + WScript.Echo( "unknown" ); + } + doClean(); + +} else { + WScript.Echo( "Supported options:\n" + + "\t/arch [compiler]\n" + + "\t/runtime [compiler]\n" + + "\t/minversion compiler version" ); +} + diff --git a/build/generate_tbbvars.bat b/build/generate_tbbvars.bat new file mode 100644 index 0000000000..2eb47c17ad --- /dev/null +++ b/build/generate_tbbvars.bat @@ -0,0 +1,69 @@ +@echo off +REM +REM Copyright 2005-2015 Intel Corporation. All Rights Reserved. +REM +REM This file is part of Threading Building Blocks. Threading Building Blocks is free software; +REM you can redistribute it and/or modify it under the terms of the GNU General Public License +REM version 2 as published by the Free Software Foundation. Threading Building Blocks is +REM distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +REM implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +REM See the GNU General Public License for more details. You should have received a copy of +REM the GNU General Public License along with Threading Building Blocks; if not, write to the +REM Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +REM +REM As a special exception, you may use this file as part of a free software library without +REM restriction. Specifically, if other files instantiate templates or use macros or inline +REM functions from this file, or you compile this file and link it with other files to produce +REM an executable, this file does not by itself cause the resulting executable to be covered +REM by the GNU General Public License. This exception does not however invalidate any other +REM reasons why the executable file might be covered by the GNU General Public License. +REM +setlocal +for %%D in ("%tbb_root%") do set actual_root=%%~fD +set fslash_root=%actual_root:\=/% +set bin_dir=%CD% +set fslash_bin_dir=%bin_dir:\=/% +set _INCLUDE=INCLUDE& set _LIB=LIB +if not x%UNIXMODE%==x set _INCLUDE=CPATH& set _LIB=LIBRARY_PATH + +if exist tbbvars.bat goto skipbat +echo Generating local tbbvars.bat +echo @echo off>tbbvars.bat +echo SET TBBROOT=%actual_root%>>tbbvars.bat +echo SET TBB_ARCH_PLATFORM=%arch%\%runtime%>>tbbvars.bat +echo SET TBB_TARGET_ARCH=%arch%>>tbbvars.bat +echo SET %_INCLUDE%=%%TBBROOT%%\include;%%%_INCLUDE%%%>>tbbvars.bat +echo SET %_LIB%=%bin_dir%;%%%_LIB%%%>>tbbvars.bat +echo SET PATH=%bin_dir%;%%PATH%%>>tbbvars.bat +if not x%UNIXMODE%==x echo SET LD_LIBRARY_PATH=%bin_dir%;%%LD_LIBRARY_PATH%%>>tbbvars.bat +:skipbat + +if exist tbbvars.sh goto skipsh +echo Generating local tbbvars.sh +echo #!/bin/sh>tbbvars.sh +echo export TBBROOT="%fslash_root%">>tbbvars.sh +echo export TBB_ARCH_PLATFORM="%arch%\%runtime%">>tbbvars.sh +echo export TBB_TARGET_ARCH="%arch%">>tbbvars.sh +echo export %_INCLUDE%="${TBBROOT}/include;$%_INCLUDE%">>tbbvars.sh +echo export %_LIB%="%fslash_bin_dir%;$%_LIB%">>tbbvars.sh +echo export PATH="%fslash_bin_dir%;$PATH">>tbbvars.sh +if not x%UNIXMODE%==x echo export LD_LIBRARY_PATH="%fslash_bin_dir%;$LD_LIBRARY_PATH">>tbbvars.sh +:skipsh + +if exist tbbvars.csh goto skipcsh +echo Generating local tbbvars.csh +echo #!/bin/csh>tbbvars.csh +echo setenv TBBROOT "%actual_root%">>tbbvars.csh +echo setenv TBB_ARCH_PLATFORM "%arch%\%runtime%">>tbbvars.csh +echo setenv TBB_TARGET_ARCH "%arch%">>tbbvars.csh +echo setenv %_INCLUDE% "${TBBROOT}\include;$%_INCLUDE%">>tbbvars.csh +echo setenv %_LIB% "%bin_dir%;$%_LIB%">>tbbvars.csh +echo setenv PATH "%bin_dir%;$PATH">>tbbvars.csh +if not x%UNIXMODE%==x echo setenv LD_LIBRARY_PATH "%bin_dir%;$LD_LIBRARY_PATH">>tbbvars.csh +:skipcsh + +REM Workaround for copying Android* specific libgnustl_shared.so library to work folder +if not x%LIB_GNU_STL_ANDROID%==x copy /Y "%LIB_GNU_STL_ANDROID%"\libgnustl_shared.so + +endlocal +exit diff --git a/build/generate_tbbvars.sh b/build/generate_tbbvars.sh new file mode 100644 index 0000000000..2f15e1a639 --- /dev/null +++ b/build/generate_tbbvars.sh @@ -0,0 +1,71 @@ +#!/bin/bash +# +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# Script used to generate tbbvars.[c]sh scripts +bin_dir="$PWD" # +cd "$tbb_root" # keep this comments here +tbb_root="$PWD" # to make it unsensible +cd "$bin_dir" # to EOL encoding +[ -f ./tbbvars.sh ] || cat >./tbbvars.sh <./tbbvars.csh < + + +

Overview

+This directory contains the internal Makefile infrastructure for Intel® Threading Building Blocks (Intel® TBB). + +

+See below for how to build Intel TBB and how to port Intel TBB +to a new platform, operating system or architecture. +

+ +

Files

+The files here are not intended to be used directly. See below for usage. +
+
Makefile.tbb +
Main Makefile to build the Intel TBB library. + Invoked via 'make tbb' from top-level Makefile. +
Makefile.tbbmalloc +
Main Makefile to build the Intel TBB scalable memory allocator library as well as its tests. + Invoked via 'make tbbmalloc' from top-level Makefile. +
Makefile.test +
Main Makefile to build and run the tests for the Intel TBB library. + Invoked via 'make test' from top-level Makefile. +
common.inc +
Main common included Makefile that includes OS-specific and compiler-specific Makefiles. +
<os>.inc +
OS-specific Makefile for a particular <os>. +
<os>.<compiler>.inc +
Compiler-specific Makefile for a particular <os> / <compiler> combination. +
*.sh +
Infrastructure utilities for Linux* OS, OS X*, and UNIX*-related operating systems. +
*.js, *.bat +
Infrastructure utilities for Windows* OS. +
+ +

To Build

+

+To port Intel TBB to a new platform, operating system or architecture, see the porting directions below. +

+ +

Software prerequisites:

+
    +
  1. C++ compiler for the platform, operating system and architecture of interest. + Either the native compiler for your system, or, optionally, the appropriate Intel® C++ compiler, may be used. +
  2. GNU make utility. On Windows OS, if a UNIX* emulator is used to run GNU make, + it should be able to run Windows OS utilities and commands. On Linux OS, OS X, etc., + shell commands issued by GNU make should execute in a Bourne or BASH compatible shell. +
+ +

+Intel TBB libraries can be built by performing the following steps. +On systems that support only one ABI (e.g., 32-bit), these steps build the libraries for that ABI. +On systems that support both 64-bit and 32-bit libraries, these steps build the 64-bit libraries +(Linux OS, OS X, and related systems) or whichever ABI is selected in the development environment (Windows OS). +

+
    +
  1. Change to the top-level directory of the installed software. +
  2. If using the Intel® C++ compiler, make sure the appropriate compiler is available in your PATH + (e.g., by sourcing the appropriate iccvars script for the compiler to be used). +
  3. Invoke GNU make using no arguments, for example, 'gmake'. +
+ +

+To build Intel TBB libraries for other than the default ABI (e.g., to build 32-bit libraries on Linux OS, OS X, +or related systems that support both 64-bit and 32-bit libraries), perform the following steps: +

+
    +
  1. Change to the top-level directory of the installed software. +
  2. If using the Intel® C++ compiler, make sure the appropriate compiler is available in your PATH + (e.g., by sourcing the appropriate iccvars script for the compiler to be used). +
  3. Invoke GNU make as follows, 'gmake arch=ia32'. +
+ +

The default make target will build the release and debug versions of the Intel TBB library.

+

Other targets are available in the top-level Makefile. You might find the following targets useful: +

    +
  • 'make test' will build and run Intel TBB unit-tests; +
  • 'make examples' will build and run Intel TBB examples; +
  • 'make all' will do all of the above. +
+See also the list of other targets below. +

+ +

+By default, the libraries will be built in sub-directories within the build/ directory. +The sub-directories are named according to the operating system, architecture, compiler and software environment used +(the sub-directory names also distinguish release vs. debug libraries). On Linux OS, the software environment comprises +the GCC, libc and kernel version used. On OS X, the software environment comprises the GCC and OS version used. +On Windows OS, the software environment comprises the Microsoft* Visual Studio* version used. +See below for how to change the default build directory. +

+ +

+To perform different build and/or test operations, use the following steps. +

+
    +
  1. Change to the top-level directory of the installed software. +
  2. If using the Intel® C++ compiler, make sure the appropriate compiler is available in your PATH + (e.g., by sourcing the appropriate iccvars script for the compiler to be used). +
  3. Invoke GNU make by using one or more of the following commands. +
    +
    make +
    Default build. Equivalent to 'make tbb tbbmalloc'. +
    make all +
    Equivalent to 'make tbb tbbmalloc test examples'. +
    cd src;make release +
    Build and test release libraries only. +
    cd src;make debug +
    Build and test debug libraries only. +
    make tbb +
    Make Intel TBB release and debug libraries. +
    make tbbmalloc +
    Make Intel TBB scalable memory allocator libraries. +
    make test +
    Compile and run unit-tests +
    make examples +
    Build libraries and run all examples, like doing 'make debug clean release' from the general example Makefile. +
    make compiler={icl, icc, gcc, clang} [(above options or targets)] +
    Build and run as above, but use specified compilers instead of default, native compilers +
      +
    1. {icl, icc} - to use Intel® compilers (icl on Windows OS, icc on Linux OS or OS X).
    2. +
    3. gcc - to use g++ (e.g. MinGW on Windows OS)
    4. +
    5. clang - to use Clang compiler
    6. +
    +
    make compiler=clang stdlib=libc++ [(above options or targets)] +
    Build and run as above, but use libc++ as a standard c++ library for clang. +
    make target_ui=win8ui [target_ui_mode=production] [(above options or targets)] +
    Build and run as above, but use API that is compliant with Windows Store* applications. + target_ui_mode=production is used to produce binaries that are compliant with Windows Store* application container. In later case they won't with Intel TBB unit tests but work only with Windows Store* applications. +
    ndk-build target=android [(above options or targets)] +
    Build and run as above, but build libraries for Android* OS by Android NDK that should be installed. Makefiles were tested with revision 8. +
    make arch={ia32, intel64, ia64} [(above options or targets)] +
    Build and run as above, but build libraries for the selected ABI. + Might be useful for cross-compilation; ensure proper environment is set before running this command. +
    make tbb_root={(Intel TBB directory)} [(above options or targets)] +
    Build and run as above; for use when invoking 'make' from a directory other than the top-level directory. +
    make tbb_build_dir={(build directory)} [(above options or targets)] +
    Build and run as above, but place the built libraries in the specified directory, rather than in the default sub-directory within the build/ directory. This command might have troubles with the build in case the sources installed to the directory with spaces in the path. +
    make tbb_build_prefix={(build sub-directory)} [(above options or targets)] +
    Build and run as above, but place the built libraries in the specified sub-directory within the build/ directory, rather than using the default sub-directory name. +
    make tbb_cpf=1 [(above options or targets)] +
    Build and run as above, but build and use libraries with the Community Preview Features enabled, rather than the default libraries. +
    make [(above options)] clean +
    Remove any executables or intermediate files produced by the above commands. + Includes build directories, object files, libraries and test executables. +
    +
+ +

To Port

+

+This section provides information on how to port Intel TBB to a new platform, operating system or architecture. +A subset or a superset of these steps may be required for porting to a given platform. +

+ +

To port the Intel TBB source code:

+
    +
  1. If porting to a new architecture, create a file that describes the architecture-specific details for that architecture. + +
  2. Add an implementation of DetectNumberOfWorkers() in src/tbb/tbb_misc.h, + that returns the number of cores found on the system in case it is not supported by the current implementation. + This is used to determine the default number of threads for the Intel TBB task scheduler. +
  3. Either properly define FillDynamicLinks for use in + src/tbb/cache_aligned_allocator.cpp, + or hardcode the allocator to be used. +
  4. Additional types might be required in the union defined in + include/tbb/aligned_space.h + to ensure proper alignment on your platform. +
  5. Changes may be required in include/tbb/tick_count.h + for systems that do not provide gettimeofday. +
+ +

To port the Makefile infrastructure:

+Modify the appropriate files in the Makefile infrastructure to add a new platform, operating system or architecture as needed. +See the Makefile infrastructure files for examples. +
    +
  1. The top-level Makefile includes common.inc to determine the operating system. +
      +
    • To add a new operating system, add the appropriate test to common.inc, and create the needed <os>.inc and <os>.<compiler>.inc files (see below). +
    +
  2. The <os>.inc file makes OS-specific settings for a particular operating systems. +
      +
    • For example, linux.inc makes settings specific to Linux operating systems. +
    • This file performs OS-dependent tests to determine the specific platform and/or architecture, and sets other platform-dependent values. +
    • Add a new <os>.inc file for each new operating system added. +
    +
  3. The <os>.<compiler>.inc file makes compiler-specific settings for a particular + <os> / <compiler> combination. +
      +
    • For example, linux.gcc.inc makes specific settings for using GCC on Linux OS, and linux.icc.inc makes specific settings for using the Intel® C++ compiler on Linux OS. +
    • This file sets particular compiler, assembler and linker options required when using a particular <os> / <compiler> combination. +
    • Add a new <os>.<compiler>.inc file for each new <os> / <compiler> combination added. +
    +
+ +
+Up to parent directory +

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel and Itanium are registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. + + diff --git a/build/linux.clang.inc b/build/linux.clang.inc new file mode 100644 index 0000000000..de9aee5301 --- /dev/null +++ b/build/linux.clang.inc @@ -0,0 +1,116 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +COMPILE_ONLY = -c -MMD +PREPROC_ONLY = -E -x c++ +INCLUDE_KEY = -I +DEFINE_KEY = -D +OUTPUT_KEY = -o # +OUTPUTOBJ_KEY = -o # +PIC_KEY = -fPIC +WARNING_AS_ERROR_KEY = -Werror +WARNING_KEY = -Wall +TEST_WARNING_KEY = -Wextra -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor +WARNING_SUPPRESS = -Wno-parentheses -Wno-non-virtual-dtor -Wno-dangling-else +DYLIB_KEY = -shared +EXPORT_KEY = -Wl,--version-script, +LIBDL = -ldl + +CPLUS = clang++ +CONLY = clang +LIB_LINK_FLAGS = $(DYLIB_KEY) -Wl,-soname=$(BUILDING_LIBRARY) +LIBS += -lpthread -lrt +LINK_FLAGS = -Wl,-rpath-link=. -rdynamic +C_FLAGS = $(CPLUS_FLAGS) + +ifeq ($(cfg), release) + CPLUS_FLAGS = $(ITT_NOTIFY) -g -O2 -DUSE_PTHREAD +endif +ifeq ($(cfg), debug) + CPLUS_FLAGS = -DTBB_USE_DEBUG $(ITT_NOTIFY) -g -O0 -DUSE_PTHREAD +endif + +ifeq (libc++,$(stdlib)) + CPLUS_FLAGS += -stdlib=libc++ + LIB_LINK_FLAGS += -stdlib=libc++ +endif + +CPP11_FLAGS = -std=c++11 -D_TBB_CPP0X + +ifneq (00,$(lambdas)$(cpp0x)) + CXX_ONLY_FLAGS += $(CPP11_FLAGS) +endif + +TBB_ASM.OBJ= +MALLOC_ASM.OBJ= + +ifeq (intel64,$(arch)) + ITT_NOTIFY = -DDO_ITT_NOTIFY + CPLUS_FLAGS += -m64 + LIB_LINK_FLAGS += -m64 +endif + +ifeq (ia32,$(arch)) + ITT_NOTIFY = -DDO_ITT_NOTIFY + CPLUS_FLAGS += -m32 -march=pentium4 + LIB_LINK_FLAGS += -m32 +endif + +ifeq (ppc64,$(arch)) + CPLUS_FLAGS += -m64 + LIB_LINK_FLAGS += -m64 +endif + +ifeq (ppc32,$(arch)) + CPLUS_FLAGS += -m32 + LIB_LINK_FLAGS += -m32 +endif + +ifeq (bg,$(arch)) + CPLUS = bgclang++ + CONLY = bgclang +endif + +#------------------------------------------------------------------------------ +# Setting assembler data. +#------------------------------------------------------------------------------ +ASM = as +ifeq (intel64,$(arch)) + ASM_FLAGS += --64 +endif +ifeq (ia32,$(arch)) + ASM_FLAGS += --32 +endif +ifeq ($(cfg),debug) + ASM_FLAGS += -g +endif + +ASSEMBLY_SOURCE=$(arch)-gas +#------------------------------------------------------------------------------ +# End of setting assembler data. +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# Setting tbbmalloc data. +#------------------------------------------------------------------------------ + +M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions + +#------------------------------------------------------------------------------ +# End of setting tbbmalloc data. +#------------------------------------------------------------------------------ diff --git a/build/linux.gcc.inc b/build/linux.gcc.inc new file mode 100644 index 0000000000..4b7122bd62 --- /dev/null +++ b/build/linux.gcc.inc @@ -0,0 +1,145 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +COMPILE_ONLY = -c -MMD +PREPROC_ONLY = -E -x c++ +INCLUDE_KEY = -I +DEFINE_KEY = -D +OUTPUT_KEY = -o # +OUTPUTOBJ_KEY = -o # +PIC_KEY = -fPIC +WARNING_AS_ERROR_KEY = -Werror +WARNING_KEY = -Wall +TEST_WARNING_KEY = -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor $(if $(findstring cc4., $(runtime)),-Wextra) + +WARNING_SUPPRESS = -Wno-parentheses -Wno-non-virtual-dtor +DYLIB_KEY = -shared +EXPORT_KEY = -Wl,--version-script, +LIBDL = -ldl + +CPLUS = g++ +CONLY = gcc +LIB_LINK_FLAGS = $(DYLIB_KEY) -Wl,-soname=$(BUILDING_LIBRARY) +LIBS += -lpthread -lrt +LINK_FLAGS = -Wl,-rpath-link=. -rdynamic +C_FLAGS = $(CPLUS_FLAGS) +# gcc 4.4 and higher support -std=c++0x +ifneq (,$(shell gcc -dumpversion | egrep "^(4\.[4-9]|[5-9])")) + CPP11_FLAGS = -std=c++0x -D_TBB_CPP0X +endif + +# gcc 4.2 and higher support OpenMP +ifneq (,$(shell gcc -dumpversion | egrep "^(4\.[2-9]|[5-9])")) + OPENMP_FLAG = -fopenmp +endif + +# gcc 4.8 and later support RTM intrinsics, but require command line switch to enable them +ifneq (,$(shell gcc -dumpversion | egrep "^4\.[8-9]")) + RTM_KEY = -mrtm +endif + +ifeq ($(cfg), release) + CPLUS_FLAGS = $(ITT_NOTIFY) -g -O2 -DUSE_PTHREAD +endif +ifeq ($(cfg), debug) + CPLUS_FLAGS = -DTBB_USE_DEBUG $(ITT_NOTIFY) -g -O0 -DUSE_PTHREAD +endif + +ifneq (00,$(lambdas)$(cpp0x)) + CXX_ONLY_FLAGS += $(CPP11_FLAGS) +endif + +TBB_ASM.OBJ= +MALLOC_ASM.OBJ= + +ifeq (ia64,$(arch)) +# Position-independent code (PIC) is a must on IA-64 architecture, even for regular (not shared) executables + CPLUS_FLAGS += $(PIC_KEY) +endif + +ifeq (intel64,$(arch)) + ITT_NOTIFY = -DDO_ITT_NOTIFY + CPLUS_FLAGS += -m64 $(RTM_KEY) + LIB_LINK_FLAGS += -m64 +endif + +ifeq (ia32,$(arch)) + ITT_NOTIFY = -DDO_ITT_NOTIFY + CPLUS_FLAGS += -m32 -march=pentium4 $(RTM_KEY) + LIB_LINK_FLAGS += -m32 +endif + +ifeq (ppc64,$(arch)) + CPLUS_FLAGS += -m64 + LIB_LINK_FLAGS += -m64 +endif + +ifeq (ppc32,$(arch)) + CPLUS_FLAGS += -m32 + LIB_LINK_FLAGS += -m32 +endif + +ifeq (bg,$(arch)) + CPLUS = $(firstword $(notdir $(shell which powerpc{64,32,}-bg{z..a}-linux-g++ 2>/dev/null))) + CONLY = $(firstword $(notdir $(shell which powerpc{64,32,}-bg{z..a}-linux-gcc 2>/dev/null))) +endif + +# for some gcc versions on Solaris, -m64 may imply V9, but perhaps not everywhere (TODO: verify) +ifeq (sparc,$(arch)) + CPLUS_FLAGS += -mcpu=v9 -m64 + LIB_LINK_FLAGS += -mcpu=v9 -m64 +endif + +# automatically generate "IT" instructions when compiling for Thumb ISA +ifeq (armv7,$(arch)) + CPLUS_FLAGS += -Wa,-mimplicit-it=thumb +endif + +#------------------------------------------------------------------------------ +# Setting assembler data. +#------------------------------------------------------------------------------ +ASM = as +ifeq (intel64,$(arch)) + ASM_FLAGS += --64 +endif +ifeq (ia32,$(arch)) + ASM_FLAGS += --32 +endif +ifeq ($(cfg),debug) + ASM_FLAGS += -g +endif + +ASSEMBLY_SOURCE=$(arch)-gas +ifeq (ia64,$(arch)) + ASM_FLAGS += -xexplicit + TBB_ASM.OBJ += atomic_support.o lock_byte.o log2.o pause.o ia64_misc.o + MALLOC_ASM.OBJ += atomic_support.o lock_byte.o pause.o log2.o +endif +#------------------------------------------------------------------------------ +# End of setting assembler data. +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# Setting tbbmalloc data. +#------------------------------------------------------------------------------ + +M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions + +#------------------------------------------------------------------------------ +# End of setting tbbmalloc data. +#------------------------------------------------------------------------------ diff --git a/build/linux.icc.inc b/build/linux.icc.inc new file mode 100644 index 0000000000..8a25a73ac8 --- /dev/null +++ b/build/linux.icc.inc @@ -0,0 +1,117 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +COMPILE_ONLY = -c -MMD +PREPROC_ONLY = -E -x c++ +INCLUDE_KEY = -I +DEFINE_KEY = -D +OUTPUT_KEY = -o # +OUTPUTOBJ_KEY = -o # +PIC_KEY = -fPIC +WARNING_AS_ERROR_KEY = -Werror +WARNING_KEY = -w1 +DYLIB_KEY = -shared +EXPORT_KEY = -Wl,--version-script, +NOINTRINSIC_KEY = -fno-builtin +LIBDL = -ldl + +CPLUS = icpc +CONLY = icc + +ITT_NOTIFY = -DDO_ITT_NOTIFY +ifeq (release,$(cfg)) +CPLUS_FLAGS = $(ITT_NOTIFY) -O2 -g -DUSE_PTHREAD +else +CPLUS_FLAGS = $(ITT_NOTIFY) -O0 -g -DUSE_PTHREAD -DTBB_USE_DEBUG +endif + +OPENMP_FLAG = -openmp +LIB_LINK_FLAGS = -shared -static-intel -Wl,-soname=$(BUILDING_LIBRARY) +LIBS += -lpthread -lrt +LINK_FLAGS = -rdynamic +C_FLAGS = $(CPLUS_FLAGS) +# ICC 11.0 and higher support -std=c++0x +ifneq (,$(shell icc -dumpversion | egrep "^1[1-9]\.")) + CPP11_FLAGS = -std=c++0x -D_TBB_CPP0X +endif + +# ICC 12.0 and higher provide Intel(R) Cilk(TM) Plus +ifneq (,$(shell icc -dumpversion | egrep "^1[2-9]\.")) + CILK_AVAILABLE = yes +endif + +TBB_ASM.OBJ= +MALLOC_ASM.OBJ= + +ifeq (ia32,$(arch)) + CPLUS_FLAGS += -m32 -falign-stack=maintain-16-byte + LIB_LINK_FLAGS += -m32 +endif + +ifeq (ia64,$(arch)) + ITT_NOTIFY = +# Position-independent code (PIC) is a must on IA-64 architecture, even for regular (not shared) executables +# strict-ansi does not work with on RHEL 4 AS + CPLUS_FLAGS += $(PIC_KEY) $(if $(findstring cc3.,$(runtime)),-ansi,-strict-ansi) +else + CPLUS_FLAGS += -strict-ansi +endif + +ifneq (,$(codecov)) +# no tool support for code coverage, need profile data generation + ITT_NOTIFY = -prof-genx +endif + +ifneq (00,$(lambdas)$(cpp0x)) + CXX_ONLY_FLAGS += $(CPP11_FLAGS) +endif + +#------------------------------------------------------------------------------ +# Setting assembler data. +#------------------------------------------------------------------------------ +ASM = as +ifeq (intel64,$(arch)) + ASM_FLAGS += --64 +endif +ifeq (ia32,$(arch)) + ASM_FLAGS += --32 +endif +ifeq ($(cfg),debug) + ASM_FLAGS += -g +endif + +ASSEMBLY_SOURCE=$(arch)-gas +ifeq (ia64,$(arch)) + ASM_FLAGS += -xexplicit + TBB_ASM.OBJ += atomic_support.o lock_byte.o log2.o pause.o ia64_misc.o + MALLOC_ASM.OBJ += atomic_support.o lock_byte.o pause.o log2.o +endif +#------------------------------------------------------------------------------ +# End of setting assembler data. +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# Setting tbbmalloc data. +#------------------------------------------------------------------------------ + +M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions + +#------------------------------------------------------------------------------ +# End of setting tbbmalloc data. +#------------------------------------------------------------------------------ + diff --git a/build/linux.inc b/build/linux.inc new file mode 100644 index 0000000000..631c52065d --- /dev/null +++ b/build/linux.inc @@ -0,0 +1,138 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +####### Detections and Commands ############################################### + +ifeq (icc,$(compiler)) + export COMPILER_VERSION := ICC: $(shell icc -V &1 | grep 'Version') + ifneq (,$(findstring IA-32, $(COMPILER_VERSION))) + export arch:=ia32 + endif + ifneq (,$(findstring Intel(R) 64, $(COMPILER_VERSION))) + export arch:=intel64 + endif + ifneq (,$(findstring IA-64, $(COMPILER_VERSION))) + export arch:=ia64 + endif + ifeq (,$(arch)) + $(warning "Unknown Intel compiler") + endif +endif + +ifndef arch + uname_m:=$(shell uname -m) + ifeq ($(uname_m),i686) + export arch:=ia32 + endif + ifeq ($(uname_m),ia64) + export arch:=ia64 + endif + ifeq ($(uname_m),x86_64) + export arch:=intel64 + endif + ifeq ($(uname_m),sparc64) + export arch:=sparc + endif + ifeq ($(uname_m),armv7l) + export arch:=armv7 + endif + ifndef arch + export arch:=$(uname_m) + endif +endif + +ifndef runtime + gcc_version:=$(shell gcc -dumpversion) + os_version:=$(shell uname -r) + os_kernel_version:=$(shell uname -r | sed -e 's/-.*$$//') + export os_glibc_version_full:=$(shell getconf GNU_LIBC_VERSION | grep glibc | sed -e 's/^glibc //') + os_glibc_version:=$(shell echo "$(os_glibc_version_full)" | sed -e '2,$$d' -e 's/-.*$$//') + export runtime:=cc$(gcc_version)_libc$(os_glibc_version)_kernel$(os_kernel_version) +endif + +native_compiler := gcc +export compiler ?= gcc +debugger ?= gdb + +CMD=sh -c +CWD=$(shell pwd) +CP=cp +RM?=rm -f +RD?=rmdir +MD?=mkdir -p +NUL= /dev/null +SLASH=/ +MAKE_VERSIONS=sh $(tbb_root)/build/version_info_linux.sh $(VERSION_FLAGS) >version_string.ver +MAKE_TBBVARS=sh $(tbb_root)/build/generate_tbbvars.sh + +ifdef LD_LIBRARY_PATH + export LD_LIBRARY_PATH := .:$(LD_LIBRARY_PATH) +else + export LD_LIBRARY_PATH := . +endif + +####### Build settings ######################################################## + +OBJ = o +DLL = so +MALLOC_DLL?=$(DLL) +LIBEXT = so +SONAME_SUFFIX =$(shell grep TBB_COMPATIBLE_INTERFACE_VERSION $(tbb_root)/include/tbb/tbb_stddef.h | egrep -o [0-9.]+) + +ifeq ($(arch),ia64) + def_prefix = lin64ipf +endif +ifeq ($(arch),sparc) + def_prefix = lin64 +endif +ifeq ($(arch),armv7) + def_prefix = lin32 +endif +ifeq (,$(def_prefix)) + ifeq (64,$(findstring 64,$(arch))) + def_prefix = lin64 + else + def_prefix = lin32 + endif +endif +TBB.LST = $(tbb_root)/src/tbb/$(def_prefix)-tbb-export.lst +TBB.DEF = $(TBB.LST:.lst=.def) + +TBB.DLL = $(TBB_NO_VERSION.DLL).$(SONAME_SUFFIX) +TBB.LIB = $(TBB.DLL) +TBB_NO_VERSION.DLL=libtbb$(CPF_SUFFIX)$(DEBUG_SUFFIX).$(DLL) +LINK_TBB.LIB = $(TBB_NO_VERSION.DLL) + +MALLOC_NO_VERSION.DLL = libtbbmalloc$(DEBUG_SUFFIX).$(MALLOC_DLL) +MALLOC.DEF = $(MALLOC_ROOT)/$(def_prefix)-tbbmalloc-export.def +MALLOC.DLL = $(MALLOC_NO_VERSION.DLL).$(SONAME_SUFFIX) +MALLOC.LIB = $(MALLOC_NO_VERSION.DLL) +LINK_MALLOC.LIB = $(MALLOC_NO_VERSION.DLL) + +MALLOCPROXY_NO_VERSION.DLL = libtbbmalloc_proxy$(DEBUG_SUFFIX).$(DLL) +MALLOCPROXY.DEF = $(MALLOC_ROOT)/$(def_prefix)-proxy-export.def +MALLOCPROXY.DLL = $(MALLOCPROXY_NO_VERSION.DLL).$(SONAME_SUFFIX) +MALLOCPROXY.LIB = $(MALLOCPROXY_NO_VERSION.DLL) +LINK_MALLOCPROXY.LIB = $(MALLOCPROXY.LIB) + +RML_NO_VERSION.DLL = libirml$(DEBUG_SUFFIX).$(DLL) +RML.DEF = $(RML_SERVER_ROOT)/lin-rml-export.def +RML.DLL = $(RML_NO_VERSION.DLL).1 +RML.LIB = $(RML_NO_VERSION.DLL) + +TEST_LAUNCHER=sh $(tbb_root)/build/test_launcher.sh $(largs) diff --git a/build/linux.pathcc.inc b/build/linux.pathcc.inc new file mode 100644 index 0000000000..477de03114 --- /dev/null +++ b/build/linux.pathcc.inc @@ -0,0 +1,98 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +COMPILE_ONLY = -c -MMD +PREPROC_ONLY = -E -x c++ +INCLUDE_KEY = -I +DEFINE_KEY = -D +OUTPUT_KEY = -o # +OUTPUTOBJ_KEY = -o # +PIC_KEY = -fPIC +WARNING_AS_ERROR_KEY = -Werror +WARNING_KEY = -Wall +TEST_WARNING_KEY = -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wextra + +WARNING_SUPPRESS = -Wno-parentheses -Wno-non-virtual-dtor +DYLIB_KEY = -shared +EXPORT_KEY = -Wl,--version-script, +LIBDL = -ldl + +CPLUS = pathCC +CONLY = pathcc +LIB_LINK_FLAGS = $(DYLIB_KEY) -Wl,-soname=$(BUILDING_LIBRARY) +LIBS += -lstl -lpthread -lrt +LINK_FLAGS = -Wl,-rpath-link=. -rdynamic +C_FLAGS = $(CPLUS_FLAGS) + +CPP11_FLAGS = -std=c++0x -D_TBB_CPP0X +OPENMP_FLAG = -openmp + +ifeq ($(cfg), release) + CPLUS_FLAGS = $(ITT_NOTIFY) -g -O2 -DUSE_PTHREAD +endif +ifeq ($(cfg), debug) + CPLUS_FLAGS = -DTBB_USE_DEBUG $(ITT_NOTIFY) -g -O0 -DUSE_PTHREAD +endif + +ifneq (00,$(lambdas)$(cpp0x)) + CXX_ONLY_FLAGS += $(CPP11_FLAGS) +endif + +TBB_ASM.OBJ= +MALLOC_ASM.OBJ= + +ifeq (intel64,$(arch)) + ITT_NOTIFY = -DDO_ITT_NOTIFY + CPLUS_FLAGS += -m64 + LIB_LINK_FLAGS += -m64 +endif + +ifeq (ia32,$(arch)) + ITT_NOTIFY = -DDO_ITT_NOTIFY + CPLUS_FLAGS += -m32 -march=pentium4 + LIB_LINK_FLAGS += -m32 +endif + +#------------------------------------------------------------------------------ +# Setting assembler data. +#------------------------------------------------------------------------------ +ASM = as +ifeq (intel64,$(arch)) + ASM_FLAGS += --64 +endif +ifeq (ia32,$(arch)) + ASM_FLAGS += --32 +endif +ifeq ($(cfg),debug) + ASM_FLAGS += -g +endif + +ASSEMBLY_SOURCE=$(arch)-gas +#------------------------------------------------------------------------------ +# End of setting assembler data. +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# Setting tbbmalloc data. +#------------------------------------------------------------------------------ + +M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions + +#------------------------------------------------------------------------------ +# End of setting tbbmalloc data. +#------------------------------------------------------------------------------ diff --git a/build/linux.xl.inc b/build/linux.xl.inc new file mode 100644 index 0000000000..083b883297 --- /dev/null +++ b/build/linux.xl.inc @@ -0,0 +1,104 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +####### Detections and Commands ############################################### + +COMPILE_ONLY = -c +PREPROC_ONLY = -E -qsourcetype=c +INCLUDE_KEY = -I +DEFINE_KEY = -D +OUTPUT_KEY = -o # +OUTPUTOBJ_KEY = -o # +PIC_KEY = -qpic +WARNING_AS_ERROR_KEY = -qhalt=w +WARNING_KEY = +TEST_WARNING_KEY = + +WARNING_SUPPRESS = +DYLIB_KEY = -qmkshrobj +EXPORT_KEY = -Wl,--version-script, +LIBDL = -ldl + +CPLUS = xlc++_r +CONLY = xlc_r +LIB_LINK_FLAGS = $(DYLIB_KEY) -Wl,-soname=$(BUILDING_LIBRARY) +LIBS = -lpthread -lrt +C_FLAGS = $(CPLUS_FLAGS) + +ifeq ($(cfg), release) + CPLUS_FLAGS = $(ITT_NOTIFY) -O2 -DUSE_PTHREAD +endif +ifeq ($(cfg), debug) + CPLUS_FLAGS = -DTBB_USE_DEBUG $(ITT_NOTIFY) -g -O0 -DUSE_PTHREAD +endif + +# Adding directly to CPLUS_FLAGS instead of to WARNING_SUPPRESS because otherwise it would not be used in several tests (why not?). +# Suppress warnings like: +# - "1500-029: (W) WARNING: subprogram [...] could not be inlined into [...]." +# - "1501-201: (W) Maximum number of common component diagnostics, 10 has been exceeded." +# see http://www-01.ibm.com/support/docview.wss?uid=swg1LI72843 +# it seems that the internal compiler error that would ensue has now been avoided, making the condition harmless +# - "1540-0198 (W) The omitted keyword "private" is assumed for base class "no_copy"." +# - "1540-0822 (W) The name "__FUNCTION__" must not be defined as a macro." +CPLUS_FLAGS += -qsuppress=1500-029:1501-201:1540-0198:1540-0822 + +ASM= +ASM_FLAGS= + +TBB_ASM.OBJ= + +ifeq (intel64,$(arch)) + ITT_NOTIFY = -DDO_ITT_NOTIFY + CPLUS_FLAGS += -q64 + LIB_LINK_FLAGS += -q64 +endif + +# TODO: equivalent for -march=pentium4 in CPLUS_FLAGS +ifeq (ia32,$(arch)) + ITT_NOTIFY = -DDO_ITT_NOTIFY + CPLUS_FLAGS += -q32 -qarch=pentium4 + LIB_LINK_FLAGS += -q32 +endif + +ifeq (ppc64,$(arch)) + CPLUS_FLAGS += -q64 + LIB_LINK_FLAGS += -q64 +endif + +ifeq (ppc32,$(arch)) + CPLUS_FLAGS += -q32 + LIB_LINK_FLAGS += -q32 +endif + +ifeq (bg,$(arch)) + CPLUS = bgxlC_r + CONLY = bgxlc_r +endif + +#------------------------------------------------------------------------------ +# Setting tbbmalloc data. +#------------------------------------------------------------------------------ + +# Suppress innumerable warnings like "1540-1088 (W) The exception specification is being ignored." +# Suppress warnings like "1540-1090 (I) The destructor of "lock" might not be called." +# TODO: aren't these warnings an indication that -qnoeh might not be appropriate? +M_CPLUS_FLAGS = $(CPLUS_FLAGS) -qnortti -qnoeh -qsuppress=1540-1088:1540-1090 + +#------------------------------------------------------------------------------ +# End of setting tbbmalloc data. +#------------------------------------------------------------------------------ diff --git a/build/macos.clang.inc b/build/macos.clang.inc new file mode 100644 index 0000000000..51173b10ce --- /dev/null +++ b/build/macos.clang.inc @@ -0,0 +1,128 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +CPLUS = clang++ +CONLY = clang +COMPILE_ONLY = -c -MMD +PREPROC_ONLY = -E -x c++ +INCLUDE_KEY = -I +DEFINE_KEY = -D +OUTPUT_KEY = -o # +OUTPUTOBJ_KEY = -o # +PIC_KEY = -fPIC +WARNING_AS_ERROR_KEY = -Werror +WARNING_KEY = -Wall +TEST_WARNING_KEY = -Wextra -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor +WARNING_SUPPRESS = -Wno-non-virtual-dtor -Wno-dangling-else +DYLIB_KEY = -dynamiclib +EXPORT_KEY = -Wl,-exported_symbols_list, +LIBDL = -ldl + +LIBS = -lpthread +LINK_FLAGS = +LIB_LINK_FLAGS = -dynamiclib -install_name @rpath/$(BUILDING_LIBRARY) +C_FLAGS = $(CPLUS_FLAGS) + +ifeq ($(cfg), release) + CPLUS_FLAGS = -g -O2 +else + CPLUS_FLAGS = -g -O0 -DTBB_USE_DEBUG +endif + +CPLUS_FLAGS += -DUSE_PTHREAD + +# For Clang, we add the option to support RTM intrinsics *iff* xtest is found in +ifneq (,$(shell grep xtest `echo "\#include" | clang -E -M - 2>&1 | grep immintrin.h` 2>/dev/null)) + RTM_KEY = -mrtm +endif + +ifneq (,$(stdlib)) + CPLUS_FLAGS += -stdlib=$(stdlib) + LIB_LINK_FLAGS += -stdlib=$(stdlib) +endif + +CPP11_FLAGS = -std=c++11 -D_TBB_CPP0X + +ifneq (00,$(lambdas)$(cpp0x)) + CXX_ONLY_FLAGS += $(CPP11_FLAGS) +endif + +ifeq (intel64,$(arch)) + CPLUS_FLAGS += -m64 $(RTM_KEY) + LINK_FLAGS += -m64 + LIB_LINK_FLAGS += -m64 +endif + +ifeq (ia32,$(arch)) + CPLUS_FLAGS += -m32 $(RTM_KEY) + LINK_FLAGS += -m32 + LIB_LINK_FLAGS += -m32 +endif + +ifeq (ppc64,$(arch)) + CPLUS_FLAGS += -arch ppc64 + LINK_FLAGS += -arch ppc64 + LIB_LINK_FLAGS += -arch ppc64 +endif + +ifeq (ppc32,$(arch)) + CPLUS_FLAGS += -arch ppc + LINK_FLAGS += -arch ppc + LIB_LINK_FLAGS += -arch ppc +endif + +ifeq (armv7,$(arch)) + CPLUS_FLAGS += -arch armv7 + LINK_FLAGS += -arch armv7 + LIB_LINK_FLAGS += -arch armv7 +endif + +ifdef SDKROOT + CPLUS_FLAGS += -isysroot $(SDKROOT) + LIB_LINK_FLAGS += -L$(SDKROOT)/usr/lib/system -L$(SDKROOT)/usr/lib/ +endif + +#------------------------------------------------------------------------------ +# Setting assembler data. +#------------------------------------------------------------------------------ + +ASM = as +ifeq (intel64,$(arch)) + ASM_FLAGS += -arch x86_64 +endif +ifeq (ia32,$(arch)) + ASM_FLAGS += -arch i386 +endif +ifeq ($(cfg), debug) + ASM_FLAGS += -g +endif + +#------------------------------------------------------------------------------ +# End of setting assembler data. +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# Setting tbbmalloc data. +#------------------------------------------------------------------------------ + +M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions + +#------------------------------------------------------------------------------ +# End of setting tbbmalloc data. +#------------------------------------------------------------------------------ + diff --git a/build/macos.gcc.inc b/build/macos.gcc.inc new file mode 100644 index 0000000000..75a9b8c80a --- /dev/null +++ b/build/macos.gcc.inc @@ -0,0 +1,112 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +CPLUS = g++ +CONLY = gcc +COMPILE_ONLY = -c -MMD +PREPROC_ONLY = -E -x c++ +INCLUDE_KEY = -I +DEFINE_KEY = -D +OUTPUT_KEY = -o # +OUTPUTOBJ_KEY = -o # +PIC_KEY = -fPIC +WARNING_AS_ERROR_KEY = -Werror +WARNING_KEY = -Wall +TEST_WARNING_KEY = -Wextra -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor +WARNING_SUPPRESS = -Wno-non-virtual-dtor +DYLIB_KEY = -dynamiclib +EXPORT_KEY = -Wl,-exported_symbols_list, +LIBDL = -ldl + +LIBS = -lpthread +LINK_FLAGS = +LIB_LINK_FLAGS = -dynamiclib -install_name @rpath/$(BUILDING_LIBRARY) +C_FLAGS = $(CPLUS_FLAGS) + +ifeq ($(cfg), release) + CPLUS_FLAGS = -g -O2 +else + CPLUS_FLAGS = -g -O0 -DTBB_USE_DEBUG +endif + +CPLUS_FLAGS += -DUSE_PTHREAD + +ifeq (intel64,$(arch)) + CPLUS_FLAGS += -m64 + LINK_FLAGS += -m64 + LIB_LINK_FLAGS += -m64 +endif + +ifeq (ia32,$(arch)) + CPLUS_FLAGS += -m32 + LINK_FLAGS += -m32 + LIB_LINK_FLAGS += -m32 +endif + +ifeq (ppc64,$(arch)) + CPLUS_FLAGS += -arch ppc64 + LINK_FLAGS += -arch ppc64 + LIB_LINK_FLAGS += -arch ppc64 +endif + +ifeq (ppc32,$(arch)) + CPLUS_FLAGS += -arch ppc + LINK_FLAGS += -arch ppc + LIB_LINK_FLAGS += -arch ppc +endif + +ifeq (armv7,$(arch)) + CPLUS_FLAGS += -arch armv7 + LINK_FLAGS += -arch armv7 + LIB_LINK_FLAGS += -arch armv7 +endif + +ifdef SDKROOT + CPLUS_FLAGS += -isysroot $(SDKROOT) + LIB_LINK_FLAGS += -L$(SDKROOT)/usr/lib/system -L$(SDKROOT)/usr/lib/ +endif + +#------------------------------------------------------------------------------ +# Setting assembler data. +#------------------------------------------------------------------------------ + +ASM = as +ifeq (intel64,$(arch)) + ASM_FLAGS += -arch x86_64 +endif +ifeq (ia32,$(arch)) + ASM_FLAGS += -arch i386 +endif +ifeq ($(cfg), debug) + ASM_FLAGS += -g +endif + +#------------------------------------------------------------------------------ +# End of setting assembler data. +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# Setting tbbmalloc data. +#------------------------------------------------------------------------------ + +M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions + +#------------------------------------------------------------------------------ +# End of setting tbbmalloc data. +#------------------------------------------------------------------------------ + diff --git a/build/macos.icc.inc b/build/macos.icc.inc new file mode 100644 index 0000000000..3d67c7518c --- /dev/null +++ b/build/macos.icc.inc @@ -0,0 +1,103 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +CPLUS = icpc +CONLY = icc +COMPILE_ONLY = -c -MMD +PREPROC_ONLY = -E -x c++ +INCLUDE_KEY = -I +DEFINE_KEY = -D +OUTPUT_KEY = -o # +OUTPUTOBJ_KEY = -o # +PIC_KEY = -fPIC +WARNING_AS_ERROR_KEY = -Werror +WARNING_KEY = -w1 +DYLIB_KEY = -dynamiclib +EXPORT_KEY = -Wl,-exported_symbols_list, +LIBDL = -ldl + +OPENMP_FLAG = -openmp +LIBS = -lpthread +LINK_FLAGS = +LIB_LINK_FLAGS = -dynamiclib -static-intel -install_name @rpath/$(BUILDING_LIBRARY) +C_FLAGS = $(CPLUS_FLAGS) +# ICC 11.0 and higher support -std=c++0x +ifneq (,$(shell icc -dumpversion | egrep "^1[1-9]\.")) + CPP11_FLAGS = -std=c++0x -D_TBB_CPP0X +endif + +# ICC 12.0 and higher provide Intel(R) Cilk(TM) Plus +ifneq (,$(shell icc -dumpversion | egrep "^1[2-9]\.")) + CILK_AVAILABLE = yes +endif + +ifeq ($(cfg), release) + CPLUS_FLAGS = -g -O2 -fno-omit-frame-pointer +else + CPLUS_FLAGS = -g -O0 -DTBB_USE_DEBUG +endif + +CPLUS_FLAGS += -DUSE_PTHREAD + +ifneq (,$(codecov)) + CPLUS_FLAGS += -prof-genx +endif + +ifneq (00,$(lambdas)$(cpp0x)) + CXX_ONLY_FLAGS += $(CPP11_FLAGS) +endif + +# ICC 14.0 and higher support usage of libc++, clang standard library +ifneq (,$(shell icc -dumpversion | egrep "^1[4-9]\.")) +ifneq (,$(stdlib)) + CPLUS_FLAGS += -stdlib=$(stdlib) + LIB_LINK_FLAGS += -stdlib=$(stdlib) +endif +endif + +#------------------------------------------------------------------------------ +# Setting assembler data. +#------------------------------------------------------------------------------ + +ASM = as +ifeq (intel64,$(arch)) + ASM_FLAGS += -arch x86_64 +endif +ifeq (ia32,$(arch)) + CPLUS_FLAGS += -m32 + LINK_FLAGS += -m32 + LIB_LINK_FLAGS += -m32 + ASM_FLAGS += -arch i386 +endif +ifeq ($(cfg), debug) + ASM_FLAGS += -g +endif + +#------------------------------------------------------------------------------ +# End of setting assembler data. +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# Setting tbbmalloc data. +#------------------------------------------------------------------------------ + +M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions + +#------------------------------------------------------------------------------ +# End of setting tbbmalloc data. +#------------------------------------------------------------------------------ diff --git a/build/macos.inc b/build/macos.inc new file mode 100644 index 0000000000..396413d777 --- /dev/null +++ b/build/macos.inc @@ -0,0 +1,115 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +####### Detections and Commands ############################################### + +ifeq (icc,$(compiler)) + export COMPILER_VERSION := ICC: $(shell icc -V &1 | grep 'Version') + ifneq (,$(findstring IA-32, $(COMPILER_VERSION))) + export arch:=ia32 + endif + ifneq (,$(findstring Intel(R) 64, $(COMPILER_VERSION))) + export arch:=intel64 + endif + ifeq (,$(arch)) + $(warning "Unknown Intel compiler") + endif +endif + +ifndef arch + ifeq ($(shell /usr/sbin/sysctl -n hw.machine),Power Macintosh) + ifeq ($(shell /usr/sbin/sysctl -n hw.optional.64bitops),1) + export arch:=ppc64 + else + export arch:=ppc32 + endif + else + ifeq ($(shell /usr/sbin/sysctl -n hw.optional.x86_64 2>/dev/null),1) + export arch:=intel64 + else + export arch:=ia32 + endif + endif +endif + +ifeq (ios,$(target)) + ifneq (armv7, $(arch)) + $(error $(arch) not supported for target 'ios') + endif + export SDKROOT?=$(shell xcodebuild -sdk -version | grep -o -E '/.*SDKs/iPhoneOS.*' 2>/dev/null) + ifeq (,$(SDKROOT)) + $(error iOS SDK not found) + endif + # next, use a single compiler include file for both iOS* and OS X* builds. + override target:=macos + export target +endif + +ifndef runtime + gcc_version:=$(shell gcc -dumpversion) + os_version:=$(shell /usr/bin/sw_vers -productVersion) + export runtime:=cc$(gcc_version)_os$(os_version) +endif + +native_compiler := clang +export compiler ?= clang +debugger ?= gdb + +export stdlib ?= libc++ + +CMD=$(SHELL) -c +CWD=$(shell pwd) +RM?=rm -f +RD?=rmdir +MD?=mkdir -p +NUL= /dev/null +SLASH=/ +MAKE_VERSIONS=sh $(tbb_root)/build/version_info_macos.sh $(VERSION_FLAGS) >version_string.ver +MAKE_TBBVARS=sh $(tbb_root)/build/generate_tbbvars.sh DY + +ifdef DYLD_LIBRARY_PATH + export DYLD_LIBRARY_PATH := .:$(DYLD_LIBRARY_PATH) +else + export DYLD_LIBRARY_PATH := . +endif + +####### Build settings ######################################################## + +OBJ=o +DLL=dylib +MALLOC_DLL?=$(DLL) +LIBEXT=dylib + +def_prefix = $(if $(findstring 64,$(arch)),mac64,mac32) + +TBB.LST = $(tbb_root)/src/tbb/$(def_prefix)-tbb-export.lst +TBB.DEF = $(TBB.LST:.lst=.def) +TBB.DLL = libtbb$(CPF_SUFFIX)$(DEBUG_SUFFIX).$(DLL) +TBB.LIB = $(TBB.DLL) +LINK_TBB.LIB = $(TBB.LIB) + +MALLOC.DEF = $(MALLOC_ROOT)/$(def_prefix)-tbbmalloc-export.def +MALLOC.DLL = libtbbmalloc$(DEBUG_SUFFIX).$(MALLOC_DLL) +MALLOC.LIB = $(MALLOC.DLL) +LINK_MALLOC.LIB = $(MALLOC.LIB) + +MALLOCPROXY.DLL = libtbbmalloc_proxy$(DEBUG_SUFFIX).$(MALLOC_DLL) +MALLOCPROXY.LIB = $(MALLOCPROXY.DLL) +LINK_MALLOCPROXY.LIB = $(MALLOCPROXY.LIB) + +TEST_LAUNCHER=sh $(tbb_root)/build/test_launcher.sh $(largs) diff --git a/build/mic.icc.inc b/build/mic.icc.inc new file mode 100644 index 0000000000..3c8cfcdfa8 --- /dev/null +++ b/build/mic.icc.inc @@ -0,0 +1,83 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +COMPILE_ONLY = -c -MMD +PREPROC_ONLY = -E -x c++ +INCLUDE_KEY = -I +DEFINE_KEY = -D +OUTPUT_KEY = -o # +OUTPUTOBJ_KEY = -o # +PIC_KEY = -fPIC +WARNING_AS_ERROR_KEY = -Werror +WARNING_KEY = -w1 +# Several options (e.g. -opt-streaming-stores) were deprecated in Intel(R) Compiler 15.0. +# When Intel(R) Compiler 14.0 support is dropped consider enabling remark 10009 and replacing deprecated options with +# new ones (e.g. -qopt-streaming-stores never). +WARNING_SUPPRESS = -diag-disable 10009 +TEST_WARNING_KEY = -diag-disable 10009 +DYLIB_KEY = -shared -Wl,-soname=$@ +EXPORT_KEY = -Wl,--version-script, +NOINTRINSIC_KEY = -fno-builtin +LIBDL = -ldl + +CPLUS = icpc +CONLY = icc + +ifeq (release,$(cfg)) + CPLUS_FLAGS = -O2 -g -DUSE_PTHREAD +else + CPLUS_FLAGS = -O0 -g -DUSE_PTHREAD -DTBB_USE_DEBUG +endif + +ifneq (,$(codecov)) + CPLUS_FLAGS += -prof-genx +endif + +OPENMP_FLAG = -openmp +LIB_LINK_FLAGS = -shared -static-intel -Wl,-soname=$(BUILDING_LIBRARY) +LIBS += -lpthread -lrt +C_FLAGS = $(CPLUS_FLAGS) +CPP11_FLAGS = -std=c++0x -D_TBB_CPP0X +CILK_AVAILABLE = yes + +TBB_ASM.OBJ= +MALLOC_ASM.OBJ= + +ifneq (00,$(lambdas)$(cpp0x)) + CXX_ONLY_FLAGS += $(CPP11_FLAGS) +endif + +CPLUS_FLAGS += -DHARNESS_INCOMPLETE_SOURCES=1 -D__TBB_MIC_NATIVE -DTBB_USE_EXCEPTIONS=0 -opt-streaming-stores never +CPLUS += -mmic +CONLY += -mmic +LINK_FLAGS = -Wl,-rpath-link=. -rdynamic +# Tell the icc to not link against libcilk*. Otherwise icc tries to link and emits a warning message. +LIB_LINK_FLAGS += -no-intel-extensions + +#------------------------------------------------------------------------------ +# Setting tbbmalloc data. +#------------------------------------------------------------------------------ + +M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions + +#------------------------------------------------------------------------------ +# End of setting tbbmalloc data. +#------------------------------------------------------------------------------ + + + diff --git a/build/mic.linux.inc b/build/mic.linux.inc new file mode 100644 index 0000000000..00b28e4699 --- /dev/null +++ b/build/mic.linux.inc @@ -0,0 +1,43 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +ifeq ($(tbb_os),mic) + $(error MIC supports only cross-compilation. Specify "target=mic" instead.) +endif + +ifneq ($(BUILDING_PHASE),1) + # The same build prefix should be used in offload.inc + ifeq (,$(tbb_build_prefix)) + tbb_build_prefix=mic_icc$(CPF_SUFFIX) + endif + # For examples + mic_tbb_build_prefix=$(tbb_build_prefix) +endif + +MAKE_VERSIONS=sh $(tbb_root)/build/version_info_linux.sh $(VERSION_FLAGS) >version_string.ver +MAKE_TBBVARS=sh $(tbb_root)/build/generate_tbbvars.sh MIC_ MIC_ +def_prefix=lin64 + +TEST_LAUNCHER= +run_cmd ?= bash $(tbb_root)/build/mic.linux.launcher.sh $(largs) + +# detects whether examples are being built. +ifeq ($(BUILDING_PHASE),0) + export UI = con + export x64 = 64 +endif # examples diff --git a/build/mic.linux.launcher.sh b/build/mic.linux.launcher.sh new file mode 100644 index 0000000000..0409f7604f --- /dev/null +++ b/build/mic.linux.launcher.sh @@ -0,0 +1,157 @@ +#!/bin/bash +# +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# Usage: +# mic.linux.launcher.sh [-v] [-q] [-s] [-r ] [-u] [-l ] +# where: -v enables verbose output +# where: -q enables quiet mode +# where: -s runs the test in stress mode (until non-zero exit code or ctrl-c pressed) +# where: -r specifies number of times to repeat execution +# where: -u limits stack size +# where: -l specifies the library name to be assigned to LD_PRELOAD +# +# Libs and executable necessary for testing should be present in the current directory before running. +# Note: Do not remove the redirections to '/dev/null' in the script, otherwise the nightly test system will fail. +# +trap 'echo Error at line $LINENO while executing "$BASH_COMMAND"' ERR # +trap 'echo -e "\n*** Interrupted ***" && exit 1' SIGINT SIGQUIT # +# Process the optional arguments if present +while getopts "qvsr:ul:" flag # +do case $flag in # + s ) # Stress testing mode + echo Doing stress testing. Press Ctrl-C to terminate + run_env='stressed() { while $*; do :; done; };' # + run_prefix="stressed $run_prefix" ;; # + r ) # Repeats test n times + run_env="repeated() { for i in \$(seq 1 $OPTARG); do echo \$i of $OPTARG:; \$*; done; };" # + run_prefix="repeated $run_prefix" ;; # + l ) # Additional library + ldd_list+="$OPTARG " # + run_prefix+=" LD_PRELOAD=$OPTARG" ;; # + u ) # Set stack limit + run_prefix="ulimit -s 10240; $run_prefix" ;; # + q ) # Quiet mode, removes 'done' but prepends any other output by test name + SUPPRESS='>/dev/null' # + verbose=1 ;; # TODO: implement a better quiet mode + v ) # Verbose mode + verbose=1 ;; # +esac done # +shift `expr $OPTIND - 1` # +[ $verbose ] || SUPPRESS='>/dev/null' # +# +# Collect the executable name +fexename="$1" # +exename=`basename $1` # +shift # +# +: ${MICDEV:=mic0} # +RSH="sudo ssh $MICDEV" # +RCP="sudo scp" # +currentdir=$PWD # +# +# Prepare the target directory on the device +targetdir="`$RSH mktemp -d /tmp/tbbtestXXXXXX 2>/dev/null`" # +# Prepare the temporary directory on the host +hostdir="`mktemp -d /tmp/tbbtestXXXXXX 2>/dev/null`" # +# +function copy_files { # + eval "cp $* $hostdir/ $SUPPRESS 2>/dev/null || exit \$?" # + eval "$RCP $hostdir/* $MICDEV:$targetdir/ $SUPPRESS 2>/dev/null || exit \$?" # + eval "rm $hostdir/* $SUPPRESS 2>/dev/null || exit \$?" # +} # copy files +# +function clean_all() { # + eval "$RSH rm -fr $targetdir $SUPPRESS" ||: # + eval "rm -fr $hostdir $SUPPRESS" ||: # +} # clean all temporary files +# +function kill_interrupt() { # + echo -e "\n*** Killing remote $exename ***" && $RSH "killall $exename" # + clean_all # +} # kill target process +# +trap 'clean_all' SIGINT SIGQUIT # trap keyboard interrupt (control-c) +# +# Transfer the test executable file and its auxiliary libraries (named as {test}_dll.so) to the target device. +copy_files $fexename `ls ${exename%\.*}*.so 2>/dev/null ||:` # +# +# Collect all dependencies of the test and its auxiliary libraries to transfer them to the target device. +ldd_list+="libtbbmalloc*.so* libirml*.so* `$RSH ldd $targetdir/\* | grep = | cut -d= -f1 2>/dev/null`" # +fnamelist="" # +# +# Find the libraries and add them to the list. +# For example, go through MIC_LD_LIBRARY_PATH and add TBB libraries from the first +# directory that contains tbb files +mic_dir_list=`echo .:$MIC_LD_LIBRARY_PATH | tr : " "` # +for name in $ldd_list; do # adds the first matched name in specified dirs + fnamelist+="`find $mic_dir_list -name $name -a -readable -print -quit 2>/dev/null` "||: # +done # +# +# Remove extra spaces. +fnamelist=`echo $fnamelist` # +# Transfer collected executable and library files to the target device. +[ -n "$fnamelist" ] && copy_files $fnamelist +# +# Transfer input files used by example codes by scanning the executable argument list. +argfiles= # +args= # +for arg in "$@"; do # + if [ -r $arg ]; then # + argfiles+="$arg " # + args+="$(basename $arg) " # + else # + args+="$arg " # + fi # +done # +[ -n "$argfiles" ] && copy_files $argfiles # +# +# Get the list of transferred files +testfiles="`$RSH find $targetdir/ -type f | tr '\n' ' ' 2>/dev/null`" # +# +[ $verbose ] && echo Running $run_prefix ./$exename $args # +# Run the test on the target device +trap 'kill_interrupt' SIGINT SIGQUIT # trap keyboard interrupt (control-c) +trap - ERR # +run_env+="cd $targetdir; export LD_LIBRARY_PATH=.:\$LD_LIBRARY_PATH;" # +$RSH "$run_env $run_prefix ./$exename $args" # +# +# Delete the test files and get the list of output files +outfiles=`$RSH rm $testfiles 2>/dev/null; find $targetdir/ -type f 2>/dev/null` ||: # +if [ -n "$outfiles" ]; then # + for outfile in $outfiles; do # + filename=$(basename $outfile) # + subdir=$(dirname $outfile) # + subdir="${subdir#$targetdir}" # + [ -n $subdir ] subdir=$subdir/ # + # Create directories on host + [ ! -d "$hostdir/$subdir" ] && mkdir -p "$hostdir/$subdir" # + [ ! -d "$currentdir/$subdir" ] && mkdir -p "$currentdir/$subdir" # + # Copy the output file to the temporary directory on host + eval "$RCP -r '$MICDEV:${outfile#}' '$hostdir/$subdir$filename' $SUPPRESS 2>&1 || exit \$?" # + # Copy the output file from the temporary directory to the current directory + eval "cp '$hostdir/$subdir$filename' '$currentdir/$subdir$filename' $SUPPRESS 2>&1 || exit \$?" # + done # +fi # +# +# Clean up temporary directories +clean_all +# +# Return the exit code of the test. +exit $? # diff --git a/build/mic.offload.inc b/build/mic.offload.inc new file mode 100644 index 0000000000..0cf51a2af4 --- /dev/null +++ b/build/mic.offload.inc @@ -0,0 +1,123 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +ifneq (mic,$(offload)) + $(error File mic.offload.inc should not be included directly. Use offload=mic instead.) +endif +ifneq (icc,$(compiler)) + $(error Only Intel(R) Compiler is supported for MIC offload compilation) +endif + +# The same build prefix should be used in mic.linux.inc +mic_tbb_build_prefix=mic_icc$(CPF_SUFFIX) +MIC_OFFLOAD_NATIVE_PATH?=../$(mic_tbb_build_prefix)_$(cfg) + +ifdef BUILDING_PHASE + ifeq ($(BUILDING_PHASE),1) + # Tests + export MIC_OFFLOAD_NATIVE_PATH + LINK_TBB_NATIVE.LIB=$(MIC_OFFLOAD_NATIVE_PATH)/$(TBB.LIB) + LINK_TBB.LIB=-offload-option,mic,ld,"$(LINK_TBB_NATIVE.LIB)" $(TBB.LIB) + LINK_MALLOC_NATIVE.LIB=$(MIC_OFFLOAD_NATIVE_PATH)/$(MALLOC.DLL) + LINK_MALLOC.LIB=-offload-option,mic,ld,"$(LINK_MALLOC_NATIVE.LIB)" $(MALLOC.LIB) + LINK_MALLOCPROXY_NATIVE.LIB=$(MIC_OFFLOAD_NATIVE_PATH)/$(MALLOCPROXY.DLL) + LINK_MALLOCPROXY.LIB=-offload-option,mic,ld,"$(LINK_MALLOCPROXY_NATIVE.LIB)" $(MALLOCPROXY.LIB) + + # Export extensions for test_launcher + export DLL + export TEST_EXT=offload.exe + OBJ=offload.o + + # Do not use -Werror because it is too strict for the early offload compiler. + # Need to set anything because WARNING_AS_ERROR_KEY should not be empty. + # Treat #2426 as a warning. Print errors only. + tbb_strict=0 + WARNING_AS_ERROR_KEY = Warning as error + WARNING_KEY = -diag-warning 2426 -w0 + + # Several options (e.g. -offload-attribute-target, -offload-option and so on) were deprecated in Intel(R) Compiler 15.0. + # When Intel(R) Compiler 14.0 support is dropped consider enabling remark 10009 and replacing deprecated options with + # new ones (e.g. -qoffload-attribute-target, -qoffload-option and so on). + WARNING_KEY += -diag-disable 10009 + + CXX_MIC_STUFF = -offload-attribute-target=mic -D__TBB_MIC_OFFLOAD=1 -offload-option,mic,compiler,"-D__TBB_MIC_OFFLOAD=1 $(CXX_MIC_NATIVE_STUFF)" + CXX_MIC_NATIVE_STUFF = -DHARNESS_INCOMPLETE_SOURCES=1 -D__TBB_MIC_NATIVE -DTBB_USE_EXCEPTIONS=0 + CPLUS_FLAGS += $(CXX_MIC_STUFF) + + # Some tests require that an executable exports its symbols. + LINK_FLAGS += -offload-option,mic,ld,"--export-dynamic" + + # libcoi_device.so is needed for COIProcessProxyFlush used in Harness. + LINK_FLAGS += -offload-option,mic,ld,"-lcoi_device" + + # DSO-linking semantics forces linking libpthread and librt to a test. + LINK_FLAGS += -offload-option,mic,ld,"-lpthread -lrt" + + .PHONY: FORCE + FORCE: + + $(MIC_OFFLOAD_NATIVE_PATH)/%_dll.$(DLL): FORCE + @$(MAKE) --no-print-directory -C "$(MIC_OFFLOAD_NATIVE_PATH)" target=mic offload= -f$(tbb_root)/build/Makefile.$(TESTFILE) $*_dll.$(DLL) + %_dll.$(DLL): $(MIC_OFFLOAD_NATIVE_PATH)/%_dll.$(DLL) FORCE + @$(MAKE) --no-print-directory offload= -f$(tbb_root)/build/Makefile.$(TESTFILE) $*_dll.$(DLL) + + .PRECIOUS: $(MIC_OFFLOAD_NATIVE_PATH)/%_dll.$(DLL) + + %.$(TEST_EXT): LINK_FILES+=-offload-option,mic,ld,"$(addprefix $(MIC_OFFLOAD_NATIVE_PATH)/,$(TEST_LIBS))" + + TEST_LAUNCHER=sh $(tbb_root)/build/test_launcher.sh $(largs) + + ifdef MIC_LD_LIBRARY_PATH + export MIC_LD_LIBRARY_PATH := $(MIC_OFFLOAD_NATIVE_PATH):$(MIC_LD_LIBRARY_PATH) + else + export MIC_LD_LIBRARY_PATH := $(MIC_OFFLOAD_NATIVE_PATH) + endif + else + # Examples + export UI = con + export x64 = 64 + endif +else + # Libraries + LIB_TARGETS = tbb tbbmalloc tbbproxy rml + addsuffixes = $(foreach suff,$(1),$(addsuffix $(suff),$(2))) + + .PHONY: $(call addsuffixes, _debug _release _debug_mic _release_mic,$(LIB_TARGETS)) + + # The dependence on *_debug and *_release targets unifies the offload support + # for top-level Makefile and src/Makefile + $(LIB_TARGETS): %: %_release %_debug + + # "override offload=" suppresses the "offload" variable value for nested makes + $(LIB_TARGETS) $(call addsuffixes, _debug _release,$(LIB_TARGETS)): override offload= + # Apply overriding for library builds + export offload + export tbb_build_prefix + # Add the dependency on target libraries + $(call addsuffixes, _debug _release,$(LIB_TARGETS)): %: %_mic + + # tbb_build_prefix should be overriden since we want to restart make in "clear" environment + $(call addsuffixes, _debug_mic _release_mic,$(LIB_TARGETS)): override tbb_build_prefix= + $(call addsuffixes, _debug_mic _release_mic,$(LIB_TARGETS)): %_mic: + @$(MAKE) --no-print-directory -C "$(full_tbb_root)/src" $* target=mic tbb_root=.. + + mic_clean: override tbb_build_prefix= + mic_clean: + @$(MAKE) --no-print-directory -C "$(full_tbb_root)/src" clean offload= target=mic tbb_root=.. + clean: mic_clean +endif diff --git a/build/suncc.map.pause b/build/suncc.map.pause new file mode 100644 index 0000000000..a92d08eb19 --- /dev/null +++ b/build/suncc.map.pause @@ -0,0 +1 @@ +hwcap_1 = OVERRIDE; \ No newline at end of file diff --git a/build/test_launcher.bat b/build/test_launcher.bat new file mode 100644 index 0000000000..35bbf4333e --- /dev/null +++ b/build/test_launcher.bat @@ -0,0 +1,74 @@ +@echo off +REM +REM Copyright 2005-2015 Intel Corporation. All Rights Reserved. +REM +REM This file is part of Threading Building Blocks. Threading Building Blocks is free software; +REM you can redistribute it and/or modify it under the terms of the GNU General Public License +REM version 2 as published by the Free Software Foundation. Threading Building Blocks is +REM distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +REM implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +REM See the GNU General Public License for more details. You should have received a copy of +REM the GNU General Public License along with Threading Building Blocks; if not, write to the +REM Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +REM +REM As a special exception, you may use this file as part of a free software library without +REM restriction. Specifically, if other files instantiate templates or use macros or inline +REM functions from this file, or you compile this file and link it with other files to produce +REM an executable, this file does not by itself cause the resulting executable to be covered +REM by the GNU General Public License. This exception does not however invalidate any other +REM reasons why the executable file might be covered by the GNU General Public License. +REM + +set cmd_line= +if DEFINED run_prefix set cmd_line=%run_prefix% +:while +if NOT "%1"=="" ( + REM Verbose mode + if "%1"=="-v" ( + set verbose=yes + GOTO continue + ) + REM Silent mode of 'make' requires additional support for associating + REM of test output with the test name. Verbose mode is the simplest way + if "%1"=="-q" ( + set verbose=yes + GOTO continue + ) + REM Run in stress mode + if "%1"=="-s" ( + echo Doing stress testing. Press Ctrl-C to terminate + set stress=yes + GOTO continue + ) + REM Repeat execution specified number of times + if "%1"=="-r" ( + set repeat=%2 + SHIFT + GOTO continue + ) + REM no LD_PRELOAD under Windows + REM but run the test to check "#pragma comment" construction + if "%1"=="-l" ( + REM The command line may specify -l with empty dll name, + REM e.g. "test_launcher.bat -l app.exe". If the dll name is + REM empty then %2 contains the application name and the SHIFT + REM operation is not necessary. + if exist "%3" SHIFT + GOTO continue + ) + REM no need to setup up stack size under Windows + if "%1"=="-u" GOTO continue + set cmd_line=%cmd_line% %1 +:continue + SHIFT + GOTO while +) +set cmd_line=%cmd_line:./=.\% +if DEFINED verbose echo Running %cmd_line% +if DEFINED stress set cmd_line=%cmd_line% ^& IF NOT ERRORLEVEL 1 GOTO stress +:stress +if DEFINED repeat ( + for /L %%i in (1,1,%repeat%) do echo %%i of %repeat%: & %cmd_line% +) else ( + %cmd_line% +) diff --git a/build/test_launcher.sh b/build/test_launcher.sh new file mode 100644 index 0000000000..02f7686194 --- /dev/null +++ b/build/test_launcher.sh @@ -0,0 +1,89 @@ +#!/bin/sh +# +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# Usage: +# test_launcher.sh [-v] [-q] [-s] [-r ] [-u] [-l ] +# where: -v enables verbose output +# where: -q enables quiet mode +# where: -s runs the test in stress mode (until non-zero exit code or ctrl-c pressed) +# where: -r specifies number of times to repeat execution +# where: -u limits stack size +# where: -l specifies the library name to be assigned to LD_PRELOAD + +while getopts "qvsr:ul:" flag # +do case $flag in # + s ) # Stress testing mode + run_prefix="stressed $run_prefix" ;; # + r ) # Repeats test n times + repeat=$OPTARG # + run_prefix="repeated $run_prefix" ;; # + l ) if [ `uname` = 'Linux' ] ; then # + LD_PRELOAD=$OPTARG # + elif [ `uname` = 'Darwin' ] ; then # + DYLD_INSERT_LIBRARIES=$OPTARG # + else # + echo 'skip' # + exit # + fi ;; # + u ) # Set stack limit + ulimit -s 10240 ;; # + q ) # Quiet mode, removes 'done' but prepends any other output by test name + OUTPUT='2>&1 | sed -e "s/done//;/^[[:space:]]*$/d;s!^!$1: !"' ;; # + v ) # Verbose mode + verbose=1 ;; # +esac done # +shift `expr $OPTIND - 1` # +if [ $MIC_OFFLOAD_NATIVE_PATH ] ; then # + LIB_NAME=${1/%.$TEST_EXT/_dll.$DLL} # + if [ -f "$MIC_OFFLOAD_NATIVE_PATH/$LIB_NAME" ]; then # + [ -z "$MIC_CARD" ] && MIC_CARD=mic0 # + TMPDIR_HOST=`mktemp -d /tmp/tbbtestXXXXXX` # + TMPDIR_MIC=`sudo ssh $MIC_CARD mktemp -d /tmp/tbbtestXXXXXX` # + sudo ssh $MIC_CARD "chmod +x $TMPDIR_MIC" # + # Test specific library may depend on libtbbmalloc* + cp "$MIC_OFFLOAD_NATIVE_PATH/$LIB_NAME" "$MIC_OFFLOAD_NATIVE_PATH"/libtbbmalloc* "$TMPDIR_HOST" >/dev/null 2>/dev/null # + sudo scp "$TMPDIR_HOST"/* $MIC_CARD:"$TMPDIR_MIC" >/dev/null 2>/dev/null # + + LD_LIBRARY_PATH=$TMPDIR_MIC:$LD_LIBRARY_PATH # + export LD_LIBRARY_PATH # + fi # +fi # +stressed() { echo Doing stress testing. Press Ctrl-C to terminate # + while :; do $*; done;# +} # +repeated() { # + i=0; while [ "$i" -lt $repeat ]; do i=`expr $i + 1`; echo $i of $repeat:; $*; done # +} # +# Run the command line passed via parameters +[ $verbose ] && echo Running $run_prefix $* # +if [ -n "$LD_PRELOAD" ] ; then # + export LD_PRELOAD # +elif [ -n "$DYLD_INSERT_LIBRARIES" ] ; then # + export DYLD_INSERT_LIBRARIES # +fi +exec 4>&1 # extracting exit code of the first command in pipeline needs duplicated stdout +# custom redirection needs eval, otherwise shell cannot parse it +err=`eval '( $run_prefix $* || echo \$? >&3; )' ${OUTPUT} 3>&1 >&4` # +[ -z "$err" ] || echo $1: exited with error $err # +if [ $MIC_OFFLOAD_NATIVE_PATH ] ; then # + sudo ssh $MIC_CARD rm -fr "$TMPDIR_MIC" >/dev/null 2>/dev/null # + rm -fr "$TMPDIR_HOST" >/dev/null 2>/dev/null # +fi # +exit $err # diff --git a/build/version_info_aix.sh b/build/version_info_aix.sh new file mode 100644 index 0000000000..5df78aff5a --- /dev/null +++ b/build/version_info_aix.sh @@ -0,0 +1,34 @@ +#!/bin/sh +# +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# Script used to generate version info string +echo "#define __TBB_VERSION_STRINGS(N) \\" +echo '#N": BUILD_HOST'"\t\t"`hostname -s`" ("`uname -m`")"'" ENDL \' +# find OS name in *-release and issue* files by filtering blank lines and lsb-release content out +echo '#N": BUILD_OS'"\t\t"`lsb_release -sd 2>/dev/null | grep -ih '[a-z] ' - /etc/*release /etc/issue 2>/dev/null | head -1 | sed -e 's/["\\\\]//g'`'" ENDL \' +echo '#N": BUILD_KERNEL'"\t"`uname -srv`'" ENDL \' +echo '#N": BUILD_GCC'"\t\t"`g++ --version &1 | grep 'g++'`'" ENDL \' +[ -z "$COMPILER_VERSION" ] || echo '#N": BUILD_COMPILER'"\t"$COMPILER_VERSION'" ENDL \' +echo '#N": BUILD_LIBC'"\t"`getconf GNU_LIBC_VERSION | grep glibc | sed -e 's/^glibc //'`'" ENDL \' +echo '#N": BUILD_LD'"\t\t"`ld -v 2>&1 | grep 'version'`'" ENDL \' +echo '#N": BUILD_TARGET'"\t$arch on $runtime"'" ENDL \' +echo '#N": BUILD_COMMAND'"\t"$*'" ENDL \' +echo "" +echo "#define __TBB_DATETIME \""`date -u`"\"" diff --git a/build/version_info_android.sh b/build/version_info_android.sh new file mode 100644 index 0000000000..55af4ea57c --- /dev/null +++ b/build/version_info_android.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# Script used to generate version info string +echo "#define __TBB_VERSION_STRINGS(N) \\" +echo '#N": BUILD_HOST'"\t\t"`hostname -s`" ("`uname -m`")"'" ENDL \' +# find OS name in *-release and issue* files by filtering blank lines and lsb-release content out +echo '#N": BUILD_OS'"\t\t"`lsb_release -sd 2>/dev/null | grep -ih '[a-z] ' - /etc/*release /etc/issue 2>/dev/null | head -1 | sed -e 's/["\\\\]//g'`'" ENDL \' +echo '#N": BUILD_GCC'"\t\t"`${tbb_tool_prefix}g++ --version | grep 'g++'`'" ENDL \' +[ -z "$COMPILER_VERSION" ] || echo '#N": BUILD_COMPILER'"\t"$COMPILER_VERSION'" ENDL \' +[ -z "$ndk_version" ] || echo '#N": BUILD_NDK'"\t\t$ndk_version"'" ENDL \' +echo '#N": BUILD_LD'"\t\t"`${tbb_tool_prefix}ld -v 2>&1 | grep 'ld'`'" ENDL \' +echo '#N": BUILD_TARGET'"\t$arch on $runtime"'" ENDL \' +echo '#N": BUILD_COMMAND'"\t"$*'" ENDL \' +echo "" +echo "#define __TBB_DATETIME \""`date -u`"\"" diff --git a/build/version_info_linux.sh b/build/version_info_linux.sh new file mode 100644 index 0000000000..5df78aff5a --- /dev/null +++ b/build/version_info_linux.sh @@ -0,0 +1,34 @@ +#!/bin/sh +# +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# Script used to generate version info string +echo "#define __TBB_VERSION_STRINGS(N) \\" +echo '#N": BUILD_HOST'"\t\t"`hostname -s`" ("`uname -m`")"'" ENDL \' +# find OS name in *-release and issue* files by filtering blank lines and lsb-release content out +echo '#N": BUILD_OS'"\t\t"`lsb_release -sd 2>/dev/null | grep -ih '[a-z] ' - /etc/*release /etc/issue 2>/dev/null | head -1 | sed -e 's/["\\\\]//g'`'" ENDL \' +echo '#N": BUILD_KERNEL'"\t"`uname -srv`'" ENDL \' +echo '#N": BUILD_GCC'"\t\t"`g++ --version &1 | grep 'g++'`'" ENDL \' +[ -z "$COMPILER_VERSION" ] || echo '#N": BUILD_COMPILER'"\t"$COMPILER_VERSION'" ENDL \' +echo '#N": BUILD_LIBC'"\t"`getconf GNU_LIBC_VERSION | grep glibc | sed -e 's/^glibc //'`'" ENDL \' +echo '#N": BUILD_LD'"\t\t"`ld -v 2>&1 | grep 'version'`'" ENDL \' +echo '#N": BUILD_TARGET'"\t$arch on $runtime"'" ENDL \' +echo '#N": BUILD_COMMAND'"\t"$*'" ENDL \' +echo "" +echo "#define __TBB_DATETIME \""`date -u`"\"" diff --git a/build/version_info_macos.sh b/build/version_info_macos.sh new file mode 100644 index 0000000000..2db20af0cf --- /dev/null +++ b/build/version_info_macos.sh @@ -0,0 +1,32 @@ +#!/bin/sh +# +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# Script used to generate version info string +echo "#define __TBB_VERSION_STRINGS(N) \\" +echo '#N": BUILD_HOST'"\t\t"`hostname -s`" ("`arch`")"'" ENDL \' +echo '#N": BUILD_OS'"\t\t"`sw_vers -productName`" version "`sw_vers -productVersion`'" ENDL \' +echo '#N": BUILD_KERNEL'"\t"`uname -v`'" ENDL \' +echo '#N": BUILD_CLANG'"\t"`clang --version &1 | grep 'version '`'" ENDL \' +echo '#N": BUILD_XCODE'"\t"`xcodebuild -version &1 | grep 'Xcode'`'" ENDL \' +[ -z "$COMPILER_VERSION" ] || echo '#N": BUILD_COMPILER'"\t"$COMPILER_VERSION'" ENDL \' +echo '#N": BUILD_TARGET'"\t$arch on $runtime"'" ENDL \' +echo '#N": BUILD_COMMAND'"\t"$*'" ENDL \' +echo "" +echo "#define __TBB_DATETIME \""`date -u`"\"" diff --git a/build/version_info_sunos.sh b/build/version_info_sunos.sh new file mode 100644 index 0000000000..3ac838c46c --- /dev/null +++ b/build/version_info_sunos.sh @@ -0,0 +1,31 @@ +#!/bin/sh +# +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# Script used to generate version info string +echo "#define __TBB_VERSION_STRINGS(N) \\" +echo '#N": BUILD_HOST'"\t"`hostname`" ("`arch`")"'" ENDL \' +echo '#N": BUILD_OS'"\t\t"`uname`'" ENDL \' +echo '#N": BUILD_KERNEL'"\t"`uname -srv`'" ENDL \' +echo '#N": BUILD_SUNCC'"\t"`CC -V &1 | grep 'C++'`'" ENDL \' +[ -z "$COMPILER_VERSION" ] || echo '#N": BUILD_COMPILER'"\t"$COMPILER_VERSION'" ENDL \' +echo '#N": BUILD_TARGET'"\t$arch on $runtime"'" ENDL \' +echo '#N": BUILD_COMMAND'"\t"$*'" ENDL \' +echo "" +echo "#define __TBB_DATETIME \""`date -u`"\"" diff --git a/build/version_info_windows.js b/build/version_info_windows.js new file mode 100644 index 0000000000..b0df0985c0 --- /dev/null +++ b/build/version_info_windows.js @@ -0,0 +1,128 @@ +// Copyright 2005-2015 Intel Corporation. All Rights Reserved. +// +// This file is part of Threading Building Blocks. Threading Building Blocks is free software; +// you can redistribute it and/or modify it under the terms of the GNU General Public License +// version 2 as published by the Free Software Foundation. Threading Building Blocks is +// distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU General Public License for more details. You should have received a copy of +// the GNU General Public License along with Threading Building Blocks; if not, write to the +// Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// +// As a special exception, you may use this file as part of a free software library without +// restriction. Specifically, if other files instantiate templates or use macros or inline +// functions from this file, or you compile this file and link it with other files to produce +// an executable, this file does not by itself cause the resulting executable to be covered +// by the GNU General Public License. This exception does not however invalidate any other +// reasons why the executable file might be covered by the GNU General Public License. + +var WshShell = WScript.CreateObject("WScript.Shell"); + +var tmpExec; + +WScript.Echo("#define __TBB_VERSION_STRINGS(N) \\"); + +//Getting BUILD_HOST +WScript.echo( "#N \": BUILD_HOST\\t\\t" + + WshShell.ExpandEnvironmentStrings("%COMPUTERNAME%") + + "\" ENDL \\" ); + +//Getting BUILD_OS +tmpExec = WshShell.Exec("cmd /c ver"); +while ( tmpExec.Status == 0 ) { + WScript.Sleep(100); +} +tmpExec.StdOut.ReadLine(); + +WScript.echo( "#N \": BUILD_OS\\t\\t" + + tmpExec.StdOut.ReadLine() + + "\" ENDL \\" ); + +if ( WScript.Arguments(0).toLowerCase().match("gcc") ) { + tmpExec = WshShell.Exec(WScript.Arguments(0) + " --version"); + WScript.echo( "#N \": BUILD_COMPILER\\t" + + tmpExec.StdOut.ReadLine() + + "\" ENDL \\" ); + +} else { // MS / Intel compilers + //Getting BUILD_CL + tmpExec = WshShell.Exec("cmd /c echo #define 0 0>empty.cpp"); + tmpExec = WshShell.Exec("cl -c empty.cpp "); + while ( tmpExec.Status == 0 ) { + WScript.Sleep(100); + } + var clVersion = tmpExec.StdErr.ReadLine(); + WScript.echo( "#N \": BUILD_CL\\t\\t" + + clVersion + + "\" ENDL \\" ); + + //Getting BUILD_COMPILER + if ( WScript.Arguments(0).toLowerCase().match("icl") ) { + tmpExec = WshShell.Exec("icl -c empty.cpp "); + while ( tmpExec.Status == 0 ) { + WScript.Sleep(100); + } + WScript.echo( "#N \": BUILD_COMPILER\\t" + + tmpExec.StdErr.ReadLine() + + "\" ENDL \\" ); + } else { + WScript.echo( "#N \": BUILD_COMPILER\\t\\t" + + clVersion + + "\" ENDL \\" ); + } + tmpExec = WshShell.Exec("cmd /c del /F /Q empty.obj empty.cpp"); +} + +//Getting BUILD_TARGET +WScript.echo( "#N \": BUILD_TARGET\\t" + + WScript.Arguments(1) + + "\" ENDL \\" ); + +//Getting BUILD_COMMAND +WScript.echo( "#N \": BUILD_COMMAND\\t" + WScript.Arguments(2) + "\" ENDL" ); + +//Getting __TBB_DATETIME and __TBB_VERSION_YMD +var date = new Date(); +WScript.echo( "#define __TBB_DATETIME \"" + date.toUTCString() + "\"" ); +WScript.echo( "#define __TBB_VERSION_YMD " + date.getUTCFullYear() + ", " + + (date.getUTCMonth() > 8 ? (date.getUTCMonth()+1):("0"+(date.getUTCMonth()+1))) + + (date.getUTCDate() > 9 ? date.getUTCDate():("0"+date.getUTCDate())) ); + + +/* + +Original strings + +#define __TBB_VERSION_STRINGS \ +"TBB: BUILD_HOST\t\tvpolin-mobl1 (ia32)" ENDL \ +"TBB: BUILD_OS\t\tMicrosoft Windows XP [Version 5.1.2600]" ENDL \ +"TBB: BUILD_CL\t\tMicrosoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86" ENDL \ +"TBB: BUILD_COMPILER\tIntel(R) C++ Compiler for 32-bit applications, Version 9.1 Build 20070109Z Package ID: W_CC_C_9.1.034 " ENDL \ +"TBB: BUILD_TARGET\t" ENDL \ +"TBB: BUILD_COMMAND\t" ENDL \ + +#define __TBB_DATETIME "Mon Jun 4 10:16:07 UTC 2007" +#define __TBB_VERSION_YMD 2007, 0604 + + + +# The script must be run from two directory levels below this level. +x='"TBB: ' +y='" ENDL \' +echo "#define __TBB_VERSION_STRINGS \\" +echo $x "BUILD_HOST\t\t"`hostname`" ("`../../arch.exe`")"$y +echo $x "BUILD_OS\t\t"`../../win_version.bat|grep -i 'Version'`$y +echo >empty.cpp +echo $x "BUILD_CL\t\t"`cl -c empty.cpp 2>&1 | grep -i Version`$y +echo $x "BUILD_COMPILER\t"`icl -c empty.cpp 2>&1 | grep -i Version`$y +echo $x "BUILD_TARGET\t"$TBB_ARCH$y +echo $x "BUILD_COMMAND\t"$*$y +echo "" +# A workaround for MKS 8.6 where `date -u` crashes. +date -u > date.tmp +echo "#define __TBB_DATETIME \""`cat date.tmp`"\"" +echo "#define __TBB_VERSION_YMD "`date '+%Y, %m%d'` +rm empty.cpp +rm empty.obj +rm date.tmp +*/ diff --git a/build/vs2010/index.html b/build/vs2010/index.html new file mode 100644 index 0000000000..8f506a130e --- /dev/null +++ b/build/vs2010/index.html @@ -0,0 +1,30 @@ + + + +

Overview

+This directory contains the Visual Studio* 2010 solution to build Intel® Threading Building Blocks. + + +

Files

+
+
makefile.sln +
Solution file.
+
tbb.vcxproj +
Library project file.
+
tbbmalloc.vcxproj +
Scalable allocator library project file. Allocator sources are expected to be located in ../../src/tbbmalloc folder.
+
tbbmalloc_proxy.vcxproj +
Standard allocator replacement project file.
+
+ +
+Up to parent directory +

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel is a registered trademark or trademark of Intel Corporation +or its subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. + + diff --git a/build/vs2010/makefile.sln b/build/vs2010/makefile.sln new file mode 100644 index 0000000000..1174098cc5 --- /dev/null +++ b/build/vs2010/makefile.sln @@ -0,0 +1,78 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{8898CE0B-0BFB-45AE-AA71-83735ED2510D}" + ProjectSection(SolutionItems) = preProject + index.html = index.html + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tbb", "tbb.vcxproj", "{F62787DD-1327-448B-9818-030062BCFAA5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tbbmalloc", "tbbmalloc.vcxproj", "{B15F131E-328A-4D42-ADC2-9FF4CA6306D8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tbbmalloc_proxy", "tbbmalloc_proxy.vcxproj", "{02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Debug-MT|Win32 = Debug-MT|Win32 + Debug-MT|x64 = Debug-MT|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + Release-MT|Win32 = Release-MT|Win32 + Release-MT|x64 = Release-MT|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F62787DD-1327-448B-9818-030062BCFAA5}.Debug|Win32.ActiveCfg = Debug|Win32 + {F62787DD-1327-448B-9818-030062BCFAA5}.Debug|Win32.Build.0 = Debug|Win32 + {F62787DD-1327-448B-9818-030062BCFAA5}.Debug|x64.ActiveCfg = Debug|x64 + {F62787DD-1327-448B-9818-030062BCFAA5}.Debug|x64.Build.0 = Debug|x64 + {F62787DD-1327-448B-9818-030062BCFAA5}.Debug-MT|Win32.ActiveCfg = Debug-MT|Win32 + {F62787DD-1327-448B-9818-030062BCFAA5}.Debug-MT|Win32.Build.0 = Debug-MT|Win32 + {F62787DD-1327-448B-9818-030062BCFAA5}.Debug-MT|x64.ActiveCfg = Debug-MT|x64 + {F62787DD-1327-448B-9818-030062BCFAA5}.Debug-MT|x64.Build.0 = Debug-MT|x64 + {F62787DD-1327-448B-9818-030062BCFAA5}.Release|Win32.ActiveCfg = Release|Win32 + {F62787DD-1327-448B-9818-030062BCFAA5}.Release|Win32.Build.0 = Release|Win32 + {F62787DD-1327-448B-9818-030062BCFAA5}.Release|x64.ActiveCfg = Release|x64 + {F62787DD-1327-448B-9818-030062BCFAA5}.Release|x64.Build.0 = Release|x64 + {F62787DD-1327-448B-9818-030062BCFAA5}.Release-MT|Win32.ActiveCfg = Release-MT|Win32 + {F62787DD-1327-448B-9818-030062BCFAA5}.Release-MT|Win32.Build.0 = Release-MT|Win32 + {F62787DD-1327-448B-9818-030062BCFAA5}.Release-MT|x64.ActiveCfg = Release-MT|x64 + {F62787DD-1327-448B-9818-030062BCFAA5}.Release-MT|x64.Build.0 = Release-MT|x64 + {B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Debug|Win32.ActiveCfg = Debug|Win32 + {B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Debug|Win32.Build.0 = Debug|Win32 + {B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Debug|x64.ActiveCfg = Debug|x64 + {B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Debug|x64.Build.0 = Debug|x64 + {B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Debug-MT|Win32.ActiveCfg = Debug-MT|Win32 + {B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Debug-MT|Win32.Build.0 = Debug-MT|Win32 + {B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Debug-MT|x64.ActiveCfg = Debug-MT|x64 + {B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Debug-MT|x64.Build.0 = Debug-MT|x64 + {B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Release|Win32.ActiveCfg = Release|Win32 + {B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Release|Win32.Build.0 = Release|Win32 + {B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Release|x64.ActiveCfg = Release|x64 + {B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Release|x64.Build.0 = Release|x64 + {B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Release-MT|Win32.ActiveCfg = Release-MT|Win32 + {B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Release-MT|Win32.Build.0 = Release-MT|Win32 + {B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Release-MT|x64.ActiveCfg = Release-MT|x64 + {B15F131E-328A-4D42-ADC2-9FF4CA6306D8}.Release-MT|x64.Build.0 = Release-MT|x64 + {02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Debug|Win32.ActiveCfg = Debug|Win32 + {02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Debug|Win32.Build.0 = Debug|Win32 + {02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Debug|x64.ActiveCfg = Debug|x64 + {02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Debug|x64.Build.0 = Debug|x64 + {02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Debug-MT|Win32.ActiveCfg = Debug-MT|Win32 + {02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Debug-MT|Win32.Build.0 = Debug-MT|Win32 + {02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Debug-MT|x64.ActiveCfg = Debug-MT|x64 + {02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Debug-MT|x64.Build.0 = Debug-MT|x64 + {02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Release|Win32.ActiveCfg = Release|Win32 + {02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Release|Win32.Build.0 = Release|Win32 + {02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Release|x64.ActiveCfg = Release|x64 + {02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Release|x64.Build.0 = Release|x64 + {02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Release-MT|Win32.ActiveCfg = Release-MT|Win32 + {02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Release-MT|Win32.Build.0 = Release-MT|Win32 + {02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Release-MT|x64.ActiveCfg = Release-MT|x64 + {02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7}.Release-MT|x64.Build.0 = Release-MT|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/build/vs2010/tbb.vcxproj b/build/vs2010/tbb.vcxproj new file mode 100644 index 0000000000..4ba5a59115 --- /dev/null +++ b/build/vs2010/tbb.vcxproj @@ -0,0 +1,712 @@ + + + + + Debug-MT + Win32 + + + Debug-MT + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release-MT + Win32 + + + Release-MT + x64 + + + Release + Win32 + + + Release + x64 + + + + {F62787DD-1327-448B-9818-030062BCFAA5} + tbb + Win32Proj + + + + DynamicLibrary + NotSet + true + + + DynamicLibrary + NotSet + + + DynamicLibrary + NotSet + true + + + DynamicLibrary + NotSet + + + DynamicLibrary + NotSet + true + + + DynamicLibrary + NotSet + + + DynamicLibrary + NotSet + true + + + DynamicLibrary + NotSet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)ia32\$(Configuration)\ + $(SolutionDir)ia32\$(Configuration)\ + false + $(SolutionDir)intel64\$(Configuration)\ + $(SolutionDir)intel64\$(Configuration)\ + false + $(SolutionDir)ia32\$(Configuration)\ + $(SolutionDir)ia32\$(Configuration)\ + false + $(SolutionDir)intel64\$(Configuration)\ + $(SolutionDir)intel64\$(Configuration)\ + false + $(SolutionDir)ia32\$(Configuration)\ + $(SolutionDir)ia32\$(Configuration)\ + false + $(SolutionDir)intel64\$(Configuration)\ + $(SolutionDir)intel64\$(Configuration)\ + false + $(SolutionDir)ia32\$(Configuration)\ + $(SolutionDir)ia32\$(Configuration)\ + false + $(SolutionDir)intel64\$(Configuration)\ + $(SolutionDir)intel64\$(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + $(ProjectName)_debug + $(ProjectName)_debug + $(ProjectName)_debug + $(ProjectName)_debug + + + + /c /MDd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBB_BUILD=1 /W4 /I../../src /I../../src/rml/include /I../../include + Disabled + .;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level4 + ProgramDatabase + + + /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)tbb.def" %(AdditionalOptions) + $(OutDir)tbb_debug.dll + true + Windows + false + + + MachineX86 + + + + + X64 + + + /c /MDd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBB_BUILD=1 /W4 /I../../src /I../../src/rml/include /I../../include + Disabled + .;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + false + + + Level4 + ProgramDatabase + false + + + /nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)tbb.def" %(AdditionalOptions) + $(OutDir)tbb_debug.dll + true + Windows + false + + + MachineX64 + false + + + + + /c /MD /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBB_BUILD=1 /W4 /I../../src /I../../src/rml/include /I../../include + .;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + + + Level4 + ProgramDatabase + + + /nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)tbb.def" %(AdditionalOptions) + $(OutDir)tbb.dll + true + Windows + true + true + false + + + MachineX86 + + + + + X64 + + + /c /MD /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBB_BUILD=1 /W4 /I../../src /I../../src/rml/include /I../../include + .;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + false + + + Level4 + ProgramDatabase + + + /nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)tbb.def" %(AdditionalOptions) + $(OutDir)tbb.dll + true + Windows + true + true + false + + + MachineX64 + false + + + + + /c /MTd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBB_BUILD=1 /W4 /I../../src /I../../src/rml/include /I../../include + Disabled + .;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + + + Level4 + ProgramDatabase + + + /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)tbb.def" %(AdditionalOptions) + $(OutDir)tbb_debug.dll + true + Windows + false + + + MachineX86 + + + + + X64 + + + /c /MTd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBB_BUILD=1 /W4 /I../../src /I../../src/rml/include /I../../include + Disabled + .;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + false + + + Level4 + ProgramDatabase + false + + + /nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)tbb.def" %(AdditionalOptions) + $(OutDir)tbb_debug.dll + true + Windows + false + + + MachineX64 + false + + + + + /c /MT /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBB_BUILD=1 /W4 /I../../src /I../../src/rml/include /I../../include + .;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreaded + + + Level4 + ProgramDatabase + + + /nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)tbb.def" %(AdditionalOptions) + $(OutDir)tbb.dll + true + Windows + true + true + false + + + MachineX86 + + + + + X64 + + + /c /MT /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBB_BUILD=1 /W4 /I../../src /I../../src/rml/include /I../../include + .;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreaded + false + + + Level4 + ProgramDatabase + + + /nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)tbb.def" %(AdditionalOptions) + $(OutDir)tbb.dll + true + Windows + true + true + false + + + MachineX64 + false + + + + + /coff /Zi + true + true + /coff /Zi + true + true + /coff + true + true + /coff + true + true + + + true + building atomic_support.obj + ml64 /Fo"intel64\Debug-MT\atomic_support.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm + + intel64\Debug-MT\atomic_support.obj;%(Outputs) + true + building atomic_support.obj + ml64 /Fo"intel64\Debug\atomic_support.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm + + intel64\Debug\atomic_support.obj;%(Outputs) + true + building atomic_support.obj + ml64 /Fo"intel64\Release-MT\atomic_support.obj" /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm + + intel64\Release-MT\atomic_support.obj;%(Outputs) + true + building atomic_support.obj + ml64 /Fo"intel64\Release\atomic_support.obj" /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm + + intel64\Release\atomic_support.obj;%(Outputs) + + + true + building intel64_misc.obj + ml64 /Fo"intel64\Debug-MT\intel64_misc.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/intel64_misc.asm + + intel64\Debug-MT\intel64_misc.obj;%(Outputs) + true + building intel64_misc.obj + ml64 /Fo"intel64\Debug\intel64_misc.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/intel64_misc.asm + + intel64\Debug\intel64_misc.obj;%(Outputs) + true + building intel64_misc.obj + ml64 /Fo"intel64\Release-MT\intel64_misc.obj" /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/intel64_misc.asm + + intel64\Release-MT\intel64_misc.obj;%(Outputs) + true + building intel64_misc.obj + ml64 /Fo"intel64\Release\intel64_misc.obj" /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/intel64_misc.asm + + intel64\Release\intel64_misc.obj;%(Outputs) + + + /coff /Zi + true + true + /coff /Zi + true + true + /coff + true + true + /coff + true + true + + + true + building itsx.obj + ml64 /Fo"intel64\Debug-MT\itsx.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/itsx.asm + + intel64\Debug-MT\itsx.obj;%(Outputs) + true + building itsx.obj + ml64 /Fo"intel64\Debug\itsx.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/itsx.asm + + intel64\Debug\itsx.obj;%(Outputs) + true + building itsx.obj + ml64 /Fo"intel64\Release-MT\itsx.obj" /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/itsx.asm + + intel64\Release-MT\itsx.obj;%(Outputs) + true + building itsx.obj + ml64 /Fo"intel64\Release\itsx.obj" /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/itsx.asm + + intel64\Release\itsx.obj;%(Outputs) + + + /coff /Zi + true + true + /coff /Zi + /coff /Zi + true + true + /coff /Zi + /coff + true + true + /coff + true + true + + + + + generating tbb.def file + cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)tbb.def" + + $(IntDir)tbb.def;%(Outputs) + true + generating tbb.def file + cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)tbb.def" + + $(IntDir)tbb.def;%(Outputs) + generating tbb.def file + cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)tbb.def" + + $(IntDir)tbb.def;%(Outputs) + true + generating tbb.def file + cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)tbb.def" + + $(IntDir)tbb.def;%(Outputs) + generating tbb.def file + cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)tbb.def" + + $(IntDir)tbb.def;%(Outputs) + true + generating tbb.def file + cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)tbb.def" + + $(IntDir)tbb.def;%(Outputs) + generating tbb.def file + cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)tbb.def" + + $(IntDir)tbb.def;%(Outputs) + true + generating tbb.def file + cl /nologo /TC /EP ../../src/tbb/win32-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)tbb.def" + + $(IntDir)tbb.def;%(Outputs) + + + true + generating tbb.def file + cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)tbb.def" + + $(IntDir)tbb.def;%(Outputs) + generating tbb.def file + cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)tbb.def" + + $(IntDir)tbb.def;%(Outputs) + true + generating tbb.def file + cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)tbb.def" + + $(IntDir)tbb.def;%(Outputs) + generating tbb.def file + cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)tbb.def" + + $(IntDir)tbb.def;%(Outputs) + true + generating tbb.def file + cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)tbb.def" + + $(IntDir)tbb.def;%(Outputs) + generating tbb.def file + cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)tbb.def" + + $(IntDir)tbb.def;%(Outputs) + true + generating tbb.def file + cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 >"$(IntDir)tbb.def" + + $(IntDir)tbb.def;%(Outputs) + generating tbb.def file + cl /nologo /TC /EP ../../src/tbb/win64-tbb-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBB_BUILD=1 /I../../src /I../../include >"$(IntDir)tbb.def" + + $(IntDir)tbb.def;%(Outputs) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions) + /I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions) + /I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions) + /I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions) + /I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions) + /I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions) + /I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions) + /I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions) + + + + + + + diff --git a/build/vs2010/tbbmalloc.vcxproj b/build/vs2010/tbbmalloc.vcxproj new file mode 100644 index 0000000000..ad9a793d38 --- /dev/null +++ b/build/vs2010/tbbmalloc.vcxproj @@ -0,0 +1,584 @@ + + + + + Debug-MT + Win32 + + + Debug-MT + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release-MT + Win32 + + + Release-MT + x64 + + + Release + Win32 + + + Release + x64 + + + + {B15F131E-328A-4D42-ADC2-9FF4CA6306D8} + tbbmalloc + Win32Proj + + + + DynamicLibrary + NotSet + true + + + DynamicLibrary + NotSet + + + DynamicLibrary + NotSet + true + + + DynamicLibrary + NotSet + + + DynamicLibrary + NotSet + true + + + DynamicLibrary + NotSet + + + DynamicLibrary + NotSet + true + + + DynamicLibrary + NotSet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)ia32\$(Configuration)\ + $(SolutionDir)ia32\$(Configuration)\ + false + $(SolutionDir)intel64\$(Configuration)\ + $(SolutionDir)intel64\$(Configuration)\ + false + $(SolutionDir)ia32\$(Configuration)\ + $(SolutionDir)ia32\$(Configuration)\ + false + $(SolutionDir)intel64\$(Configuration)\ + $(SolutionDir)intel64\$(Configuration)\ + false + $(SolutionDir)ia32\$(Configuration)\ + $(SolutionDir)ia32\$(Configuration)\ + false + $(SolutionDir)intel64\$(Configuration)\ + $(SolutionDir)intel64\$(Configuration)\ + false + $(SolutionDir)ia32\$(Configuration)\ + $(SolutionDir)ia32\$(Configuration)\ + false + $(SolutionDir)intel64\$(Configuration)\ + $(SolutionDir)intel64\$(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + $(ProjectName)_debug + $(ProjectName)_debug + $(ProjectName)_debug + $(ProjectName)_debug + + + + /c /MDd /Od /Ob0 /Zi /EHs- /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I. + Disabled + .;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + + + Default + MultiThreadedDebugDLL + + + Level4 + ProgramDatabase + + + /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)tbbmalloc.def" %(AdditionalOptions) + $(OutDir)tbbmalloc_debug.dll + true + Windows + false + + + MachineX86 + + + + + X64 + + + /c /MDd /Od /Ob0 /Zi /EHs- /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I. + Disabled + .;%(AdditionalIncludeDirectories) + false + + + Default + MultiThreadedDebugDLL + false + true + + + Level4 + ProgramDatabase + false + + + /nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)tbbmalloc.def" %(AdditionalOptions) + $(OutDir)tbbmalloc_debug.dll + true + Windows + false + + + MachineX64 + + + + + /c /MD /O2 /Zi /EHs- /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I. + .;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + MultiThreadedDLL + + + Level4 + ProgramDatabase + + + /nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)tbbmalloc.def" %(AdditionalOptions) + $(OutDir)tbbmalloc.dll + true + Windows + true + true + false + + + MachineX86 + + + + + X64 + + + /c /MD /O2 /Zi /EHs- /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I. + .;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + MultiThreadedDLL + false + + + Level4 + ProgramDatabase + + + /nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)tbbmalloc.def" %(AdditionalOptions) + $(OutDir)tbbmalloc.dll + true + Windows + true + true + false + + + MachineX64 + + + + + /c /MTd /Od /Ob0 /Zi /EHs- /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I. + Disabled + .;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + + + Default + MultiThreadedDebug + + + Level4 + ProgramDatabase + + + /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)tbbmalloc.def" %(AdditionalOptions) + $(OutDir)tbbmalloc_debug.dll + true + Windows + false + + + MachineX86 + + + + + X64 + + + /c /MTd /Od /Ob0 /Zi /EHs- /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I. + Disabled + .;%(AdditionalIncludeDirectories) + false + + + Default + MultiThreadedDebug + false + true + + + Level4 + ProgramDatabase + false + + + /nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)tbbmalloc.def" %(AdditionalOptions) + $(OutDir)tbbmalloc_debug.dll + true + Windows + false + + + MachineX64 + + + + + /c /MT /O2 /Zi /EHs- /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I. + .;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + MultiThreaded + + + Level4 + ProgramDatabase + + + /nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)tbbmalloc.def" %(AdditionalOptions) + $(OutDir)tbbmalloc.dll + true + Windows + true + true + false + + + MachineX86 + + + + + X64 + + + /c /MT /O2 /Zi /EHs- /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc /I. + .;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + MultiThreaded + false + + + Level4 + ProgramDatabase + + + /nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DEF:"$(IntDir)tbbmalloc.def" %(AdditionalOptions) + $(OutDir)tbbmalloc.dll + true + Windows + true + true + false + + + MachineX64 + + + + + true + building atomic_support.obj + ml64 /Fo"intel64\Debug-MT\atomic_support.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm + + intel64\Debug-MT\atomic_support.obj;%(Outputs) + true + building atomic_support.obj + ml64 /Fo"intel64\Debug\atomic_support.obj" /DUSE_FRAME_POINTER /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm + + intel64\Debug\atomic_support.obj;%(Outputs) + true + building atomic_support.obj + ml64 /Fo"intel64\Release-MT\atomic_support.obj" /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm + + intel64\Release-MT\atomic_support.obj;%(Outputs) + true + building atomic_support.obj + ml64 /Fo"intel64\Release\atomic_support.obj" /DEM64T=1 /c /Zi ../../src/tbb/intel64-masm/atomic_support.asm + + intel64\Release\atomic_support.obj;%(Outputs) + + + + + generating tbbmalloc.def file + cl /nologo /TC /EP ../../src/tbbmalloc/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def" + + $(IntDir)tbbmalloc.def;%(Outputs) + true + generating tbbmalloc.def file + cl /nologo /TC /EP ../../src/tbbmalloc/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def" + + $(IntDir)tbbmalloc.def;%(Outputs) + generating tbbmalloc.def file + cl /nologo /TC /EP ../../src/tbbmalloc/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def" + + $(IntDir)tbbmalloc.def;%(Outputs) + true + generating tbbmalloc.def file + cl /nologo /TC /EP ../../src/tbbmalloc/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def" + + $(IntDir)tbbmalloc.def;%(Outputs) + generating tbbmalloc.def file + cl /nologo /TC /EP ../../src/tbbmalloc/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def" + + $(IntDir)tbbmalloc.def;%(Outputs) + true + generating tbbmalloc.def file + cl /nologo /TC /EP ../../src/tbb/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def" + + $(IntDir)tbbmalloc.def;%(Outputs) + generating tbbmalloc.def file + cl /nologo /TC /EP ../../src/tbbmalloc/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def" + + $(IntDir)tbbmalloc.def;%(Outputs) + true + generating tbbmalloc.def file + cl /nologo /TC /EP ../../src/tbb/win32-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def" + + $(IntDir)tbbmalloc.def;%(Outputs) + + + true + generating tbbmalloc.def file + cl /nologo /TC /EP ../../src/tbb/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def" + + $(IntDir)tbbmalloc.def;%(Outputs) + generating tbbmalloc.def file + cl /nologo /TC /EP ../../src/tbbmalloc/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def" + + $(IntDir)tbbmalloc.def;%(Outputs) + true + generating tbbmalloc.def file + cl /nologo /TC /EP ../../src/tbb/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def" + + $(IntDir)tbbmalloc.def;%(Outputs) + generating tbbmalloc.def file + cl /nologo /TC /EP ../../src/tbbmalloc/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def" + + $(IntDir)tbbmalloc.def;%(Outputs) + true + generating tbbmalloc.def file + cl /nologo /TC /EP ../../src/tbb/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def" + + $(IntDir)tbbmalloc.def;%(Outputs) + generating tbbmalloc.def file + cl /nologo /TC /EP ../../src/tbbmalloc/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def" + + $(IntDir)tbbmalloc.def;%(Outputs) + true + generating tbbmalloc.def file + cl /nologo /TC /EP ../../src/tbb/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def" + + $(IntDir)tbbmalloc.def;%(Outputs) + generating tbbmalloc.def file + cl /nologo /TC /EP ../../src/tbbmalloc/win64-tbbmalloc-export.def /DTBB_USE_DEBUG /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 /D__TBBMALLOC_BUILD=1 >"$(IntDir)tbbmalloc.def" + + $(IntDir)tbbmalloc.def;%(Outputs) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions) + /I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions) + /I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions) + /I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions) + /I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions) + /I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions) + /I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions) + /I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions) + + + + + {f62787dd-1327-448b-9818-030062bcfaa5} + false + + + + + + + diff --git a/build/vs2010/tbbmalloc_proxy.vcxproj b/build/vs2010/tbbmalloc_proxy.vcxproj new file mode 100644 index 0000000000..6462df2cf5 --- /dev/null +++ b/build/vs2010/tbbmalloc_proxy.vcxproj @@ -0,0 +1,421 @@ + + + + + Debug-MT + Win32 + + + Debug-MT + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release-MT + Win32 + + + Release-MT + x64 + + + Release + Win32 + + + Release + x64 + + + + {02F61511-D5B6-46E6-B4BB-DEAA96E6BCC7} + tbbmalloc_proxy + Win32Proj + + + + DynamicLibrary + NotSet + true + + + DynamicLibrary + NotSet + + + DynamicLibrary + NotSet + true + + + DynamicLibrary + NotSet + + + DynamicLibrary + NotSet + true + + + DynamicLibrary + NotSet + + + DynamicLibrary + NotSet + true + + + DynamicLibrary + NotSet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)ia32\$(Configuration)\ + $(SolutionDir)ia32\$(Configuration)\ + false + $(SolutionDir)intel64\$(Configuration)\ + $(SolutionDir)intel64\$(Configuration)\ + false + $(SolutionDir)ia32\$(Configuration)\ + $(SolutionDir)ia32\$(Configuration)\ + false + $(SolutionDir)intel64\$(Configuration)\ + $(SolutionDir)intel64\$(Configuration)\ + false + $(SolutionDir)ia32\$(Configuration)\ + $(SolutionDir)ia32\$(Configuration)\ + false + $(SolutionDir)intel64\$(Configuration)\ + $(SolutionDir)intel64\$(Configuration)\ + false + $(SolutionDir)ia32\$(Configuration)\ + $(SolutionDir)ia32\$(Configuration)\ + false + $(SolutionDir)intel64\$(Configuration)\ + $(SolutionDir)intel64\$(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + $(ProjectName)_debug + $(ProjectName)_debug + $(ProjectName)_debug + $(ProjectName)_debug + + + + /c /MDd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /W4 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc + Disabled + .;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + Sync + Default + MultiThreadedDebugDLL + + + Level4 + ProgramDatabase + + + /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO %(AdditionalOptions) + $(OutDir)tbbmalloc_proxy_debug.dll + true + Windows + false + + + MachineX86 + + + + + X64 + + + /c /MDd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /W4 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc + Disabled + .;%(AdditionalIncludeDirectories) + false + + + Default + MultiThreadedDebugDLL + false + true + + + Level4 + ProgramDatabase + false + + + /nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO %(AdditionalOptions) + $(OutDir)tbbmalloc_proxy_debug.dll + true + Windows + false + + + MachineX64 + + + + + /c /MD /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /W4 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc + .;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + MultiThreadedDLL + + + Level4 + ProgramDatabase + + + /nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO %(AdditionalOptions) + $(OutDir)tbbmalloc_proxy.dll + true + Windows + true + true + false + + + MachineX86 + + + + + X64 + + + /c /MD /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /W4 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc + .;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + MultiThreadedDLL + false + + + Level4 + ProgramDatabase + + + /nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO %(AdditionalOptions) + $(OutDir)tbbmalloc_proxy.dll + true + Windows + true + true + false + + + MachineX64 + + + + + /c /MTd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /W4 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc + Disabled + .;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + true + Sync + Default + MultiThreadedDebug + + + Level4 + ProgramDatabase + + + /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO %(AdditionalOptions) + $(OutDir)tbbmalloc_proxy_debug.dll + true + Windows + false + + + MachineX86 + + + + + X64 + + + /c /MTd /Od /Ob0 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=tbb_debug.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /W4 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc + Disabled + .;%(AdditionalIncludeDirectories) + false + + + Default + MultiThreadedDebug + false + true + + + Level4 + ProgramDatabase + false + + + /nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO %(AdditionalOptions) + $(OutDir)tbbmalloc_proxy_debug.dll + true + Windows + false + + + MachineX64 + + + + + /c /MT /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /W4 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc + .;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + MultiThreaded + + + Level4 + ProgramDatabase + + + /nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO %(AdditionalOptions) + $(OutDir)tbbmalloc_proxy.dll + true + Windows + true + true + false + + + MachineX86 + + + + + X64 + + + /c /MT /O2 /Zi /EHsc /GR /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=tbb.lib /DDO_ITT_NOTIFY /GS /volatile:iso /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0502 /W4 /D__TBBMALLOC_BUILD=1 /I../../src /I../../src/rml/include /I../../include /I../../src/tbbmalloc /I../../src/tbbmalloc + .;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + + + MultiThreaded + false + + + Level4 + ProgramDatabase + + + /nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO %(AdditionalOptions) + $(OutDir)tbbmalloc_proxy.dll + true + Windows + true + true + false + + + MachineX64 + + + + + + + + + + + /I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions) + /I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions) + /I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions) + /I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions) + /I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions) + /I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions) + /I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions) + /I../../src /I../../include /DDO_ITT_NOTIFY /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0400 %(AdditionalOptions) + + + + + + + {b15f131e-328a-4d42-adc2-9ff4ca6306d8} + false + + + + + + + diff --git a/build/vs2010/version_string.ver b/build/vs2010/version_string.ver new file mode 100644 index 0000000000..5d8f04e5d6 --- /dev/null +++ b/build/vs2010/version_string.ver @@ -0,0 +1 @@ +#define __TBB_VERSION_STRINGS(N) "Empty" diff --git a/build/windows.cl.inc b/build/windows.cl.inc new file mode 100644 index 0000000000..aebc0b5ebd --- /dev/null +++ b/build/windows.cl.inc @@ -0,0 +1,147 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +#------------------------------------------------------------------------------ +# Define compiler-specific variables. +#------------------------------------------------------------------------------ + + +#------------------------------------------------------------------------------ +# Setting compiler flags. +#------------------------------------------------------------------------------ +CPLUS = cl /nologo +LINK_FLAGS = /link /nologo +LIB_LINK_FLAGS=/link /nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DYNAMICBASE /NXCOMPAT + +ifeq ($(arch), ia32) + LIB_LINK_FLAGS += /SAFESEH +endif + +ifeq ($(runtime), vc_mt) + MS_CRT_KEY = /MT$(if $(findstring debug,$(cfg)),d) +else + MS_CRT_KEY = /MD$(if $(findstring debug,$(cfg)),d) +endif +EH_FLAGS = /EHsc /GR + +ifeq ($(cfg), release) + CPLUS_FLAGS = $(MS_CRT_KEY) /O2 /Zi $(EH_FLAGS) /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=$(TBB.LIB) + ASM_FLAGS = +endif +ifeq ($(cfg), debug) + CPLUS_FLAGS = $(MS_CRT_KEY) /Od /Ob0 /Zi $(EH_FLAGS) /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=$(TBB.LIB) + ASM_FLAGS = /DUSE_FRAME_POINTER +endif + +ifeq ($(target_ui), win8ui) + CPLUS_FLAGS += /D "_UNICODE" /D "UNICODE" /D "WINAPI_FAMILY=WINAPI_FAMILY_APP" + _WIN32_WINNT=0x0602 +ifeq ($(target_ui_mode), production) + LIB_LINK_FLAGS += /APPCONTAINER +endif +else + CPLUS_FLAGS += /DDO_ITT_NOTIFY +endif + +CPLUS_FLAGS += /GS + +COMPILE_ONLY = /c +PREPROC_ONLY = /TP /EP +INCLUDE_KEY = /I +DEFINE_KEY = /D +OUTPUT_KEY = /Fe +OUTPUTOBJ_KEY = /Fo +WARNING_AS_ERROR_KEY = /WX + +ifeq ($(runtime),vc7.1) + WARNING_KEY = /W3 +else + WARNING_KEY = /W4 + OPENMP_FLAG = /openmp +endif + +DYLIB_KEY = /DLL +EXPORT_KEY = /DEF: +NODEFAULTLIB_KEY = /Zl +NOINTRINSIC_KEY = /Oi- + +ifeq ($(runtime),vc8) + WARNING_KEY += /Wp64 + CPLUS_FLAGS += /D_USE_RTM_VERSION +endif + +# Since VS2012, VC++ provides /volatile option to control semantics of volatile variables. +# We want to use strict ISO semantics in the library and tests +ifeq (ok,$(call detect_js,/minversion cl 17)) + CPLUS_FLAGS += /volatile:iso +endif + +# Since VS2013, VC++ uses the same .pdb file for different sources so we need +# to add /FS (Force Synchronous PDB Writes) +ifeq (ok,$(call detect_js,/minversion cl 18)) + CPLUS_FLAGS += /FS +endif + +CPLUS_FLAGS += /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE \ + /D_WIN32_WINNT=$(_WIN32_WINNT) +C_FLAGS = $(CPLUS_FLAGS) + +#------------------------------------------------------------------------------ +# End of setting compiler flags. +#------------------------------------------------------------------------------ + + +#------------------------------------------------------------------------------ +# Setting assembler data. +#------------------------------------------------------------------------------ +ASSEMBLY_SOURCE=$(arch)-masm +ifeq (intel64,$(arch)) + ASM=ml64 /nologo + ASM_FLAGS += /DEM64T=1 /c /Zi + TBB_ASM.OBJ = atomic_support.obj intel64_misc.obj itsx.obj + MALLOC_ASM.OBJ = atomic_support.obj +else +ifeq (armv7,$(arch)) + ASM= + TBB_ASM.OBJ= +else + ASM=ml /nologo + ASM_FLAGS += /c /coff /Zi /safeseh + TBB_ASM.OBJ = atomic_support.obj lock_byte.obj itsx.obj +endif +endif +#------------------------------------------------------------------------------ +# End of setting assembler data. +#------------------------------------------------------------------------------ + + +#------------------------------------------------------------------------------ +# Setting tbbmalloc data. +#------------------------------------------------------------------------------ +ifneq ($(target_ui), win8ui) +M_CPLUS_FLAGS = $(subst $(EH_FLAGS),/EHs-,$(CPLUS_FLAGS)) +else +M_CPLUS_FLAGS = $(CPLUS_FLAGS) +endif +#------------------------------------------------------------------------------ +# End of setting tbbmalloc data. +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# End of define compiler-specific variables. +#------------------------------------------------------------------------------ diff --git a/build/windows.gcc.inc b/build/windows.gcc.inc new file mode 100644 index 0000000000..2a6d0006d0 --- /dev/null +++ b/build/windows.gcc.inc @@ -0,0 +1,142 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +#------------------------------------------------------------------------------ +# Overriding settings from windows.inc +#------------------------------------------------------------------------------ + +SLASH= $(strip \) +OBJ = o +LIBEXT = dll # MinGW allows linking with DLLs directly + +TBB.RES = +MALLOC.RES = +RML.RES = +TBB.MANIFEST = +MALLOC.MANIFEST = +RML.MANIFEST = + +ifeq (ia32,$(arch)) + TBB.LST = $(tbb_root)/src/tbb/lin32-tbb-export.lst +else + TBB.LST = $(tbb_root)/src/tbb/win64-gcc-tbb-export.lst +endif +MALLOC.DEF = $(MALLOC_ROOT)/$(def_prefix)-gcc-tbbmalloc-export.def +RML.DEF = $(RML_SERVER_ROOT)/lin-rml-export.def + +LINK_TBB.LIB = $(TBB.LIB) +# no TBB proxy for the configuration +PROXY.LIB = + +#------------------------------------------------------------------------------ +# End of overridden settings +#------------------------------------------------------------------------------ +# Compiler-specific variables +#------------------------------------------------------------------------------ + +CPLUS = g++ +COMPILE_ONLY = -c -MMD +PREPROC_ONLY = -E -x c++ +INCLUDE_KEY = -I +DEFINE_KEY = -D +OUTPUT_KEY = -o # +OUTPUTOBJ_KEY = -o # +PIC_KEY = +WARNING_AS_ERROR_KEY = -Werror +WARNING_KEY = -Wall +TEST_WARNING_KEY = -Wextra -Wshadow -Wcast-qual -Woverloaded-virtual -Wnon-virtual-dtor -Wno-uninitialized +WARNING_SUPPRESS = -Wno-parentheses -Wno-uninitialized -Wno-non-virtual-dtor +DYLIB_KEY = -shared +LIBDL = +EXPORT_KEY = -Wl,--version-script, +LIBS = -lpsapi + +#------------------------------------------------------------------------------ +# End of compiler-specific variables +#------------------------------------------------------------------------------ +# Command lines +#------------------------------------------------------------------------------ + +LINK_FLAGS = -Wl,--enable-auto-import +LIB_LINK_FLAGS = $(DYLIB_KEY) +# gcc 4.4 and higher support -std=c++0x +ifeq (ok,$(call detect_js,/minversion gcc 4.4)) + CPP11_FLAGS = -std=c++0x -D_TBB_CPP0X +endif + +# gcc 4.8 and later support RTM intrinsics, but require command line switch to enable them +ifeq (ok,$(call detect_js,/minversion gcc 4.8)) + RTM_KEY = -mrtm +endif + +ifeq ($(cfg), release) + CPLUS_FLAGS = -g -O2 +endif +ifeq ($(cfg), debug) + CPLUS_FLAGS = -g -O0 -DTBB_USE_DEBUG +endif + +ifneq (00,$(lambdas)$(cpp0x)) + CXX_ONLY_FLAGS += $(CPP11_FLAGS) +endif + +CPLUS_FLAGS += -DUSE_WINTHREAD +CPLUS_FLAGS += -D_WIN32_WINNT=$(_WIN32_WINNT) + +# MinGW specific +CPLUS_FLAGS += -DMINGW_HAS_SECURE_API=1 -D__MSVCRT_VERSION__=0x0700 -msse -mthreads + +CONLY = gcc +debugger = gdb +C_FLAGS = $(CPLUS_FLAGS) + +ifeq (intel64,$(arch)) + CPLUS_FLAGS += -m64 $(RTM_KEY) + LIB_LINK_FLAGS += -m64 +endif + +ifeq (ia32,$(arch)) + CPLUS_FLAGS += -m32 -march=i686 $(RTM_KEY) + LIB_LINK_FLAGS += -m32 +endif + +# For examples +export UNIXMODE = 1 + +#------------------------------------------------------------------------------ +# End of command lines +#------------------------------------------------------------------------------ +# Setting assembler data +#------------------------------------------------------------------------------ + +ASM= +ASM_FLAGS= +TBB_ASM.OBJ= +ASSEMBLY_SOURCE=$(arch)-gas + +#------------------------------------------------------------------------------ +# End of setting assembler data +#------------------------------------------------------------------------------ +# Setting tbbmalloc data +#------------------------------------------------------------------------------ + +M_CPLUS_FLAGS = $(CPLUS_FLAGS) -fno-rtti -fno-exceptions + +#------------------------------------------------------------------------------ +# End of setting tbbmalloc data +#------------------------------------------------------------------------------ diff --git a/build/windows.icl.inc b/build/windows.icl.inc new file mode 100644 index 0000000000..d5047d4ed1 --- /dev/null +++ b/build/windows.icl.inc @@ -0,0 +1,168 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +#------------------------------------------------------------------------------ +# Define compiler-specific variables. +#------------------------------------------------------------------------------ + + +#------------------------------------------------------------------------------ +# Setting default configuration to release. +#------------------------------------------------------------------------------ +cfg ?= release +#------------------------------------------------------------------------------ +# End of setting default configuration to release. +#------------------------------------------------------------------------------ + + +#------------------------------------------------------------------------------ +# Setting compiler flags. +#------------------------------------------------------------------------------ +CPLUS = icl /nologo $(VCCOMPAT_FLAG) +LINK_FLAGS = /link /nologo +LIB_LINK_FLAGS= /link /nologo /DLL /MAP /DEBUG /fixed:no /INCREMENTAL:NO /DYNAMICBASE /NXCOMPAT + +ifeq ($(arch), ia32) + LIB_LINK_FLAGS += /SAFESEH +endif + + +# ICC 11.0 and higher support -std=c++0x +ifeq (ok,$(call detect_js,/minversion icl 11)) + CPP11_FLAGS = /Qstd=c++0x /D_TBB_CPP0X +endif + +# ICC 12.0 and higher provide Intel(R) Cilk(TM) Plus +ifeq (ok,$(call detect_js,/minversion icl 12)) + CILK_AVAILABLE = yes +endif + +ifeq ($(runtime), vc_mt) + MS_CRT_KEY = /MT$(if $(findstring debug,$(cfg)),d) +else + MS_CRT_KEY = /MD$(if $(findstring debug,$(cfg)),d) +endif +EH_FLAGS = /EHsc /GR + +ifeq ($(cfg), release) + CPLUS_FLAGS = $(MS_CRT_KEY) /O2 /Zi $(EH_FLAGS) /Zc:forScope /Zc:wchar_t /D__TBB_LIB_NAME=$(TBB.LIB) + ASM_FLAGS = +endif +ifeq ($(cfg), debug) + CPLUS_FLAGS = $(MS_CRT_KEY) /Od /Ob0 /Zi $(EH_FLAGS) /Zc:forScope /Zc:wchar_t /DTBB_USE_DEBUG /D__TBB_LIB_NAME=$(TBB.LIB) + ASM_FLAGS = /DUSE_FRAME_POINTER +endif +CPLUS_FLAGS += /GS + +COMPILE_ONLY = /c /QMMD +# PREPROC_ONLY should really use /TP which applies to all files in the command line. +# But with /TP, ICL does not preprocess *.def files. +PREPROC_ONLY = /EP /Tp +INCLUDE_KEY = /I +DEFINE_KEY = /D +OUTPUT_KEY = /Fe +OUTPUTOBJ_KEY = /Fo +WARNING_AS_ERROR_KEY = /WX +WARNING_KEY = /W3 +DYLIB_KEY = /DLL +EXPORT_KEY = /DEF: +NODEFAULTLIB_KEY = /Zl +NOINTRINSIC_KEY = /Oi- + + +ifneq (,$(codecov)) + CPLUS_FLAGS += /Qprof-genx +else + CPLUS_FLAGS += /DDO_ITT_NOTIFY +endif + +OPENMP_FLAG = /Qopenmp +CPLUS_FLAGS += /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE \ + /D_WIN32_WINNT=$(_WIN32_WINNT) + +ifeq ($(runtime),vc8) + CPLUS_FLAGS += /D_USE_RTM_VERSION +endif + + +C_FLAGS = $(CPLUS_FLAGS) + +ifneq (00,$(lambdas)$(cpp0x)) + CXX_ONLY_FLAGS += $(CPP11_FLAGS) +endif + +VCVERSION:=$(runtime) +VCCOMPAT_FLAG ?= $(if $(findstring vc7.1, $(VCVERSION)),/Qvc7.1) +ifeq ($(VCCOMPAT_FLAG),) + VCCOMPAT_FLAG := $(if $(findstring vc8, $(VCVERSION)),/Qvc8) +endif +ifeq ($(VCCOMPAT_FLAG),) + VCCOMPAT_FLAG := $(if $(findstring vc_mt, $(VCVERSION)),/Qvc10) +endif +ifeq ($(VCCOMPAT_FLAG),) + VCCOMPAT_FLAG := $(if $(findstring vc9, $(VCVERSION)),/Qvc9) +endif +ifeq ($(VCCOMPAT_FLAG),) + VCCOMPAT_FLAG := $(if $(findstring vc10, $(VCVERSION)),/Qvc10) +endif +ifeq ($(VCCOMPAT_FLAG),) + VCCOMPAT_FLAG := $(if $(findstring vc11, $(VCVERSION)),/Qvc11) +endif +ifeq ($(VCCOMPAT_FLAG),) + VCCOMPAT_FLAG := $(if $(findstring vc12, $(VCVERSION)),/Qvc12) +endif +ifeq ($(VCCOMPAT_FLAG),) + $(error VC version not detected correctly: $(VCVERSION) ) +endif +export VCCOMPAT_FLAG + +#------------------------------------------------------------------------------ +# End of setting compiler flags. +#------------------------------------------------------------------------------ + + +#------------------------------------------------------------------------------ +# Setting assembler data. +#------------------------------------------------------------------------------ +ASSEMBLY_SOURCE=$(arch)-masm +ifeq (intel64,$(arch)) + ASM=ml64 /nologo + ASM_FLAGS += /DEM64T=1 /c /Zi + TBB_ASM.OBJ = atomic_support.obj intel64_misc.obj itsx.obj + MALLOC_ASM.OBJ = atomic_support.obj +else + ASM=ml /nologo + ASM_FLAGS += /c /coff /Zi /safeseh + TBB_ASM.OBJ = atomic_support.obj lock_byte.obj itsx.obj +endif +#------------------------------------------------------------------------------ +# End of setting assembler data. +#------------------------------------------------------------------------------ + + +#------------------------------------------------------------------------------ +# Setting tbbmalloc data. +#------------------------------------------------------------------------------ +M_CPLUS_FLAGS = $(subst $(EH_FLAGS),/EHs-,$(CPLUS_FLAGS)) +#------------------------------------------------------------------------------ +# End of setting tbbmalloc data. +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# End of define compiler-specific variables. +#------------------------------------------------------------------------------ diff --git a/build/windows.inc b/build/windows.inc new file mode 100644 index 0000000000..3f81f1fe17 --- /dev/null +++ b/build/windows.inc @@ -0,0 +1,109 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +export SHELL = cmd + +ifdef tbb_build_dir + test_dir:=$(tbb_build_dir) +else + test_dir:=. +endif + +# A convenience wrapper for calls to detect.js. +# $(1) is the full command line for the script, e.g. /minversion icl 12 +detect_js = $(shell cmd /C "cscript /nologo /E:jscript $(tbb_root)/build/detect.js $(1)") + +# TODO give an error if archs doesn't match +ifndef arch + export arch:=$(call detect_js, /arch $(compiler)) +endif + +ifndef runtime + export runtime:=$(call detect_js, /runtime $(compiler)) +endif + +native_compiler := cl +export compiler ?= cl +debugger ?= devenv /debugexe + +CMD=cmd /C +CWD=$(shell cmd /C echo %CD%) +RM=cmd /C del /Q /F +RD=cmd /C rmdir +MD=cmd /c mkdir +SLASH=\\ +NUL = nul + +AR=lib +AR_OUTPUT_KEY=/out: +AR_FLAGS=/nologo /nodefaultlib + +OBJ = obj +DLL = dll +LIBEXT = lib +ASMEXT = asm + +def_prefix = $(if $(findstring intel64,$(arch)),win64,win32) + +# Target Windows version. Do not increase beyond 0x0502 without prior discussion! +# Used as the value for macro definition opiton in windows.cl.inc etc. +# For tests, we need at least Windows XP SP2 for sake of enabling stack backtraces. +_WIN32_WINNT=0x0502 + +TBB.LST = $(tbb_root)/src/tbb/$(def_prefix)-tbb-export.lst +TBB.DEF = $(TBB.LST:.lst=.def) +TBB.DLL = tbb$(CPF_SUFFIX)$(DEBUG_SUFFIX).$(DLL) +TBB.LIB = tbb$(CPF_SUFFIX)$(DEBUG_SUFFIX).$(LIBEXT) +TBB.RES = tbb_resource.res +# On Windows, we use #pragma comment to set the proper TBB lib to link with. +# But for cross-configuration testing, need to link explicitly. +# Tests use this variable to detect dependency on TBB binary, so have to be non-empty. +LINK_TBB.LIB = $(if $(crosstest),$(TBB.LIB),$(DEFINE_KEY)__TBB_IMPLICITLY_LINKED) +TBB.MANIFEST = +ifneq ($(filter vc8 vc9,$(runtime)),) + TBB.MANIFEST = tbbmanifest.exe.manifest +endif + +MALLOC.DEF = $(MALLOC_ROOT)/$(def_prefix)-tbbmalloc-export.def +MALLOC.DLL = tbbmalloc$(DEBUG_SUFFIX).$(DLL) +MALLOC.LIB = tbbmalloc$(DEBUG_SUFFIX).$(LIBEXT) +MALLOC.RES = tbbmalloc.res +MALLOC.MANIFEST = +ifneq ($(filter vc8 vc9,$(runtime)),) +MALLOC.MANIFEST = tbbmanifest.exe.manifest +endif +LINK_MALLOC.LIB = $(MALLOC.LIB) + +MALLOCPROXY.DLL = tbbmalloc_proxy$(DEBUG_SUFFIX).$(DLL) +MALLOCPROXY.LIB = tbbmalloc_proxy$(DEBUG_SUFFIX).$(LIBEXT) +LINK_MALLOCPROXY.LIB = $(MALLOCPROXY.LIB) + +PROXY.LIB = tbbproxy$(DEBUG_SUFFIX).$(LIBEXT) + +RML.DEF = $(RML_SERVER_ROOT)/$(def_prefix)-rml-export.def +RML.DLL = irml$(DEBUG_SUFFIX).$(DLL) +RML.LIB = irml$(DEBUG_SUFFIX).$(LIBEXT) +RML.RES = irml.res +ifneq ($(filter vc8 vc9,$(runtime)),) +RML.MANIFEST = tbbmanifest.exe.manifest +endif + +MAKE_VERSIONS = cmd /C cscript /nologo /E:jscript $(subst \,/,$(tbb_root))/build/version_info_windows.js $(compiler) $(arch) $(subst \,/,"$(VERSION_FLAGS)") > version_string.ver +MAKE_TBBVARS = cmd /C "$(subst /,\,$(tbb_root))\build\generate_tbbvars.bat" + +TEST_LAUNCHER = $(subst /,\,$(tbb_root))\build\test_launcher.bat $(largs) diff --git a/build/xbox360.cl.inc b/build/xbox360.cl.inc new file mode 100644 index 0000000000..8cd0bc1161 --- /dev/null +++ b/build/xbox360.cl.inc @@ -0,0 +1,85 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +#------------------------------------------------------------------------------ +# Define compiler-specific variables. +#------------------------------------------------------------------------------ + + +#------------------------------------------------------------------------------ +# Setting compiler flags. +#------------------------------------------------------------------------------ +CPLUS = cl /nologo +LINK_FLAGS = /link /nologo +LIB_LINK_FLAGS=/link /nologo /DLL /MAP /DEBUG +MS_CRT_KEY = /MT$(if $(findstring debug,$(cfg)),d) +EH_FLAGS = /EHsc /GR + +ifeq ($(cfg), release) + CPLUS_FLAGS = $(MS_CRT_KEY) /O2 /Zi $(EH_FLAGS) /Zc:forScope /D_XBOX /DTBB_NO_LEGACY=1 + ASM_FLAGS = +endif +ifeq ($(cfg), debug) + CPLUS_FLAGS = $(MS_CRT_KEY) /Od /Ob0 /Zi $(EH_FLAGS) /Zc:forScope \ + /DTBB_USE_DEBUG /D_XBOX /DTBB_NO_LEGACY=1 + ASM_FLAGS = /DUSE_FRAME_POINTER +endif + + +COMPILE_ONLY = /c +PREPROC_ONLY = /TP /EP +INCLUDE_KEY = /I +DEFINE_KEY = /D +OUTPUT_KEY = /Fe +OUTPUTOBJ_KEY = /Fo +WARNING_AS_ERROR_KEY = /WX +WARNING_KEY = /W3 +DYLIB_KEY = /DLL +EXPORT_KEY = /DEF: + +ifeq (em64t,$(arch)) + CPLUS_FLAGS += /GS- +endif + +CPLUS_FLAGS += /DUSE_WINTHREAD /D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=$(_WIN32_WINNT) +C_FLAGS = $(CPLUS_FLAGS) /TC +#------------------------------------------------------------------------------ +# End of setting compiler flags. +#------------------------------------------------------------------------------ + + +#------------------------------------------------------------------------------ +# Setting assembler data. +#------------------------------------------------------------------------------ +# nothing for XBOX360 +#------------------------------------------------------------------------------ +# End of setting assembler data. +#------------------------------------------------------------------------------ + + +#------------------------------------------------------------------------------ +# Setting tbbmalloc data. +#------------------------------------------------------------------------------ +M_CPLUS_FLAGS = $(subst $(EH_FLAGS),/EHs-,$(CPLUS_FLAGS)) +#------------------------------------------------------------------------------ +# End of setting tbbmalloc data. +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# End of define compiler-specific variables. +#------------------------------------------------------------------------------ diff --git a/build/xbox360.inc b/build/xbox360.inc new file mode 100644 index 0000000000..f3573d6072 --- /dev/null +++ b/build/xbox360.inc @@ -0,0 +1,72 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +ifdef tbb_build_dir + test_dir:=$(tbb_build_dir) +else + test_dir:=. +endif + +# TODO give an error if archs doesn't match +ifndef arch + export arch:=xbox360 +endif + +ifndef runtime + export runtime:=xdk +endif + +native_compiler := cl +export compiler ?= cl +debugger ?= devenv /debugexe + +CMD=cmd /C +CWD=$(shell cmd /C echo %CD%) +RM=cmd /C del /Q /F +RD=cmd /C rmdir +MD=cmd /c mkdir +SLASH=\\ +NUL = nul + +OBJ = obj +DLL = dll +LIBEXT = lib + +def_prefix = $(arch) + +# Target Windows version. Do not increase beyond 0x0500 without prior discussion! +# Used as the value for macro definition opiton in compiler specific inc files. +_WIN32_WINNT=0x0400 + +TBB.LST = +TBB.DEF = $(tbb_root)/src/tbb/$(def_prefix)-tbb-export.def +TBB.DLL = tbb$(CPF_SUFFIX)$(DEBUG_SUFFIX).$(DLL) +TBB.LIB = tbb$(CPF_SUFFIX)$(DEBUG_SUFFIX).$(LIBEXT) +TBB.RES = +#On Windows we specify appropriate tbb library using #pragma comment +LINK_TBB.LIB = + +MALLOC.DEF = $(MALLOC_ROOT)/$(def_prefix)-tbbmalloc-export.def +MALLOC.DLL = tbbmalloc$(DEBUG_SUFFIX).$(DLL) +MALLOC.LIB = tbbmalloc$(DEBUG_SUFFIX).$(LIBEXT) +#On Windows we specify appropriate tbbmalloc library using #pragma comment +LINK_MALLOC.LIB = +MALLOC.RES = + +MAKE_VERSIONS = cmd /C cscript /nologo /E:jscript $(subst \,/,$(tbb_root))/build/version_info_windows.js $(compiler) $(arch) $(subst \,/,"$(VERSION_FLAGS)") > version_string.ver +MAKE_TBBVARS = cmd /C "$(subst /,\,$(tbb_root))\build\generate_tbbvars.bat" diff --git a/doc/Release_Notes.txt b/doc/Release_Notes.txt new file mode 100644 index 0000000000..661de4d90f --- /dev/null +++ b/doc/Release_Notes.txt @@ -0,0 +1,171 @@ +------------------------------------------------------------------------ +Intel(R) Threading Building Blocks - Release Notes + Version 4.4 +------------------------------------------------------------------------ + + +System Requirements +------------------- + +Intel(R) Threading Building Blocks (Intel(R) TBB) is available +commercially (see http://software.intel.com/en-us/intel-tbb) as a +binary distribution, and in open source, in both source and binary +forms (see http://threadingbuildingblocks.org). + +When built from source, Intel(R) TBB is intended to be highly portable +and so supports a wide variety of operating systems and platforms (see +http://threadingbuildingblocks.org for more details). + +Binary distributions, including commercial distributions, are validated +and officially supported for the hardware, software, operating systems +and compilers listed here. + +Hardware - Recommended + + Microsoft* Windows* Systems + Intel(R) Core(TM) 2 Duo processor or Intel(R) Xeon(R) processor + or higher + Linux* Systems + Intel(R) Core(TM) 2 Duo processor or Intel(R) Xeon(R) processor + or higher + Intel(R) Xeon Phi(TM) coprocessor + OS X* Systems + Intel(R) Core(TM) 2 Duo processor or higher + +Hardware - Supported + + Intel(R) Pentium(R) 4 processor family and higher + Intel(R) Xeon Phi(TM) coprocessor + Non Intel(R) processors compatible with the above processors + +Software - Minimum Requirements + + Supported operating system (see below) + Supported compiler (see below) + +Software - Recommended + + Intel(R) Parallel Studio XE 2015 Professional Edition + Intel(R) Parallel Studio XE 2016 Professional Edition + Intel(R) System Studio 2016 + +Software - Supported Operating Systems + + Systems with Microsoft* Windows* operating systems + Microsoft* Windows* 10 + Microsoft* Windows* 8, 8.1 + Microsoft* Windows* 7 SP1 + Microsoft* Windows* Server 2012 R2 + Microsoft* Windows* Server 2012 + Microsoft* Windows* Server 2008 R2 SP1 + Microsoft* Windows* HPC Server 2008 + Systems with Linux* operating systems + CentOS 6.5 + Debian* 7, 8 + Fedora* 20, 21 + Intel(R) Cluster Ready + Red Hat* Enterprise Linux* 6, 7 + SuSE* Linux* Enterprise Server 11, 12 + Ubuntu* 12.04 LTS, 13.10, 14.04 LTS, 15.04 + WindRiver* Linux 7 + Yocto 1.7 + Systems with OS X* operating systems + OS X* 10.10 and higher + +Software - Supported Compilers + + Intel(R) C++ Compiler 14 (Intel(R) Parallel Studio XE 2015) + and higher + Microsoft* Visual C++ 10.0 (Microsoft* Visual Studio* 2010, + Windows* OS only) and higher + For each supported Linux* operating system, the standard gcc + version provided with that operating system is supported, + starting from gcc 4.1 and higher + Xcode* 6.3 and higher and command line tools (OS X* only) + + +Known Issues +------------ + +Please note the following with respect to this particular release of +Intel(R) Threading Building Blocks. + +Library Issues + + - In general, non-debug ("release") builds of applications should + link against the non-debug versions of the Intel TBB libraries, + and debug builds should link against the debug versions of + these libraries. On Windows* OS, compile with /MD and use + Intel TBB release libraries, or compile with /MDd and use + debug libraries; not doing so may cause run-time failures. + See the product documentation for more details on debug vs. + release libraries. + + - The debug version of Intel TBB library built with static MSVCRT + (vc_mt/tbb_debug.dll) additionally requires the debug library + of Microsoft* Visual C++ 10.0 runtime (msvcp100d.dll) in order + to run. + + - If an application uses static MSVCRT libraries or the Intel TBB + library built with static MSVCRT (vc_mt variant), and throws + an exception from a functor passed to task_group::run_and_wait(), + the exception will not be intercepted by Intel TBB and will not + result in cancellation of the task_group. For a workaround, + catch the exception in the functor and cancel the task_group + explicitly. + + - If you are using Intel(R) Threading Building Blocks and OpenMP* + constructs mixed together in rapid succession in the same + program, and you are using Intel(R) compilers for your OpenMP* + code, set KMP_BLOCKTIME to a small value (e.g., 20 milliseconds) + to improve performance. This setting can also be made within + your OpenMP* code via the kmp_set_blocktime() library call. + See the Intel(R) compiler OpenMP* documentation for more details + on KMP_BLOCKTIME and kmp_set_blocktime(). + + - If you are using Intel(R) Threading Building Blocks and OpenMP + together in a program on Linux OS, avoid using KMP_AFFINITY and + OMP_PROC_BIND, as well as programmatically setting thread + affinity before Intel TBB task scheduler is initialized. + An affinity mask set for a thread that initializes Intel TBB + limits the number of worker threads used by default in the task + scheduler. + + - If an open source version of Intel TBB is installed to a system + folder like /usr/lib64 on Linux OS, examples may fail to link + because sometimes gcc searches for libraries in an unexpected + order. To resolve this, use the -L linker option to specify + the right location of Intel TBB libraries. This issue does not + affect program execution. + + - If an application that uses dynamic memory allocator replacement + via LD_PRELOAD is analyzed with Intel(R) VTune(TM) Amplifier XE + for Linux, the analysis may fail to start. For a workaround, + either specify the full path to both libtbbmalloc_proxy.so.2 + and libtbbmalloc.so.2 in LD_PRELOAD, or set up the project for + Intel(R) VTune(TM) Amplifier XE to use a shell script that sets + LD_PRELOAD and starts the application. + + - If your application includes tbb/enumerable_thread_specific.h (or + tbb/tbb.h) for offload execution on an Intel(R) Xeon Phi(TM) + coprocessor, you may see link issues related to libpthread. + To resolve this issue, add the following compiler option: + /Qoffload-option,mic,compiler,"-pthread" on Windows* OS, + or -qoffload-option,mic,compiler,"-pthread" on Linux* OS. + + - On Linux* OS with some versions of gcc runtime (e.g. 4.4.7, + 4.8.2, and 4.9.2), the destructor of a task_group might not + throw missing_wait exception. + +------------------------------------------------------------------------ +Copyright (C) 2005-2015 Intel Corporation. All Rights Reserved. + +Intel, Xeon and Pentium are registered trademarks or trademarks of +Intel Corporation or its subsidiaries in the United States and other countries. + +* Other names and brands may be claimed as the property of others. + +Third Party and Open Source Licenses + +Content of some examples or binaries may be covered by various open-source +licenses. See the index.html file in each respective folder for details. diff --git a/doc/html/a00001.html b/doc/html/a00001.html new file mode 100644 index 0000000000..5d398fdd2c --- /dev/null +++ b/doc/html/a00001.html @@ -0,0 +1,59 @@ + + + + + + +Requirements on range concept + + + + + + + +
+
+
Requirements on range concept
+
+
+

Class R implementing the concept of range must define:

+
    +
  • R::R( const R& );
    +
    Copy constructor
  • +
  • R::~R();
    +
    Destructor
  • +
  • bool R::is_divisible() const;
    +
    True if range can be partitioned into two subranges
  • +
  • bool R::empty() const;
    +
    True if range is empty
  • +
  • R::R( R& r, split );
    +
    Split range r into two subranges.
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00002.html b/doc/html/a00002.html new file mode 100644 index 0000000000..adfece929a --- /dev/null +++ b/doc/html/a00002.html @@ -0,0 +1,62 @@ + + + + + + +Requirements on parallel_do body + + + + + + + +
+
+
Requirements on parallel_do body
+
+
+

Class Body implementing the concept of parallel_do body must define:

+
    +
  • B::operator()(
    +
    cv_item_type item,
    +
    parallel_do_feeder<item_type>& feeder
    +
    ) const
    +
    +
    OR
    +
    +
    B::operator()( cv_item_type& item ) const
    +
    Process item. May be invoked concurrently for the same this but different item.
  • +
  • item_type( const item_type& )
    +
    Copy a work item.
  • +
  • ~item_type()
    +
    Destroy a work item
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00003.html b/doc/html/a00003.html new file mode 100644 index 0000000000..fec1b11faf --- /dev/null +++ b/doc/html/a00003.html @@ -0,0 +1,55 @@ + + + + + + +Requirements on parallel_for body + + + + + + + +
+
+
Requirements on parallel_for body
+
+
+

Class Body implementing the concept of parallel_for body must define:

+
    +
  • Body::Body( const Body& );
    +
    Copy constructor
  • +
  • Body::~Body();
    +
    Destructor
  • +
  • void Body::operator()( Range& r ) const;
    +
    Function call operator applying the body to range r.
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00004.html b/doc/html/a00004.html new file mode 100644 index 0000000000..7f94ce5b1b --- /dev/null +++ b/doc/html/a00004.html @@ -0,0 +1,57 @@ + + + + + + +Requirements on parallel_reduce body + + + + + + + +
+
+
Requirements on parallel_reduce body
+
+
+

Class Body implementing the concept of parallel_reduce body must define:

+
    +
  • Body::Body( Body&, split );
    +
    Splitting constructor. Must be able to run concurrently with operator() and method join
  • +
  • Body::~Body();
    +
    Destructor
  • +
  • void Body::operator()( Range& r );
    +
    Function call operator applying body to range r and accumulating the result
  • +
  • void Body::join( Body& b );
    +
    Join results. The result in b should be merged into the result of this
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00005.html b/doc/html/a00005.html new file mode 100644 index 0000000000..d538b45c62 --- /dev/null +++ b/doc/html/a00005.html @@ -0,0 +1,43 @@ + + + + + + +Requirements on parallel_reduce anonymous function objects (lambda functions) + + + + + + + +
+
+
Requirements on parallel_reduce anonymous function objects (lambda functions)
+
+
+

TO BE DOCUMENTED

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00006.html b/doc/html/a00006.html new file mode 100644 index 0000000000..4033ce6703 --- /dev/null +++ b/doc/html/a00006.html @@ -0,0 +1,59 @@ + + + + + + +Requirements on parallel_scan body + + + + + + + +
+
+
Requirements on parallel_scan body
+
+
+

Class Body implementing the concept of parallel_scan body must define:

+
    +
  • Body::Body( Body&, split );
    +
    Splitting constructor. Split b so that this and b can accumulate separately
  • +
  • Body::~Body();
    +
    Destructor
  • +
  • void Body::operator()( const Range& r, pre_scan_tag );
    +
    Preprocess iterations for range r
  • +
  • void Body::operator()( const Range& r, final_scan_tag );
    +
    Do final processing for iterations of range r
  • +
  • void Body::reverse_join( Body& a );
    +
    Merge preprocessing state of a into this, where a was created earlier from b by b's splitting constructor
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00007.html b/doc/html/a00007.html new file mode 100644 index 0000000000..243601c3a6 --- /dev/null +++ b/doc/html/a00007.html @@ -0,0 +1,53 @@ + + + + + + +Requirements on iterators for parallel_sort + + + + + + + +
+
+
Requirements on iterators for parallel_sort
+
+
+

Requirements on value type T of RandomAccessIterator for parallel_sort:

+
    +
  • void swap( T& x, T& y )
    +
    Swaps x and y
  • +
  • bool Compare::operator()( const T& x, const T& y )
    +
    True if x comes before y;
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00008.html b/doc/html/a00008.html new file mode 100644 index 0000000000..14967095dd --- /dev/null +++ b/doc/html/a00008.html @@ -0,0 +1,57 @@ + + + + + + +TBB concepts + + + + + + + +
+
+
TBB concepts
+
+
+

A concept is a set of requirements to a type, which are necessary and sufficient for the type to model a particular behavior or a set of behaviors. Some concepts are specific to a particular algorithm (e.g. algorithm body), while other ones are common to several algorithms (e.g. range concept).

+

All TBB algorithms make use of different classes implementing various concepts. Implementation classes are supplied by the user as type arguments of template parameters and/or as objects passed as function call arguments. The library provides predefined implementations of some concepts (e.g. several kinds of ranges), while other ones must always be implemented by the user.

+

TBB defines a set of minimal requirements each concept must conform to. Here is the list of different concepts hyperlinked to the corresponding requirements specifications:

+ +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00009.html b/doc/html/a00009.html new file mode 100644 index 0000000000..649205b99b --- /dev/null +++ b/doc/html/a00009.html @@ -0,0 +1,54 @@ + + + + + + +__TBB_malloc_proxy_caller Struct Reference + + + + + + + +
+ +
+
__TBB_malloc_proxy_caller Struct Reference
+
+
+
The documentation for this struct was generated from the following file:
    +
  • tbbmalloc_proxy.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00010.html b/doc/html/a00010.html new file mode 100644 index 0000000000..e4a725025c --- /dev/null +++ b/doc/html/a00010.html @@ -0,0 +1,144 @@ + + + + + + +tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor Class Reference + + + + + + + +
+ +
+
tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor Class Reference
+
+
+ +

Allows write access to elements and combines data access, locking, and garbage collection. + More...

+ +

#include <concurrent_hash_map.h>

+
+Inheritance diagram for tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor:
+
+
+ + +tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor + +
+ + + + + + + + + +

+Public Types

+typedef
+concurrent_hash_map::value_type 
value_type
 Type of value.
 
- Public Types inherited from tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor
+typedef const
+concurrent_hash_map::value_type 
value_type
 Type of value.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+reference operator* () const
 Return reference to associated value in hash table.
 
+pointer operator-> () const
 Return pointer to associated value in hash table.
 
- Public Member Functions inherited from tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor
+bool empty () const
 True if result is empty.
 
+void release ()
 Set to null.
 
+const_reference operator* () const
 Return reference to associated value in hash table.
 
+const_pointer operator-> () const
 Return pointer to associated value in hash table.
 
const_accessor ()
 Create empty result.
 
~const_accessor ()
 Destroy result after releasing the underlying reference.
 
+ + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor
+bool is_writer ()
 
- Protected Attributes inherited from tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor
+nodemy_node
 
+hashcode_t my_hash
 
+

Detailed Description

+

template<typename Key, typename T, typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >>
+class tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor

+ +

Allows write access to elements and combines data access, locking, and garbage collection.

+

The documentation for this class was generated from the following file:
    +
  • concurrent_hash_map.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00010.png b/doc/html/a00010.png new file mode 100644 index 0000000000..4a5d25e3fe Binary files /dev/null and b/doc/html/a00010.png differ diff --git a/doc/html/a00011.html b/doc/html/a00011.html new file mode 100644 index 0000000000..1249dc58d2 --- /dev/null +++ b/doc/html/a00011.html @@ -0,0 +1,66 @@ + + + + + + +tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor_not_used Struct Reference + + + + + + + +
+ +
+
tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor_not_used Struct Reference
+
+
+ + + + +

+Public Member Functions

+void release ()
 
+
The documentation for this struct was generated from the following file:
    +
  • concurrent_hash_map.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00012.html b/doc/html/a00012.html new file mode 100644 index 0000000000..8cded18e90 --- /dev/null +++ b/doc/html/a00012.html @@ -0,0 +1,125 @@ + + + + + + +tbb::interface6::aggregator Class Reference + + + + + + + +
+ +
+
tbb::interface6::aggregator Class Reference
+
+
+ +

Basic aggregator interface. + More...

+ +

#include <aggregator.h>

+
+Inheritance diagram for tbb::interface6::aggregator:
+
+
+ + +tbb::interface6::aggregator_ext< internal::basic_handler > + +
+ + + + + + +

+Public Member Functions

template<typename Body >
void execute (const Body &b)
 BASIC INTERFACE: Enter a function for exclusive execution by the aggregator. More...
 
+ + + + + + + + + +

+Additional Inherited Members

- Private Member Functions inherited from tbb::interface6::aggregator_ext< internal::basic_handler >
aggregator_ext (const internal::basic_handler &h)
 
void process (aggregator_operation *op)
 EXPERT INTERFACE: Enter a user-made operation into the aggregator's mailbox. More...
 
void execute_impl (aggregator_operation &op)
 
+

Detailed Description

+

Basic aggregator interface.

+

Member Function Documentation

+ +
+
+
+template<typename Body >
+ + + + + +
+ + + + + + + + +
void tbb::interface6::aggregator::execute (const Body & b)
+
+inline
+
+ +

BASIC INTERFACE: Enter a function for exclusive execution by the aggregator.

+

The calling thread stores the function object in a basic_operation and places the operation in the aggregator's mailbox

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • aggregator.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00012.png b/doc/html/a00012.png new file mode 100644 index 0000000000..d78b2dbf91 Binary files /dev/null and b/doc/html/a00012.png differ diff --git a/doc/html/a00013.html b/doc/html/a00013.html new file mode 100644 index 0000000000..ac018c470c --- /dev/null +++ b/doc/html/a00013.html @@ -0,0 +1,151 @@ + + + + + + +tbb::interface6::aggregator_ext< handler_type > Class Template Reference + + + + + + + +
+ +
+
tbb::interface6::aggregator_ext< handler_type > Class Template Reference
+
+
+ +

Aggregator base class and expert interface. + More...

+ +

#include <aggregator.h>

+
+Inheritance diagram for tbb::interface6::aggregator_ext< handler_type >:
+
+
+ + + +
+ + + + + + + +

+Public Member Functions

aggregator_ext (const handler_type &h)
 
void process (aggregator_operation *op)
 EXPERT INTERFACE: Enter a user-made operation into the aggregator's mailbox. More...
 
+ + + +

+Protected Member Functions

void execute_impl (aggregator_operation &op)
 
+

Detailed Description

+

template<typename handler_type>
+class tbb::interface6::aggregator_ext< handler_type >

+ +

Aggregator base class and expert interface.

+

An aggregator for collecting operations coming from multiple sources and executing them serially on a single thread.

+

Member Function Documentation

+ +
+
+
+template<typename handler_type>
+ + + + + +
+ + + + + + + + +
void tbb::interface6::aggregator_ext< handler_type >::execute_impl (aggregator_operationop)
+
+inlineprotected
+
+

Place operation in mailbox, then either handle mailbox or wait for the operation to be completed by a different thread.

+ +
+
+ +
+
+
+template<typename handler_type>
+ + + + + +
+ + + + + + + + +
void tbb::interface6::aggregator_ext< handler_type >::process (aggregator_operationop)
+
+inline
+
+ +

EXPERT INTERFACE: Enter a user-made operation into the aggregator's mailbox.

+

Details of user-made operations must be handled by user-provided handler

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • aggregator.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00013.png b/doc/html/a00013.png new file mode 100644 index 0000000000..75772ae761 Binary files /dev/null and b/doc/html/a00013.png differ diff --git a/doc/html/a00014.html b/doc/html/a00014.html new file mode 100644 index 0000000000..14d769f659 --- /dev/null +++ b/doc/html/a00014.html @@ -0,0 +1,129 @@ + + + + + + +tbb::interface6::aggregator_operation Class Reference + + + + + + + +
+ +
+
tbb::interface6::aggregator_operation Class Reference
+
+
+
+Inheritance diagram for tbb::interface6::aggregator_operation:
+
+
+ + +tbb::interface6::internal::basic_operation_base +tbb::interface6::internal::basic_operation< Body > + +
+ + + + +

+Public Types

enum  aggregator_operation_status { agg_waiting =0, +agg_finished + }
 
+ + + + + + + + + + + +

+Public Member Functions

+void start ()
 Call start before handling this operation.
 
void finish ()
 Call finish when done handling this operation. More...
 
+aggregator_operationnext ()
 
+void set_next (aggregator_operation *n)
 
+ + + + +

+Friends

+template<typename handler_type >
class aggregator_ext
 
+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + +
void tbb::interface6::aggregator_operation::finish ()
+
+inline
+
+ +

Call finish when done handling this operation.

+

The operation will be released to its originating thread, and possibly deleted.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • aggregator.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00014.png b/doc/html/a00014.png new file mode 100644 index 0000000000..70eef83544 Binary files /dev/null and b/doc/html/a00014.png differ diff --git a/doc/html/a00015.html b/doc/html/a00015.html new file mode 100644 index 0000000000..753898ee87 --- /dev/null +++ b/doc/html/a00015.html @@ -0,0 +1,82 @@ + + + + + + +tbb::aligned_space< T, N > Class Template Reference + + + + + + + +
+ +
+
tbb::aligned_space< T, N > Class Template Reference
+
+
+ +

Block of space aligned sufficiently to construct an array T with N elements. + More...

+ +

#include <aligned_space.h>

+ + + + + + + + +

+Public Member Functions

+T * begin ()
 Pointer to beginning of array.
 
+T * end ()
 Pointer to one past last element in array.
 
+

Detailed Description

+

template<typename T, size_t N = 1>
+class tbb::aligned_space< T, N >

+ +

Block of space aligned sufficiently to construct an array T with N elements.

+

The elements are not constructed or destroyed by this class.

+

The documentation for this class was generated from the following file:
    +
  • aligned_space.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00016.html b/doc/html/a00016.html new file mode 100644 index 0000000000..e442ccaae3 --- /dev/null +++ b/doc/html/a00016.html @@ -0,0 +1,66 @@ + + + + + + +tbb::flow::interface8::allocate_buffer< T > Struct Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::allocate_buffer< T > Struct Template Reference
+
+
+ + + + +

+Static Public Attributes

+static const bool value = false
 
+
The documentation for this struct was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00017.html b/doc/html/a00017.html new file mode 100644 index 0000000000..198c5d9e7e --- /dev/null +++ b/doc/html/a00017.html @@ -0,0 +1,66 @@ + + + + + + +tbb::flow::interface8::allocate_buffer< queueing > Struct Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::allocate_buffer< queueing > Struct Template Reference
+
+
+ + + + +

+Static Public Attributes

+static const bool value = true
 
+
The documentation for this struct was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00018.html b/doc/html/a00018.html new file mode 100644 index 0000000000..0b75d324e0 --- /dev/null +++ b/doc/html/a00018.html @@ -0,0 +1,99 @@ + + + + + + +tbb::flow::interface8::internal::async_gateway< Output > Class Template Reference + + + + + + +
+ + + + + +
+
+ +
+
tbb::flow::interface8::internal::async_gateway< Output > Class Template Referenceabstract
+
+
+ +

Pure virtual template class that defines interface for async communication. + More...

+ +

#include <flow_graph.h>

+
+Inheritance diagram for tbb::flow::interface8::internal::async_gateway< Output >:
+
+
+ + +tbb::flow::interface8::async_node< Input, Output, Allocator > + +
+ + + + +

+Public Types

+typedef Output output_type
 
+ + + + + + + + +

+Public Member Functions

+virtual bool async_try_put (const output_type &i)=0
 Submit signal from Async Activity to FG.
 
+virtual void async_reserve ()=0
 
+virtual void async_commit ()=0
 
+

Detailed Description

+

template<typename Output>
+class tbb::flow::interface8::internal::async_gateway< Output >

+ +

Pure virtual template class that defines interface for async communication.

+

The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00018.png b/doc/html/a00018.png new file mode 100644 index 0000000000..1143e3873d Binary files /dev/null and b/doc/html/a00018.png differ diff --git a/doc/html/a00019.html b/doc/html/a00019.html new file mode 100644 index 0000000000..0036453939 --- /dev/null +++ b/doc/html/a00019.html @@ -0,0 +1,194 @@ + + + + + + +tbb::flow::interface8::async_node< Input, Output, Allocator > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::async_node< Input, Output, Allocator > Class Template Reference
+
+
+ +

Implements a async node. + More...

+ +

#include <flow_graph.h>

+
+Inheritance diagram for tbb::flow::interface8::async_node< Input, Output, Allocator >:
+
+
+ + +tbb::flow::interface8::graph_node +tbb::flow::interface8::internal::async_gateway< Output > + +
+ + + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef Input input_type
 
+typedef Output output_type
 
+typedef async_node< input_type,
+output_type, Allocator > 
my_class
 
+typedef sender< input_type > predecessor_type
 
+typedef receiver< output_type > successor_type
 
+typedef
+internal::async_gateway
+< output_type > 
async_gateway_type
 
+typedef internal::async_input
+< input_type, Allocator,
+async_gateway_type
async_input_type
 
+typedef
+internal::function_output
+< output_type > 
async_output_type
 
- Public Types inherited from tbb::flow::interface8::internal::async_gateway< Output >
+typedef Output output_type
 
+ + + + + + + + + + + + + + + +

+Public Member Functions

+template<typename Body >
 async_node (graph &g, Body body)
 Constructor.
 
async_node (const async_node &src)
 Copy constructor.
 
+async_gateway_typeasync_gateway ()
 
+void set_name (const char *name)
 
- Public Member Functions inherited from tbb::flow::interface8::graph_node
graph_node (graph &g)
 
+ + + + + + + + + + + + + + +

+Protected Member Functions

+void reset_node (reset_flags f)
 
+void extract ()
 
+internal::broadcast_cache
+< output_type > & 
successors ()
 
+bool async_try_put (const output_type &i)
 Submit signal from Async Activity to FG.
 
+void async_reserve ()
 
+void async_commit ()
 
+ + + + + + + + + + +

+Friends

+template<typename R , typename B >
class run_and_put_task
 
+template<typename X , typename Y >
class internal::broadcast_cache
 
+template<typename X , typename Y >
class internal::round_robin_cache
 
+ + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from tbb::flow::interface8::graph_node
+graphmy_graph
 
+graph_nodenext
 
+graph_nodeprev
 
+

Detailed Description

+

template<typename Input, typename Output, typename Allocator = cache_aligned_allocator<Input>>
+class tbb::flow::interface8::async_node< Input, Output, Allocator >

+ +

Implements a async node.

+

The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00019.png b/doc/html/a00019.png new file mode 100644 index 0000000000..83dff9a537 Binary files /dev/null and b/doc/html/a00019.png differ diff --git a/doc/html/a00020.html b/doc/html/a00020.html new file mode 100644 index 0000000000..3fd317282d --- /dev/null +++ b/doc/html/a00020.html @@ -0,0 +1,91 @@ + + + + + + +tbb::atomic< T > Struct Template Reference + + + + + + + +
+ +
+
tbb::atomic< T > Struct Template Reference
+
+
+ +

Primary template for atomic. + More...

+ +

#include <atomic.h>

+
+Inheritance diagram for tbb::atomic< T >:
+
+
+ + + +
+ + + + + + + + +

+Public Member Functions

+constexpr atomic (T arg)
 
+T operator= (T rhs)
 
+atomic< T > & operator= (const atomic< T > &rhs)
 
+

Detailed Description

+

template<typename T>
+struct tbb::atomic< T >

+ +

Primary template for atomic.

+

See the Reference for details.

+

The documentation for this struct was generated from the following file:
    +
  • atomic.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00020.png b/doc/html/a00020.png new file mode 100644 index 0000000000..257e92316a Binary files /dev/null and b/doc/html/a00020.png differ diff --git a/doc/html/a00021.html b/doc/html/a00021.html new file mode 100644 index 0000000000..88d4fe610a --- /dev/null +++ b/doc/html/a00021.html @@ -0,0 +1,90 @@ + + + + + + +tbb::atomic< void * > Struct Template Reference + + + + + + + +
+ +
+
tbb::atomic< void * > Struct Template Reference
+
+
+ +

Specialization for atomic<void*>, for sake of not allowing arithmetic or operator->. + More...

+ +

#include <atomic.h>

+
+Inheritance diagram for tbb::atomic< void * >:
+
+
+ + + +
+ + + + + + + + +

+Public Member Functions

+constexpr atomic (void *arg)
 
+void * operator= (void *rhs)
 
+atomic< void * > & operator= (const atomic< void * > &rhs)
 
+

Detailed Description

+

template<>
+struct tbb::atomic< void * >

+ +

Specialization for atomic<void*>, for sake of not allowing arithmetic or operator->.

+

The documentation for this struct was generated from the following file:
    +
  • atomic.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00021.png b/doc/html/a00021.png new file mode 100644 index 0000000000..c5aaf08d4c Binary files /dev/null and b/doc/html/a00021.png differ diff --git a/doc/html/a00022.html b/doc/html/a00022.html new file mode 100644 index 0000000000..f8bda6414b --- /dev/null +++ b/doc/html/a00022.html @@ -0,0 +1,81 @@ + + + + + + +tbb::bad_last_alloc Class Reference + + + + + + + +
+ +
+
tbb::bad_last_alloc Class Reference
+
+
+ +

Exception for concurrent containers. + More...

+ +

#include <tbb_exception.h>

+
+Inheritance diagram for tbb::bad_last_alloc:
+
+
+ + + +
+ + + + +

+Public Member Functions

+const char * what () const throw ()
 
+

Detailed Description

+

Exception for concurrent containers.

+

The documentation for this class was generated from the following file:
    +
  • tbb_exception.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00022.png b/doc/html/a00022.png new file mode 100644 index 0000000000..6cb758af9d Binary files /dev/null and b/doc/html/a00022.png differ diff --git a/doc/html/a00023.html b/doc/html/a00023.html new file mode 100644 index 0000000000..e29369246f --- /dev/null +++ b/doc/html/a00023.html @@ -0,0 +1,66 @@ + + + + + + +tbb::interface6::internal::basic_handler Class Reference + + + + + + +
+ + + + + +
+
+ +
+
tbb::interface6::internal::basic_handler Class Reference
+
+
+ + + + +

+Public Member Functions

+void operator() (aggregator_operation *op_list) const
 
+
The documentation for this class was generated from the following file:
    +
  • aggregator.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00024.html b/doc/html/a00024.html new file mode 100644 index 0000000000..f4152343a2 --- /dev/null +++ b/doc/html/a00024.html @@ -0,0 +1,84 @@ + + + + + + +tbb::interface6::internal::basic_operation< Body > Class Template Reference + + + + + + +
+ + + + + +
+
+ +
+
tbb::interface6::internal::basic_operation< Body > Class Template Reference
+
+
+
+Inheritance diagram for tbb::interface6::internal::basic_operation< Body >:
+
+
+ + +tbb::interface6::internal::basic_operation_base +tbb::interface6::aggregator_operation + +
+ + + + +

+Public Member Functions

basic_operation (const Body &b)
 
+ + + + +

+Additional Inherited Members

- Public Types inherited from tbb::interface6::aggregator_operation
enum  aggregator_operation_status { agg_waiting =0, +agg_finished + }
 
+
The documentation for this class was generated from the following file:
    +
  • aggregator.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00024.png b/doc/html/a00024.png new file mode 100644 index 0000000000..cadf33aedd Binary files /dev/null and b/doc/html/a00024.png differ diff --git a/doc/html/a00025.html b/doc/html/a00025.html new file mode 100644 index 0000000000..07017f9e68 --- /dev/null +++ b/doc/html/a00025.html @@ -0,0 +1,98 @@ + + + + + + +tbb::interface6::internal::basic_operation_base Class Reference + + + + + + + +
+ +
+
tbb::interface6::internal::basic_operation_base Class Referenceabstract
+
+
+
+Inheritance diagram for tbb::interface6::internal::basic_operation_base:
+
+
+ + +tbb::interface6::aggregator_operation +tbb::interface6::internal::basic_operation< Body > + +
+ + + + +

+Friends

+class basic_handler
 
+ + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from tbb::interface6::aggregator_operation
enum  aggregator_operation_status { agg_waiting =0, +agg_finished + }
 
- Public Member Functions inherited from tbb::interface6::aggregator_operation
+void start ()
 Call start before handling this operation.
 
void finish ()
 Call finish when done handling this operation. More...
 
+aggregator_operationnext ()
 
+void set_next (aggregator_operation *n)
 
+
The documentation for this class was generated from the following file:
    +
  • aggregator.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00025.png b/doc/html/a00025.png new file mode 100644 index 0000000000..0f94299e82 Binary files /dev/null and b/doc/html/a00025.png differ diff --git a/doc/html/a00026.html b/doc/html/a00026.html new file mode 100644 index 0000000000..ae8be96100 --- /dev/null +++ b/doc/html/a00026.html @@ -0,0 +1,325 @@ + + + + + + +tbb::blocked_range< Value > Class Template Reference + + + + + + + +
+ +
+
tbb::blocked_range< Value > Class Template Reference
+
+
+ +

A range over which to iterate. + More...

+ +

#include <blocked_range.h>

+ + + + + + + + +

+Public Types

typedef Value const_iterator
 Type of a value. More...
 
+typedef std::size_t size_type
 Type for size of a range.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 blocked_range ()
 Construct range with default-constructed values for begin and end. More...
 
blocked_range (Value begin_, Value end_, size_type grainsize_=1)
 Construct range over half-open interval [begin,end), with the given grainsize.
 
+const_iterator begin () const
 Beginning of range.
 
+const_iterator end () const
 One past last value in range.
 
size_type size () const
 Size of the range. More...
 
+size_type grainsize () const
 The grain size for this range.
 
+bool empty () const
 True if range is empty.
 
bool is_divisible () const
 True if range is divisible. More...
 
 blocked_range (blocked_range &r, split)
 Split range. More...
 
 blocked_range (blocked_range &r, proportional_split &proportion)
 Split range. More...
 
+ + + + +

+Static Public Attributes

+static const bool is_splittable_in_proportion = true
 Static field to support proportional split.
 
+ + + + + + + +

+Friends

+template<typename RowValue , typename ColValue >
class blocked_range2d
 
+template<typename RowValue , typename ColValue , typename PageValue >
class blocked_range3d
 
+

Detailed Description

+

template<typename Value>
+class tbb::blocked_range< Value >

+ +

A range over which to iterate.

+

Member Typedef Documentation

+ +
+
+
+template<typename Value>
+ + + + +
typedef Value tbb::blocked_range< Value >::const_iterator
+
+ +

Type of a value.

+

Called a const_iterator for sake of algorithms that need to treat a blocked_range as an STL container.

+ +
+
+

Constructor & Destructor Documentation

+ +
+
+
+template<typename Value>
+ + + + + +
+ + + + + + + +
tbb::blocked_range< Value >::blocked_range ()
+
+inline
+
+ +

Construct range with default-constructed values for begin and end.

+

Requires that Value have a default constructor.

+ +
+
+ +
+
+
+template<typename Value>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
tbb::blocked_range< Value >::blocked_range (blocked_range< Value > & r,
split  
)
+
+inline
+
+ +

Split range.

+

The new Range *this has the second part, the old range r has the first part. Unspecified if end()<begin() or !is_divisible().

+ +
+
+ +
+
+
+template<typename Value>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
tbb::blocked_range< Value >::blocked_range (blocked_range< Value > & r,
proportional_split & proportion 
)
+
+inline
+
+ +

Split range.

+

The new Range *this has the second part split according to specified proportion, the old range r has the first part. Unspecified if end()<begin() or !is_divisible().

+ +
+
+

Member Function Documentation

+ +
+
+
+template<typename Value>
+ + + + + +
+ + + + + + + +
bool tbb::blocked_range< Value >::is_divisible () const
+
+inline
+
+
+ +
+
+
+template<typename Value>
+ + + + + +
+ + + + + + + +
size_type tbb::blocked_range< Value >::size () const
+
+inline
+
+ +

Size of the range.

+

Unspecified if end()<begin().

+ +

Referenced by tbb::blocked_range< I >::is_divisible().

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • blocked_range.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00027.html b/doc/html/a00027.html new file mode 100644 index 0000000000..3ba32464ac --- /dev/null +++ b/doc/html/a00027.html @@ -0,0 +1,124 @@ + + + + + + +tbb::blocked_range2d< RowValue, ColValue > Class Template Reference + + + + + + + +
+ +
+
tbb::blocked_range2d< RowValue, ColValue > Class Template Reference
+
+
+ +

A 2-dimensional range that models the Range concept. + More...

+ +

#include <blocked_range2d.h>

+ + + + + + + +

+Public Types

+typedef blocked_range< RowValue > row_range_type
 Type for size of an iteration range.
 
+typedef blocked_range< ColValue > col_range_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

blocked_range2d (RowValue row_begin, RowValue row_end, typename row_range_type::size_type row_grainsize, ColValue col_begin, ColValue col_end, typename col_range_type::size_type col_grainsize)
 
blocked_range2d (RowValue row_begin, RowValue row_end, ColValue col_begin, ColValue col_end)
 
+bool empty () const
 True if range is empty.
 
+bool is_divisible () const
 True if range is divisible into two pieces.
 
blocked_range2d (blocked_range2d &r, split)
 
blocked_range2d (blocked_range2d &r, proportional_split &proportion)
 
+template<typename Split >
void do_split (blocked_range2d &r, Split &split_obj)
 
+const row_range_typerows () const
 The rows of the iteration space.
 
+const col_range_typecols () const
 The columns of the iteration space.
 
+ + + + +

+Static Public Attributes

+static const bool is_splittable_in_proportion = true
 Static field to support proportional split.
 
+

Detailed Description

+

template<typename RowValue, typename ColValue = RowValue>
+class tbb::blocked_range2d< RowValue, ColValue >

+ +

A 2-dimensional range that models the Range concept.

+

The documentation for this class was generated from the following file:
    +
  • blocked_range2d.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00028.html b/doc/html/a00028.html new file mode 100644 index 0000000000..f9770260dc --- /dev/null +++ b/doc/html/a00028.html @@ -0,0 +1,131 @@ + + + + + + +tbb::blocked_range3d< PageValue, RowValue, ColValue > Class Template Reference + + + + + + + +
+ +
+
tbb::blocked_range3d< PageValue, RowValue, ColValue > Class Template Reference
+
+
+ +

A 3-dimensional range that models the Range concept. + More...

+ +

#include <blocked_range3d.h>

+ + + + + + + + + +

+Public Types

+typedef blocked_range< PageValue > page_range_type
 Type for size of an iteration range.
 
+typedef blocked_range< RowValue > row_range_type
 
+typedef blocked_range< ColValue > col_range_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

blocked_range3d (PageValue page_begin, PageValue page_end, RowValue row_begin, RowValue row_end, ColValue col_begin, ColValue col_end)
 
blocked_range3d (PageValue page_begin, PageValue page_end, typename page_range_type::size_type page_grainsize, RowValue row_begin, RowValue row_end, typename row_range_type::size_type row_grainsize, ColValue col_begin, ColValue col_end, typename col_range_type::size_type col_grainsize)
 
+bool empty () const
 True if range is empty.
 
+bool is_divisible () const
 True if range is divisible into two pieces.
 
blocked_range3d (blocked_range3d &r, split)
 
blocked_range3d (blocked_range3d &r, proportional_split &proportion)
 
+template<typename Split >
void do_split (blocked_range3d &r, Split &split_obj)
 
+const page_range_typepages () const
 The pages of the iteration space.
 
+const row_range_typerows () const
 The rows of the iteration space.
 
+const col_range_typecols () const
 The columns of the iteration space.
 
+ + + + +

+Static Public Attributes

+static const bool is_splittable_in_proportion = true
 Static field to support proportional split.
 
+

Detailed Description

+

template<typename PageValue, typename RowValue = PageValue, typename ColValue = RowValue>
+class tbb::blocked_range3d< PageValue, RowValue, ColValue >

+ +

A 3-dimensional range that models the Range concept.

+

The documentation for this class was generated from the following file:
    +
  • blocked_range3d.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00029.html b/doc/html/a00029.html new file mode 100644 index 0000000000..2f31755e52 --- /dev/null +++ b/doc/html/a00029.html @@ -0,0 +1,56 @@ + + + + + + +tbb::flow::interface8::internal::broadcast_cache< T, M > Class Template Reference + + + + + + +
+ + + + + +
+
+
+
tbb::flow::interface8::internal::broadcast_cache< T, M > Class Template Reference
+
+
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00030.html b/doc/html/a00030.html new file mode 100644 index 0000000000..b42b0b098b --- /dev/null +++ b/doc/html/a00030.html @@ -0,0 +1,291 @@ + + + + + + +tbb::flow::interface8::broadcast_node< T > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::broadcast_node< T > Class Template Reference
+
+
+ +

Forwards messages of type T to all successors. + More...

+ +

#include <flow_graph.h>

+
+Inheritance diagram for tbb::flow::interface8::broadcast_node< T >:
+
+
+ + +tbb::flow::interface8::graph_node +tbb::flow::interface8::receiver< T > +tbb::flow::interface8::sender< T > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef T input_type
 
+typedef T output_type
 
+typedef sender< input_typepredecessor_type
 
+typedef receiver< output_typesuccessor_type
 
+typedef receiver< input_type >
+::predecessor_list_type 
predecessor_list_type
 
+typedef sender< output_type >
+::successor_list_type 
successor_list_type
 
+typedef sender< T >
+::built_successors_type 
built_successors_type
 
+typedef receiver< T >
+::built_predecessors_type 
built_predecessors_type
 
- Public Types inherited from tbb::flow::interface8::receiver< T >
+typedef T input_type
 The input type of this receiver.
 
+typedef sender< T > predecessor_type
 The predecessor type for this node.
 
+typedef
+internal::edge_container
+< predecessor_type
built_predecessors_type
 
+typedef
+built_predecessors_type::edge_list_type 
predecessor_list_type
 
- Public Types inherited from tbb::flow::interface8::sender< T >
+typedef T output_type
 The output type of this sender.
 
+typedef receiver< T > successor_type
 The successor type for this node.
 
+typedef
+internal::edge_container
+< successor_type
built_successors_type
 interface to record edges for traversal & deletion
 
+typedef
+built_successors_type::edge_list_type 
successor_list_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

broadcast_node (graph &g)
 
broadcast_node (const broadcast_node &src)
 
+void set_name (const char *name)
 
+virtual bool register_successor (receiver< T > &r)
 Adds a successor.
 
+virtual bool remove_successor (receiver< T > &r)
 Removes s as a successor.
 
+built_successors_typebuilt_successors ()
 
+void internal_add_built_successor (successor_type &r)
 
+void internal_delete_built_successor (successor_type &r)
 
+size_t successor_count ()
 
+void copy_successors (successor_list_type &v)
 
+built_predecessors_typebuilt_predecessors ()
 
+void internal_add_built_predecessor (predecessor_type &p)
 
+void internal_delete_built_predecessor (predecessor_type &p)
 
+size_t predecessor_count ()
 
+void copy_predecessors (predecessor_list_type &v)
 
+void extract ()
 
- Public Member Functions inherited from tbb::flow::interface8::graph_node
graph_node (graph &g)
 
- Public Member Functions inherited from tbb::flow::interface8::receiver< T >
+virtual ~receiver ()
 Destructor.
 
+bool try_put (const T &t)
 Put an item to the receiver.
 
+virtual bool register_predecessor (predecessor_type &)
 Add a predecessor to the node.
 
+virtual bool remove_predecessor (predecessor_type &)
 Remove a predecessor from the node.
 
+virtual void copy_predecessors (predecessor_list_type &)=0
 
- Public Member Functions inherited from tbb::flow::interface8::sender< T >
+virtual bool try_get (T &)
 Request an item from the sender.
 
+virtual bool try_reserve (T &)
 Reserves an item in the sender.
 
+virtual bool try_release ()
 Releases the reserved item.
 
+virtual bool try_consume ()
 Consumes the reserved item.
 
+ + + + + + + + + + + +

+Protected Member Functions

+task * try_put_task (const T &t)
 build a task to run the successor if possible. Default is old behavior.
 
+void reset_receiver (reset_flags)
 
+void reset_node (reset_flags f)
 
- Protected Member Functions inherited from tbb::flow::interface8::receiver< T >
+virtual bool is_continue_receiver ()
 
+ + + + + + + + + + +

+Friends

+template<typename R , typename B >
class run_and_put_task
 
+template<typename X , typename Y >
class internal::broadcast_cache
 
+template<typename X , typename Y >
class internal::round_robin_cache
 
+ + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from tbb::flow::interface8::graph_node
+graphmy_graph
 
+graph_nodenext
 
+graph_nodeprev
 
+

Detailed Description

+

template<typename T>
+class tbb::flow::interface8::broadcast_node< T >

+ +

Forwards messages of type T to all successors.

+

The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00030.png b/doc/html/a00030.png new file mode 100644 index 0000000000..a7f7e8e615 Binary files /dev/null and b/doc/html/a00030.png differ diff --git a/doc/html/a00031.html b/doc/html/a00031.html new file mode 100644 index 0000000000..465a573530 --- /dev/null +++ b/doc/html/a00031.html @@ -0,0 +1,96 @@ + + + + + + +tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor Class Reference + + + + + + + +
+ +
+
tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor Class Reference
+
+
+ +

bucket accessor is to find, rehash, acquire a lock, and access a bucket + More...

+ +

#include <concurrent_hash_map.h>

+
+Inheritance diagram for tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor:
+
+
+ + + +
+ + + + + + + + + + + + + +

+Public Member Functions

bucket_accessor (concurrent_hash_map *base, const hashcode_t h, bool writer=false)
 
+void acquire (concurrent_hash_map *base, const hashcode_t h, bool writer=false)
 find a bucket by masked hashcode, optionally rehash, and acquire the lock
 
+bool is_writer ()
 check whether bucket is locked for write
 
+bucket * operator() ()
 get bucket pointer
 
+

Detailed Description

+

template<typename Key, typename T, typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >>
+class tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor

+ +

bucket accessor is to find, rehash, acquire a lock, and access a bucket

+

The documentation for this class was generated from the following file:
    +
  • concurrent_hash_map.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00031.png b/doc/html/a00031.png new file mode 100644 index 0000000000..9dea0c02f2 Binary files /dev/null and b/doc/html/a00031.png differ diff --git a/doc/html/a00032.html b/doc/html/a00032.html new file mode 100644 index 0000000000..c9c8a896c5 --- /dev/null +++ b/doc/html/a00032.html @@ -0,0 +1,614 @@ + + + + + + +tbb::flow::interface8::buffer_node< T, A > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::buffer_node< T, A > Class Template Reference
+
+
+ +

Forwards messages in arbitrary order. + More...

+ +

#include <flow_graph.h>

+
+Inheritance diagram for tbb::flow::interface8::buffer_node< T, A >:
+
+
+ + +tbb::flow::interface8::graph_node +tbb::flow::interface8::receiver< T > +tbb::flow::interface8::sender< T > +tbb::flow::interface8::priority_queue_node< T, Compare, A > +tbb::flow::interface8::queue_node< T, A > +tbb::flow::interface8::sequencer_node< T, A > + +
+ + + + +

+Classes

class  buffer_operation
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef T input_type
 
+typedef T output_type
 
+typedef sender< input_typepredecessor_type
 
+typedef receiver< output_typesuccessor_type
 
+typedef buffer_node< T, A > class_type
 
+typedef receiver< input_type >
+::predecessor_list_type 
predecessor_list_type
 
+typedef sender< output_type >
+::successor_list_type 
successor_list_type
 
- Public Types inherited from tbb::flow::interface8::receiver< T >
+typedef T input_type
 The input type of this receiver.
 
+typedef sender< T > predecessor_type
 The predecessor type for this node.
 
+typedef
+internal::edge_container
+< predecessor_type
built_predecessors_type
 
+typedef
+built_predecessors_type::edge_list_type 
predecessor_list_type
 
- Public Types inherited from tbb::flow::interface8::sender< T >
+typedef T output_type
 The output type of this sender.
 
+typedef receiver< T > successor_type
 The successor type for this node.
 
+typedef
+internal::edge_container
+< successor_type
built_successors_type
 interface to record edges for traversal & deletion
 
+typedef
+built_successors_type::edge_list_type 
successor_list_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

buffer_node (graph &g)
 Constructor.
 
buffer_node (const buffer_node &src)
 Copy constructor.
 
+void set_name (const char *name)
 
bool register_successor (successor_type &r)
 Adds a new successor. More...
 
+void internal_add_built_successor (successor_type &r)
 
+void internal_delete_built_successor (successor_type &r)
 
+void internal_add_built_predecessor (predecessor_type &p)
 
+void internal_delete_built_predecessor (predecessor_type &p)
 
+size_t predecessor_count ()
 
+size_t successor_count ()
 
+void copy_predecessors (predecessor_list_type &v)
 
+void copy_successors (successor_list_type &v)
 
bool remove_successor (successor_type &r)
 Removes a successor. More...
 
bool try_get (T &v)
 Request an item from the buffer_node. More...
 
bool try_reserve (T &v)
 Reserves an item. More...
 
bool try_release ()
 Release a reserved item. More...
 
bool try_consume ()
 Consumes a reserved item. More...
 
+void extract ()
 
- Public Member Functions inherited from tbb::flow::interface8::graph_node
graph_node (graph &g)
 
- Public Member Functions inherited from tbb::flow::interface8::receiver< T >
+virtual ~receiver ()
 Destructor.
 
+bool try_put (const T &t)
 Put an item to the receiver.
 
+virtual bool register_predecessor (predecessor_type &)
 Add a predecessor to the node.
 
+virtual bool remove_predecessor (predecessor_type &)
 Remove a predecessor from the node.
 
+virtual void copy_predecessors (predecessor_list_type &)=0
 
+ + + + + + + + + + + + + +

+Protected Types

enum  op_type {
+  reg_succ, +rem_succ, +req_item, +res_item, +
+  rel_res, +con_res, +put_item, +try_fwd_task, +
+  add_blt_succ, +del_blt_succ, +add_blt_pred, +del_blt_pred, +
+  blt_succ_cnt, +blt_pred_cnt, +blt_succ_cpy, +blt_pred_cpy +
+ }
 
enum  op_stat { WAIT =0, +SUCCEEDED, +FAILED + }
 
+typedef size_t size_type
 
+typedef
+internal::aggregating_functor
+< class_type, buffer_operation
handler_type
 
+typedef sender< T >
+::built_successors_type 
built_successors_type
 
+typedef receiver< T >
+::built_predecessors_type 
built_predecessors_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void handle_operations (buffer_operation *op_list)
 
+task * grab_forwarding_task (buffer_operation &op_data)
 
+bool enqueue_forwarding_task (buffer_operation &op_data)
 
+virtual task * forward_task ()
 This is executed by an enqueued task, the "forwarder".
 
+virtual void internal_reg_succ (buffer_operation *op)
 Register successor.
 
+virtual void internal_rem_succ (buffer_operation *op)
 Remove successor.
 
+built_successors_typebuilt_successors ()
 
+virtual void internal_add_built_succ (buffer_operation *op)
 
+virtual void internal_del_built_succ (buffer_operation *op)
 
+built_predecessors_typebuilt_predecessors ()
 
+virtual void internal_add_built_pred (buffer_operation *op)
 
+virtual void internal_del_built_pred (buffer_operation *op)
 
+virtual void internal_succ_cnt (buffer_operation *op)
 
+virtual void internal_pred_cnt (buffer_operation *op)
 
+virtual void internal_copy_succs (buffer_operation *op)
 
+virtual void internal_copy_preds (buffer_operation *op)
 
+virtual void internal_forward_task (buffer_operation *op)
 Tries to forward valid items to successors.
 
+virtual void internal_push (buffer_operation *op)
 
+virtual void internal_pop (buffer_operation *op)
 
+virtual void internal_reserve (buffer_operation *op)
 
+virtual void internal_consume (buffer_operation *op)
 
+virtual void internal_release (buffer_operation *op)
 
+task * try_put_task (const T &t)
 receive an item, return a task *if possible
 
+void reset_receiver (reset_flags)
 
+void reset_node (reset_flags f)
 
- Protected Member Functions inherited from tbb::flow::interface8::receiver< T >
+virtual bool is_continue_receiver ()
 
+ + + + + + + + + + + + + + + + +

+Protected Attributes

+internal::round_robin_cache< T,
+null_rw_mutex
my_successors
 
+internal::edge_container
+< predecessor_type
my_built_predecessors
 
+bool forwarder_busy
 
+internal::aggregator
+< handler_type,
+buffer_operation
my_aggregator
 
- Protected Attributes inherited from tbb::flow::interface8::graph_node
+graphmy_graph
 
+graph_nodenext
 
+graph_nodeprev
 
+ + + + + + + + + + + + + + +

+Friends

+class internal::forward_task_bypass< buffer_node< T, A > >
 
+class internal::aggregating_functor< class_type, buffer_operation >
 
+template<typename R , typename B >
class run_and_put_task
 
+template<typename X , typename Y >
class internal::broadcast_cache
 
+template<typename X , typename Y >
class internal::round_robin_cache
 
+

Detailed Description

+

template<typename T, typename A = cache_aligned_allocator<T>>
+class tbb::flow::interface8::buffer_node< T, A >

+ +

Forwards messages in arbitrary order.

+

Member Function Documentation

+ +
+
+
+template<typename T, typename A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
bool tbb::flow::interface8::buffer_node< T, A >::register_successor (successor_typer)
+
+inlinevirtual
+
+ +

Adds a new successor.

+

Adds successor r to the list of successors; may forward tasks.

+ +

Implements tbb::flow::interface8::sender< T >.

+ +
+
+ +
+
+
+template<typename T, typename A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
bool tbb::flow::interface8::buffer_node< T, A >::remove_successor (successor_typer)
+
+inlinevirtual
+
+ +

Removes a successor.

+

Removes successor r from the list of successors. It also calls r.remove_predecessor(*this) to remove this node as a predecessor.

+ +

Implements tbb::flow::interface8::sender< T >.

+ +

References tbb::flow::interface8::receiver< T >::remove_predecessor().

+ +
+
+ +
+
+
+template<typename T, typename A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + +
bool tbb::flow::interface8::buffer_node< T, A >::try_consume ()
+
+inlinevirtual
+
+ +

Consumes a reserved item.

+

true = item is removed from sender and reservation removed

+ +

Reimplemented from tbb::flow::interface8::sender< T >.

+ +
+
+ +
+
+
+template<typename T, typename A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
bool tbb::flow::interface8::buffer_node< T, A >::try_get (T & v)
+
+inlinevirtual
+
+ +

Request an item from the buffer_node.

+

true = v contains the returned item
+ false = no item has been returned

+ +

Reimplemented from tbb::flow::interface8::sender< T >.

+ +
+
+ +
+
+
+template<typename T, typename A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + +
bool tbb::flow::interface8::buffer_node< T, A >::try_release ()
+
+inlinevirtual
+
+ +

Release a reserved item.

+

true = item has been released and so remains in sender

+ +

Reimplemented from tbb::flow::interface8::sender< T >.

+ +
+
+ +
+
+
+template<typename T, typename A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
bool tbb::flow::interface8::buffer_node< T, A >::try_reserve (T & v)
+
+inlinevirtual
+
+ +

Reserves an item.

+

false = no item can be reserved
+ true = an item is reserved

+ +

Reimplemented from tbb::flow::interface8::sender< T >.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00032.png b/doc/html/a00032.png new file mode 100644 index 0000000000..012b770474 Binary files /dev/null and b/doc/html/a00032.png differ diff --git a/doc/html/a00033.html b/doc/html/a00033.html new file mode 100644 index 0000000000..0bdf176300 --- /dev/null +++ b/doc/html/a00033.html @@ -0,0 +1,103 @@ + + + + + + +tbb::flow::interface8::buffer_node< T, A >::buffer_operation Class Reference + + + + + + + +
+ +
+
tbb::flow::interface8::buffer_node< T, A >::buffer_operation Class Reference
+
+
+
+Inheritance diagram for tbb::flow::interface8::buffer_node< T, A >::buffer_operation:
+
+
+ + + +
+ + + + +

+Public Member Functions

buffer_operation (const T &e, op_type t)
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

+char type
 
+task * ltask
 
+union {
   input_type *   elem
 
   successor_type *   r
 
   predecessor_type *   p
 
   size_t   cnt_val
 
   successor_list_type *   svec
 
   predecessor_list_type *   pvec
 
}; 
 
+T * elem
 
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00033.png b/doc/html/a00033.png new file mode 100644 index 0000000000..ec16bbca92 Binary files /dev/null and b/doc/html/a00033.png differ diff --git a/doc/html/a00034.html b/doc/html/a00034.html new file mode 100644 index 0000000000..66205e0532 --- /dev/null +++ b/doc/html/a00034.html @@ -0,0 +1,147 @@ + + + + + + +tbb::cache_aligned_allocator< T > Class Template Reference + + + + + + + +
+ +
+
tbb::cache_aligned_allocator< T > Class Template Reference
+
+
+ +

Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. + More...

+ +

#include <cache_aligned_allocator.h>

+ + + + +

+Classes

struct  rebind
 
+ + + + + + + + + + + + + + + +

+Public Types

+typedef
+internal::allocator_type< T >
+::value_type 
value_type
 
+typedef value_type * pointer
 
+typedef const value_type * const_pointer
 
+typedef value_type & reference
 
+typedef const value_type & const_reference
 
+typedef size_t size_type
 
+typedef ptrdiff_t difference_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

cache_aligned_allocator (const cache_aligned_allocator &) throw ()
 
+template<typename U >
 cache_aligned_allocator (const cache_aligned_allocator< U > &) throw ()
 
+pointer address (reference x) const
 
+const_pointer address (const_reference x) const
 
+pointer allocate (size_type n, const void *hint=0)
 Allocate space for n objects, starting on a cache/sector line.
 
+void deallocate (pointer p, size_type)
 Free block of memory that starts on a cache line.
 
+size_type max_size () const throw ()
 Largest value for which method allocate might succeed.
 
+template<typename U , typename... Args>
void construct (U *p, Args &&...args)
 Copy-construct value at location pointed to by p.
 
+void construct (pointer p, value_type &&value)
 
+void construct (pointer p, const value_type &value)
 
+void destroy (pointer p)
 Destroy value at location pointed to by p.
 
+

Detailed Description

+

template<typename T>
+class tbb::cache_aligned_allocator< T >

+ +

Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.

+

The members are ordered the same way they are in section 20.4.1 of the ISO C++ standard.

+

The documentation for this class was generated from the following file:
    +
  • cache_aligned_allocator.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00035.html b/doc/html/a00035.html new file mode 100644 index 0000000000..0232e2f536 --- /dev/null +++ b/doc/html/a00035.html @@ -0,0 +1,88 @@ + + + + + + +tbb::cache_aligned_allocator< void > Class Template Reference + + + + + + + +
+ +
+
tbb::cache_aligned_allocator< void > Class Template Reference
+
+
+ +

Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. + More...

+ +

#include <cache_aligned_allocator.h>

+ + + + +

+Classes

struct  rebind
 
+ + + + + + + +

+Public Types

+typedef void * pointer
 
+typedef const void * const_pointer
 
+typedef void value_type
 
+

Detailed Description

+

template<>
+class tbb::cache_aligned_allocator< void >

+ +

Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.

+

The documentation for this class was generated from the following file:
    +
  • cache_aligned_allocator.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00036.html b/doc/html/a00036.html new file mode 100644 index 0000000000..2cf18e6799 --- /dev/null +++ b/doc/html/a00036.html @@ -0,0 +1,76 @@ + + + + + + +tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::call_clear_on_leave Struct Reference + + + + + + + +
+ +
+
tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::call_clear_on_leave Struct Reference
+
+
+ + + + + + +

+Public Member Functions

call_clear_on_leave (concurrent_hash_map *a_ch_map)
 
+void dismiss ()
 
+ + + +

+Public Attributes

+concurrent_hash_mapmy_ch_map
 
+
The documentation for this struct was generated from the following file:
    +
  • concurrent_hash_map.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00037.html b/doc/html/a00037.html new file mode 100644 index 0000000000..27add3336a --- /dev/null +++ b/doc/html/a00037.html @@ -0,0 +1,214 @@ + + + + + + +tbb::captured_exception Class Reference + + + + + + + +
+ +
+
tbb::captured_exception Class Reference
+
+
+ +

This class is used by TBB to propagate information about unhandled exceptions into the root thread. + More...

+ +

#include <tbb_exception.h>

+
+Inheritance diagram for tbb::captured_exception:
+
+
+ + +tbb::tbb_exception + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

captured_exception (const captured_exception &src)
 
captured_exception (const char *name_, const char *info)
 
+captured_exceptionoperator= (const captured_exception &src)
 
captured_exception
+*__TBB_EXPORTED_METHOD 
move () throw ()
 Creates and returns pointer to the deep copy of this exception object. More...
 
void __TBB_EXPORTED_METHOD destroy () throw ()
 Destroys objects created by the move() method. More...
 
void throw_self ()
 Throws this exception object. More...
 
+const char *__TBB_EXPORTED_METHOD name () const throw ()
 Returns RTTI name of the originally intercepted exception.
 
+const char *__TBB_EXPORTED_METHOD what () const throw ()
 Returns the result of originally intercepted exception's what() method.
 
+void __TBB_EXPORTED_METHOD set (const char *name, const char *info) throw ()
 
+void __TBB_EXPORTED_METHOD clear () throw ()
 
- Public Member Functions inherited from tbb::tbb_exception
void operator delete (void *p)
 
+

Detailed Description

+

This class is used by TBB to propagate information about unhandled exceptions into the root thread.

+

Exception of this type is thrown by TBB in the root thread (thread that started a parallel algorithm ) if an unhandled exception was intercepted during the algorithm execution in one of the workers.

+
See Also
tbb::tbb_exception
+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + + + + + + +
void __TBB_EXPORTED_METHOD tbb::captured_exception::destroy ()
throw (
)
+
+virtual
+
+ +

Destroys objects created by the move() method.

+

Frees memory and calls destructor for this exception object. Can and must be used only on objects created by the move method.

+ +

Implements tbb::tbb_exception.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + +
captured_exception* __TBB_EXPORTED_METHOD tbb::captured_exception::move ()
throw (
)
+
+virtual
+
+ +

Creates and returns pointer to the deep copy of this exception object.

+

Move semantics is allowed.

+ +

Implements tbb::tbb_exception.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
void tbb::captured_exception::throw_self ()
+
+inlinevirtual
+
+ +

Throws this exception object.

+

Make sure that if you have several levels of derivation from this interface you implement or override this method on the most derived level. The implementation is as simple as "throw *this;". Failure to do this will result in exception of a base class type being thrown.

+ +

Implements tbb::tbb_exception.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • tbb_exception.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00037.png b/doc/html/a00037.png new file mode 100644 index 0000000000..131abf604d Binary files /dev/null and b/doc/html/a00037.png differ diff --git a/doc/html/a00038.html b/doc/html/a00038.html new file mode 100644 index 0000000000..f4bcab3f58 --- /dev/null +++ b/doc/html/a00038.html @@ -0,0 +1,104 @@ + + + + + + +tbb::combinable< T > Class Template Reference + + + + + + + +
+ +
+
tbb::combinable< T > Class Template Reference
+
+
+ +

Thread-local storage with optional reduction. + More...

+ +

#include <combinable.h>

+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<typename finit >
 combinable (finit _finit)
 
~combinable ()
 destructor
 
combinable (const combinable &other)
 
+combinableoperator= (const combinable &other)
 
+void clear ()
 
+T & local ()
 
+T & local (bool &exists)
 
+template<typename combine_func_t >
combine (combine_func_t f_combine)
 
+template<typename combine_func_t >
void combine_each (combine_func_t f_combine)
 
+

Detailed Description

+

template<typename T>
+class tbb::combinable< T >

+ +

Thread-local storage with optional reduction.

+

The documentation for this class was generated from the following file:
    +
  • combinable.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00039.html b/doc/html/a00039.html new file mode 100644 index 0000000000..3ffb18efe9 --- /dev/null +++ b/doc/html/a00039.html @@ -0,0 +1,56 @@ + + + + + + +tbb::flow::interface8::composite_node< InputTuple, OutputTuple > Class Template Reference + + + + + + + +
+
+
tbb::flow::interface8::composite_node< InputTuple, OutputTuple > Class Template Reference
+
+
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00040.html b/doc/html/a00040.html new file mode 100644 index 0000000000..6864a3a4e5 --- /dev/null +++ b/doc/html/a00040.html @@ -0,0 +1,146 @@ + + + + + + +tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> > Class Template Reference
+
+
+
+Inheritance diagram for tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >:
+
+
+ + +tbb::flow::interface8::graph_node + +
+ + + + + + +

+Public Types

+typedef tbb::flow::tuple
+< receiver< InputTypes > &... > 
input_ports_type
 
+typedef tbb::flow::tuple
+< sender< OutputTypes > &... > 
output_ports_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

composite_node (graph &g, const char *type_name="composite_node")
 
composite_node (graph &g)
 
+template<typename T1 , typename T2 >
void set_external_ports (T1 &&input_ports_tuple, T2 &&output_ports_tuple)
 
+template<typename... NodeTypes>
void add_visible_nodes (const NodeTypes &...n)
 
+template<typename... NodeTypes>
void add_nodes (const NodeTypes &...n)
 
+template<typename... Nodes>
void add_nodes (Nodes &...)
 
+template<typename... Nodes>
void add_visible_nodes (Nodes &...)
 
+void set_name (const char *name)
 
+input_ports_type input_ports ()
 
+output_ports_type output_ports ()
 
+void extract ()
 
- Public Member Functions inherited from tbb::flow::interface8::graph_node
graph_node (graph &g)
 
+ + + +

+Protected Member Functions

+void reset_node (reset_flags)
 
+ + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from tbb::flow::interface8::graph_node
+graphmy_graph
 
+graph_nodenext
 
+graph_nodeprev
 
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00040.png b/doc/html/a00040.png new file mode 100644 index 0000000000..e2672430d7 Binary files /dev/null and b/doc/html/a00040.png differ diff --git a/doc/html/a00041.html b/doc/html/a00041.html new file mode 100644 index 0000000000..e4e98de26a --- /dev/null +++ b/doc/html/a00041.html @@ -0,0 +1,139 @@ + + + + + + +tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> > Class Template Reference
+
+
+
+Inheritance diagram for tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >:
+
+
+ + +tbb::flow::interface8::graph_node + +
+ + + + +

+Public Types

+typedef tbb::flow::tuple
+< receiver< InputTypes > &... > 
input_ports_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

composite_node (graph &g, const char *type_name="composite_node")
 
composite_node (graph &g)
 
+template<typename T >
void set_external_ports (T &&input_ports_tuple)
 
+template<typename... NodeTypes>
void add_visible_nodes (const NodeTypes &...n)
 
+template<typename... NodeTypes>
void add_nodes (const NodeTypes &...n)
 
+template<typename... Nodes>
void add_nodes (Nodes &...)
 
+template<typename... Nodes>
void add_visible_nodes (Nodes &...)
 
+void set_name (const char *name)
 
+input_ports_type input_ports ()
 
+void extract ()
 
- Public Member Functions inherited from tbb::flow::interface8::graph_node
graph_node (graph &g)
 
+ + + +

+Protected Member Functions

+void reset_node (reset_flags)
 
+ + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from tbb::flow::interface8::graph_node
+graphmy_graph
 
+graph_nodenext
 
+graph_nodeprev
 
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00041.png b/doc/html/a00041.png new file mode 100644 index 0000000000..e22b5a1acb Binary files /dev/null and b/doc/html/a00041.png differ diff --git a/doc/html/a00042.html b/doc/html/a00042.html new file mode 100644 index 0000000000..3c9cc39cd4 --- /dev/null +++ b/doc/html/a00042.html @@ -0,0 +1,139 @@ + + + + + + +tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> > Class Template Reference
+
+
+
+Inheritance diagram for tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >:
+
+
+ + +tbb::flow::interface8::graph_node + +
+ + + + +

+Public Types

+typedef tbb::flow::tuple
+< sender< OutputTypes > &... > 
output_ports_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

composite_node (graph &g, const char *type_name="composite_node")
 
composite_node (graph &g)
 
+template<typename T >
void set_external_ports (T &&output_ports_tuple)
 
+template<typename... NodeTypes>
void add_visible_nodes (const NodeTypes &...n)
 
+template<typename... NodeTypes>
void add_nodes (const NodeTypes &...n)
 
+template<typename... Nodes>
void add_nodes (Nodes &...)
 
+template<typename... Nodes>
void add_visible_nodes (Nodes &...)
 
+void set_name (const char *name)
 
+output_ports_type output_ports ()
 
+void extract ()
 
- Public Member Functions inherited from tbb::flow::interface8::graph_node
graph_node (graph &g)
 
+ + + +

+Protected Member Functions

+void reset_node (reset_flags)
 
+ + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from tbb::flow::interface8::graph_node
+graphmy_graph
 
+graph_nodenext
 
+graph_nodeprev
 
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00042.png b/doc/html/a00042.png new file mode 100644 index 0000000000..c8701d6fd9 Binary files /dev/null and b/doc/html/a00042.png differ diff --git a/doc/html/a00043.html b/doc/html/a00043.html new file mode 100644 index 0000000000..b9790f6c91 --- /dev/null +++ b/doc/html/a00043.html @@ -0,0 +1,56 @@ + + + + + + +tbb::interface6::internal::concrete_filter< T, U, Body > Class Template Reference + + + + + + +
+ + + + + +
+
+
+
tbb::interface6::internal::concrete_filter< T, U, Body > Class Template Reference
+
+
+
The documentation for this class was generated from the following file:
    +
  • pipeline.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00044.html b/doc/html/a00044.html new file mode 100644 index 0000000000..b36323d005 --- /dev/null +++ b/doc/html/a00044.html @@ -0,0 +1,411 @@ + + + + + + +tbb::concurrent_bounded_queue< T, A > Class Template Reference + + + + + + + +
+ +
+
tbb::concurrent_bounded_queue< T, A > Class Template Reference
+
+
+ +

A high-performance thread-safe blocking concurrent bounded queue. + More...

+ +

#include <concurrent_queue.h>

+
+Inheritance diagram for tbb::concurrent_bounded_queue< T, A >:
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef T value_type
 Element type in the queue.
 
+typedef A allocator_type
 Allocator type.
 
+typedef T & reference
 Reference type.
 
+typedef const T & const_reference
 Const reference type.
 
typedef std::ptrdiff_t size_type
 Integral type for representing size of the queue. More...
 
+typedef std::ptrdiff_t difference_type
 Difference type for iterator.
 
+typedef
+internal::concurrent_queue_iterator
+< concurrent_bounded_queue, T > 
iterator
 
+typedef
+internal::concurrent_queue_iterator
+< concurrent_bounded_queue,
+const T > 
const_iterator
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

concurrent_bounded_queue (const allocator_type &a=allocator_type())
 Construct empty queue.
 
concurrent_bounded_queue (const concurrent_bounded_queue &src, const allocator_type &a=allocator_type())
 Copy constructor.
 
concurrent_bounded_queue (concurrent_bounded_queue &&src)
 Move constructors.
 
concurrent_bounded_queue (concurrent_bounded_queue &&src, const allocator_type &a)
 
+template<typename InputIterator >
 concurrent_bounded_queue (InputIterator begin, InputIterator end, const allocator_type &a=allocator_type())
 [begin,end) constructor
 
~concurrent_bounded_queue ()
 Destroy queue.
 
+void push (const T &source)
 Enqueue an item at tail of queue.
 
+void push (T &&source)
 Move an item at tail of queue.
 
+template<typename... Arguments>
void emplace (Arguments &&...args)
 
void pop (T &destination)
 Dequeue item from head of queue. More...
 
+void abort ()
 Abort all pending queue operations.
 
bool try_push (const T &source)
 Enqueue an item at tail of queue if queue is not already full. More...
 
bool try_push (T &&source)
 Move an item at tail of queue if queue is not already full. More...
 
+template<typename... Arguments>
bool try_emplace (Arguments &&...args)
 
bool try_pop (T &destination)
 Attempt to dequeue an item from head of queue. More...
 
size_type size () const
 Return number of pushes minus number of pops. More...
 
+bool empty () const
 Equivalent to size()<=0.
 
+size_type capacity () const
 Maximum number of allowed elements.
 
void set_capacity (size_type new_capacity)
 Set the capacity. More...
 
+allocator_type get_allocator () const
 return allocator object
 
+void clear ()
 clear the queue. not thread-safe.
 
+iterator unsafe_begin ()
 
+iterator unsafe_end ()
 
+const_iterator unsafe_begin () const
 
+const_iterator unsafe_end () const
 
+ + + + +

+Friends

+template<typename Container , typename Value >
class internal::concurrent_queue_iterator
 
+

Detailed Description

+

template<typename T, class A = cache_aligned_allocator<T>>
+class tbb::concurrent_bounded_queue< T, A >

+ +

A high-performance thread-safe blocking concurrent bounded queue.

+

This is the pre-PPL TBB concurrent queue which supports boundedness and blocking semantics. Note that method names agree with the PPL-style concurrent queue. Multiple threads may each push and pop concurrently. Assignment construction is not allowed.

+

Member Typedef Documentation

+ +
+
+
+template<typename T , class A = cache_aligned_allocator<T>>
+ + + + +
typedef std::ptrdiff_t tbb::concurrent_bounded_queue< T, A >::size_type
+
+ +

Integral type for representing size of the queue.

+

Note that the size_type is a signed integral type. This is because the size can be negative if there are pending pops without corresponding pushes.

+ +
+
+

Member Function Documentation

+ +
+
+
+template<typename T , class A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
void tbb::concurrent_bounded_queue< T, A >::pop (T & destination)
+
+inline
+
+ +

Dequeue item from head of queue.

+

Block until an item becomes available, and then dequeue it.

+ +
+
+ +
+
+
+template<typename T , class A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
void tbb::concurrent_bounded_queue< T, A >::set_capacity (size_type new_capacity)
+
+inline
+
+ +

Set the capacity.

+

Setting the capacity to 0 causes subsequent try_push operations to always fail, and subsequent push operations to block forever.

+ +
+
+ +
+
+
+template<typename T , class A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + +
size_type tbb::concurrent_bounded_queue< T, A >::size () const
+
+inline
+
+ +

Return number of pushes minus number of pops.

+

Note that the result can be negative if there are pops waiting for the corresponding pushes. The result can also exceed capacity() if there are push operations in flight.

+ +
+
+ +
+
+
+template<typename T , class A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
bool tbb::concurrent_bounded_queue< T, A >::try_pop (T & destination)
+
+inline
+
+ +

Attempt to dequeue an item from head of queue.

+

Does not wait for item to become available. Returns true if successful; false otherwise.

+ +
+
+ +
+
+
+template<typename T , class A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
bool tbb::concurrent_bounded_queue< T, A >::try_push (const T & source)
+
+inline
+
+ +

Enqueue an item at tail of queue if queue is not already full.

+

Does not wait for queue to become not full. Returns true if item is pushed; false if queue was already full.

+ +
+
+ +
+
+
+template<typename T , class A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
bool tbb::concurrent_bounded_queue< T, A >::try_push (T && source)
+
+inline
+
+ +

Move an item at tail of queue if queue is not already full.

+

Does not wait for queue to become not full. Returns true if item is pushed; false if queue was already full.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • concurrent_queue.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00044.png b/doc/html/a00044.png new file mode 100644 index 0000000000..3dc03c3337 Binary files /dev/null and b/doc/html/a00044.png differ diff --git a/doc/html/a00045.html b/doc/html/a00045.html new file mode 100644 index 0000000000..edd57f095a --- /dev/null +++ b/doc/html/a00045.html @@ -0,0 +1,1089 @@ + + + + + + +tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A > Class Template Reference + + + + + + + +
+ +
+
tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A > Class Template Reference
+
+
+ +

Unordered map from Key to T. + More...

+ +

#include <concurrent_hash_map.h>

+
+Inheritance diagram for tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >:
+
+
+ + + +
+ + + + + + + + + + + + + + + + + +

+Classes

class  accessor
 Allows write access to elements and combines data access, locking, and garbage collection. More...
 
struct  accessor_not_used
 
class  bucket_accessor
 bucket accessor is to find, rehash, acquire a lock, and access a bucket More...
 
struct  call_clear_on_leave
 
class  const_accessor
 Combines data access, locking, and garbage collection. More...
 
struct  node
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef Key key_type
 
+typedef T mapped_type
 
+typedef std::pair< const Key, T > value_type
 
+typedef hash_map_base::size_type size_type
 
+typedef ptrdiff_t difference_type
 
+typedef value_type * pointer
 
+typedef const value_type * const_pointer
 
+typedef value_type & reference
 
+typedef const value_type & const_reference
 
+typedef
+internal::hash_map_iterator
+< concurrent_hash_map,
+value_type > 
iterator
 
+typedef
+internal::hash_map_iterator
+< concurrent_hash_map, const
+value_type > 
const_iterator
 
+typedef
+internal::hash_map_range
+< iterator > 
range_type
 
+typedef
+internal::hash_map_range
+< const_iterator > 
const_range_type
 
+typedef Allocator allocator_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

concurrent_hash_map (const allocator_type &a=allocator_type())
 Construct empty table.
 
concurrent_hash_map (size_type n, const allocator_type &a=allocator_type())
 Construct empty table with n preallocated buckets. This number serves also as initial concurrency level.
 
concurrent_hash_map (const concurrent_hash_map &table, const allocator_type &a=allocator_type())
 Copy constructor.
 
concurrent_hash_map (concurrent_hash_map &&table)
 Move constructor.
 
concurrent_hash_map (concurrent_hash_map &&table, const allocator_type &a)
 Move constructor.
 
+template<typename I >
 concurrent_hash_map (I first, I last, const allocator_type &a=allocator_type())
 Construction with copying iteration range and given allocator instance.
 
concurrent_hash_map (std::initializer_list< value_type > il, const allocator_type &a=allocator_type())
 Construct empty table with n preallocated buckets. This number serves also as initial concurrency level.
 
+concurrent_hash_mapoperator= (const concurrent_hash_map &table)
 Assignment.
 
+concurrent_hash_mapoperator= (concurrent_hash_map &&table)
 Move Assignment.
 
+concurrent_hash_mapoperator= (std::initializer_list< value_type > il)
 Assignment.
 
void rehash (size_type n=0)
 Rehashes and optionally resizes the whole table. More...
 
+void clear ()
 Clear table.
 
~concurrent_hash_map ()
 Clear table and destroy it.
 
+range_type range (size_type grainsize=1)
 
+const_range_type range (size_type grainsize=1) const
 
+iterator begin ()
 
+iterator end ()
 
+const_iterator begin () const
 
+const_iterator end () const
 
+std::pair< iterator, iterator > equal_range (const Key &key)
 
+std::pair< const_iterator,
+const_iterator > 
equal_range (const Key &key) const
 
+size_type size () const
 Number of items in table.
 
+bool empty () const
 True if size()==0.
 
+size_type max_size () const
 Upper bound on size.
 
+size_type bucket_count () const
 Returns the current number of buckets.
 
+allocator_type get_allocator () const
 return allocator object
 
+void swap (concurrent_hash_map &table)
 swap two instances. Iterators are invalidated
 
+size_type count (const Key &key) const
 Return count of items (0 or 1)
 
bool find (const_accessor &result, const Key &key) const
 Find item and acquire a read lock on the item. More...
 
bool find (accessor &result, const Key &key)
 Find item and acquire a write lock on the item. More...
 
bool insert (const_accessor &result, const Key &key)
 Insert item (if not already present) and acquire a read lock on the item. More...
 
bool insert (accessor &result, const Key &key)
 Insert item (if not already present) and acquire a write lock on the item. More...
 
bool insert (const_accessor &result, const value_type &value)
 Insert item by copying if there is no such key present already and acquire a read lock on the item. More...
 
bool insert (accessor &result, const value_type &value)
 Insert item by copying if there is no such key present already and acquire a write lock on the item. More...
 
bool insert (const value_type &value)
 Insert item by copying if there is no such key present already. More...
 
bool insert (const_accessor &result, value_type &&value)
 Insert item by copying if there is no such key present already and acquire a read lock on the item. More...
 
bool insert (accessor &result, value_type &&value)
 Insert item by copying if there is no such key present already and acquire a write lock on the item. More...
 
bool insert (value_type &&value)
 Insert item by copying if there is no such key present already. More...
 
template<typename... Args>
bool emplace (const_accessor &result, Args &&...args)
 Insert item by copying if there is no such key present already and acquire a read lock on the item. More...
 
template<typename... Args>
bool emplace (accessor &result, Args &&...args)
 Insert item by copying if there is no such key present already and acquire a write lock on the item. More...
 
template<typename... Args>
bool emplace (Args &&...args)
 Insert item by copying if there is no such key present already. More...
 
+template<typename I >
void insert (I first, I last)
 Insert range [first, last)
 
+void insert (std::initializer_list< value_type > il)
 Insert initializer list.
 
bool erase (const Key &key)
 Erase item. More...
 
bool erase (const_accessor &item_accessor)
 Erase item by const_accessor. More...
 
bool erase (accessor &item_accessor)
 Erase item by accessor. More...
 
+ + + +

+Protected Types

+typedef Allocator::template
+rebind< node >::other 
node_allocator_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+void delete_node (node_base *n)
 
+nodesearch_bucket (const key_type &key, bucket *b) const
 
+void rehash_bucket (bucket *b_new, const hashcode_t h)
 
+bool lookup (bool op_insert, const Key &key, const T *t, const_accessor *result, bool write, node *(*allocate_node)(node_allocator_type &, const Key &, const T *), node *tmp_n=0)
 Insert or find item and optionally acquire a lock on the item.
 
+template<typename Accessor >
bool generic_move_insert (Accessor &&result, value_type &&value)
 
+template<typename Accessor , typename... Args>
bool generic_emplace (Accessor &&result, Args &&...args)
 
+bool exclude (const_accessor &item_accessor)
 delete item by accessor
 
+template<typename I >
std::pair< I, I > internal_equal_range (const Key &key, I end) const
 Returns an iterator for an item defined by the key, or for the next item after it (if upper==true)
 
+void internal_copy (const concurrent_hash_map &source)
 Copy "source" to *this, where *this must start out empty.
 
+template<typename I >
void internal_copy (I first, I last)
 
const_pointer internal_fast_find (const Key &key) const
 Fast find when no concurrent erasure is used. For internal use inside TBB only! More...
 
+ + + + + + + + + + + + +

+Static Protected Member Functions

+static nodeallocate_node_copy_construct (node_allocator_type &allocator, const Key &key, const T *t)
 
+static nodeallocate_node_move_construct (node_allocator_type &allocator, const Key &key, const T *t)
 
+template<typename... Args>
static nodeallocate_node_emplace_construct (node_allocator_type &allocator, Args &&...args)
 
+static nodeallocate_node_default_construct (node_allocator_type &allocator, const Key &key, const T *)
 
+static nodedo_not_allocate_node (node_allocator_type &, const Key &, const T *)
 
+ + + + + +

+Protected Attributes

+node_allocator_type my_allocator
 
+HashCompare my_hash_compare
 
+ + + + + + + + + + + + + + + + + + + +

+Friends

+template<typename Container , typename Value >
class internal::hash_map_iterator
 
+template<typename I >
class internal::hash_map_range
 
+class const_accessor
 
+const_accessoraccessor_location (accessor_not_used const &)
 
+const_accessoraccessor_location (const_accessor &a)
 
+bool is_write_access_needed (accessor const &)
 
+bool is_write_access_needed (const_accessor const &)
 
+bool is_write_access_needed (accessor_not_used const &)
 
+

Detailed Description

+

template<typename Key, typename T, typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >>
+class tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >

+ +

Unordered map from Key to T.

+
concurrent_hash_map is associative container with concurrent access.
+
Compatibility
The class meets all Container Requirements from C++ Standard (See ISO/IEC 14882:2003(E), clause 23.1).
+
Exception Safety
    +
  • Hash function is not permitted to throw an exception. User-defined types Key and T are forbidden from throwing an exception in destructors.
  • +
  • If exception happens during insert() operations, it has no effect (unless exception raised by HashCompare::hash() function during grow_segment).
  • +
  • If exception happens during operator=() operation, the container can have a part of source items, and methods size() and empty() can return wrong results.
  • +
+
+
Changes since TBB 2.1
    +
  • Replaced internal algorithm and data structure. Patent is pending.
  • +
  • Added buckets number argument for constructor
  • +
+
+
Changes since TBB 2.0
    +
  • Fixed exception-safety
  • +
  • Added template argument for allocator
  • +
  • Added allocator argument in constructors
  • +
  • Added constructor from a range of iterators
  • +
  • Added several new overloaded insert() methods
  • +
  • Added get_allocator()
  • +
  • Added swap()
  • +
  • Added count()
  • +
  • Added overloaded erase(accessor &) and erase(const_accessor&)
  • +
  • Added equal_range() [const]
  • +
  • Added [const_]pointer, [const_]reference, and allocator_type types
  • +
  • Added global functions: operator==(), operator!=(), and swap()
  • +
+
+

Member Function Documentation

+ +
+
+
+template<typename Key , typename T , typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >>
+
+template<typename... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::emplace (const_accessorresult,
Args &&... args 
)
+
+inline
+
+ +

Insert item by copying if there is no such key present already and acquire a read lock on the item.

+

Returns true if item is new.

+ +
+
+ +
+
+
+template<typename Key , typename T , typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >>
+
+template<typename... Args>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::emplace (accessorresult,
Args &&... args 
)
+
+inline
+
+ +

Insert item by copying if there is no such key present already and acquire a write lock on the item.

+

Returns true if item is new.

+ +
+
+ +
+
+
+template<typename Key , typename T , typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >>
+
+template<typename... Args>
+ + + + + +
+ + + + + + + + +
bool tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::emplace (Args &&... args)
+
+inline
+
+ +

Insert item by copying if there is no such key present already.

+

Returns true if item is inserted.

+ +
+
+ +
+
+
+template<typename Key , typename T , typename HashCompare , typename A >
+ + + + + + + + +
bool tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::erase (const Key & key)
+
+ +

Erase item.

+

Return true if item was erased by particularly this call.

+ +

References tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor::is_writer().

+ +
+
+ +
+
+
+template<typename Key , typename T , typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >>
+ + + + + +
+ + + + + + + + +
bool tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::erase (const_accessoritem_accessor)
+
+inline
+
+ +

Erase item by const_accessor.

+

Return true if item was erased by particularly this call.

+ +
+
+ +
+
+
+template<typename Key , typename T , typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >>
+ + + + + +
+ + + + + + + + +
bool tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::erase (accessoritem_accessor)
+
+inline
+
+ +

Erase item by accessor.

+

Return true if item was erased by particularly this call.

+ +
+
+ +
+
+
+template<typename Key , typename T , typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::find (const_accessorresult,
const Key & key 
) const
+
+inline
+
+ +

Find item and acquire a read lock on the item.

+

Return true if item is found, false otherwise.

+ +

References tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor::release().

+ +
+
+ +
+
+
+template<typename Key , typename T , typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::find (accessorresult,
const Key & key 
)
+
+inline
+
+ +

Find item and acquire a write lock on the item.

+

Return true if item is found, false otherwise.

+ +

References tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor::release().

+ +
+
+ +
+
+
+template<typename Key , typename T , typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::insert (const_accessorresult,
const Key & key 
)
+
+inline
+
+ +

Insert item (if not already present) and acquire a read lock on the item.

+

Returns true if item is new.

+ +

References tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor::release().

+ +
+
+ +
+
+
+template<typename Key , typename T , typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::insert (accessorresult,
const Key & key 
)
+
+inline
+
+ +

Insert item (if not already present) and acquire a write lock on the item.

+

Returns true if item is new.

+ +

References tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor::release().

+ +
+
+ +
+
+
+template<typename Key , typename T , typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::insert (const_accessorresult,
const value_type & value 
)
+
+inline
+
+ +

Insert item by copying if there is no such key present already and acquire a read lock on the item.

+

Returns true if item is new.

+ +

References tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor::release().

+ +
+
+ +
+
+
+template<typename Key , typename T , typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::insert (accessorresult,
const value_type & value 
)
+
+inline
+
+ +

Insert item by copying if there is no such key present already and acquire a write lock on the item.

+

Returns true if item is new.

+ +

References tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor::release().

+ +
+
+ +
+
+
+template<typename Key , typename T , typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >>
+ + + + + +
+ + + + + + + + +
bool tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::insert (const value_type & value)
+
+inline
+
+ +

Insert item by copying if there is no such key present already.

+

Returns true if item is inserted.

+ +
+
+ +
+
+
+template<typename Key , typename T , typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::insert (const_accessorresult,
value_type && value 
)
+
+inline
+
+ +

Insert item by copying if there is no such key present already and acquire a read lock on the item.

+

Returns true if item is new.

+ +
+
+ +
+
+
+template<typename Key , typename T , typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::insert (accessorresult,
value_type && value 
)
+
+inline
+
+ +

Insert item by copying if there is no such key present already and acquire a write lock on the item.

+

Returns true if item is new.

+ +
+
+ +
+
+
+template<typename Key , typename T , typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >>
+ + + + + +
+ + + + + + + + +
bool tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::insert (value_type && value)
+
+inline
+
+ +

Insert item by copying if there is no such key present already.

+

Returns true if item is inserted.

+ +
+
+ +
+
+
+template<typename Key , typename T , typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >>
+ + + + + +
+ + + + + + + + +
const_pointer tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::internal_fast_find (const Key & key) const
+
+inlineprotected
+
+ +

Fast find when no concurrent erasure is used. For internal use inside TBB only!

+

Return pointer to item with given key, or NULL if no such item exists. Must not be called concurrently with erasure operations.

+ +
+
+ +
+
+
+template<typename Key , typename T , typename HashCompare , typename A >
+ + + + + + + + +
void tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::rehash (size_type n = 0)
+
+ +

Rehashes and optionally resizes the whole table.

+

Useful to optimize performance before or after concurrent operations. Also enables using of find() and count() concurrent methods in serial context.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • concurrent_hash_map.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00045.png b/doc/html/a00045.png new file mode 100644 index 0000000000..3f0a8f2647 Binary files /dev/null and b/doc/html/a00045.png differ diff --git a/doc/html/a00046.html b/doc/html/a00046.html new file mode 100644 index 0000000000..b9c3980c78 --- /dev/null +++ b/doc/html/a00046.html @@ -0,0 +1,92 @@ + + + + + + +tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type > Class Template Reference + + + + + + + +
+ +
+
tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type > Class Template Reference
+
+
+
+Inheritance diagram for tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type >:
+
+
+ + + +
+ + + + +

+Public Types

+typedef handle_object handle
 
+ + + + + +

+Public Member Functions

concurrent_lru_cache (value_function_type f, std::size_t number_of_lru_history_items)
 
+handle_object operator[] (key_type k)
 
+ + + +

+Friends

+class tbb::internal::aggregating_functor< self_type, aggregated_operation_type >
 
+
The documentation for this class was generated from the following file:
    +
  • concurrent_lru_cache.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00046.png b/doc/html/a00046.png new file mode 100644 index 0000000000..856b3afbc6 Binary files /dev/null and b/doc/html/a00046.png differ diff --git a/doc/html/a00047.html b/doc/html/a00047.html new file mode 100644 index 0000000000..8862006109 --- /dev/null +++ b/doc/html/a00047.html @@ -0,0 +1,606 @@ + + + + + + +tbb::interface5::concurrent_priority_queue< T, Compare, A > Class Template Reference + + + + + + + +
+ +
+
tbb::interface5::concurrent_priority_queue< T, Compare, A > Class Template Reference
+
+
+ +

Concurrent priority queue. + More...

+ +

#include <concurrent_priority_queue.h>

+ + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef T value_type
 Element type in the queue.
 
+typedef T & reference
 Reference type.
 
+typedef const T & const_reference
 Const reference type.
 
+typedef size_t size_type
 Integral type for representing size of the queue.
 
+typedef ptrdiff_t difference_type
 Difference type for iterator.
 
+typedef A allocator_type
 Allocator type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

concurrent_priority_queue (const allocator_type &a=allocator_type())
 Constructs a new concurrent_priority_queue with default capacity.
 
concurrent_priority_queue (size_type init_capacity, const allocator_type &a=allocator_type())
 Constructs a new concurrent_priority_queue with init_sz capacity.
 
+template<typename InputIterator >
 concurrent_priority_queue (InputIterator begin, InputIterator end, const allocator_type &a=allocator_type())
 [begin,end) constructor
 
concurrent_priority_queue (std::initializer_list< T > init_list, const allocator_type &a=allocator_type())
 Constructor from std::initializer_list.
 
 concurrent_priority_queue (const concurrent_priority_queue &src)
 Copy constructor. More...
 
 concurrent_priority_queue (const concurrent_priority_queue &src, const allocator_type &a)
 Copy constructor with specific allocator. More...
 
concurrent_priority_queueoperator= (const concurrent_priority_queue &src)
 Assignment operator. More...
 
 concurrent_priority_queue (concurrent_priority_queue &&src)
 Move constructor. More...
 
 concurrent_priority_queue (concurrent_priority_queue &&src, const allocator_type &a)
 Move constructor with specific allocator. More...
 
concurrent_priority_queueoperator= (concurrent_priority_queue &&src)
 Move assignment operator. More...
 
+template<typename InputIterator >
void assign (InputIterator begin, InputIterator end)
 Assign the queue from [begin,end) range, not thread-safe.
 
+void assign (std::initializer_list< T > il)
 Assign the queue from std::initializer_list, not thread-safe.
 
+concurrent_priority_queueoperator= (std::initializer_list< T > il)
 Assign from std::initializer_list, not thread-safe.
 
bool empty () const
 Returns true if empty, false otherwise. More...
 
size_type size () const
 Returns the current number of elements contained in the queue. More...
 
void push (const_reference elem)
 Pushes elem onto the queue, increasing capacity of queue if necessary. More...
 
void push (value_type &&elem)
 Pushes elem onto the queue, increasing capacity of queue if necessary. More...
 
template<typename... Args>
void emplace (Args &&...args)
 Constructs a new element using args as the arguments for its construction and pushes it onto the queue */. More...
 
bool try_pop (reference elem)
 Gets a reference to and removes highest priority element. More...
 
void clear ()
 Clear the queue; not thread-safe. More...
 
void swap (concurrent_priority_queue &q)
 Swap this queue with another; not thread-safe. More...
 
+allocator_type get_allocator () const
 Return allocator object.
 
+

Detailed Description

+

template<typename T, typename Compare = std::less<T>, typename A = cache_aligned_allocator<T>>
+class tbb::interface5::concurrent_priority_queue< T, Compare, A >

+ +

Concurrent priority queue.

+

Constructor & Destructor Documentation

+ +
+
+
+template<typename T , typename Compare = std::less<T>, typename A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
tbb::interface5::concurrent_priority_queue< T, Compare, A >::concurrent_priority_queue (const concurrent_priority_queue< T, Compare, A > & src)
+
+inlineexplicit
+
+ +

Copy constructor.

+

This operation is unsafe if there are pending concurrent operations on the src queue.

+ +
+
+ +
+
+
+template<typename T , typename Compare = std::less<T>, typename A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
tbb::interface5::concurrent_priority_queue< T, Compare, A >::concurrent_priority_queue (const concurrent_priority_queue< T, Compare, A > & src,
const allocator_typea 
)
+
+inline
+
+ +

Copy constructor with specific allocator.

+

This operation is unsafe if there are pending concurrent operations on the src queue.

+ +
+
+ +
+
+
+template<typename T , typename Compare = std::less<T>, typename A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
tbb::interface5::concurrent_priority_queue< T, Compare, A >::concurrent_priority_queue (concurrent_priority_queue< T, Compare, A > && src)
+
+inline
+
+ +

Move constructor.

+

This operation is unsafe if there are pending concurrent operations on the src queue.

+ +
+
+ +
+
+
+template<typename T , typename Compare = std::less<T>, typename A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
tbb::interface5::concurrent_priority_queue< T, Compare, A >::concurrent_priority_queue (concurrent_priority_queue< T, Compare, A > && src,
const allocator_typea 
)
+
+inline
+
+ +

Move constructor with specific allocator.

+

This operation is unsafe if there are pending concurrent operations on the src queue.

+ +
+
+

Member Function Documentation

+ +
+
+
+template<typename T , typename Compare = std::less<T>, typename A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + +
void tbb::interface5::concurrent_priority_queue< T, Compare, A >::clear ()
+
+inline
+
+ +

Clear the queue; not thread-safe.

+

This operation is unsafe if there are pending concurrent operations on the queue. Resets size, effectively emptying queue; does not free space. May not clear elements added in pending operations.

+ +
+
+ +
+
+
+template<typename T , typename Compare = std::less<T>, typename A = cache_aligned_allocator<T>>
+
+template<typename... Args>
+ + + + + +
+ + + + + + + + +
void tbb::interface5::concurrent_priority_queue< T, Compare, A >::emplace (Args &&... args)
+
+inline
+
+ +

Constructs a new element using args as the arguments for its construction and pushes it onto the queue */.

+

This operation can be safely used concurrently with other push, try_pop or emplace operations.

+ +
+
+ +
+
+
+template<typename T , typename Compare = std::less<T>, typename A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + +
bool tbb::interface5::concurrent_priority_queue< T, Compare, A >::empty () const
+
+inline
+
+ +

Returns true if empty, false otherwise.

+

Returned value may not reflect results of pending operations. This operation reads shared data and will trigger a race condition.

+ +
+
+ +
+
+
+template<typename T , typename Compare = std::less<T>, typename A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
concurrent_priority_queue& tbb::interface5::concurrent_priority_queue< T, Compare, A >::operator= (const concurrent_priority_queue< T, Compare, A > & src)
+
+inline
+
+ +

Assignment operator.

+

This operation is unsafe if there are pending concurrent operations on the src queue.

+ +
+
+ +
+
+
+template<typename T , typename Compare = std::less<T>, typename A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
concurrent_priority_queue& tbb::interface5::concurrent_priority_queue< T, Compare, A >::operator= (concurrent_priority_queue< T, Compare, A > && src)
+
+inline
+
+ +

Move assignment operator.

+

This operation is unsafe if there are pending concurrent operations on the src queue.

+ +
+
+ +
+
+
+template<typename T , typename Compare = std::less<T>, typename A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
void tbb::interface5::concurrent_priority_queue< T, Compare, A >::push (const_reference elem)
+
+inline
+
+ +

Pushes elem onto the queue, increasing capacity of queue if necessary.

+

This operation can be safely used concurrently with other push, try_pop or emplace operations.

+ +
+
+ +
+
+
+template<typename T , typename Compare = std::less<T>, typename A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
void tbb::interface5::concurrent_priority_queue< T, Compare, A >::push (value_type && elem)
+
+inline
+
+ +

Pushes elem onto the queue, increasing capacity of queue if necessary.

+

This operation can be safely used concurrently with other push, try_pop or emplace operations.

+ +
+
+ +
+
+
+template<typename T , typename Compare = std::less<T>, typename A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + +
size_type tbb::interface5::concurrent_priority_queue< T, Compare, A >::size () const
+
+inline
+
+ +

Returns the current number of elements contained in the queue.

+

Returned value may not reflect results of pending operations. This operation reads shared data and will trigger a race condition.

+ +
+
+ +
+
+
+template<typename T , typename Compare = std::less<T>, typename A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
void tbb::interface5::concurrent_priority_queue< T, Compare, A >::swap (concurrent_priority_queue< T, Compare, A > & q)
+
+inline
+
+ +

Swap this queue with another; not thread-safe.

+

This operation is unsafe if there are pending concurrent operations on the queue.

+ +
+
+ +
+
+
+template<typename T , typename Compare = std::less<T>, typename A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
bool tbb::interface5::concurrent_priority_queue< T, Compare, A >::try_pop (reference elem)
+
+inline
+
+ +

Gets a reference to and removes highest priority element.

+

If a highest priority element was found, sets elem and returns true, otherwise returns false. This operation can be safely used concurrently with other push, try_pop or emplace operations.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • concurrent_priority_queue.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00048.html b/doc/html/a00048.html new file mode 100644 index 0000000000..687d6e1a2d --- /dev/null +++ b/doc/html/a00048.html @@ -0,0 +1,224 @@ + + + + + + +tbb::strict_ppl::concurrent_queue< T, A > Class Template Reference + + + + + + + +
+ +
+
tbb::strict_ppl::concurrent_queue< T, A > Class Template Reference
+
+
+ +

A high-performance thread-safe non-blocking concurrent queue. + More...

+ +

#include <concurrent_queue.h>

+
+Inheritance diagram for tbb::strict_ppl::concurrent_queue< T, A >:
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef T value_type
 Element type in the queue.
 
+typedef T & reference
 Reference type.
 
+typedef const T & const_reference
 Const reference type.
 
+typedef size_t size_type
 Integral type for representing size of the queue.
 
+typedef ptrdiff_t difference_type
 Difference type for iterator.
 
+typedef A allocator_type
 Allocator type.
 
+typedef
+internal::concurrent_queue_iterator
+< concurrent_queue, T > 
iterator
 
+typedef
+internal::concurrent_queue_iterator
+< concurrent_queue, const T > 
const_iterator
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

concurrent_queue (const allocator_type &a=allocator_type())
 Construct empty queue.
 
+template<typename InputIterator >
 concurrent_queue (InputIterator begin, InputIterator end, const allocator_type &a=allocator_type())
 [begin,end) constructor
 
concurrent_queue (const concurrent_queue &src, const allocator_type &a=allocator_type())
 Copy constructor.
 
concurrent_queue (concurrent_queue &&src)
 Move constructors.
 
concurrent_queue (concurrent_queue &&src, const allocator_type &a)
 
~concurrent_queue ()
 Destroy queue.
 
+void push (const T &source)
 Enqueue an item at tail of queue.
 
+void push (T &&source)
 
+template<typename... Arguments>
void emplace (Arguments &&...args)
 
bool try_pop (T &result)
 Attempt to dequeue an item from head of queue. More...
 
+size_type unsafe_size () const
 Return the number of items in the queue; thread unsafe.
 
+bool empty () const
 Equivalent to size()==0.
 
+void clear ()
 Clear the queue. not thread-safe.
 
+allocator_type get_allocator () const
 Return allocator object.
 
+iterator unsafe_begin ()
 
+iterator unsafe_end ()
 
+const_iterator unsafe_begin () const
 
+const_iterator unsafe_end () const
 
+ + + + +

+Friends

+template<typename Container , typename Value >
class internal::concurrent_queue_iterator
 
+

Detailed Description

+

template<typename T, typename A = cache_aligned_allocator<T>>
+class tbb::strict_ppl::concurrent_queue< T, A >

+ +

A high-performance thread-safe non-blocking concurrent queue.

+

Multiple threads may each push and pop concurrently. Assignment construction is not allowed.

+

Member Function Documentation

+ +
+
+
+template<typename T , typename A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
bool tbb::strict_ppl::concurrent_queue< T, A >::try_pop (T & result)
+
+inline
+
+ +

Attempt to dequeue an item from head of queue.

+

Does not wait for item to become available. Returns true if successful; false otherwise.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • concurrent_queue.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00048.png b/doc/html/a00048.png new file mode 100644 index 0000000000..c7a9a4dd8a Binary files /dev/null and b/doc/html/a00048.png differ diff --git a/doc/html/a00049.html b/doc/html/a00049.html new file mode 100644 index 0000000000..31ec901a35 --- /dev/null +++ b/doc/html/a00049.html @@ -0,0 +1,167 @@ + + + + + + +tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator > Class Template Reference + + + + + + + +
+ +
+
tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator > Class Template Reference
+
+
+
+Inheritance diagram for tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >:
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef Key key_type
 
+typedef base_type::value_type value_type
 
+typedef T mapped_type
 
+typedef Hasher hasher
 
+typedef Key_equality key_equal
 
+typedef hash_compare key_compare
 
+typedef base_type::allocator_type allocator_type
 
+typedef base_type::pointer pointer
 
+typedef base_type::const_pointer const_pointer
 
+typedef base_type::reference reference
 
+typedef base_type::const_reference const_reference
 
+typedef base_type::size_type size_type
 
+typedef base_type::difference_type difference_type
 
+typedef base_type::iterator iterator
 
+typedef base_type::const_iterator const_iterator
 
+typedef base_type::iterator local_iterator
 
+typedef base_type::const_iterator const_local_iterator
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

concurrent_unordered_map (size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())
 
concurrent_unordered_map (const Allocator &a)
 
+template<typename Iterator >
 concurrent_unordered_map (Iterator first, Iterator last, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())
 
concurrent_unordered_map (std::initializer_list< value_type > il, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())
 Constructor from initializer_list.
 
concurrent_unordered_map (const concurrent_unordered_map &table)
 
+concurrent_unordered_mapoperator= (const concurrent_unordered_map &table)
 
concurrent_unordered_map (concurrent_unordered_map &&table)
 
+concurrent_unordered_mapoperator= (concurrent_unordered_map &&table)
 
concurrent_unordered_map (const concurrent_unordered_map &table, const Allocator &a)
 
concurrent_unordered_map (concurrent_unordered_map &&table, const Allocator &a)
 
+mapped_type & operator[] (const key_type &key)
 
+mapped_type & at (const key_type &key)
 
+const mapped_type & at (const key_type &key) const
 
+
The documentation for this class was generated from the following file:
    +
  • concurrent_unordered_map.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00049.png b/doc/html/a00049.png new file mode 100644 index 0000000000..0e3c40436b Binary files /dev/null and b/doc/html/a00049.png differ diff --git a/doc/html/a00050.html b/doc/html/a00050.html new file mode 100644 index 0000000000..094d29423b --- /dev/null +++ b/doc/html/a00050.html @@ -0,0 +1,107 @@ + + + + + + +tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping > Class Template Reference + + + + + + + +
+ +
+
tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping > Class Template Reference
+
+
+ + + + +

+Classes

class  value_compare
 
+ + + + + + + + + + + +

+Protected Types

enum  { allow_multimapping = Allow_multimapping + }
 
+typedef std::pair< const Key, T > value_type
 
+typedef Key key_type
 
+typedef Hash_compare hash_compare
 
+typedef Allocator::template
+rebind< value_type >::other 
allocator_type
 
+ + + +

+Protected Member Functions

concurrent_unordered_map_traits (const hash_compare &hc)
 
+ + + + +

+Static Protected Member Functions

+template<class Type1 , class Type2 >
static const Key & get_key (const std::pair< Type1, Type2 > &value)
 
+ + + +

+Protected Attributes

+hash_compare my_hash_compare
 
+
The documentation for this class was generated from the following file:
    +
  • concurrent_unordered_map.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00051.html b/doc/html/a00051.html new file mode 100644 index 0000000000..2c841eb146 --- /dev/null +++ b/doc/html/a00051.html @@ -0,0 +1,158 @@ + + + + + + +tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator > Class Template Reference + + + + + + + +
+ +
+
tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator > Class Template Reference
+
+
+
+Inheritance diagram for tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >:
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef Key key_type
 
+typedef base_type::value_type value_type
 
+typedef T mapped_type
 
+typedef Hasher hasher
 
+typedef Key_equality key_equal
 
+typedef hash_compare key_compare
 
+typedef base_type::allocator_type allocator_type
 
+typedef base_type::pointer pointer
 
+typedef base_type::const_pointer const_pointer
 
+typedef base_type::reference reference
 
+typedef base_type::const_reference const_reference
 
+typedef base_type::size_type size_type
 
+typedef base_type::difference_type difference_type
 
+typedef base_type::iterator iterator
 
+typedef base_type::const_iterator const_iterator
 
+typedef base_type::iterator local_iterator
 
+typedef base_type::const_iterator const_local_iterator
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

concurrent_unordered_multimap (size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())
 
concurrent_unordered_multimap (const Allocator &a)
 
+template<typename Iterator >
 concurrent_unordered_multimap (Iterator first, Iterator last, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())
 
concurrent_unordered_multimap (std::initializer_list< value_type > il, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())
 Constructor from initializer_list.
 
concurrent_unordered_multimap (const concurrent_unordered_multimap &table)
 
+concurrent_unordered_multimapoperator= (const concurrent_unordered_multimap &table)
 
concurrent_unordered_multimap (concurrent_unordered_multimap &&table)
 
+concurrent_unordered_multimapoperator= (concurrent_unordered_multimap &&table)
 
concurrent_unordered_multimap (const concurrent_unordered_multimap &table, const Allocator &a)
 
concurrent_unordered_multimap (concurrent_unordered_multimap &&table, const Allocator &a)
 
+
The documentation for this class was generated from the following file:
    +
  • concurrent_unordered_map.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00051.png b/doc/html/a00051.png new file mode 100644 index 0000000000..6fa3b58c9a Binary files /dev/null and b/doc/html/a00051.png differ diff --git a/doc/html/a00052.html b/doc/html/a00052.html new file mode 100644 index 0000000000..6bc200d140 --- /dev/null +++ b/doc/html/a00052.html @@ -0,0 +1,158 @@ + + + + + + +tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator > Class Template Reference + + + + + + + +
+ +
+
tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator > Class Template Reference
+
+
+
+Inheritance diagram for tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >:
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef Key key_type
 
+typedef base_type::value_type value_type
 
+typedef Key mapped_type
 
+typedef Hasher hasher
 
+typedef Key_equality key_equal
 
+typedef hash_compare key_compare
 
+typedef base_type::allocator_type allocator_type
 
+typedef base_type::pointer pointer
 
+typedef base_type::const_pointer const_pointer
 
+typedef base_type::reference reference
 
+typedef base_type::const_reference const_reference
 
+typedef base_type::size_type size_type
 
+typedef base_type::difference_type difference_type
 
+typedef base_type::iterator iterator
 
+typedef base_type::const_iterator const_iterator
 
+typedef base_type::iterator local_iterator
 
+typedef base_type::const_iterator const_local_iterator
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

concurrent_unordered_multiset (size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())
 
concurrent_unordered_multiset (const Allocator &a)
 
+template<typename Iterator >
 concurrent_unordered_multiset (Iterator first, Iterator last, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())
 
concurrent_unordered_multiset (std::initializer_list< value_type > il, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type())
 Constructor from initializer_list.
 
concurrent_unordered_multiset (const concurrent_unordered_multiset &table)
 
+concurrent_unordered_multisetoperator= (const concurrent_unordered_multiset &table)
 
concurrent_unordered_multiset (concurrent_unordered_multiset &&table)
 
+concurrent_unordered_multisetoperator= (concurrent_unordered_multiset &&table)
 
concurrent_unordered_multiset (const concurrent_unordered_multiset &table, const Allocator &a)
 
concurrent_unordered_multiset (concurrent_unordered_multiset &&table, const Allocator &a)
 
+
The documentation for this class was generated from the following file:
    +
  • concurrent_unordered_set.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00052.png b/doc/html/a00052.png new file mode 100644 index 0000000000..3ef6d19042 Binary files /dev/null and b/doc/html/a00052.png differ diff --git a/doc/html/a00053.html b/doc/html/a00053.html new file mode 100644 index 0000000000..827a0aa33e --- /dev/null +++ b/doc/html/a00053.html @@ -0,0 +1,158 @@ + + + + + + +tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator > Class Template Reference + + + + + + + +
+ +
+
tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator > Class Template Reference
+
+
+
+Inheritance diagram for tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >:
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef Key key_type
 
+typedef base_type::value_type value_type
 
+typedef Key mapped_type
 
+typedef Hasher hasher
 
+typedef Key_equality key_equal
 
+typedef hash_compare key_compare
 
+typedef base_type::allocator_type allocator_type
 
+typedef base_type::pointer pointer
 
+typedef base_type::const_pointer const_pointer
 
+typedef base_type::reference reference
 
+typedef base_type::const_reference const_reference
 
+typedef base_type::size_type size_type
 
+typedef base_type::difference_type difference_type
 
+typedef base_type::iterator iterator
 
+typedef base_type::const_iterator const_iterator
 
+typedef base_type::iterator local_iterator
 
+typedef base_type::const_iterator const_local_iterator
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

concurrent_unordered_set (size_type n_of_buckets=base_type::initial_bucket_number, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type())
 
concurrent_unordered_set (const Allocator &a)
 
+template<typename Iterator >
 concurrent_unordered_set (Iterator first, Iterator last, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type())
 
concurrent_unordered_set (std::initializer_list< value_type > il, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type())
 Constructor from initializer_list.
 
concurrent_unordered_set (const concurrent_unordered_set &table)
 
+concurrent_unordered_setoperator= (const concurrent_unordered_set &table)
 
concurrent_unordered_set (concurrent_unordered_set &&table)
 
+concurrent_unordered_setoperator= (concurrent_unordered_set &&table)
 
concurrent_unordered_set (const concurrent_unordered_set &table, const Allocator &a)
 
concurrent_unordered_set (concurrent_unordered_set &&table, const Allocator &a)
 
+
The documentation for this class was generated from the following file:
    +
  • concurrent_unordered_set.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00053.png b/doc/html/a00053.png new file mode 100644 index 0000000000..9f9a099251 Binary files /dev/null and b/doc/html/a00053.png differ diff --git a/doc/html/a00054.html b/doc/html/a00054.html new file mode 100644 index 0000000000..f0478f52ee --- /dev/null +++ b/doc/html/a00054.html @@ -0,0 +1,103 @@ + + + + + + +tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping > Class Template Reference + + + + + + + +
+ +
+
tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping > Class Template Reference
+
+
+ + + + + + + + + + + + + + +

+Protected Types

enum  { allow_multimapping = Allow_multimapping + }
 
+typedef Key value_type
 
+typedef Key key_type
 
+typedef Hash_compare hash_compare
 
+typedef Allocator::template
+rebind< value_type >::other 
allocator_type
 
+typedef hash_compare value_compare
 
+ + + +

+Protected Member Functions

concurrent_unordered_set_traits (const hash_compare &hc)
 
+ + + +

+Static Protected Member Functions

+static const Key & get_key (const value_type &value)
 
+ + + +

+Protected Attributes

+hash_compare my_hash_compare
 
+
The documentation for this class was generated from the following file:
    +
  • concurrent_unordered_set.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00055.html b/doc/html/a00055.html new file mode 100644 index 0000000000..4f147626a8 --- /dev/null +++ b/doc/html/a00055.html @@ -0,0 +1,810 @@ + + + + + + +tbb::concurrent_vector< T, A > Class Template Reference + + + + + + + +
+ +
+
tbb::concurrent_vector< T, A > Class Template Reference
+
+
+ +

Concurrent vector container. + More...

+ +

#include <concurrent_vector.h>

+
+Inheritance diagram for tbb::concurrent_vector< T, A >:
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef
+internal::concurrent_vector_base_v3::size_type 
size_type
 
+typedef
+internal::allocator_base< T, A >
+::allocator_type 
allocator_type
 
+typedef T value_type
 
+typedef ptrdiff_t difference_type
 
+typedef T & reference
 
+typedef const T & const_reference
 
+typedef T * pointer
 
+typedef const T * const_pointer
 
+typedef
+internal::vector_iterator
+< concurrent_vector, T > 
iterator
 
+typedef
+internal::vector_iterator
+< concurrent_vector, const T > 
const_iterator
 
+typedef std::reverse_iterator
+< iterator > 
reverse_iterator
 
+typedef std::reverse_iterator
+< const_iterator > 
const_reverse_iterator
 
+typedef std::reverse_iterator
+< iterator, T, T &, T * > 
reverse_iterator
 
+typedef std::reverse_iterator
+< const_iterator, T, const T
+&, const T * > 
const_reverse_iterator
 
+typedef generic_range_type
+< iterator > 
range_type
 
+typedef generic_range_type
+< const_iterator > 
const_range_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

concurrent_vector (const allocator_type &a=allocator_type())
 Construct empty vector.
 
concurrent_vector (std::initializer_list< T > init_list, const allocator_type &a=allocator_type())
 Constructor from initializer_list.
 
concurrent_vector (const concurrent_vector &vector, const allocator_type &a=allocator_type())
 Copying constructor.
 
concurrent_vector (concurrent_vector &&source)
 Move constructor.
 
concurrent_vector (concurrent_vector &&source, const allocator_type &a)
 
+template<class M >
 concurrent_vector (const concurrent_vector< T, M > &vector, const allocator_type &a=allocator_type())
 Copying constructor for vector with different allocator type.
 
concurrent_vector (size_type n)
 Construction with initial size specified by argument n.
 
concurrent_vector (size_type n, const_reference t, const allocator_type &a=allocator_type())
 Construction with initial size specified by argument n, initialization by copying of t, and given allocator instance.
 
+template<class I >
 concurrent_vector (I first, I last, const allocator_type &a=allocator_type())
 Construction with copying iteration range and given allocator instance.
 
+concurrent_vectoroperator= (const concurrent_vector &vector)
 Assignment.
 
+concurrent_vectoroperator= (concurrent_vector &&other)
 Move assignment.
 
+template<class M >
concurrent_vectoroperator= (const concurrent_vector< T, M > &vector)
 Assignment for vector with different allocator type.
 
+concurrent_vectoroperator= (std::initializer_list< T > init_list)
 Assignment for initializer_list.
 
iterator grow_by (size_type delta)
 Grow by "delta" elements. More...
 
iterator grow_by (size_type delta, const_reference t)
 Grow by "delta" elements using copying constructor. More...
 
template<typename I >
iterator grow_by (I first, I last)
 
iterator grow_by (std::initializer_list< T > init_list)
 
iterator grow_to_at_least (size_type n)
 Append minimal sequence of elements such that size()>=n. More...
 
iterator grow_to_at_least (size_type n, const_reference t)
 
iterator push_back (const_reference item)
 Push item. More...
 
iterator push_back (T &&item)
 Push item, move-aware. More...
 
template<typename... Args>
iterator emplace_back (Args &&...args)
 Push item, create item "in place" with provided arguments. More...
 
reference operator[] (size_type index)
 Get reference to element at given index. More...
 
+const_reference operator[] (size_type index) const
 Get const reference to element at given index.
 
+reference at (size_type index)
 Get reference to element at given index. Throws exceptions on errors.
 
+const_reference at (size_type index) const
 Get const reference to element at given index. Throws exceptions on errors.
 
+range_type range (size_t grainsize=1)
 Get range for iterating with parallel algorithms.
 
+const_range_type range (size_t grainsize=1) const
 Get const range for iterating with parallel algorithms.
 
+size_type size () const
 Return size of vector. It may include elements under construction.
 
+bool empty () const
 Return false if vector is not empty or has elements under construction at least.
 
+size_type capacity () const
 Maximum size to which array can grow without allocating more memory. Concurrent allocations are not included in the value.
 
void reserve (size_type n)
 Allocate enough space to grow to size n without having to allocate more memory later. More...
 
+void resize (size_type n)
 Resize the vector. Not thread-safe.
 
+void resize (size_type n, const_reference t)
 Resize the vector, copy t for new elements. Not thread-safe.
 
+void shrink_to_fit ()
 Optimize memory usage and fragmentation.
 
+size_type max_size () const
 Upper bound on argument to reserve.
 
+iterator begin ()
 start iterator
 
+iterator end ()
 end iterator
 
+const_iterator begin () const
 start const iterator
 
+const_iterator end () const
 end const iterator
 
+const_iterator cbegin () const
 start const iterator
 
+const_iterator cend () const
 end const iterator
 
+reverse_iterator rbegin ()
 reverse start iterator
 
+reverse_iterator rend ()
 reverse end iterator
 
+const_reverse_iterator rbegin () const
 reverse start const iterator
 
+const_reverse_iterator rend () const
 reverse end const iterator
 
+const_reverse_iterator crbegin () const
 reverse start const iterator
 
+const_reverse_iterator crend () const
 reverse end const iterator
 
+reference front ()
 the first item
 
+const_reference front () const
 the first item const
 
+reference back ()
 the last item
 
+const_reference back () const
 the last item const
 
+allocator_type get_allocator () const
 return allocator object
 
+void assign (size_type n, const_reference t)
 assign n items by copying t item
 
+template<class I >
void assign (I first, I last)
 assign range [first, last)
 
+void assign (std::initializer_list< T > init_list)
 assigns an initializer list
 
+void swap (concurrent_vector &vector)
 swap two instances
 
void clear ()
 Clear container while keeping memory allocated. More...
 
~concurrent_vector ()
 Clear and destroy vector.
 
+const
+internal::concurrent_vector_base_v3 & 
internal_vector_base () const
 
+template<typename I >
void copy_range (void *dst, const void *p_type_erased_iterator, size_type n)
 
+ + + + +

+Friends

+template<typename C , typename U >
class internal::vector_iterator
 
+

Detailed Description

+

template<typename T, class A = cache_aligned_allocator<T>>
+class tbb::concurrent_vector< T, A >

+ +

Concurrent vector container.

+
concurrent_vector is a container having the following main properties:
+- It provides random indexed access to its elements. The index of the first element is 0.
+- It ensures safe concurrent growing its size (different threads can safely append new elements).
+- Adding new elements does not invalidate existing iterators and does not change indices of existing items.
+
Compatibility
The class meets all Container Requirements and Reversible Container Requirements from C++ Standard (See ISO/IEC 14882:2003(E), clause 23.1). But it doesn't meet Sequence Requirements due to absence of insert() and erase() methods.
+
Exception Safety
Methods working with memory allocation and/or new elements construction can throw an exception if allocator fails to allocate memory or element's default constructor throws one. Concurrent vector's element of type T must conform to the following requirements:
    +
  • Throwing an exception is forbidden for destructor of T.
  • +
  • Default constructor of T must not throw an exception OR its non-virtual destructor must safely work when its object memory is zero-initialized.
  • +
+Otherwise, the program's behavior is undefined.
+
If an exception happens inside growth or assignment operation, an instance of the vector becomes invalid unless it is stated otherwise in the method documentation. Invalid state means:
    +
  • There are no guarantees that all items were initialized by a constructor. The rest of items is zero-filled, including item where exception happens.
  • +
  • An invalid vector instance cannot be repaired; it is unable to grow anymore.
  • +
  • Size and capacity reported by the vector are incorrect, and calculated as if the failed operation were successful.
  • +
  • Attempt to access not allocated elements using operator[] or iterators results in access violation or segmentation fault exception, and in case of using at() method a C++ exception is thrown.
  • +
+If a concurrent grow operation successfully completes, all the elements it has added to the vector will remain valid and accessible even if one of subsequent grow operations fails.
+
Fragmentation
Unlike an STL vector, a concurrent_vector does not move existing elements if it needs to allocate more memory. The container is divided into a series of contiguous arrays of elements. The first reservation, growth, or assignment operation determines the size of the first array. Using small number of elements as initial size incurs fragmentation that may increase element access time. Internal layout can be optimized by method compact() that merges several smaller arrays into one solid.
+
Changes since TBB 2.1
    +
  • Fixed guarantees of concurrent_vector::size() and grow_to_at_least() methods to assure elements are allocated.
  • +
  • Methods end()/rbegin()/back() are partly thread-safe since they use size() to get the end of vector
  • +
  • Added resize() methods (not thread-safe)
  • +
  • Added cbegin/cend/crbegin/crend methods
  • +
  • Changed return type of methods grow* and push_back to iterator
  • +
+
+
Changes since TBB 2.0
    +
  • Implemented exception-safety guarantees
  • +
  • Added template argument for allocator
  • +
  • Added allocator argument in constructors
  • +
  • Faster index calculation
  • +
  • First growth call specifies a number of segments to be merged in the first allocation.
  • +
  • Fixed memory blow up for swarm of vector's instances of small size
  • +
  • Added grow_by(size_type n, const_reference t) growth using copying constructor to init new items.
  • +
  • Added STL-like constructors.
  • +
  • Added operators ==, < and derivatives
  • +
  • Added at() method, approved for using after an exception was thrown inside the vector
  • +
  • Added get_allocator() method.
  • +
  • Added assign() methods
  • +
  • Added compact() method to defragment first segments
  • +
  • Added swap() method
  • +
  • range() defaults on grainsize = 1 supporting auto grainsize algorithms.
  • +
+
+

Member Function Documentation

+ +
+
+
+template<typename T, class A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + +
void tbb::concurrent_vector< T, A >::clear ()
+
+inline
+
+ +

Clear container while keeping memory allocated.

+

To free up the memory, use in conjunction with method compact(). Not thread safe

+ +
+
+ +
+
+
+template<typename T, class A = cache_aligned_allocator<T>>
+
+template<typename... Args>
+ + + + + +
+ + + + + + + + +
iterator tbb::concurrent_vector< T, A >::emplace_back (Args &&... args)
+
+inline
+
+ +

Push item, create item "in place" with provided arguments.

+

Returns iterator pointing to the new element.

+ +
+
+ +
+
+
+template<typename T, class A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
iterator tbb::concurrent_vector< T, A >::grow_by (size_type delta)
+
+inline
+
+ +

Grow by "delta" elements.

+

Returns iterator pointing to the first new element.

+ +
+
+ +
+
+
+template<typename T, class A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
iterator tbb::concurrent_vector< T, A >::grow_by (size_type delta,
const_reference t 
)
+
+inline
+
+ +

Grow by "delta" elements using copying constructor.

+

Returns iterator pointing to the first new element.

+ +
+
+ +
+
+
+template<typename T, class A = cache_aligned_allocator<T>>
+
+template<typename I >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
iterator tbb::concurrent_vector< T, A >::grow_by (first,
last 
)
+
+inline
+
+

Returns iterator pointing to the first new element.

+ +
+
+ +
+
+
+template<typename T, class A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
iterator tbb::concurrent_vector< T, A >::grow_by (std::initializer_list< T > init_list)
+
+inline
+
+

Returns iterator pointing to the first new element.

+ +
+
+ +
+
+
+template<typename T, class A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
iterator tbb::concurrent_vector< T, A >::grow_to_at_least (size_type n)
+
+inline
+
+ +

Append minimal sequence of elements such that size()>=n.

+

The new elements are default constructed. Blocks until all elements in range [0..n) are allocated. May return while other elements are being constructed by other threads. Returns iterator that points to beginning of appended sequence. If no elements were appended, returns iterator pointing to nth element.

+ +
+
+ +
+
+
+template<typename T, class A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
iterator tbb::concurrent_vector< T, A >::grow_to_at_least (size_type n,
const_reference t 
)
+
+inline
+
+

Analogous to grow_to_at_least( size_type n ) with exception that the new elements are initialized by copying of t instead of default construction.

+ +
+
+ +
+
+
+template<typename T, class A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
reference tbb::concurrent_vector< T, A >::operator[] (size_type index)
+
+inline
+
+ +

Get reference to element at given index.

+

This method is thread-safe for concurrent reads, and also while growing the vector, as long as the calling thread has checked that index < size().

+ +
+
+ +
+
+
+template<typename T, class A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
iterator tbb::concurrent_vector< T, A >::push_back (const_reference item)
+
+inline
+
+ +

Push item.

+

Returns iterator pointing to the new element.

+ +
+
+ +
+
+
+template<typename T, class A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
iterator tbb::concurrent_vector< T, A >::push_back (T && item)
+
+inline
+
+ +

Push item, move-aware.

+

Returns iterator pointing to the new element.

+ +
+
+ +
+
+
+template<typename T, class A = cache_aligned_allocator<T>>
+ + + + + +
+ + + + + + + + +
void tbb::concurrent_vector< T, A >::reserve (size_type n)
+
+inline
+
+ +

Allocate enough space to grow to size n without having to allocate more memory later.

+

Like most of the methods provided for STL compatibility, this method is not thread safe. The capacity afterwards may be bigger than the requested reservation.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • concurrent_vector.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00055.png b/doc/html/a00055.png new file mode 100644 index 0000000000..4ffff4fb10 Binary files /dev/null and b/doc/html/a00055.png differ diff --git a/doc/html/a00056.html b/doc/html/a00056.html new file mode 100644 index 0000000000..6258c8609b --- /dev/null +++ b/doc/html/a00056.html @@ -0,0 +1,142 @@ + + + + + + +tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor Class Reference + + + + + + + +
+ +
+
tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor Class Reference
+
+
+ +

Combines data access, locking, and garbage collection. + More...

+ +

#include <concurrent_hash_map.h>

+
+Inheritance diagram for tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor:
+
+
+ + +tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor + +
+ + + + + +

+Public Types

+typedef const
+concurrent_hash_map::value_type 
value_type
 Type of value.
 
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+bool empty () const
 True if result is empty.
 
+void release ()
 Set to null.
 
+const_reference operator* () const
 Return reference to associated value in hash table.
 
+const_pointer operator-> () const
 Return pointer to associated value in hash table.
 
const_accessor ()
 Create empty result.
 
~const_accessor ()
 Destroy result after releasing the underlying reference.
 
+ + + +

+Protected Member Functions

+bool is_writer ()
 
+ + + + + +

+Protected Attributes

+nodemy_node
 
+hashcode_t my_hash
 
+ + + + + +

+Friends

+class concurrent_hash_map< Key, T, HashCompare, Allocator >
 
+class accessor
 
+

Detailed Description

+

template<typename Key, typename T, typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> >>
+class tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor

+ +

Combines data access, locking, and garbage collection.

+

The documentation for this class was generated from the following file:
    +
  • concurrent_hash_map.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00056.png b/doc/html/a00056.png new file mode 100644 index 0000000000..e861a116ac Binary files /dev/null and b/doc/html/a00056.png differ diff --git a/doc/html/a00057.html b/doc/html/a00057.html new file mode 100644 index 0000000000..be8a60e968 --- /dev/null +++ b/doc/html/a00057.html @@ -0,0 +1,63 @@ + + + + + + +tbb::flow::interface8::continue_msg Class Reference + + + + + + + +
+
+
tbb::flow::interface8::continue_msg Class Reference
+
+
+ +

An empty class used for messages that mean "I'm done". + More...

+ +

#include <flow_graph.h>

+

Detailed Description

+

An empty class used for messages that mean "I'm done".

+

The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00058.html b/doc/html/a00058.html new file mode 100644 index 0000000000..573bf74da3 --- /dev/null +++ b/doc/html/a00058.html @@ -0,0 +1,172 @@ + + + + + + +tbb::flow::interface8::continue_node< Output > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::continue_node< Output > Class Template Reference
+
+
+ +

Implements an executable node that supports continue_msg -> Output. + More...

+ +

#include <flow_graph.h>

+
+Inheritance diagram for tbb::flow::interface8::continue_node< Output >:
+
+
+ + +tbb::flow::interface8::graph_node + +
+ + + + + + + + + + + + + + +

+Public Types

+typedef continue_msg input_type
 
+typedef Output output_type
 
+typedef sender< input_typepredecessor_type
 
+typedef receiver< output_type > successor_type
 
+typedef
+internal::continue_input
+< Output > 
fInput_type
 
+typedef
+internal::function_output
+< output_type > 
fOutput_type
 
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<typename Body >
 continue_node (graph &g, Body body)
 Constructor for executable node with continue_msg -> Output.
 
+template<typename Body >
 continue_node (graph &g, int number_of_predecessors, Body body)
 Constructor for executable node with continue_msg -> Output.
 
continue_node (const continue_node &src)
 Copy constructor.
 
+void set_name (const char *name)
 
+void extract ()
 
- Public Member Functions inherited from tbb::flow::interface8::graph_node
graph_node (graph &g)
 
+ + + + + +

+Protected Member Functions

+internal::broadcast_cache
+< output_type > & 
successors ()
 
+void reset_node (reset_flags f)
 
+ + + + + + + + + + +

+Friends

+template<typename R , typename B >
class run_and_put_task
 
+template<typename X , typename Y >
class internal::broadcast_cache
 
+template<typename X , typename Y >
class internal::round_robin_cache
 
+ + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from tbb::flow::interface8::graph_node
+graphmy_graph
 
+graph_nodenext
 
+graph_nodeprev
 
+

Detailed Description

+

template<typename Output>
+class tbb::flow::interface8::continue_node< Output >

+ +

Implements an executable node that supports continue_msg -> Output.

+

The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00058.png b/doc/html/a00058.png new file mode 100644 index 0000000000..d877596750 Binary files /dev/null and b/doc/html/a00058.png differ diff --git a/doc/html/a00059.html b/doc/html/a00059.html new file mode 100644 index 0000000000..04d41d45b3 --- /dev/null +++ b/doc/html/a00059.html @@ -0,0 +1,277 @@ + + + + + + +tbb::flow::interface8::continue_receiver Class Reference + + + + + + + +
+ +
+
tbb::flow::interface8::continue_receiver Class Referenceabstract
+
+
+ +

Base class for receivers of completion messages. + More...

+ +

#include <flow_graph.h>

+
+Inheritance diagram for tbb::flow::interface8::continue_receiver:
+
+
+ + +tbb::flow::interface8::receiver< continue_msg > + +
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef continue_msg input_type
 The input type.
 
+typedef sender< continue_msgpredecessor_type
 The predecessor type for this node.
 
+typedef
+internal::edge_container
+< predecessor_type
built_predecessors_type
 
+typedef
+built_predecessors_type::edge_list_type 
predecessor_list_type
 
- Public Types inherited from tbb::flow::interface8::receiver< continue_msg >
+typedef continue_msg input_type
 The input type of this receiver.
 
+typedef sender< continue_msgpredecessor_type
 The predecessor type for this node.
 
+typedef
+internal::edge_container
+< predecessor_type
built_predecessors_type
 
+typedef
+built_predecessors_type::edge_list_type 
predecessor_list_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

continue_receiver (int number_of_predecessors=0)
 Constructor.
 
continue_receiver (const continue_receiver &src)
 Copy constructor.
 
+virtual ~continue_receiver ()
 Destructor.
 
+bool register_predecessor (predecessor_type &)
 Increments the trigger threshold.
 
bool remove_predecessor (predecessor_type &)
 Decrements the trigger threshold. More...
 
+built_predecessors_typebuilt_predecessors ()
 
+void internal_add_built_predecessor (predecessor_type &s)
 
+void internal_delete_built_predecessor (predecessor_type &s)
 
+void copy_predecessors (predecessor_list_type &v)
 
+size_t predecessor_count ()
 
- Public Member Functions inherited from tbb::flow::interface8::receiver< continue_msg >
+virtual ~receiver ()
 Destructor.
 
+bool try_put (const continue_msg &t)
 Put an item to the receiver.
 
+ + + + + + + + + + +

+Protected Member Functions

+task * try_put_task (const input_type &)
 
+void reset_receiver (reset_flags f)
 
virtual task * execute ()=0
 Does whatever should happen when the threshold is reached. More...
 
+bool is_continue_receiver ()
 
+ + + + + + + + + + + +

+Protected Attributes

+built_predecessors_type my_built_predecessors
 
+spin_mutex my_mutex
 
+int my_predecessor_count
 
+int my_current_count
 
+int my_initial_predecessor_count
 
+ + + + + + + + + + + + + + + + +

+Friends

+template<typename R , typename B >
class run_and_put_task
 
+template<typename X , typename Y >
class internal::broadcast_cache
 
+template<typename X , typename Y >
class internal::round_robin_cache
 
+template<typename U >
class limiter_node
 
+template<typename TT , typename M >
class internal::successor_cache
 
+

Detailed Description

+

Base class for receivers of completion messages.

+

These receivers automatically reset, but cannot be explicitly waited on

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + +
virtual task* tbb::flow::interface8::continue_receiver::execute ()
+
+protectedpure virtual
+
+ +

Does whatever should happen when the threshold is reached.

+

This should be very fast or else spawn a task. This is called while the sender is blocked in the try_put().

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
bool tbb::flow::interface8::continue_receiver::remove_predecessor (predecessor_type)
+
+inlinevirtual
+
+ +

Decrements the trigger threshold.

+

Does not check to see if the removal of the predecessor now makes the current count exceed the new threshold. So removing a predecessor while the graph is active can cause unexpected results.

+ +

Reimplemented from tbb::flow::interface8::receiver< continue_msg >.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00059.png b/doc/html/a00059.png new file mode 100644 index 0000000000..1fbcea13e9 Binary files /dev/null and b/doc/html/a00059.png differ diff --git a/doc/html/a00060.html b/doc/html/a00060.html new file mode 100644 index 0000000000..32db0ab7d0 --- /dev/null +++ b/doc/html/a00060.html @@ -0,0 +1,102 @@ + + + + + + +tbb::internal::critical_section_v4 Class Reference + + + + + + + +
+ +
+
tbb::internal::critical_section_v4 Class Reference
+
+
+
+Inheritance diagram for tbb::internal::critical_section_v4:
+
+
+ + + +
+ + + + +

+Classes

class  scoped_lock
 
+ + + + + + + + + +

+Public Member Functions

+void __TBB_EXPORTED_METHOD internal_construct ()
 
+void lock ()
 
+bool try_lock ()
 
+void unlock ()
 
+ + + + + + + +

+Static Public Attributes

+static const bool is_rw_mutex = false
 
+static const bool is_recursive_mutex = false
 
+static const bool is_fair_mutex = true
 
+
The documentation for this class was generated from the following file:
    +
  • critical_section.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00060.png b/doc/html/a00060.png new file mode 100644 index 0000000000..835e586da2 Binary files /dev/null and b/doc/html/a00060.png differ diff --git a/doc/html/a00061.html b/doc/html/a00061.html new file mode 100644 index 0000000000..87e806344e --- /dev/null +++ b/doc/html/a00061.html @@ -0,0 +1,94 @@ + + + + + + +tbb::flow::interface8::internal::edge_container< C > Class Template Reference + + + + + + +
+ + + + + +
+
+ +
+
tbb::flow::interface8::internal::edge_container< C > Class Template Reference
+
+
+ + + + +

+Public Types

+typedef std::list< C
+*, tbb::tbb_allocator< C * > > 
edge_list_type
 
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

+void add_edge (C &s)
 
+void delete_edge (C &s)
 
+void copy_edges (edge_list_type &v)
 
+size_t edge_count ()
 
+void clear ()
 
+template<typename S >
void sender_extract (S &s)
 
+template<typename R >
void receiver_extract (R &r)
 
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00062.html b/doc/html/a00062.html new file mode 100644 index 0000000000..bf90b4eb13 --- /dev/null +++ b/doc/html/a00062.html @@ -0,0 +1,84 @@ + + + + + + +tbb::concurrent_vector< T, A >::push_back_helper::element_construction_guard Struct Reference + + + + + + + +
+ +
+
tbb::concurrent_vector< T, A >::push_back_helper::element_construction_guard Struct Reference
+
+
+
+Inheritance diagram for tbb::concurrent_vector< T, A >::push_back_helper::element_construction_guard:
+
+
+ + + +
+ + + + + + +

+Public Member Functions

element_construction_guard (pointer an_element)
 
+void dismiss ()
 
+ + + +

+Public Attributes

+pointer element
 
+
The documentation for this struct was generated from the following file:
    +
  • concurrent_vector.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00062.png b/doc/html/a00062.png new file mode 100644 index 0000000000..0b05314963 Binary files /dev/null and b/doc/html/a00062.png differ diff --git a/doc/html/a00063.html b/doc/html/a00063.html new file mode 100644 index 0000000000..44052ac99e --- /dev/null +++ b/doc/html/a00063.html @@ -0,0 +1,261 @@ + + + + + + +tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type > Class Template Reference + + + + + + + +
+ +
+
tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type > Class Template Reference
+
+
+ +

The enumerable_thread_specific container. + More...

+ +

#include <enumerable_thread_specific.h>

+
+Inheritance diagram for tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >:
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef Allocator allocator_type
 Basic types.
 
+typedef T value_type
 
+typedef T & reference
 
+typedef const T & const_reference
 
+typedef T * pointer
 
+typedef const T * const_pointer
 
+typedef
+internal_collection_type::size_type 
size_type
 
+typedef
+internal_collection_type::difference_type 
difference_type
 
+typedef
+internal::enumerable_thread_specific_iterator
+< internal_collection_type,
+value_type > 
iterator
 
+typedef
+internal::enumerable_thread_specific_iterator
+< internal_collection_type,
+const value_type > 
const_iterator
 
+typedef generic_range_type
+< iterator > 
range_type
 
+typedef generic_range_type
+< const_iterator > 
const_range_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

enumerable_thread_specific ()
 Default constructor. Each local instance of T is default constructed.
 
+template<typename Finit#if __TBB_ETS_USE_CPP11, typename = typename internal::enable_if<internal::is_callable_no_args<typename internal::strip<Finit>::type>::value>::type #endif>
 enumerable_thread_specific (Finit finit)
 Constructor with initializer functor. Each local instance of T is constructed by T(finit()).
 
enumerable_thread_specific (const T &exemplar)
 Constructor with exemplar. Each local instance of T is copy-constructed from the exemplar.
 
enumerable_thread_specific (T &&exemplar)
 
+template<typename P1 , typename... P, typename = typename internal::enable_if<!internal::is_callable_no_args<typename internal::strip<P1>::type>::value && !internal::is_compatible_ets<T, typename internal::strip<P1>::type>::value && !internal::is_same_type<T, typename internal::strip<P1>::type>::value >::type>
 enumerable_thread_specific (P1 &&arg1, P &&...args)
 Variadic constructor with initializer arguments. Each local instance of T is constructed by T(args...)
 
~enumerable_thread_specific ()
 Destructor.
 
+reference local ()
 returns reference to local, discarding exists
 
+reference local (bool &exists)
 Returns reference to calling thread's local copy, creating one if necessary.
 
+size_type size () const
 Get the number of local copies.
 
+bool empty () const
 true if there have been no local copies created
 
+iterator begin ()
 begin iterator
 
+iterator end ()
 end iterator
 
+const_iterator begin () const
 begin const iterator
 
+const_iterator end () const
 end const iterator
 
+range_type range (size_t grainsize=1)
 Get range for parallel algorithms.
 
+const_range_type range (size_t grainsize=1) const
 Get const range for parallel algorithms.
 
+void clear ()
 Destroys local copies.
 
enumerable_thread_specific (const enumerable_thread_specific &other)
 
+template<typename Alloc , ets_key_usage_type Cachetype>
 enumerable_thread_specific (const enumerable_thread_specific< T, Alloc, Cachetype > &other)
 
enumerable_thread_specific (enumerable_thread_specific &&other)
 
+template<typename Alloc , ets_key_usage_type Cachetype>
 enumerable_thread_specific (enumerable_thread_specific< T, Alloc, Cachetype > &&other)
 
+enumerable_thread_specificoperator= (const enumerable_thread_specific &other)
 
+template<typename Alloc , ets_key_usage_type Cachetype>
enumerable_thread_specificoperator= (const enumerable_thread_specific< T, Alloc, Cachetype > &other)
 
+enumerable_thread_specificoperator= (enumerable_thread_specific &&other)
 
+template<typename Alloc , ets_key_usage_type Cachetype>
enumerable_thread_specificoperator= (enumerable_thread_specific< T, Alloc, Cachetype > &&other)
 
+template<typename combine_func_t >
combine (combine_func_t f_combine)
 
+template<typename combine_func_t >
void combine_each (combine_func_t f_combine)
 
+ + + + +

+Friends

+template<typename U , typename A , ets_key_usage_type C>
class enumerable_thread_specific
 
+

Detailed Description

+

template<typename T, typename Allocator, ets_key_usage_type ETS_key_type>
+class tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >

+ +

The enumerable_thread_specific container.

+
enumerable_thread_specific has the following properties:
+- thread-local copies are lazily created, with default, exemplar or function initialization.
+- thread-local copies do not move (during lifetime, and excepting clear()) so the address of a copy is invariant.
+- the contained objects need not have operator=() defined if combine is not used.
+- enumerable_thread_specific containers may be copy-constructed or assigned.
+- thread-local copies can be managed by hash-table, or can be accessed via TLS storage for speed.
+- outside of parallel contexts, the contents of all thread-local copies are accessible by iterator or using combine or combine_each methods
+
Segmented iterator
When the thread-local objects are containers with input_iterators defined, a segmented iterator may be used to iterate over all the elements of all thread-local copies.
+
combine and combine_each
    +
  • Both methods are defined for enumerable_thread_specific.
  • +
  • combine() requires the type T have operator=() defined.
  • +
  • neither method modifies the contents of the object (though there is no guarantee that the applied methods do not modify the object.)
  • +
  • Both are evaluated in serial context (the methods are assumed to be non-benign.)
  • +
+
+

The documentation for this class was generated from the following file:
    +
  • enumerable_thread_specific.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00063.png b/doc/html/a00063.png new file mode 100644 index 0000000000..fba36b8c91 Binary files /dev/null and b/doc/html/a00063.png differ diff --git a/doc/html/a00064.html b/doc/html/a00064.html new file mode 100644 index 0000000000..245fac8d20 --- /dev/null +++ b/doc/html/a00064.html @@ -0,0 +1,146 @@ + + + + + + +tbb::filter Class Reference + + + + + + + +
+ +
+
tbb::filter Class Reference
+
+
+ +

A stage in a pipeline. + More...

+ +

#include <pipeline.h>

+
+Inheritance diagram for tbb::filter:
+
+
+ + +tbb::thread_bound_filter + +
+ + + + + + + + + + + + + + + + + +

+Static Protected Attributes

+static const unsigned char filter_is_serial = 0x1
 The lowest bit 0 is for parallel vs. serial.
 
static const unsigned char filter_is_out_of_order = 0x1<<4
 4th bit distinguishes ordered vs unordered filters. More...
 
+static const unsigned char filter_is_bound = 0x1<<5
 5th bit distinguishes thread-bound and regular filters.
 
+static const unsigned char filter_may_emit_null = 0x1<<6
 6th bit marks input filters emitting small objects
 
static const unsigned char exact_exception_propagation
 7th bit defines exception propagation mode expected by the application. More...
 
+

Detailed Description

+

A stage in a pipeline.

+

Member Data Documentation

+ +
+
+ + + + + +
+ + + + +
const unsigned char tbb::filter::exact_exception_propagation
+
+staticprotected
+
+Initial value:
=
+
#if TBB_USE_CAPTURED_EXCEPTION
+
0x0
+
+

7th bit defines exception propagation mode expected by the application.

+ +
+
+ +
+
+ + + + + +
+ + + + +
const unsigned char tbb::filter::filter_is_out_of_order = 0x1<<4
+
+staticprotected
+
+ +

4th bit distinguishes ordered vs unordered filters.

+

The bit was not set for parallel filters in TBB 2.1 and earlier, but is_ordered() function always treats parallel filters as out of order.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • pipeline.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00064.png b/doc/html/a00064.png new file mode 100644 index 0000000000..a4923e5f6f Binary files /dev/null and b/doc/html/a00064.png differ diff --git a/doc/html/a00065.html b/doc/html/a00065.html new file mode 100644 index 0000000000..3af3ab206a --- /dev/null +++ b/doc/html/a00065.html @@ -0,0 +1,102 @@ + + + + + + +tbb::interface6::filter_t< T, U > Class Template Reference + + + + + + + +
+ +
+
tbb::interface6::filter_t< T, U > Class Template Reference
+
+
+ +

Class representing a chain of type-safe pipeline filters. + More...

+ +

#include <pipeline.h>

+ + + + + + + + + + + +

+Public Member Functions

filter_t (const filter_t< T, U > &rhs)
 
+template<typename Body >
 filter_t (tbb::filter::mode mode, const Body &body)
 
+void operator= (const filter_t< T, U > &rhs)
 
+void clear ()
 
+ + + + + + + + + + +

+Friends

+class internal::pipeline_proxy
 
+template<typename T_ , typename U_ , typename Body >
filter_t< T_, U_ > make_filter (tbb::filter::mode, const Body &)
 Create a filter to participate in parallel_pipeline.
 
+template<typename T_ , typename V_ , typename U_ >
filter_t< T_, U_ > operator& (const filter_t< T_, V_ > &, const filter_t< V_, U_ > &)
 
+

Detailed Description

+

template<typename T, typename U>
+class tbb::interface6::filter_t< T, U >

+ +

Class representing a chain of type-safe pipeline filters.

+

The documentation for this class was generated from the following file:
    +
  • pipeline.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00066.html b/doc/html/a00066.html new file mode 100644 index 0000000000..20465dbe26 --- /dev/null +++ b/doc/html/a00066.html @@ -0,0 +1,73 @@ + + + + + + +tbb::final_scan_tag Struct Reference + + + + + + + +
+ +
+
tbb::final_scan_tag Struct Reference
+
+
+ +

Used to indicate that the final scan is being performed. + More...

+ +

#include <parallel_scan.h>

+ + + + +

+Static Public Member Functions

+static bool is_final_scan ()
 
+

Detailed Description

+

Used to indicate that the final scan is being performed.

+

The documentation for this struct was generated from the following file:
    +
  • parallel_scan.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00067.html b/doc/html/a00067.html new file mode 100644 index 0000000000..55a33d1b7b --- /dev/null +++ b/doc/html/a00067.html @@ -0,0 +1,79 @@ + + + + + + +tbb::interface6::fixed_pool Class Reference + + + + + + + +
+ +
+
tbb::interface6::fixed_pool Class Reference
+
+
+
+Inheritance diagram for tbb::interface6::fixed_pool:
+
+
+ + + +
+ + + + + + + + +

+Public Member Functions

fixed_pool (void *buf, size_t size)
 construct pool with underlying allocator
 
~fixed_pool ()
 destroy pool
 
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00067.png b/doc/html/a00067.png new file mode 100644 index 0000000000..8cf0f936e6 Binary files /dev/null and b/doc/html/a00067.png differ diff --git a/doc/html/a00068.html b/doc/html/a00068.html new file mode 100644 index 0000000000..a442c81cf2 --- /dev/null +++ b/doc/html/a00068.html @@ -0,0 +1,125 @@ + + + + + + +tbb::interface6::flattened2d< Container > Class Template Reference + + + + + + + +
+ +
+
tbb::interface6::flattened2d< Container > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef conval_type::size_type size_type
 Basic types.
 
+typedef
+conval_type::difference_type 
difference_type
 
+typedef conval_type::allocator_type allocator_type
 
+typedef conval_type::value_type value_type
 
+typedef conval_type::reference reference
 
+typedef
+conval_type::const_reference 
const_reference
 
+typedef conval_type::pointer pointer
 
+typedef conval_type::const_pointer const_pointer
 
+typedef
+internal::segmented_iterator
+< Container, value_type > 
iterator
 
+typedef
+internal::segmented_iterator
+< Container, const value_type > 
const_iterator
 
+ + + + + + + + + + + + + + + +

+Public Member Functions

flattened2d (const Container &c, typename Container::const_iterator b, typename Container::const_iterator e)
 
flattened2d (const Container &c)
 
+iterator begin ()
 
+iterator end ()
 
+const_iterator begin () const
 
+const_iterator end () const
 
+size_type size () const
 
+
The documentation for this class was generated from the following file:
    +
  • enumerable_thread_specific.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00069.html b/doc/html/a00069.html new file mode 100644 index 0000000000..0cdb0b978c --- /dev/null +++ b/doc/html/a00069.html @@ -0,0 +1,81 @@ + + + + + + +tbb::interface6::flow_control Class Reference + + + + + + + +
+ +
+
tbb::interface6::flow_control Class Reference
+
+
+ +

input_filter control to signal end-of-input for parallel_pipeline + More...

+ +

#include <pipeline.h>

+ + + + +

+Public Member Functions

+void stop ()
 
+ + + + +

+Friends

+template<typename T , typename U , typename Body >
class internal::concrete_filter
 
+

Detailed Description

+

input_filter control to signal end-of-input for parallel_pipeline

+

The documentation for this class was generated from the following file:
    +
  • pipeline.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00070.html b/doc/html/a00070.html new file mode 100644 index 0000000000..ab81fadbea --- /dev/null +++ b/doc/html/a00070.html @@ -0,0 +1,173 @@ + + + + + + +tbb::flow::interface8::function_node< Input, Output, Policy, Allocator > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::function_node< Input, Output, Policy, Allocator > Class Template Reference
+
+
+ +

Implements a function node that supports Input -> Output. + More...

+ +

#include <flow_graph.h>

+
+Inheritance diagram for tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >:
+
+
+ + +tbb::flow::interface8::graph_node + +
+ + + + + + + + + + + + + + + + +

+Public Types

+typedef Input input_type
 
+typedef Output output_type
 
+typedef sender< input_type > predecessor_type
 
+typedef receiver< output_type > successor_type
 
+typedef
+internal::function_input
+< input_type, output_type,
+Allocator > 
fInput_type
 
+typedef
+internal::function_input_queue
+< input_type, Allocator > 
input_queue_type
 
+typedef
+internal::function_output
+< output_type > 
fOutput_type
 
+ + + + + + + + + + + + + + + +

+Public Member Functions

+template<typename Body >
 function_node (graph &g, size_t concurrency, Body body)
 Constructor.
 
function_node (const function_node &src)
 Copy constructor.
 
+void set_name (const char *name)
 
+void extract ()
 
- Public Member Functions inherited from tbb::flow::interface8::graph_node
graph_node (graph &g)
 
+ + + + + +

+Protected Member Functions

+internal::broadcast_cache
+< output_type > & 
successors ()
 
+void reset_node (reset_flags f)
 
+ + + + + + + + + + +

+Friends

+template<typename R , typename B >
class run_and_put_task
 
+template<typename X , typename Y >
class internal::broadcast_cache
 
+template<typename X , typename Y >
class internal::round_robin_cache
 
+ + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from tbb::flow::interface8::graph_node
+graphmy_graph
 
+graph_nodenext
 
+graph_nodeprev
 
+

Detailed Description

+

template<typename Input, typename Output = continue_msg, typename Policy = queueing, typename Allocator = cache_aligned_allocator<Input>>
+class tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >

+ +

Implements a function node that supports Input -> Output.

+

The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00070.png b/doc/html/a00070.png new file mode 100644 index 0000000000..ec9684e5e2 Binary files /dev/null and b/doc/html/a00070.png differ diff --git a/doc/html/a00071.html b/doc/html/a00071.html new file mode 100644 index 0000000000..7fef722b81 --- /dev/null +++ b/doc/html/a00071.html @@ -0,0 +1,82 @@ + + + + + + +tbb::interface9::global_control Class Reference + + + + + + + +
+ +
+
tbb::interface9::global_control Class Reference
+
+
+ + + + +

+Public Types

enum  parameter { max_allowed_parallelism, +thread_stack_size, +parameter_max + }
 
+ + + +

+Public Member Functions

global_control (parameter p, size_t value)
 
+ + + +

+Static Public Member Functions

+static size_t active_value (parameter p)
 
+
The documentation for this class was generated from the following file:
    +
  • global_control.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00072.html b/doc/html/a00072.html new file mode 100644 index 0000000000..246cb49603 --- /dev/null +++ b/doc/html/a00072.html @@ -0,0 +1,355 @@ + + + + + + +tbb::flow::interface8::graph Class Reference + + + + + + +
+ + + + + +
+
+ +
+
tbb::flow::interface8::graph Class Reference
+
+
+ +

The graph class. + More...

+ +

#include <flow_graph.h>

+
+Inheritance diagram for tbb::flow::interface8::graph:
+
+
+ + + +
+ + + + + + +

+Public Types

+typedef graph_iterator< graph,
+graph_node
iterator
 
+typedef graph_iterator< const
+graph, const graph_node
const_iterator
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

graph ()
 Constructs a graph with isolated task_group_context.
 
graph (task_group_context &use_this_context)
 Constructs a graph with use_this_context as context.
 
 ~graph ()
 Destroys the graph. More...
 
+void set_name (const char *name)
 
void increment_wait_count ()
 Used to register that an external entity may still interact with the graph. More...
 
void decrement_wait_count ()
 Deregisters an external entity that may have interacted with the graph. More...
 
template<typename Receiver , typename Body >
void run (Receiver &r, Body body)
 Spawns a task that runs a body and puts its output to a specific receiver. More...
 
template<typename Body >
void run (Body body)
 Spawns a task that runs a function object. More...
 
void wait_for_all ()
 Wait until graph is idle and decrement_wait_count calls equals increment_wait_count calls. More...
 
+task * root_task ()
 Returns the root task of the graph.
 
+void set_active (bool a=true)
 
+bool is_active ()
 
+void add_task_to_reset_list (task *tp)
 
+iterator begin ()
 start iterator
 
+iterator end ()
 end iterator
 
+const_iterator begin () const
 start const iterator
 
+const_iterator end () const
 end const iterator
 
+const_iterator cbegin () const
 start const iterator
 
+const_iterator cend () const
 end const iterator
 
+bool is_cancelled ()
 return status of graph execution
 
+bool exception_thrown ()
 
+void reset (reset_flags f=rf_reset_protocol)
 
+ + + + + + +

+Friends

+class graph_node
 
+template<typename C , typename N >
class graph_iterator
 
+

Detailed Description

+

The graph class.

+

This class serves as a handle to the graph

+

Constructor & Destructor Documentation

+ +
+
+ + + + + +
+ + + + + + + +
tbb::flow::interface8::graph::~graph ()
+
+inline
+
+ +

Destroys the graph.

+

Calls wait_for_all, then destroys the root task and context.

+ +
+
+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + +
void tbb::flow::interface8::graph::decrement_wait_count ()
+
+inline
+
+ +

Deregisters an external entity that may have interacted with the graph.

+

The graph will not return from wait_for_all until all the number of decrement_wait_count calls matches the number of increment_wait_count calls.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
void tbb::flow::interface8::graph::increment_wait_count ()
+
+inline
+
+ +

Used to register that an external entity may still interact with the graph.

+

The graph will not return from wait_for_all until a matching number of decrement_wait_count calls is made.

+ +
+
+ +
+
+
+template<typename Receiver , typename Body >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void tbb::flow::interface8::graph::run (Receiver & r,
Body body 
)
+
+inline
+
+ +

Spawns a task that runs a body and puts its output to a specific receiver.

+

The task is spawned as a child of the graph. This is useful for running tasks that need to block a wait_for_all() on the graph. For example a one-off source.

+ +
+
+ +
+
+
+template<typename Body >
+ + + + + +
+ + + + + + + + +
void tbb::flow::interface8::graph::run (Body body)
+
+inline
+
+ +

Spawns a task that runs a function object.

+

The task is spawned as a child of the graph. This is useful for running tasks that need to block a wait_for_all() on the graph. For example a one-off source.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
void tbb::flow::interface8::graph::wait_for_all ()
+
+inline
+
+ +

Wait until graph is idle and decrement_wait_count calls equals increment_wait_count calls.

+

The waiting thread will go off and steal work while it is block in the wait_for_all.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00072.png b/doc/html/a00072.png new file mode 100644 index 0000000000..9b061dff8c Binary files /dev/null and b/doc/html/a00072.png differ diff --git a/doc/html/a00073.html b/doc/html/a00073.html new file mode 100644 index 0000000000..b3838f60c6 --- /dev/null +++ b/doc/html/a00073.html @@ -0,0 +1,131 @@ + + + + + + +tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType > Class Template Reference
+
+
+ + + + + + + + + + + + + + +

+Public Types

+typedef size_t size_type
 
+typedef GraphNodeType value_type
 
+typedef GraphNodeType * pointer
 
+typedef GraphNodeType & reference
 
+typedef const GraphNodeType & const_reference
 
+typedef std::forward_iterator_tag iterator_category
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

graph_iterator ()
 Default constructor.
 
graph_iterator (const graph_iterator &other)
 Copy constructor.
 
+graph_iteratoroperator= (const graph_iterator &other)
 Assignment.
 
+reference operator* () const
 Dereference.
 
+pointer operator-> () const
 Dereference.
 
+bool operator== (const graph_iterator &other) const
 Equality.
 
+bool operator!= (const graph_iterator &other) const
 Inequality.
 
+graph_iteratoroperator++ ()
 Pre-increment.
 
+graph_iterator operator++ (int)
 Post-increment.
 
+ + + + + +

+Friends

+class graph
 
+class graph_node
 
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00074.html b/doc/html/a00074.html new file mode 100644 index 0000000000..7543772123 --- /dev/null +++ b/doc/html/a00074.html @@ -0,0 +1,131 @@ + + + + + + +tbb::flow::interface8::graph_node Class Reference + + + + + + + +
+ +
+
tbb::flow::interface8::graph_node Class Referenceabstract
+
+
+ +

The base of all graph nodes. + More...

+ +

#include <flow_graph.h>

+
+Inheritance diagram for tbb::flow::interface8::graph_node:
+
+
+ + +tbb::flow::interface8::multifunction_node< TupleType, TupleType, rejecting, Allocator > +tbb::flow::interface8::async_node< Input, Output, Allocator > +tbb::flow::interface8::broadcast_node< T > +tbb::flow::interface8::buffer_node< T, A > +tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> > +tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> > +tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> > +tbb::flow::interface8::continue_node< Output > +tbb::flow::interface8::function_node< Input, Output, Policy, Allocator > +tbb::flow::interface8::limiter_node< T > +tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator > +tbb::flow::interface8::overwrite_node< T > +tbb::flow::interface8::source_node< Output > + +
+ + + + + + + + +

+Public Member Functions

graph_node (graph &g)
 
+virtual void set_name (const char *name)=0
 
+virtual void extract ()=0
 
+ + + +

+Protected Member Functions

+virtual void reset_node (reset_flags f=rf_reset_protocol)=0
 
+ + + + + + + +

+Protected Attributes

+graphmy_graph
 
+graph_nodenext
 
+graph_nodeprev
 
+ + + + + + +

+Friends

+class graph
 
+template<typename C , typename N >
class graph_iterator
 
+

Detailed Description

+

The base of all graph nodes.

+

The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00074.png b/doc/html/a00074.png new file mode 100644 index 0000000000..0b52871b6a Binary files /dev/null and b/doc/html/a00074.png differ diff --git a/doc/html/a00075.html b/doc/html/a00075.html new file mode 100644 index 0000000000..d4433673a4 --- /dev/null +++ b/doc/html/a00075.html @@ -0,0 +1,99 @@ + + + + + + +tbb::internal::tbb_thread_v3::id Class Reference + + + + + + + +
+ +
+
tbb::internal::tbb_thread_v3::id Class Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Friends

+class tbb_thread_v3
 
+bool operator== (tbb_thread_v3::id x, tbb_thread_v3::id y) __TBB_NOEXCEPT(true)
 
+bool operator!= (tbb_thread_v3::id x, tbb_thread_v3::id y) __TBB_NOEXCEPT(true)
 
+bool operator< (tbb_thread_v3::id x, tbb_thread_v3::id y) __TBB_NOEXCEPT(true)
 
+bool operator<= (tbb_thread_v3::id x, tbb_thread_v3::id y) __TBB_NOEXCEPT(true)
 
+bool operator> (tbb_thread_v3::id x, tbb_thread_v3::id y) __TBB_NOEXCEPT(true)
 
+bool operator>= (tbb_thread_v3::id x, tbb_thread_v3::id y) __TBB_NOEXCEPT(true)
 
+template<class charT , class traits >
std::basic_ostream< charT,
+traits > & 
operator<< (std::basic_ostream< charT, traits > &out, tbb_thread_v3::id id)
 
+tbb_thread_v3::id
+__TBB_EXPORTED_FUNC 
thread_get_id_v3 ()
 
+size_t tbb_hasher (const tbb_thread_v3::id &id)
 
+id atomic_compare_and_swap (id &location, const id &value, const id &comparand)
 
+
The documentation for this class was generated from the following file:
    +
  • tbb_thread.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00076.html b/doc/html/a00076.html new file mode 100644 index 0000000000..4494c54303 --- /dev/null +++ b/doc/html/a00076.html @@ -0,0 +1,81 @@ + + + + + + +tbb::improper_lock Class Reference + + + + + + + +
+ +
+
tbb::improper_lock Class Reference
+
+
+ +

Exception for PPL locks. + More...

+ +

#include <tbb_exception.h>

+
+Inheritance diagram for tbb::improper_lock:
+
+
+ + + +
+ + + + +

+Public Member Functions

+const char * what () const throw ()
 
+

Detailed Description

+

Exception for PPL locks.

+

The documentation for this class was generated from the following file:
    +
  • tbb_exception.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00076.png b/doc/html/a00076.png new file mode 100644 index 0000000000..7f4f5571e6 Binary files /dev/null and b/doc/html/a00076.png differ diff --git a/doc/html/a00077.html b/doc/html/a00077.html new file mode 100644 index 0000000000..0c7a3d5d78 --- /dev/null +++ b/doc/html/a00077.html @@ -0,0 +1,98 @@ + + + + + + +tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 > Class Template Reference
+
+
+
+Inheritance diagram for tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >:
+
+
+ + + +
+ + + + + + + + +

+Public Types

+typedef tuple< T0, T1, T2, T3,
+T4, T5, T6, T7, T8, T9 > 
InputTuple
 
+typedef internal::tagged_msg
+< size_t, T0, T1, T2, T3, T4,
+T5, T6, T7, T8, T9 > 
output_type
 
+typedef
+internal::unfolded_indexer_node
+< InputTuple > 
unfolded_type
 
+ + + + + + + +

+Public Member Functions

indexer_node (graph &g)
 
indexer_node (const indexer_node &other)
 
+void set_name (const char *name)
 
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00077.png b/doc/html/a00077.png new file mode 100644 index 0000000000..a2a0edf6e8 Binary files /dev/null and b/doc/html/a00077.png differ diff --git a/doc/html/a00078.html b/doc/html/a00078.html new file mode 100644 index 0000000000..1f72a4a7a2 --- /dev/null +++ b/doc/html/a00078.html @@ -0,0 +1,96 @@ + + + + + + +tbb::flow::interface8::indexer_node< T0 > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::indexer_node< T0 > Class Template Reference
+
+
+
+Inheritance diagram for tbb::flow::interface8::indexer_node< T0 >:
+
+
+ + + +
+ + + + + + + + +

+Public Types

+typedef tuple< T0 > InputTuple
 
+typedef internal::tagged_msg
+< size_t, T0 > 
output_type
 
+typedef
+internal::unfolded_indexer_node
+< InputTuple > 
unfolded_type
 
+ + + + + + + +

+Public Member Functions

indexer_node (graph &g)
 
indexer_node (const indexer_node &other)
 
+void set_name (const char *name)
 
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00078.png b/doc/html/a00078.png new file mode 100644 index 0000000000..fe6adbe591 Binary files /dev/null and b/doc/html/a00078.png differ diff --git a/doc/html/a00079.html b/doc/html/a00079.html new file mode 100644 index 0000000000..84e2ccb770 --- /dev/null +++ b/doc/html/a00079.html @@ -0,0 +1,96 @@ + + + + + + +tbb::flow::interface8::indexer_node< T0, T1 > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::indexer_node< T0, T1 > Class Template Reference
+
+
+
+Inheritance diagram for tbb::flow::interface8::indexer_node< T0, T1 >:
+
+
+ + + +
+ + + + + + + + +

+Public Types

+typedef tuple< T0, T1 > InputTuple
 
+typedef internal::tagged_msg
+< size_t, T0, T1 > 
output_type
 
+typedef
+internal::unfolded_indexer_node
+< InputTuple > 
unfolded_type
 
+ + + + + + + +

+Public Member Functions

indexer_node (graph &g)
 
indexer_node (const indexer_node &other)
 
+void set_name (const char *name)
 
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00079.png b/doc/html/a00079.png new file mode 100644 index 0000000000..1e6fd1b951 Binary files /dev/null and b/doc/html/a00079.png differ diff --git a/doc/html/a00080.html b/doc/html/a00080.html new file mode 100644 index 0000000000..90c17e4276 --- /dev/null +++ b/doc/html/a00080.html @@ -0,0 +1,96 @@ + + + + + + +tbb::flow::interface8::indexer_node< T0, T1, T2 > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::indexer_node< T0, T1, T2 > Class Template Reference
+
+
+
+Inheritance diagram for tbb::flow::interface8::indexer_node< T0, T1, T2 >:
+
+
+ + + +
+ + + + + + + + +

+Public Types

+typedef tuple< T0, T1, T2 > InputTuple
 
+typedef internal::tagged_msg
+< size_t, T0, T1, T2 > 
output_type
 
+typedef
+internal::unfolded_indexer_node
+< InputTuple > 
unfolded_type
 
+ + + + + + + +

+Public Member Functions

indexer_node (graph &g)
 
indexer_node (const indexer_node &other)
 
+void set_name (const char *name)
 
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00080.png b/doc/html/a00080.png new file mode 100644 index 0000000000..7bee186442 Binary files /dev/null and b/doc/html/a00080.png differ diff --git a/doc/html/a00081.html b/doc/html/a00081.html new file mode 100644 index 0000000000..49de8b7426 --- /dev/null +++ b/doc/html/a00081.html @@ -0,0 +1,96 @@ + + + + + + +tbb::flow::interface8::indexer_node< T0, T1, T2, T3 > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::indexer_node< T0, T1, T2, T3 > Class Template Reference
+
+
+
+Inheritance diagram for tbb::flow::interface8::indexer_node< T0, T1, T2, T3 >:
+
+
+ + + +
+ + + + + + + + +

+Public Types

+typedef tuple< T0, T1, T2, T3 > InputTuple
 
+typedef internal::tagged_msg
+< size_t, T0, T1, T2, T3 > 
output_type
 
+typedef
+internal::unfolded_indexer_node
+< InputTuple > 
unfolded_type
 
+ + + + + + + +

+Public Member Functions

indexer_node (graph &g)
 
indexer_node (const indexer_node &other)
 
+void set_name (const char *name)
 
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00081.png b/doc/html/a00081.png new file mode 100644 index 0000000000..bf8a089938 Binary files /dev/null and b/doc/html/a00081.png differ diff --git a/doc/html/a00082.html b/doc/html/a00082.html new file mode 100644 index 0000000000..35a51c9d7b --- /dev/null +++ b/doc/html/a00082.html @@ -0,0 +1,96 @@ + + + + + + +tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4 > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4 > Class Template Reference
+
+
+
+Inheritance diagram for tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4 >:
+
+
+ + + +
+ + + + + + + + +

+Public Types

+typedef tuple< T0, T1, T2, T3, T4 > InputTuple
 
+typedef internal::tagged_msg
+< size_t, T0, T1, T2, T3, T4 > 
output_type
 
+typedef
+internal::unfolded_indexer_node
+< InputTuple > 
unfolded_type
 
+ + + + + + + +

+Public Member Functions

indexer_node (graph &g)
 
indexer_node (const indexer_node &other)
 
+void set_name (const char *name)
 
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00082.png b/doc/html/a00082.png new file mode 100644 index 0000000000..e8c28bfb87 Binary files /dev/null and b/doc/html/a00082.png differ diff --git a/doc/html/a00083.html b/doc/html/a00083.html new file mode 100644 index 0000000000..f08f9202da --- /dev/null +++ b/doc/html/a00083.html @@ -0,0 +1,98 @@ + + + + + + +tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5 > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5 > Class Template Reference
+
+
+
+Inheritance diagram for tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5 >:
+
+
+ + + +
+ + + + + + + + +

+Public Types

+typedef tuple< T0, T1, T2, T3,
+T4, T5 > 
InputTuple
 
+typedef internal::tagged_msg
+< size_t, T0, T1, T2, T3, T4,
+T5 > 
output_type
 
+typedef
+internal::unfolded_indexer_node
+< InputTuple > 
unfolded_type
 
+ + + + + + + +

+Public Member Functions

indexer_node (graph &g)
 
indexer_node (const indexer_node &other)
 
+void set_name (const char *name)
 
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00083.png b/doc/html/a00083.png new file mode 100644 index 0000000000..e3d1565f5b Binary files /dev/null and b/doc/html/a00083.png differ diff --git a/doc/html/a00084.html b/doc/html/a00084.html new file mode 100644 index 0000000000..d9c185efee --- /dev/null +++ b/doc/html/a00084.html @@ -0,0 +1,98 @@ + + + + + + +tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5, T6 > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5, T6 > Class Template Reference
+
+
+
+Inheritance diagram for tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5, T6 >:
+
+
+ + + +
+ + + + + + + + +

+Public Types

+typedef tuple< T0, T1, T2, T3,
+T4, T5, T6 > 
InputTuple
 
+typedef internal::tagged_msg
+< size_t, T0, T1, T2, T3, T4,
+T5, T6 > 
output_type
 
+typedef
+internal::unfolded_indexer_node
+< InputTuple > 
unfolded_type
 
+ + + + + + + +

+Public Member Functions

indexer_node (graph &g)
 
indexer_node (const indexer_node &other)
 
+void set_name (const char *name)
 
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00084.png b/doc/html/a00084.png new file mode 100644 index 0000000000..a26e6ba874 Binary files /dev/null and b/doc/html/a00084.png differ diff --git a/doc/html/a00085.html b/doc/html/a00085.html new file mode 100644 index 0000000000..11486c8af9 --- /dev/null +++ b/doc/html/a00085.html @@ -0,0 +1,98 @@ + + + + + + +tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 > Class Template Reference
+
+
+
+Inheritance diagram for tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 >:
+
+
+ + + +
+ + + + + + + + +

+Public Types

+typedef tuple< T0, T1, T2, T3,
+T4, T5, T6, T7 > 
InputTuple
 
+typedef internal::tagged_msg
+< size_t, T0, T1, T2, T3, T4,
+T5, T6, T7 > 
output_type
 
+typedef
+internal::unfolded_indexer_node
+< InputTuple > 
unfolded_type
 
+ + + + + + + +

+Public Member Functions

indexer_node (graph &g)
 
indexer_node (const indexer_node &other)
 
+void set_name (const char *name)
 
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00085.png b/doc/html/a00085.png new file mode 100644 index 0000000000..ad53103e7b Binary files /dev/null and b/doc/html/a00085.png differ diff --git a/doc/html/a00086.html b/doc/html/a00086.html new file mode 100644 index 0000000000..839738e367 --- /dev/null +++ b/doc/html/a00086.html @@ -0,0 +1,98 @@ + + + + + + +tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 > Class Template Reference
+
+
+
+Inheritance diagram for tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 >:
+
+
+ + + +
+ + + + + + + + +

+Public Types

+typedef tuple< T0, T1, T2, T3,
+T4, T5, T6, T7, T8 > 
InputTuple
 
+typedef internal::tagged_msg
+< size_t, T0, T1, T2, T3, T4,
+T5, T6, T7, T8 > 
output_type
 
+typedef
+internal::unfolded_indexer_node
+< InputTuple > 
unfolded_type
 
+ + + + + + + +

+Public Member Functions

indexer_node (graph &g)
 
indexer_node (const indexer_node &other)
 
+void set_name (const char *name)
 
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00086.png b/doc/html/a00086.png new file mode 100644 index 0000000000..6c3aba1e44 Binary files /dev/null and b/doc/html/a00086.png differ diff --git a/doc/html/a00087.html b/doc/html/a00087.html new file mode 100644 index 0000000000..99759a4b4c --- /dev/null +++ b/doc/html/a00087.html @@ -0,0 +1,109 @@ + + + + + + +tbb::tick_count::interval_t Class Reference + + + + + + + +
+ +
+
tbb::tick_count::interval_t Class Reference
+
+
+ +

Relative time interval. + More...

+ +

#include <tick_count.h>

+ + + + + + + + + + + + + + + + + +

+Public Member Functions

interval_t ()
 Construct a time interval representing zero time duration.
 
interval_t (double sec)
 Construct a time interval representing sec seconds time duration.
 
+double seconds () const
 Return the length of a time interval in seconds.
 
+interval_toperator+= (const interval_t &i)
 Accumulation operator.
 
+interval_toperator-= (const interval_t &i)
 Subtraction operator.
 
+ + + + + + + + + + + + +

+Friends

+class tbb::tick_count
 
+interval_t operator- (const tick_count &t1, const tick_count &t0)
 Extract the intervals from the tick_counts and subtract them.
 
+interval_t operator+ (const interval_t &i, const interval_t &j)
 Add two intervals.
 
+interval_t operator- (const interval_t &i, const interval_t &j)
 Subtract two intervals.
 
+

Detailed Description

+

Relative time interval.

+

The documentation for this class was generated from the following file:
    +
  • tick_count.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00088.html b/doc/html/a00088.html new file mode 100644 index 0000000000..a47b8b4c34 --- /dev/null +++ b/doc/html/a00088.html @@ -0,0 +1,81 @@ + + + + + + +tbb::invalid_multiple_scheduling Class Reference + + + + + + + +
+ +
+
tbb::invalid_multiple_scheduling Class Reference
+
+
+ +

Exception for repeated scheduling of the same task_handle. + More...

+ +

#include <tbb_exception.h>

+
+Inheritance diagram for tbb::invalid_multiple_scheduling:
+
+
+ + + +
+ + + + +

+Public Member Functions

+const char * what () const throw ()
 
+

Detailed Description

+

Exception for repeated scheduling of the same task_handle.

+

The documentation for this class was generated from the following file:
    +
  • tbb_exception.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00088.png b/doc/html/a00088.png new file mode 100644 index 0000000000..ba8483c1cf Binary files /dev/null and b/doc/html/a00088.png differ diff --git a/doc/html/a00089.html b/doc/html/a00089.html new file mode 100644 index 0000000000..b2a99501cf --- /dev/null +++ b/doc/html/a00089.html @@ -0,0 +1,56 @@ + + + + + + +tbb::flow::interface8::join_node< OutputTuple, JP > Class Template Reference + + + + + + +
+ + + + + +
+
+
+
tbb::flow::interface8::join_node< OutputTuple, JP > Class Template Reference
+
+
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00090.html b/doc/html/a00090.html new file mode 100644 index 0000000000..be984c8d32 --- /dev/null +++ b/doc/html/a00090.html @@ -0,0 +1,124 @@ + + + + + + +tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > > Class Template Reference
+
+
+
+Inheritance diagram for tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >:
+
+
+ + + +
+ + + + + + +

+Public Types

+typedef OutputTuple output_type
 
+typedef
+unfolded_type::input_ports_type 
input_ports_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<typename __TBB_B0 , typename __TBB_B1 >
 join_node (graph &g, __TBB_B0 b0, __TBB_B1 b1)
 
+template<typename __TBB_B0 , typename __TBB_B1 , typename __TBB_B2 >
 join_node (graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2)
 
+template<typename __TBB_B0 , typename __TBB_B1 , typename __TBB_B2 , typename __TBB_B3 >
 join_node (graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3)
 
+template<typename __TBB_B0 , typename __TBB_B1 , typename __TBB_B2 , typename __TBB_B3 , typename __TBB_B4 >
 join_node (graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4)
 
+template<typename __TBB_B0 , typename __TBB_B1 , typename __TBB_B2 , typename __TBB_B3 , typename __TBB_B4 , typename __TBB_B5 >
 join_node (graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5)
 
+template<typename __TBB_B0 , typename __TBB_B1 , typename __TBB_B2 , typename __TBB_B3 , typename __TBB_B4 , typename __TBB_B5 , typename __TBB_B6 >
 join_node (graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6)
 
+template<typename __TBB_B0 , typename __TBB_B1 , typename __TBB_B2 , typename __TBB_B3 , typename __TBB_B4 , typename __TBB_B5 , typename __TBB_B6 , typename __TBB_B7 >
 join_node (graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6, __TBB_B7 b7)
 
+template<typename __TBB_B0 , typename __TBB_B1 , typename __TBB_B2 , typename __TBB_B3 , typename __TBB_B4 , typename __TBB_B5 , typename __TBB_B6 , typename __TBB_B7 , typename __TBB_B8 >
 join_node (graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6, __TBB_B7 b7, __TBB_B8 b8)
 
+template<typename __TBB_B0 , typename __TBB_B1 , typename __TBB_B2 , typename __TBB_B3 , typename __TBB_B4 , typename __TBB_B5 , typename __TBB_B6 , typename __TBB_B7 , typename __TBB_B8 , typename __TBB_B9 >
 join_node (graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6, __TBB_B7 b7, __TBB_B8 b8, __TBB_B9 b9)
 
join_node (const join_node &other)
 
+void set_name (const char *name)
 
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00090.png b/doc/html/a00090.png new file mode 100644 index 0000000000..04fbb34308 Binary files /dev/null and b/doc/html/a00090.png differ diff --git a/doc/html/a00091.html b/doc/html/a00091.html new file mode 100644 index 0000000000..2cd2ed353b --- /dev/null +++ b/doc/html/a00091.html @@ -0,0 +1,91 @@ + + + + + + +tbb::flow::interface8::join_node< OutputTuple, queueing > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::join_node< OutputTuple, queueing > Class Template Reference
+
+
+
+Inheritance diagram for tbb::flow::interface8::join_node< OutputTuple, queueing >:
+
+
+ + + +
+ + + + + + +

+Public Types

+typedef OutputTuple output_type
 
+typedef
+unfolded_type::input_ports_type 
input_ports_type
 
+ + + + + + + +

+Public Member Functions

join_node (graph &g)
 
join_node (const join_node &other)
 
+void set_name (const char *name)
 
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00091.png b/doc/html/a00091.png new file mode 100644 index 0000000000..890b2d6bb8 Binary files /dev/null and b/doc/html/a00091.png differ diff --git a/doc/html/a00092.html b/doc/html/a00092.html new file mode 100644 index 0000000000..74ede4c0bd --- /dev/null +++ b/doc/html/a00092.html @@ -0,0 +1,91 @@ + + + + + + +tbb::flow::interface8::join_node< OutputTuple, reserving > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::join_node< OutputTuple, reserving > Class Template Reference
+
+
+
+Inheritance diagram for tbb::flow::interface8::join_node< OutputTuple, reserving >:
+
+
+ + + +
+ + + + + + +

+Public Types

+typedef OutputTuple output_type
 
+typedef
+unfolded_type::input_ports_type 
input_ports_type
 
+ + + + + + + +

+Public Member Functions

join_node (graph &g)
 
join_node (const join_node &other)
 
+void set_name (const char *name)
 
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00092.png b/doc/html/a00092.png new file mode 100644 index 0000000000..0157a3afb3 Binary files /dev/null and b/doc/html/a00092.png differ diff --git a/doc/html/a00093.html b/doc/html/a00093.html new file mode 100644 index 0000000000..61a7a88498 --- /dev/null +++ b/doc/html/a00093.html @@ -0,0 +1,340 @@ + + + + + + +tbb::flow::interface8::limiter_node< T > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::limiter_node< T > Class Template Reference
+
+
+ +

Forwards messages only if the threshold has not been reached. + More...

+ +

#include <flow_graph.h>

+
+Inheritance diagram for tbb::flow::interface8::limiter_node< T >:
+
+
+ + +tbb::flow::interface8::graph_node +tbb::flow::interface8::receiver< T > +tbb::flow::interface8::sender< T > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef T input_type
 
+typedef T output_type
 
+typedef sender< input_typepredecessor_type
 
+typedef receiver< output_typesuccessor_type
 
+typedef receiver< input_type >
+::built_predecessors_type 
built_predecessors_type
 
+typedef sender< output_type >
+::built_successors_type 
built_successors_type
 
+typedef receiver< input_type >
+::predecessor_list_type 
predecessor_list_type
 
+typedef sender< output_type >
+::successor_list_type 
successor_list_type
 
- Public Types inherited from tbb::flow::interface8::receiver< T >
+typedef T input_type
 The input type of this receiver.
 
+typedef sender< T > predecessor_type
 The predecessor type for this node.
 
+typedef
+internal::edge_container
+< predecessor_type
built_predecessors_type
 
+typedef
+built_predecessors_type::edge_list_type 
predecessor_list_type
 
- Public Types inherited from tbb::flow::interface8::sender< T >
+typedef T output_type
 The output type of this sender.
 
+typedef receiver< T > successor_type
 The successor type for this node.
 
+typedef
+internal::edge_container
+< successor_type
built_successors_type
 interface to record edges for traversal & deletion
 
+typedef
+built_successors_type::edge_list_type 
successor_list_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

limiter_node (graph &g, size_t threshold, int num_decrement_predecessors=0)
 Constructor.
 
limiter_node (const limiter_node &src)
 Copy constructor.
 
+void set_name (const char *name)
 
+bool register_successor (receiver< output_type > &r)
 Replace the current successor with this new successor.
 
bool remove_successor (receiver< output_type > &r)
 Removes a successor from this node. More...
 
+built_successors_typebuilt_successors ()
 
+built_predecessors_typebuilt_predecessors ()
 
+void internal_add_built_successor (receiver< output_type > &src)
 
+void internal_delete_built_successor (receiver< output_type > &src)
 
+size_t successor_count ()
 
+void copy_successors (successor_list_type &v)
 
+void internal_add_built_predecessor (sender< output_type > &src)
 
+void internal_delete_built_predecessor (sender< output_type > &src)
 
+size_t predecessor_count ()
 
+void copy_predecessors (predecessor_list_type &v)
 
+void extract ()
 
+bool register_predecessor (predecessor_type &src)
 Adds src to the list of cached predecessors.
 
+bool remove_predecessor (predecessor_type &src)
 Removes src from the list of cached predecessors.
 
- Public Member Functions inherited from tbb::flow::interface8::graph_node
graph_node (graph &g)
 
- Public Member Functions inherited from tbb::flow::interface8::receiver< T >
+virtual ~receiver ()
 Destructor.
 
+bool try_put (const T &t)
 Put an item to the receiver.
 
+virtual void copy_predecessors (predecessor_list_type &)=0
 
- Public Member Functions inherited from tbb::flow::interface8::sender< T >
+virtual bool try_get (T &)
 Request an item from the sender.
 
+virtual bool try_reserve (T &)
 Reserves an item in the sender.
 
+virtual bool try_release ()
 Releases the reserved item.
 
+virtual bool try_consume ()
 Consumes the reserved item.
 
+ + + + +

+Public Attributes

+internal::decrementer
+< limiter_node< T > > 
decrement
 The internal receiver< continue_msg > that decrements the count.
 
+ + + + + + + + + + + +

+Protected Member Functions

+task * try_put_task (const T &t)
 Puts an item to this receiver.
 
+void reset_receiver (reset_flags)
 
+void reset_node (reset_flags f)
 
- Protected Member Functions inherited from tbb::flow::interface8::receiver< T >
+virtual bool is_continue_receiver ()
 
+ + + + + + + + + + + + + + +

+Friends

+class internal::forward_task_bypass< limiter_node< T > >
 
+class internal::decrementer< limiter_node< T > >
 
+template<typename R , typename B >
class run_and_put_task
 
+template<typename X , typename Y >
class internal::broadcast_cache
 
+template<typename X , typename Y >
class internal::round_robin_cache
 
+ + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from tbb::flow::interface8::graph_node
+graphmy_graph
 
+graph_nodenext
 
+graph_nodeprev
 
+

Detailed Description

+

template<typename T>
+class tbb::flow::interface8::limiter_node< T >

+ +

Forwards messages only if the threshold has not been reached.

+

This node forwards items until its threshold is reached. It contains no buffering. If the downstream node rejects, the message is dropped.

+

Member Function Documentation

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
bool tbb::flow::interface8::limiter_node< T >::remove_successor (receiver< output_type > & r)
+
+inlinevirtual
+
+ +

Removes a successor from this node.

+

r.remove_predecessor(*this) is also called.

+ +

Implements tbb::flow::interface8::sender< T >.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00093.png b/doc/html/a00093.png new file mode 100644 index 0000000000..0a2205abf8 Binary files /dev/null and b/doc/html/a00093.png differ diff --git a/doc/html/a00094.html b/doc/html/a00094.html new file mode 100644 index 0000000000..11f8092ad7 --- /dev/null +++ b/doc/html/a00094.html @@ -0,0 +1,89 @@ + + + + + + +tbb::interface6::memory_pool< Alloc > Class Template Reference + + + + + + + +
+ +
+
tbb::interface6::memory_pool< Alloc > Class Template Reference
+
+
+ +

Thread-safe growable pool allocator for variable-size requests. + More...

+ +

#include <memory_pool.h>

+
+Inheritance diagram for tbb::interface6::memory_pool< Alloc >:
+
+
+ + + +
+ + + + + + + + +

+Public Member Functions

memory_pool (const Alloc &src=Alloc())
 construct pool with underlying allocator
 
~memory_pool ()
 destroy pool
 
+

Detailed Description

+

template<typename Alloc>
+class tbb::interface6::memory_pool< Alloc >

+ +

Thread-safe growable pool allocator for variable-size requests.

+

The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00094.png b/doc/html/a00094.png new file mode 100644 index 0000000000..040c525da8 Binary files /dev/null and b/doc/html/a00094.png differ diff --git a/doc/html/a00095.html b/doc/html/a00095.html new file mode 100644 index 0000000000..f52b9e34bb --- /dev/null +++ b/doc/html/a00095.html @@ -0,0 +1,179 @@ + + + + + + +tbb::interface6::memory_pool_allocator< T, P > Class Template Reference + + + + + + + +
+ +
+
tbb::interface6::memory_pool_allocator< T, P > Class Template Reference
+
+
+ +

Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. + More...

+ +

#include <memory_pool.h>

+ + + + +

+Classes

struct  rebind
 
+ + + + + + + + + + + + + + + +

+Public Types

+typedef
+tbb::internal::allocator_type
+< T >::value_type 
value_type
 
+typedef value_type * pointer
 
+typedef const value_type * const_pointer
 
+typedef value_type & reference
 
+typedef const value_type & const_reference
 
+typedef size_t size_type
 
+typedef ptrdiff_t difference_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

memory_pool_allocator (pool_type &pool) throw ()
 
memory_pool_allocator (const memory_pool_allocator &src) throw ()
 
+template<typename U >
 memory_pool_allocator (const memory_pool_allocator< U, P > &src) throw ()
 
+pointer address (reference x) const
 
+const_pointer address (const_reference x) const
 
+pointer allocate (size_type n, const void *=0)
 Allocate space for n objects.
 
+void deallocate (pointer p, size_type)
 Free previously allocated block of memory.
 
+size_type max_size () const throw ()
 Largest value for which method allocate might succeed.
 
+template<typename U , typename... Args>
void construct (U *p, Args &&...args)
 Copy-construct value at location pointed to by p.
 
+void construct (pointer p, value_type &&value)
 
+void construct (pointer p, const value_type &value)
 
+void destroy (pointer p)
 Destroy value at location pointed to by p.
 
+ + + +

+Protected Types

+typedef P pool_type
 
+ + + +

+Protected Attributes

+pool_type * my_pool
 
+ + + + + + + + + + +

+Friends

+template<typename U , typename R >
class memory_pool_allocator
 
+template<typename V , typename U , typename R >
bool operator== (const memory_pool_allocator< V, R > &a, const memory_pool_allocator< U, R > &b)
 
+template<typename V , typename U , typename R >
bool operator!= (const memory_pool_allocator< V, R > &a, const memory_pool_allocator< U, R > &b)
 
+

Detailed Description

+

template<typename T, typename P = internal::pool_base>
+class tbb::interface6::memory_pool_allocator< T, P >

+ +

Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.

+

The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00096.html b/doc/html/a00096.html new file mode 100644 index 0000000000..89233cec85 --- /dev/null +++ b/doc/html/a00096.html @@ -0,0 +1,128 @@ + + + + + + +tbb::interface6::memory_pool_allocator< void, P > Class Template Reference + + + + + + + +
+ +
+
tbb::interface6::memory_pool_allocator< void, P > Class Template Reference
+
+
+ +

Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. + More...

+ +

#include <memory_pool.h>

+ + + + +

+Classes

struct  rebind
 
+ + + + + + + + + +

+Public Types

+typedef P pool_type
 
+typedef void * pointer
 
+typedef const void * const_pointer
 
+typedef void value_type
 
+ + + + + + + + +

+Public Member Functions

memory_pool_allocator (pool_type &pool) throw ()
 
memory_pool_allocator (const memory_pool_allocator &src) throw ()
 
+template<typename U >
 memory_pool_allocator (const memory_pool_allocator< U, P > &src) throw ()
 
+ + + +

+Protected Attributes

+pool_type * my_pool
 
+ + + + + + + + + + +

+Friends

+template<typename U , typename R >
class memory_pool_allocator
 
+template<typename V , typename U , typename R >
bool operator== (const memory_pool_allocator< V, R > &a, const memory_pool_allocator< U, R > &b)
 
+template<typename V , typename U , typename R >
bool operator!= (const memory_pool_allocator< V, R > &a, const memory_pool_allocator< U, R > &b)
 
+

Detailed Description

+

template<typename P>
+class tbb::interface6::memory_pool_allocator< void, P >

+ +

Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.

+

The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00097.html b/doc/html/a00097.html new file mode 100644 index 0000000000..c1b181e6cd --- /dev/null +++ b/doc/html/a00097.html @@ -0,0 +1,98 @@ + + + + + + +rml::MemPoolPolicy Struct Reference + + + + + + + +
+ +
+
rml::MemPoolPolicy Struct Reference
+
+
+ + + + +

+Public Types

enum  { TBBMALLOC_POOL_VERSION = 1 + }
 
+ + + +

+Public Member Functions

MemPoolPolicy (rawAllocType pAlloc_, rawFreeType pFree_, size_t granularity_=0, bool fixedPool_=false, bool keepAllMemory_=false)
 
+ + + + + + + + + + + + + + + +

+Public Attributes

+rawAllocType pAlloc
 
+rawFreeType pFree
 
+size_t granularity
 
+int version
 
+unsigned fixedPool: 1
 
+unsigned keepAllMemory: 1
 
+unsigned reserved: 30
 
+
The documentation for this struct was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00098.html b/doc/html/a00098.html new file mode 100644 index 0000000000..527efa57f1 --- /dev/null +++ b/doc/html/a00098.html @@ -0,0 +1,81 @@ + + + + + + +tbb::missing_wait Class Reference + + + + + + + +
+ +
+
tbb::missing_wait Class Reference
+
+
+ +

Exception for missing wait on structured_task_group. + More...

+ +

#include <tbb_exception.h>

+
+Inheritance diagram for tbb::missing_wait:
+
+
+ + + +
+ + + + +

+Public Member Functions

+const char * what () const throw ()
 
+

Detailed Description

+

Exception for missing wait on structured_task_group.

+

The documentation for this class was generated from the following file:
    +
  • tbb_exception.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00098.png b/doc/html/a00098.png new file mode 100644 index 0000000000..7f9c4b3140 Binary files /dev/null and b/doc/html/a00098.png differ diff --git a/doc/html/a00099.html b/doc/html/a00099.html new file mode 100644 index 0000000000..43851b981c --- /dev/null +++ b/doc/html/a00099.html @@ -0,0 +1,230 @@ + + + + + + +tbb::movable_exception< ExceptionData > Class Template Reference + + + + + + + +
+ +
+
tbb::movable_exception< ExceptionData > Class Template Reference
+
+
+ +

Template that can be used to implement exception that transfers arbitrary ExceptionData to the root thread. + More...

+ +

#include <tbb_exception.h>

+
+Inheritance diagram for tbb::movable_exception< ExceptionData >:
+
+
+ + +tbb::tbb_exception + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

movable_exception (const ExceptionData &data_)
 
movable_exception (const movable_exception &src) throw ()
 
+const movable_exceptionoperator= (const movable_exception &src)
 
+ExceptionData & data () throw ()
 
+const ExceptionData & data () const throw ()
 
+const char * name () const throw ()
 Returns RTTI name of the originally intercepted exception.
 
+const char * what () const throw ()
 Returns the result of originally intercepted exception's what() method.
 
movable_exceptionmove () throw ()
 Creates and returns pointer to the deep copy of this exception object. More...
 
void destroy () throw ()
 Destroys objects created by the move() method. More...
 
void throw_self ()
 Throws this exception object. More...
 
- Public Member Functions inherited from tbb::tbb_exception
void operator delete (void *p)
 
+ + + + +

+Protected Attributes

+ExceptionData my_exception_data
 User data.
 
+

Detailed Description

+

template<typename ExceptionData>
+class tbb::movable_exception< ExceptionData >

+ +

Template that can be used to implement exception that transfers arbitrary ExceptionData to the root thread.

+

Code using TBB can instantiate this template with an arbitrary ExceptionData type and throw this exception object. Such exceptions are intercepted by the TBB scheduler and delivered to the root thread ().

+
See Also
tbb::tbb_exception
+

Member Function Documentation

+ +
+
+
+template<typename ExceptionData >
+ + + + + +
+ + + + + + + + + + + + + +
void tbb::movable_exception< ExceptionData >::destroy ()
throw (
)
+
+inlinevirtual
+
+ +

Destroys objects created by the move() method.

+

Frees memory and calls destructor for this exception object. Can and must be used only on objects created by the move method.

+ +

Implements tbb::tbb_exception.

+ +
+
+ +
+
+
+template<typename ExceptionData >
+ + + + + +
+ + + + + + + + + + + + + +
movable_exception* tbb::movable_exception< ExceptionData >::move ()
throw (
)
+
+inlinevirtual
+
+ +

Creates and returns pointer to the deep copy of this exception object.

+

Move semantics is allowed.

+ +

Implements tbb::tbb_exception.

+ +
+
+ +
+
+
+template<typename ExceptionData >
+ + + + + +
+ + + + + + + +
void tbb::movable_exception< ExceptionData >::throw_self ()
+
+inlinevirtual
+
+ +

Throws this exception object.

+

Make sure that if you have several levels of derivation from this interface you implement or override this method on the most derived level. The implementation is as simple as "throw *this;". Failure to do this will result in exception of a base class type being thrown.

+ +

Implements tbb::tbb_exception.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • tbb_exception.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00099.png b/doc/html/a00099.png new file mode 100644 index 0000000000..2c2e3fe83e Binary files /dev/null and b/doc/html/a00099.png differ diff --git a/doc/html/a00100.html b/doc/html/a00100.html new file mode 100644 index 0000000000..11ff0665eb --- /dev/null +++ b/doc/html/a00100.html @@ -0,0 +1,154 @@ + + + + + + +tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator > Class Template Reference
+
+
+ +

implements a function node that supports Input -> (set of outputs) + More...

+ +

#include <flow_graph.h>

+
+Inheritance diagram for tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >:
+
+
+ + +tbb::flow::interface8::graph_node + +
+ + + + + + + + + + + + +

+Public Types

+typedef Input input_type
 
+typedef null_type output_type
 
+typedef
+internal::wrap_tuple_elements
+< N,
+internal::multifunction_output,
+Output >::type 
output_ports_type
 
+typedef
+internal::multifunction_input
+< input_type,
+output_ports_type, Allocator > 
fInput_type
 
+typedef
+internal::function_input_queue
+< input_type, Allocator > 
input_queue_type
 
+ + + + + + + + + + + + + +

+Public Member Functions

+template<typename Body >
 multifunction_node (graph &g, size_t concurrency, Body body)
 
multifunction_node (const multifunction_node &other)
 
+void set_name (const char *name)
 
+void extract ()
 
- Public Member Functions inherited from tbb::flow::interface8::graph_node
graph_node (graph &g)
 
+ + + +

+Protected Member Functions

+void reset_node (reset_flags f)
 
+ + + +

+Static Protected Attributes

+static const int N = tbb::flow::tuple_size<Output>::value
 
+ + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from tbb::flow::interface8::graph_node
+graphmy_graph
 
+graph_nodenext
 
+graph_nodeprev
 
+

Detailed Description

+

template<typename Input, typename Output, typename Policy = queueing, typename Allocator = cache_aligned_allocator<Input>>
+class tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >

+ +

implements a function node that supports Input -> (set of outputs)

+

The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00100.png b/doc/html/a00100.png new file mode 100644 index 0000000000..e1645b517a Binary files /dev/null and b/doc/html/a00100.png differ diff --git a/doc/html/a00101.html b/doc/html/a00101.html new file mode 100644 index 0000000000..e47237f586 --- /dev/null +++ b/doc/html/a00101.html @@ -0,0 +1,175 @@ + + + + + + +tbb::mutex Class Reference + + + + + + + + +
+ +

Wrapper around the platform's native reader-writer lock. + More...

+ +

#include <mutex.h>

+
+Inheritance diagram for tbb::mutex:
+
+
+ + + +
+ + + + + +

+Classes

class  scoped_lock
 The scoped locking pattern. More...
 
+ + + + + + + + +

+Public Types

enum  state_t { INITIALIZED =0x1234, +DESTROYED =0x789A, +HELD =0x56CD + }
 
+typedef LPCRITICAL_SECTION native_handle_type
 Return native_handle.
 
+typedef pthread_mutex_t * native_handle_type
 
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

mutex ()
 Construct unacquired mutex.
 
+void lock ()
 Acquire lock.
 
bool try_lock ()
 Try acquiring lock (non-blocking) More...
 
+void unlock ()
 Release lock.
 
+native_handle_type native_handle ()
 
+void set_state (state_t to)
 Set the internal state.
 
+ + + + + + + +

+Static Public Attributes

+static const bool is_rw_mutex = false
 
+static const bool is_recursive_mutex = false
 
+static const bool is_fair_mutex = false
 
+ + + +

+Friends

+class scoped_lock
 
+

Detailed Description

+

Wrapper around the platform's native reader-writer lock.

+

For testing purposes only.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + +
bool tbb::mutex::try_lock ()
+
+inline
+
+ +

Try acquiring lock (non-blocking)

+

Return true if lock acquired; false otherwise.

+ +

References tbb::aligned_space< T, N >::begin().

+ +

Referenced by tbb::mutex::scoped_lock::try_acquire().

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • mutex.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00101.png b/doc/html/a00101.png new file mode 100644 index 0000000000..5fdf55b651 Binary files /dev/null and b/doc/html/a00101.png differ diff --git a/doc/html/a00102.html b/doc/html/a00102.html new file mode 100644 index 0000000000..46738e6c9a --- /dev/null +++ b/doc/html/a00102.html @@ -0,0 +1,106 @@ + + + + + + +tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node Struct Reference + + + + + + + +
+ +
+
tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node Struct Reference
+
+
+
+Inheritance diagram for tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node:
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

node (const Key &key)
 
node (const Key &key, const T &t)
 
node (const Key &key, T &&t)
 
node (value_type &&i)
 
+template<typename... Args>
 node (Args &&...args)
 
node (value_type &i)
 
node (const value_type &i)
 
+void * operator new (size_t, node_allocator_type &a)
 
+void operator delete (void *ptr, node_allocator_type &a)
 
+ + + +

+Public Attributes

+value_type item
 
+
The documentation for this struct was generated from the following file:
    +
  • concurrent_hash_map.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00102.png b/doc/html/a00102.png new file mode 100644 index 0000000000..b914379539 Binary files /dev/null and b/doc/html/a00102.png differ diff --git a/doc/html/a00103.html b/doc/html/a00103.html new file mode 100644 index 0000000000..447da11706 --- /dev/null +++ b/doc/html/a00103.html @@ -0,0 +1,95 @@ + + + + + + +tbb::null_mutex Class Reference + + + + + + + +
+ +
+
tbb::null_mutex Class Reference
+
+
+ +

A mutex which does nothing. + More...

+ +

#include <null_mutex.h>

+
+Inheritance diagram for tbb::null_mutex:
+
+
+ + + +
+ + + + + +

+Classes

class  scoped_lock
 Represents acquisition of a mutex. More...
 
+ + + + + + + +

+Static Public Attributes

+static const bool is_rw_mutex = false
 
+static const bool is_recursive_mutex = true
 
+static const bool is_fair_mutex = true
 
+

Detailed Description

+

A mutex which does nothing.

+

A null_mutex does no operation and simulates success.

+

The documentation for this class was generated from the following file:
    +
  • null_mutex.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00103.png b/doc/html/a00103.png new file mode 100644 index 0000000000..b72b3103da Binary files /dev/null and b/doc/html/a00103.png differ diff --git a/doc/html/a00104.html b/doc/html/a00104.html new file mode 100644 index 0000000000..66327aa2d2 --- /dev/null +++ b/doc/html/a00104.html @@ -0,0 +1,95 @@ + + + + + + +tbb::null_rw_mutex Class Reference + + + + + + + +
+ +
+
tbb::null_rw_mutex Class Reference
+
+
+ +

A rw mutex which does nothing. + More...

+ +

#include <null_rw_mutex.h>

+
+Inheritance diagram for tbb::null_rw_mutex:
+
+
+ + + +
+ + + + + +

+Classes

class  scoped_lock
 Represents acquisition of a mutex. More...
 
+ + + + + + + +

+Static Public Attributes

+static const bool is_rw_mutex = true
 
+static const bool is_recursive_mutex = true
 
+static const bool is_fair_mutex = true
 
+

Detailed Description

+

A rw mutex which does nothing.

+

A null_rw_mutex is a rw mutex that does nothing and simulates successful operation.

+

The documentation for this class was generated from the following file:
    +
  • null_rw_mutex.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00104.png b/doc/html/a00104.png new file mode 100644 index 0000000000..1ddf07110e Binary files /dev/null and b/doc/html/a00104.png differ diff --git a/doc/html/a00105.html b/doc/html/a00105.html new file mode 100644 index 0000000000..b064f74c27 --- /dev/null +++ b/doc/html/a00105.html @@ -0,0 +1,56 @@ + + + + + + +tbb::flow::interface8::null_type Struct Reference + + + + + + +
+ + + + + +
+
+
+
tbb::flow::interface8::null_type Struct Reference
+
+
+
The documentation for this struct was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00106.html b/doc/html/a00106.html new file mode 100644 index 0000000000..0cd4cfca24 --- /dev/null +++ b/doc/html/a00106.html @@ -0,0 +1,305 @@ + + + + + + +tbb::flow::interface8::overwrite_node< T > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::overwrite_node< T > Class Template Reference
+
+
+
+Inheritance diagram for tbb::flow::interface8::overwrite_node< T >:
+
+
+ + +tbb::flow::interface8::graph_node +tbb::flow::interface8::receiver< T > +tbb::flow::interface8::sender< T > +tbb::flow::interface8::write_once_node< T > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef T input_type
 
+typedef T output_type
 
+typedef sender< input_typepredecessor_type
 
+typedef receiver< output_typesuccessor_type
 
+typedef receiver< input_type >
+::built_predecessors_type 
built_predecessors_type
 
+typedef sender< output_type >
+::built_successors_type 
built_successors_type
 
+typedef receiver< input_type >
+::predecessor_list_type 
predecessor_list_type
 
+typedef sender< output_type >
+::successor_list_type 
successor_list_type
 
- Public Types inherited from tbb::flow::interface8::receiver< T >
+typedef T input_type
 The input type of this receiver.
 
+typedef sender< T > predecessor_type
 The predecessor type for this node.
 
+typedef
+internal::edge_container
+< predecessor_type
built_predecessors_type
 
+typedef
+built_predecessors_type::edge_list_type 
predecessor_list_type
 
- Public Types inherited from tbb::flow::interface8::sender< T >
+typedef T output_type
 The output type of this sender.
 
+typedef receiver< T > successor_type
 The successor type for this node.
 
+typedef
+internal::edge_container
+< successor_type
built_successors_type
 interface to record edges for traversal & deletion
 
+typedef
+built_successors_type::edge_list_type 
successor_list_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

overwrite_node (graph &g)
 
overwrite_node (const overwrite_node &src)
 
+void set_name (const char *name)
 
+bool register_successor (successor_type &s)
 Add a new successor to this node.
 
+bool remove_successor (successor_type &s)
 Removes a successor from this node.
 
+built_predecessors_typebuilt_predecessors ()
 
+built_successors_typebuilt_successors ()
 
+void internal_add_built_successor (successor_type &s)
 
+void internal_delete_built_successor (successor_type &s)
 
+size_t successor_count ()
 
+void copy_successors (successor_list_type &v)
 
+void internal_add_built_predecessor (predecessor_type &p)
 
+void internal_delete_built_predecessor (predecessor_type &p)
 
+size_t predecessor_count ()
 
+void copy_predecessors (predecessor_list_type &v)
 
+void extract ()
 
+bool try_get (input_type &v)
 Request an item from the sender.
 
+bool is_valid ()
 
+void clear ()
 
- Public Member Functions inherited from tbb::flow::interface8::graph_node
graph_node (graph &g)
 
- Public Member Functions inherited from tbb::flow::interface8::receiver< T >
+virtual ~receiver ()
 Destructor.
 
+bool try_put (const T &t)
 Put an item to the receiver.
 
+virtual bool register_predecessor (predecessor_type &)
 Add a predecessor to the node.
 
+virtual bool remove_predecessor (predecessor_type &)
 Remove a predecessor from the node.
 
+virtual void copy_predecessors (predecessor_list_type &)=0
 
- Public Member Functions inherited from tbb::flow::interface8::sender< T >
+virtual bool try_reserve (T &)
 Reserves an item in the sender.
 
+virtual bool try_release ()
 Releases the reserved item.
 
+virtual bool try_consume ()
 Consumes the reserved item.
 
+ + + + + + + + + + +

+Protected Member Functions

+task * try_put_task (const input_type &v)
 
+void reset_receiver (reset_flags)
 
+void reset_node (reset_flags f)
 
- Protected Member Functions inherited from tbb::flow::interface8::receiver< T >
+virtual bool is_continue_receiver ()
 
+ + + + + + + + + + + + + + + + + + +

+Protected Attributes

+spin_mutex my_mutex
 
+internal::broadcast_cache
+< input_type, null_rw_mutex
my_successors
 
+internal::edge_container
+< predecessor_type
my_built_predecessors
 
+input_type my_buffer
 
+bool my_buffer_is_valid
 
- Protected Attributes inherited from tbb::flow::interface8::graph_node
+graphmy_graph
 
+graph_nodenext
 
+graph_nodeprev
 
+ + + + + + + + + + +

+Friends

+template<typename R , typename B >
class run_and_put_task
 
+template<typename X , typename Y >
class internal::broadcast_cache
 
+template<typename X , typename Y >
class internal::round_robin_cache
 
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00106.png b/doc/html/a00106.png new file mode 100644 index 0000000000..4954ba93a5 Binary files /dev/null and b/doc/html/a00106.png differ diff --git a/doc/html/a00107.html b/doc/html/a00107.html new file mode 100644 index 0000000000..fd1d9b0dfa --- /dev/null +++ b/doc/html/a00107.html @@ -0,0 +1,99 @@ + + + + + + +tbb::parallel_do_feeder< Item > Class Template Reference + + + + + + + +
+ +
+
tbb::parallel_do_feeder< Item > Class Template Referenceabstract
+
+
+ +

Class the user supplied algorithm body uses to add new tasks. + More...

+ +

#include <parallel_do.h>

+
+Inheritance diagram for tbb::parallel_do_feeder< Item >:
+
+
+ + + +
+ + + + + +

+Public Member Functions

+void add (const Item &item)
 Add a work item to a running parallel_do.
 
+ + + + +

+Friends

+template<typename Body_ , typename Item_ >
class internal::parallel_do_feeder_impl
 
+

Detailed Description

+

template<typename Item>
+class tbb::parallel_do_feeder< Item >

+ +

Class the user supplied algorithm body uses to add new tasks.

+
Parameters
+ + +
ItemWork item type
+
+
+

The documentation for this class was generated from the following file:
    +
  • parallel_do.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00107.png b/doc/html/a00107.png new file mode 100644 index 0000000000..742cad9d02 Binary files /dev/null and b/doc/html/a00107.png differ diff --git a/doc/html/a00108.html b/doc/html/a00108.html new file mode 100644 index 0000000000..11cc55737b --- /dev/null +++ b/doc/html/a00108.html @@ -0,0 +1,165 @@ + + + + + + +tbb::parallel_while< Body > Class Template Reference + + + + + + + +
+ +
+
tbb::parallel_while< Body > Class Template Reference
+
+
+ +

Parallel iteration over a stream, with optional addition of more work. + More...

+ +

#include <parallel_while.h>

+
+Inheritance diagram for tbb::parallel_while< Body >:
+
+
+ + + +
+ + + + + +

+Public Types

+typedef Body::argument_type value_type
 Type of items.
 
+ + + + + + + + + + + + + + +

+Public Member Functions

parallel_while ()
 Construct empty non-running parallel while.
 
~parallel_while ()
 Destructor cleans up data members before returning.
 
template<typename Stream >
void run (Stream &stream, const Body &body)
 Apply body.apply to each item in the stream. More...
 
void add (const value_type &item)
 Add a work item while running. More...
 
+

Detailed Description

+

template<typename Body>
+class tbb::parallel_while< Body >

+ +

Parallel iteration over a stream, with optional addition of more work.

+

The Body b has the requirement:
+ "b(v)"
+ "b.argument_type"
+ where v is an argument_type

+

Member Function Documentation

+ +
+
+
+template<typename Body >
+ + + + + + + + +
void tbb::parallel_while< Body >::add (const value_typeitem)
+
+ +

Add a work item while running.

+

Should be executed only by body.apply or a thread spawned therefrom.

+ +
+
+ +
+
+
+template<typename Body >
+
+template<typename Stream >
+ + + + + + + + + + + + + + + + + + +
void tbb::parallel_while< Body >::run (Stream & stream,
const Body & body 
)
+
+ +

Apply body.apply to each item in the stream.

+

A Stream s has the requirements
+ "S::value_type"
+ "s.pop_if_present(value) is convertible to bool

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • parallel_while.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00108.png b/doc/html/a00108.png new file mode 100644 index 0000000000..fc86480fb6 Binary files /dev/null and b/doc/html/a00108.png differ diff --git a/doc/html/a00109.html b/doc/html/a00109.html new file mode 100644 index 0000000000..c96c2a62dc --- /dev/null +++ b/doc/html/a00109.html @@ -0,0 +1,139 @@ + + + + + + +tbb::pipeline Class Reference + + + + + + + +
+ +
+
tbb::pipeline Class Reference
+
+
+ +

A processing pipeline that applies filters to items. + More...

+ +

#include <pipeline.h>

+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+__TBB_EXPORTED_METHOD pipeline ()
 Construct empty pipeline.
 
virtual __TBB_EXPORTED_METHOD ~pipeline ()
 
+void __TBB_EXPORTED_METHOD add_filter (filter &filter_)
 Add filter to end of pipeline.
 
+void __TBB_EXPORTED_METHOD run (size_t max_number_of_live_tokens)
 Run the pipeline to completion.
 
+void __TBB_EXPORTED_METHOD run (size_t max_number_of_live_tokens, tbb::task_group_context &context)
 Run the pipeline to completion with user-supplied context.
 
+void __TBB_EXPORTED_METHOD clear ()
 Remove all filters from the pipeline.
 
+ + + + + + + + + + + + + +

+Friends

+class internal::stage_task
 
+class internal::pipeline_root_task
 
+class filter
 
+class thread_bound_filter
 
+class internal::pipeline_cleaner
 
+class tbb::interface6::internal::pipeline_proxy
 
+

Detailed Description

+

A processing pipeline that applies filters to items.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + +
+ + + + + + + +
virtual __TBB_EXPORTED_METHOD tbb::pipeline::~pipeline ()
+
+virtual
+
+

Though the current implementation declares the destructor virtual, do not rely on this detail. The virtualness is deprecated and may disappear in future versions of TBB.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • pipeline.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00110.html b/doc/html/a00110.html new file mode 100644 index 0000000000..afb7ba1624 --- /dev/null +++ b/doc/html/a00110.html @@ -0,0 +1,73 @@ + + + + + + +tbb::pre_scan_tag Struct Reference + + + + + + + +
+ +
+
tbb::pre_scan_tag Struct Reference
+
+
+ +

Used to indicate that the initial scan is being performed. + More...

+ +

#include <parallel_scan.h>

+ + + + +

+Static Public Member Functions

+static bool is_final_scan ()
 
+

Detailed Description

+

Used to indicate that the initial scan is being performed.

+

The documentation for this struct was generated from the following file:
    +
  • parallel_scan.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00111.html b/doc/html/a00111.html new file mode 100644 index 0000000000..c0467f2539 --- /dev/null +++ b/doc/html/a00111.html @@ -0,0 +1,429 @@ + + + + + + +tbb::flow::interface8::priority_queue_node< T, Compare, A > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::priority_queue_node< T, Compare, A > Class Template Reference
+
+
+ +

Forwards messages in priority order. + More...

+ +

#include <flow_graph.h>

+
+Inheritance diagram for tbb::flow::interface8::priority_queue_node< T, Compare, A >:
+
+
+ + +tbb::flow::interface8::buffer_node< T, A > +tbb::flow::interface8::graph_node +tbb::flow::interface8::receiver< T > +tbb::flow::interface8::sender< T > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef T input_type
 
+typedef T output_type
 
+typedef buffer_node< T, A > base_type
 
+typedef sender< input_typepredecessor_type
 
+typedef receiver< output_typesuccessor_type
 
- Public Types inherited from tbb::flow::interface8::buffer_node< T, A >
+typedef T input_type
 
+typedef T output_type
 
+typedef sender< input_typepredecessor_type
 
+typedef receiver< output_typesuccessor_type
 
+typedef buffer_node< T, A > class_type
 
+typedef receiver< input_type >
+::predecessor_list_type 
predecessor_list_type
 
+typedef sender< output_type >
+::successor_list_type 
successor_list_type
 
- Public Types inherited from tbb::flow::interface8::receiver< T >
+typedef T input_type
 The input type of this receiver.
 
+typedef sender< T > predecessor_type
 The predecessor type for this node.
 
+typedef
+internal::edge_container
+< predecessor_type
built_predecessors_type
 
+typedef
+built_predecessors_type::edge_list_type 
predecessor_list_type
 
- Public Types inherited from tbb::flow::interface8::sender< T >
+typedef T output_type
 The output type of this sender.
 
+typedef receiver< T > successor_type
 The successor type for this node.
 
+typedef
+internal::edge_container
+< successor_type
built_successors_type
 interface to record edges for traversal & deletion
 
+typedef
+built_successors_type::edge_list_type 
successor_list_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

priority_queue_node (graph &g)
 Constructor.
 
priority_queue_node (const priority_queue_node &src)
 Copy constructor.
 
+void set_name (const char *name)
 
- Public Member Functions inherited from tbb::flow::interface8::buffer_node< T, A >
buffer_node (graph &g)
 Constructor.
 
buffer_node (const buffer_node &src)
 Copy constructor.
 
bool register_successor (successor_type &r)
 Adds a new successor. More...
 
+void internal_add_built_successor (successor_type &r)
 
+void internal_delete_built_successor (successor_type &r)
 
+void internal_add_built_predecessor (predecessor_type &p)
 
+void internal_delete_built_predecessor (predecessor_type &p)
 
+size_t predecessor_count ()
 
+size_t successor_count ()
 
+void copy_predecessors (predecessor_list_type &v)
 
+void copy_successors (successor_list_type &v)
 
bool remove_successor (successor_type &r)
 Removes a successor. More...
 
bool try_get (T &v)
 Request an item from the buffer_node. More...
 
bool try_reserve (T &v)
 Reserves an item. More...
 
bool try_release ()
 Release a reserved item. More...
 
bool try_consume ()
 Consumes a reserved item. More...
 
+void extract ()
 
- Public Member Functions inherited from tbb::flow::interface8::graph_node
graph_node (graph &g)
 
- Public Member Functions inherited from tbb::flow::interface8::receiver< T >
+virtual ~receiver ()
 Destructor.
 
+bool try_put (const T &t)
 Put an item to the receiver.
 
+virtual bool register_predecessor (predecessor_type &)
 Add a predecessor to the node.
 
+virtual bool remove_predecessor (predecessor_type &)
 Remove a predecessor from the node.
 
+virtual void copy_predecessors (predecessor_list_type &)=0
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Protected Types

enum  op_stat { WAIT =0, +SUCCEEDED, +FAILED + }
 
+typedef buffer_node< T, A >
+::size_type 
size_type
 
+typedef buffer_node< T, A >
+::item_type 
item_type
 
+typedef buffer_node< T, A >
+::buffer_operation 
prio_operation
 
- Protected Types inherited from tbb::flow::interface8::buffer_node< T, A >
enum  op_type {
+  reg_succ, +rem_succ, +req_item, +res_item, +
+  rel_res, +con_res, +put_item, +try_fwd_task, +
+  add_blt_succ, +del_blt_succ, +add_blt_pred, +del_blt_pred, +
+  blt_succ_cnt, +blt_pred_cnt, +blt_succ_cpy, +blt_pred_cpy +
+ }
 
enum  op_stat { WAIT =0, +SUCCEEDED, +FAILED + }
 
+typedef size_t size_type
 
+typedef
+internal::aggregating_functor
+< class_type, buffer_operation
handler_type
 
+typedef sender< T >
+::built_successors_type 
built_successors_type
 
+typedef receiver< T >
+::built_predecessors_type 
built_predecessors_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+void reset_node (reset_flags f)
 
+void handle_operations (prio_operation *op_list)
 
+void internal_forward_task (prio_operation *op)
 Tries to forward valid items to successors.
 
+void internal_push (prio_operation *op)
 
+void internal_pop (prio_operation *op)
 
+void internal_reserve (prio_operation *op)
 
+void internal_consume (prio_operation *op)
 
+void internal_release (prio_operation *op)
 
- Protected Member Functions inherited from tbb::flow::interface8::buffer_node< T, A >
+task * grab_forwarding_task (buffer_operation &op_data)
 
+bool enqueue_forwarding_task (buffer_operation &op_data)
 
+virtual task * forward_task ()
 This is executed by an enqueued task, the "forwarder".
 
+virtual void internal_reg_succ (buffer_operation *op)
 Register successor.
 
+virtual void internal_rem_succ (buffer_operation *op)
 Remove successor.
 
+built_successors_typebuilt_successors ()
 
+virtual void internal_add_built_succ (buffer_operation *op)
 
+virtual void internal_del_built_succ (buffer_operation *op)
 
+built_predecessors_typebuilt_predecessors ()
 
+virtual void internal_add_built_pred (buffer_operation *op)
 
+virtual void internal_del_built_pred (buffer_operation *op)
 
+virtual void internal_succ_cnt (buffer_operation *op)
 
+virtual void internal_pred_cnt (buffer_operation *op)
 
+virtual void internal_copy_succs (buffer_operation *op)
 
+virtual void internal_copy_preds (buffer_operation *op)
 
+task * try_put_task (const T &t)
 receive an item, return a task *if possible
 
+void reset_receiver (reset_flags)
 
- Protected Member Functions inherited from tbb::flow::interface8::receiver< T >
+virtual bool is_continue_receiver ()
 
+ + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from tbb::flow::interface8::buffer_node< T, A >
+internal::round_robin_cache< T,
+null_rw_mutex
my_successors
 
+internal::edge_container
+< predecessor_type
my_built_predecessors
 
+bool forwarder_busy
 
+internal::aggregator
+< handler_type,
+buffer_operation
my_aggregator
 
+

Detailed Description

+

template<typename T, typename Compare = std::less<T>, typename A = cache_aligned_allocator<T>>
+class tbb::flow::interface8::priority_queue_node< T, Compare, A >

+ +

Forwards messages in priority order.

+

The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00111.png b/doc/html/a00111.png new file mode 100644 index 0000000000..d3e88b55a6 Binary files /dev/null and b/doc/html/a00111.png differ diff --git a/doc/html/a00112.html b/doc/html/a00112.html new file mode 100644 index 0000000000..e33cd05b70 --- /dev/null +++ b/doc/html/a00112.html @@ -0,0 +1,424 @@ + + + + + + +tbb::flow::interface8::queue_node< T, A > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::queue_node< T, A > Class Template Reference
+
+
+ +

Forwards messages in FIFO order. + More...

+ +

#include <flow_graph.h>

+
+Inheritance diagram for tbb::flow::interface8::queue_node< T, A >:
+
+
+ + +tbb::flow::interface8::buffer_node< T, A > +tbb::flow::interface8::graph_node +tbb::flow::interface8::receiver< T > +tbb::flow::interface8::sender< T > +tbb::flow::interface8::sequencer_node< T, A > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef T input_type
 
+typedef T output_type
 
+typedef sender< input_typepredecessor_type
 
+typedef receiver< output_typesuccessor_type
 
- Public Types inherited from tbb::flow::interface8::buffer_node< T, A >
+typedef T input_type
 
+typedef T output_type
 
+typedef sender< input_typepredecessor_type
 
+typedef receiver< output_typesuccessor_type
 
+typedef buffer_node< T, A > class_type
 
+typedef receiver< input_type >
+::predecessor_list_type 
predecessor_list_type
 
+typedef sender< output_type >
+::successor_list_type 
successor_list_type
 
- Public Types inherited from tbb::flow::interface8::receiver< T >
+typedef T input_type
 The input type of this receiver.
 
+typedef sender< T > predecessor_type
 The predecessor type for this node.
 
+typedef
+internal::edge_container
+< predecessor_type
built_predecessors_type
 
+typedef
+built_predecessors_type::edge_list_type 
predecessor_list_type
 
- Public Types inherited from tbb::flow::interface8::sender< T >
+typedef T output_type
 The output type of this sender.
 
+typedef receiver< T > successor_type
 The successor type for this node.
 
+typedef
+internal::edge_container
+< successor_type
built_successors_type
 interface to record edges for traversal & deletion
 
+typedef
+built_successors_type::edge_list_type 
successor_list_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

queue_node (graph &g)
 Constructor.
 
queue_node (const queue_node &src)
 Copy constructor.
 
+void set_name (const char *name)
 
- Public Member Functions inherited from tbb::flow::interface8::buffer_node< T, A >
buffer_node (graph &g)
 Constructor.
 
buffer_node (const buffer_node &src)
 Copy constructor.
 
bool register_successor (successor_type &r)
 Adds a new successor. More...
 
+void internal_add_built_successor (successor_type &r)
 
+void internal_delete_built_successor (successor_type &r)
 
+void internal_add_built_predecessor (predecessor_type &p)
 
+void internal_delete_built_predecessor (predecessor_type &p)
 
+size_t predecessor_count ()
 
+size_t successor_count ()
 
+void copy_predecessors (predecessor_list_type &v)
 
+void copy_successors (successor_list_type &v)
 
bool remove_successor (successor_type &r)
 Removes a successor. More...
 
bool try_get (T &v)
 Request an item from the buffer_node. More...
 
bool try_reserve (T &v)
 Reserves an item. More...
 
bool try_release ()
 Release a reserved item. More...
 
bool try_consume ()
 Consumes a reserved item. More...
 
+void extract ()
 
- Public Member Functions inherited from tbb::flow::interface8::graph_node
graph_node (graph &g)
 
- Public Member Functions inherited from tbb::flow::interface8::receiver< T >
+virtual ~receiver ()
 Destructor.
 
+bool try_put (const T &t)
 Put an item to the receiver.
 
+virtual bool register_predecessor (predecessor_type &)
 Add a predecessor to the node.
 
+virtual bool remove_predecessor (predecessor_type &)
 Remove a predecessor from the node.
 
+virtual void copy_predecessors (predecessor_list_type &)=0
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Protected Types

enum  op_stat { WAIT =0, +SUCCEEDED, +FAILED + }
 
+typedef buffer_node< T, A > base_type
 
+typedef base_type::size_type size_type
 
+typedef base_type::buffer_operation queue_operation
 
- Protected Types inherited from tbb::flow::interface8::buffer_node< T, A >
enum  op_type {
+  reg_succ, +rem_succ, +req_item, +res_item, +
+  rel_res, +con_res, +put_item, +try_fwd_task, +
+  add_blt_succ, +del_blt_succ, +add_blt_pred, +del_blt_pred, +
+  blt_succ_cnt, +blt_pred_cnt, +blt_succ_cpy, +blt_pred_cpy +
+ }
 
enum  op_stat { WAIT =0, +SUCCEEDED, +FAILED + }
 
+typedef size_t size_type
 
+typedef
+internal::aggregating_functor
+< class_type, buffer_operation
handler_type
 
+typedef sender< T >
+::built_successors_type 
built_successors_type
 
+typedef receiver< T >
+::built_predecessors_type 
built_predecessors_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+void internal_forward_task (queue_operation *op)
 Tries to forward valid items to successors.
 
+void internal_pop (queue_operation *op)
 
+void internal_reserve (queue_operation *op)
 
+void internal_consume (queue_operation *op)
 
+void reset_node (reset_flags f)
 
- Protected Member Functions inherited from tbb::flow::interface8::buffer_node< T, A >
+virtual void handle_operations (buffer_operation *op_list)
 
+task * grab_forwarding_task (buffer_operation &op_data)
 
+bool enqueue_forwarding_task (buffer_operation &op_data)
 
+virtual task * forward_task ()
 This is executed by an enqueued task, the "forwarder".
 
+virtual void internal_reg_succ (buffer_operation *op)
 Register successor.
 
+virtual void internal_rem_succ (buffer_operation *op)
 Remove successor.
 
+built_successors_typebuilt_successors ()
 
+virtual void internal_add_built_succ (buffer_operation *op)
 
+virtual void internal_del_built_succ (buffer_operation *op)
 
+built_predecessors_typebuilt_predecessors ()
 
+virtual void internal_add_built_pred (buffer_operation *op)
 
+virtual void internal_del_built_pred (buffer_operation *op)
 
+virtual void internal_succ_cnt (buffer_operation *op)
 
+virtual void internal_pred_cnt (buffer_operation *op)
 
+virtual void internal_copy_succs (buffer_operation *op)
 
+virtual void internal_copy_preds (buffer_operation *op)
 
+virtual void internal_push (buffer_operation *op)
 
+virtual void internal_release (buffer_operation *op)
 
+task * try_put_task (const T &t)
 receive an item, return a task *if possible
 
+void reset_receiver (reset_flags)
 
- Protected Member Functions inherited from tbb::flow::interface8::receiver< T >
+virtual bool is_continue_receiver ()
 
+ + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from tbb::flow::interface8::buffer_node< T, A >
+internal::round_robin_cache< T,
+null_rw_mutex
my_successors
 
+internal::edge_container
+< predecessor_type
my_built_predecessors
 
+bool forwarder_busy
 
+internal::aggregator
+< handler_type,
+buffer_operation
my_aggregator
 
+

Detailed Description

+

template<typename T, typename A = cache_aligned_allocator<T>>
+class tbb::flow::interface8::queue_node< T, A >

+ +

Forwards messages in FIFO order.

+

The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00112.png b/doc/html/a00112.png new file mode 100644 index 0000000000..8ad3fc1358 Binary files /dev/null and b/doc/html/a00112.png differ diff --git a/doc/html/a00113.html b/doc/html/a00113.html new file mode 100644 index 0000000000..26f9c0f54b --- /dev/null +++ b/doc/html/a00113.html @@ -0,0 +1,105 @@ + + + + + + +tbb::queuing_mutex Class Reference + + + + + + + + +
+ +

Queuing mutex with local-only spinning. + More...

+ +

#include <queuing_mutex.h>

+
+Inheritance diagram for tbb::queuing_mutex:
+
+
+ + + +
+ + + + + +

+Classes

class  scoped_lock
 The scoped locking pattern. More...
 
+ + + + + + +

+Public Member Functions

queuing_mutex ()
 Construct unacquired mutex.
 
+void __TBB_EXPORTED_METHOD internal_construct ()
 
+ + + + + + + +

+Static Public Attributes

+static const bool is_rw_mutex = false
 
+static const bool is_recursive_mutex = false
 
+static const bool is_fair_mutex = true
 
+

Detailed Description

+

Queuing mutex with local-only spinning.

+

The documentation for this class was generated from the following file:
    +
  • queuing_mutex.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00113.png b/doc/html/a00113.png new file mode 100644 index 0000000000..97f8b53bdb Binary files /dev/null and b/doc/html/a00113.png differ diff --git a/doc/html/a00114.html b/doc/html/a00114.html new file mode 100644 index 0000000000..4d33865796 --- /dev/null +++ b/doc/html/a00114.html @@ -0,0 +1,110 @@ + + + + + + +tbb::queuing_rw_mutex Class Reference + + + + + + + +
+ +
+
tbb::queuing_rw_mutex Class Reference
+
+
+ +

Queuing reader-writer mutex with local-only spinning. + More...

+ +

#include <queuing_rw_mutex.h>

+
+Inheritance diagram for tbb::queuing_rw_mutex:
+
+
+ + + +
+ + + + + +

+Classes

class  scoped_lock
 The scoped locking pattern. More...
 
+ + + + + + + + + +

+Public Member Functions

queuing_rw_mutex ()
 Construct unacquired mutex.
 
~queuing_rw_mutex ()
 Destructor asserts if the mutex is acquired, i.e. q_tail is non-NULL.
 
+void __TBB_EXPORTED_METHOD internal_construct ()
 
+ + + + + + + +

+Static Public Attributes

+static const bool is_rw_mutex = true
 
+static const bool is_recursive_mutex = false
 
+static const bool is_fair_mutex = true
 
+

Detailed Description

+

Queuing reader-writer mutex with local-only spinning.

+

Adapted from Krieger, Stumm, et al. pseudocode at http://www.eecg.toronto.edu/parallel/pubs_abs.html#Krieger_etal_ICPP93

+

The documentation for this class was generated from the following file:
    +
  • queuing_rw_mutex.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00114.png b/doc/html/a00114.png new file mode 100644 index 0000000000..aeda94ccfe Binary files /dev/null and b/doc/html/a00114.png differ diff --git a/doc/html/a00115.html b/doc/html/a00115.html new file mode 100644 index 0000000000..99f856695a --- /dev/null +++ b/doc/html/a00115.html @@ -0,0 +1,231 @@ + + + + + + +tbb::interface5::reader_writer_lock Class Reference + + + + + + + +
+ +
+
tbb::interface5::reader_writer_lock Class Reference
+
+
+ +

Writer-preference reader-writer lock with local-only spinning on readers. + More...

+ +

#include <reader_writer_lock.h>

+
+Inheritance diagram for tbb::interface5::reader_writer_lock:
+
+
+ + + +
+ + + + + + + + +

+Classes

class  scoped_lock
 The scoped lock pattern for write locks. More...
 
class  scoped_lock_read
 The scoped lock pattern for read locks. More...
 
+ + + + +

+Public Types

enum  status_t { waiting_nonblocking, +waiting, +active, +invalid + }
 Status type for nodes associated with lock instances. More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

reader_writer_lock ()
 Constructs a new reader_writer_lock.
 
~reader_writer_lock ()
 Destructs a reader_writer_lock object.
 
void __TBB_EXPORTED_METHOD lock ()
 Acquires the reader_writer_lock for write. More...
 
bool __TBB_EXPORTED_METHOD try_lock ()
 Tries to acquire the reader_writer_lock for write. More...
 
void __TBB_EXPORTED_METHOD lock_read ()
 Acquires the reader_writer_lock for read. More...
 
bool __TBB_EXPORTED_METHOD try_lock_read ()
 Tries to acquire the reader_writer_lock for read. More...
 
+void __TBB_EXPORTED_METHOD unlock ()
 Releases the reader_writer_lock.
 
+ + + + + +

+Friends

+class scoped_lock
 
+class scoped_lock_read
 
+

Detailed Description

+

Writer-preference reader-writer lock with local-only spinning on readers.

+

Loosely adapted from Mellor-Crummey and Scott pseudocode at http://www.cs.rochester.edu/research/synchronization/pseudocode/rw.html#s_wp

+

Member Enumeration Documentation

+ +
+
+ +

Status type for nodes associated with lock instances.

+

waiting_nonblocking: the wait state for nonblocking lock instances; for writes, these transition straight to active states; for reads, these are unused.

+

waiting: the start and spin state for all lock instances; these will transition to active state when appropriate. Non-blocking write locks transition from this state to waiting_nonblocking immediately.

+

active: the active state means that the lock instance holds the lock; it will transition to invalid state during node deletion

+

invalid: the end state for all nodes; this is set in the destructor so if we encounter this state, we are looking at memory that has already been freed

+

The state diagrams below describe the status transitions. Single arrows indicate that the thread that owns the node is responsible for the transition; double arrows indicate that any thread could make the transition.

+

State diagram for scoped_lock status:

+

waiting -------—> waiting_nonblocking | _____________/ | V V V active --------------—> invalid

+

State diagram for scoped_lock_read status:

+

waiting | V active --------------—>invalid

+ +
+
+

Member Function Documentation

+ +
+
+ + + + + + + +
void __TBB_EXPORTED_METHOD tbb::interface5::reader_writer_lock::lock ()
+
+ +

Acquires the reader_writer_lock for write.

+

If the lock is currently held in write mode by another context, the writer will block by spinning on a local variable. Exceptions thrown: improper_lock The context tries to acquire a reader_writer_lock that it already has write ownership of.

+ +
+
+ +
+
+ + + + + + + +
void __TBB_EXPORTED_METHOD tbb::interface5::reader_writer_lock::lock_read ()
+
+ +

Acquires the reader_writer_lock for read.

+

If the lock is currently held by a writer, this reader will block and wait until the writers are done. Exceptions thrown: improper_lock The context tries to acquire a reader_writer_lock that it already has write ownership of.

+ +
+
+ +
+
+ + + + + + + +
bool __TBB_EXPORTED_METHOD tbb::interface5::reader_writer_lock::try_lock ()
+
+ +

Tries to acquire the reader_writer_lock for write.

+

This function does not block. Return Value: True or false, depending on whether the lock is acquired or not. If the lock is already held by this acquiring context, try_lock() returns false.

+ +
+
+ +
+
+ + + + + + + +
bool __TBB_EXPORTED_METHOD tbb::interface5::reader_writer_lock::try_lock_read ()
+
+ +

Tries to acquire the reader_writer_lock for read.

+

This function does not block. Return Value: True or false, depending on whether the lock is acquired or not.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • reader_writer_lock.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00115.png b/doc/html/a00115.png new file mode 100644 index 0000000000..12ea5c6182 Binary files /dev/null and b/doc/html/a00115.png differ diff --git a/doc/html/a00116.html b/doc/html/a00116.html new file mode 100644 index 0000000000..695cdbf093 --- /dev/null +++ b/doc/html/a00116.html @@ -0,0 +1,67 @@ + + + + + + +tbb::cache_aligned_allocator< void >::rebind< U > Struct Template Reference + + + + + + + +
+ +
+
tbb::cache_aligned_allocator< void >::rebind< U > Struct Template Reference
+
+
+ + + + +

+Public Types

+typedef
+cache_aligned_allocator< U > 
other
 
+
The documentation for this struct was generated from the following file:
    +
  • cache_aligned_allocator.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00117.html b/doc/html/a00117.html new file mode 100644 index 0000000000..099df7856f --- /dev/null +++ b/doc/html/a00117.html @@ -0,0 +1,66 @@ + + + + + + +tbb::scalable_allocator< T >::rebind< U > Struct Template Reference + + + + + + + +
+ +
+
tbb::scalable_allocator< T >::rebind< U > Struct Template Reference
+
+
+ + + + +

+Public Types

+typedef scalable_allocator< U > other
 
+
The documentation for this struct was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00118.html b/doc/html/a00118.html new file mode 100644 index 0000000000..19f3d1b5ff --- /dev/null +++ b/doc/html/a00118.html @@ -0,0 +1,66 @@ + + + + + + +tbb::scalable_allocator< void >::rebind< U > Struct Template Reference + + + + + + + +
+ +
+
tbb::scalable_allocator< void >::rebind< U > Struct Template Reference
+
+
+ + + + +

+Public Types

+typedef scalable_allocator< U > other
 
+
The documentation for this struct was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00119.html b/doc/html/a00119.html new file mode 100644 index 0000000000..0e7400d93c --- /dev/null +++ b/doc/html/a00119.html @@ -0,0 +1,66 @@ + + + + + + +tbb::tbb_allocator< void >::rebind< U > Struct Template Reference + + + + + + + +
+ +
+
tbb::tbb_allocator< void >::rebind< U > Struct Template Reference
+
+
+ + + + +

+Public Types

+typedef tbb_allocator< U > other
 
+
The documentation for this struct was generated from the following file:
    +
  • tbb_allocator.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00120.html b/doc/html/a00120.html new file mode 100644 index 0000000000..730c4f5abb --- /dev/null +++ b/doc/html/a00120.html @@ -0,0 +1,67 @@ + + + + + + +tbb::zero_allocator< T, Allocator >::rebind< U > Struct Template Reference + + + + + + + +
+ +
+
tbb::zero_allocator< T, Allocator >::rebind< U > Struct Template Reference
+
+
+ + + + +

+Public Types

+typedef zero_allocator< U,
+Allocator > 
other
 
+
The documentation for this struct was generated from the following file:
    +
  • tbb_allocator.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00121.html b/doc/html/a00121.html new file mode 100644 index 0000000000..262c083cd9 --- /dev/null +++ b/doc/html/a00121.html @@ -0,0 +1,67 @@ + + + + + + +tbb::interface6::memory_pool_allocator< void, P >::rebind< U > Struct Template Reference + + + + + + + +
+ +
+
tbb::interface6::memory_pool_allocator< void, P >::rebind< U > Struct Template Reference
+
+
+ + + + +

+Public Types

+typedef memory_pool_allocator
+< U, P > 
other
 
+
The documentation for this struct was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00122.html b/doc/html/a00122.html new file mode 100644 index 0000000000..2714faab24 --- /dev/null +++ b/doc/html/a00122.html @@ -0,0 +1,67 @@ + + + + + + +tbb::interface6::memory_pool_allocator< T, P >::rebind< U > Struct Template Reference + + + + + + + +
+ +
+
tbb::interface6::memory_pool_allocator< T, P >::rebind< U > Struct Template Reference
+
+
+ + + + +

+Public Types

+typedef memory_pool_allocator
+< U, P > 
other
 
+
The documentation for this struct was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00123.html b/doc/html/a00123.html new file mode 100644 index 0000000000..f2a02ad768 --- /dev/null +++ b/doc/html/a00123.html @@ -0,0 +1,66 @@ + + + + + + +tbb::tbb_allocator< T >::rebind< U > Struct Template Reference + + + + + + + +
+ +
+
tbb::tbb_allocator< T >::rebind< U > Struct Template Reference
+
+
+ + + + +

+Public Types

+typedef tbb_allocator< U > other
 
+
The documentation for this struct was generated from the following file:
    +
  • tbb_allocator.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00124.html b/doc/html/a00124.html new file mode 100644 index 0000000000..f026532ca0 --- /dev/null +++ b/doc/html/a00124.html @@ -0,0 +1,67 @@ + + + + + + +tbb::cache_aligned_allocator< T >::rebind< U > Struct Template Reference + + + + + + + +
+ +
+
tbb::cache_aligned_allocator< T >::rebind< U > Struct Template Reference
+
+
+ + + + +

+Public Types

+typedef
+cache_aligned_allocator< U > 
other
 
+
The documentation for this struct was generated from the following file:
    +
  • cache_aligned_allocator.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00125.html b/doc/html/a00125.html new file mode 100644 index 0000000000..12d934e375 --- /dev/null +++ b/doc/html/a00125.html @@ -0,0 +1,67 @@ + + + + + + +tbb::zero_allocator< void, Allocator >::rebind< U > Struct Template Reference + + + + + + + +
+ +
+
tbb::zero_allocator< void, Allocator >::rebind< U > Struct Template Reference
+
+
+ + + + +

+Public Types

+typedef zero_allocator< U,
+Allocator > 
other
 
+
The documentation for this struct was generated from the following file:
    +
  • tbb_allocator.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00126.html b/doc/html/a00126.html new file mode 100644 index 0000000000..90929ac345 --- /dev/null +++ b/doc/html/a00126.html @@ -0,0 +1,180 @@ + + + + + + +tbb::flow::interface8::receiver< T > Class Template Reference + + + + + + +
+ + + + + +
+
+ +
+
tbb::flow::interface8::receiver< T > Class Template Referenceabstract
+
+
+ +

Pure virtual template class that defines a receiver of messages of type T. + More...

+ +

#include <flow_graph.h>

+
+Inheritance diagram for tbb::flow::interface8::receiver< T >:
+
+
+ + +tbb::flow::interface8::broadcast_node< T > +tbb::flow::interface8::buffer_node< T, A > +tbb::flow::interface8::limiter_node< T > +tbb::flow::interface8::overwrite_node< T > +tbb::flow::interface8::priority_queue_node< T, Compare, A > +tbb::flow::interface8::queue_node< T, A > +tbb::flow::interface8::write_once_node< T > +tbb::flow::interface8::sequencer_node< T, A > + +
+ + + + + + + + + + + + +

+Public Types

+typedef T input_type
 The input type of this receiver.
 
+typedef sender< T > predecessor_type
 The predecessor type for this node.
 
+typedef
+internal::edge_container
+< predecessor_type
built_predecessors_type
 
+typedef
+built_predecessors_type::edge_list_type 
predecessor_list_type
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+virtual ~receiver ()
 Destructor.
 
+bool try_put (const T &t)
 Put an item to the receiver.
 
+virtual bool register_predecessor (predecessor_type &)
 Add a predecessor to the node.
 
+virtual bool remove_predecessor (predecessor_type &)
 Remove a predecessor from the node.
 
+virtual built_predecessors_typebuilt_predecessors ()=0
 
+virtual void internal_add_built_predecessor (predecessor_type &)=0
 
+virtual void internal_delete_built_predecessor (predecessor_type &)=0
 
+virtual void copy_predecessors (predecessor_list_type &)=0
 
+virtual size_t predecessor_count ()=0
 
+ + + + + + + +

+Protected Member Functions

+virtual task * try_put_task (const T &t)=0
 
+virtual void reset_receiver (reset_flags f=rf_reset_protocol)=0
 
+virtual bool is_continue_receiver ()
 
+ + + + + + + + + + + + + + + + + + +

+Friends

+template<typename R , typename B >
class run_and_put_task
 put item to successor; return task to run the successor if possible.
 
+template<typename X , typename Y >
class internal::broadcast_cache
 
+template<typename X , typename Y >
class internal::round_robin_cache
 
+template<typename U >
class limiter_node
 put receiver back in initial state
 
+template<typename TT , typename M >
class internal::successor_cache
 
+

Detailed Description

+

template<typename T>
+class tbb::flow::interface8::receiver< T >

+ +

Pure virtual template class that defines a receiver of messages of type T.

+

The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00126.png b/doc/html/a00126.png new file mode 100644 index 0000000000..f765e3ebb5 Binary files /dev/null and b/doc/html/a00126.png differ diff --git a/doc/html/a00127.html b/doc/html/a00127.html new file mode 100644 index 0000000000..10ef9e52eb --- /dev/null +++ b/doc/html/a00127.html @@ -0,0 +1,162 @@ + + + + + + +tbb::recursive_mutex Class Reference + + + + + + + + +
+ +

#include <recursive_mutex.h>

+
+Inheritance diagram for tbb::recursive_mutex:
+
+
+ + + +
+ + + + + +

+Classes

class  scoped_lock
 The scoped locking pattern. More...
 
+ + + + + + +

+Public Types

+typedef LPCRITICAL_SECTION native_handle_type
 Return native_handle.
 
+typedef pthread_mutex_t * native_handle_type
 
+ + + + + + + + + + + + + + + +

+Public Member Functions

recursive_mutex ()
 Construct unacquired recursive_mutex.
 
+void lock ()
 Acquire lock.
 
bool try_lock ()
 Try acquiring lock (non-blocking) More...
 
+void unlock ()
 Release lock.
 
+native_handle_type native_handle ()
 
+ + + + + + + +

+Static Public Attributes

+static const bool is_rw_mutex = false
 
+static const bool is_recursive_mutex = true
 
+static const bool is_fair_mutex = false
 
+ + + +

+Friends

+class scoped_lock
 
+

Detailed Description

+

Mutex that allows recursive mutex acquisition.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + +
bool tbb::recursive_mutex::try_lock ()
+
+inline
+
+ +

Try acquiring lock (non-blocking)

+

Return true if lock acquired; false otherwise.

+ +

References tbb::aligned_space< T, N >::begin().

+ +

Referenced by tbb::recursive_mutex::scoped_lock::try_acquire().

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • recursive_mutex.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00127.png b/doc/html/a00127.png new file mode 100644 index 0000000000..3157a913de Binary files /dev/null and b/doc/html/a00127.png differ diff --git a/doc/html/a00128.html b/doc/html/a00128.html new file mode 100644 index 0000000000..e8b0775b90 --- /dev/null +++ b/doc/html/a00128.html @@ -0,0 +1,56 @@ + + + + + + +tbb::flow::interface8::internal::round_robin_cache< T, M > Class Template Reference + + + + + + +
+ + + + + +
+
+
+
tbb::flow::interface8::internal::round_robin_cache< T, M > Class Template Reference
+
+
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00129.html b/doc/html/a00129.html new file mode 100644 index 0000000000..9143f8091a --- /dev/null +++ b/doc/html/a00129.html @@ -0,0 +1,56 @@ + + + + + + +tbb::flow::interface8::run_and_put_task< R, B > Class Template Reference + + + + + + + +
+
+
tbb::flow::interface8::run_and_put_task< R, B > Class Template Reference
+
+
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00130.html b/doc/html/a00130.html new file mode 100644 index 0000000000..285e24f754 --- /dev/null +++ b/doc/html/a00130.html @@ -0,0 +1,321 @@ + + + + + + +tbb::interface6::runtime_loader Class Reference + + + + + + + +
+ +
+
tbb::interface6::runtime_loader Class Reference
+
+
+ +

Load TBB at runtime. + More...

+ +

#include <runtime_loader.h>

+
+Inheritance diagram for tbb::interface6::runtime_loader:
+
+
+ + + +
+ + + + + + + + +

+Public Types

enum  error_mode { em_status, +em_throw, +em_abort + }
 Error mode constants. More...
 
enum  error_code {
+  ec_ok, +ec_bad_call, +ec_bad_arg, +ec_bad_lib, +
+  ec_bad_ver, +ec_no_lib +
+ }
 Error codes. More...
 
+ + + + + + + + + + + + + + + + +

+Public Member Functions

runtime_loader (error_mode mode=em_abort)
 Initialize object but do not load TBB.
 
 runtime_loader (char const *path[], int min_ver=TBB_INTERFACE_VERSION, int max_ver=INT_MAX, error_mode mode=em_abort)
 Initialize object and load TBB. More...
 
~runtime_loader ()
 Destroy object.
 
error_code load (char const *path[], int min_ver=TBB_INTERFACE_VERSION, int max_ver=INT_MAX)
 Load TBB. More...
 
error_code status ()
 Report status. More...
 
+

Detailed Description

+

Load TBB at runtime.

+

Usage:

+

In source code:

+
#include "tbb/runtime_loader.h"
+
+
char const * path[] = { "<install dir>/lib/ia32", NULL };
+
tbb::runtime_loader loader( path );
+
+
// Now use TBB.
+

Link with tbbproxy.lib (or libtbbproxy.a) instead of tbb.lib (libtbb.dylib, libtbb.so).

+

TBB library will be loaded at runtime from <install dir>="">/lib/ia32 directory.

+

Attention:

+

All runtime_loader objects (in the same module, i.e. exe or dll) share some global state. The most noticeable piece of global state is loaded TBB library. There are some implications:

+
-   Only one TBB library can be loaded per module.
+
+-   If one object has already loaded TBB library, another object will not load TBB.
+    If the loaded TBB library is suitable for the second object, both will use TBB
+    cooperatively, otherwise the second object will report an error.
+
+-   \c runtime_loader objects will not work (correctly) in parallel due to absence of
+    synchronization.

Member Enumeration Documentation

+ +
+
+ +

Error codes.

+ + + + + + + +
Enumerator
ec_ok  +

No errors.

+
ec_bad_call  +

Invalid function call (e. g. load() called when TBB is already loaded).

+
ec_bad_arg  +

Invalid argument passed.

+
ec_bad_lib  +

Invalid library found (e. g. TBB_runtime_version symbol not found).

+
ec_bad_ver  +

TBB found but version is not suitable.

+
ec_no_lib  +

No suitable TBB library found.

+
+ +
+
+ +
+
+ +

Error mode constants.

+ + + + +
Enumerator
em_status  +

Save status of operation and continue.

+
em_throw  +

Throw an exception of tbb::runtime_loader::error_code type.

+
em_abort  +

Print message to stderr and call abort().

+
+ +
+
+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
tbb::interface6::runtime_loader::runtime_loader (char const * path[],
int min_ver = TBB_INTERFACE_VERSION,
int max_ver = INT_MAX,
error_mode mode = em_abort 
)
+
+ +

Initialize object and load TBB.

+

See load() for details.

+

If error mode is em_status, call status() to check whether TBB was loaded or not.

+
Parameters
+ + + + + +
pathList of directories to search TBB in.
min_verMinimal suitable version of TBB.
max_verMaximal suitable version of TBB.
modeError mode for this object.
+
+
+ +
+
+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
error_code tbb::interface6::runtime_loader::load (char const * path[],
int min_ver = TBB_INTERFACE_VERSION,
int max_ver = INT_MAX 
)
+
+ +

Load TBB.

+

The method searches the directories specified in path[] array for the TBB library. When the library is found, it is loaded and its version is checked. If the version is not suitable, the library is unloaded, and the search continues.

+

Note:

+

For security reasons, avoid using relative directory names. For example, never load TBB from current ("."), parent ("..") or any other relative directory (like "lib" ). Use only absolute directory names (e. g. "/usr/local/lib").

+

For the same security reasons, avoid using system default directories ("") on Windows. (See http://www.microsoft.com/technet/security/advisory/2269637.mspx for details.)

+

Neglecting these rules may cause your program to execute 3-rd party malicious code.

+

Errors:

+
    +
  • ec_bad_call - TBB already loaded by this object.
  • +
  • ec_bad_arg - min_ver and/or max_ver negative or zero, or min_ver > max_ver.
  • +
  • ec_bad_ver - TBB of unsuitable version already loaded by another object.
  • +
  • ec_no_lib - No suitable library found.
  • +
+
Parameters
+ + + + +
pathList of directories to search TBB in.
min_verMinimal suitable version of TBB.
max_verMaximal suitable version of TBB.
+
+
+ +
+
+ +
+
+ + + + + + + +
error_code tbb::interface6::runtime_loader::status ()
+
+ +

Report status.

+

If error mode is em_status, the function returns status of the last operation.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • runtime_loader.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00130.png b/doc/html/a00130.png new file mode 100644 index 0000000000..56b89a68fd Binary files /dev/null and b/doc/html/a00130.png differ diff --git a/doc/html/a00131.html b/doc/html/a00131.html new file mode 100644 index 0000000000..31f9acd79e --- /dev/null +++ b/doc/html/a00131.html @@ -0,0 +1,145 @@ + + + + + + +tbb::scalable_allocator< T > Class Template Reference + + + + + + + +
+ +
+
tbb::scalable_allocator< T > Class Template Reference
+
+
+ +

Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. + More...

+ +

#include <scalable_allocator.h>

+ + + + +

+Classes

struct  rebind
 
+ + + + + + + + + + + + + + + +

+Public Types

+typedef
+internal::allocator_type< T >
+::value_type 
value_type
 
+typedef value_type * pointer
 
+typedef const value_type * const_pointer
 
+typedef value_type & reference
 
+typedef const value_type & const_reference
 
+typedef size_t size_type
 
+typedef ptrdiff_t difference_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

scalable_allocator (const scalable_allocator &) throw ()
 
+template<typename U >
 scalable_allocator (const scalable_allocator< U > &) throw ()
 
+pointer address (reference x) const
 
+const_pointer address (const_reference x) const
 
+pointer allocate (size_type n, const void *=0)
 Allocate space for n objects.
 
+void deallocate (pointer p, size_type)
 Free previously allocated block of memory.
 
+size_type max_size () const throw ()
 Largest value for which method allocate might succeed.
 
+template<typename U , typename... Args>
void construct (U *p, Args &&...args)
 
+void construct (pointer p, value_type &&value)
 
+void construct (pointer p, const value_type &value)
 
+void destroy (pointer p)
 
+

Detailed Description

+

template<typename T>
+class tbb::scalable_allocator< T >

+ +

Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.

+

The members are ordered the same way they are in section 20.4.1 of the ISO C++ standard.

+

The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00132.html b/doc/html/a00132.html new file mode 100644 index 0000000000..329c94c655 --- /dev/null +++ b/doc/html/a00132.html @@ -0,0 +1,88 @@ + + + + + + +tbb::scalable_allocator< void > Class Template Reference + + + + + + + +
+ +
+
tbb::scalable_allocator< void > Class Template Reference
+
+
+ +

Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. + More...

+ +

#include <scalable_allocator.h>

+ + + + +

+Classes

struct  rebind
 
+ + + + + + + +

+Public Types

+typedef void * pointer
 
+typedef const void * const_pointer
 
+typedef void value_type
 
+

Detailed Description

+

template<>
+class tbb::scalable_allocator< void >

+ +

Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.

+

The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00133.html b/doc/html/a00133.html new file mode 100644 index 0000000000..c82a845247 --- /dev/null +++ b/doc/html/a00133.html @@ -0,0 +1,90 @@ + + + + + + +tbb::null_mutex::scoped_lock Class Reference + + + + + + + +
+ +
+
tbb::null_mutex::scoped_lock Class Reference
+
+
+ +

Represents acquisition of a mutex. + More...

+ +

#include <null_mutex.h>

+
+Inheritance diagram for tbb::null_mutex::scoped_lock:
+
+
+ + + +
+ + + + + + + + + + +

+Public Member Functions

scoped_lock (null_mutex &)
 
+void acquire (null_mutex &)
 
+bool try_acquire (null_mutex &)
 
+void release ()
 
+

Detailed Description

+

Represents acquisition of a mutex.

+

The documentation for this class was generated from the following file:
    +
  • null_mutex.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00133.png b/doc/html/a00133.png new file mode 100644 index 0000000000..d8565aa377 Binary files /dev/null and b/doc/html/a00133.png differ diff --git a/doc/html/a00134.html b/doc/html/a00134.html new file mode 100644 index 0000000000..8a48a61f95 --- /dev/null +++ b/doc/html/a00134.html @@ -0,0 +1,155 @@ + + + + + + +tbb::queuing_rw_mutex::scoped_lock Class Reference + + + + + + + +
+ +
+
tbb::queuing_rw_mutex::scoped_lock Class Reference
+
+
+ +

The scoped locking pattern. + More...

+ +

#include <queuing_rw_mutex.h>

+
+Inheritance diagram for tbb::queuing_rw_mutex::scoped_lock:
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 scoped_lock ()
 Construct lock that has not acquired a mutex. More...
 
scoped_lock (queuing_rw_mutex &m, bool write=true)
 Acquire lock on given mutex.
 
~scoped_lock ()
 Release lock (if lock is held).
 
+void acquire (queuing_rw_mutex &m, bool write=true)
 Acquire lock on given mutex.
 
+bool try_acquire (queuing_rw_mutex &m, bool write=true)
 Acquire lock on given mutex if free (i.e. non-blocking)
 
+void release ()
 Release lock.
 
bool upgrade_to_writer ()
 Upgrade reader to become a writer. More...
 
+bool downgrade_to_reader ()
 Downgrade writer to become a reader.
 
+

Detailed Description

+

The scoped locking pattern.

+

It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + +
+ + + + + + + +
tbb::queuing_rw_mutex::scoped_lock::scoped_lock ()
+
+inline
+
+ +

Construct lock that has not acquired a mutex.

+

Equivalent to zero-initialization of *this.

+ +
+
+

Member Function Documentation

+ +
+
+ + + + + + + +
bool tbb::queuing_rw_mutex::scoped_lock::upgrade_to_writer ()
+
+ +

Upgrade reader to become a writer.

+

Returns whether the upgrade happened without releasing and re-acquiring the lock

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • queuing_rw_mutex.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00134.png b/doc/html/a00134.png new file mode 100644 index 0000000000..227e99a9e7 Binary files /dev/null and b/doc/html/a00134.png differ diff --git a/doc/html/a00135.html b/doc/html/a00135.html new file mode 100644 index 0000000000..63b3235b2e --- /dev/null +++ b/doc/html/a00135.html @@ -0,0 +1,100 @@ + + + + + + +tbb::interface5::reader_writer_lock::scoped_lock Class Reference + + + + + + + +
+ +
+
tbb::interface5::reader_writer_lock::scoped_lock Class Reference
+
+
+ +

The scoped lock pattern for write locks. + More...

+ +

#include <reader_writer_lock.h>

+
+Inheritance diagram for tbb::interface5::reader_writer_lock::scoped_lock:
+
+
+ + + +
+ + + + + + + + + + + + +

+Public Member Functions

scoped_lock (reader_writer_lock &lock)
 Construct with blocking attempt to acquire write lock on the passed-in lock.
 
~scoped_lock ()
 Destructor, releases the write lock.
 
+void * operator new (size_t s)
 
+void operator delete (void *p)
 
+ + + +

+Friends

+class reader_writer_lock
 
+

Detailed Description

+

The scoped lock pattern for write locks.

+

Scoped locks help avoid the common problem of forgetting to release the lock. This type also serves as the node for queuing locks.

+

The documentation for this class was generated from the following file:
    +
  • reader_writer_lock.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00135.png b/doc/html/a00135.png new file mode 100644 index 0000000000..a999a7d0cd Binary files /dev/null and b/doc/html/a00135.png differ diff --git a/doc/html/a00136.html b/doc/html/a00136.html new file mode 100644 index 0000000000..6c266e3e83 --- /dev/null +++ b/doc/html/a00136.html @@ -0,0 +1,136 @@ + + + + + + +tbb::spin_mutex::scoped_lock Class Reference + + + + + + + +
+ +
+
tbb::spin_mutex::scoped_lock Class Reference
+
+
+ +

Represents acquisition of a mutex. + More...

+ +

#include <spin_mutex.h>

+
+Inheritance diagram for tbb::spin_mutex::scoped_lock:
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

scoped_lock ()
 Construct without acquiring a mutex.
 
scoped_lock (spin_mutex &m)
 Construct and acquire lock on a mutex.
 
+void acquire (spin_mutex &m)
 Acquire lock.
 
bool try_acquire (spin_mutex &m)
 Try acquiring lock (non-blocking) More...
 
+void release ()
 Release lock.
 
~scoped_lock ()
 Destroy lock. If holding a lock, releases the lock first.
 
+ + + +

+Friends

+class spin_mutex
 
+

Detailed Description

+

Represents acquisition of a mutex.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
bool tbb::spin_mutex::scoped_lock::try_acquire (spin_mutexm)
+
+inline
+
+ +

Try acquiring lock (non-blocking)

+

Return true if lock acquired; false otherwise.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • spin_mutex.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00136.png b/doc/html/a00136.png new file mode 100644 index 0000000000..25da9c6ba0 Binary files /dev/null and b/doc/html/a00136.png differ diff --git a/doc/html/a00137.html b/doc/html/a00137.html new file mode 100644 index 0000000000..d9e85f0a5a --- /dev/null +++ b/doc/html/a00137.html @@ -0,0 +1,129 @@ + + + + + + +tbb::queuing_mutex::scoped_lock Class Reference + + + + + + + +
+ +
+
tbb::queuing_mutex::scoped_lock Class Reference
+
+
+ +

The scoped locking pattern. + More...

+ +

#include <queuing_mutex.h>

+
+Inheritance diagram for tbb::queuing_mutex::scoped_lock:
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 scoped_lock ()
 Construct lock that has not acquired a mutex. More...
 
scoped_lock (queuing_mutex &m)
 Acquire lock on given mutex.
 
~scoped_lock ()
 Release lock (if lock is held).
 
+void __TBB_EXPORTED_METHOD acquire (queuing_mutex &m)
 Acquire lock on given mutex.
 
+bool __TBB_EXPORTED_METHOD try_acquire (queuing_mutex &m)
 Acquire lock on given mutex if free (i.e. non-blocking)
 
+void __TBB_EXPORTED_METHOD release ()
 Release lock.
 
+

Detailed Description

+

The scoped locking pattern.

+

It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + +
+ + + + + + + +
tbb::queuing_mutex::scoped_lock::scoped_lock ()
+
+inline
+
+ +

Construct lock that has not acquired a mutex.

+

Equivalent to zero-initialization of *this.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • queuing_mutex.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00137.png b/doc/html/a00137.png new file mode 100644 index 0000000000..611457f0e8 Binary files /dev/null and b/doc/html/a00137.png differ diff --git a/doc/html/a00138.html b/doc/html/a00138.html new file mode 100644 index 0000000000..89ebcceda5 --- /dev/null +++ b/doc/html/a00138.html @@ -0,0 +1,110 @@ + + + + + + +tbb::mutex::scoped_lock Class Reference + + + + + + + +
+ +
+
tbb::mutex::scoped_lock Class Reference
+
+
+ +

The scoped locking pattern. + More...

+ +

#include <mutex.h>

+
+Inheritance diagram for tbb::mutex::scoped_lock:
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

scoped_lock ()
 Construct lock that has not acquired a mutex.
 
scoped_lock (mutex &mutex)
 Acquire lock on given mutex.
 
~scoped_lock ()
 Release lock (if lock is held).
 
+void acquire (mutex &mutex)
 Acquire lock on given mutex.
 
+bool try_acquire (mutex &mutex)
 Try acquire lock on given mutex.
 
+void release ()
 Release lock.
 
+ + + +

+Friends

+class mutex
 
+

Detailed Description

+

The scoped locking pattern.

+

It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks.

+

The documentation for this class was generated from the following file:
    +
  • mutex.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00138.png b/doc/html/a00138.png new file mode 100644 index 0000000000..5450176d7f Binary files /dev/null and b/doc/html/a00138.png differ diff --git a/doc/html/a00139.html b/doc/html/a00139.html new file mode 100644 index 0000000000..1eaabd781a --- /dev/null +++ b/doc/html/a00139.html @@ -0,0 +1,96 @@ + + + + + + +tbb::null_rw_mutex::scoped_lock Class Reference + + + + + + + +
+ +
+
tbb::null_rw_mutex::scoped_lock Class Reference
+
+
+ +

Represents acquisition of a mutex. + More...

+ +

#include <null_rw_mutex.h>

+
+Inheritance diagram for tbb::null_rw_mutex::scoped_lock:
+
+
+ + + +
+ + + + + + + + + + + + + + +

+Public Member Functions

scoped_lock (null_rw_mutex &, bool=true)
 
+void acquire (null_rw_mutex &, bool=true)
 
+bool upgrade_to_writer ()
 
+bool downgrade_to_reader ()
 
+bool try_acquire (null_rw_mutex &, bool=true)
 
+void release ()
 
+

Detailed Description

+

Represents acquisition of a mutex.

+

The documentation for this class was generated from the following file:
    +
  • null_rw_mutex.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00139.png b/doc/html/a00139.png new file mode 100644 index 0000000000..081a54dff5 Binary files /dev/null and b/doc/html/a00139.png differ diff --git a/doc/html/a00140.html b/doc/html/a00140.html new file mode 100644 index 0000000000..45206417f6 --- /dev/null +++ b/doc/html/a00140.html @@ -0,0 +1,110 @@ + + + + + + +tbb::recursive_mutex::scoped_lock Class Reference + + + + + + + +
+ +
+
tbb::recursive_mutex::scoped_lock Class Reference
+
+
+ +

The scoped locking pattern. + More...

+ +

#include <recursive_mutex.h>

+
+Inheritance diagram for tbb::recursive_mutex::scoped_lock:
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

scoped_lock ()
 Construct lock that has not acquired a recursive_mutex.
 
scoped_lock (recursive_mutex &mutex)
 Acquire lock on given mutex.
 
~scoped_lock ()
 Release lock (if lock is held).
 
+void acquire (recursive_mutex &mutex)
 Acquire lock on given mutex.
 
+bool try_acquire (recursive_mutex &mutex)
 Try acquire lock on given recursive_mutex.
 
+void release ()
 Release lock.
 
+ + + +

+Friends

+class recursive_mutex
 
+

Detailed Description

+

The scoped locking pattern.

+

It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks.

+

The documentation for this class was generated from the following file:
    +
  • recursive_mutex.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00140.png b/doc/html/a00140.png new file mode 100644 index 0000000000..9d4ec98b91 Binary files /dev/null and b/doc/html/a00140.png differ diff --git a/doc/html/a00141.html b/doc/html/a00141.html new file mode 100644 index 0000000000..8c95527723 --- /dev/null +++ b/doc/html/a00141.html @@ -0,0 +1,209 @@ + + + + + + +tbb::spin_rw_mutex_v3::scoped_lock Class Reference + + + + + + + +
+ +
+
tbb::spin_rw_mutex_v3::scoped_lock Class Reference
+
+
+ +

The scoped locking pattern. + More...

+ +

#include <spin_rw_mutex.h>

+
+Inheritance diagram for tbb::spin_rw_mutex_v3::scoped_lock:
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 scoped_lock ()
 Construct lock that has not acquired a mutex. More...
 
scoped_lock (spin_rw_mutex &m, bool write=true)
 Acquire lock on given mutex.
 
~scoped_lock ()
 Release lock (if lock is held).
 
+void acquire (spin_rw_mutex &m, bool write=true)
 Acquire lock on given mutex.
 
bool upgrade_to_writer ()
 Upgrade reader to become a writer. More...
 
+void release ()
 Release lock.
 
+bool downgrade_to_reader ()
 Downgrade writer to become a reader.
 
+bool try_acquire (spin_rw_mutex &m, bool write=true)
 Try acquire lock on given mutex.
 
+ + + + + + + +

+Protected Attributes

+spin_rw_mutexmutex
 The pointer to the current mutex that is held, or NULL if no mutex is held.
 
bool is_writer
 If mutex!=NULL, then is_writer is true if holding a writer lock, false if holding a reader lock. More...
 
+ + + +

+Friends

+class tbb::interface8::internal::x86_rtm_rw_mutex
 
+

Detailed Description

+

The scoped locking pattern.

+

It helps to avoid the common problem of forgetting to release lock. It also nicely provides the "node" for queuing locks.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + +
+ + + + + + + +
tbb::spin_rw_mutex_v3::scoped_lock::scoped_lock ()
+
+inline
+
+ +

Construct lock that has not acquired a mutex.

+

Equivalent to zero-initialization of *this.

+ +
+
+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + +
bool tbb::spin_rw_mutex_v3::scoped_lock::upgrade_to_writer ()
+
+inline
+
+ +

Upgrade reader to become a writer.

+

Returns whether the upgrade happened without releasing and re-acquiring the lock

+ +

References is_writer.

+ +
+
+

Member Data Documentation

+ +
+
+ + + + + +
+ + + + +
bool tbb::spin_rw_mutex_v3::scoped_lock::is_writer
+
+protected
+
+ +

If mutex!=NULL, then is_writer is true if holding a writer lock, false if holding a reader lock.

+

Not defined if not holding a lock.

+ +

Referenced by acquire(), downgrade_to_reader(), release(), try_acquire(), and upgrade_to_writer().

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • spin_rw_mutex.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00141.png b/doc/html/a00141.png new file mode 100644 index 0000000000..13249c6a5c Binary files /dev/null and b/doc/html/a00141.png differ diff --git a/doc/html/a00142.html b/doc/html/a00142.html new file mode 100644 index 0000000000..754f6ec669 --- /dev/null +++ b/doc/html/a00142.html @@ -0,0 +1,74 @@ + + + + + + +tbb::internal::critical_section_v4::scoped_lock Class Reference + + + + + + + +
+ +
+
tbb::internal::critical_section_v4::scoped_lock Class Reference
+
+
+
+Inheritance diagram for tbb::internal::critical_section_v4::scoped_lock:
+
+
+ + + +
+ + + + +

+Public Member Functions

scoped_lock (critical_section_v4 &lock_me)
 
+
The documentation for this class was generated from the following file:
    +
  • critical_section.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00142.png b/doc/html/a00142.png new file mode 100644 index 0000000000..15626cfa0f Binary files /dev/null and b/doc/html/a00142.png differ diff --git a/doc/html/a00143.html b/doc/html/a00143.html new file mode 100644 index 0000000000..d62e590feb --- /dev/null +++ b/doc/html/a00143.html @@ -0,0 +1,99 @@ + + + + + + +tbb::interface5::reader_writer_lock::scoped_lock_read Class Reference + + + + + + + +
+ +
+
tbb::interface5::reader_writer_lock::scoped_lock_read Class Reference
+
+
+ +

The scoped lock pattern for read locks. + More...

+ +

#include <reader_writer_lock.h>

+
+Inheritance diagram for tbb::interface5::reader_writer_lock::scoped_lock_read:
+
+
+ + + +
+ + + + + + + + + + + + +

+Public Member Functions

scoped_lock_read (reader_writer_lock &lock)
 Construct with blocking attempt to acquire read lock on the passed-in lock.
 
~scoped_lock_read ()
 Destructor, releases the read lock.
 
+void * operator new (size_t s)
 
+void operator delete (void *p)
 
+ + + +

+Friends

+class reader_writer_lock
 
+

Detailed Description

+

The scoped lock pattern for read locks.

+

The documentation for this class was generated from the following file:
    +
  • reader_writer_lock.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00143.png b/doc/html/a00143.png new file mode 100644 index 0000000000..10066bd980 Binary files /dev/null and b/doc/html/a00143.png differ diff --git a/doc/html/a00144.html b/doc/html/a00144.html new file mode 100644 index 0000000000..b6e766aa1b --- /dev/null +++ b/doc/html/a00144.html @@ -0,0 +1,150 @@ + + + + + + +tbb::flow::interface8::sender< T > Class Template Reference + + + + + + +
+ + + + + +
+
+ +
+
tbb::flow::interface8::sender< T > Class Template Referenceabstract
+
+
+ +

Pure virtual template class that defines a sender of messages of type T. + More...

+ +

#include <flow_graph.h>

+
+Inheritance diagram for tbb::flow::interface8::sender< T >:
+
+
+ + +tbb::flow::interface8::broadcast_node< T > +tbb::flow::interface8::buffer_node< T, A > +tbb::flow::interface8::limiter_node< T > +tbb::flow::interface8::overwrite_node< T > +tbb::flow::interface8::priority_queue_node< T, Compare, A > +tbb::flow::interface8::queue_node< T, A > +tbb::flow::interface8::write_once_node< T > +tbb::flow::interface8::sequencer_node< T, A > + +
+ + + + + + + + + + + + + +

+Public Types

+typedef T output_type
 The output type of this sender.
 
+typedef receiver< T > successor_type
 The successor type for this node.
 
+typedef
+internal::edge_container
+< successor_type
built_successors_type
 interface to record edges for traversal & deletion
 
+typedef
+built_successors_type::edge_list_type 
successor_list_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+virtual bool register_successor (successor_type &r)=0
 Add a new successor to this node.
 
+virtual bool remove_successor (successor_type &r)=0
 Removes a successor from this node.
 
+virtual bool try_get (T &)
 Request an item from the sender.
 
+virtual bool try_reserve (T &)
 Reserves an item in the sender.
 
+virtual bool try_release ()
 Releases the reserved item.
 
+virtual bool try_consume ()
 Consumes the reserved item.
 
+virtual built_successors_typebuilt_successors ()=0
 
+virtual void internal_add_built_successor (successor_type &)=0
 
+virtual void internal_delete_built_successor (successor_type &)=0
 
+virtual void copy_successors (successor_list_type &)=0
 
+virtual size_t successor_count ()=0
 
+

Detailed Description

+

template<typename T>
+class tbb::flow::interface8::sender< T >

+ +

Pure virtual template class that defines a sender of messages of type T.

+

The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00144.png b/doc/html/a00144.png new file mode 100644 index 0000000000..f8d0e860bb Binary files /dev/null and b/doc/html/a00144.png differ diff --git a/doc/html/a00145.html b/doc/html/a00145.html new file mode 100644 index 0000000000..3cfbb2c088 --- /dev/null +++ b/doc/html/a00145.html @@ -0,0 +1,393 @@ + + + + + + +tbb::flow::interface8::sequencer_node< T, A > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::sequencer_node< T, A > Class Template Reference
+
+
+ +

Forwards messages in sequence order. + More...

+ +

#include <flow_graph.h>

+
+Inheritance diagram for tbb::flow::interface8::sequencer_node< T, A >:
+
+
+ + +tbb::flow::interface8::queue_node< T, A > +tbb::flow::interface8::buffer_node< T, A > +tbb::flow::interface8::graph_node +tbb::flow::interface8::receiver< T > +tbb::flow::interface8::sender< T > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef T input_type
 
+typedef T output_type
 
+typedef sender< input_typepredecessor_type
 
+typedef receiver< output_typesuccessor_type
 
- Public Types inherited from tbb::flow::interface8::queue_node< T, A >
+typedef T input_type
 
+typedef T output_type
 
+typedef sender< input_typepredecessor_type
 
+typedef receiver< output_typesuccessor_type
 
- Public Types inherited from tbb::flow::interface8::buffer_node< T, A >
+typedef T input_type
 
+typedef T output_type
 
+typedef sender< input_typepredecessor_type
 
+typedef receiver< output_typesuccessor_type
 
+typedef buffer_node< T, A > class_type
 
+typedef receiver< input_type >
+::predecessor_list_type 
predecessor_list_type
 
+typedef sender< output_type >
+::successor_list_type 
successor_list_type
 
- Public Types inherited from tbb::flow::interface8::receiver< T >
+typedef T input_type
 The input type of this receiver.
 
+typedef sender< T > predecessor_type
 The predecessor type for this node.
 
+typedef
+internal::edge_container
+< predecessor_type
built_predecessors_type
 
+typedef
+built_predecessors_type::edge_list_type 
predecessor_list_type
 
- Public Types inherited from tbb::flow::interface8::sender< T >
+typedef T output_type
 The output type of this sender.
 
+typedef receiver< T > successor_type
 The successor type for this node.
 
+typedef
+internal::edge_container
+< successor_type
built_successors_type
 interface to record edges for traversal & deletion
 
+typedef
+built_successors_type::edge_list_type 
successor_list_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<typename Sequencer >
 sequencer_node (graph &g, const Sequencer &s)
 Constructor.
 
sequencer_node (const sequencer_node &src)
 Copy constructor.
 
~sequencer_node ()
 Destructor.
 
+void set_name (const char *name)
 
- Public Member Functions inherited from tbb::flow::interface8::queue_node< T, A >
queue_node (graph &g)
 Constructor.
 
queue_node (const queue_node &src)
 Copy constructor.
 
- Public Member Functions inherited from tbb::flow::interface8::buffer_node< T, A >
buffer_node (graph &g)
 Constructor.
 
buffer_node (const buffer_node &src)
 Copy constructor.
 
bool register_successor (successor_type &r)
 Adds a new successor. More...
 
+void internal_add_built_successor (successor_type &r)
 
+void internal_delete_built_successor (successor_type &r)
 
+void internal_add_built_predecessor (predecessor_type &p)
 
+void internal_delete_built_predecessor (predecessor_type &p)
 
+size_t predecessor_count ()
 
+size_t successor_count ()
 
+void copy_predecessors (predecessor_list_type &v)
 
+void copy_successors (successor_list_type &v)
 
bool remove_successor (successor_type &r)
 Removes a successor. More...
 
bool try_get (T &v)
 Request an item from the buffer_node. More...
 
bool try_reserve (T &v)
 Reserves an item. More...
 
bool try_release ()
 Release a reserved item. More...
 
bool try_consume ()
 Consumes a reserved item. More...
 
+void extract ()
 
- Public Member Functions inherited from tbb::flow::interface8::graph_node
graph_node (graph &g)
 
- Public Member Functions inherited from tbb::flow::interface8::receiver< T >
+virtual ~receiver ()
 Destructor.
 
+bool try_put (const T &t)
 Put an item to the receiver.
 
+virtual bool register_predecessor (predecessor_type &)
 Add a predecessor to the node.
 
+virtual bool remove_predecessor (predecessor_type &)
 Remove a predecessor from the node.
 
+virtual void copy_predecessors (predecessor_list_type &)=0
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Types

enum  op_stat { WAIT =0, +SUCCEEDED, +FAILED + }
 
+typedef buffer_node< T, A >
+::size_type 
size_type
 
+typedef buffer_node< T, A >
+::buffer_operation 
sequencer_operation
 
- Protected Types inherited from tbb::flow::interface8::queue_node< T, A >
enum  op_stat { WAIT =0, +SUCCEEDED, +FAILED + }
 
+typedef buffer_node< T, A > base_type
 
+typedef base_type::size_type size_type
 
+typedef base_type::buffer_operation queue_operation
 
- Protected Types inherited from tbb::flow::interface8::buffer_node< T, A >
enum  op_type {
+  reg_succ, +rem_succ, +req_item, +res_item, +
+  rel_res, +con_res, +put_item, +try_fwd_task, +
+  add_blt_succ, +del_blt_succ, +add_blt_pred, +del_blt_pred, +
+  blt_succ_cnt, +blt_pred_cnt, +blt_succ_cpy, +blt_pred_cpy +
+ }
 
enum  op_stat { WAIT =0, +SUCCEEDED, +FAILED + }
 
+typedef size_t size_type
 
+typedef
+internal::aggregating_functor
+< class_type, buffer_operation
handler_type
 
+typedef sender< T >
+::built_successors_type 
built_successors_type
 
+typedef receiver< T >
+::built_predecessors_type 
built_predecessors_type
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from tbb::flow::interface8::queue_node< T, A >
+void internal_forward_task (queue_operation *op)
 Tries to forward valid items to successors.
 
+void internal_pop (queue_operation *op)
 
+void internal_reserve (queue_operation *op)
 
+void internal_consume (queue_operation *op)
 
+void reset_node (reset_flags f)
 
- Protected Attributes inherited from tbb::flow::interface8::buffer_node< T, A >
+internal::round_robin_cache< T,
+null_rw_mutex
my_successors
 
+internal::edge_container
+< predecessor_type
my_built_predecessors
 
+bool forwarder_busy
 
+internal::aggregator
+< handler_type,
+buffer_operation
my_aggregator
 
+

Detailed Description

+

template<typename T, typename A = cache_aligned_allocator<T>>
+class tbb::flow::interface8::sequencer_node< T, A >

+ +

Forwards messages in sequence order.

+

The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00145.png b/doc/html/a00145.png new file mode 100644 index 0000000000..2190e2e8ed Binary files /dev/null and b/doc/html/a00145.png differ diff --git a/doc/html/a00146.html b/doc/html/a00146.html new file mode 100644 index 0000000000..db6c5c7d5a --- /dev/null +++ b/doc/html/a00146.html @@ -0,0 +1,253 @@ + + + + + + +tbb::flow::interface8::source_node< Output > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::source_node< Output > Class Template Reference
+
+
+ +

An executable node that acts as a source, i.e. it has no predecessors. + More...

+ +

#include <flow_graph.h>

+
+Inheritance diagram for tbb::flow::interface8::source_node< Output >:
+
+
+ + +tbb::flow::interface8::graph_node +tbb::flow::interface8::sender< Output > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef Output output_type
 The type of the output message, which is complete.
 
+typedef receiver< Output > successor_type
 The type of successors of this node.
 
+typedef null_type input_type
 
+typedef sender< output_type >
+::built_successors_type 
built_successors_type
 
+typedef sender< output_type >
+::successor_list_type 
successor_list_type
 
- Public Types inherited from tbb::flow::interface8::sender< Output >
+typedef Output output_type
 The output type of this sender.
 
+typedef receiver< Output > successor_type
 The successor type for this node.
 
+typedef
+internal::edge_container
+< successor_type
built_successors_type
 interface to record edges for traversal & deletion
 
+typedef
+built_successors_type::edge_list_type 
successor_list_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<typename Body >
 source_node (graph &g, Body body, bool is_active=true)
 Constructor for a node with a successor.
 
source_node (const source_node &src)
 Copy constructor.
 
~source_node ()
 The destructor.
 
+void set_name (const char *name)
 
+bool register_successor (successor_type &r)
 Add a new successor to this node.
 
+bool remove_successor (successor_type &r)
 Removes a successor from this node.
 
+built_successors_typebuilt_successors ()
 
+void internal_add_built_successor (successor_type &r)
 
+void internal_delete_built_successor (successor_type &r)
 
+size_t successor_count ()
 
+void copy_successors (successor_list_type &v)
 
+bool try_get (output_type &v)
 Request an item from the node.
 
+bool try_reserve (output_type &v)
 Reserves an item.
 
bool try_release ()
 Release a reserved item. More...
 
+bool try_consume ()
 Consumes a reserved item.
 
+void activate ()
 Activates a node that was created in the inactive state.
 
+template<typename Body >
Body copy_function_object ()
 
+void extract ()
 
- Public Member Functions inherited from tbb::flow::interface8::graph_node
graph_node (graph &g)
 
+ + + + +

+Protected Member Functions

+void reset_node (reset_flags f)
 resets the source_node to its initial state
 
+ + + +

+Friends

+class internal::source_task_bypass< source_node< output_type > >
 
+ + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from tbb::flow::interface8::graph_node
+graphmy_graph
 
+graph_nodenext
 
+graph_nodeprev
 
+

Detailed Description

+

template<typename Output>
+class tbb::flow::interface8::source_node< Output >

+ +

An executable node that acts as a source, i.e. it has no predecessors.

+

Member Function Documentation

+ +
+
+
+template<typename Output >
+ + + + + +
+ + + + + + + +
bool tbb::flow::interface8::source_node< Output >::try_release ()
+
+inlinevirtual
+
+ +

Release a reserved item.

+

true = item has been released and so remains in sender, dest must request or reserve future items

+ +

Reimplemented from tbb::flow::interface8::sender< Output >.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00146.png b/doc/html/a00146.png new file mode 100644 index 0000000000..a8bbd54a47 Binary files /dev/null and b/doc/html/a00146.png differ diff --git a/doc/html/a00147.html b/doc/html/a00147.html new file mode 100644 index 0000000000..a8da7ce153 --- /dev/null +++ b/doc/html/a00147.html @@ -0,0 +1,182 @@ + + + + + + +tbb::spin_mutex Class Reference + + + + + + + + +
+ +

A lock that occupies a single byte. + More...

+ +

#include <spin_mutex.h>

+
+Inheritance diagram for tbb::spin_mutex:
+
+
+ + + +
+ + + + + +

+Classes

class  scoped_lock
 Represents acquisition of a mutex. More...
 
+ + + + + + + + + + + + + + + + +

+Public Member Functions

 spin_mutex ()
 Construct unacquired lock. More...
 
+void __TBB_EXPORTED_METHOD internal_construct ()
 Internal constructor with ITT instrumentation.
 
+void lock ()
 Acquire lock.
 
bool try_lock ()
 Try acquiring lock (non-blocking) More...
 
+void unlock ()
 Release lock.
 
+ + + + + + + +

+Static Public Attributes

+static const bool is_rw_mutex = false
 
+static const bool is_recursive_mutex = false
 
+static const bool is_fair_mutex = false
 
+ + + +

+Friends

+class scoped_lock
 
+

Detailed Description

+

A lock that occupies a single byte.

+

A spin_mutex is a spin mutex that fits in a single byte. It should be used only for locking short critical sections (typically less than 20 instructions) when fairness is not an issue. If zero-initialized, the mutex is considered unheld.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + +
+ + + + + + + +
tbb::spin_mutex::spin_mutex ()
+
+inline
+
+ +

Construct unacquired lock.

+

Equivalent to zero-initialization of *this.

+ +

References internal_construct().

+ +
+
+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + +
bool tbb::spin_mutex::try_lock ()
+
+inline
+
+ +

Try acquiring lock (non-blocking)

+

Return true if lock acquired; false otherwise.

+ +

References tbb::aligned_space< T, N >::begin().

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • spin_mutex.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00147.png b/doc/html/a00147.png new file mode 100644 index 0000000000..5dfc58974f Binary files /dev/null and b/doc/html/a00147.png differ diff --git a/doc/html/a00148.html b/doc/html/a00148.html new file mode 100644 index 0000000000..e95d8b25af --- /dev/null +++ b/doc/html/a00148.html @@ -0,0 +1,236 @@ + + + + + + +tbb::spin_rw_mutex_v3 Class Reference + + + + + + + + +
+ +

Fast, unfair, spinning reader-writer lock with backoff and writer-preference. + More...

+ +

#include <spin_rw_mutex.h>

+
+Inheritance diagram for tbb::spin_rw_mutex_v3:
+
+
+ + + +
+ + + + + +

+Classes

class  scoped_lock
 The scoped locking pattern. More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

spin_rw_mutex_v3 ()
 Construct unacquired mutex.
 
~spin_rw_mutex_v3 ()
 Destructor asserts if the mutex is acquired, i.e. state is zero.
 
+void lock ()
 Acquire writer lock.
 
bool try_lock ()
 Try acquiring writer lock (non-blocking) More...
 
+void unlock ()
 Release lock.
 
+void lock_read ()
 Acquire reader lock.
 
bool try_lock_read ()
 Try acquiring reader lock (non-blocking) More...
 
+ + + + + + + +

+Static Public Attributes

+static const bool is_rw_mutex = true
 
+static const bool is_recursive_mutex = false
 
+static const bool is_fair_mutex = false
 
+ + + +

+Protected Types

+typedef intptr_t state_t
 
+ + + + +

+Protected Attributes

state_t state
 State of lock. More...
 
+ + + + + + + + + + + +

+Static Protected Attributes

+static const state_t WRITER = 1
 
+static const state_t WRITER_PENDING = 2
 
+static const state_t READERS = ~(WRITER | WRITER_PENDING)
 
+static const state_t ONE_READER = 4
 
+static const state_t BUSY = WRITER | READERS
 
+

Detailed Description

+

Fast, unfair, spinning reader-writer lock with backoff and writer-preference.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + +
bool tbb::spin_rw_mutex_v3::try_lock ()
+
+inline
+
+ +

Try acquiring writer lock (non-blocking)

+

Return true if lock acquired; false otherwise.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
bool tbb::spin_rw_mutex_v3::try_lock_read ()
+
+inline
+
+ +

Try acquiring reader lock (non-blocking)

+

Return true if reader lock acquired; false otherwise.

+ +
+
+

Member Data Documentation

+ +
+
+ + + + + +
+ + + + +
state_t tbb::spin_rw_mutex_v3::state
+
+protected
+
+ +

State of lock.

+

Bit 0 = writer is holding lock Bit 1 = request by a writer to acquire lock (hint to readers to wait) Bit 2..N = number of readers holding lock

+ +

Referenced by tbb::spin_rw_mutex_v3::scoped_lock::release(), and unlock().

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • spin_rw_mutex.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00148.png b/doc/html/a00148.png new file mode 100644 index 0000000000..ff1efc94ee Binary files /dev/null and b/doc/html/a00148.png differ diff --git a/doc/html/a00149.html b/doc/html/a00149.html new file mode 100644 index 0000000000..eb4de3cc1c --- /dev/null +++ b/doc/html/a00149.html @@ -0,0 +1,173 @@ + + + + + + +tbb::flow::interface8::split_node< TupleType, Allocator > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::split_node< TupleType, Allocator > Class Template Reference
+
+
+ +

split_node: accepts a tuple as input, forwards each element of the tuple to its + More...

+ +

#include <flow_graph.h>

+
+Inheritance diagram for tbb::flow::interface8::split_node< TupleType, Allocator >:
+
+
+ + +tbb::flow::interface8::multifunction_node< TupleType, TupleType, rejecting, Allocator > +tbb::flow::interface8::graph_node + +
+ + + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef
+base_type::output_ports_type 
output_ports_type
 
+typedef base_type::output_type output_type
 
+typedef TupleType input_type
 
+typedef Allocator allocator_type
 
- Public Types inherited from tbb::flow::interface8::multifunction_node< TupleType, TupleType, rejecting, Allocator >
+typedef TupleType input_type
 
+typedef null_type output_type
 
+typedef
+internal::wrap_tuple_elements
+< N,
+internal::multifunction_output,
+TupleType >::type 
output_ports_type
 
+typedef
+internal::multifunction_input
+< input_type,
+output_ports_type, Allocator > 
fInput_type
 
+typedef
+internal::function_input_queue
+< input_type, Allocator > 
input_queue_type
 
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

split_node (graph &g)
 
split_node (const split_node &other)
 
+void set_name (const char *name)
 
- Public Member Functions inherited from tbb::flow::interface8::multifunction_node< TupleType, TupleType, rejecting, Allocator >
multifunction_node (graph &g, size_t concurrency, Body body)
 
multifunction_node (const multifunction_node &other)
 
+void set_name (const char *name)
 
+void extract ()
 
- Public Member Functions inherited from tbb::flow::interface8::graph_node
graph_node (graph &g)
 
+ + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from tbb::flow::interface8::multifunction_node< TupleType, TupleType, rejecting, Allocator >
+void reset_node (reset_flags f)
 
- Protected Attributes inherited from tbb::flow::interface8::graph_node
+graphmy_graph
 
+graph_nodenext
 
+graph_nodeprev
 
- Static Protected Attributes inherited from tbb::flow::interface8::multifunction_node< TupleType, TupleType, rejecting, Allocator >
+static const int N
 
+

Detailed Description

+

template<typename TupleType, typename Allocator = cache_aligned_allocator<TupleType>>
+class tbb::flow::interface8::split_node< TupleType, Allocator >

+ +

split_node: accepts a tuple as input, forwards each element of the tuple to its

+

The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00149.png b/doc/html/a00149.png new file mode 100644 index 0000000000..a0bcfb49c5 Binary files /dev/null and b/doc/html/a00149.png differ diff --git a/doc/html/a00150.html b/doc/html/a00150.html new file mode 100644 index 0000000000..df5bdd6906 --- /dev/null +++ b/doc/html/a00150.html @@ -0,0 +1,118 @@ + + + + + + +tbb::structured_task_group Class Reference + + + + + + + +
+ +
+
tbb::structured_task_group Class Reference
+
+
+
+Inheritance diagram for tbb::structured_task_group:
+
+
+ + +tbb::internal::task_group_base + +
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<typename F >
task_group_status run_and_wait (task_handle< F > &h)
 
+task_group_status wait ()
 
- Public Member Functions inherited from tbb::internal::task_group_base
task_group_base (uintptr_t traits=0)
 
+template<typename F >
void run (task_handle< F > &h)
 
+task_group_status wait ()
 
+bool is_canceling ()
 
+void cancel ()
 
+ + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from tbb::internal::task_group_base
+task & owner ()
 
+template<typename F >
task_group_status internal_run_and_wait (F &f)
 
+template<typename F , typename Task >
void internal_run (F &f)
 
- Protected Attributes inherited from tbb::internal::task_group_base
+empty_task * my_root
 
+task_group_context my_context
 
+
The documentation for this class was generated from the following file:
    +
  • task_group.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00150.png b/doc/html/a00150.png new file mode 100644 index 0000000000..f9335edcea Binary files /dev/null and b/doc/html/a00150.png differ diff --git a/doc/html/a00151.html b/doc/html/a00151.html new file mode 100644 index 0000000000..76e279ffb0 --- /dev/null +++ b/doc/html/a00151.html @@ -0,0 +1,56 @@ + + + + + + +tbb::flow::interface8::internal::successor_cache< T, M > Class Template Reference + + + + + + +
+ + + + + +
+
+
+
tbb::flow::interface8::internal::successor_cache< T, M > Class Template Reference
+
+
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00152.html b/doc/html/a00152.html new file mode 100644 index 0000000000..ab4e266604 --- /dev/null +++ b/doc/html/a00152.html @@ -0,0 +1,382 @@ + + + + + + +tbb::interface7::task_arena Class Reference + + + + + + + +
+ +
+
tbb::interface7::task_arena Class Reference
+
+
+ +

#include <task_arena.h>

+
+Inheritance diagram for tbb::interface7::task_arena:
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 task_arena (int max_concurrency=automatic, unsigned reserved_for_masters=1)
 Creates task_arena with certain concurrency limits. More...
 
task_arena (const task_arena &s)
 Copies settings from another task_arena.
 
+void initialize ()
 Forces allocation of the resources for the task_arena as specified in constructor arguments.
 
+void initialize (int max_concurrency, unsigned reserved_for_masters=1)
 Overrides concurrency level and forces initialization of internal representation.
 
void terminate ()
 
 ~task_arena ()
 
bool is_active () const
 
template<typename F >
void enqueue (const F &f)
 
template<typename F >
void enqueue (const F &f, priority_t p)
 
template<typename F >
void execute (F &f)
 
template<typename F >
void execute (const F &f)
 
void debug_wait_until_empty ()
 
+ + + + +

+Static Public Member Functions

+static int current_thread_index ()
 Returns the index, aka slot number, of the calling thread in its current arena.
 
+ + + +

+Friends

+class tbb::internal::task_scheduler_observer_v3
 
+

Detailed Description

+

1-to-1 proxy representation class of scheduler's arena Constructors set up settings only, real construction is deferred till the first method invocation Destructor only removes one of the references to the inner arena representation. Final destruction happens when all the references (and the work) are gone.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
tbb::interface7::task_arena::task_arena (int max_concurrency = automatic,
unsigned reserved_for_masters = 1 
)
+
+inline
+
+ +

Creates task_arena with certain concurrency limits.

+

Sets up settings only, real construction is deferred till the first method invocation

+
    +
  • max_concurrency specifies total number of slots in arena where threads work
  • +
  • reserved_for_masters specifies number of slots to be used by master threads only. Value of 1 is default and reflects behavior of implicit arenas.
  • +
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
tbb::interface7::task_arena::~task_arena ()
+
+inline
+
+

Removes the reference to the internal arena representation, and destroys the external object. Not thread safe wrt concurrent invocations of other methods.

+ +
+
+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + +
void tbb::interface7::task_arena::debug_wait_until_empty ()
+
+inline
+
+

Wait for all work in the arena to be completed Even submitted by other application threads Joins arena if/when possible (in the same way as execute())

+ +
+
+ +
+
+
+template<typename F >
+ + + + + +
+ + + + + + + + +
void tbb::interface7::task_arena::enqueue (const F & f)
+
+inline
+
+

Enqueues a task into the arena to process a functor, and immediately returns. Does not require the calling thread to join the arena

+ +
+
+ +
+
+
+template<typename F >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void tbb::interface7::task_arena::enqueue (const F & f,
priority_t p 
)
+
+inline
+
+

Enqueues a task with priority p into the arena to process a functor f, and immediately returns. Does not require the calling thread to join the arena

+ +
+
+ +
+
+
+template<typename F >
+ + + + + +
+ + + + + + + + +
void tbb::interface7::task_arena::execute (F & f)
+
+inline
+
+

Joins the arena and executes a functor, then returns If not possible to join, wraps the functor into a task, enqueues it and waits for task completion Can decrement the arena demand for workers, causing a worker to leave and free a slot to the calling thread

+ +
+
+ +
+
+
+template<typename F >
+ + + + + +
+ + + + + + + + +
void tbb::interface7::task_arena::execute (const F & f)
+
+inline
+
+

Joins the arena and executes a functor, then returns If not possible to join, wraps the functor into a task, enqueues it and waits for task completion Can decrement the arena demand for workers, causing a worker to leave and free a slot to the calling thread

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
bool tbb::interface7::task_arena::is_active () const
+
+inline
+
+

Returns true if the arena is active (initialized); false otherwise. The name was chosen to match a task_scheduler_init method with the same semantics.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
void tbb::interface7::task_arena::terminate ()
+
+inline
+
+

Removes the reference to the internal arena representation. Not thread safe wrt concurrent invocations of other methods.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • task_arena.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00152.png b/doc/html/a00152.png new file mode 100644 index 0000000000..e9685d4171 Binary files /dev/null and b/doc/html/a00152.png differ diff --git a/doc/html/a00153.html b/doc/html/a00153.html new file mode 100644 index 0000000000..cc5ca39624 --- /dev/null +++ b/doc/html/a00153.html @@ -0,0 +1,127 @@ + + + + + + +tbb::task_group Class Reference + + + + + + + +
+ +
+
tbb::task_group Class Reference
+
+
+
+Inheritance diagram for tbb::task_group:
+
+
+ + +tbb::internal::task_group_base + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<typename F >
void run (task_handle< F > &h)
 
+template<typename F >
void run (const F &f)
 
+template<typename F >
task_group_status run_and_wait (const F &f)
 
+template<typename F >
task_group_status run_and_wait (task_handle< F > &h)
 
- Public Member Functions inherited from tbb::internal::task_group_base
task_group_base (uintptr_t traits=0)
 
+template<typename F >
void run (task_handle< F > &h)
 
+task_group_status wait ()
 
+bool is_canceling ()
 
+void cancel ()
 
+ + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from tbb::internal::task_group_base
+task & owner ()
 
+template<typename F >
task_group_status internal_run_and_wait (F &f)
 
+template<typename F , typename Task >
void internal_run (F &f)
 
- Protected Attributes inherited from tbb::internal::task_group_base
+empty_task * my_root
 
+task_group_context my_context
 
+
The documentation for this class was generated from the following file:
    +
  • task_group.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00153.png b/doc/html/a00153.png new file mode 100644 index 0000000000..d42b601be2 Binary files /dev/null and b/doc/html/a00153.png differ diff --git a/doc/html/a00154.html b/doc/html/a00154.html new file mode 100644 index 0000000000..24c4118a8f --- /dev/null +++ b/doc/html/a00154.html @@ -0,0 +1,114 @@ + + + + + + +tbb::internal::task_group_base Class Reference + + + + + + + +
+ +
+
tbb::internal::task_group_base Class Reference
+
+
+
+Inheritance diagram for tbb::internal::task_group_base:
+
+
+ + +tbb::structured_task_group +tbb::task_group + +
+ + + + + + + + + + + + + +

+Public Member Functions

task_group_base (uintptr_t traits=0)
 
+template<typename F >
void run (task_handle< F > &h)
 
+task_group_status wait ()
 
+bool is_canceling ()
 
+void cancel ()
 
+ + + + + + + + + +

+Protected Member Functions

+task & owner ()
 
+template<typename F >
task_group_status internal_run_and_wait (F &f)
 
+template<typename F , typename Task >
void internal_run (F &f)
 
+ + + + + +

+Protected Attributes

+empty_task * my_root
 
+task_group_context my_context
 
+
The documentation for this class was generated from the following file:
    +
  • task_group.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00154.png b/doc/html/a00154.png new file mode 100644 index 0000000000..e95fec5546 Binary files /dev/null and b/doc/html/a00154.png differ diff --git a/doc/html/a00155.html b/doc/html/a00155.html new file mode 100644 index 0000000000..c3bab04b06 --- /dev/null +++ b/doc/html/a00155.html @@ -0,0 +1,60 @@ + + + + + + +tbb::task_group_context Struct Reference + + + + + + + +
+
+
tbb::task_group_context Struct Reference
+
+
+ +

#include <parallel_invoke.h>

+

Detailed Description

+

Dummy to avoid cluttering the bulk of the header with enormous amount of ifdefs.

+

The documentation for this struct was generated from the following file:
    +
  • parallel_invoke.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00156.html b/doc/html/a00156.html new file mode 100644 index 0000000000..c5bca070c3 --- /dev/null +++ b/doc/html/a00156.html @@ -0,0 +1,91 @@ + + + + + + +tbb::task_handle< F > Class Template Reference + + + + + + + +
+ +
+
tbb::task_handle< F > Class Template Reference
+
+
+
+Inheritance diagram for tbb::task_handle< F >:
+
+
+ + + +
+ + + + + + +

+Public Member Functions

task_handle (const F &f)
 
+void operator() () const
 
+ + + + + + + + +

+Friends

+template<typename _F >
class internal::task_handle_task
 
+class task_group
 
+class structured_task_group
 
+
The documentation for this class was generated from the following file:
    +
  • task_group.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00156.png b/doc/html/a00156.png new file mode 100644 index 0000000000..5f640e9e73 Binary files /dev/null and b/doc/html/a00156.png differ diff --git a/doc/html/a00157.html b/doc/html/a00157.html new file mode 100644 index 0000000000..9eb3bb22b9 --- /dev/null +++ b/doc/html/a00157.html @@ -0,0 +1,74 @@ + + + + + + +tbb::internal::task_handle_task< F > Class Template Reference + + + + + + + +
+ +
+
tbb::internal::task_handle_task< F > Class Template Reference
+
+
+
+Inheritance diagram for tbb::internal::task_handle_task< F >:
+
+
+ + + +
+ + + + +

+Public Member Functions

task_handle_task (task_handle< F > &h)
 
+
The documentation for this class was generated from the following file:
    +
  • task_group.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00157.png b/doc/html/a00157.png new file mode 100644 index 0000000000..229263c622 Binary files /dev/null and b/doc/html/a00157.png differ diff --git a/doc/html/a00158.html b/doc/html/a00158.html new file mode 100644 index 0000000000..08e3da3325 --- /dev/null +++ b/doc/html/a00158.html @@ -0,0 +1,215 @@ + + + + + + +tbb::task_scheduler_init Class Reference + + + + + + + + +
+ +

Class delimiting the scope of task scheduler activity. + More...

+ +

#include <task_scheduler_init.h>

+
+Inheritance diagram for tbb::task_scheduler_init:
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void __TBB_EXPORTED_METHOD initialize (int number_of_threads=automatic)
 Ensure that scheduler exists for this thread. More...
 
void __TBB_EXPORTED_METHOD initialize (int number_of_threads, stack_size_type thread_stack_size)
 The overloaded method with stack size parameter. More...
 
+void __TBB_EXPORTED_METHOD terminate ()
 Inverse of method initialize.
 
if (wait_workers_in_terminate) my_scheduler
 
initialize (number_of_threads, thread_stack_size)
 
~task_scheduler_init ()
 Destroy scheduler for this thread if thread has no other live task_scheduler_inits.
 
+bool is_active () const
 Returns true if scheduler is active (initialized); false otherwise.
 
+ + + + +

+Static Public Member Functions

static int __TBB_EXPORTED_FUNC default_num_threads ()
 Returns the number of threads TBB scheduler would create if initialized by default. More...
 
+ + + + +

+Public Attributes

+task_scheduler_init(int
+number_of_threads=automatic,
+stack_size_type
+thread_stack_size=0, bool
+wait_workers_in_terminate=false) 
thread_stack_size = TBB_USE_CAPTURED_EXCEPTION ? propagation_mode_captured : propagation_mode_exact
 Shorthand for default constructor followed by call to initialize(number_of_threads).
 
+ + + + + + + +

+Static Public Attributes

+static const int automatic = -1
 Typedef for number of threads that is automatic.
 
+static const int deferred = -2
 Argument to initialize() or constructor that causes initialization to be deferred.
 
+

Detailed Description

+

Class delimiting the scope of task scheduler activity.

+

A thread can construct a task_scheduler_init object and keep it alive while it uses TBB's tasking subsystem (including parallel algorithms).

+

This class allows to customize properties of the TBB task pool to some extent. For example it can limit concurrency level of parallel work initiated by the given thread. It also can be used to specify stack size of the TBB worker threads, though this setting is not effective if the thread pool has already been created.

+

If a parallel construct is used without task_scheduler_init object previously created, the scheduler will be initialized automatically with default settings, and will persist until this thread exits. Default concurrency level is defined as described in task_scheduler_init::initialize().

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + +
static int __TBB_EXPORTED_FUNC tbb::task_scheduler_init::default_num_threads ()
+
+static
+
+ +

Returns the number of threads TBB scheduler would create if initialized by default.

+

Result returned by this method does not depend on whether the scheduler has already been initialized.

+

Because tbb 2.0 does not support blocking tasks yet, you may use this method to boost the number of threads in the tbb's internal pool, if your tasks are doing I/O operations. The optimal number of additional threads depends on how much time your tasks spend in the blocked state.

+

Before TBB 3.0 U4 this method returned the number of logical CPU in the system. Currently on Windows, Linux and FreeBSD it returns the number of logical CPUs available to the current process in accordance with its affinity mask.

+

NOTE: The return value of this method never changes after its first invocation. This means that changes in the process affinity mask that took place after this method was first invoked will not affect the number of worker threads in the TBB worker threads pool.

+ +
+
+ +
+
+ + + + + + + + +
void __TBB_EXPORTED_METHOD tbb::task_scheduler_init::initialize (int number_of_threads = automatic)
+
+ +

Ensure that scheduler exists for this thread.

+

A value of -1 lets TBB decide on the number of threads, which is usually maximal hardware concurrency for this process, that is the number of logical CPUs on the machine (possibly limited by the processor affinity mask of this process (Windows) or of this thread (Linux, FreeBSD). It is preferable option for production code because it helps to avoid nasty surprises when several TBB based components run side-by-side or in a nested fashion inside the same process.

+

The number_of_threads is ignored if any other task_scheduler_inits currently exist. A thread may construct multiple task_scheduler_inits. Doing so does no harm because the underlying scheduler is reference counted.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void __TBB_EXPORTED_METHOD tbb::task_scheduler_init::initialize (int number_of_threads,
stack_size_type thread_stack_size 
)
+
+ +

The overloaded method with stack size parameter.

+

Overloading is necessary to preserve ABI compatibility

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • task_scheduler_init.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00158.png b/doc/html/a00158.png new file mode 100644 index 0000000000..58550fd5aa Binary files /dev/null and b/doc/html/a00158.png differ diff --git a/doc/html/a00159.html b/doc/html/a00159.html new file mode 100644 index 0000000000..f3c36ef2f7 --- /dev/null +++ b/doc/html/a00159.html @@ -0,0 +1,269 @@ + + + + + + +tbb::interface6::task_scheduler_observer Class Reference + + + + + + + +
+ +
+
tbb::interface6::task_scheduler_observer Class Reference
+
+
+
+Inheritance diagram for tbb::interface6::task_scheduler_observer:
+
+
+ + +tbb::internal::task_scheduler_observer_v3 + +
+ + + + + +

+Public Types

enum  { keep_awake = false, +allow_sleep = true + }
 Return commands for may_sleep()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 task_scheduler_observer (bool local=false)
 Construct local or global observer in inactive state (observation disabled). More...
 
 task_scheduler_observer (task_arena &a)
 Construct local observer for a given arena in inactive state (observation disabled). More...
 
virtual ~task_scheduler_observer ()
 
void observe (bool state=true)
 Enable or disable observation. More...
 
virtual bool may_sleep ()
 The callback can be invoked by a worker thread before it goes to sleep. More...
 
- Public Member Functions inherited from tbb::internal::task_scheduler_observer_v3
void __TBB_EXPORTED_METHOD observe (bool state=true)
 Enable or disable observation. More...
 
+bool is_observing () const
 Returns true if observation is enabled, false otherwise.
 
task_scheduler_observer_v3 ()
 Construct observer with observation disabled.
 
virtual void on_scheduler_entry (bool)
 Entry notification. More...
 
virtual void on_scheduler_exit (bool)
 Exit notification. More...
 
+virtual ~task_scheduler_observer_v3 ()
 Destructor automatically switches observation off if it is enabled.
 
+ + + + + + + +

+Friends

+class internal::task_scheduler_observer_v3
 
+class internal::observer_proxy
 
+class internal::observer_list
 
+

Constructor & Destructor Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
tbb::interface6::task_scheduler_observer::task_scheduler_observer (bool local = false)
+
+inline
+
+ +

Construct local or global observer in inactive state (observation disabled).

+

For a local observer entry/exit notifications are invoked whenever a worker thread joins/leaves the arena of the observer's owner thread. If a thread is already in the arena when the observer is activated, the entry notification is called before it executes the first stolen task. TODO: Obsolete. Global observer semantics is obsolete as it violates master thread isolation guarantees and is not composable. Thus the current default behavior of the constructor is obsolete too and will be changed in one of the future versions of the library.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
tbb::interface6::task_scheduler_observer::task_scheduler_observer (task_arena & a)
+
+inline
+
+ +

Construct local observer for a given arena in inactive state (observation disabled).

+

entry/exit notifications are invoked whenever a thread joins/leaves arena. If a thread is already in the arena when the observer is activated, the entry notification is called before it executes the first stolen task.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
virtual tbb::interface6::task_scheduler_observer::~task_scheduler_observer ()
+
+inlinevirtual
+
+

Destructor protects instance of the observer from concurrent notification. It is recommended to disable observation before destructor of a derived class starts, otherwise it can lead to concurrent notification callback on partly destroyed object

+ +

References observe().

+ +
+
+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool tbb::interface6::task_scheduler_observer::may_sleep ()
+
+inlinevirtual
+
+ +

The callback can be invoked by a worker thread before it goes to sleep.

+

If it returns false ('keep_awake'), the thread will keep spinning and looking for work. It will not be called for master threads.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
void tbb::interface6::task_scheduler_observer::observe (bool state = true)
+
+inline
+
+ +

Enable or disable observation.

+

Warning: concurrent invocations of this method are not safe. Repeated calls with the same state are no-ops.

+ +

References tbb::internal::task_scheduler_observer_v3::observe(), and tbb::relaxed.

+ +

Referenced by ~task_scheduler_observer().

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • task_scheduler_observer.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00159.png b/doc/html/a00159.png new file mode 100644 index 0000000000..37496e9076 Binary files /dev/null and b/doc/html/a00159.png differ diff --git a/doc/html/a00160.html b/doc/html/a00160.html new file mode 100644 index 0000000000..0e782f5911 --- /dev/null +++ b/doc/html/a00160.html @@ -0,0 +1,185 @@ + + + + + + +tbb::internal::task_scheduler_observer_v3 Class Reference + + + + + + + +
+ +
+
tbb::internal::task_scheduler_observer_v3 Class Reference
+
+
+
+Inheritance diagram for tbb::internal::task_scheduler_observer_v3:
+
+
+ + +tbb::interface6::task_scheduler_observer + +
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void __TBB_EXPORTED_METHOD observe (bool state=true)
 Enable or disable observation. More...
 
+bool is_observing () const
 Returns true if observation is enabled, false otherwise.
 
task_scheduler_observer_v3 ()
 Construct observer with observation disabled.
 
virtual void on_scheduler_entry (bool)
 Entry notification. More...
 
virtual void on_scheduler_exit (bool)
 Exit notification. More...
 
+virtual ~task_scheduler_observer_v3 ()
 Destructor automatically switches observation off if it is enabled.
 
+ + + + + + + +

+Friends

+class observer_proxy
 
+class observer_list
 
+class interface6::task_scheduler_observer
 
+

Member Function Documentation

+ +
+
+ + + + + + + + +
void __TBB_EXPORTED_METHOD tbb::internal::task_scheduler_observer_v3::observe (bool state = true)
+
+ +

Enable or disable observation.

+

For local observers the method can be used only when the current thread has the task scheduler initialized or is attached to an arena.

+

Repeated calls with the same state are no-ops.

+ +

Referenced by tbb::interface6::task_scheduler_observer::observe(), and ~task_scheduler_observer_v3().

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
virtual void tbb::internal::task_scheduler_observer_v3::on_scheduler_entry (bool )
+
+inlinevirtual
+
+ +

Entry notification.

+

Invoked from inside observe(true) call and whenever a worker enters the arena this observer is associated with. If a thread is already in the arena when the observer is activated, the entry notification is called before it executes the first stolen task.

+

Obsolete semantics. For global observers it is called by a thread before the first steal since observation became enabled.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
virtual void tbb::internal::task_scheduler_observer_v3::on_scheduler_exit (bool )
+
+inlinevirtual
+
+ +

Exit notification.

+

Invoked from inside observe(false) call and whenever a worker leaves the arena this observer is associated with.

+

Obsolete semantics. For global observers it is called by a thread before the first steal since observation became enabled.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • task_scheduler_observer.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00160.png b/doc/html/a00160.png new file mode 100644 index 0000000000..b87088c72d Binary files /dev/null and b/doc/html/a00160.png differ diff --git a/doc/html/a00161.html b/doc/html/a00161.html new file mode 100644 index 0000000000..255f13641f --- /dev/null +++ b/doc/html/a00161.html @@ -0,0 +1,160 @@ + + + + + + +tbb::tbb_allocator< T > Class Template Reference + + + + + + + +
+ +
+
tbb::tbb_allocator< T > Class Template Reference
+
+
+ +

Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. + More...

+ +

#include <tbb_allocator.h>

+ + + + +

+Classes

struct  rebind
 
+ + + + + + + + + + + + + + + + + + +

+Public Types

enum  malloc_type { scalable, +standard + }
 Specifies current allocator.
 
+typedef
+internal::allocator_type< T >
+::value_type 
value_type
 
+typedef value_type * pointer
 
+typedef const value_type * const_pointer
 
+typedef value_type & reference
 
+typedef const value_type & const_reference
 
+typedef size_t size_type
 
+typedef ptrdiff_t difference_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

tbb_allocator (const tbb_allocator &) throw ()
 
+template<typename U >
 tbb_allocator (const tbb_allocator< U > &) throw ()
 
+pointer address (reference x) const
 
+const_pointer address (const_reference x) const
 
+pointer allocate (size_type n, const void *=0)
 Allocate space for n objects.
 
+void deallocate (pointer p, size_type)
 Free previously allocated block of memory.
 
+size_type max_size () const throw ()
 Largest value for which method allocate might succeed.
 
+template<typename U , typename... Args>
void construct (U *p, Args &&...args)
 Copy-construct value at location pointed to by p.
 
+void construct (pointer p, value_type &&value)
 
+void construct (pointer p, const value_type &value)
 
+void destroy (pointer p)
 Destroy value at location pointed to by p.
 
+ + + + +

+Static Public Member Functions

+static malloc_type allocator_type ()
 Returns current allocator.
 
+

Detailed Description

+

template<typename T>
+class tbb::tbb_allocator< T >

+ +

Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.

+

The class selects the best memory allocation mechanism available from scalable_malloc and standard malloc. The members are ordered the same way they are in section 20.4.1 of the ISO C++ standard.

+

The documentation for this class was generated from the following file:
    +
  • tbb_allocator.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00162.html b/doc/html/a00162.html new file mode 100644 index 0000000000..0335c96b96 --- /dev/null +++ b/doc/html/a00162.html @@ -0,0 +1,88 @@ + + + + + + +tbb::tbb_allocator< void > Class Template Reference + + + + + + + +
+ +
+
tbb::tbb_allocator< void > Class Template Reference
+
+
+ +

Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. + More...

+ +

#include <tbb_allocator.h>

+ + + + +

+Classes

struct  rebind
 
+ + + + + + + +

+Public Types

+typedef void * pointer
 
+typedef const void * const_pointer
 
+typedef void value_type
 
+

Detailed Description

+

template<>
+class tbb::tbb_allocator< void >

+ +

Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.

+

The documentation for this class was generated from the following file:
    +
  • tbb_allocator.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00163.html b/doc/html/a00163.html new file mode 100644 index 0000000000..1f3b78aff0 --- /dev/null +++ b/doc/html/a00163.html @@ -0,0 +1,226 @@ + + + + + + +tbb::tbb_exception Class Reference + + + + + + + +
+ +
+
tbb::tbb_exception Class Referenceabstract
+
+
+ +

Interface to be implemented by all exceptions TBB recognizes and propagates across the threads. + More...

+ +

#include <tbb_exception.h>

+
+Inheritance diagram for tbb::tbb_exception:
+
+
+ + +tbb::captured_exception +tbb::movable_exception< ExceptionData > + +
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual tbb_exceptionmove ()=0 throw ()
 Creates and returns pointer to the deep copy of this exception object. More...
 
virtual void destroy ()=0 throw ()
 Destroys objects created by the move() method. More...
 
virtual void throw_self ()=0
 Throws this exception object. More...
 
+virtual const char * name () const =0 throw ()
 Returns RTTI name of the originally intercepted exception.
 
+virtual const char * what () const =0 throw ()
 Returns the result of originally intercepted exception's what() method.
 
void operator delete (void *p)
 
+

Detailed Description

+

Interface to be implemented by all exceptions TBB recognizes and propagates across the threads.

+

If an unhandled exception of the type derived from tbb::tbb_exception is intercepted by the TBB scheduler in one of the worker threads, it is delivered to and re-thrown in the root thread. The root thread is the thread that has started the outermost algorithm or root task sharing the same task_group_context with the guilty algorithm/task (the one that threw the exception first).

+

Note: when documentation mentions workers with respect to exception handling, masters are implied as well, because they are completely equivalent in this context. Consequently a root thread can be master or worker thread.

+

NOTE: In case of nested algorithms or complex task hierarchies when the nested levels share (explicitly or by means of implicit inheritance) the task group context of the outermost level, the exception may be (re-)thrown multiple times (ultimately - in each worker on each nesting level) before reaching the root thread at the outermost level. IMPORTANT: if you intercept an exception derived from this class on a nested level, you must re-throw it in the catch block by means of the "throw;" operator.

+

TBB provides two implementations of this interface: tbb::captured_exception and template class tbb::movable_exception. See their declarations for more info.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + + + + + + +
virtual void tbb::tbb_exception::destroy ()
throw (
)
+
+pure virtual
+
+ +

Destroys objects created by the move() method.

+

Frees memory and calls destructor for this exception object. Can and must be used only on objects created by the move method.

+ +

Implemented in tbb::movable_exception< ExceptionData >, and tbb::captured_exception.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + +
virtual tbb_exception* tbb::tbb_exception::move ()
throw (
)
+
+pure virtual
+
+ +

Creates and returns pointer to the deep copy of this exception object.

+

Move semantics is allowed.

+ +

Implemented in tbb::movable_exception< ExceptionData >, and tbb::captured_exception.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
void tbb::tbb_exception::operator delete (void * p)
+
+inline
+
+

Operator delete is provided only to allow using existing smart pointers with TBB exception objects obtained as the result of applying move() operation on an exception thrown out of TBB scheduler.

+

When overriding method move() make sure to override operator delete as well if memory is allocated not by TBB's scalable allocator.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
virtual void tbb::tbb_exception::throw_self ()
+
+pure virtual
+
+ +

Throws this exception object.

+

Make sure that if you have several levels of derivation from this interface you implement or override this method on the most derived level. The implementation is as simple as "throw *this;". Failure to do this will result in exception of a base class type being thrown.

+ +

Implemented in tbb::movable_exception< ExceptionData >, and tbb::captured_exception.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • tbb_exception.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00163.png b/doc/html/a00163.png new file mode 100644 index 0000000000..a067095e06 Binary files /dev/null and b/doc/html/a00163.png differ diff --git a/doc/html/a00164.html b/doc/html/a00164.html new file mode 100644 index 0000000000..51bef62b38 --- /dev/null +++ b/doc/html/a00164.html @@ -0,0 +1,117 @@ + + + + + + +tbb::internal::tbb_exception_ptr Class Reference + + + + + + + +
+ +
+
tbb::internal::tbb_exception_ptr Class Reference
+
+
+ +

Exception container that preserves the exact copy of the original exception. + More...

+ +

#include <tbb_exception.h>

+ + + + + + + + +

+Public Member Functions

void destroy () throw ()
 Destroys this objects. More...
 
+void throw_self ()
 Throws the contained exception .
 
+ + + + + + + + +

+Static Public Member Functions

+static tbb_exception_ptrallocate ()
 
+static tbb_exception_ptrallocate (const tbb_exception &tag)
 
+static tbb_exception_ptrallocate (captured_exception &src)
 This overload uses move semantics (i.e. it empties src)
 
+

Detailed Description

+

Exception container that preserves the exact copy of the original exception.

+

This class can be used only when the appropriate runtime support (mandated by C++0x) is present

+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + +
void tbb::internal::tbb_exception_ptr::destroy ()
throw (
)
+
+ +

Destroys this objects.

+

Note that objects of this type can be created only by the allocate() method.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • tbb_exception.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00165.html b/doc/html/a00165.html new file mode 100644 index 0000000000..4aecd0fa3e --- /dev/null +++ b/doc/html/a00165.html @@ -0,0 +1,185 @@ + + + + + + +tbb::internal::tbb_thread_v3 Class Reference + + + + + + + +
+ +
+
tbb::internal::tbb_thread_v3 Class Reference
+
+
+ +

Versioned thread class. + More...

+ +

#include <tbb_thread.h>

+ + + + +

+Classes

class  id
 
+ + + + + +

+Public Types

+typedef HANDLE native_handle_type
 
+typedef pthread_t native_handle_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

tbb_thread_v3 (const tbb_thread_v3 &)
 
tbb_thread_v3 () __TBB_NOEXCEPT(true)
 Constructs a thread object that does not represent a thread of execution.
 
+template<class F >
 tbb_thread_v3 (F f)
 Constructs an object and executes f() in a new thread.
 
+template<class F , class X >
 tbb_thread_v3 (F f, X x)
 Constructs an object and executes f(x) in a new thread.
 
+template<class F , class X , class Y >
 tbb_thread_v3 (F f, X x, Y y)
 Constructs an object and executes f(x,y) in a new thread.
 
+tbb_thread_v3operator= (tbb_thread_v3 &x)
 
+void swap (tbb_thread_v3 &t) __TBB_NOEXCEPT(true)
 
+bool joinable () const __TBB_NOEXCEPT(true)
 
+void __TBB_EXPORTED_METHOD join ()
 The completion of the thread represented by *this happens before join() returns.
 
+void __TBB_EXPORTED_METHOD detach ()
 When detach() returns, *this no longer represents the possibly continuing thread of execution.
 
+id get_id () const __TBB_NOEXCEPT(true)
 
+native_handle_type native_handle ()
 
+ + + + +

+Static Public Member Functions

static unsigned __TBB_EXPORTED_FUNC hardware_concurrency () __TBB_NOEXCEPT(true)
 The number of hardware thread contexts. More...
 
+ + + +

+Public Attributes

+tbb_thread_v3(tbb_thread_v3
+&&x) __TBB_NOEXCEPT(true)
+tbb_thread_v3
operator= (tbb_thread_v3 &&x) __TBB_NOEXCEPT(true)
 
+ + + + + +

+Friends

+void __TBB_EXPORTED_FUNC move_v3 (tbb_thread_v3 &t1, tbb_thread_v3 &t2)
 
+void tbb::swap (tbb_thread_v3 &t1, tbb_thread_v3 &t2) __TBB_NOEXCEPT(true)
 
+

Detailed Description

+

Versioned thread class.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + +
static unsigned __TBB_EXPORTED_FUNC tbb::internal::tbb_thread_v3::hardware_concurrency ()
+
+static
+
+ +

The number of hardware thread contexts.

+

Before TBB 3.0 U4 this methods returned the number of logical CPU in the system. Currently on Windows, Linux and FreeBSD it returns the number of logical CPUs available to the current process in accordance with its affinity mask.

+

NOTE: The return value of this method never changes after its first invocation. This means that changes in the process affinity mask that took place after this method was first invoked will not affect the number of worker threads in the TBB worker threads pool.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • tbb_thread.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00166.html b/doc/html/a00166.html new file mode 100644 index 0000000000..5747962d90 --- /dev/null +++ b/doc/html/a00166.html @@ -0,0 +1,160 @@ + + + + + + +tbb::thread_bound_filter Class Reference + + + + + + + +
+ +
+
tbb::thread_bound_filter Class Reference
+
+
+ +

A stage in a pipeline served by a user thread. + More...

+ +

#include <pipeline.h>

+
+Inheritance diagram for tbb::thread_bound_filter:
+
+
+ + +tbb::filter + +
+ + + + +

+Public Types

enum  result_type { success, +item_not_available, +end_of_stream + }
 
+ + + + + + + +

+Public Member Functions

result_type __TBB_EXPORTED_METHOD try_process_item ()
 If a data item is available, invoke operator() on that item. More...
 
result_type __TBB_EXPORTED_METHOD process_item ()
 Wait until a data item becomes available, and invoke operator() on that item. More...
 
+ + + +

+Protected Member Functions

thread_bound_filter (mode filter_mode)
 
+ + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Protected Attributes inherited from tbb::filter
+static const unsigned char filter_is_serial = 0x1
 The lowest bit 0 is for parallel vs. serial.
 
static const unsigned char filter_is_out_of_order = 0x1<<4
 4th bit distinguishes ordered vs unordered filters. More...
 
+static const unsigned char filter_is_bound = 0x1<<5
 5th bit distinguishes thread-bound and regular filters.
 
+static const unsigned char filter_may_emit_null = 0x1<<6
 6th bit marks input filters emitting small objects
 
static const unsigned char exact_exception_propagation
 7th bit defines exception propagation mode expected by the application. More...
 
+

Detailed Description

+

A stage in a pipeline served by a user thread.

+

Member Function Documentation

+ +
+
+ + + + + + + +
result_type __TBB_EXPORTED_METHOD tbb::thread_bound_filter::process_item ()
+
+ +

Wait until a data item becomes available, and invoke operator() on that item.

+

This interface is blocking. Returns 'success' if an item was processed. Returns 'end_of_stream' if there are no more items to process. Never returns 'item_not_available', as it blocks until another return condition applies.

+ +
+
+ +
+
+ + + + + + + +
result_type __TBB_EXPORTED_METHOD tbb::thread_bound_filter::try_process_item ()
+
+ +

If a data item is available, invoke operator() on that item.

+

This interface is non-blocking. Returns 'success' if an item was processed. Returns 'item_not_available' if no item can be processed now but more may arrive in the future, or if token limit is reached. Returns 'end_of_stream' if there are no more items to process.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • pipeline.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00166.png b/doc/html/a00166.png new file mode 100644 index 0000000000..7eab1d5112 Binary files /dev/null and b/doc/html/a00166.png differ diff --git a/doc/html/a00167.html b/doc/html/a00167.html new file mode 100644 index 0000000000..ad1b2994bd --- /dev/null +++ b/doc/html/a00167.html @@ -0,0 +1,96 @@ + + + + + + +tbb::internal::thread_closure_0< F > Struct Template Reference + + + + + + + +
+ +
+
tbb::internal::thread_closure_0< F > Struct Template Reference
+
+
+
+Inheritance diagram for tbb::internal::thread_closure_0< F >:
+
+
+ + +tbb::internal::thread_closure_base + +
+ + + + + + + + + +

+Public Member Functions

thread_closure_0 (const F &f)
 
- Public Member Functions inherited from tbb::internal::thread_closure_base
+void * operator new (size_t size)
 
+void operator delete (void *ptr)
 
+ + + +

+Static Public Member Functions

+static __TBB_NATIVE_THREAD_ROUTINE start_routine (void *c)
 
+ + + +

+Public Attributes

+F function
 
+
The documentation for this struct was generated from the following file:
    +
  • tbb_thread.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00167.png b/doc/html/a00167.png new file mode 100644 index 0000000000..ca33e7fe18 Binary files /dev/null and b/doc/html/a00167.png differ diff --git a/doc/html/a00168.html b/doc/html/a00168.html new file mode 100644 index 0000000000..874bc9cd82 --- /dev/null +++ b/doc/html/a00168.html @@ -0,0 +1,110 @@ + + + + + + +tbb::internal::thread_closure_1< F, X > Struct Template Reference + + + + + + + +
+ +
+
tbb::internal::thread_closure_1< F, X > Struct Template Reference
+
+
+ +

Structure used to pass user function with 1 argument to thread. + More...

+ +

#include <tbb_thread.h>

+
+Inheritance diagram for tbb::internal::thread_closure_1< F, X >:
+
+
+ + +tbb::internal::thread_closure_base + +
+ + + + + + + + + +

+Public Member Functions

thread_closure_1 (const F &f, const X &x)
 
- Public Member Functions inherited from tbb::internal::thread_closure_base
+void * operator new (size_t size)
 
+void operator delete (void *ptr)
 
+ + + + +

+Static Public Member Functions

+static __TBB_NATIVE_THREAD_ROUTINE start_routine (void *c)
 Routine passed to Windows's _beginthreadex by thread::internal_start() inside tbb.dll.
 
+ + + + + +

+Public Attributes

+F function
 
+X arg1
 
+

Detailed Description

+

template<class F, class X>
+struct tbb::internal::thread_closure_1< F, X >

+ +

Structure used to pass user function with 1 argument to thread.

+

The documentation for this struct was generated from the following file:
    +
  • tbb_thread.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00168.png b/doc/html/a00168.png new file mode 100644 index 0000000000..961925b534 Binary files /dev/null and b/doc/html/a00168.png differ diff --git a/doc/html/a00169.html b/doc/html/a00169.html new file mode 100644 index 0000000000..ca9522e19e --- /dev/null +++ b/doc/html/a00169.html @@ -0,0 +1,103 @@ + + + + + + +tbb::internal::thread_closure_2< F, X, Y > Struct Template Reference + + + + + + + +
+ +
+
tbb::internal::thread_closure_2< F, X, Y > Struct Template Reference
+
+
+
+Inheritance diagram for tbb::internal::thread_closure_2< F, X, Y >:
+
+
+ + +tbb::internal::thread_closure_base + +
+ + + + + + + + + +

+Public Member Functions

thread_closure_2 (const F &f, const X &x, const Y &y)
 
- Public Member Functions inherited from tbb::internal::thread_closure_base
+void * operator new (size_t size)
 
+void operator delete (void *ptr)
 
+ + + + +

+Static Public Member Functions

+static __TBB_NATIVE_THREAD_ROUTINE start_routine (void *c)
 Routine passed to Windows's _beginthreadex by thread::internal_start() inside tbb.dll.
 
+ + + + + + + +

+Public Attributes

+F function
 
+X arg1
 
+Y arg2
 
+
The documentation for this struct was generated from the following file:
    +
  • tbb_thread.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00169.png b/doc/html/a00169.png new file mode 100644 index 0000000000..aa52099a9d Binary files /dev/null and b/doc/html/a00169.png differ diff --git a/doc/html/a00170.html b/doc/html/a00170.html new file mode 100644 index 0000000000..b465d67132 --- /dev/null +++ b/doc/html/a00170.html @@ -0,0 +1,80 @@ + + + + + + +tbb::internal::thread_closure_base Struct Reference + + + + + + + +
+ +
+
tbb::internal::thread_closure_base Struct Reference
+
+
+
+Inheritance diagram for tbb::internal::thread_closure_base:
+
+
+ + +tbb::internal::thread_closure_0< F > +tbb::internal::thread_closure_1< F, X > +tbb::internal::thread_closure_2< F, X, Y > + +
+ + + + + + +

+Public Member Functions

+void * operator new (size_t size)
 
+void operator delete (void *ptr)
 
+
The documentation for this struct was generated from the following file:
    +
  • tbb_thread.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00170.png b/doc/html/a00170.png new file mode 100644 index 0000000000..0324577e72 Binary files /dev/null and b/doc/html/a00170.png differ diff --git a/doc/html/a00171.html b/doc/html/a00171.html new file mode 100644 index 0000000000..a32329107e --- /dev/null +++ b/doc/html/a00171.html @@ -0,0 +1,101 @@ + + + + + + +tbb::tick_count Class Reference + + + + + + + + +
+ +

Absolute timestamp. + More...

+ +

#include <tick_count.h>

+ + + + + +

+Classes

class  interval_t
 Relative time interval. More...
 
+ + + + +

+Public Member Functions

tick_count ()
 Construct an absolute timestamp initialized to zero.
 
+ + + + + + + +

+Static Public Member Functions

+static tick_count now ()
 Return current time.
 
+static double resolution ()
 Return the resolution of the clock in seconds per tick.
 
+ + + + +

+Friends

+interval_t operator- (const tick_count &t1, const tick_count &t0)
 Subtract two timestamps to get the time interval between.
 
+

Detailed Description

+

Absolute timestamp.

+

The documentation for this class was generated from the following file:
    +
  • tick_count.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00172.html b/doc/html/a00172.html new file mode 100644 index 0000000000..29ee5a8128 --- /dev/null +++ b/doc/html/a00172.html @@ -0,0 +1,69 @@ + + + + + + +tbb::interface5::internal::use_element_copy_constructor< T, C > Struct Template Reference + + + + + + + +
+ +
+
tbb::interface5::internal::use_element_copy_constructor< T, C > Struct Template Reference
+
+
+ + + + + + +

+Public Types

+typedef tbb::internal::true_type type
 
+typedef tbb::internal::true_type type
 
+
The documentation for this struct was generated from the following file:
    +
  • concurrent_priority_queue.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00173.html b/doc/html/a00173.html new file mode 100644 index 0000000000..8c5382be00 --- /dev/null +++ b/doc/html/a00173.html @@ -0,0 +1,66 @@ + + + + + + +tbb::interface5::internal::use_element_copy_constructor< T, false > Struct Template Reference + + + + + + + +
+ +
+
tbb::interface5::internal::use_element_copy_constructor< T, false > Struct Template Reference
+
+
+ + + + +

+Public Types

+typedef tbb::internal::false_type type
 
+
The documentation for this struct was generated from the following file:
    +
  • concurrent_priority_queue.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00174.html b/doc/html/a00174.html new file mode 100644 index 0000000000..0101ac53c0 --- /dev/null +++ b/doc/html/a00174.html @@ -0,0 +1,81 @@ + + + + + + +tbb::user_abort Class Reference + + + + + + + +
+ +
+
tbb::user_abort Class Reference
+
+
+ +

Exception for user-initiated abort. + More...

+ +

#include <tbb_exception.h>

+
+Inheritance diagram for tbb::user_abort:
+
+
+ + + +
+ + + + +

+Public Member Functions

+const char * what () const throw ()
 
+

Detailed Description

+

Exception for user-initiated abort.

+

The documentation for this class was generated from the following file:
    +
  • tbb_exception.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00174.png b/doc/html/a00174.png new file mode 100644 index 0000000000..a1f23345c2 Binary files /dev/null and b/doc/html/a00174.png differ diff --git a/doc/html/a00175.html b/doc/html/a00175.html new file mode 100644 index 0000000000..382dcc6575 --- /dev/null +++ b/doc/html/a00175.html @@ -0,0 +1,91 @@ + + + + + + +tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare Class Reference + + + + + + + +
+ +
+
tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare Class Reference
+
+
+
+Inheritance diagram for tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare:
+
+
+ + + +
+ + + + + + +

+Public Member Functions

+bool operator() (const value_type &left, const value_type &right) const
 
value_compare (const hash_compare &comparator)
 
+ + + +

+Protected Attributes

+hash_compare my_hash_compare
 
+ + + +

+Friends

+class concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >
 
+
The documentation for this class was generated from the following file:
    +
  • concurrent_unordered_map.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00175.png b/doc/html/a00175.png new file mode 100644 index 0000000000..d6754637d9 Binary files /dev/null and b/doc/html/a00175.png differ diff --git a/doc/html/a00176.html b/doc/html/a00176.html new file mode 100644 index 0000000000..a394185d27 --- /dev/null +++ b/doc/html/a00176.html @@ -0,0 +1,56 @@ + + + + + + +tbb::vector_iterator< Container, Value > Class Template Reference + + + + + + + +
+
+
tbb::vector_iterator< Container, Value > Class Template Reference
+
+
+
The documentation for this class was generated from the following file:
    +
  • concurrent_vector.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00177.html b/doc/html/a00177.html new file mode 100644 index 0000000000..22b25c021d --- /dev/null +++ b/doc/html/a00177.html @@ -0,0 +1,318 @@ + + + + + + +tbb::flow::interface8::write_once_node< T > Class Template Reference + + + + + + + +
+ +
+
tbb::flow::interface8::write_once_node< T > Class Template Reference
+
+
+
+Inheritance diagram for tbb::flow::interface8::write_once_node< T >:
+
+
+ + +tbb::flow::interface8::overwrite_node< T > +tbb::flow::interface8::graph_node +tbb::flow::interface8::receiver< T > +tbb::flow::interface8::sender< T > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+typedef T input_type
 
+typedef T output_type
 
+typedef sender< input_typepredecessor_type
 
+typedef receiver< output_typesuccessor_type
 
- Public Types inherited from tbb::flow::interface8::overwrite_node< T >
+typedef T input_type
 
+typedef T output_type
 
+typedef sender< input_typepredecessor_type
 
+typedef receiver< output_typesuccessor_type
 
+typedef receiver< input_type >
+::built_predecessors_type 
built_predecessors_type
 
+typedef sender< output_type >
+::built_successors_type 
built_successors_type
 
+typedef receiver< input_type >
+::predecessor_list_type 
predecessor_list_type
 
+typedef sender< output_type >
+::successor_list_type 
successor_list_type
 
- Public Types inherited from tbb::flow::interface8::receiver< T >
+typedef T input_type
 The input type of this receiver.
 
+typedef sender< T > predecessor_type
 The predecessor type for this node.
 
+typedef
+internal::edge_container
+< predecessor_type
built_predecessors_type
 
+typedef
+built_predecessors_type::edge_list_type 
predecessor_list_type
 
- Public Types inherited from tbb::flow::interface8::sender< T >
+typedef T output_type
 The output type of this sender.
 
+typedef receiver< T > successor_type
 The successor type for this node.
 
+typedef
+internal::edge_container
+< successor_type
built_successors_type
 interface to record edges for traversal & deletion
 
+typedef
+built_successors_type::edge_list_type 
successor_list_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

write_once_node (graph &g)
 Constructor.
 
write_once_node (const write_once_node &src)
 Copy constructor: call base class copy constructor.
 
+void set_name (const char *name)
 
- Public Member Functions inherited from tbb::flow::interface8::overwrite_node< T >
overwrite_node (graph &g)
 
overwrite_node (const overwrite_node &src)
 
+bool register_successor (successor_type &s)
 Add a new successor to this node.
 
+bool remove_successor (successor_type &s)
 Removes a successor from this node.
 
+built_predecessors_typebuilt_predecessors ()
 
+built_successors_typebuilt_successors ()
 
+void internal_add_built_successor (successor_type &s)
 
+void internal_delete_built_successor (successor_type &s)
 
+size_t successor_count ()
 
+void copy_successors (successor_list_type &v)
 
+void internal_add_built_predecessor (predecessor_type &p)
 
+void internal_delete_built_predecessor (predecessor_type &p)
 
+size_t predecessor_count ()
 
+void copy_predecessors (predecessor_list_type &v)
 
+void extract ()
 
+bool try_get (input_type &v)
 Request an item from the sender.
 
+bool is_valid ()
 
+void clear ()
 
- Public Member Functions inherited from tbb::flow::interface8::graph_node
graph_node (graph &g)
 
- Public Member Functions inherited from tbb::flow::interface8::receiver< T >
+virtual ~receiver ()
 Destructor.
 
+bool try_put (const T &t)
 Put an item to the receiver.
 
+virtual bool register_predecessor (predecessor_type &)
 Add a predecessor to the node.
 
+virtual bool remove_predecessor (predecessor_type &)
 Remove a predecessor from the node.
 
+virtual void copy_predecessors (predecessor_list_type &)=0
 
- Public Member Functions inherited from tbb::flow::interface8::sender< T >
+virtual bool try_reserve (T &)
 Reserves an item in the sender.
 
+virtual bool try_release ()
 Releases the reserved item.
 
+virtual bool try_consume ()
 Consumes the reserved item.
 
+ + + + + + + + + + + +

+Protected Member Functions

+task * try_put_task (const T &v)
 
- Protected Member Functions inherited from tbb::flow::interface8::overwrite_node< T >
+void reset_receiver (reset_flags)
 
+void reset_node (reset_flags f)
 
- Protected Member Functions inherited from tbb::flow::interface8::receiver< T >
+virtual bool is_continue_receiver ()
 
+ + + + + + + + + + +

+Friends

+template<typename R , typename B >
class run_and_put_task
 
+template<typename X , typename Y >
class internal::broadcast_cache
 
+template<typename X , typename Y >
class internal::round_robin_cache
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from tbb::flow::interface8::overwrite_node< T >
+spin_mutex my_mutex
 
+internal::broadcast_cache
+< input_type, null_rw_mutex
my_successors
 
+internal::edge_container
+< predecessor_type
my_built_predecessors
 
+input_type my_buffer
 
+bool my_buffer_is_valid
 
+
The documentation for this class was generated from the following file: +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00177.png b/doc/html/a00177.png new file mode 100644 index 0000000000..6919a098df Binary files /dev/null and b/doc/html/a00177.png differ diff --git a/doc/html/a00178.html b/doc/html/a00178.html new file mode 100644 index 0000000000..8708a63961 --- /dev/null +++ b/doc/html/a00178.html @@ -0,0 +1,133 @@ + + + + + + +tbb::zero_allocator< T, Allocator > Class Template Reference + + + + + + + +
+ +
+
tbb::zero_allocator< T, Allocator > Class Template Reference
+
+
+ +

Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. + More...

+ +

#include <tbb_allocator.h>

+
+Inheritance diagram for tbb::zero_allocator< T, Allocator >:
+
+
+ + + +
+ + + + +

+Classes

struct  rebind
 
+ + + + + + + + + + + + + + + + + +

+Public Types

+typedef Allocator< T > base_allocator_type
 
+typedef
+base_allocator_type::value_type 
value_type
 
+typedef
+base_allocator_type::pointer 
pointer
 
+typedef
+base_allocator_type::const_pointer 
const_pointer
 
+typedef
+base_allocator_type::reference 
reference
 
+typedef
+base_allocator_type::const_reference 
const_reference
 
+typedef
+base_allocator_type::size_type 
size_type
 
+typedef
+base_allocator_type::difference_type 
difference_type
 
+ + + + + + + + +

+Public Member Functions

zero_allocator (const zero_allocator &a) throw ()
 
+template<typename U >
 zero_allocator (const zero_allocator< U > &a) throw ()
 
+pointer allocate (const size_type n, const void *hint=0)
 
+

Detailed Description

+

template<typename T, template< typename X > class Allocator = tbb_allocator>
+class tbb::zero_allocator< T, Allocator >

+ +

Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5.

+

The class is an adapter over an actual allocator that fills the allocation using memset function with template argument C as the value. The members are ordered the same way they are in section 20.4.1 of the ISO C++ standard.

+

The documentation for this class was generated from the following file:
    +
  • tbb_allocator.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00178.png b/doc/html/a00178.png new file mode 100644 index 0000000000..f03aec2f32 Binary files /dev/null and b/doc/html/a00178.png differ diff --git a/doc/html/a00179.html b/doc/html/a00179.html new file mode 100644 index 0000000000..5fd4d14323 --- /dev/null +++ b/doc/html/a00179.html @@ -0,0 +1,102 @@ + + + + + + +tbb::zero_allocator< void, Allocator > Class Template Reference + + + + + + + +
+ +
+
tbb::zero_allocator< void, Allocator > Class Template Reference
+
+
+ +

Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. + More...

+ +

#include <tbb_allocator.h>

+
+Inheritance diagram for tbb::zero_allocator< void, Allocator >:
+
+
+ + + +
+ + + + +

+Classes

struct  rebind
 
+ + + + + + + + + +

+Public Types

+typedef Allocator< void > base_allocator_type
 
+typedef
+base_allocator_type::value_type 
value_type
 
+typedef
+base_allocator_type::pointer 
pointer
 
+typedef
+base_allocator_type::const_pointer 
const_pointer
 
+

Detailed Description

+

template<template< typename T > class Allocator>
+class tbb::zero_allocator< void, Allocator >

+ +

Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1.

+

The documentation for this class was generated from the following file:
    +
  • tbb_allocator.h
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00179.png b/doc/html/a00179.png new file mode 100644 index 0000000000..f97e606d73 Binary files /dev/null and b/doc/html/a00179.png differ diff --git a/doc/html/a00197.html b/doc/html/a00197.html new file mode 100644 index 0000000000..b0a1ffddcd --- /dev/null +++ b/doc/html/a00197.html @@ -0,0 +1,275 @@ + + + + + + +flow_graph.h File Reference + + + + + + + +
+ +
+
flow_graph.h File Reference
+
+
+ +

The graph related classes and functions. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  tbb::flow::interface8::internal::successor_cache< T, M >
 
class  tbb::flow::interface8::internal::broadcast_cache< T, M >
 
class  tbb::flow::interface8::internal::round_robin_cache< T, M >
 
class  tbb::flow::interface8::internal::edge_container< C >
 
struct  tbb::flow::interface8::null_type
 
class  tbb::flow::interface8::continue_msg
 An empty class used for messages that mean "I'm done". More...
 
class  tbb::flow::interface8::sender< T >
 Pure virtual template class that defines a sender of messages of type T. More...
 
class  tbb::flow::interface8::receiver< T >
 Pure virtual template class that defines a receiver of messages of type T. More...
 
class  tbb::flow::interface8::sender< T >
 Pure virtual template class that defines a sender of messages of type T. More...
 
class  tbb::flow::interface8::limiter_node< T >
 Forwards messages only if the threshold has not been reached. More...
 
class  tbb::flow::interface8::run_and_put_task< R, B >
 
class  tbb::flow::interface8::receiver< T >
 Pure virtual template class that defines a receiver of messages of type T. More...
 
class  tbb::flow::interface8::internal::edge_container< C >
 
class  tbb::flow::interface8::continue_receiver
 Base class for receivers of completion messages. More...
 
class  tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >
 
class  tbb::flow::interface8::graph
 The graph class. More...
 
class  tbb::flow::interface8::graph_node
 The base of all graph nodes. More...
 
class  tbb::flow::interface8::source_node< Output >
 An executable node that acts as a source, i.e. it has no predecessors. More...
 
struct  tbb::flow::interface8::allocate_buffer< T >
 
struct  tbb::flow::interface8::allocate_buffer< queueing >
 
class  tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >
 Implements a function node that supports Input -> Output. More...
 
class  tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >
 implements a function node that supports Input -> (set of outputs) More...
 
class  tbb::flow::interface8::split_node< TupleType, Allocator >
 split_node: accepts a tuple as input, forwards each element of the tuple to its More...
 
class  tbb::flow::interface8::continue_node< Output >
 Implements an executable node that supports continue_msg -> Output. More...
 
class  tbb::flow::interface8::overwrite_node< T >
 
class  tbb::flow::interface8::write_once_node< T >
 
class  tbb::flow::interface8::broadcast_node< T >
 Forwards messages of type T to all successors. More...
 
class  tbb::flow::interface8::buffer_node< T, A >
 Forwards messages in arbitrary order. More...
 
class  tbb::flow::interface8::buffer_node< T, A >::buffer_operation
 
class  tbb::flow::interface8::queue_node< T, A >
 Forwards messages in FIFO order. More...
 
class  tbb::flow::interface8::sequencer_node< T, A >
 Forwards messages in sequence order. More...
 
class  tbb::flow::interface8::priority_queue_node< T, Compare, A >
 Forwards messages in priority order. More...
 
class  tbb::flow::interface8::limiter_node< T >
 Forwards messages only if the threshold has not been reached. More...
 
class  tbb::flow::interface8::join_node< OutputTuple, JP >
 
class  tbb::flow::interface8::join_node< OutputTuple, reserving >
 
class  tbb::flow::interface8::join_node< OutputTuple, queueing >
 
class  tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >
 
class  tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >
 
class  tbb::flow::interface8::indexer_node< T0 >
 
class  tbb::flow::interface8::indexer_node< T0, T1 >
 
class  tbb::flow::interface8::indexer_node< T0, T1, T2 >
 
class  tbb::flow::interface8::indexer_node< T0, T1, T2, T3 >
 
class  tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4 >
 
class  tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5 >
 
class  tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5, T6 >
 
class  tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 >
 
class  tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 >
 
class  tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >
 
class  tbb::flow::interface8::composite_node< InputTuple, OutputTuple >
 
class  tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >
 
class  tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >
 
class  tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >
 
class  tbb::flow::interface8::internal::async_gateway< Output >
 Pure virtual template class that defines interface for async communication. More...
 
class  tbb::flow::interface8::async_node< Input, Output, Allocator >
 Implements a async node. More...
 
+ + + + +

+Namespaces

 tbb
 The namespace tbb contains all components of the library.
 
+ + + + +

+Constant Groups

 tbb
 The namespace tbb contains all components of the library.
 
+ + + + + + +

+Enumerations

enum  concurrency { unlimited = 0, +serial = 1 + }
 An enumeration the provides the two most common concurrency levels: unlimited and serial.
 
enum  reset_flags { rf_reset_protocol = 0, +rf_reset_bodies = 1<<0, +rf_clear_edges = 1<<1 + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+static tbb::task * tbb::flow::interface8::combine_tasks (tbb::task *left, tbb::task *right)
 
+template<typename T >
void tbb::flow::interface8::make_edge (sender< T > &p, receiver< T > &s)
 Makes an edge between a single predecessor and a single successor.
 
+template<typename T , typename V , typename = typename T::output_ports_type, typename = typename V::input_ports_type>
void tbb::flow::interface8::make_edge (T &output, V &input)
 
+template<typename T , typename R , typename = typename T::output_ports_type>
void tbb::flow::interface8::make_edge (T &output, receiver< R > &input)
 
+template<typename S , typename V , typename = typename V::input_ports_type>
void tbb::flow::interface8::make_edge (sender< S > &output, V &input)
 
+template<typename T >
void tbb::flow::interface8::remove_edge (sender< T > &p, receiver< T > &s)
 Removes an edge between a single predecessor and a single successor.
 
+template<typename T , typename V , typename = typename T::output_ports_type, typename = typename V::input_ports_type>
void tbb::flow::interface8::remove_edge (T &output, V &input)
 
+template<typename T , typename R , typename = typename T::output_ports_type>
void tbb::flow::interface8::remove_edge (T &output, receiver< R > &input)
 
+template<typename S , typename V , typename = typename V::input_ports_type>
void tbb::flow::interface8::remove_edge (sender< S > &output, V &input)
 
+template<typename Body , typename Node >
Body tbb::flow::interface8::copy_body (Node &n)
 Returns a copy of the body from a function or continue node.
 
+ + + +

+Variables

+static tbb::task *const tbb::flow::interface8::SUCCESSFULLY_ENQUEUED = (task *)-1
 
+

Detailed Description

+

The graph related classes and functions.

+

There are some applications that best express dependencies as messages passed between nodes in a graph. These messages may contain data or simply act as signals that a predecessors has completed. The graph class and its associated node classes can be used to express such applications.

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00199.html b/doc/html/a00199.html new file mode 100644 index 0000000000..b1ae387ccc --- /dev/null +++ b/doc/html/a00199.html @@ -0,0 +1,99 @@ + + + + + + +memory_pool.h File Reference + + + + + + + +
+ +
+
memory_pool.h File Reference
+
+
+ + + + + + + + + + + + + + + + + +

+Classes

class  tbb::interface6::memory_pool_allocator< T, P >
 Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. More...
 
struct  tbb::interface6::memory_pool_allocator< T, P >::rebind< U >
 
class  tbb::interface6::memory_pool_allocator< void, P >
 Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. More...
 
struct  tbb::interface6::memory_pool_allocator< void, P >::rebind< U >
 
class  tbb::interface6::memory_pool< Alloc >
 Thread-safe growable pool allocator for variable-size requests. More...
 
class  tbb::interface6::fixed_pool
 
+ + + + +

+Namespaces

 tbb
 The namespace tbb contains all components of the library.
 
+ + + + +

+Constant Groups

 tbb
 The namespace tbb contains all components of the library.
 
+ + + + + + + +

+Functions

+template<typename T , typename U , typename P >
bool tbb::interface6::operator== (const memory_pool_allocator< T, P > &a, const memory_pool_allocator< U, P > &b)
 
+template<typename T , typename U , typename P >
bool tbb::interface6::operator!= (const memory_pool_allocator< T, P > &a, const memory_pool_allocator< U, P > &b)
 
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00218.html b/doc/html/a00218.html new file mode 100644 index 0000000000..20481316ee --- /dev/null +++ b/doc/html/a00218.html @@ -0,0 +1,194 @@ + + + + + + +scalable_allocator.h File Reference + + + + + + + +
+ +
+
scalable_allocator.h File Reference
+
+
+ + + + + + + + + + + + + + +

+Classes

struct  rml::MemPoolPolicy
 
class  tbb::scalable_allocator< T >
 Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. More...
 
struct  tbb::scalable_allocator< T >::rebind< U >
 
class  tbb::scalable_allocator< void >
 Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. More...
 
struct  tbb::scalable_allocator< void >::rebind< U >
 
+ + + + + + + +

+Namespaces

 rml
 The namespace rml contains components of low-level memory pool interface.
 
 tbb
 The namespace tbb contains all components of the library.
 
+ + + + + + + +

+Constant Groups

 rml
 The namespace rml contains components of low-level memory pool interface.
 
 tbb
 The namespace tbb contains all components of the library.
 
+ + + + + +

+Typedefs

+typedef void *(* rml::rawAllocType )(intptr_t pool_id, size_t &bytes)
 
+typedef int(* rml::rawFreeType )(intptr_t pool_id, void *raw_ptr, size_t raw_bytes)
 
+ + + + + + + + + +

+Enumerations

enum  ScalableAllocationResult {
+  TBBMALLOC_OK, +TBBMALLOC_INVALID_PARAM, +TBBMALLOC_UNSUPPORTED, +TBBMALLOC_NO_MEMORY, +
+  TBBMALLOC_NO_EFFECT +
+ }
 
enum  AllocationModeParam { TBBMALLOC_USE_HUGE_PAGES, +USE_HUGE_PAGES = TBBMALLOC_USE_HUGE_PAGES, +TBBMALLOC_SET_SOFT_HEAP_LIMIT + }
 
enum  ScalableAllocationCmd { TBBMALLOC_CLEAN_ALL_BUFFERS, +TBBMALLOC_CLEAN_THREAD_BUFFERS + }
 
enum  MemPoolError {
+  POOL_OK = TBBMALLOC_OK, +INVALID_POLICY = TBBMALLOC_INVALID_PARAM, +UNSUPPORTED_POLICY = TBBMALLOC_UNSUPPORTED, +NO_MEMORY = TBBMALLOC_NO_MEMORY, +
+  NO_EFFECT = TBBMALLOC_NO_EFFECT +
+ }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

void *__TBB_EXPORTED_FUNC scalable_malloc (size_t size)
 
void __TBB_EXPORTED_FUNC scalable_free (void *ptr)
 
void *__TBB_EXPORTED_FUNC scalable_realloc (void *ptr, size_t size)
 
void *__TBB_EXPORTED_FUNC scalable_calloc (size_t nobj, size_t size)
 
int __TBB_EXPORTED_FUNC scalable_posix_memalign (void **memptr, size_t alignment, size_t size)
 
void *__TBB_EXPORTED_FUNC scalable_aligned_malloc (size_t size, size_t alignment)
 
void *__TBB_EXPORTED_FUNC scalable_aligned_realloc (void *ptr, size_t size, size_t alignment)
 
void __TBB_EXPORTED_FUNC scalable_aligned_free (void *ptr)
 
size_t __TBB_EXPORTED_FUNC scalable_msize (void *ptr)
 
int __TBB_EXPORTED_FUNC scalable_allocation_mode (int param, intptr_t value)
 
int __TBB_EXPORTED_FUNC scalable_allocation_command (int cmd, void *param)
 
+MemPoolError rml::pool_create_v1 (intptr_t pool_id, const MemPoolPolicy *policy, rml::MemoryPool **pool)
 
+bool rml::pool_destroy (MemoryPool *memPool)
 
+void * rml::pool_malloc (MemoryPool *memPool, size_t size)
 
+void * rml::pool_realloc (MemoryPool *memPool, void *object, size_t size)
 
+void * rml::pool_aligned_malloc (MemoryPool *mPool, size_t size, size_t alignment)
 
+void * rml::pool_aligned_realloc (MemoryPool *mPool, void *ptr, size_t size, size_t alignment)
 
+bool rml::pool_reset (MemoryPool *memPool)
 
+bool rml::pool_free (MemoryPool *memPool, void *object)
 
+MemoryPool * rml::pool_identify (void *object)
 
+template<typename T , typename U >
bool tbb::operator== (const scalable_allocator< T > &, const scalable_allocator< U > &)
 
+template<typename T , typename U >
bool tbb::operator!= (const scalable_allocator< T > &, const scalable_allocator< U > &)
 
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00238.html b/doc/html/a00238.html new file mode 100644 index 0000000000..23922b2b3e --- /dev/null +++ b/doc/html/a00238.html @@ -0,0 +1,116 @@ + + + + + + +rml Namespace Reference + + + + + + + +
+ +
+
rml Namespace Reference
+
+
+ +

The namespace rml contains components of low-level memory pool interface. +More...

+ + + + +

+Classes

struct  MemPoolPolicy
 
+ + + + + +

+Typedefs

+typedef void *(* rawAllocType )(intptr_t pool_id, size_t &bytes)
 
+typedef int(* rawFreeType )(intptr_t pool_id, void *raw_ptr, size_t raw_bytes)
 
+ + + +

+Enumerations

enum  MemPoolError {
+  POOL_OK = TBBMALLOC_OK, +INVALID_POLICY = TBBMALLOC_INVALID_PARAM, +UNSUPPORTED_POLICY = TBBMALLOC_UNSUPPORTED, +NO_MEMORY = TBBMALLOC_NO_MEMORY, +
+  NO_EFFECT = TBBMALLOC_NO_EFFECT +
+ }
 
+ + + + + + + + + + + + + + + + + + + +

+Functions

+MemPoolError pool_create_v1 (intptr_t pool_id, const MemPoolPolicy *policy, rml::MemoryPool **pool)
 
+bool pool_destroy (MemoryPool *memPool)
 
+void * pool_malloc (MemoryPool *memPool, size_t size)
 
+void * pool_realloc (MemoryPool *memPool, void *object, size_t size)
 
+void * pool_aligned_malloc (MemoryPool *mPool, size_t size, size_t alignment)
 
+void * pool_aligned_realloc (MemoryPool *mPool, void *ptr, size_t size, size_t alignment)
 
+bool pool_reset (MemoryPool *memPool)
 
+bool pool_free (MemoryPool *memPool, void *object)
 
+MemoryPool * pool_identify (void *object)
 
+

Detailed Description

+

The namespace rml contains components of low-level memory pool interface.

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00241.html b/doc/html/a00241.html new file mode 100644 index 0000000000..5af0b4cc89 --- /dev/null +++ b/doc/html/a00241.html @@ -0,0 +1,689 @@ + + + + + + +tbb Namespace Reference + + + + + + + +
+ +
+
tbb Namespace Reference
+
+
+ +

The namespace tbb contains all components of the library. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  aligned_space
 Block of space aligned sufficiently to construct an array T with N elements. More...
 
struct  atomic
 Primary template for atomic. More...
 
struct  atomic< void * >
 Specialization for atomic<void*>, for sake of not allowing arithmetic or operator->. More...
 
class  blocked_range
 A range over which to iterate. More...
 
class  blocked_range2d
 A 2-dimensional range that models the Range concept. More...
 
class  blocked_range3d
 A 3-dimensional range that models the Range concept. More...
 
class  cache_aligned_allocator
 Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. More...
 
class  cache_aligned_allocator< void >
 Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. More...
 
class  combinable
 Thread-local storage with optional reduction. More...
 
class  concurrent_bounded_queue
 A high-performance thread-safe blocking concurrent bounded queue. More...
 
class  concurrent_vector
 Concurrent vector container. More...
 
class  vector_iterator
 
class  mutex
 Wrapper around the platform's native reader-writer lock. More...
 
class  null_mutex
 A mutex which does nothing. More...
 
class  null_rw_mutex
 A rw mutex which does nothing. More...
 
class  parallel_do_feeder
 Class the user supplied algorithm body uses to add new tasks. More...
 
struct  task_group_context
 
struct  pre_scan_tag
 Used to indicate that the initial scan is being performed. More...
 
struct  final_scan_tag
 Used to indicate that the final scan is being performed. More...
 
class  parallel_while
 Parallel iteration over a stream, with optional addition of more work. More...
 
class  filter
 A stage in a pipeline. More...
 
class  thread_bound_filter
 A stage in a pipeline served by a user thread. More...
 
class  pipeline
 A processing pipeline that applies filters to items. More...
 
class  queuing_mutex
 Queuing mutex with local-only spinning. More...
 
class  queuing_rw_mutex
 Queuing reader-writer mutex with local-only spinning. More...
 
class  recursive_mutex
 
class  scalable_allocator
 Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. More...
 
class  scalable_allocator< void >
 Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. More...
 
class  spin_mutex
 A lock that occupies a single byte. More...
 
class  spin_rw_mutex_v3
 Fast, unfair, spinning reader-writer lock with backoff and writer-preference. More...
 
class  task_handle
 
class  task_group
 
class  structured_task_group
 
class  task_scheduler_init
 Class delimiting the scope of task scheduler activity. More...
 
class  tbb_allocator
 Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. More...
 
class  tbb_allocator< void >
 Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. More...
 
class  zero_allocator
 Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. More...
 
class  zero_allocator< void, Allocator >
 Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. More...
 
class  bad_last_alloc
 Exception for concurrent containers. More...
 
class  improper_lock
 Exception for PPL locks. More...
 
class  user_abort
 Exception for user-initiated abort. More...
 
class  missing_wait
 Exception for missing wait on structured_task_group. More...
 
class  invalid_multiple_scheduling
 Exception for repeated scheduling of the same task_handle. More...
 
class  tbb_exception
 Interface to be implemented by all exceptions TBB recognizes and propagates across the threads. More...
 
class  captured_exception
 This class is used by TBB to propagate information about unhandled exceptions into the root thread. More...
 
class  movable_exception
 Template that can be used to implement exception that transfers arbitrary ExceptionData to the root thread. More...
 
class  tick_count
 Absolute timestamp. More...
 
+ + + + + + + + + + + + + + + +

+Typedefs

+typedef
+internal::critical_section_v4 
critical_section
 
typedef
+interface7::internal::padded_mutex
+< interface7::internal::x86_eliding_mutex,
+false > 
speculative_spin_mutex
 A cross-platform spin mutex with speculative lock acquisition. More...
 
+typedef spin_rw_mutex_v3 spin_rw_mutex
 
+typedef std::size_t stack_size_type
 
+typedef
+tbb::internal::task_scheduler_observer_v3 
task_scheduler_observer
 
+typedef internal::tbb_thread_v3 tbb_thread
 Users reference thread class by name tbb_thread.
 
+ + + + + + + + + +

+Enumerations

enum  memory_semantics { full_fence, +acquire, +release, +relaxed + }
 Specifies memory semantics. More...
 
enum  ets_key_usage_type { ets_key_per_instance, +ets_no_key + }
 enum for selecting between single key and key-per-instance versions
 
enum  task_group_status { not_complete, +complete, +canceled + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

__TBB_DECL_ATOMIC (__TBB_LONG_LONG) __TBB_DECL_ATOMIC(unsigned __TBB_LONG_LONG) __TBB_DECL_ATOMIC(long) __TBB_DECL_ATOMIC(unsigned long) __TBB_DECL_ATOMIC_ALT(unsigned
 
+size_t __TBB_DECL_ATOMIC_ALT (int, ptrdiff_t) __TBB_DECL_ATOMIC(unsigned) __TBB_DECL_ATOMIC(int) __TBB_DECL_ATOMIC(unsigned short) __TBB_DECL_ATOMIC(short) __TBB_DECL_ATOMIC(char) __TBB_DECL_ATOMIC(signed char) __TBB_DECL_ATOMIC(unsigned char) __TBB_DECL_ATOMIC(wchar_t) template< typename T > struct atomic< T * >
 Specialization for atomic<T*> with arithmetic and operator->.
 
+template<memory_semantics M, typename T >
load (const atomic< T > &a)
 
+template<memory_semantics M, typename T >
void store (atomic< T > &a, T value)
 
+template<typename T , typename U >
bool operator== (const cache_aligned_allocator< T > &, const cache_aligned_allocator< U > &)
 
+template<typename T , typename U >
bool operator!= (const cache_aligned_allocator< T > &, const cache_aligned_allocator< U > &)
 
+template<typename Key , typename T , typename HashCompare , typename A1 , typename A2 >
bool operator== (const concurrent_hash_map< Key, T, HashCompare, A1 > &a, const concurrent_hash_map< Key, T, HashCompare, A2 > &b)
 
+template<typename Key , typename T , typename HashCompare , typename A1 , typename A2 >
bool operator!= (const concurrent_hash_map< Key, T, HashCompare, A1 > &a, const concurrent_hash_map< Key, T, HashCompare, A2 > &b)
 
+template<typename Key , typename T , typename HashCompare , typename A >
void swap (concurrent_hash_map< Key, T, HashCompare, A > &a, concurrent_hash_map< Key, T, HashCompare, A > &b)
 
+template<typename T , class A1 , class A2 >
bool operator== (const concurrent_vector< T, A1 > &a, const concurrent_vector< T, A2 > &b)
 
+template<typename T , class A1 , class A2 >
bool operator!= (const concurrent_vector< T, A1 > &a, const concurrent_vector< T, A2 > &b)
 
+template<typename T , class A1 , class A2 >
bool operator< (const concurrent_vector< T, A1 > &a, const concurrent_vector< T, A2 > &b)
 
+template<typename T , class A1 , class A2 >
bool operator> (const concurrent_vector< T, A1 > &a, const concurrent_vector< T, A2 > &b)
 
+template<typename T , class A1 , class A2 >
bool operator<= (const concurrent_vector< T, A1 > &a, const concurrent_vector< T, A2 > &b)
 
+template<typename T , class A1 , class A2 >
bool operator>= (const concurrent_vector< T, A1 > &a, const concurrent_vector< T, A2 > &b)
 
+template<typename T , class A >
void swap (concurrent_vector< T, A > &a, concurrent_vector< T, A > &b)
 
+template<typename T , typename U >
bool operator== (const scalable_allocator< T > &, const scalable_allocator< U > &)
 
+template<typename T , typename U >
bool operator!= (const scalable_allocator< T > &, const scalable_allocator< U > &)
 
+bool is_current_task_group_canceling ()
 
+template<class F >
task_handle< F > make_task (const F &f)
 
+template<typename T , typename U >
bool operator== (const tbb_allocator< T > &, const tbb_allocator< U > &)
 
+template<typename T , typename U >
bool operator!= (const tbb_allocator< T > &, const tbb_allocator< U > &)
 
+template<typename T1 , template< typename X1 > class B1, typename T2 , template< typename X2 > class B2>
bool operator== (const zero_allocator< T1, B1 > &a, const zero_allocator< T2, B2 > &b)
 
+template<typename T1 , template< typename X1 > class B1, typename T2 , template< typename X2 > class B2>
bool operator!= (const zero_allocator< T1, B1 > &a, const zero_allocator< T2, B2 > &b)
 
int __TBB_EXPORTED_FUNC TBB_runtime_interface_version ()
 The function returns the interface version of the TBB shared library being used. More...
 
+void swap (internal::tbb_thread_v3 &t1, internal::tbb_thread_v3 &t2) __TBB_NOEXCEPT(true)
 
+void move (tbb_thread &t1, tbb_thread &t2)
 
+tick_count::interval_t operator- (const tick_count &t1, const tick_count &t0)
 
parallel_do

See also requirements on parallel_do Body.

+
template<typename Iterator , typename Body >
void parallel_do (Iterator first, Iterator last, const Body &body)
 Parallel iteration over a range, with optional addition of more work. More...
 
+template<typename Range , typename Body >
void parallel_do (Range &rng, const Body &body)
 
+template<typename Range , typename Body >
void parallel_do (const Range &rng, const Body &body)
 
template<typename Iterator , typename Body >
void parallel_do (Iterator first, Iterator last, const Body &body, task_group_context &context)
 Parallel iteration over a range, with optional addition of more work and user-supplied context. More...
 
+template<typename Range , typename Body >
void parallel_do (Range &rng, const Body &body, task_group_context &context)
 
+template<typename Range , typename Body >
void parallel_do (const Range &rng, const Body &body, task_group_context &context)
 
parallel_for

See also requirements on Range and parallel_for Body.

+
template<typename Range , typename Body >
void parallel_for (const Range &range, const Body &body)
 Parallel iteration over range with default partitioner. More...
 
template<typename Range , typename Body >
void parallel_for (const Range &range, const Body &body, const simple_partitioner &partitioner)
 Parallel iteration over range with simple partitioner. More...
 
template<typename Range , typename Body >
void parallel_for (const Range &range, const Body &body, const auto_partitioner &partitioner)
 Parallel iteration over range with auto_partitioner. More...
 
template<typename Range , typename Body >
void parallel_for (const Range &range, const Body &body, affinity_partitioner &partitioner)
 Parallel iteration over range with affinity_partitioner. More...
 
template<typename Range , typename Body >
void parallel_for (const Range &range, const Body &body, task_group_context &context)
 Parallel iteration over range with default partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void parallel_for (const Range &range, const Body &body, const simple_partitioner &partitioner, task_group_context &context)
 Parallel iteration over range with simple partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void parallel_for (const Range &range, const Body &body, const auto_partitioner &partitioner, task_group_context &context)
 Parallel iteration over range with auto_partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void parallel_for (const Range &range, const Body &body, affinity_partitioner &partitioner, task_group_context &context)
 Parallel iteration over range with affinity_partitioner and user-supplied context. More...
 
parallel_for_each
template<typename InputIterator , typename Function >
void parallel_for_each (InputIterator first, InputIterator last, const Function &f, task_group_context &context)
 Calls function f for all items from [first, last) interval using user-supplied context. More...
 
template<typename Range , typename Function >
void parallel_for_each (Range &rng, const Function &f, task_group_context &context)
 Calls function f for all items from rng using user-supplied context. More...
 
template<typename Range , typename Function >
void parallel_for_each (const Range &rng, const Function &f, task_group_context &context)
 Calls function f for all items from const rng user-supplied context. More...
 
+template<typename InputIterator , typename Function >
void parallel_for_each (InputIterator first, InputIterator last, const Function &f)
 Uses default context.
 
+template<typename Range , typename Function >
void parallel_for_each (Range &rng, const Function &f)
 Uses default context.
 
+template<typename Range , typename Function >
void parallel_for_each (const Range &rng, const Function &f)
 Uses default context.
 
parallel_invoke
template<typename F0 , typename F1 , typename... F>
void parallel_invoke (F0 &&f0, F1 &&f1, F &&...f)
 Executes a list of tasks in parallel and waits for all tasks to complete. More...
 
+template<typename F0 , typename F1 >
void parallel_invoke (const F0 &f0, const F1 &f1, tbb::task_group_context &context)
 
+template<typename F0 , typename F1 , typename F2 >
void parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, tbb::task_group_context &context)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 >
void parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, tbb::task_group_context &context)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 >
void parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, tbb::task_group_context &context)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 >
void parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, tbb::task_group_context &context)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 >
void parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, tbb::task_group_context &context)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 >
void parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, tbb::task_group_context &context)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 >
void parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8, tbb::task_group_context &context)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 , typename F9 >
void parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8, const F9 &f9, tbb::task_group_context &context)
 
+template<typename F0 , typename F1 >
void parallel_invoke (const F0 &f0, const F1 &f1)
 
+template<typename F0 , typename F1 , typename F2 >
void parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 >
void parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 >
void parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 >
void parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 >
void parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 >
void parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 >
void parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 , typename F9 >
void parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8, const F9 &f9)
 
parallel_reduce

See also requirements on Range and parallel_reduce Body.

+
template<typename Range , typename Body >
void parallel_reduce (const Range &range, Body &body)
 Parallel iteration with reduction and default partitioner. More...
 
template<typename Range , typename Body >
void parallel_reduce (const Range &range, Body &body, const simple_partitioner &partitioner)
 Parallel iteration with reduction and simple_partitioner. More...
 
template<typename Range , typename Body >
void parallel_reduce (const Range &range, Body &body, const auto_partitioner &partitioner)
 Parallel iteration with reduction and auto_partitioner. More...
 
template<typename Range , typename Body >
void parallel_reduce (const Range &range, Body &body, affinity_partitioner &partitioner)
 Parallel iteration with reduction and affinity_partitioner. More...
 
template<typename Range , typename Body >
void parallel_reduce (const Range &range, Body &body, const simple_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, simple partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void parallel_reduce (const Range &range, Body &body, const auto_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, auto_partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void parallel_reduce (const Range &range, Body &body, affinity_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, affinity_partitioner and user-supplied context. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction)
 Parallel iteration with reduction and default partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner)
 Parallel iteration with reduction and simple_partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const auto_partitioner &partitioner)
 Parallel iteration with reduction and auto_partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, affinity_partitioner &partitioner)
 Parallel iteration with reduction and affinity_partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, simple partitioner and user-supplied context. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const auto_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, auto_partitioner and user-supplied context. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, affinity_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, affinity_partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void parallel_deterministic_reduce (const Range &range, Body &body)
 Parallel iteration with deterministic reduction and default partitioner. More...
 
template<typename Range , typename Body >
void parallel_deterministic_reduce (const Range &range, Body &body, task_group_context &context)
 Parallel iteration with deterministic reduction, simple partitioner and user-supplied context. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value parallel_deterministic_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction)
 Parallel iteration with deterministic reduction and default partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value parallel_deterministic_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, task_group_context &context)
 Parallel iteration with deterministic reduction, simple partitioner and user-supplied context. More...
 
parallel_scan

See also requirements on Range and parallel_scan Body.

+
template<typename Range , typename Body >
void parallel_scan (const Range &range, Body &body)
 Parallel prefix with default partitioner. More...
 
template<typename Range , typename Body >
void parallel_scan (const Range &range, Body &body, const simple_partitioner &partitioner)
 Parallel prefix with simple_partitioner. More...
 
template<typename Range , typename Body >
void parallel_scan (const Range &range, Body &body, const auto_partitioner &partitioner)
 Parallel prefix with auto_partitioner. More...
 
parallel_sort

See also requirements on iterators for parallel_sort.

+
template<typename RandomAccessIterator , typename Compare >
void parallel_sort (RandomAccessIterator begin, RandomAccessIterator end, const Compare &comp)
 Sorts the data in [begin,end) using the given comparator. More...
 
template<typename RandomAccessIterator >
void parallel_sort (RandomAccessIterator begin, RandomAccessIterator end)
 Sorts the data in [begin,end) with a default comparator std::less<RandomAccessIterator> More...
 
template<typename Range , typename Compare >
void parallel_sort (Range &rng, const Compare &comp)
 Sorts the data in rng using the given comparator. More...
 
template<typename Range , typename Compare >
void parallel_sort (const Range &rng, const Compare &comp)
 Sorts the data in const rng using the given comparator. More...
 
template<typename Range >
void parallel_sort (Range &rng)
 Sorts the data in rng with a default comparator std::less<RandomAccessIterator> More...
 
template<typename Range >
void parallel_sort (const Range &rng)
 Sorts the data in const rng with a default comparator std::less<RandomAccessIterator> More...
 
template<typename T >
void parallel_sort (T *begin, T *end)
 Sorts the data in the range [begin,end) with a default comparator std::less<T> More...
 
+

Detailed Description

+

The namespace tbb contains all components of the library.

+

Enumeration Type Documentation

+ +
+
+ + + + +
enum tbb::memory_semantics
+
+ +

Specifies memory semantics.

+ + + + + +
Enumerator
full_fence  +

Sequential consistency.

+
acquire  +

Acquire.

+
release  +

Release.

+
relaxed  +

No ordering.

+
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + +
int __TBB_EXPORTED_FUNC tbb::TBB_runtime_interface_version ()
+
+ +

The function returns the interface version of the TBB shared library being used.

+

The version it returns is determined at runtime, not at compile/link time. So it can be different than the value of TBB_INTERFACE_VERSION obtained at compile time.

+ +
+
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00256.html b/doc/html/a00256.html new file mode 100644 index 0000000000..17f8841ef2 --- /dev/null +++ b/doc/html/a00256.html @@ -0,0 +1,2016 @@ + + + + + + +Algorithms + + + + + + + +
+ +
+
Algorithms
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  tbb::blocked_range< Value >
 A range over which to iterate. More...
 
class  tbb::blocked_range2d< RowValue, ColValue >
 A 2-dimensional range that models the Range concept. More...
 
class  tbb::blocked_range3d< PageValue, RowValue, ColValue >
 A 3-dimensional range that models the Range concept. More...
 
struct  tbb::pre_scan_tag
 Used to indicate that the initial scan is being performed. More...
 
struct  tbb::final_scan_tag
 Used to indicate that the final scan is being performed. More...
 
class  tbb::parallel_while< Body >
 Parallel iteration over a stream, with optional addition of more work. More...
 
class  tbb::filter
 A stage in a pipeline. More...
 
class  tbb::thread_bound_filter
 A stage in a pipeline served by a user thread. More...
 
class  tbb::pipeline
 A processing pipeline that applies filters to items. More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+parallel_do

See also requirements on parallel_do Body.

+
template<typename Iterator , typename Body >
void tbb::parallel_do (Iterator first, Iterator last, const Body &body)
 Parallel iteration over a range, with optional addition of more work. More...
 
template<typename Iterator , typename Body >
void tbb::parallel_do (Iterator first, Iterator last, const Body &body, task_group_context &context)
 Parallel iteration over a range, with optional addition of more work and user-supplied context. More...
 
+template<typename Range , typename Body >
void tbb::parallel_do (Range &rng, const Body &body)
 
+template<typename Range , typename Body >
void tbb::parallel_do (const Range &rng, const Body &body)
 
+template<typename Range , typename Body >
void tbb::parallel_do (Range &rng, const Body &body, task_group_context &context)
 
+template<typename Range , typename Body >
void tbb::parallel_do (const Range &rng, const Body &body, task_group_context &context)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+parallel_for

See also requirements on Range and parallel_for Body.

+
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body)
 Parallel iteration over range with default partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, const simple_partitioner &partitioner)
 Parallel iteration over range with simple partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, const auto_partitioner &partitioner)
 Parallel iteration over range with auto_partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, affinity_partitioner &partitioner)
 Parallel iteration over range with affinity_partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, task_group_context &context)
 Parallel iteration over range with default partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, const simple_partitioner &partitioner, task_group_context &context)
 Parallel iteration over range with simple partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, const auto_partitioner &partitioner, task_group_context &context)
 Parallel iteration over range with auto_partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_for (const Range &range, const Body &body, affinity_partitioner &partitioner, task_group_context &context)
 Parallel iteration over range with affinity_partitioner and user-supplied context. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+parallel_for_each

template<typename InputIterator , typename Function >
void tbb::parallel_for_each (InputIterator first, InputIterator last, const Function &f, task_group_context &context)
 Calls function f for all items from [first, last) interval using user-supplied context. More...
 
template<typename Range , typename Function >
void tbb::parallel_for_each (Range &rng, const Function &f, task_group_context &context)
 Calls function f for all items from rng using user-supplied context. More...
 
template<typename Range , typename Function >
void tbb::parallel_for_each (const Range &rng, const Function &f, task_group_context &context)
 Calls function f for all items from const rng user-supplied context. More...
 
+template<typename InputIterator , typename Function >
void tbb::parallel_for_each (InputIterator first, InputIterator last, const Function &f)
 Uses default context.
 
+template<typename Range , typename Function >
void tbb::parallel_for_each (Range &rng, const Function &f)
 Uses default context.
 
+template<typename Range , typename Function >
void tbb::parallel_for_each (const Range &rng, const Function &f)
 Uses default context.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+parallel_invoke

template<typename F0 , typename F1 , typename... F>
void tbb::parallel_invoke (F0 &&f0, F1 &&f1, F &&...f)
 Executes a list of tasks in parallel and waits for all tasks to complete. More...
 
+template<typename F0 , typename F1 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, tbb::task_group_context &context)
 
+template<typename F0 , typename F1 , typename F2 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, tbb::task_group_context &context)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, tbb::task_group_context &context)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, tbb::task_group_context &context)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, tbb::task_group_context &context)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, tbb::task_group_context &context)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, tbb::task_group_context &context)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8, tbb::task_group_context &context)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 , typename F9 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8, const F9 &f9, tbb::task_group_context &context)
 
+template<typename F0 , typename F1 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1)
 
+template<typename F0 , typename F1 , typename F2 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8)
 
+template<typename F0 , typename F1 , typename F2 , typename F3 , typename F4 , typename F5 , typename F6 , typename F7 , typename F8 , typename F9 >
void tbb::parallel_invoke (const F0 &f0, const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, const F5 &f5, const F6 &f6, const F7 &f7, const F8 &f8, const F9 &f9)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+parallel_reduce

See also requirements on Range and parallel_reduce Body.

+
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body)
 Parallel iteration with reduction and default partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body, const simple_partitioner &partitioner)
 Parallel iteration with reduction and simple_partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body, const auto_partitioner &partitioner)
 Parallel iteration with reduction and auto_partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body, affinity_partitioner &partitioner)
 Parallel iteration with reduction and affinity_partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body, const simple_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, simple partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body, const auto_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, auto_partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_reduce (const Range &range, Body &body, affinity_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, affinity_partitioner and user-supplied context. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction)
 Parallel iteration with reduction and default partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner)
 Parallel iteration with reduction and simple_partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const auto_partitioner &partitioner)
 Parallel iteration with reduction and auto_partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, affinity_partitioner &partitioner)
 Parallel iteration with reduction and affinity_partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const simple_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, simple partitioner and user-supplied context. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, const auto_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, auto_partitioner and user-supplied context. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, affinity_partitioner &partitioner, task_group_context &context)
 Parallel iteration with reduction, affinity_partitioner and user-supplied context. More...
 
template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce (const Range &range, Body &body)
 Parallel iteration with deterministic reduction and default partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_deterministic_reduce (const Range &range, Body &body, task_group_context &context)
 Parallel iteration with deterministic reduction, simple partitioner and user-supplied context. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction)
 Parallel iteration with deterministic reduction and default partitioner. More...
 
template<typename Range , typename Value , typename RealBody , typename Reduction >
Value tbb::parallel_deterministic_reduce (const Range &range, const Value &identity, const RealBody &real_body, const Reduction &reduction, task_group_context &context)
 Parallel iteration with deterministic reduction, simple partitioner and user-supplied context. More...
 
+ + + + + + + + + + + + + + +

+parallel_scan

See also requirements on Range and parallel_scan Body.

+
template<typename Range , typename Body >
void tbb::parallel_scan (const Range &range, Body &body)
 Parallel prefix with default partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_scan (const Range &range, Body &body, const simple_partitioner &partitioner)
 Parallel prefix with simple_partitioner. More...
 
template<typename Range , typename Body >
void tbb::parallel_scan (const Range &range, Body &body, const auto_partitioner &partitioner)
 Parallel prefix with auto_partitioner. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+parallel_sort

See also requirements on iterators for parallel_sort.

+
template<typename RandomAccessIterator , typename Compare >
void tbb::parallel_sort (RandomAccessIterator begin, RandomAccessIterator end, const Compare &comp)
 Sorts the data in [begin,end) using the given comparator. More...
 
template<typename RandomAccessIterator >
void tbb::parallel_sort (RandomAccessIterator begin, RandomAccessIterator end)
 Sorts the data in [begin,end) with a default comparator std::less<RandomAccessIterator> More...
 
template<typename Range , typename Compare >
void tbb::parallel_sort (Range &rng, const Compare &comp)
 Sorts the data in rng using the given comparator. More...
 
template<typename Range , typename Compare >
void tbb::parallel_sort (const Range &rng, const Compare &comp)
 Sorts the data in const rng using the given comparator. More...
 
template<typename Range >
void tbb::parallel_sort (Range &rng)
 Sorts the data in rng with a default comparator std::less<RandomAccessIterator> More...
 
template<typename Range >
void tbb::parallel_sort (const Range &rng)
 Sorts the data in const rng with a default comparator std::less<RandomAccessIterator> More...
 
template<typename T >
void tbb::parallel_sort (T *begin, T *end)
 Sorts the data in the range [begin,end) with a default comparator std::less<T> More...
 
+

Detailed Description

+

Function Documentation

+ +
+
+
+template<typename Range , typename Body >
+ + + + + + + + + + + + + + + + + + +
void tbb::parallel_deterministic_reduce (const Range & range,
Body & body 
)
+
+ +

Parallel iteration with deterministic reduction and default partitioner.

+ +
+
+ +
+
+
+template<typename Range , typename Body >
+ + + + + + + + + + + + + + + + + + + + + + + + +
void tbb::parallel_deterministic_reduce (const Range & range,
Body & body,
task_group_context & context 
)
+
+ +

Parallel iteration with deterministic reduction, simple partitioner and user-supplied context.

+ +
+
+ +
+
+
+template<typename Range , typename Value , typename RealBody , typename Reduction >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Value tbb::parallel_deterministic_reduce (const Range & range,
const Value & identity,
const RealBody & real_body,
const Reduction & reduction 
)
+
+ +

Parallel iteration with deterministic reduction and default partitioner.

+

parallel_reduce overloads that work with anonymous function objects (see also requirements on parallel_reduce anonymous function objects).

+ +
+
+ +
+
+
+template<typename Range , typename Value , typename RealBody , typename Reduction >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Value tbb::parallel_deterministic_reduce (const Range & range,
const Value & identity,
const RealBody & real_body,
const Reduction & reduction,
task_group_context & context 
)
+
+ +

Parallel iteration with deterministic reduction, simple partitioner and user-supplied context.

+ +
+
+ +
+
+
+template<typename Iterator , typename Body >
+ + + + + + + + + + + + + + + + + + + + + + + + +
void tbb::parallel_do (Iterator first,
Iterator last,
const Body & body 
)
+
+ +

Parallel iteration over a range, with optional addition of more work.

+ +

Referenced by tbb::parallel_for_each().

+ +
+
+ +
+
+
+template<typename Iterator , typename Body >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void tbb::parallel_do (Iterator first,
Iterator last,
const Body & body,
task_group_context & context 
)
+
+ +

Parallel iteration over a range, with optional addition of more work and user-supplied context.

+ +
+
+ +
+
+
+template<typename Range , typename Body >
+ + + + + + + + + + + + + + + + + + +
void tbb::parallel_for (const Range & range,
const Body & body 
)
+
+ +

Parallel iteration over range with default partitioner.

+ +
+
+ +
+
+
+template<typename Range , typename Body >
+ + + + + + + + + + + + + + + + + + + + + + + + +
void tbb::parallel_for (const Range & range,
const Body & body,
const simple_partitioner & partitioner 
)
+
+ +

Parallel iteration over range with simple partitioner.

+ +
+
+ +
+
+
+template<typename Range , typename Body >
+ + + + + + + + + + + + + + + + + + + + + + + + +
void tbb::parallel_for (const Range & range,
const Body & body,
const auto_partitioner & partitioner 
)
+
+ +

Parallel iteration over range with auto_partitioner.

+ +
+
+ +
+
+
+template<typename Range , typename Body >
+ + + + + + + + + + + + + + + + + + + + + + + + +
void tbb::parallel_for (const Range & range,
const Body & body,
affinity_partitioner & partitioner 
)
+
+ +

Parallel iteration over range with affinity_partitioner.

+ +
+
+ +
+
+
+template<typename Range , typename Body >
+ + + + + + + + + + + + + + + + + + + + + + + + +
void tbb::parallel_for (const Range & range,
const Body & body,
task_group_context & context 
)
+
+ +

Parallel iteration over range with default partitioner and user-supplied context.

+ +
+
+ +
+
+
+template<typename Range , typename Body >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void tbb::parallel_for (const Range & range,
const Body & body,
const simple_partitioner & partitioner,
task_group_context & context 
)
+
+ +

Parallel iteration over range with simple partitioner and user-supplied context.

+ +
+
+ +
+
+
+template<typename Range , typename Body >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void tbb::parallel_for (const Range & range,
const Body & body,
const auto_partitioner & partitioner,
task_group_context & context 
)
+
+ +

Parallel iteration over range with auto_partitioner and user-supplied context.

+ +
+
+ +
+
+
+template<typename Range , typename Body >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void tbb::parallel_for (const Range & range,
const Body & body,
affinity_partitioner & partitioner,
task_group_context & context 
)
+
+ +

Parallel iteration over range with affinity_partitioner and user-supplied context.

+ +
+
+ +
+
+
+template<typename InputIterator , typename Function >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void tbb::parallel_for_each (InputIterator first,
InputIterator last,
const Function & f,
task_group_context & context 
)
+
+ +

Calls function f for all items from [first, last) interval using user-supplied context.

+ +

References tbb::parallel_do().

+ +

Referenced by tbb::parallel_for_each().

+ +
+
+ +
+
+
+template<typename Range , typename Function >
+ + + + + + + + + + + + + + + + + + + + + + + + +
void tbb::parallel_for_each (Range & rng,
const Function & f,
task_group_context & context 
)
+
+ +

Calls function f for all items from rng using user-supplied context.

+ +

References tbb::parallel_for_each().

+ +
+
+ +
+
+
+template<typename Range , typename Function >
+ + + + + + + + + + + + + + + + + + + + + + + + +
void tbb::parallel_for_each (const Range & rng,
const Function & f,
task_group_context & context 
)
+
+ +

Calls function f for all items from const rng user-supplied context.

+ +

References tbb::parallel_for_each().

+ +
+
+ +
+
+
+template<typename F0 , typename F1 , typename... F>
+ + + + + + + + + + + + + + + + + + + + + + + + +
void tbb::parallel_invoke (F0 && f0,
F1 && f1,
F &&... f 
)
+
+ +

Executes a list of tasks in parallel and waits for all tasks to complete.

+ +
+
+ +
+
+
+template<typename Range , typename Body >
+ + + + + + + + + + + + + + + + + + +
void tbb::parallel_reduce (const Range & range,
Body & body 
)
+
+ +

Parallel iteration with reduction and default partitioner.

+ +
+
+ +
+
+
+template<typename Range , typename Body >
+ + + + + + + + + + + + + + + + + + + + + + + + +
void tbb::parallel_reduce (const Range & range,
Body & body,
const simple_partitioner & partitioner 
)
+
+ +

Parallel iteration with reduction and simple_partitioner.

+ +
+
+ +
+
+
+template<typename Range , typename Body >
+ + + + + + + + + + + + + + + + + + + + + + + + +
void tbb::parallel_reduce (const Range & range,
Body & body,
const auto_partitioner & partitioner 
)
+
+ +

Parallel iteration with reduction and auto_partitioner.

+ +
+
+ +
+
+
+template<typename Range , typename Body >
+ + + + + + + + + + + + + + + + + + + + + + + + +
void tbb::parallel_reduce (const Range & range,
Body & body,
affinity_partitioner & partitioner 
)
+
+ +

Parallel iteration with reduction and affinity_partitioner.

+ +
+
+ +
+
+
+template<typename Range , typename Body >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void tbb::parallel_reduce (const Range & range,
Body & body,
const simple_partitioner & partitioner,
task_group_context & context 
)
+
+ +

Parallel iteration with reduction, simple partitioner and user-supplied context.

+ +
+
+ +
+
+
+template<typename Range , typename Body >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void tbb::parallel_reduce (const Range & range,
Body & body,
const auto_partitioner & partitioner,
task_group_context & context 
)
+
+ +

Parallel iteration with reduction, auto_partitioner and user-supplied context.

+ +
+
+ +
+
+
+template<typename Range , typename Body >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void tbb::parallel_reduce (const Range & range,
Body & body,
affinity_partitioner & partitioner,
task_group_context & context 
)
+
+ +

Parallel iteration with reduction, affinity_partitioner and user-supplied context.

+ +
+
+ +
+
+
+template<typename Range , typename Value , typename RealBody , typename Reduction >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Value tbb::parallel_reduce (const Range & range,
const Value & identity,
const RealBody & real_body,
const Reduction & reduction 
)
+
+ +

Parallel iteration with reduction and default partitioner.

+

parallel_reduce overloads that work with anonymous function objects (see also requirements on parallel_reduce anonymous function objects).

+ +
+
+ +
+
+
+template<typename Range , typename Value , typename RealBody , typename Reduction >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Value tbb::parallel_reduce (const Range & range,
const Value & identity,
const RealBody & real_body,
const Reduction & reduction,
const simple_partitioner & partitioner 
)
+
+ +

Parallel iteration with reduction and simple_partitioner.

+ +
+
+ +
+
+
+template<typename Range , typename Value , typename RealBody , typename Reduction >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Value tbb::parallel_reduce (const Range & range,
const Value & identity,
const RealBody & real_body,
const Reduction & reduction,
const auto_partitioner & partitioner 
)
+
+ +

Parallel iteration with reduction and auto_partitioner.

+ +
+
+ +
+
+
+template<typename Range , typename Value , typename RealBody , typename Reduction >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Value tbb::parallel_reduce (const Range & range,
const Value & identity,
const RealBody & real_body,
const Reduction & reduction,
affinity_partitioner & partitioner 
)
+
+ +

Parallel iteration with reduction and affinity_partitioner.

+ +
+
+ +
+
+
+template<typename Range , typename Value , typename RealBody , typename Reduction >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Value tbb::parallel_reduce (const Range & range,
const Value & identity,
const RealBody & real_body,
const Reduction & reduction,
const simple_partitioner & partitioner,
task_group_context & context 
)
+
+ +

Parallel iteration with reduction, simple partitioner and user-supplied context.

+ +
+
+ +
+
+
+template<typename Range , typename Value , typename RealBody , typename Reduction >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Value tbb::parallel_reduce (const Range & range,
const Value & identity,
const RealBody & real_body,
const Reduction & reduction,
const auto_partitioner & partitioner,
task_group_context & context 
)
+
+ +

Parallel iteration with reduction, auto_partitioner and user-supplied context.

+ +
+
+ +
+
+
+template<typename Range , typename Value , typename RealBody , typename Reduction >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Value tbb::parallel_reduce (const Range & range,
const Value & identity,
const RealBody & real_body,
const Reduction & reduction,
affinity_partitioner & partitioner,
task_group_context & context 
)
+
+ +

Parallel iteration with reduction, affinity_partitioner and user-supplied context.

+ +
+
+ +
+
+
+template<typename Range , typename Body >
+ + + + + + + + + + + + + + + + + + +
void tbb::parallel_scan (const Range & range,
Body & body 
)
+
+ +

Parallel prefix with default partitioner.

+ +
+
+ +
+
+
+template<typename Range , typename Body >
+ + + + + + + + + + + + + + + + + + + + + + + + +
void tbb::parallel_scan (const Range & range,
Body & body,
const simple_partitioner & partitioner 
)
+
+ +

Parallel prefix with simple_partitioner.

+ +
+
+ +
+
+
+template<typename Range , typename Body >
+ + + + + + + + + + + + + + + + + + + + + + + + +
void tbb::parallel_scan (const Range & range,
Body & body,
const auto_partitioner & partitioner 
)
+
+ +

Parallel prefix with auto_partitioner.

+ +
+
+ +
+
+
+template<typename RandomAccessIterator , typename Compare >
+ + + + + + + + + + + + + + + + + + + + + + + + +
void tbb::parallel_sort (RandomAccessIterator begin,
RandomAccessIterator end,
const Compare & comp 
)
+
+ +

Sorts the data in [begin,end) using the given comparator.

+

The compare function object is used for all comparisons between elements during sorting. The compare object must define a bool operator() function.

+ +

Referenced by tbb::parallel_sort().

+ +
+
+ +
+
+
+template<typename RandomAccessIterator >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void tbb::parallel_sort (RandomAccessIterator begin,
RandomAccessIterator end 
)
+
+inline
+
+ +

Sorts the data in [begin,end) with a default comparator std::less<RandomAccessIterator>

+ +

References tbb::parallel_sort().

+ +
+
+ +
+
+
+template<typename Range , typename Compare >
+ + + + + + + + + + + + + + + + + + +
void tbb::parallel_sort (Range & rng,
const Compare & comp 
)
+
+ +

Sorts the data in rng using the given comparator.

+ +

References tbb::parallel_sort().

+ +
+
+ +
+
+
+template<typename Range , typename Compare >
+ + + + + + + + + + + + + + + + + + +
void tbb::parallel_sort (const Range & rng,
const Compare & comp 
)
+
+ +

Sorts the data in const rng using the given comparator.

+ +

References tbb::parallel_sort().

+ +
+
+ +
+
+
+template<typename Range >
+ + + + + + + + +
void tbb::parallel_sort (Range & rng)
+
+ +

Sorts the data in rng with a default comparator std::less<RandomAccessIterator>

+ +

References tbb::parallel_sort().

+ +
+
+ +
+
+
+template<typename Range >
+ + + + + + + + +
void tbb::parallel_sort (const Range & rng)
+
+ +

Sorts the data in const rng with a default comparator std::less<RandomAccessIterator>

+ +

References tbb::parallel_sort().

+ +
+
+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void tbb::parallel_sort (T * begin,
T * end 
)
+
+inline
+
+ +

Sorts the data in the range [begin,end) with a default comparator std::less<T>

+ +

References tbb::parallel_sort().

+ +
+
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00257.html b/doc/html/a00257.html new file mode 100644 index 0000000000..7b283772f2 --- /dev/null +++ b/doc/html/a00257.html @@ -0,0 +1,67 @@ + + + + + + +Containers + + + + + + + +
+ +
+
Containers
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Classes

class  tbb::combinable< T >
 Thread-local storage with optional reduction. More...
 
class  tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >
 Unordered map from Key to T. More...
 
class  tbb::strict_ppl::concurrent_queue< T, A >
 A high-performance thread-safe non-blocking concurrent queue. More...
 
class  tbb::concurrent_bounded_queue< T, A >
 A high-performance thread-safe blocking concurrent bounded queue. More...
 
class  tbb::concurrent_vector< T, A >
 Concurrent vector container. More...
 
class  tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >
 The enumerable_thread_specific container. More...
 
+

Detailed Description

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00258.html b/doc/html/a00258.html new file mode 100644 index 0000000000..d2aa131c14 --- /dev/null +++ b/doc/html/a00258.html @@ -0,0 +1,382 @@ + + + + + + +Memory Allocation + + + + + + + +
+ +
+
Memory Allocation
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  tbb::aligned_space< T, N >
 Block of space aligned sufficiently to construct an array T with N elements. More...
 
class  tbb::cache_aligned_allocator< T >
 Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. More...
 
class  tbb::cache_aligned_allocator< void >
 Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. More...
 
class  tbb::interface6::memory_pool_allocator< T, P >
 Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. More...
 
class  tbb::interface6::memory_pool_allocator< void, P >
 Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. More...
 
class  tbb::scalable_allocator< T >
 Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. More...
 
class  tbb::scalable_allocator< void >
 Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. More...
 
class  tbb::tbb_allocator< T >
 Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. More...
 
class  tbb::tbb_allocator< void >
 Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. More...
 
class  tbb::zero_allocator< T, Allocator >
 Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5. More...
 
class  tbb::zero_allocator< void, Allocator >
 Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Functions

void *__TBB_EXPORTED_FUNC scalable_malloc (size_t size)
 
void __TBB_EXPORTED_FUNC scalable_free (void *ptr)
 
void *__TBB_EXPORTED_FUNC scalable_realloc (void *ptr, size_t size)
 
void *__TBB_EXPORTED_FUNC scalable_calloc (size_t nobj, size_t size)
 
int __TBB_EXPORTED_FUNC scalable_posix_memalign (void **memptr, size_t alignment, size_t size)
 
void *__TBB_EXPORTED_FUNC scalable_aligned_malloc (size_t size, size_t alignment)
 
void *__TBB_EXPORTED_FUNC scalable_aligned_realloc (void *ptr, size_t size, size_t alignment)
 
void __TBB_EXPORTED_FUNC scalable_aligned_free (void *ptr)
 
size_t __TBB_EXPORTED_FUNC scalable_msize (void *ptr)
 
int __TBB_EXPORTED_FUNC scalable_allocation_mode (int param, intptr_t value)
 
int __TBB_EXPORTED_FUNC scalable_allocation_command (int cmd, void *param)
 
+

Detailed Description

+

Function Documentation

+ +
+
+ + + + + + + + +
void __TBB_EXPORTED_FUNC scalable_aligned_free (void * ptr)
+
+

The "_aligned_free" analogue.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void* __TBB_EXPORTED_FUNC scalable_aligned_malloc (size_t size,
size_t alignment 
)
+
+

The "_aligned_malloc" analogue.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void* __TBB_EXPORTED_FUNC scalable_aligned_realloc (void * ptr,
size_t size,
size_t alignment 
)
+
+

The "_aligned_realloc" analogue.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int __TBB_EXPORTED_FUNC scalable_allocation_command (int cmd,
void * param 
)
+
+

Call TBB allocator-specific commands.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int __TBB_EXPORTED_FUNC scalable_allocation_mode (int param,
intptr_t value 
)
+
+

Set TBB allocator-specific allocation modes.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void* __TBB_EXPORTED_FUNC scalable_calloc (size_t nobj,
size_t size 
)
+
+

The "calloc" analogue complementing scalable_malloc.

+ +
+
+ +
+
+ + + + + + + + +
void __TBB_EXPORTED_FUNC scalable_free (void * ptr)
+
+

The "free" analogue to discard a previously allocated piece of memory.

+ +

Referenced by tbb::scalable_allocator< T >::deallocate().

+ +
+
+ +
+
+ + + + + + + + +
void* __TBB_EXPORTED_FUNC scalable_malloc (size_t size)
+
+

The "malloc" analogue to allocate block of memory of size bytes.

+ +

Referenced by tbb::scalable_allocator< T >::allocate().

+ +
+
+ +
+
+ + + + + + + + +
size_t __TBB_EXPORTED_FUNC scalable_msize (void * ptr)
+
+

The analogue of msize/malloc_size/malloc_usable_size. Returns the usable size of a memory block previously allocated by scalable*, or 0 (zero) if ptr does not point to such a block.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int __TBB_EXPORTED_FUNC scalable_posix_memalign (void ** memptr,
size_t alignment,
size_t size 
)
+
+

The "posix_memalign" analogue.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void* __TBB_EXPORTED_FUNC scalable_realloc (void * ptr,
size_t size 
)
+
+

The "realloc" analogue complementing scalable_malloc.

+ +
+
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00259.html b/doc/html/a00259.html new file mode 100644 index 0000000000..eaa72172f2 --- /dev/null +++ b/doc/html/a00259.html @@ -0,0 +1,125 @@ + + + + + + +Synchronization + + + + + + + +
+ +
+
Synchronization
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

struct  tbb::atomic< T >
 Primary template for atomic. More...
 
class  tbb::mutex
 Wrapper around the platform's native reader-writer lock. More...
 
class  tbb::null_mutex
 A mutex which does nothing. More...
 
class  tbb::null_rw_mutex
 A rw mutex which does nothing. More...
 
class  tbb::queuing_mutex
 Queuing mutex with local-only spinning. More...
 
class  tbb::queuing_rw_mutex
 Queuing reader-writer mutex with local-only spinning. More...
 
class  tbb::interface5::reader_writer_lock
 Writer-preference reader-writer lock with local-only spinning on readers. More...
 
class  tbb::recursive_mutex
 
class  tbb::spin_mutex
 A lock that occupies a single byte. More...
 
class  tbb::spin_rw_mutex_v3
 Fast, unfair, spinning reader-writer lock with backoff and writer-preference. More...
 
+ + + + + + + +

+Typedefs

typedef
+interface7::internal::padded_mutex
+< interface7::internal::x86_eliding_mutex,
+false > 
tbb::speculative_spin_mutex
 A cross-platform spin mutex with speculative lock acquisition. More...
 
typedef
+interface7::internal::padded_mutex
+< tbb::interface8::internal::x86_rtm_rw_mutex,
+true > 
tbb::interface8::speculative_spin_rw_mutex
 A cross-platform spin reader/writer mutex with speculative lock acquisition. More...
 
+

Detailed Description

+

Typedef Documentation

+ +
+
+ + + + +
typedef interface7::internal::padded_mutex< spin_mutex, false > tbb::speculative_spin_mutex
+
+ +

A cross-platform spin mutex with speculative lock acquisition.

+

On platforms with proper HW support, this lock may speculatively execute its critical sections, using HW mechanisms to detect real data races and ensure atomicity of the critical sections. In particular, it uses Intel(R) Transactional Synchronization Extensions (Intel(R) TSX). Without such HW support, it behaves like a spin_mutex. It should be used for locking short critical sections where the lock is contended but the data it protects are not. If zero-initialized, the mutex is considered unheld.

+ +
+
+ +
+
+ + + + +
typedef interface7::internal::padded_mutex< tbb::spin_rw_mutex, true > tbb::interface8::speculative_spin_rw_mutex
+
+ +

A cross-platform spin reader/writer mutex with speculative lock acquisition.

+

On platforms with proper HW support, this lock may speculatively execute its critical sections, using HW mechanisms to detect real data races and ensure atomicity of the critical sections. In particular, it uses Intel(R) Transactional Synchronization Extensions (Intel(R) TSX). Without such HW support, it behaves like a spin_rw_mutex. It should be used for locking short critical sections where the lock is contended but the data it protects are not.

+ +
+
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00260.html b/doc/html/a00260.html new file mode 100644 index 0000000000..75c08f877d --- /dev/null +++ b/doc/html/a00260.html @@ -0,0 +1,52 @@ + + + + + + +Timing + + + + + + + +
+ +
+
Timing
+
+
+ + + + + +

+Classes

class  tbb::tick_count
 Absolute timestamp. More...
 
+

Detailed Description

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00261.html b/doc/html/a00261.html new file mode 100644 index 0000000000..b275ece3fd --- /dev/null +++ b/doc/html/a00261.html @@ -0,0 +1,52 @@ + + + + + + +Task Scheduling + + + + + + + +
+ +
+
Task Scheduling
+
+
+ + + + + +

+Classes

class  tbb::task_scheduler_init
 Class delimiting the scope of task scheduler activity. More...
 
+

Detailed Description

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00263.html b/doc/html/a00263.html new file mode 100644 index 0000000000..98f187ffa4 --- /dev/null +++ b/doc/html/a00263.html @@ -0,0 +1,53 @@ + + + + + + +Member List + + + + + + + +
+
+
__TBB_malloc_proxy_caller Member List
+
+
+ +

This is the complete list of members for __TBB_malloc_proxy_caller, including all inherited members.

+ + +
__TBB_malloc_proxy_caller() (defined in __TBB_malloc_proxy_caller)__TBB_malloc_proxy_callerinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00264.html b/doc/html/a00264.html new file mode 100644 index 0000000000..62dc55d2d0 --- /dev/null +++ b/doc/html/a00264.html @@ -0,0 +1,65 @@ + + + + + + +Member List + + + + + + + +
+
+
rml::MemPoolPolicy Member List
+
+
+ +

This is the complete list of members for rml::MemPoolPolicy, including all inherited members.

+ + + + + + + + + + +
fixedPool (defined in rml::MemPoolPolicy)rml::MemPoolPolicy
granularity (defined in rml::MemPoolPolicy)rml::MemPoolPolicy
keepAllMemory (defined in rml::MemPoolPolicy)rml::MemPoolPolicy
MemPoolPolicy(rawAllocType pAlloc_, rawFreeType pFree_, size_t granularity_=0, bool fixedPool_=false, bool keepAllMemory_=false) (defined in rml::MemPoolPolicy)rml::MemPoolPolicyinline
pAlloc (defined in rml::MemPoolPolicy)rml::MemPoolPolicy
pFree (defined in rml::MemPoolPolicy)rml::MemPoolPolicy
reserved (defined in rml::MemPoolPolicy)rml::MemPoolPolicy
TBBMALLOC_POOL_VERSION enum value (defined in rml::MemPoolPolicy)rml::MemPoolPolicy
version (defined in rml::MemPoolPolicy)rml::MemPoolPolicy
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00265.html b/doc/html/a00265.html new file mode 100644 index 0000000000..9557a579b8 --- /dev/null +++ b/doc/html/a00265.html @@ -0,0 +1,58 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::aligned_space< T, N > Member List
+
+
+ +

This is the complete list of members for tbb::aligned_space< T, N >, including all inherited members.

+ + + +
begin()tbb::aligned_space< T, N >inline
end()tbb::aligned_space< T, N >inline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00266.html b/doc/html/a00266.html new file mode 100644 index 0000000000..31cafa2b8e --- /dev/null +++ b/doc/html/a00266.html @@ -0,0 +1,60 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::atomic< T > Member List
+
+
+ +

This is the complete list of members for tbb::atomic< T >, including all inherited members.

+ + + + + +
atomic()=default (defined in tbb::atomic< T >)tbb::atomic< T >
atomic(T arg) (defined in tbb::atomic< T >)tbb::atomic< T >inline
operator=(T rhs) (defined in tbb::atomic< T >)tbb::atomic< T >inline
operator=(const atomic< T > &rhs) (defined in tbb::atomic< T >)tbb::atomic< T >inline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00267.html b/doc/html/a00267.html new file mode 100644 index 0000000000..307f098e86 --- /dev/null +++ b/doc/html/a00267.html @@ -0,0 +1,60 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::atomic< void * > Member List
+
+
+ +

This is the complete list of members for tbb::atomic< void * >, including all inherited members.

+ + + + + +
atomic()=default (defined in tbb::atomic< void * >)tbb::atomic< void * >
atomic(void *arg) (defined in tbb::atomic< void * >)tbb::atomic< void * >inline
operator=(void *rhs) (defined in tbb::atomic< void * >)tbb::atomic< void * >inline
operator=(const atomic< void * > &rhs) (defined in tbb::atomic< void * >)tbb::atomic< void * >inline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00268.html b/doc/html/a00268.html new file mode 100644 index 0000000000..033cc97cad --- /dev/null +++ b/doc/html/a00268.html @@ -0,0 +1,71 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::blocked_range< Value > Member List
+
+
+ +

This is the complete list of members for tbb::blocked_range< Value >, including all inherited members.

+ + + + + + + + + + + + + + + + +
begin() const tbb::blocked_range< Value >inline
blocked_range()tbb::blocked_range< Value >inline
blocked_range(Value begin_, Value end_, size_type grainsize_=1)tbb::blocked_range< Value >inline
blocked_range(blocked_range &r, split)tbb::blocked_range< Value >inline
blocked_range(blocked_range &r, proportional_split &proportion)tbb::blocked_range< Value >inline
blocked_range2d (defined in tbb::blocked_range< Value >)tbb::blocked_range< Value >friend
blocked_range3d (defined in tbb::blocked_range< Value >)tbb::blocked_range< Value >friend
const_iterator typedeftbb::blocked_range< Value >
empty() const tbb::blocked_range< Value >inline
end() const tbb::blocked_range< Value >inline
grainsize() const tbb::blocked_range< Value >inline
is_divisible() const tbb::blocked_range< Value >inline
is_splittable_in_proportiontbb::blocked_range< Value >static
size() const tbb::blocked_range< Value >inline
size_type typedeftbb::blocked_range< Value >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00269.html b/doc/html/a00269.html new file mode 100644 index 0000000000..ce282704a6 --- /dev/null +++ b/doc/html/a00269.html @@ -0,0 +1,68 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::blocked_range2d< RowValue, ColValue > Member List
+
+
+ +

This is the complete list of members for tbb::blocked_range2d< RowValue, ColValue >, including all inherited members.

+ + + + + + + + + + + + + +
blocked_range2d(RowValue row_begin, RowValue row_end, typename row_range_type::size_type row_grainsize, ColValue col_begin, ColValue col_end, typename col_range_type::size_type col_grainsize) (defined in tbb::blocked_range2d< RowValue, ColValue >)tbb::blocked_range2d< RowValue, ColValue >inline
blocked_range2d(RowValue row_begin, RowValue row_end, ColValue col_begin, ColValue col_end) (defined in tbb::blocked_range2d< RowValue, ColValue >)tbb::blocked_range2d< RowValue, ColValue >inline
blocked_range2d(blocked_range2d &r, split) (defined in tbb::blocked_range2d< RowValue, ColValue >)tbb::blocked_range2d< RowValue, ColValue >inline
blocked_range2d(blocked_range2d &r, proportional_split &proportion) (defined in tbb::blocked_range2d< RowValue, ColValue >)tbb::blocked_range2d< RowValue, ColValue >inline
col_range_type typedef (defined in tbb::blocked_range2d< RowValue, ColValue >)tbb::blocked_range2d< RowValue, ColValue >
cols() const tbb::blocked_range2d< RowValue, ColValue >inline
do_split(blocked_range2d &r, Split &split_obj) (defined in tbb::blocked_range2d< RowValue, ColValue >)tbb::blocked_range2d< RowValue, ColValue >inline
empty() const tbb::blocked_range2d< RowValue, ColValue >inline
is_divisible() const tbb::blocked_range2d< RowValue, ColValue >inline
is_splittable_in_proportiontbb::blocked_range2d< RowValue, ColValue >static
row_range_type typedeftbb::blocked_range2d< RowValue, ColValue >
rows() const tbb::blocked_range2d< RowValue, ColValue >inline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00270.html b/doc/html/a00270.html new file mode 100644 index 0000000000..b567b4198b --- /dev/null +++ b/doc/html/a00270.html @@ -0,0 +1,70 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::blocked_range3d< PageValue, RowValue, ColValue > Member List
+
+
+ +

This is the complete list of members for tbb::blocked_range3d< PageValue, RowValue, ColValue >, including all inherited members.

+ + + + + + + + + + + + + + + +
blocked_range3d(PageValue page_begin, PageValue page_end, RowValue row_begin, RowValue row_end, ColValue col_begin, ColValue col_end) (defined in tbb::blocked_range3d< PageValue, RowValue, ColValue >)tbb::blocked_range3d< PageValue, RowValue, ColValue >inline
blocked_range3d(PageValue page_begin, PageValue page_end, typename page_range_type::size_type page_grainsize, RowValue row_begin, RowValue row_end, typename row_range_type::size_type row_grainsize, ColValue col_begin, ColValue col_end, typename col_range_type::size_type col_grainsize) (defined in tbb::blocked_range3d< PageValue, RowValue, ColValue >)tbb::blocked_range3d< PageValue, RowValue, ColValue >inline
blocked_range3d(blocked_range3d &r, split) (defined in tbb::blocked_range3d< PageValue, RowValue, ColValue >)tbb::blocked_range3d< PageValue, RowValue, ColValue >inline
blocked_range3d(blocked_range3d &r, proportional_split &proportion) (defined in tbb::blocked_range3d< PageValue, RowValue, ColValue >)tbb::blocked_range3d< PageValue, RowValue, ColValue >inline
col_range_type typedef (defined in tbb::blocked_range3d< PageValue, RowValue, ColValue >)tbb::blocked_range3d< PageValue, RowValue, ColValue >
cols() const tbb::blocked_range3d< PageValue, RowValue, ColValue >inline
do_split(blocked_range3d &r, Split &split_obj) (defined in tbb::blocked_range3d< PageValue, RowValue, ColValue >)tbb::blocked_range3d< PageValue, RowValue, ColValue >inline
empty() const tbb::blocked_range3d< PageValue, RowValue, ColValue >inline
is_divisible() const tbb::blocked_range3d< PageValue, RowValue, ColValue >inline
is_splittable_in_proportiontbb::blocked_range3d< PageValue, RowValue, ColValue >static
page_range_type typedeftbb::blocked_range3d< PageValue, RowValue, ColValue >
pages() const tbb::blocked_range3d< PageValue, RowValue, ColValue >inline
row_range_type typedef (defined in tbb::blocked_range3d< PageValue, RowValue, ColValue >)tbb::blocked_range3d< PageValue, RowValue, ColValue >
rows() const tbb::blocked_range3d< PageValue, RowValue, ColValue >inline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00271.html b/doc/html/a00271.html new file mode 100644 index 0000000000..b51cb9db68 --- /dev/null +++ b/doc/html/a00271.html @@ -0,0 +1,75 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::cache_aligned_allocator< T > Member List
+
+
+ +

This is the complete list of members for tbb::cache_aligned_allocator< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
address(reference x) const (defined in tbb::cache_aligned_allocator< T >)tbb::cache_aligned_allocator< T >inline
address(const_reference x) const (defined in tbb::cache_aligned_allocator< T >)tbb::cache_aligned_allocator< T >inline
allocate(size_type n, const void *hint=0)tbb::cache_aligned_allocator< T >inline
cache_aligned_allocator() (defined in tbb::cache_aligned_allocator< T >)tbb::cache_aligned_allocator< T >inline
cache_aligned_allocator(const cache_aligned_allocator &) (defined in tbb::cache_aligned_allocator< T >)tbb::cache_aligned_allocator< T >inline
cache_aligned_allocator(const cache_aligned_allocator< U > &) (defined in tbb::cache_aligned_allocator< T >)tbb::cache_aligned_allocator< T >inline
const_pointer typedef (defined in tbb::cache_aligned_allocator< T >)tbb::cache_aligned_allocator< T >
const_reference typedef (defined in tbb::cache_aligned_allocator< T >)tbb::cache_aligned_allocator< T >
construct(U *p, Args &&...args)tbb::cache_aligned_allocator< T >inline
construct(pointer p, value_type &&value) (defined in tbb::cache_aligned_allocator< T >)tbb::cache_aligned_allocator< T >inline
construct(pointer p, const value_type &value) (defined in tbb::cache_aligned_allocator< T >)tbb::cache_aligned_allocator< T >inline
deallocate(pointer p, size_type)tbb::cache_aligned_allocator< T >inline
destroy(pointer p)tbb::cache_aligned_allocator< T >inline
difference_type typedef (defined in tbb::cache_aligned_allocator< T >)tbb::cache_aligned_allocator< T >
max_size() const tbb::cache_aligned_allocator< T >inline
pointer typedef (defined in tbb::cache_aligned_allocator< T >)tbb::cache_aligned_allocator< T >
reference typedef (defined in tbb::cache_aligned_allocator< T >)tbb::cache_aligned_allocator< T >
size_type typedef (defined in tbb::cache_aligned_allocator< T >)tbb::cache_aligned_allocator< T >
value_type typedef (defined in tbb::cache_aligned_allocator< T >)tbb::cache_aligned_allocator< T >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00272.html b/doc/html/a00272.html new file mode 100644 index 0000000000..56fd708d54 --- /dev/null +++ b/doc/html/a00272.html @@ -0,0 +1,57 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::cache_aligned_allocator< T >::rebind< U > Member List
+
+
+ +

This is the complete list of members for tbb::cache_aligned_allocator< T >::rebind< U >, including all inherited members.

+ + +
other typedef (defined in tbb::cache_aligned_allocator< T >::rebind< U >)tbb::cache_aligned_allocator< T >::rebind< U >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00273.html b/doc/html/a00273.html new file mode 100644 index 0000000000..e0c5e312f4 --- /dev/null +++ b/doc/html/a00273.html @@ -0,0 +1,59 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::cache_aligned_allocator< void > Member List
+
+
+ +

This is the complete list of members for tbb::cache_aligned_allocator< void >, including all inherited members.

+ + + + +
const_pointer typedef (defined in tbb::cache_aligned_allocator< void >)tbb::cache_aligned_allocator< void >
pointer typedef (defined in tbb::cache_aligned_allocator< void >)tbb::cache_aligned_allocator< void >
value_type typedef (defined in tbb::cache_aligned_allocator< void >)tbb::cache_aligned_allocator< void >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00274.html b/doc/html/a00274.html new file mode 100644 index 0000000000..34810cd9f4 --- /dev/null +++ b/doc/html/a00274.html @@ -0,0 +1,57 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::cache_aligned_allocator< void >::rebind< U > Member List
+
+
+ +

This is the complete list of members for tbb::cache_aligned_allocator< void >::rebind< U >, including all inherited members.

+ + +
other typedef (defined in tbb::cache_aligned_allocator< void >::rebind< U >)tbb::cache_aligned_allocator< void >::rebind< U >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00275.html b/doc/html/a00275.html new file mode 100644 index 0000000000..138a38414d --- /dev/null +++ b/doc/html/a00275.html @@ -0,0 +1,66 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::combinable< T > Member List
+
+
+ +

This is the complete list of members for tbb::combinable< T >, including all inherited members.

+ + + + + + + + + + + +
clear() (defined in tbb::combinable< T >)tbb::combinable< T >inline
combinable() (defined in tbb::combinable< T >)tbb::combinable< T >inline
combinable(finit _finit) (defined in tbb::combinable< T >)tbb::combinable< T >inline
combinable(const combinable &other) (defined in tbb::combinable< T >)tbb::combinable< T >inline
combine(combine_func_t f_combine) (defined in tbb::combinable< T >)tbb::combinable< T >inline
combine_each(combine_func_t f_combine) (defined in tbb::combinable< T >)tbb::combinable< T >inline
local() (defined in tbb::combinable< T >)tbb::combinable< T >inline
local(bool &exists) (defined in tbb::combinable< T >)tbb::combinable< T >inline
operator=(const combinable &other) (defined in tbb::combinable< T >)tbb::combinable< T >inline
~combinable()tbb::combinable< T >inline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00276.html b/doc/html/a00276.html new file mode 100644 index 0000000000..2d377adb26 --- /dev/null +++ b/doc/html/a00276.html @@ -0,0 +1,90 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::concurrent_bounded_queue< T, A > Member List
+
+
+ +

This is the complete list of members for tbb::concurrent_bounded_queue< T, A >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
abort()tbb::concurrent_bounded_queue< T, A >inline
allocator_type typedeftbb::concurrent_bounded_queue< T, A >
capacity() const tbb::concurrent_bounded_queue< T, A >inline
clear()tbb::concurrent_bounded_queue< T, A >
concurrent_bounded_queue(const allocator_type &a=allocator_type())tbb::concurrent_bounded_queue< T, A >inlineexplicit
concurrent_bounded_queue(const concurrent_bounded_queue &src, const allocator_type &a=allocator_type())tbb::concurrent_bounded_queue< T, A >inline
concurrent_bounded_queue(concurrent_bounded_queue &&src)tbb::concurrent_bounded_queue< T, A >inline
concurrent_bounded_queue(concurrent_bounded_queue &&src, const allocator_type &a) (defined in tbb::concurrent_bounded_queue< T, A >)tbb::concurrent_bounded_queue< T, A >inline
concurrent_bounded_queue(InputIterator begin, InputIterator end, const allocator_type &a=allocator_type())tbb::concurrent_bounded_queue< T, A >inline
const_iterator typedef (defined in tbb::concurrent_bounded_queue< T, A >)tbb::concurrent_bounded_queue< T, A >
const_reference typedeftbb::concurrent_bounded_queue< T, A >
difference_type typedeftbb::concurrent_bounded_queue< T, A >
emplace(Arguments &&...args) (defined in tbb::concurrent_bounded_queue< T, A >)tbb::concurrent_bounded_queue< T, A >inline
empty() const tbb::concurrent_bounded_queue< T, A >inline
get_allocator() const tbb::concurrent_bounded_queue< T, A >inline
internal::concurrent_queue_iterator (defined in tbb::concurrent_bounded_queue< T, A >)tbb::concurrent_bounded_queue< T, A >friend
iterator typedef (defined in tbb::concurrent_bounded_queue< T, A >)tbb::concurrent_bounded_queue< T, A >
pop(T &destination)tbb::concurrent_bounded_queue< T, A >inline
push(const T &source)tbb::concurrent_bounded_queue< T, A >inline
push(T &&source)tbb::concurrent_bounded_queue< T, A >inline
reference typedeftbb::concurrent_bounded_queue< T, A >
set_capacity(size_type new_capacity)tbb::concurrent_bounded_queue< T, A >inline
size() const tbb::concurrent_bounded_queue< T, A >inline
size_type typedeftbb::concurrent_bounded_queue< T, A >
try_emplace(Arguments &&...args) (defined in tbb::concurrent_bounded_queue< T, A >)tbb::concurrent_bounded_queue< T, A >inline
try_pop(T &destination)tbb::concurrent_bounded_queue< T, A >inline
try_push(const T &source)tbb::concurrent_bounded_queue< T, A >inline
try_push(T &&source)tbb::concurrent_bounded_queue< T, A >inline
unsafe_begin() (defined in tbb::concurrent_bounded_queue< T, A >)tbb::concurrent_bounded_queue< T, A >inline
unsafe_begin() const (defined in tbb::concurrent_bounded_queue< T, A >)tbb::concurrent_bounded_queue< T, A >inline
unsafe_end() (defined in tbb::concurrent_bounded_queue< T, A >)tbb::concurrent_bounded_queue< T, A >inline
unsafe_end() const (defined in tbb::concurrent_bounded_queue< T, A >)tbb::concurrent_bounded_queue< T, A >inline
value_type typedeftbb::concurrent_bounded_queue< T, A >
~concurrent_bounded_queue()tbb::concurrent_bounded_queue< T, A >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00277.html b/doc/html/a00277.html new file mode 100644 index 0000000000..99afc096be --- /dev/null +++ b/doc/html/a00277.html @@ -0,0 +1,134 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::concurrent_vector< T, A > Member List
+
+
+ +

This is the complete list of members for tbb::concurrent_vector< T, A >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
allocator_type typedef (defined in tbb::concurrent_vector< T, A >)tbb::concurrent_vector< T, A >
assign(size_type n, const_reference t)tbb::concurrent_vector< T, A >inline
assign(I first, I last)tbb::concurrent_vector< T, A >inline
assign(std::initializer_list< T > init_list)tbb::concurrent_vector< T, A >inline
at(size_type index)tbb::concurrent_vector< T, A >inline
at(size_type index) const tbb::concurrent_vector< T, A >inline
back()tbb::concurrent_vector< T, A >inline
back() const tbb::concurrent_vector< T, A >inline
begin()tbb::concurrent_vector< T, A >inline
begin() const tbb::concurrent_vector< T, A >inline
capacity() const tbb::concurrent_vector< T, A >inline
cbegin() const tbb::concurrent_vector< T, A >inline
cend() const tbb::concurrent_vector< T, A >inline
clear()tbb::concurrent_vector< T, A >inline
concurrent_vector(const allocator_type &a=allocator_type())tbb::concurrent_vector< T, A >inlineexplicit
concurrent_vector(std::initializer_list< T > init_list, const allocator_type &a=allocator_type())tbb::concurrent_vector< T, A >inline
concurrent_vector(const concurrent_vector &vector, const allocator_type &a=allocator_type())tbb::concurrent_vector< T, A >inline
concurrent_vector(concurrent_vector &&source)tbb::concurrent_vector< T, A >inline
concurrent_vector(concurrent_vector &&source, const allocator_type &a) (defined in tbb::concurrent_vector< T, A >)tbb::concurrent_vector< T, A >inline
concurrent_vector(const concurrent_vector< T, M > &vector, const allocator_type &a=allocator_type())tbb::concurrent_vector< T, A >inline
concurrent_vector(size_type n)tbb::concurrent_vector< T, A >inlineexplicit
concurrent_vector(size_type n, const_reference t, const allocator_type &a=allocator_type())tbb::concurrent_vector< T, A >inline
concurrent_vector(I first, I last, const allocator_type &a=allocator_type())tbb::concurrent_vector< T, A >inline
const_iterator typedef (defined in tbb::concurrent_vector< T, A >)tbb::concurrent_vector< T, A >
const_pointer typedef (defined in tbb::concurrent_vector< T, A >)tbb::concurrent_vector< T, A >
const_range_type typedef (defined in tbb::concurrent_vector< T, A >)tbb::concurrent_vector< T, A >
const_reference typedef (defined in tbb::concurrent_vector< T, A >)tbb::concurrent_vector< T, A >
const_reverse_iterator typedef (defined in tbb::concurrent_vector< T, A >)tbb::concurrent_vector< T, A >
const_reverse_iterator typedef (defined in tbb::concurrent_vector< T, A >)tbb::concurrent_vector< T, A >
copy_range(void *dst, const void *p_type_erased_iterator, size_type n) (defined in tbb::concurrent_vector< T, A >)tbb::concurrent_vector< T, A >
crbegin() const tbb::concurrent_vector< T, A >inline
crend() const tbb::concurrent_vector< T, A >inline
difference_type typedef (defined in tbb::concurrent_vector< T, A >)tbb::concurrent_vector< T, A >
emplace_back(Args &&...args)tbb::concurrent_vector< T, A >inline
empty() const tbb::concurrent_vector< T, A >inline
end()tbb::concurrent_vector< T, A >inline
end() const tbb::concurrent_vector< T, A >inline
front()tbb::concurrent_vector< T, A >inline
front() const tbb::concurrent_vector< T, A >inline
get_allocator() const tbb::concurrent_vector< T, A >inline
grow_by(size_type delta)tbb::concurrent_vector< T, A >inline
grow_by(size_type delta, const_reference t)tbb::concurrent_vector< T, A >inline
grow_by(I first, I last)tbb::concurrent_vector< T, A >inline
grow_by(std::initializer_list< T > init_list)tbb::concurrent_vector< T, A >inline
grow_to_at_least(size_type n)tbb::concurrent_vector< T, A >inline
grow_to_at_least(size_type n, const_reference t)tbb::concurrent_vector< T, A >inline
internal::vector_iterator (defined in tbb::concurrent_vector< T, A >)tbb::concurrent_vector< T, A >friend
internal_vector_base() const (defined in tbb::concurrent_vector< T, A >)tbb::concurrent_vector< T, A >inline
iterator typedef (defined in tbb::concurrent_vector< T, A >)tbb::concurrent_vector< T, A >
max_size() const tbb::concurrent_vector< T, A >inline
operator=(const concurrent_vector &vector)tbb::concurrent_vector< T, A >inline
operator=(concurrent_vector &&other)tbb::concurrent_vector< T, A >inline
operator=(const concurrent_vector< T, M > &vector)tbb::concurrent_vector< T, A >inline
operator=(std::initializer_list< T > init_list)tbb::concurrent_vector< T, A >inline
operator[](size_type index)tbb::concurrent_vector< T, A >inline
operator[](size_type index) const tbb::concurrent_vector< T, A >inline
pointer typedef (defined in tbb::concurrent_vector< T, A >)tbb::concurrent_vector< T, A >
push_back(const_reference item)tbb::concurrent_vector< T, A >inline
push_back(T &&item)tbb::concurrent_vector< T, A >inline
range(size_t grainsize=1)tbb::concurrent_vector< T, A >inline
range(size_t grainsize=1) const tbb::concurrent_vector< T, A >inline
range_type typedef (defined in tbb::concurrent_vector< T, A >)tbb::concurrent_vector< T, A >
rbegin()tbb::concurrent_vector< T, A >inline
rbegin() const tbb::concurrent_vector< T, A >inline
reference typedef (defined in tbb::concurrent_vector< T, A >)tbb::concurrent_vector< T, A >
rend()tbb::concurrent_vector< T, A >inline
rend() const tbb::concurrent_vector< T, A >inline
reserve(size_type n)tbb::concurrent_vector< T, A >inline
resize(size_type n)tbb::concurrent_vector< T, A >inline
resize(size_type n, const_reference t)tbb::concurrent_vector< T, A >inline
reverse_iterator typedef (defined in tbb::concurrent_vector< T, A >)tbb::concurrent_vector< T, A >
reverse_iterator typedef (defined in tbb::concurrent_vector< T, A >)tbb::concurrent_vector< T, A >
shrink_to_fit()tbb::concurrent_vector< T, A >
size() const tbb::concurrent_vector< T, A >inline
size_type typedef (defined in tbb::concurrent_vector< T, A >)tbb::concurrent_vector< T, A >
swap(concurrent_vector &vector)tbb::concurrent_vector< T, A >inline
value_type typedef (defined in tbb::concurrent_vector< T, A >)tbb::concurrent_vector< T, A >
~concurrent_vector()tbb::concurrent_vector< T, A >inline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00278.html b/doc/html/a00278.html new file mode 100644 index 0000000000..0b53adabca --- /dev/null +++ b/doc/html/a00278.html @@ -0,0 +1,60 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::concurrent_vector< T, A >::push_back_helper::element_construction_guard Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00279.html b/doc/html/a00279.html new file mode 100644 index 0000000000..2d6ede55ee --- /dev/null +++ b/doc/html/a00279.html @@ -0,0 +1,73 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::mutex Member List
+
+
+ +

This is the complete list of members for tbb::mutex, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
DESTROYED enum value (defined in tbb::mutex)tbb::mutex
HELD enum value (defined in tbb::mutex)tbb::mutex
INITIALIZED enum value (defined in tbb::mutex)tbb::mutex
is_fair_mutex (defined in tbb::mutex)tbb::mutexstatic
is_recursive_mutex (defined in tbb::mutex)tbb::mutexstatic
is_rw_mutex (defined in tbb::mutex)tbb::mutexstatic
lock()tbb::mutexinline
mutex()tbb::mutexinline
native_handle() (defined in tbb::mutex)tbb::mutexinline
native_handle_type typedeftbb::mutex
native_handle_type typedef (defined in tbb::mutex)tbb::mutex
scoped_lock (defined in tbb::mutex)tbb::mutexfriend
set_state(state_t to)tbb::mutexinline
state_t enum name (defined in tbb::mutex)tbb::mutex
try_lock()tbb::mutexinline
unlock()tbb::mutexinline
~mutex() (defined in tbb::mutex)tbb::mutexinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00280.html b/doc/html/a00280.html new file mode 100644 index 0000000000..877525856d --- /dev/null +++ b/doc/html/a00280.html @@ -0,0 +1,63 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::mutex::scoped_lock Member List
+
+
+ +

This is the complete list of members for tbb::mutex::scoped_lock, including all inherited members.

+ + + + + + + + +
acquire(mutex &mutex)tbb::mutex::scoped_lockinline
mutex (defined in tbb::mutex::scoped_lock)tbb::mutex::scoped_lockfriend
release()tbb::mutex::scoped_lockinline
scoped_lock()tbb::mutex::scoped_lockinline
scoped_lock(mutex &mutex)tbb::mutex::scoped_lockinline
try_acquire(mutex &mutex)tbb::mutex::scoped_lockinline
~scoped_lock()tbb::mutex::scoped_lockinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00281.html b/doc/html/a00281.html new file mode 100644 index 0000000000..337934f20c --- /dev/null +++ b/doc/html/a00281.html @@ -0,0 +1,60 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::null_mutex Member List
+
+
+ +

This is the complete list of members for tbb::null_mutex, including all inherited members.

+ + + + + +
is_fair_mutex (defined in tbb::null_mutex)tbb::null_mutexstatic
is_recursive_mutex (defined in tbb::null_mutex)tbb::null_mutexstatic
is_rw_mutex (defined in tbb::null_mutex)tbb::null_mutexstatic
null_mutex() (defined in tbb::null_mutex)tbb::null_mutexinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00282.html b/doc/html/a00282.html new file mode 100644 index 0000000000..2c2c3c50b6 --- /dev/null +++ b/doc/html/a00282.html @@ -0,0 +1,62 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::null_mutex::scoped_lock Member List
+
+
+ +

This is the complete list of members for tbb::null_mutex::scoped_lock, including all inherited members.

+ + + + + + + +
acquire(null_mutex &) (defined in tbb::null_mutex::scoped_lock)tbb::null_mutex::scoped_lockinline
release() (defined in tbb::null_mutex::scoped_lock)tbb::null_mutex::scoped_lockinline
scoped_lock() (defined in tbb::null_mutex::scoped_lock)tbb::null_mutex::scoped_lockinline
scoped_lock(null_mutex &) (defined in tbb::null_mutex::scoped_lock)tbb::null_mutex::scoped_lockinline
try_acquire(null_mutex &) (defined in tbb::null_mutex::scoped_lock)tbb::null_mutex::scoped_lockinline
~scoped_lock() (defined in tbb::null_mutex::scoped_lock)tbb::null_mutex::scoped_lockinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00283.html b/doc/html/a00283.html new file mode 100644 index 0000000000..4cbc79a9b6 --- /dev/null +++ b/doc/html/a00283.html @@ -0,0 +1,60 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::null_rw_mutex Member List
+
+
+ +

This is the complete list of members for tbb::null_rw_mutex, including all inherited members.

+ + + + + +
is_fair_mutex (defined in tbb::null_rw_mutex)tbb::null_rw_mutexstatic
is_recursive_mutex (defined in tbb::null_rw_mutex)tbb::null_rw_mutexstatic
is_rw_mutex (defined in tbb::null_rw_mutex)tbb::null_rw_mutexstatic
null_rw_mutex() (defined in tbb::null_rw_mutex)tbb::null_rw_mutexinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00284.html b/doc/html/a00284.html new file mode 100644 index 0000000000..185e5931d2 --- /dev/null +++ b/doc/html/a00284.html @@ -0,0 +1,64 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::null_rw_mutex::scoped_lock Member List
+
+
+ +

This is the complete list of members for tbb::null_rw_mutex::scoped_lock, including all inherited members.

+ + + + + + + + + +
acquire(null_rw_mutex &, bool=true) (defined in tbb::null_rw_mutex::scoped_lock)tbb::null_rw_mutex::scoped_lockinline
downgrade_to_reader() (defined in tbb::null_rw_mutex::scoped_lock)tbb::null_rw_mutex::scoped_lockinline
release() (defined in tbb::null_rw_mutex::scoped_lock)tbb::null_rw_mutex::scoped_lockinline
scoped_lock() (defined in tbb::null_rw_mutex::scoped_lock)tbb::null_rw_mutex::scoped_lockinline
scoped_lock(null_rw_mutex &, bool=true) (defined in tbb::null_rw_mutex::scoped_lock)tbb::null_rw_mutex::scoped_lockinline
try_acquire(null_rw_mutex &, bool=true) (defined in tbb::null_rw_mutex::scoped_lock)tbb::null_rw_mutex::scoped_lockinline
upgrade_to_writer() (defined in tbb::null_rw_mutex::scoped_lock)tbb::null_rw_mutex::scoped_lockinline
~scoped_lock() (defined in tbb::null_rw_mutex::scoped_lock)tbb::null_rw_mutex::scoped_lockinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00285.html b/doc/html/a00285.html new file mode 100644 index 0000000000..297be21161 --- /dev/null +++ b/doc/html/a00285.html @@ -0,0 +1,58 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::parallel_do_feeder< Item > Member List
+
+
+ +

This is the complete list of members for tbb::parallel_do_feeder< Item >, including all inherited members.

+ + + +
add(const Item &item)tbb::parallel_do_feeder< Item >inline
internal::parallel_do_feeder_impl (defined in tbb::parallel_do_feeder< Item >)tbb::parallel_do_feeder< Item >friend
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00286.html b/doc/html/a00286.html new file mode 100644 index 0000000000..33c2a1ab4a --- /dev/null +++ b/doc/html/a00286.html @@ -0,0 +1,57 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::pre_scan_tag Member List
+
+
+ +

This is the complete list of members for tbb::pre_scan_tag, including all inherited members.

+ + +
is_final_scan() (defined in tbb::pre_scan_tag)tbb::pre_scan_taginlinestatic
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00287.html b/doc/html/a00287.html new file mode 100644 index 0000000000..5c2edd94a3 --- /dev/null +++ b/doc/html/a00287.html @@ -0,0 +1,57 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::final_scan_tag Member List
+
+
+ +

This is the complete list of members for tbb::final_scan_tag, including all inherited members.

+ + +
is_final_scan() (defined in tbb::final_scan_tag)tbb::final_scan_taginlinestatic
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00288.html b/doc/html/a00288.html new file mode 100644 index 0000000000..4f199734bd --- /dev/null +++ b/doc/html/a00288.html @@ -0,0 +1,61 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::parallel_while< Body > Member List
+
+
+ +

This is the complete list of members for tbb::parallel_while< Body >, including all inherited members.

+ + + + + + +
add(const value_type &item)tbb::parallel_while< Body >
parallel_while()tbb::parallel_while< Body >inline
run(Stream &stream, const Body &body)tbb::parallel_while< Body >
value_type typedeftbb::parallel_while< Body >
~parallel_while()tbb::parallel_while< Body >inline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00289.html b/doc/html/a00289.html new file mode 100644 index 0000000000..c16aef7887 --- /dev/null +++ b/doc/html/a00289.html @@ -0,0 +1,61 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::filter Member List
+
+
+ +

This is the complete list of members for tbb::filter, including all inherited members.

+ + + + + + +
exact_exception_propagationtbb::filterprotectedstatic
filter_is_boundtbb::filterprotectedstatic
filter_is_out_of_ordertbb::filterprotectedstatic
filter_is_serialtbb::filterprotectedstatic
filter_may_emit_nulltbb::filterprotectedstatic
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00290.html b/doc/html/a00290.html new file mode 100644 index 0000000000..e8f3c6b79b --- /dev/null +++ b/doc/html/a00290.html @@ -0,0 +1,68 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::thread_bound_filter Member List
+
+
+ +

This is the complete list of members for tbb::thread_bound_filter, including all inherited members.

+ + + + + + + + + + + + + +
end_of_stream enum value (defined in tbb::thread_bound_filter)tbb::thread_bound_filter
exact_exception_propagationtbb::filterprotectedstatic
filter_is_boundtbb::filterprotectedstatic
filter_is_out_of_ordertbb::filterprotectedstatic
filter_is_serialtbb::filterprotectedstatic
filter_may_emit_nulltbb::filterprotectedstatic
item_not_available enum value (defined in tbb::thread_bound_filter)tbb::thread_bound_filter
process_item()tbb::thread_bound_filter
result_type enum name (defined in tbb::thread_bound_filter)tbb::thread_bound_filter
success enum value (defined in tbb::thread_bound_filter)tbb::thread_bound_filter
thread_bound_filter(mode filter_mode) (defined in tbb::thread_bound_filter)tbb::thread_bound_filterinlineprotected
try_process_item()tbb::thread_bound_filter
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00291.html b/doc/html/a00291.html new file mode 100644 index 0000000000..0261e0b0e1 --- /dev/null +++ b/doc/html/a00291.html @@ -0,0 +1,68 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::pipeline Member List
+
+
+ +

This is the complete list of members for tbb::pipeline, including all inherited members.

+ + + + + + + + + + + + + +
add_filter(filter &filter_)tbb::pipeline
clear()tbb::pipeline
filter (defined in tbb::pipeline)tbb::pipelinefriend
internal::pipeline_cleaner (defined in tbb::pipeline)tbb::pipelinefriend
internal::pipeline_root_task (defined in tbb::pipeline)tbb::pipelinefriend
internal::stage_task (defined in tbb::pipeline)tbb::pipelinefriend
pipeline()tbb::pipeline
run(size_t max_number_of_live_tokens)tbb::pipeline
run(size_t max_number_of_live_tokens, tbb::task_group_context &context)tbb::pipeline
tbb::interface6::internal::pipeline_proxy (defined in tbb::pipeline)tbb::pipelinefriend
thread_bound_filter (defined in tbb::pipeline)tbb::pipelinefriend
~pipeline()tbb::pipelinevirtual
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00292.html b/doc/html/a00292.html new file mode 100644 index 0000000000..f027e6712c --- /dev/null +++ b/doc/html/a00292.html @@ -0,0 +1,61 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::queuing_mutex Member List
+
+
+ +

This is the complete list of members for tbb::queuing_mutex, including all inherited members.

+ + + + + + +
internal_construct() (defined in tbb::queuing_mutex)tbb::queuing_mutex
is_fair_mutex (defined in tbb::queuing_mutex)tbb::queuing_mutexstatic
is_recursive_mutex (defined in tbb::queuing_mutex)tbb::queuing_mutexstatic
is_rw_mutex (defined in tbb::queuing_mutex)tbb::queuing_mutexstatic
queuing_mutex()tbb::queuing_mutexinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00293.html b/doc/html/a00293.html new file mode 100644 index 0000000000..f3e4085d50 --- /dev/null +++ b/doc/html/a00293.html @@ -0,0 +1,62 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::queuing_mutex::scoped_lock Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00294.html b/doc/html/a00294.html new file mode 100644 index 0000000000..b0a15519e5 --- /dev/null +++ b/doc/html/a00294.html @@ -0,0 +1,62 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::queuing_rw_mutex Member List
+
+
+ +

This is the complete list of members for tbb::queuing_rw_mutex, including all inherited members.

+ + + + + + + +
internal_construct() (defined in tbb::queuing_rw_mutex)tbb::queuing_rw_mutex
is_fair_mutex (defined in tbb::queuing_rw_mutex)tbb::queuing_rw_mutexstatic
is_recursive_mutex (defined in tbb::queuing_rw_mutex)tbb::queuing_rw_mutexstatic
is_rw_mutex (defined in tbb::queuing_rw_mutex)tbb::queuing_rw_mutexstatic
queuing_rw_mutex()tbb::queuing_rw_mutexinline
~queuing_rw_mutex()tbb::queuing_rw_mutexinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00295.html b/doc/html/a00295.html new file mode 100644 index 0000000000..9239d27364 --- /dev/null +++ b/doc/html/a00295.html @@ -0,0 +1,64 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::queuing_rw_mutex::scoped_lock Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00296.html b/doc/html/a00296.html new file mode 100644 index 0000000000..8f96aa736f --- /dev/null +++ b/doc/html/a00296.html @@ -0,0 +1,68 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::recursive_mutex Member List
+
+
+ +

This is the complete list of members for tbb::recursive_mutex, including all inherited members.

+ + + + + + + + + + + + + +
is_fair_mutex (defined in tbb::recursive_mutex)tbb::recursive_mutexstatic
is_recursive_mutex (defined in tbb::recursive_mutex)tbb::recursive_mutexstatic
is_rw_mutex (defined in tbb::recursive_mutex)tbb::recursive_mutexstatic
lock()tbb::recursive_mutexinline
native_handle() (defined in tbb::recursive_mutex)tbb::recursive_mutexinline
native_handle_type typedeftbb::recursive_mutex
native_handle_type typedef (defined in tbb::recursive_mutex)tbb::recursive_mutex
recursive_mutex()tbb::recursive_mutexinline
scoped_lock (defined in tbb::recursive_mutex)tbb::recursive_mutexfriend
try_lock()tbb::recursive_mutexinline
unlock()tbb::recursive_mutexinline
~recursive_mutex() (defined in tbb::recursive_mutex)tbb::recursive_mutexinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00297.html b/doc/html/a00297.html new file mode 100644 index 0000000000..8c503a5c1d --- /dev/null +++ b/doc/html/a00297.html @@ -0,0 +1,63 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::recursive_mutex::scoped_lock Member List
+
+
+ +

This is the complete list of members for tbb::recursive_mutex::scoped_lock, including all inherited members.

+ + + + + + + + +
acquire(recursive_mutex &mutex)tbb::recursive_mutex::scoped_lockinline
recursive_mutex (defined in tbb::recursive_mutex::scoped_lock)tbb::recursive_mutex::scoped_lockfriend
release()tbb::recursive_mutex::scoped_lockinline
scoped_lock()tbb::recursive_mutex::scoped_lockinline
scoped_lock(recursive_mutex &mutex)tbb::recursive_mutex::scoped_lockinline
try_acquire(recursive_mutex &mutex)tbb::recursive_mutex::scoped_lockinline
~scoped_lock()tbb::recursive_mutex::scoped_lockinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00298.html b/doc/html/a00298.html new file mode 100644 index 0000000000..1f87bb5d60 --- /dev/null +++ b/doc/html/a00298.html @@ -0,0 +1,75 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::scalable_allocator< T > Member List
+
+
+ +

This is the complete list of members for tbb::scalable_allocator< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
address(reference x) const (defined in tbb::scalable_allocator< T >)tbb::scalable_allocator< T >inline
address(const_reference x) const (defined in tbb::scalable_allocator< T >)tbb::scalable_allocator< T >inline
allocate(size_type n, const void *=0)tbb::scalable_allocator< T >inline
const_pointer typedef (defined in tbb::scalable_allocator< T >)tbb::scalable_allocator< T >
const_reference typedef (defined in tbb::scalable_allocator< T >)tbb::scalable_allocator< T >
construct(U *p, Args &&...args) (defined in tbb::scalable_allocator< T >)tbb::scalable_allocator< T >inline
construct(pointer p, value_type &&value) (defined in tbb::scalable_allocator< T >)tbb::scalable_allocator< T >inline
construct(pointer p, const value_type &value) (defined in tbb::scalable_allocator< T >)tbb::scalable_allocator< T >inline
deallocate(pointer p, size_type)tbb::scalable_allocator< T >inline
destroy(pointer p) (defined in tbb::scalable_allocator< T >)tbb::scalable_allocator< T >inline
difference_type typedef (defined in tbb::scalable_allocator< T >)tbb::scalable_allocator< T >
max_size() const tbb::scalable_allocator< T >inline
pointer typedef (defined in tbb::scalable_allocator< T >)tbb::scalable_allocator< T >
reference typedef (defined in tbb::scalable_allocator< T >)tbb::scalable_allocator< T >
scalable_allocator() (defined in tbb::scalable_allocator< T >)tbb::scalable_allocator< T >inline
scalable_allocator(const scalable_allocator &) (defined in tbb::scalable_allocator< T >)tbb::scalable_allocator< T >inline
scalable_allocator(const scalable_allocator< U > &) (defined in tbb::scalable_allocator< T >)tbb::scalable_allocator< T >inline
size_type typedef (defined in tbb::scalable_allocator< T >)tbb::scalable_allocator< T >
value_type typedef (defined in tbb::scalable_allocator< T >)tbb::scalable_allocator< T >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00299.html b/doc/html/a00299.html new file mode 100644 index 0000000000..33cd7fa193 --- /dev/null +++ b/doc/html/a00299.html @@ -0,0 +1,57 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::scalable_allocator< T >::rebind< U > Member List
+
+
+ +

This is the complete list of members for tbb::scalable_allocator< T >::rebind< U >, including all inherited members.

+ + +
other typedef (defined in tbb::scalable_allocator< T >::rebind< U >)tbb::scalable_allocator< T >::rebind< U >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00300.html b/doc/html/a00300.html new file mode 100644 index 0000000000..8a823ee782 --- /dev/null +++ b/doc/html/a00300.html @@ -0,0 +1,59 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::scalable_allocator< void > Member List
+
+
+ +

This is the complete list of members for tbb::scalable_allocator< void >, including all inherited members.

+ + + + +
const_pointer typedef (defined in tbb::scalable_allocator< void >)tbb::scalable_allocator< void >
pointer typedef (defined in tbb::scalable_allocator< void >)tbb::scalable_allocator< void >
value_type typedef (defined in tbb::scalable_allocator< void >)tbb::scalable_allocator< void >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00301.html b/doc/html/a00301.html new file mode 100644 index 0000000000..cbb066a649 --- /dev/null +++ b/doc/html/a00301.html @@ -0,0 +1,57 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::scalable_allocator< void >::rebind< U > Member List
+
+
+ +

This is the complete list of members for tbb::scalable_allocator< void >::rebind< U >, including all inherited members.

+ + +
other typedef (defined in tbb::scalable_allocator< void >::rebind< U >)tbb::scalable_allocator< void >::rebind< U >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00302.html b/doc/html/a00302.html new file mode 100644 index 0000000000..1c613aaeba --- /dev/null +++ b/doc/html/a00302.html @@ -0,0 +1,65 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::spin_mutex Member List
+
+
+ +

This is the complete list of members for tbb::spin_mutex, including all inherited members.

+ + + + + + + + + + +
internal_construct()tbb::spin_mutex
is_fair_mutex (defined in tbb::spin_mutex)tbb::spin_mutexstatic
is_recursive_mutex (defined in tbb::spin_mutex)tbb::spin_mutexstatic
is_rw_mutex (defined in tbb::spin_mutex)tbb::spin_mutexstatic
lock()tbb::spin_mutexinline
scoped_lock (defined in tbb::spin_mutex)tbb::spin_mutexfriend
spin_mutex()tbb::spin_mutexinline
try_lock()tbb::spin_mutexinline
unlock()tbb::spin_mutexinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00303.html b/doc/html/a00303.html new file mode 100644 index 0000000000..94511e1040 --- /dev/null +++ b/doc/html/a00303.html @@ -0,0 +1,63 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::spin_mutex::scoped_lock Member List
+
+
+ +

This is the complete list of members for tbb::spin_mutex::scoped_lock, including all inherited members.

+ + + + + + + + +
acquire(spin_mutex &m)tbb::spin_mutex::scoped_lockinline
release()tbb::spin_mutex::scoped_lockinline
scoped_lock()tbb::spin_mutex::scoped_lockinline
scoped_lock(spin_mutex &m)tbb::spin_mutex::scoped_lockinline
spin_mutex (defined in tbb::spin_mutex::scoped_lock)tbb::spin_mutex::scoped_lockfriend
try_acquire(spin_mutex &m)tbb::spin_mutex::scoped_lockinline
~scoped_lock()tbb::spin_mutex::scoped_lockinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00304.html b/doc/html/a00304.html new file mode 100644 index 0000000000..973fc406bc --- /dev/null +++ b/doc/html/a00304.html @@ -0,0 +1,73 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::spin_rw_mutex_v3 Member List
+
+
+ +

This is the complete list of members for tbb::spin_rw_mutex_v3, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
BUSY (defined in tbb::spin_rw_mutex_v3)tbb::spin_rw_mutex_v3protectedstatic
is_fair_mutex (defined in tbb::spin_rw_mutex_v3)tbb::spin_rw_mutex_v3static
is_recursive_mutex (defined in tbb::spin_rw_mutex_v3)tbb::spin_rw_mutex_v3static
is_rw_mutex (defined in tbb::spin_rw_mutex_v3)tbb::spin_rw_mutex_v3static
lock()tbb::spin_rw_mutex_v3inline
lock_read()tbb::spin_rw_mutex_v3inline
ONE_READER (defined in tbb::spin_rw_mutex_v3)tbb::spin_rw_mutex_v3protectedstatic
READERS (defined in tbb::spin_rw_mutex_v3)tbb::spin_rw_mutex_v3protectedstatic
spin_rw_mutex_v3()tbb::spin_rw_mutex_v3inline
statetbb::spin_rw_mutex_v3protected
state_t typedef (defined in tbb::spin_rw_mutex_v3)tbb::spin_rw_mutex_v3protected
try_lock()tbb::spin_rw_mutex_v3inline
try_lock_read()tbb::spin_rw_mutex_v3inline
unlock()tbb::spin_rw_mutex_v3inline
WRITER (defined in tbb::spin_rw_mutex_v3)tbb::spin_rw_mutex_v3protectedstatic
WRITER_PENDING (defined in tbb::spin_rw_mutex_v3)tbb::spin_rw_mutex_v3protectedstatic
~spin_rw_mutex_v3()tbb::spin_rw_mutex_v3inline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00305.html b/doc/html/a00305.html new file mode 100644 index 0000000000..698eb3061d --- /dev/null +++ b/doc/html/a00305.html @@ -0,0 +1,67 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::spin_rw_mutex_v3::scoped_lock Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00306.html b/doc/html/a00306.html new file mode 100644 index 0000000000..848084614a --- /dev/null +++ b/doc/html/a00306.html @@ -0,0 +1,61 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::task_handle< F > Member List
+
+
+ +

This is the complete list of members for tbb::task_handle< F >, including all inherited members.

+ + + + + + +
internal::task_handle_task (defined in tbb::task_handle< F >)tbb::task_handle< F >friend
operator()() const (defined in tbb::task_handle< F >)tbb::task_handle< F >inline
structured_task_group (defined in tbb::task_handle< F >)tbb::task_handle< F >friend
task_group (defined in tbb::task_handle< F >)tbb::task_handle< F >friend
task_handle(const F &f) (defined in tbb::task_handle< F >)tbb::task_handle< F >inline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00307.html b/doc/html/a00307.html new file mode 100644 index 0000000000..ac3f3e8034 --- /dev/null +++ b/doc/html/a00307.html @@ -0,0 +1,71 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::task_group Member List
+
+
+ +

This is the complete list of members for tbb::task_group, including all inherited members.

+ + + + + + + + + + + + + + + + +
cancel() (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinline
internal_run(F &f) (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinlineprotected
internal_run_and_wait(F &f) (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinlineprotected
is_canceling() (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinline
my_context (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseprotected
my_root (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseprotected
owner() (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinlineprotected
run(task_handle< F > &h) (defined in tbb::task_group)tbb::task_groupinline
run(const F &f) (defined in tbb::task_group)tbb::task_groupinline
run_and_wait(const F &f) (defined in tbb::task_group)tbb::task_groupinline
run_and_wait(task_handle< F > &h) (defined in tbb::task_group)tbb::task_groupinline
task_group() (defined in tbb::task_group)tbb::task_groupinline
task_group_base(uintptr_t traits=0) (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinline
wait() (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinline
~task_group_base() __TBB_NOEXCEPT(false) (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00308.html b/doc/html/a00308.html new file mode 100644 index 0000000000..a828fbbf4a --- /dev/null +++ b/doc/html/a00308.html @@ -0,0 +1,68 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::structured_task_group Member List
+
+
+ +

This is the complete list of members for tbb::structured_task_group, including all inherited members.

+ + + + + + + + + + + + + +
cancel() (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinline
internal_run(F &f) (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinlineprotected
internal_run_and_wait(F &f) (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinlineprotected
is_canceling() (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinline
my_context (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseprotected
my_root (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseprotected
owner() (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinlineprotected
run(task_handle< F > &h) (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinline
run_and_wait(task_handle< F > &h) (defined in tbb::structured_task_group)tbb::structured_task_groupinline
task_group_base(uintptr_t traits=0) (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinline
wait() (defined in tbb::structured_task_group)tbb::structured_task_groupinline
~task_group_base() __TBB_NOEXCEPT(false) (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00309.html b/doc/html/a00309.html new file mode 100644 index 0000000000..524e92d6d5 --- /dev/null +++ b/doc/html/a00309.html @@ -0,0 +1,67 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::task_scheduler_init Member List
+
+
+ +

This is the complete list of members for tbb::task_scheduler_init, including all inherited members.

+ + + + + + + + + + + + +
automatictbb::task_scheduler_initstatic
default_num_threads()tbb::task_scheduler_initstatic
deferredtbb::task_scheduler_initstatic
if(wait_workers_in_terminate) my_scheduler (defined in tbb::task_scheduler_init)tbb::task_scheduler_init
initialize(int number_of_threads=automatic)tbb::task_scheduler_init
initialize(int number_of_threads, stack_size_type thread_stack_size)tbb::task_scheduler_init
initialize(number_of_threads, thread_stack_size) (defined in tbb::task_scheduler_init)tbb::task_scheduler_init
is_active() const tbb::task_scheduler_initinline
terminate()tbb::task_scheduler_init
thread_stack_sizetbb::task_scheduler_init
~task_scheduler_init()tbb::task_scheduler_initinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00310.html b/doc/html/a00310.html new file mode 100644 index 0000000000..75d49edef2 --- /dev/null +++ b/doc/html/a00310.html @@ -0,0 +1,79 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::tbb_allocator< T > Member List
+
+
+ +

This is the complete list of members for tbb::tbb_allocator< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
address(reference x) const (defined in tbb::tbb_allocator< T >)tbb::tbb_allocator< T >inline
address(const_reference x) const (defined in tbb::tbb_allocator< T >)tbb::tbb_allocator< T >inline
allocate(size_type n, const void *=0)tbb::tbb_allocator< T >inline
allocator_type()tbb::tbb_allocator< T >inlinestatic
const_pointer typedef (defined in tbb::tbb_allocator< T >)tbb::tbb_allocator< T >
const_reference typedef (defined in tbb::tbb_allocator< T >)tbb::tbb_allocator< T >
construct(U *p, Args &&...args)tbb::tbb_allocator< T >inline
construct(pointer p, value_type &&value) (defined in tbb::tbb_allocator< T >)tbb::tbb_allocator< T >inline
construct(pointer p, const value_type &value) (defined in tbb::tbb_allocator< T >)tbb::tbb_allocator< T >inline
deallocate(pointer p, size_type)tbb::tbb_allocator< T >inline
destroy(pointer p)tbb::tbb_allocator< T >inline
difference_type typedef (defined in tbb::tbb_allocator< T >)tbb::tbb_allocator< T >
malloc_type enum nametbb::tbb_allocator< T >
max_size() const tbb::tbb_allocator< T >inline
pointer typedef (defined in tbb::tbb_allocator< T >)tbb::tbb_allocator< T >
reference typedef (defined in tbb::tbb_allocator< T >)tbb::tbb_allocator< T >
scalable enum value (defined in tbb::tbb_allocator< T >)tbb::tbb_allocator< T >
size_type typedef (defined in tbb::tbb_allocator< T >)tbb::tbb_allocator< T >
standard enum value (defined in tbb::tbb_allocator< T >)tbb::tbb_allocator< T >
tbb_allocator() (defined in tbb::tbb_allocator< T >)tbb::tbb_allocator< T >inline
tbb_allocator(const tbb_allocator &) (defined in tbb::tbb_allocator< T >)tbb::tbb_allocator< T >inline
tbb_allocator(const tbb_allocator< U > &) (defined in tbb::tbb_allocator< T >)tbb::tbb_allocator< T >inline
value_type typedef (defined in tbb::tbb_allocator< T >)tbb::tbb_allocator< T >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00311.html b/doc/html/a00311.html new file mode 100644 index 0000000000..08dca6b671 --- /dev/null +++ b/doc/html/a00311.html @@ -0,0 +1,57 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::tbb_allocator< T >::rebind< U > Member List
+
+
+ +

This is the complete list of members for tbb::tbb_allocator< T >::rebind< U >, including all inherited members.

+ + +
other typedef (defined in tbb::tbb_allocator< T >::rebind< U >)tbb::tbb_allocator< T >::rebind< U >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00312.html b/doc/html/a00312.html new file mode 100644 index 0000000000..566fe806ad --- /dev/null +++ b/doc/html/a00312.html @@ -0,0 +1,59 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::tbb_allocator< void > Member List
+
+
+ +

This is the complete list of members for tbb::tbb_allocator< void >, including all inherited members.

+ + + + +
const_pointer typedef (defined in tbb::tbb_allocator< void >)tbb::tbb_allocator< void >
pointer typedef (defined in tbb::tbb_allocator< void >)tbb::tbb_allocator< void >
value_type typedef (defined in tbb::tbb_allocator< void >)tbb::tbb_allocator< void >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00313.html b/doc/html/a00313.html new file mode 100644 index 0000000000..a5b2fcc7b0 --- /dev/null +++ b/doc/html/a00313.html @@ -0,0 +1,57 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::tbb_allocator< void >::rebind< U > Member List
+
+
+ +

This is the complete list of members for tbb::tbb_allocator< void >::rebind< U >, including all inherited members.

+ + +
other typedef (defined in tbb::tbb_allocator< void >::rebind< U >)tbb::tbb_allocator< void >::rebind< U >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00314.html b/doc/html/a00314.html new file mode 100644 index 0000000000..ee06e5d88b --- /dev/null +++ b/doc/html/a00314.html @@ -0,0 +1,68 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::zero_allocator< T, Allocator > Member List
+
+
+ +

This is the complete list of members for tbb::zero_allocator< T, Allocator >, including all inherited members.

+ + + + + + + + + + + + + +
allocate(const size_type n, const void *hint=0) (defined in tbb::zero_allocator< T, Allocator >)tbb::zero_allocator< T, Allocator >inline
base_allocator_type typedef (defined in tbb::zero_allocator< T, Allocator >)tbb::zero_allocator< T, Allocator >
const_pointer typedef (defined in tbb::zero_allocator< T, Allocator >)tbb::zero_allocator< T, Allocator >
const_reference typedef (defined in tbb::zero_allocator< T, Allocator >)tbb::zero_allocator< T, Allocator >
difference_type typedef (defined in tbb::zero_allocator< T, Allocator >)tbb::zero_allocator< T, Allocator >
pointer typedef (defined in tbb::zero_allocator< T, Allocator >)tbb::zero_allocator< T, Allocator >
reference typedef (defined in tbb::zero_allocator< T, Allocator >)tbb::zero_allocator< T, Allocator >
size_type typedef (defined in tbb::zero_allocator< T, Allocator >)tbb::zero_allocator< T, Allocator >
value_type typedef (defined in tbb::zero_allocator< T, Allocator >)tbb::zero_allocator< T, Allocator >
zero_allocator() (defined in tbb::zero_allocator< T, Allocator >)tbb::zero_allocator< T, Allocator >inline
zero_allocator(const zero_allocator &a) (defined in tbb::zero_allocator< T, Allocator >)tbb::zero_allocator< T, Allocator >inline
zero_allocator(const zero_allocator< U > &a) (defined in tbb::zero_allocator< T, Allocator >)tbb::zero_allocator< T, Allocator >inline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00315.html b/doc/html/a00315.html new file mode 100644 index 0000000000..0fbac07bfc --- /dev/null +++ b/doc/html/a00315.html @@ -0,0 +1,57 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::zero_allocator< T, Allocator >::rebind< U > Member List
+
+
+ +

This is the complete list of members for tbb::zero_allocator< T, Allocator >::rebind< U >, including all inherited members.

+ + +
other typedef (defined in tbb::zero_allocator< T, Allocator >::rebind< U >)tbb::zero_allocator< T, Allocator >::rebind< U >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00316.html b/doc/html/a00316.html new file mode 100644 index 0000000000..1dde030485 --- /dev/null +++ b/doc/html/a00316.html @@ -0,0 +1,60 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::zero_allocator< void, Allocator > Member List
+
+
+ +

This is the complete list of members for tbb::zero_allocator< void, Allocator >, including all inherited members.

+ + + + + +
base_allocator_type typedef (defined in tbb::zero_allocator< void, Allocator >)tbb::zero_allocator< void, Allocator >
const_pointer typedef (defined in tbb::zero_allocator< void, Allocator >)tbb::zero_allocator< void, Allocator >
pointer typedef (defined in tbb::zero_allocator< void, Allocator >)tbb::zero_allocator< void, Allocator >
value_type typedef (defined in tbb::zero_allocator< void, Allocator >)tbb::zero_allocator< void, Allocator >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00317.html b/doc/html/a00317.html new file mode 100644 index 0000000000..890233fe26 --- /dev/null +++ b/doc/html/a00317.html @@ -0,0 +1,57 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::zero_allocator< void, Allocator >::rebind< U > Member List
+
+
+ +

This is the complete list of members for tbb::zero_allocator< void, Allocator >::rebind< U >, including all inherited members.

+ + +
other typedef (defined in tbb::zero_allocator< void, Allocator >::rebind< U >)tbb::zero_allocator< void, Allocator >::rebind< U >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00318.html b/doc/html/a00318.html new file mode 100644 index 0000000000..fc20431863 --- /dev/null +++ b/doc/html/a00318.html @@ -0,0 +1,58 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::bad_last_alloc Member List
+
+
+ +

This is the complete list of members for tbb::bad_last_alloc, including all inherited members.

+ + + +
what() const (defined in tbb::bad_last_alloc)tbb::bad_last_alloc
~bad_last_alloc() (defined in tbb::bad_last_alloc)tbb::bad_last_allocinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00319.html b/doc/html/a00319.html new file mode 100644 index 0000000000..2c8940b37c --- /dev/null +++ b/doc/html/a00319.html @@ -0,0 +1,57 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::improper_lock Member List
+
+
+ +

This is the complete list of members for tbb::improper_lock, including all inherited members.

+ + +
what() const (defined in tbb::improper_lock)tbb::improper_lock
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00320.html b/doc/html/a00320.html new file mode 100644 index 0000000000..fb3767757e --- /dev/null +++ b/doc/html/a00320.html @@ -0,0 +1,57 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::user_abort Member List
+
+
+ +

This is the complete list of members for tbb::user_abort, including all inherited members.

+ + +
what() const (defined in tbb::user_abort)tbb::user_abort
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00321.html b/doc/html/a00321.html new file mode 100644 index 0000000000..a0999d79f1 --- /dev/null +++ b/doc/html/a00321.html @@ -0,0 +1,57 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::missing_wait Member List
+
+
+ +

This is the complete list of members for tbb::missing_wait, including all inherited members.

+ + +
what() const (defined in tbb::missing_wait)tbb::missing_wait
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00322.html b/doc/html/a00322.html new file mode 100644 index 0000000000..5f51da8397 --- /dev/null +++ b/doc/html/a00322.html @@ -0,0 +1,57 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::invalid_multiple_scheduling Member List
+
+
+ +

This is the complete list of members for tbb::invalid_multiple_scheduling, including all inherited members.

+ + +
what() const (defined in tbb::invalid_multiple_scheduling)tbb::invalid_multiple_scheduling
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00323.html b/doc/html/a00323.html new file mode 100644 index 0000000000..3f6d9847a1 --- /dev/null +++ b/doc/html/a00323.html @@ -0,0 +1,63 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::tbb_exception Member List
+
+
+ +

This is the complete list of members for tbb::tbb_exception, including all inherited members.

+ + + + + + + + +
destroy()=0tbb::tbb_exceptionpure virtual
move()=0tbb::tbb_exceptionpure virtual
name() const =0tbb::tbb_exceptionpure virtual
operator delete(void *p)tbb::tbb_exceptioninline
throw_self()=0tbb::tbb_exceptionpure virtual
what() const =0tbb::tbb_exceptionpure virtual
~tbb_exception() (defined in tbb::tbb_exception)tbb::tbb_exceptioninline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00324.html b/doc/html/a00324.html new file mode 100644 index 0000000000..6698c35e34 --- /dev/null +++ b/doc/html/a00324.html @@ -0,0 +1,69 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::captured_exception Member List
+
+
+ +

This is the complete list of members for tbb::captured_exception, including all inherited members.

+ + + + + + + + + + + + + + +
captured_exception(const captured_exception &src) (defined in tbb::captured_exception)tbb::captured_exceptioninline
captured_exception(const char *name_, const char *info) (defined in tbb::captured_exception)tbb::captured_exceptioninline
clear() (defined in tbb::captured_exception)tbb::captured_exception
destroy()tbb::captured_exceptionvirtual
move()tbb::captured_exceptionvirtual
name() const tbb::captured_exceptionvirtual
operator delete(void *p)tbb::tbb_exceptioninline
operator=(const captured_exception &src) (defined in tbb::captured_exception)tbb::captured_exceptioninline
set(const char *name, const char *info) (defined in tbb::captured_exception)tbb::captured_exception
throw_self()tbb::captured_exceptioninlinevirtual
what() const tbb::captured_exceptionvirtual
~captured_exception() (defined in tbb::captured_exception)tbb::captured_exception
~tbb_exception() (defined in tbb::tbb_exception)tbb::tbb_exceptioninline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00325.html b/doc/html/a00325.html new file mode 100644 index 0000000000..824268f0c0 --- /dev/null +++ b/doc/html/a00325.html @@ -0,0 +1,70 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::movable_exception< ExceptionData > Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00326.html b/doc/html/a00326.html new file mode 100644 index 0000000000..0f87fe170c --- /dev/null +++ b/doc/html/a00326.html @@ -0,0 +1,60 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::tick_count Member List
+
+
+ +

This is the complete list of members for tbb::tick_count, including all inherited members.

+ + + + + +
now()tbb::tick_countinlinestatic
operator-(const tick_count &t1, const tick_count &t0)tbb::tick_countfriend
resolution()tbb::tick_countinlinestatic
tick_count()tbb::tick_countinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00327.html b/doc/html/a00327.html new file mode 100644 index 0000000000..e1355ac550 --- /dev/null +++ b/doc/html/a00327.html @@ -0,0 +1,65 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::tick_count::interval_t Member List
+
+
+ +

This is the complete list of members for tbb::tick_count::interval_t, including all inherited members.

+ + + + + + + + + + +
interval_t()tbb::tick_count::interval_tinline
interval_t(double sec)tbb::tick_count::interval_tinlineexplicit
operator+(const interval_t &i, const interval_t &j)tbb::tick_count::interval_tfriend
operator+=(const interval_t &i)tbb::tick_count::interval_tinline
operator-(const tick_count &t1, const tick_count &t0)tbb::tick_count::interval_tfriend
operator-(const interval_t &i, const interval_t &j)tbb::tick_count::interval_tfriend
operator-=(const interval_t &i)tbb::tick_count::interval_tinline
seconds() const tbb::tick_count::interval_tinline
tbb::tick_count (defined in tbb::tick_count::interval_t)tbb::tick_count::interval_tfriend
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00328.html b/doc/html/a00328.html new file mode 100644 index 0000000000..f542d9ecb7 --- /dev/null +++ b/doc/html/a00328.html @@ -0,0 +1,72 @@ + + + + + + +Member List + + + + + + +
+ + + + + +
+
+
+
tbb::flow::interface8::sender< T > Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::sender< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + +
built_successors()=0 (defined in tbb::flow::interface8::sender< T >)tbb::flow::interface8::sender< T >pure virtual
built_successors_type typedeftbb::flow::interface8::sender< T >
copy_successors(successor_list_type &)=0 (defined in tbb::flow::interface8::sender< T >)tbb::flow::interface8::sender< T >pure virtual
internal_add_built_successor(successor_type &)=0 (defined in tbb::flow::interface8::sender< T >)tbb::flow::interface8::sender< T >pure virtual
internal_delete_built_successor(successor_type &)=0 (defined in tbb::flow::interface8::sender< T >)tbb::flow::interface8::sender< T >pure virtual
output_type typedeftbb::flow::interface8::sender< T >
register_successor(successor_type &r)=0tbb::flow::interface8::sender< T >pure virtual
remove_successor(successor_type &r)=0tbb::flow::interface8::sender< T >pure virtual
successor_count()=0 (defined in tbb::flow::interface8::sender< T >)tbb::flow::interface8::sender< T >pure virtual
successor_list_type typedef (defined in tbb::flow::interface8::sender< T >)tbb::flow::interface8::sender< T >
successor_type typedeftbb::flow::interface8::sender< T >
try_consume()tbb::flow::interface8::sender< T >inlinevirtual
try_get(T &)tbb::flow::interface8::sender< T >inlinevirtual
try_release()tbb::flow::interface8::sender< T >inlinevirtual
try_reserve(T &)tbb::flow::interface8::sender< T >inlinevirtual
~sender() (defined in tbb::flow::interface8::sender< T >)tbb::flow::interface8::sender< T >inlinevirtual
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00329.html b/doc/html/a00329.html new file mode 100644 index 0000000000..e61c122f8b --- /dev/null +++ b/doc/html/a00329.html @@ -0,0 +1,77 @@ + + + + + + +Member List + + + + + + +
+ + + + + +
+
+
+
tbb::flow::interface8::receiver< T > Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::receiver< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
built_predecessors()=0 (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >pure virtual
built_predecessors_type typedef (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >
copy_predecessors(predecessor_list_type &)=0 (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >pure virtual
input_type typedeftbb::flow::interface8::receiver< T >
internal::broadcast_cache (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >friend
internal::round_robin_cache (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >friend
internal::successor_cache (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >friend
internal_add_built_predecessor(predecessor_type &)=0 (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >pure virtual
internal_delete_built_predecessor(predecessor_type &)=0 (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >pure virtual
is_continue_receiver() (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >inlineprotectedvirtual
limiter_node classtbb::flow::interface8::receiver< T >friend
predecessor_count()=0 (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >pure virtual
predecessor_list_type typedef (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >
predecessor_type typedeftbb::flow::interface8::receiver< T >
register_predecessor(predecessor_type &)tbb::flow::interface8::receiver< T >inlinevirtual
remove_predecessor(predecessor_type &)tbb::flow::interface8::receiver< T >inlinevirtual
reset_receiver(reset_flags f=rf_reset_protocol)=0 (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >protectedpure virtual
run_and_put_task classtbb::flow::interface8::receiver< T >friend
try_put(const T &t)tbb::flow::interface8::receiver< T >inline
try_put_task(const T &t)=0 (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >protectedpure virtual
~receiver()tbb::flow::interface8::receiver< T >inlinevirtual
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00330.html b/doc/html/a00330.html new file mode 100644 index 0000000000..656284786d --- /dev/null +++ b/doc/html/a00330.html @@ -0,0 +1,105 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::limiter_node< T > Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::limiter_node< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
built_predecessors() (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >inlinevirtual
built_predecessors_type typedef (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >
built_successors() (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >inlinevirtual
built_successors_type typedef (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >
copy_predecessors(predecessor_list_type &v) (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >inline
copy_predecessors(predecessor_list_type &)=0 (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >pure virtual
copy_successors(successor_list_type &v) (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >inlinevirtual
decrementtbb::flow::interface8::limiter_node< T >
extract() (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >inlinevirtual
graph_node(graph &g) (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinline
input_type typedef (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >
internal::broadcast_cache (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >friend
internal::decrementer< limiter_node< T > > (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >friend
internal::forward_task_bypass< limiter_node< T > > (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >friend
internal::round_robin_cache (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >friend
internal_add_built_predecessor(sender< output_type > &src) (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >inlinevirtual
internal_add_built_successor(receiver< output_type > &src) (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >inlinevirtual
internal_delete_built_predecessor(sender< output_type > &src) (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >inlinevirtual
internal_delete_built_successor(receiver< output_type > &src) (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >inlinevirtual
is_continue_receiver() (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >inlineprotectedvirtual
limiter_node(graph &g, size_t threshold, int num_decrement_predecessors=0)tbb::flow::interface8::limiter_node< T >inline
limiter_node(const limiter_node &src)tbb::flow::interface8::limiter_node< T >inline
my_graph (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
next (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
output_type typedef (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >
predecessor_count() (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >inlinevirtual
predecessor_list_type typedef (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >
predecessor_type typedef (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >
prev (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
register_predecessor(predecessor_type &src)tbb::flow::interface8::limiter_node< T >inlinevirtual
register_successor(receiver< output_type > &r)tbb::flow::interface8::limiter_node< T >inlinevirtual
remove_predecessor(predecessor_type &src)tbb::flow::interface8::limiter_node< T >inlinevirtual
remove_successor(receiver< output_type > &r)tbb::flow::interface8::limiter_node< T >inlinevirtual
reset_node(reset_flags f) (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >inlineprotectedvirtual
reset_receiver(reset_flags) (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >inlineprotectedvirtual
run_and_put_task (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >friend
set_name(const char *name) (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >inlinevirtual
successor_count() (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >inlinevirtual
successor_list_type typedef (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >
successor_type typedef (defined in tbb::flow::interface8::limiter_node< T >)tbb::flow::interface8::limiter_node< T >
try_consume()tbb::flow::interface8::sender< T >inlinevirtual
try_get(T &)tbb::flow::interface8::sender< T >inlinevirtual
try_put(const T &t)tbb::flow::interface8::receiver< T >inline
try_put_task(const T &t)tbb::flow::interface8::limiter_node< T >inlineprotectedvirtual
try_release()tbb::flow::interface8::sender< T >inlinevirtual
try_reserve(T &)tbb::flow::interface8::sender< T >inlinevirtual
~graph_node() (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinlinevirtual
~receiver()tbb::flow::interface8::receiver< T >inlinevirtual
~sender() (defined in tbb::flow::interface8::sender< T >)tbb::flow::interface8::sender< T >inlinevirtual
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00331.html b/doc/html/a00331.html new file mode 100644 index 0000000000..c539d932e5 --- /dev/null +++ b/doc/html/a00331.html @@ -0,0 +1,86 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::continue_receiver Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::continue_receiver, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
built_predecessors() (defined in tbb::flow::interface8::continue_receiver)tbb::flow::interface8::continue_receiverinlinevirtual
built_predecessors_type typedef (defined in tbb::flow::interface8::continue_receiver)tbb::flow::interface8::continue_receiver
continue_receiver(int number_of_predecessors=0)tbb::flow::interface8::continue_receiverinline
continue_receiver(const continue_receiver &src)tbb::flow::interface8::continue_receiverinline
copy_predecessors(predecessor_list_type &v) (defined in tbb::flow::interface8::continue_receiver)tbb::flow::interface8::continue_receiverinlinevirtual
execute()=0tbb::flow::interface8::continue_receiverprotectedpure virtual
input_type typedeftbb::flow::interface8::continue_receiver
internal::broadcast_cache (defined in tbb::flow::interface8::continue_receiver)tbb::flow::interface8::continue_receiverfriend
internal::round_robin_cache (defined in tbb::flow::interface8::continue_receiver)tbb::flow::interface8::continue_receiverfriend
internal::successor_cache (defined in tbb::flow::interface8::continue_receiver)tbb::flow::interface8::continue_receiverfriend
internal_add_built_predecessor(predecessor_type &s) (defined in tbb::flow::interface8::continue_receiver)tbb::flow::interface8::continue_receiverinlinevirtual
internal_delete_built_predecessor(predecessor_type &s) (defined in tbb::flow::interface8::continue_receiver)tbb::flow::interface8::continue_receiverinlinevirtual
is_continue_receiver() (defined in tbb::flow::interface8::continue_receiver)tbb::flow::interface8::continue_receiverinlineprotectedvirtual
limiter_node (defined in tbb::flow::interface8::continue_receiver)tbb::flow::interface8::continue_receiverfriend
my_built_predecessors (defined in tbb::flow::interface8::continue_receiver)tbb::flow::interface8::continue_receiverprotected
my_current_count (defined in tbb::flow::interface8::continue_receiver)tbb::flow::interface8::continue_receiverprotected
my_initial_predecessor_count (defined in tbb::flow::interface8::continue_receiver)tbb::flow::interface8::continue_receiverprotected
my_mutex (defined in tbb::flow::interface8::continue_receiver)tbb::flow::interface8::continue_receiverprotected
my_predecessor_count (defined in tbb::flow::interface8::continue_receiver)tbb::flow::interface8::continue_receiverprotected
predecessor_count() (defined in tbb::flow::interface8::continue_receiver)tbb::flow::interface8::continue_receiverinlinevirtual
predecessor_list_type typedef (defined in tbb::flow::interface8::continue_receiver)tbb::flow::interface8::continue_receiver
predecessor_type typedeftbb::flow::interface8::continue_receiver
register_predecessor(predecessor_type &)tbb::flow::interface8::continue_receiverinlinevirtual
remove_predecessor(predecessor_type &)tbb::flow::interface8::continue_receiverinlinevirtual
reset_receiver(reset_flags f) (defined in tbb::flow::interface8::continue_receiver)tbb::flow::interface8::continue_receiverinlineprotectedvirtual
run_and_put_task (defined in tbb::flow::interface8::continue_receiver)tbb::flow::interface8::continue_receiverfriend
try_put(const continue_msg &t)tbb::flow::interface8::receiver< continue_msg >inline
try_put_task(const input_type &) (defined in tbb::flow::interface8::continue_receiver)tbb::flow::interface8::continue_receiverinlineprotectedvirtual
~continue_receiver()tbb::flow::interface8::continue_receiverinlinevirtual
~receiver()tbb::flow::interface8::receiver< continue_msg >inlinevirtual
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00332.html b/doc/html/a00332.html new file mode 100644 index 0000000000..096b1411e5 --- /dev/null +++ b/doc/html/a00332.html @@ -0,0 +1,73 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType > Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
const_reference typedef (defined in tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >)tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >
graph (defined in tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >)tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >friend
graph_iterator()tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >inline
graph_iterator(const graph_iterator &other)tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >inline
graph_node (defined in tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >)tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >friend
iterator_category typedef (defined in tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >)tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >
operator!=(const graph_iterator &other) const tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >inline
operator*() const tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >
operator++()tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >inline
operator++(int)tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >inline
operator->() const tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >
operator=(const graph_iterator &other)tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >inline
operator==(const graph_iterator &other) const tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >inline
pointer typedef (defined in tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >)tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >
reference typedef (defined in tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >)tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >
size_type typedef (defined in tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >)tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >
value_type typedef (defined in tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >)tbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00333.html b/doc/html/a00333.html new file mode 100644 index 0000000000..91ff624115 --- /dev/null +++ b/doc/html/a00333.html @@ -0,0 +1,82 @@ + + + + + + +Member List + + + + + + +
+ + + + + +
+
+
+
tbb::flow::interface8::graph Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::graph, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
add_task_to_reset_list(task *tp) (defined in tbb::flow::interface8::graph)tbb::flow::interface8::graphinline
begin()tbb::flow::interface8::graphinline
begin() const tbb::flow::interface8::graphinline
cbegin() const tbb::flow::interface8::graphinline
cend() const tbb::flow::interface8::graphinline
const_iterator typedef (defined in tbb::flow::interface8::graph)tbb::flow::interface8::graph
decrement_wait_count()tbb::flow::interface8::graphinline
end()tbb::flow::interface8::graphinline
end() const tbb::flow::interface8::graphinline
exception_thrown() (defined in tbb::flow::interface8::graph)tbb::flow::interface8::graphinline
graph()tbb::flow::interface8::graphinlineexplicit
graph(task_group_context &use_this_context)tbb::flow::interface8::graphinlineexplicit
graph_iterator (defined in tbb::flow::interface8::graph)tbb::flow::interface8::graphfriend
graph_node (defined in tbb::flow::interface8::graph)tbb::flow::interface8::graphfriend
increment_wait_count()tbb::flow::interface8::graphinline
is_active() (defined in tbb::flow::interface8::graph)tbb::flow::interface8::graphinline
is_cancelled()tbb::flow::interface8::graphinline
iterator typedef (defined in tbb::flow::interface8::graph)tbb::flow::interface8::graph
reset(reset_flags f=rf_reset_protocol) (defined in tbb::flow::interface8::graph)tbb::flow::interface8::graphinline
root_task()tbb::flow::interface8::graphinline
run(Receiver &r, Body body)tbb::flow::interface8::graphinline
run(Body body)tbb::flow::interface8::graphinline
set_active(bool a=true) (defined in tbb::flow::interface8::graph)tbb::flow::interface8::graphinline
set_name(const char *name) (defined in tbb::flow::interface8::graph)tbb::flow::interface8::graphinline
wait_for_all()tbb::flow::interface8::graphinline
~graph()tbb::flow::interface8::graphinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00334.html b/doc/html/a00334.html new file mode 100644 index 0000000000..a401e02fa2 --- /dev/null +++ b/doc/html/a00334.html @@ -0,0 +1,66 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::graph_node Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::graph_node, including all inherited members.

+ + + + + + + + + + + +
extract()=0 (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodepure virtual
graph (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodefriend
graph_iterator (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodefriend
graph_node(graph &g) (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinline
my_graph (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
next (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
prev (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
reset_node(reset_flags f=rf_reset_protocol)=0 (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotectedpure virtual
set_name(const char *name)=0 (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodepure virtual
~graph_node() (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinlinevirtual
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00335.html b/doc/html/a00335.html new file mode 100644 index 0000000000..56a582099b --- /dev/null +++ b/doc/html/a00335.html @@ -0,0 +1,87 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::source_node< Output > Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::source_node< Output >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
activate()tbb::flow::interface8::source_node< Output >inline
built_successors() (defined in tbb::flow::interface8::source_node< Output >)tbb::flow::interface8::source_node< Output >inlinevirtual
built_successors_type typedef (defined in tbb::flow::interface8::source_node< Output >)tbb::flow::interface8::source_node< Output >
copy_function_object() (defined in tbb::flow::interface8::source_node< Output >)tbb::flow::interface8::source_node< Output >inline
copy_successors(successor_list_type &v) (defined in tbb::flow::interface8::source_node< Output >)tbb::flow::interface8::source_node< Output >inlinevirtual
extract() (defined in tbb::flow::interface8::source_node< Output >)tbb::flow::interface8::source_node< Output >inlinevirtual
graph_node(graph &g) (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinline
input_type typedef (defined in tbb::flow::interface8::source_node< Output >)tbb::flow::interface8::source_node< Output >
internal::source_task_bypass< source_node< output_type > > (defined in tbb::flow::interface8::source_node< Output >)tbb::flow::interface8::source_node< Output >friend
internal_add_built_successor(successor_type &r) (defined in tbb::flow::interface8::source_node< Output >)tbb::flow::interface8::source_node< Output >inlinevirtual
internal_delete_built_successor(successor_type &r) (defined in tbb::flow::interface8::source_node< Output >)tbb::flow::interface8::source_node< Output >inlinevirtual
my_graph (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
next (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
output_type typedeftbb::flow::interface8::source_node< Output >
prev (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
register_successor(successor_type &r)tbb::flow::interface8::source_node< Output >inlinevirtual
remove_successor(successor_type &r)tbb::flow::interface8::source_node< Output >inlinevirtual
reset_node(reset_flags f)tbb::flow::interface8::source_node< Output >inlineprotectedvirtual
set_name(const char *name) (defined in tbb::flow::interface8::source_node< Output >)tbb::flow::interface8::source_node< Output >inlinevirtual
source_node(graph &g, Body body, bool is_active=true)tbb::flow::interface8::source_node< Output >inline
source_node(const source_node &src)tbb::flow::interface8::source_node< Output >inline
successor_count() (defined in tbb::flow::interface8::source_node< Output >)tbb::flow::interface8::source_node< Output >inlinevirtual
successor_list_type typedef (defined in tbb::flow::interface8::source_node< Output >)tbb::flow::interface8::source_node< Output >
successor_type typedeftbb::flow::interface8::source_node< Output >
try_consume()tbb::flow::interface8::source_node< Output >inlinevirtual
try_get(output_type &v)tbb::flow::interface8::source_node< Output >inlinevirtual
try_release()tbb::flow::interface8::source_node< Output >inlinevirtual
try_reserve(output_type &v)tbb::flow::interface8::source_node< Output >inlinevirtual
~graph_node() (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinlinevirtual
~sender() (defined in tbb::flow::interface8::sender< Output >)tbb::flow::interface8::sender< Output >inlinevirtual
~source_node()tbb::flow::interface8::source_node< Output >inline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00336.html b/doc/html/a00336.html new file mode 100644 index 0000000000..d1541b6e81 --- /dev/null +++ b/doc/html/a00336.html @@ -0,0 +1,57 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::allocate_buffer< T > Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::allocate_buffer< T >, including all inherited members.

+ + +
value (defined in tbb::flow::interface8::allocate_buffer< T >)tbb::flow::interface8::allocate_buffer< T >static
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00337.html b/doc/html/a00337.html new file mode 100644 index 0000000000..0261fe67a3 --- /dev/null +++ b/doc/html/a00337.html @@ -0,0 +1,57 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::allocate_buffer< queueing > Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::allocate_buffer< queueing >, including all inherited members.

+ + +
value (defined in tbb::flow::interface8::allocate_buffer< queueing >)tbb::flow::interface8::allocate_buffer< queueing >static
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00338.html b/doc/html/a00338.html new file mode 100644 index 0000000000..13e7560779 --- /dev/null +++ b/doc/html/a00338.html @@ -0,0 +1,77 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::function_node< Input, Output, Policy, Allocator > Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
extract() (defined in tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >inlinevirtual
fInput_type typedef (defined in tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >
fOutput_type typedef (defined in tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >
function_node(graph &g, size_t concurrency, Body body)tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >inline
function_node(const function_node &src)tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >inline
graph_node(graph &g) (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinline
input_queue_type typedef (defined in tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >
input_type typedef (defined in tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >
internal::broadcast_cache (defined in tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >friend
internal::round_robin_cache (defined in tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >friend
my_graph (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
next (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
output_type typedef (defined in tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >
predecessor_type typedef (defined in tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >
prev (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
reset_node(reset_flags f) (defined in tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >inlineprotectedvirtual
run_and_put_task (defined in tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >friend
set_name(const char *name) (defined in tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >inlinevirtual
successor_type typedef (defined in tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >
successors() (defined in tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::function_node< Input, Output, Policy, Allocator >inlineprotected
~graph_node() (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinlinevirtual
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00339.html b/doc/html/a00339.html new file mode 100644 index 0000000000..5180ee04be --- /dev/null +++ b/doc/html/a00339.html @@ -0,0 +1,72 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator > Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >, including all inherited members.

+ + + + + + + + + + + + + + + + + +
extract() (defined in tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >inlinevirtual
fInput_type typedef (defined in tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >
graph_node(graph &g) (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinline
input_queue_type typedef (defined in tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >
input_type typedef (defined in tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >
multifunction_node(graph &g, size_t concurrency, Body body) (defined in tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >inline
multifunction_node(const multifunction_node &other) (defined in tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >inline
my_graph (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
N (defined in tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >protectedstatic
next (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
output_ports_type typedef (defined in tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >
output_type typedef (defined in tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >
prev (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
reset_node(reset_flags f) (defined in tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >inlineprotectedvirtual
set_name(const char *name) (defined in tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >)tbb::flow::interface8::multifunction_node< Input, Output, Policy, Allocator >inlinevirtual
~graph_node() (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinlinevirtual
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00340.html b/doc/html/a00340.html new file mode 100644 index 0000000000..1282dce293 --- /dev/null +++ b/doc/html/a00340.html @@ -0,0 +1,74 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::split_node< TupleType, Allocator > Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::split_node< TupleType, Allocator >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
allocator_type typedef (defined in tbb::flow::interface8::split_node< TupleType, Allocator >)tbb::flow::interface8::split_node< TupleType, Allocator >
extract() (defined in tbb::flow::interface8::multifunction_node< TupleType, TupleType, rejecting, Allocator >)tbb::flow::interface8::multifunction_node< TupleType, TupleType, rejecting, Allocator >inlinevirtual
fInput_type typedef (defined in tbb::flow::interface8::multifunction_node< TupleType, TupleType, rejecting, Allocator >)tbb::flow::interface8::multifunction_node< TupleType, TupleType, rejecting, Allocator >
graph_node(graph &g) (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinline
input_queue_type typedef (defined in tbb::flow::interface8::multifunction_node< TupleType, TupleType, rejecting, Allocator >)tbb::flow::interface8::multifunction_node< TupleType, TupleType, rejecting, Allocator >
input_type typedef (defined in tbb::flow::interface8::split_node< TupleType, Allocator >)tbb::flow::interface8::split_node< TupleType, Allocator >
multifunction_node(graph &g, size_t concurrency, Body body) (defined in tbb::flow::interface8::multifunction_node< TupleType, TupleType, rejecting, Allocator >)tbb::flow::interface8::multifunction_node< TupleType, TupleType, rejecting, Allocator >inline
multifunction_node(const multifunction_node &other) (defined in tbb::flow::interface8::multifunction_node< TupleType, TupleType, rejecting, Allocator >)tbb::flow::interface8::multifunction_node< TupleType, TupleType, rejecting, Allocator >inline
my_graph (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
next (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
output_ports_type typedef (defined in tbb::flow::interface8::split_node< TupleType, Allocator >)tbb::flow::interface8::split_node< TupleType, Allocator >
output_type typedef (defined in tbb::flow::interface8::split_node< TupleType, Allocator >)tbb::flow::interface8::split_node< TupleType, Allocator >
prev (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
reset_node(reset_flags f) (defined in tbb::flow::interface8::multifunction_node< TupleType, TupleType, rejecting, Allocator >)tbb::flow::interface8::multifunction_node< TupleType, TupleType, rejecting, Allocator >inlineprotectedvirtual
set_name(const char *name) (defined in tbb::flow::interface8::split_node< TupleType, Allocator >)tbb::flow::interface8::split_node< TupleType, Allocator >inlinevirtual
split_node(graph &g) (defined in tbb::flow::interface8::split_node< TupleType, Allocator >)tbb::flow::interface8::split_node< TupleType, Allocator >inline
split_node(const split_node &other) (defined in tbb::flow::interface8::split_node< TupleType, Allocator >)tbb::flow::interface8::split_node< TupleType, Allocator >inline
~graph_node() (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinlinevirtual
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00341.html b/doc/html/a00341.html new file mode 100644 index 0000000000..ea1c7819fb --- /dev/null +++ b/doc/html/a00341.html @@ -0,0 +1,77 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::continue_node< Output > Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::continue_node< Output >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
continue_node(graph &g, Body body)tbb::flow::interface8::continue_node< Output >inline
continue_node(graph &g, int number_of_predecessors, Body body)tbb::flow::interface8::continue_node< Output >inline
continue_node(const continue_node &src)tbb::flow::interface8::continue_node< Output >inline
extract() (defined in tbb::flow::interface8::continue_node< Output >)tbb::flow::interface8::continue_node< Output >inlinevirtual
fInput_type typedef (defined in tbb::flow::interface8::continue_node< Output >)tbb::flow::interface8::continue_node< Output >
fOutput_type typedef (defined in tbb::flow::interface8::continue_node< Output >)tbb::flow::interface8::continue_node< Output >
graph_node(graph &g) (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinline
input_type typedef (defined in tbb::flow::interface8::continue_node< Output >)tbb::flow::interface8::continue_node< Output >
internal::broadcast_cache (defined in tbb::flow::interface8::continue_node< Output >)tbb::flow::interface8::continue_node< Output >friend
internal::round_robin_cache (defined in tbb::flow::interface8::continue_node< Output >)tbb::flow::interface8::continue_node< Output >friend
my_graph (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
next (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
output_type typedef (defined in tbb::flow::interface8::continue_node< Output >)tbb::flow::interface8::continue_node< Output >
predecessor_type typedef (defined in tbb::flow::interface8::continue_node< Output >)tbb::flow::interface8::continue_node< Output >
prev (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
reset_node(reset_flags f) (defined in tbb::flow::interface8::continue_node< Output >)tbb::flow::interface8::continue_node< Output >inlineprotectedvirtual
run_and_put_task (defined in tbb::flow::interface8::continue_node< Output >)tbb::flow::interface8::continue_node< Output >friend
set_name(const char *name) (defined in tbb::flow::interface8::continue_node< Output >)tbb::flow::interface8::continue_node< Output >inlinevirtual
successor_type typedef (defined in tbb::flow::interface8::continue_node< Output >)tbb::flow::interface8::continue_node< Output >
successors() (defined in tbb::flow::interface8::continue_node< Output >)tbb::flow::interface8::continue_node< Output >inlineprotected
~graph_node() (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinlinevirtual
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00342.html b/doc/html/a00342.html new file mode 100644 index 0000000000..b063494c80 --- /dev/null +++ b/doc/html/a00342.html @@ -0,0 +1,110 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::overwrite_node< T > Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::overwrite_node< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
built_predecessors() (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlinevirtual
built_predecessors_type typedef (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >
built_successors() (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlinevirtual
built_successors_type typedef (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >
clear() (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inline
copy_predecessors(predecessor_list_type &v) (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inline
copy_predecessors(predecessor_list_type &)=0 (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >pure virtual
copy_successors(successor_list_type &v) (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlinevirtual
extract() (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlinevirtual
graph_node(graph &g) (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinline
input_type typedef (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >
internal::broadcast_cache (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >friend
internal::round_robin_cache (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >friend
internal_add_built_predecessor(predecessor_type &p) (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlinevirtual
internal_add_built_successor(successor_type &s) (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlinevirtual
internal_delete_built_predecessor(predecessor_type &p) (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlinevirtual
internal_delete_built_successor(successor_type &s) (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlinevirtual
is_continue_receiver() (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >inlineprotectedvirtual
is_valid() (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inline
my_buffer (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >protected
my_buffer_is_valid (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >protected
my_built_predecessors (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >protected
my_graph (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
my_mutex (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >protected
my_successors (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >protected
next (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
output_type typedef (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >
overwrite_node(graph &g) (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inline
overwrite_node(const overwrite_node &src) (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inline
predecessor_count() (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlinevirtual
predecessor_list_type typedef (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >
predecessor_type typedef (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >
prev (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
register_predecessor(predecessor_type &)tbb::flow::interface8::receiver< T >inlinevirtual
register_successor(successor_type &s)tbb::flow::interface8::overwrite_node< T >inlinevirtual
remove_predecessor(predecessor_type &)tbb::flow::interface8::receiver< T >inlinevirtual
remove_successor(successor_type &s)tbb::flow::interface8::overwrite_node< T >inlinevirtual
reset_node(reset_flags f) (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlineprotectedvirtual
reset_receiver(reset_flags) (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlineprotectedvirtual
run_and_put_task (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >friend
set_name(const char *name) (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlinevirtual
successor_count() (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlinevirtual
successor_list_type typedef (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >
successor_type typedef (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >
try_consume()tbb::flow::interface8::sender< T >inlinevirtual
try_get(input_type &v)tbb::flow::interface8::overwrite_node< T >inlinevirtual
try_put(const T &t)tbb::flow::interface8::receiver< T >inline
try_put_task(const input_type &v) (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlineprotectedvirtual
try_release()tbb::flow::interface8::sender< T >inlinevirtual
try_reserve(T &)tbb::flow::interface8::sender< T >inlinevirtual
~graph_node() (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinlinevirtual
~overwrite_node() (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inline
~receiver()tbb::flow::interface8::receiver< T >inlinevirtual
~sender() (defined in tbb::flow::interface8::sender< T >)tbb::flow::interface8::sender< T >inlinevirtual
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00343.html b/doc/html/a00343.html new file mode 100644 index 0000000000..540f2091a0 --- /dev/null +++ b/doc/html/a00343.html @@ -0,0 +1,112 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::write_once_node< T > Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::write_once_node< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
built_predecessors() (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlinevirtual
built_predecessors_type typedef (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >
built_successors() (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlinevirtual
built_successors_type typedef (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >
clear() (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inline
copy_predecessors(predecessor_list_type &v) (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inline
copy_predecessors(predecessor_list_type &)=0 (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >pure virtual
copy_successors(successor_list_type &v) (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlinevirtual
extract() (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlinevirtual
graph_node(graph &g) (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinline
input_type typedef (defined in tbb::flow::interface8::write_once_node< T >)tbb::flow::interface8::write_once_node< T >
internal::broadcast_cache (defined in tbb::flow::interface8::write_once_node< T >)tbb::flow::interface8::write_once_node< T >friend
internal::round_robin_cache (defined in tbb::flow::interface8::write_once_node< T >)tbb::flow::interface8::write_once_node< T >friend
internal_add_built_predecessor(predecessor_type &p) (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlinevirtual
internal_add_built_successor(successor_type &s) (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlinevirtual
internal_delete_built_predecessor(predecessor_type &p) (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlinevirtual
internal_delete_built_successor(successor_type &s) (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlinevirtual
is_continue_receiver() (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >inlineprotectedvirtual
is_valid() (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inline
my_buffer (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >protected
my_buffer_is_valid (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >protected
my_built_predecessors (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >protected
my_graph (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
my_mutex (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >protected
my_successors (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >protected
next (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
output_type typedef (defined in tbb::flow::interface8::write_once_node< T >)tbb::flow::interface8::write_once_node< T >
overwrite_node(graph &g) (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inline
overwrite_node(const overwrite_node &src) (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inline
predecessor_count() (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlinevirtual
predecessor_list_type typedef (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >
predecessor_type typedef (defined in tbb::flow::interface8::write_once_node< T >)tbb::flow::interface8::write_once_node< T >
prev (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
register_predecessor(predecessor_type &)tbb::flow::interface8::receiver< T >inlinevirtual
register_successor(successor_type &s)tbb::flow::interface8::overwrite_node< T >inlinevirtual
remove_predecessor(predecessor_type &)tbb::flow::interface8::receiver< T >inlinevirtual
remove_successor(successor_type &s)tbb::flow::interface8::overwrite_node< T >inlinevirtual
reset_node(reset_flags f) (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlineprotectedvirtual
reset_receiver(reset_flags) (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlineprotectedvirtual
run_and_put_task (defined in tbb::flow::interface8::write_once_node< T >)tbb::flow::interface8::write_once_node< T >friend
set_name(const char *name) (defined in tbb::flow::interface8::write_once_node< T >)tbb::flow::interface8::write_once_node< T >inlinevirtual
successor_count() (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inlinevirtual
successor_list_type typedef (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >
successor_type typedef (defined in tbb::flow::interface8::write_once_node< T >)tbb::flow::interface8::write_once_node< T >
try_consume()tbb::flow::interface8::sender< T >inlinevirtual
try_get(input_type &v)tbb::flow::interface8::overwrite_node< T >inlinevirtual
try_put(const T &t)tbb::flow::interface8::receiver< T >inline
try_put_task(const T &v) (defined in tbb::flow::interface8::write_once_node< T >)tbb::flow::interface8::write_once_node< T >inlineprotectedvirtual
try_release()tbb::flow::interface8::sender< T >inlinevirtual
try_reserve(T &)tbb::flow::interface8::sender< T >inlinevirtual
write_once_node(graph &g)tbb::flow::interface8::write_once_node< T >inline
write_once_node(const write_once_node &src)tbb::flow::interface8::write_once_node< T >inline
~graph_node() (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinlinevirtual
~overwrite_node() (defined in tbb::flow::interface8::overwrite_node< T >)tbb::flow::interface8::overwrite_node< T >inline
~receiver()tbb::flow::interface8::receiver< T >inlinevirtual
~sender() (defined in tbb::flow::interface8::sender< T >)tbb::flow::interface8::sender< T >inlinevirtual
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00344.html b/doc/html/a00344.html new file mode 100644 index 0000000000..e43d74fb28 --- /dev/null +++ b/doc/html/a00344.html @@ -0,0 +1,102 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::broadcast_node< T > Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::broadcast_node< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
broadcast_node(graph &g) (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >inline
broadcast_node(const broadcast_node &src) (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >inline
built_predecessors() (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >inlinevirtual
built_predecessors_type typedef (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >
built_successors() (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >inlinevirtual
built_successors_type typedef (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >
copy_predecessors(predecessor_list_type &v) (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >inline
copy_predecessors(predecessor_list_type &)=0 (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >pure virtual
copy_successors(successor_list_type &v) (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >inlinevirtual
extract() (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >inlinevirtual
graph_node(graph &g) (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinline
input_type typedef (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >
internal::broadcast_cache (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >friend
internal::round_robin_cache (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >friend
internal_add_built_predecessor(predecessor_type &p) (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >inlinevirtual
internal_add_built_successor(successor_type &r) (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >inlinevirtual
internal_delete_built_predecessor(predecessor_type &p) (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >inlinevirtual
internal_delete_built_successor(successor_type &r) (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >inlinevirtual
is_continue_receiver() (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >inlineprotectedvirtual
my_graph (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
next (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
output_type typedef (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >
predecessor_count() (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >inlinevirtual
predecessor_list_type typedef (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >
predecessor_type typedef (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >
prev (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
register_predecessor(predecessor_type &)tbb::flow::interface8::receiver< T >inlinevirtual
register_successor(receiver< T > &r)tbb::flow::interface8::broadcast_node< T >inlinevirtual
remove_predecessor(predecessor_type &)tbb::flow::interface8::receiver< T >inlinevirtual
remove_successor(receiver< T > &r)tbb::flow::interface8::broadcast_node< T >inlinevirtual
reset_node(reset_flags f) (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >inlineprotectedvirtual
reset_receiver(reset_flags) (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >inlineprotectedvirtual
run_and_put_task (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >friend
set_name(const char *name) (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >inlinevirtual
successor_count() (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >inlinevirtual
successor_list_type typedef (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >
successor_type typedef (defined in tbb::flow::interface8::broadcast_node< T >)tbb::flow::interface8::broadcast_node< T >
try_consume()tbb::flow::interface8::sender< T >inlinevirtual
try_get(T &)tbb::flow::interface8::sender< T >inlinevirtual
try_put(const T &t)tbb::flow::interface8::receiver< T >inline
try_put_task(const T &t)tbb::flow::interface8::broadcast_node< T >inlineprotectedvirtual
try_release()tbb::flow::interface8::sender< T >inlinevirtual
try_reserve(T &)tbb::flow::interface8::sender< T >inlinevirtual
~graph_node() (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinlinevirtual
~receiver()tbb::flow::interface8::receiver< T >inlinevirtual
~sender() (defined in tbb::flow::interface8::sender< T >)tbb::flow::interface8::sender< T >inlinevirtual
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00345.html b/doc/html/a00345.html new file mode 100644 index 0000000000..a0d1510458 --- /dev/null +++ b/doc/html/a00345.html @@ -0,0 +1,153 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::buffer_node< T, A > Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::buffer_node< T, A >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
add_blt_pred enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
add_blt_succ enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
blt_pred_cnt enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
blt_pred_cpy enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
blt_succ_cnt enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
blt_succ_cpy enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
buffer_node(graph &g)tbb::flow::interface8::buffer_node< T, A >inline
buffer_node(const buffer_node &src)tbb::flow::interface8::buffer_node< T, A >inline
built_predecessors() (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
built_predecessors_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
built_successors() (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
built_successors_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
class_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >
con_res enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
copy_predecessors(predecessor_list_type &v) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inline
copy_predecessors(predecessor_list_type &)=0 (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >pure virtual
copy_successors(successor_list_type &v) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
del_blt_pred enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
del_blt_succ enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
enqueue_forwarding_task(buffer_operation &op_data) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotected
extract() (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
FAILED enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
forward_task()tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
forwarder_busy (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
grab_forwarding_task(buffer_operation &op_data) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotected
graph_node(graph &g) (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinline
handle_operations(buffer_operation *op_list) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
handler_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
input_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >
internal::aggregating_functor< class_type, buffer_operation > (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >friend
internal::broadcast_cache (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >friend
internal::forward_task_bypass< buffer_node< T, A > > (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >friend
internal::round_robin_cache (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >friend
internal_add_built_pred(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_add_built_predecessor(predecessor_type &p) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
internal_add_built_succ(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_add_built_successor(successor_type &r) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
internal_consume(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_copy_preds(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_copy_succs(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_del_built_pred(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_del_built_succ(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_delete_built_predecessor(predecessor_type &p) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
internal_delete_built_successor(successor_type &r) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
internal_forward_task(buffer_operation *op)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_pop(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_pred_cnt(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_push(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_reg_succ(buffer_operation *op)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_release(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_rem_succ(buffer_operation *op)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_reserve(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_succ_cnt(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
is_continue_receiver() (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >inlineprotectedvirtual
my_aggregator (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
my_built_predecessors (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
my_graph (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
my_successors (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
next (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
op_stat enum name (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
op_type enum name (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
output_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >
predecessor_count() (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
predecessor_list_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >
predecessor_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >
prev (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
put_item enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
reg_succ enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
register_predecessor(predecessor_type &)tbb::flow::interface8::receiver< T >inlinevirtual
register_successor(successor_type &r)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
rel_res enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
rem_succ enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
remove_predecessor(predecessor_type &)tbb::flow::interface8::receiver< T >inlinevirtual
remove_successor(successor_type &r)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
req_item enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
res_item enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
reset_node(reset_flags f) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
reset_receiver(reset_flags) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
run_and_put_task (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >friend
set_name(const char *name) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
size_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
SUCCEEDED enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
successor_count() (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
successor_list_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >
successor_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >
try_consume()tbb::flow::interface8::buffer_node< T, A >inlinevirtual
try_fwd_task enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
try_get(T &v)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
try_put(const T &t)tbb::flow::interface8::receiver< T >inline
try_put_task(const T &t)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
try_release()tbb::flow::interface8::buffer_node< T, A >inlinevirtual
try_reserve(T &v)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
WAIT enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
~buffer_node() (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
~graph_node() (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinlinevirtual
~receiver()tbb::flow::interface8::receiver< T >inlinevirtual
~sender() (defined in tbb::flow::interface8::sender< T >)tbb::flow::interface8::sender< T >inlinevirtual
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00346.html b/doc/html/a00346.html new file mode 100644 index 0000000000..3acc0933d2 --- /dev/null +++ b/doc/html/a00346.html @@ -0,0 +1,66 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::buffer_node< T, A >::buffer_operation Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::buffer_node< T, A >::buffer_operation, including all inherited members.

+ + + + + + + + + + + +
buffer_operation(const T &e, op_type t) (defined in tbb::flow::interface8::buffer_node< T, A >::buffer_operation)tbb::flow::interface8::buffer_node< T, A >::buffer_operationinline
cnt_val (defined in tbb::flow::interface8::buffer_node< T, A >::buffer_operation)tbb::flow::interface8::buffer_node< T, A >::buffer_operation
elem (defined in tbb::flow::interface8::buffer_node< T, A >::buffer_operation)tbb::flow::interface8::buffer_node< T, A >::buffer_operation
elem (defined in tbb::flow::interface8::buffer_node< T, A >::buffer_operation)tbb::flow::interface8::buffer_node< T, A >::buffer_operation
ltask (defined in tbb::flow::interface8::buffer_node< T, A >::buffer_operation)tbb::flow::interface8::buffer_node< T, A >::buffer_operation
p (defined in tbb::flow::interface8::buffer_node< T, A >::buffer_operation)tbb::flow::interface8::buffer_node< T, A >::buffer_operation
pvec (defined in tbb::flow::interface8::buffer_node< T, A >::buffer_operation)tbb::flow::interface8::buffer_node< T, A >::buffer_operation
r (defined in tbb::flow::interface8::buffer_node< T, A >::buffer_operation)tbb::flow::interface8::buffer_node< T, A >::buffer_operation
svec (defined in tbb::flow::interface8::buffer_node< T, A >::buffer_operation)tbb::flow::interface8::buffer_node< T, A >::buffer_operation
type (defined in tbb::flow::interface8::buffer_node< T, A >::buffer_operation)tbb::flow::interface8::buffer_node< T, A >::buffer_operation
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00348.html b/doc/html/a00348.html new file mode 100644 index 0000000000..ae13b319c9 --- /dev/null +++ b/doc/html/a00348.html @@ -0,0 +1,152 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::queue_node< T, A > Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::queue_node< T, A >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
add_blt_pred enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
add_blt_succ enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
base_type typedef (defined in tbb::flow::interface8::queue_node< T, A >)tbb::flow::interface8::queue_node< T, A >protected
blt_pred_cnt enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
blt_pred_cpy enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
blt_succ_cnt enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
blt_succ_cpy enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
buffer_node(graph &g)tbb::flow::interface8::buffer_node< T, A >inline
buffer_node(const buffer_node &src)tbb::flow::interface8::buffer_node< T, A >inline
built_predecessors() (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
built_predecessors_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
built_successors() (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
built_successors_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
class_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >
con_res enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
copy_predecessors(predecessor_list_type &v) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inline
copy_predecessors(predecessor_list_type &)=0 (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >pure virtual
copy_successors(successor_list_type &v) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
del_blt_pred enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
del_blt_succ enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
enqueue_forwarding_task(buffer_operation &op_data) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotected
extract() (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
FAILED enum value (defined in tbb::flow::interface8::queue_node< T, A >)tbb::flow::interface8::queue_node< T, A >protected
forward_task()tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
forwarder_busy (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
grab_forwarding_task(buffer_operation &op_data) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotected
graph_node(graph &g) (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinline
handle_operations(buffer_operation *op_list) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
handler_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
input_type typedef (defined in tbb::flow::interface8::queue_node< T, A >)tbb::flow::interface8::queue_node< T, A >
internal_add_built_pred(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_add_built_predecessor(predecessor_type &p) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
internal_add_built_succ(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_add_built_successor(successor_type &r) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
internal_consume(queue_operation *op) (defined in tbb::flow::interface8::queue_node< T, A >)tbb::flow::interface8::queue_node< T, A >inlineprotectedvirtual
internal_copy_preds(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_copy_succs(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_del_built_pred(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_del_built_succ(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_delete_built_predecessor(predecessor_type &p) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
internal_delete_built_successor(successor_type &r) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
internal_forward_task(queue_operation *op)tbb::flow::interface8::queue_node< T, A >inlineprotectedvirtual
internal_pop(queue_operation *op) (defined in tbb::flow::interface8::queue_node< T, A >)tbb::flow::interface8::queue_node< T, A >inlineprotectedvirtual
internal_pred_cnt(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_push(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_reg_succ(buffer_operation *op)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_release(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_rem_succ(buffer_operation *op)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_reserve(queue_operation *op) (defined in tbb::flow::interface8::queue_node< T, A >)tbb::flow::interface8::queue_node< T, A >inlineprotectedvirtual
internal_succ_cnt(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
is_continue_receiver() (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >inlineprotectedvirtual
my_aggregator (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
my_built_predecessors (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
my_graph (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
my_successors (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
next (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
op_stat enum name (defined in tbb::flow::interface8::queue_node< T, A >)tbb::flow::interface8::queue_node< T, A >protected
op_type enum name (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
output_type typedef (defined in tbb::flow::interface8::queue_node< T, A >)tbb::flow::interface8::queue_node< T, A >
predecessor_count() (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
predecessor_list_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >
predecessor_type typedef (defined in tbb::flow::interface8::queue_node< T, A >)tbb::flow::interface8::queue_node< T, A >
prev (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
put_item enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
queue_node(graph &g)tbb::flow::interface8::queue_node< T, A >inline
queue_node(const queue_node &src)tbb::flow::interface8::queue_node< T, A >inline
queue_operation typedef (defined in tbb::flow::interface8::queue_node< T, A >)tbb::flow::interface8::queue_node< T, A >protected
reg_succ enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
register_predecessor(predecessor_type &)tbb::flow::interface8::receiver< T >inlinevirtual
register_successor(successor_type &r)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
rel_res enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
rem_succ enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
remove_predecessor(predecessor_type &)tbb::flow::interface8::receiver< T >inlinevirtual
remove_successor(successor_type &r)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
req_item enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
res_item enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
reset_node(reset_flags f) (defined in tbb::flow::interface8::queue_node< T, A >)tbb::flow::interface8::queue_node< T, A >inlineprotectedvirtual
reset_receiver(reset_flags) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
set_name(const char *name) (defined in tbb::flow::interface8::queue_node< T, A >)tbb::flow::interface8::queue_node< T, A >inlinevirtual
size_type typedef (defined in tbb::flow::interface8::queue_node< T, A >)tbb::flow::interface8::queue_node< T, A >protected
SUCCEEDED enum value (defined in tbb::flow::interface8::queue_node< T, A >)tbb::flow::interface8::queue_node< T, A >protected
successor_count() (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
successor_list_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >
successor_type typedef (defined in tbb::flow::interface8::queue_node< T, A >)tbb::flow::interface8::queue_node< T, A >
try_consume()tbb::flow::interface8::buffer_node< T, A >inlinevirtual
try_fwd_task enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
try_get(T &v)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
try_put(const T &t)tbb::flow::interface8::receiver< T >inline
try_put_task(const T &t)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
try_release()tbb::flow::interface8::buffer_node< T, A >inlinevirtual
try_reserve(T &v)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
WAIT enum value (defined in tbb::flow::interface8::queue_node< T, A >)tbb::flow::interface8::queue_node< T, A >protected
~buffer_node() (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
~graph_node() (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinlinevirtual
~receiver()tbb::flow::interface8::receiver< T >inlinevirtual
~sender() (defined in tbb::flow::interface8::sender< T >)tbb::flow::interface8::sender< T >inlinevirtual
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00349.html b/doc/html/a00349.html new file mode 100644 index 0000000000..b891e2e317 --- /dev/null +++ b/doc/html/a00349.html @@ -0,0 +1,155 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::sequencer_node< T, A > Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::sequencer_node< T, A >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
add_blt_pred enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
add_blt_succ enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
base_type typedef (defined in tbb::flow::interface8::queue_node< T, A >)tbb::flow::interface8::queue_node< T, A >protected
blt_pred_cnt enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
blt_pred_cpy enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
blt_succ_cnt enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
blt_succ_cpy enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
buffer_node(graph &g)tbb::flow::interface8::buffer_node< T, A >inline
buffer_node(const buffer_node &src)tbb::flow::interface8::buffer_node< T, A >inline
built_predecessors() (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
built_predecessors_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
built_successors() (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
built_successors_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
class_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >
con_res enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
copy_predecessors(predecessor_list_type &v) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inline
copy_predecessors(predecessor_list_type &)=0 (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >pure virtual
copy_successors(successor_list_type &v) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
del_blt_pred enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
del_blt_succ enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
enqueue_forwarding_task(buffer_operation &op_data) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotected
extract() (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
FAILED enum value (defined in tbb::flow::interface8::sequencer_node< T, A >)tbb::flow::interface8::sequencer_node< T, A >protected
forward_task()tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
forwarder_busy (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
grab_forwarding_task(buffer_operation &op_data) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotected
graph_node(graph &g) (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinline
handle_operations(buffer_operation *op_list) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
handler_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
input_type typedef (defined in tbb::flow::interface8::sequencer_node< T, A >)tbb::flow::interface8::sequencer_node< T, A >
internal_add_built_pred(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_add_built_predecessor(predecessor_type &p) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
internal_add_built_succ(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_add_built_successor(successor_type &r) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
internal_consume(queue_operation *op) (defined in tbb::flow::interface8::queue_node< T, A >)tbb::flow::interface8::queue_node< T, A >inlineprotectedvirtual
internal_copy_preds(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_copy_succs(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_del_built_pred(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_del_built_succ(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_delete_built_predecessor(predecessor_type &p) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
internal_delete_built_successor(successor_type &r) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
internal_forward_task(queue_operation *op)tbb::flow::interface8::queue_node< T, A >inlineprotectedvirtual
internal_pop(queue_operation *op) (defined in tbb::flow::interface8::queue_node< T, A >)tbb::flow::interface8::queue_node< T, A >inlineprotectedvirtual
internal_pred_cnt(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_reg_succ(buffer_operation *op)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_release(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_rem_succ(buffer_operation *op)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_reserve(queue_operation *op) (defined in tbb::flow::interface8::queue_node< T, A >)tbb::flow::interface8::queue_node< T, A >inlineprotectedvirtual
internal_succ_cnt(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
is_continue_receiver() (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >inlineprotectedvirtual
my_aggregator (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
my_built_predecessors (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
my_graph (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
my_successors (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
next (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
op_stat enum name (defined in tbb::flow::interface8::sequencer_node< T, A >)tbb::flow::interface8::sequencer_node< T, A >protected
op_type enum name (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
output_type typedef (defined in tbb::flow::interface8::sequencer_node< T, A >)tbb::flow::interface8::sequencer_node< T, A >
predecessor_count() (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
predecessor_list_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >
predecessor_type typedef (defined in tbb::flow::interface8::sequencer_node< T, A >)tbb::flow::interface8::sequencer_node< T, A >
prev (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
put_item enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
queue_node(graph &g)tbb::flow::interface8::queue_node< T, A >inline
queue_node(const queue_node &src)tbb::flow::interface8::queue_node< T, A >inline
queue_operation typedef (defined in tbb::flow::interface8::queue_node< T, A >)tbb::flow::interface8::queue_node< T, A >protected
reg_succ enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
register_predecessor(predecessor_type &)tbb::flow::interface8::receiver< T >inlinevirtual
register_successor(successor_type &r)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
rel_res enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
rem_succ enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
remove_predecessor(predecessor_type &)tbb::flow::interface8::receiver< T >inlinevirtual
remove_successor(successor_type &r)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
req_item enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
res_item enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
reset_node(reset_flags f) (defined in tbb::flow::interface8::queue_node< T, A >)tbb::flow::interface8::queue_node< T, A >inlineprotectedvirtual
reset_receiver(reset_flags) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
sequencer_node(graph &g, const Sequencer &s)tbb::flow::interface8::sequencer_node< T, A >inline
sequencer_node(const sequencer_node &src)tbb::flow::interface8::sequencer_node< T, A >inline
sequencer_operation typedef (defined in tbb::flow::interface8::sequencer_node< T, A >)tbb::flow::interface8::sequencer_node< T, A >protected
set_name(const char *name) (defined in tbb::flow::interface8::sequencer_node< T, A >)tbb::flow::interface8::sequencer_node< T, A >inlinevirtual
size_type typedef (defined in tbb::flow::interface8::sequencer_node< T, A >)tbb::flow::interface8::sequencer_node< T, A >protected
SUCCEEDED enum value (defined in tbb::flow::interface8::sequencer_node< T, A >)tbb::flow::interface8::sequencer_node< T, A >protected
successor_count() (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
successor_list_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >
successor_type typedef (defined in tbb::flow::interface8::sequencer_node< T, A >)tbb::flow::interface8::sequencer_node< T, A >
try_consume()tbb::flow::interface8::buffer_node< T, A >inlinevirtual
try_fwd_task enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
try_get(T &v)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
try_put(const T &t)tbb::flow::interface8::receiver< T >inline
try_put_task(const T &t)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
try_release()tbb::flow::interface8::buffer_node< T, A >inlinevirtual
try_reserve(T &v)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
WAIT enum value (defined in tbb::flow::interface8::sequencer_node< T, A >)tbb::flow::interface8::sequencer_node< T, A >protected
~buffer_node() (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
~graph_node() (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinlinevirtual
~receiver()tbb::flow::interface8::receiver< T >inlinevirtual
~sender() (defined in tbb::flow::interface8::sender< T >)tbb::flow::interface8::sender< T >inlinevirtual
~sequencer_node()tbb::flow::interface8::sequencer_node< T, A >inline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00350.html b/doc/html/a00350.html new file mode 100644 index 0000000000..74182fdc8c --- /dev/null +++ b/doc/html/a00350.html @@ -0,0 +1,153 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::priority_queue_node< T, Compare, A > Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::priority_queue_node< T, Compare, A >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
add_blt_pred enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
add_blt_succ enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
base_type typedef (defined in tbb::flow::interface8::priority_queue_node< T, Compare, A >)tbb::flow::interface8::priority_queue_node< T, Compare, A >
blt_pred_cnt enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
blt_pred_cpy enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
blt_succ_cnt enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
blt_succ_cpy enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
buffer_node(graph &g)tbb::flow::interface8::buffer_node< T, A >inline
buffer_node(const buffer_node &src)tbb::flow::interface8::buffer_node< T, A >inline
built_predecessors() (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
built_predecessors_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
built_successors() (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
built_successors_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
class_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >
con_res enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
copy_predecessors(predecessor_list_type &v) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inline
copy_predecessors(predecessor_list_type &)=0 (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >pure virtual
copy_successors(successor_list_type &v) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
del_blt_pred enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
del_blt_succ enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
enqueue_forwarding_task(buffer_operation &op_data) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotected
extract() (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
FAILED enum value (defined in tbb::flow::interface8::priority_queue_node< T, Compare, A >)tbb::flow::interface8::priority_queue_node< T, Compare, A >protected
forward_task()tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
forwarder_busy (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
grab_forwarding_task(buffer_operation &op_data) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotected
graph_node(graph &g) (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinline
handle_operations(prio_operation *op_list) (defined in tbb::flow::interface8::priority_queue_node< T, Compare, A >)tbb::flow::interface8::priority_queue_node< T, Compare, A >inlineprotectedvirtual
handler_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
input_type typedef (defined in tbb::flow::interface8::priority_queue_node< T, Compare, A >)tbb::flow::interface8::priority_queue_node< T, Compare, A >
internal_add_built_pred(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_add_built_predecessor(predecessor_type &p) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
internal_add_built_succ(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_add_built_successor(successor_type &r) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
internal_consume(prio_operation *op) (defined in tbb::flow::interface8::priority_queue_node< T, Compare, A >)tbb::flow::interface8::priority_queue_node< T, Compare, A >inlineprotectedvirtual
internal_copy_preds(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_copy_succs(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_del_built_pred(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_del_built_succ(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_delete_built_predecessor(predecessor_type &p) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
internal_delete_built_successor(successor_type &r) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
internal_forward_task(prio_operation *op)tbb::flow::interface8::priority_queue_node< T, Compare, A >inlineprotectedvirtual
internal_pop(prio_operation *op) (defined in tbb::flow::interface8::priority_queue_node< T, Compare, A >)tbb::flow::interface8::priority_queue_node< T, Compare, A >inlineprotectedvirtual
internal_pred_cnt(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_push(prio_operation *op) (defined in tbb::flow::interface8::priority_queue_node< T, Compare, A >)tbb::flow::interface8::priority_queue_node< T, Compare, A >inlineprotectedvirtual
internal_reg_succ(buffer_operation *op)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_release(prio_operation *op) (defined in tbb::flow::interface8::priority_queue_node< T, Compare, A >)tbb::flow::interface8::priority_queue_node< T, Compare, A >inlineprotectedvirtual
internal_rem_succ(buffer_operation *op)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
internal_reserve(prio_operation *op) (defined in tbb::flow::interface8::priority_queue_node< T, Compare, A >)tbb::flow::interface8::priority_queue_node< T, Compare, A >inlineprotectedvirtual
internal_succ_cnt(buffer_operation *op) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
is_continue_receiver() (defined in tbb::flow::interface8::receiver< T >)tbb::flow::interface8::receiver< T >inlineprotectedvirtual
item_type typedef (defined in tbb::flow::interface8::priority_queue_node< T, Compare, A >)tbb::flow::interface8::priority_queue_node< T, Compare, A >protected
my_aggregator (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
my_built_predecessors (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
my_graph (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
my_successors (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
next (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
op_stat enum name (defined in tbb::flow::interface8::priority_queue_node< T, Compare, A >)tbb::flow::interface8::priority_queue_node< T, Compare, A >protected
op_type enum name (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
output_type typedef (defined in tbb::flow::interface8::priority_queue_node< T, Compare, A >)tbb::flow::interface8::priority_queue_node< T, Compare, A >
predecessor_count() (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
predecessor_list_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >
predecessor_type typedef (defined in tbb::flow::interface8::priority_queue_node< T, Compare, A >)tbb::flow::interface8::priority_queue_node< T, Compare, A >
prev (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
prio_operation typedef (defined in tbb::flow::interface8::priority_queue_node< T, Compare, A >)tbb::flow::interface8::priority_queue_node< T, Compare, A >protected
priority_queue_node(graph &g)tbb::flow::interface8::priority_queue_node< T, Compare, A >inline
priority_queue_node(const priority_queue_node &src)tbb::flow::interface8::priority_queue_node< T, Compare, A >inline
put_item enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
reg_succ enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
register_predecessor(predecessor_type &)tbb::flow::interface8::receiver< T >inlinevirtual
register_successor(successor_type &r)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
rel_res enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
rem_succ enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
remove_predecessor(predecessor_type &)tbb::flow::interface8::receiver< T >inlinevirtual
remove_successor(successor_type &r)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
req_item enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
res_item enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
reset_node(reset_flags f) (defined in tbb::flow::interface8::priority_queue_node< T, Compare, A >)tbb::flow::interface8::priority_queue_node< T, Compare, A >inlineprotectedvirtual
reset_receiver(reset_flags) (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
set_name(const char *name) (defined in tbb::flow::interface8::priority_queue_node< T, Compare, A >)tbb::flow::interface8::priority_queue_node< T, Compare, A >inlinevirtual
size_type typedef (defined in tbb::flow::interface8::priority_queue_node< T, Compare, A >)tbb::flow::interface8::priority_queue_node< T, Compare, A >protected
SUCCEEDED enum value (defined in tbb::flow::interface8::priority_queue_node< T, Compare, A >)tbb::flow::interface8::priority_queue_node< T, Compare, A >protected
successor_count() (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
successor_list_type typedef (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >
successor_type typedef (defined in tbb::flow::interface8::priority_queue_node< T, Compare, A >)tbb::flow::interface8::priority_queue_node< T, Compare, A >
try_consume()tbb::flow::interface8::buffer_node< T, A >inlinevirtual
try_fwd_task enum value (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >protected
try_get(T &v)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
try_put(const T &t)tbb::flow::interface8::receiver< T >inline
try_put_task(const T &t)tbb::flow::interface8::buffer_node< T, A >inlineprotectedvirtual
try_release()tbb::flow::interface8::buffer_node< T, A >inlinevirtual
try_reserve(T &v)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
WAIT enum value (defined in tbb::flow::interface8::priority_queue_node< T, Compare, A >)tbb::flow::interface8::priority_queue_node< T, Compare, A >protected
~buffer_node() (defined in tbb::flow::interface8::buffer_node< T, A >)tbb::flow::interface8::buffer_node< T, A >inlinevirtual
~graph_node() (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinlinevirtual
~receiver()tbb::flow::interface8::receiver< T >inlinevirtual
~sender() (defined in tbb::flow::interface8::sender< T >)tbb::flow::interface8::sender< T >inlinevirtual
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00351.html b/doc/html/a00351.html new file mode 100644 index 0000000000..974cc8f19e --- /dev/null +++ b/doc/html/a00351.html @@ -0,0 +1,61 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::join_node< OutputTuple, reserving > Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00352.html b/doc/html/a00352.html new file mode 100644 index 0000000000..b10a7dea95 --- /dev/null +++ b/doc/html/a00352.html @@ -0,0 +1,61 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::join_node< OutputTuple, queueing > Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00353.html b/doc/html/a00353.html new file mode 100644 index 0000000000..de16b407a1 --- /dev/null +++ b/doc/html/a00353.html @@ -0,0 +1,69 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > > Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >, including all inherited members.

+ + + + + + + + + + + + + + +
input_ports_type typedef (defined in tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >)tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >
join_node(graph &g, __TBB_B0 b0, __TBB_B1 b1) (defined in tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >)tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >inline
join_node(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2) (defined in tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >)tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >inline
join_node(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3) (defined in tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >)tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >inline
join_node(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4) (defined in tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >)tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >inline
join_node(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5) (defined in tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >)tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >inline
join_node(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6) (defined in tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >)tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >inline
join_node(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6, __TBB_B7 b7) (defined in tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >)tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >inline
join_node(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6, __TBB_B7 b7, __TBB_B8 b8) (defined in tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >)tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >inline
join_node(graph &g, __TBB_B0 b0, __TBB_B1 b1, __TBB_B2 b2, __TBB_B3 b3, __TBB_B4 b4, __TBB_B5 b5, __TBB_B6 b6, __TBB_B7 b7, __TBB_B8 b8, __TBB_B9 b9) (defined in tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >)tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >inline
join_node(const join_node &other) (defined in tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >)tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >inline
output_type typedef (defined in tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >)tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >
set_name(const char *name) (defined in tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >)tbb::flow::interface8::join_node< OutputTuple, key_matching< K, KHash > >inline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00354.html b/doc/html/a00354.html new file mode 100644 index 0000000000..5e97352802 --- /dev/null +++ b/doc/html/a00354.html @@ -0,0 +1,62 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 > Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00355.html b/doc/html/a00355.html new file mode 100644 index 0000000000..1e1509b901 --- /dev/null +++ b/doc/html/a00355.html @@ -0,0 +1,62 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::indexer_node< T0 > Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00356.html b/doc/html/a00356.html new file mode 100644 index 0000000000..3246a732c0 --- /dev/null +++ b/doc/html/a00356.html @@ -0,0 +1,62 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::indexer_node< T0, T1 > Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00357.html b/doc/html/a00357.html new file mode 100644 index 0000000000..a1e17e5517 --- /dev/null +++ b/doc/html/a00357.html @@ -0,0 +1,62 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::indexer_node< T0, T1, T2 > Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00358.html b/doc/html/a00358.html new file mode 100644 index 0000000000..9beed9b329 --- /dev/null +++ b/doc/html/a00358.html @@ -0,0 +1,62 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::indexer_node< T0, T1, T2, T3 > Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00359.html b/doc/html/a00359.html new file mode 100644 index 0000000000..d052fd36e3 --- /dev/null +++ b/doc/html/a00359.html @@ -0,0 +1,62 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4 > Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00360.html b/doc/html/a00360.html new file mode 100644 index 0000000000..7edf2292e8 --- /dev/null +++ b/doc/html/a00360.html @@ -0,0 +1,62 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5 > Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00361.html b/doc/html/a00361.html new file mode 100644 index 0000000000..082f6cc689 --- /dev/null +++ b/doc/html/a00361.html @@ -0,0 +1,62 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5, T6 > Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00362.html b/doc/html/a00362.html new file mode 100644 index 0000000000..33e0b6e5ab --- /dev/null +++ b/doc/html/a00362.html @@ -0,0 +1,62 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 > Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00363.html b/doc/html/a00363.html new file mode 100644 index 0000000000..fe3a510ac2 --- /dev/null +++ b/doc/html/a00363.html @@ -0,0 +1,62 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 > Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00364.html b/doc/html/a00364.html new file mode 100644 index 0000000000..685db08b76 --- /dev/null +++ b/doc/html/a00364.html @@ -0,0 +1,76 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> > Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
add_nodes(const NodeTypes &...n) (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >inline
add_nodes(Nodes &...) (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >inline
add_visible_nodes(const NodeTypes &...n) (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >inline
add_visible_nodes(Nodes &...) (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >inline
composite_node(graph &g, const char *type_name="composite_node") (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >inline
composite_node(graph &g) (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >inline
extract() (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >inlinevirtual
graph_node(graph &g) (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinline
input_ports() (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >inline
input_ports_type typedef (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >
my_graph (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
next (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
output_ports() (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >inline
output_ports_type typedef (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >
prev (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
reset_node(reset_flags) (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >inlineprotectedvirtual
set_external_ports(T1 &&input_ports_tuple, T2 &&output_ports_tuple) (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >inline
set_name(const char *name) (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >inlinevirtual
~composite_node() (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> >inlinevirtual
~graph_node() (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinlinevirtual
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00365.html b/doc/html/a00365.html new file mode 100644 index 0000000000..29b9a2479d --- /dev/null +++ b/doc/html/a00365.html @@ -0,0 +1,74 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> > Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
add_nodes(const NodeTypes &...n) (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >inline
add_nodes(Nodes &...) (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >inline
add_visible_nodes(const NodeTypes &...n) (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >inline
add_visible_nodes(Nodes &...) (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >inline
composite_node(graph &g, const char *type_name="composite_node") (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >inline
composite_node(graph &g) (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >inline
extract() (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >inlinevirtual
graph_node(graph &g) (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinline
input_ports() (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >inline
input_ports_type typedef (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >
my_graph (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
next (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
prev (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
reset_node(reset_flags) (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >inlineprotectedvirtual
set_external_ports(T &&input_ports_tuple) (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >inline
set_name(const char *name) (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >inlinevirtual
~composite_node() (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >)tbb::flow::interface8::composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> >inlinevirtual
~graph_node() (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinlinevirtual
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00366.html b/doc/html/a00366.html new file mode 100644 index 0000000000..1a7a2709a8 --- /dev/null +++ b/doc/html/a00366.html @@ -0,0 +1,74 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> > Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
add_nodes(const NodeTypes &...n) (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >inline
add_nodes(Nodes &...) (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >inline
add_visible_nodes(const NodeTypes &...n) (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >inline
add_visible_nodes(Nodes &...) (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >inline
composite_node(graph &g, const char *type_name="composite_node") (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >inline
composite_node(graph &g) (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >inline
extract() (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >inlinevirtual
graph_node(graph &g) (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinline
my_graph (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
next (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
output_ports() (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >inline
output_ports_type typedef (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >
prev (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
reset_node(reset_flags) (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >inlineprotectedvirtual
set_external_ports(T &&output_ports_tuple) (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >inline
set_name(const char *name) (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >inlinevirtual
~composite_node() (defined in tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >)tbb::flow::interface8::composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> >inlinevirtual
~graph_node() (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinlinevirtual
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00367.html b/doc/html/a00367.html new file mode 100644 index 0000000000..15bd4b2f13 --- /dev/null +++ b/doc/html/a00367.html @@ -0,0 +1,83 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::flow::interface8::async_node< Input, Output, Allocator > Member List
+
+
+ +

This is the complete list of members for tbb::flow::interface8::async_node< Input, Output, Allocator >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
async_commit() (defined in tbb::flow::interface8::async_node< Input, Output, Allocator >)tbb::flow::interface8::async_node< Input, Output, Allocator >inlineprotectedvirtual
async_gateway() (defined in tbb::flow::interface8::async_node< Input, Output, Allocator >)tbb::flow::interface8::async_node< Input, Output, Allocator >inline
async_gateway_type typedef (defined in tbb::flow::interface8::async_node< Input, Output, Allocator >)tbb::flow::interface8::async_node< Input, Output, Allocator >
async_input_type typedef (defined in tbb::flow::interface8::async_node< Input, Output, Allocator >)tbb::flow::interface8::async_node< Input, Output, Allocator >
async_node(graph &g, Body body)tbb::flow::interface8::async_node< Input, Output, Allocator >inline
async_node(const async_node &src)tbb::flow::interface8::async_node< Input, Output, Allocator >inline
async_output_type typedef (defined in tbb::flow::interface8::async_node< Input, Output, Allocator >)tbb::flow::interface8::async_node< Input, Output, Allocator >
async_reserve() (defined in tbb::flow::interface8::async_node< Input, Output, Allocator >)tbb::flow::interface8::async_node< Input, Output, Allocator >inlineprotectedvirtual
async_try_put(const output_type &i)tbb::flow::interface8::async_node< Input, Output, Allocator >inlineprotectedvirtual
extract() (defined in tbb::flow::interface8::async_node< Input, Output, Allocator >)tbb::flow::interface8::async_node< Input, Output, Allocator >inlineprotectedvirtual
graph_node(graph &g) (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinline
input_type typedef (defined in tbb::flow::interface8::async_node< Input, Output, Allocator >)tbb::flow::interface8::async_node< Input, Output, Allocator >
internal::broadcast_cache (defined in tbb::flow::interface8::async_node< Input, Output, Allocator >)tbb::flow::interface8::async_node< Input, Output, Allocator >friend
internal::round_robin_cache (defined in tbb::flow::interface8::async_node< Input, Output, Allocator >)tbb::flow::interface8::async_node< Input, Output, Allocator >friend
my_class typedef (defined in tbb::flow::interface8::async_node< Input, Output, Allocator >)tbb::flow::interface8::async_node< Input, Output, Allocator >
my_graph (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
next (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
output_type typedef (defined in tbb::flow::interface8::async_node< Input, Output, Allocator >)tbb::flow::interface8::async_node< Input, Output, Allocator >
predecessor_type typedef (defined in tbb::flow::interface8::async_node< Input, Output, Allocator >)tbb::flow::interface8::async_node< Input, Output, Allocator >
prev (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeprotected
reset_node(reset_flags f) (defined in tbb::flow::interface8::async_node< Input, Output, Allocator >)tbb::flow::interface8::async_node< Input, Output, Allocator >inlineprotectedvirtual
run_and_put_task (defined in tbb::flow::interface8::async_node< Input, Output, Allocator >)tbb::flow::interface8::async_node< Input, Output, Allocator >friend
set_name(const char *name) (defined in tbb::flow::interface8::async_node< Input, Output, Allocator >)tbb::flow::interface8::async_node< Input, Output, Allocator >inlinevirtual
successor_type typedef (defined in tbb::flow::interface8::async_node< Input, Output, Allocator >)tbb::flow::interface8::async_node< Input, Output, Allocator >
successors() (defined in tbb::flow::interface8::async_node< Input, Output, Allocator >)tbb::flow::interface8::async_node< Input, Output, Allocator >inlineprotected
~async_gateway() (defined in tbb::flow::interface8::internal::async_gateway< Output >)tbb::flow::interface8::internal::async_gateway< Output >inlinevirtual
~graph_node() (defined in tbb::flow::interface8::graph_node)tbb::flow::interface8::graph_nodeinlinevirtual
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00368.html b/doc/html/a00368.html new file mode 100644 index 0000000000..fef80a1990 --- /dev/null +++ b/doc/html/a00368.html @@ -0,0 +1,64 @@ + + + + + + +Member List + + + + + + +
+ + + + + +
+
+
+
tbb::flow::interface8::internal::edge_container< C > Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00369.html b/doc/html/a00369.html new file mode 100644 index 0000000000..ce92c345b7 --- /dev/null +++ b/doc/html/a00369.html @@ -0,0 +1,61 @@ + + + + + + +Member List + + + + + + +
+ + + + + +
+
+
+
tbb::flow::interface8::internal::async_gateway< Output > Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00370.html b/doc/html/a00370.html new file mode 100644 index 0000000000..042a819b3e --- /dev/null +++ b/doc/html/a00370.html @@ -0,0 +1,143 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A > Member List
+
+
+ +

This is the complete list of members for tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
accessor_location (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >friend
accessor_location (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >friend
allocate_node_copy_construct(node_allocator_type &allocator, const Key &key, const T *t) (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inlineprotectedstatic
allocate_node_default_construct(node_allocator_type &allocator, const Key &key, const T *) (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inlineprotectedstatic
allocate_node_emplace_construct(node_allocator_type &allocator, Args &&...args) (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inlineprotectedstatic
allocate_node_move_construct(node_allocator_type &allocator, const Key &key, const T *t) (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inlineprotectedstatic
allocator_type typedef (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >
begin() (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
begin() const (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
bucket_count() const tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
clear()tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >
concurrent_hash_map(const allocator_type &a=allocator_type())tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
concurrent_hash_map(size_type n, const allocator_type &a=allocator_type())tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
concurrent_hash_map(const concurrent_hash_map &table, const allocator_type &a=allocator_type())tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
concurrent_hash_map(concurrent_hash_map &&table)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
concurrent_hash_map(concurrent_hash_map &&table, const allocator_type &a)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
concurrent_hash_map(I first, I last, const allocator_type &a=allocator_type())tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
concurrent_hash_map(std::initializer_list< value_type > il, const allocator_type &a=allocator_type())tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
const_accessor (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >friend
const_iterator typedef (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >
const_pointer typedef (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >
const_range_type typedef (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >
const_reference typedef (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >
count(const Key &key) const tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
delete_node(node_base *n) (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inlineprotected
difference_type typedef (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >
do_not_allocate_node(node_allocator_type &, const Key &, const T *) (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inlineprotectedstatic
emplace(const_accessor &result, Args &&...args)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
emplace(accessor &result, Args &&...args)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
emplace(Args &&...args)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
empty() const tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
end() (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
end() const (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
equal_range(const Key &key) (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
equal_range(const Key &key) const (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
erase(const Key &key)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >
erase(const_accessor &item_accessor)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
erase(accessor &item_accessor)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
exclude(const_accessor &item_accessor)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >protected
find(const_accessor &result, const Key &key) const tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
find(accessor &result, const Key &key)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
generic_emplace(Accessor &&result, Args &&...args) (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inlineprotected
generic_move_insert(Accessor &&result, value_type &&value) (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inlineprotected
get_allocator() const tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
insert(const_accessor &result, const Key &key)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
insert(accessor &result, const Key &key)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
insert(const_accessor &result, const value_type &value)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
insert(accessor &result, const value_type &value)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
insert(const value_type &value)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
insert(const_accessor &result, value_type &&value)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
insert(accessor &result, value_type &&value)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
insert(value_type &&value)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
insert(I first, I last)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
insert(std::initializer_list< value_type > il)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
internal::hash_map_iterator (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >friend
internal::hash_map_range (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >friend
internal_copy(const concurrent_hash_map &source)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >protected
internal_copy(I first, I last) (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >protected
internal_equal_range(const Key &key, I end) const tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >protected
internal_fast_find(const Key &key) const tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inlineprotected
is_write_access_needed (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >friend
is_write_access_needed (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >friend
is_write_access_needed (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >friend
iterator typedef (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >
key_type typedef (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >
lookup(bool op_insert, const Key &key, const T *t, const_accessor *result, bool write, node *(*allocate_node)(node_allocator_type &, const Key &, const T *), node *tmp_n=0)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >protected
mapped_type typedef (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >
max_size() const tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
my_allocator (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >protected
my_hash_compare (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >protected
node_allocator_type typedef (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >protected
operator=(const concurrent_hash_map &table)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
operator=(concurrent_hash_map &&table)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
operator=(std::initializer_list< value_type > il)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
pointer typedef (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >
range(size_type grainsize=1) (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
range(size_type grainsize=1) const (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
range_type typedef (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >
reference typedef (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >
rehash(size_type n=0)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >
rehash_bucket(bucket *b_new, const hashcode_t h) (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inlineprotected
search_bucket(const key_type &key, bucket *b) const (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inlineprotected
size() const tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
size_type typedef (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >
swap(concurrent_hash_map &table)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >
value_type typedef (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >
~concurrent_hash_map()tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >inline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00371.html b/doc/html/a00371.html new file mode 100644 index 0000000000..14a24dc012 --- /dev/null +++ b/doc/html/a00371.html @@ -0,0 +1,66 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00372.html b/doc/html/a00372.html new file mode 100644 index 0000000000..0631c6e2fc --- /dev/null +++ b/doc/html/a00372.html @@ -0,0 +1,57 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor_not_used Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00373.html b/doc/html/a00373.html new file mode 100644 index 0000000000..f4c71d1440 --- /dev/null +++ b/doc/html/a00373.html @@ -0,0 +1,60 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::bucket_accessor Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00374.html b/doc/html/a00374.html new file mode 100644 index 0000000000..50533a58f0 --- /dev/null +++ b/doc/html/a00374.html @@ -0,0 +1,60 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::call_clear_on_leave Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00375.html b/doc/html/a00375.html new file mode 100644 index 0000000000..5e71fc03af --- /dev/null +++ b/doc/html/a00375.html @@ -0,0 +1,68 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor Member List
+
+
+ +

This is the complete list of members for tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor, including all inherited members.

+ + + + + + + + + + + + + +
accessor (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessorfriend
concurrent_hash_map< Key, T, HashCompare, Allocator > (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessorfriend
const_accessor()tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessorinline
empty() const tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessorinline
is_writer() (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessorinlineprotected
my_hash (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessorprotected
my_node (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessorprotected
operator*() const tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessorinline
operator->() const tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessorinline
release()tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessorinline
value_type typedeftbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessor
~const_accessor()tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::const_accessorinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00376.html b/doc/html/a00376.html new file mode 100644 index 0000000000..1e604fb51f --- /dev/null +++ b/doc/html/a00376.html @@ -0,0 +1,66 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node Member List
+
+
+ +

This is the complete list of members for tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node, including all inherited members.

+ + + + + + + + + + + +
item (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node
node(const Key &key) (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::nodeinline
node(const Key &key, const T &t) (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::nodeinline
node(const Key &key, T &&t) (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::nodeinline
node(value_type &&i) (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::nodeinline
node(Args &&...args) (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::nodeinline
node(value_type &i) (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::nodeinline
node(const value_type &i) (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::nodeinline
operator delete(void *ptr, node_allocator_type &a) (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::nodeinline
operator new(size_t, node_allocator_type &a) (defined in tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::node)tbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::nodeinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00377.html b/doc/html/a00377.html new file mode 100644 index 0000000000..b8ba5ff8af --- /dev/null +++ b/doc/html/a00377.html @@ -0,0 +1,84 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface5::concurrent_priority_queue< T, Compare, A > Member List
+
+
+ +

This is the complete list of members for tbb::interface5::concurrent_priority_queue< T, Compare, A >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
allocator_type typedeftbb::interface5::concurrent_priority_queue< T, Compare, A >
assign(InputIterator begin, InputIterator end)tbb::interface5::concurrent_priority_queue< T, Compare, A >inline
assign(std::initializer_list< T > il)tbb::interface5::concurrent_priority_queue< T, Compare, A >inline
clear()tbb::interface5::concurrent_priority_queue< T, Compare, A >inline
concurrent_priority_queue(const allocator_type &a=allocator_type())tbb::interface5::concurrent_priority_queue< T, Compare, A >inlineexplicit
concurrent_priority_queue(size_type init_capacity, const allocator_type &a=allocator_type())tbb::interface5::concurrent_priority_queue< T, Compare, A >inlineexplicit
concurrent_priority_queue(InputIterator begin, InputIterator end, const allocator_type &a=allocator_type())tbb::interface5::concurrent_priority_queue< T, Compare, A >inline
concurrent_priority_queue(std::initializer_list< T > init_list, const allocator_type &a=allocator_type())tbb::interface5::concurrent_priority_queue< T, Compare, A >inline
concurrent_priority_queue(const concurrent_priority_queue &src)tbb::interface5::concurrent_priority_queue< T, Compare, A >inlineexplicit
concurrent_priority_queue(const concurrent_priority_queue &src, const allocator_type &a)tbb::interface5::concurrent_priority_queue< T, Compare, A >inline
concurrent_priority_queue(concurrent_priority_queue &&src)tbb::interface5::concurrent_priority_queue< T, Compare, A >inline
concurrent_priority_queue(concurrent_priority_queue &&src, const allocator_type &a)tbb::interface5::concurrent_priority_queue< T, Compare, A >inline
const_reference typedeftbb::interface5::concurrent_priority_queue< T, Compare, A >
difference_type typedeftbb::interface5::concurrent_priority_queue< T, Compare, A >
emplace(Args &&...args)tbb::interface5::concurrent_priority_queue< T, Compare, A >inline
empty() const tbb::interface5::concurrent_priority_queue< T, Compare, A >inline
get_allocator() const tbb::interface5::concurrent_priority_queue< T, Compare, A >inline
operator=(const concurrent_priority_queue &src)tbb::interface5::concurrent_priority_queue< T, Compare, A >inline
operator=(concurrent_priority_queue &&src)tbb::interface5::concurrent_priority_queue< T, Compare, A >inline
operator=(std::initializer_list< T > il)tbb::interface5::concurrent_priority_queue< T, Compare, A >inline
push(const_reference elem)tbb::interface5::concurrent_priority_queue< T, Compare, A >inline
push(value_type &&elem)tbb::interface5::concurrent_priority_queue< T, Compare, A >inline
reference typedeftbb::interface5::concurrent_priority_queue< T, Compare, A >
size() const tbb::interface5::concurrent_priority_queue< T, Compare, A >inline
size_type typedeftbb::interface5::concurrent_priority_queue< T, Compare, A >
swap(concurrent_priority_queue &q)tbb::interface5::concurrent_priority_queue< T, Compare, A >inline
try_pop(reference elem)tbb::interface5::concurrent_priority_queue< T, Compare, A >inline
value_type typedeftbb::interface5::concurrent_priority_queue< T, Compare, A >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00378.html b/doc/html/a00378.html new file mode 100644 index 0000000000..adcda40522 --- /dev/null +++ b/doc/html/a00378.html @@ -0,0 +1,65 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping > Member List
+
+
+ +

This is the complete list of members for tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >, including all inherited members.

+ + + + + + + + + + +
allocator_type typedef (defined in tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >)tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >protected
allow_multimapping enum value (defined in tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >)tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >protected
concurrent_unordered_map_traits() (defined in tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >)tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >inlineprotected
concurrent_unordered_map_traits(const hash_compare &hc) (defined in tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >)tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >inlineprotected
get_key(const std::pair< Type1, Type2 > &value) (defined in tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >)tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >inlineprotectedstatic
hash_compare typedef (defined in tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >)tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >protected
key_type typedef (defined in tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >)tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >protected
my_hash_compare (defined in tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >)tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >protected
value_type typedef (defined in tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >)tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >protected
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00379.html b/doc/html/a00379.html new file mode 100644 index 0000000000..a16dfd33d4 --- /dev/null +++ b/doc/html/a00379.html @@ -0,0 +1,60 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >::value_compare Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00380.html b/doc/html/a00380.html new file mode 100644 index 0000000000..7788c6a9d0 --- /dev/null +++ b/doc/html/a00380.html @@ -0,0 +1,86 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator > Member List
+
+
+ +

This is the complete list of members for tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
allocator_type typedef (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >
at(const key_type &key) (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >inline
at(const key_type &key) const (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >inline
concurrent_unordered_map(size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type()) (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >inlineexplicit
concurrent_unordered_map(const Allocator &a) (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >inline
concurrent_unordered_map(Iterator first, Iterator last, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type()) (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >inline
concurrent_unordered_map(std::initializer_list< value_type > il, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >inline
concurrent_unordered_map(const concurrent_unordered_map &table) (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >inline
concurrent_unordered_map(concurrent_unordered_map &&table) (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >inline
concurrent_unordered_map(const concurrent_unordered_map &table, const Allocator &a) (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >inline
concurrent_unordered_map(concurrent_unordered_map &&table, const Allocator &a) (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >inline
const_iterator typedef (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >
const_local_iterator typedef (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >
const_pointer typedef (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >
const_reference typedef (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >
difference_type typedef (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >
hasher typedef (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >
iterator typedef (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >
key_compare typedef (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >
key_equal typedef (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >
key_type typedef (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >
local_iterator typedef (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >
mapped_type typedef (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >
operator=(const concurrent_unordered_map &table) (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >inline
operator=(concurrent_unordered_map &&table) (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >inline
operator[](const key_type &key) (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >inline
pointer typedef (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >
reference typedef (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >
size_type typedef (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >
value_type typedef (defined in tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_map< Key, T, Hasher, Key_equality, Allocator >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00381.html b/doc/html/a00381.html new file mode 100644 index 0000000000..451eb444b6 --- /dev/null +++ b/doc/html/a00381.html @@ -0,0 +1,83 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator > Member List
+
+
+ +

This is the complete list of members for tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
allocator_type typedef (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >
concurrent_unordered_multimap(size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type()) (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >inlineexplicit
concurrent_unordered_multimap(const Allocator &a) (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >inline
concurrent_unordered_multimap(Iterator first, Iterator last, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type()) (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >inline
concurrent_unordered_multimap(std::initializer_list< value_type > il, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type())tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >inline
concurrent_unordered_multimap(const concurrent_unordered_multimap &table) (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >inline
concurrent_unordered_multimap(concurrent_unordered_multimap &&table) (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >inline
concurrent_unordered_multimap(const concurrent_unordered_multimap &table, const Allocator &a) (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >inline
concurrent_unordered_multimap(concurrent_unordered_multimap &&table, const Allocator &a) (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >inline
const_iterator typedef (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >
const_local_iterator typedef (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >
const_pointer typedef (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >
const_reference typedef (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >
difference_type typedef (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >
hasher typedef (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >
iterator typedef (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >
key_compare typedef (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >
key_equal typedef (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >
key_type typedef (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >
local_iterator typedef (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >
mapped_type typedef (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >
operator=(const concurrent_unordered_multimap &table) (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >inline
operator=(concurrent_unordered_multimap &&table) (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >inline
pointer typedef (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >
reference typedef (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >
size_type typedef (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >
value_type typedef (defined in tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multimap< Key, T, Hasher, Key_equality, Allocator >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00382.html b/doc/html/a00382.html new file mode 100644 index 0000000000..60aa51f86c --- /dev/null +++ b/doc/html/a00382.html @@ -0,0 +1,66 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping > Member List
+
+
+ +

This is the complete list of members for tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping >, including all inherited members.

+ + + + + + + + + + + +
allocator_type typedef (defined in tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping >)tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping >protected
allow_multimapping enum value (defined in tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping >)tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping >protected
concurrent_unordered_set_traits() (defined in tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping >)tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping >inlineprotected
concurrent_unordered_set_traits(const hash_compare &hc) (defined in tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping >)tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping >inlineprotected
get_key(const value_type &value) (defined in tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping >)tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping >inlineprotectedstatic
hash_compare typedef (defined in tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping >)tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping >protected
key_type typedef (defined in tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping >)tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping >protected
my_hash_compare (defined in tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping >)tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping >protected
value_compare typedef (defined in tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping >)tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping >protected
value_type typedef (defined in tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping >)tbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping >protected
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00383.html b/doc/html/a00383.html new file mode 100644 index 0000000000..0e0849070c --- /dev/null +++ b/doc/html/a00383.html @@ -0,0 +1,83 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator > Member List
+
+
+ +

This is the complete list of members for tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
allocator_type typedef (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >
concurrent_unordered_set(size_type n_of_buckets=base_type::initial_bucket_number, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type()) (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >inlineexplicit
concurrent_unordered_set(const Allocator &a) (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >inline
concurrent_unordered_set(Iterator first, Iterator last, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type()) (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >inline
concurrent_unordered_set(std::initializer_list< value_type > il, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type())tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >inline
concurrent_unordered_set(const concurrent_unordered_set &table) (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >inline
concurrent_unordered_set(concurrent_unordered_set &&table) (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >inline
concurrent_unordered_set(const concurrent_unordered_set &table, const Allocator &a) (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >inline
concurrent_unordered_set(concurrent_unordered_set &&table, const Allocator &a) (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >inline
const_iterator typedef (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >
const_local_iterator typedef (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >
const_pointer typedef (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >
const_reference typedef (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >
difference_type typedef (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >
hasher typedef (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >
iterator typedef (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >
key_compare typedef (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >
key_equal typedef (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >
key_type typedef (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >
local_iterator typedef (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >
mapped_type typedef (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >
operator=(const concurrent_unordered_set &table) (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >inline
operator=(concurrent_unordered_set &&table) (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >inline
pointer typedef (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >
reference typedef (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >
size_type typedef (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >
value_type typedef (defined in tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_set< Key, Hasher, Key_equality, Allocator >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00384.html b/doc/html/a00384.html new file mode 100644 index 0000000000..5cdea28725 --- /dev/null +++ b/doc/html/a00384.html @@ -0,0 +1,83 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator > Member List
+
+
+ +

This is the complete list of members for tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
allocator_type typedef (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >
concurrent_unordered_multiset(size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type()) (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >inlineexplicit
concurrent_unordered_multiset(const Allocator &a) (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >inline
concurrent_unordered_multiset(Iterator first, Iterator last, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &_Hasher=hasher(), const key_equal &_Key_equality=key_equal(), const allocator_type &a=allocator_type()) (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >inline
concurrent_unordered_multiset(std::initializer_list< value_type > il, size_type n_of_buckets=base_type::initial_bucket_number, const hasher &a_hasher=hasher(), const key_equal &a_keyeq=key_equal(), const allocator_type &a=allocator_type())tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >inline
concurrent_unordered_multiset(const concurrent_unordered_multiset &table) (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >inline
concurrent_unordered_multiset(concurrent_unordered_multiset &&table) (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >inline
concurrent_unordered_multiset(const concurrent_unordered_multiset &table, const Allocator &a) (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >inline
concurrent_unordered_multiset(concurrent_unordered_multiset &&table, const Allocator &a) (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >inline
const_iterator typedef (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >
const_local_iterator typedef (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >
const_pointer typedef (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >
const_reference typedef (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >
difference_type typedef (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >
hasher typedef (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >
iterator typedef (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >
key_compare typedef (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >
key_equal typedef (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >
key_type typedef (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >
local_iterator typedef (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >
mapped_type typedef (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >
operator=(const concurrent_unordered_multiset &table) (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >inline
operator=(concurrent_unordered_multiset &&table) (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >inline
pointer typedef (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >
reference typedef (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >
size_type typedef (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >
value_type typedef (defined in tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >)tbb::interface5::concurrent_unordered_multiset< Key, Hasher, Key_equality, Allocator >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00385.html b/doc/html/a00385.html new file mode 100644 index 0000000000..18090e44ca --- /dev/null +++ b/doc/html/a00385.html @@ -0,0 +1,70 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface5::reader_writer_lock Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00386.html b/doc/html/a00386.html new file mode 100644 index 0000000000..23af3a6188 --- /dev/null +++ b/doc/html/a00386.html @@ -0,0 +1,61 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface5::reader_writer_lock::scoped_lock Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00387.html b/doc/html/a00387.html new file mode 100644 index 0000000000..f6b1bab802 --- /dev/null +++ b/doc/html/a00387.html @@ -0,0 +1,61 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface5::reader_writer_lock::scoped_lock_read Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00388.html b/doc/html/a00388.html new file mode 100644 index 0000000000..af05f34495 --- /dev/null +++ b/doc/html/a00388.html @@ -0,0 +1,58 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface5::internal::use_element_copy_constructor< T, C > Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00389.html b/doc/html/a00389.html new file mode 100644 index 0000000000..48d05b1766 --- /dev/null +++ b/doc/html/a00389.html @@ -0,0 +1,57 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface5::internal::use_element_copy_constructor< T, false > Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00390.html b/doc/html/a00390.html new file mode 100644 index 0000000000..0029102e53 --- /dev/null +++ b/doc/html/a00390.html @@ -0,0 +1,65 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface6::aggregator_operation Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00391.html b/doc/html/a00391.html new file mode 100644 index 0000000000..4b93f749a1 --- /dev/null +++ b/doc/html/a00391.html @@ -0,0 +1,59 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface6::aggregator_ext< handler_type > Member List
+
+
+ +

This is the complete list of members for tbb::interface6::aggregator_ext< handler_type >, including all inherited members.

+ + + + +
aggregator_ext(const handler_type &h) (defined in tbb::interface6::aggregator_ext< handler_type >)tbb::interface6::aggregator_ext< handler_type >inline
execute_impl(aggregator_operation &op)tbb::interface6::aggregator_ext< handler_type >inlineprotected
process(aggregator_operation *op)tbb::interface6::aggregator_ext< handler_type >inline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00392.html b/doc/html/a00392.html new file mode 100644 index 0000000000..3b797e73fc --- /dev/null +++ b/doc/html/a00392.html @@ -0,0 +1,61 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface6::aggregator Member List
+
+
+ +

This is the complete list of members for tbb::interface6::aggregator, including all inherited members.

+ + + + + + +
aggregator() (defined in tbb::interface6::aggregator)tbb::interface6::aggregatorinline
aggregator_ext(const internal::basic_handler &h) (defined in tbb::interface6::aggregator_ext< internal::basic_handler >)tbb::interface6::aggregator_ext< internal::basic_handler >inlineprivate
execute(const Body &b)tbb::interface6::aggregatorinline
execute_impl(aggregator_operation &op)tbb::interface6::aggregator_ext< internal::basic_handler >inlineprivate
process(aggregator_operation *op)tbb::interface6::aggregator_ext< internal::basic_handler >inlineprivate
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00393.html b/doc/html/a00393.html new file mode 100644 index 0000000000..ea80506ec2 --- /dev/null +++ b/doc/html/a00393.html @@ -0,0 +1,60 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface6::concurrent_lru_cache< key_type, value_type, value_functor_type > Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00394.html b/doc/html/a00394.html new file mode 100644 index 0000000000..99eeb1828a --- /dev/null +++ b/doc/html/a00394.html @@ -0,0 +1,96 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type > Member List
+
+
+ +

This is the complete list of members for tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
allocator_type typedeftbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >
begin()tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
begin() const tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
clear()tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
combine(combine_func_t f_combine) (defined in tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
combine_each(combine_func_t f_combine) (defined in tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
const_iterator typedef (defined in tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >
const_pointer typedef (defined in tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >
const_range_type typedef (defined in tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >
const_reference typedef (defined in tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >
difference_type typedef (defined in tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >
empty() const tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
end()tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
end() const tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
enumerable_thread_specific (defined in tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >friend
enumerable_thread_specific()tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
enumerable_thread_specific(Finit finit)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
enumerable_thread_specific(const T &exemplar)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
enumerable_thread_specific(T &&exemplar) (defined in tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
enumerable_thread_specific(P1 &&arg1, P &&...args)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
enumerable_thread_specific(const enumerable_thread_specific &other) (defined in tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
enumerable_thread_specific(const enumerable_thread_specific< T, Alloc, Cachetype > &other) (defined in tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
enumerable_thread_specific(enumerable_thread_specific &&other) (defined in tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
enumerable_thread_specific(enumerable_thread_specific< T, Alloc, Cachetype > &&other) (defined in tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
iterator typedef (defined in tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >
local()tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
local(bool &exists)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
operator=(const enumerable_thread_specific &other) (defined in tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
operator=(const enumerable_thread_specific< T, Alloc, Cachetype > &other) (defined in tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
operator=(enumerable_thread_specific &&other) (defined in tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
operator=(enumerable_thread_specific< T, Alloc, Cachetype > &&other) (defined in tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
pointer typedef (defined in tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >
range(size_t grainsize=1)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
range(size_t grainsize=1) const tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
range_type typedef (defined in tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >
reference typedef (defined in tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >
size() const tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
size_type typedef (defined in tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >
value_type typedef (defined in tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >)tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >
~enumerable_thread_specific()tbb::interface6::enumerable_thread_specific< T, Allocator, ETS_key_type >inline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00395.html b/doc/html/a00395.html new file mode 100644 index 0000000000..9122011429 --- /dev/null +++ b/doc/html/a00395.html @@ -0,0 +1,73 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface6::flattened2d< Container > Member List
+
+
+ +

This is the complete list of members for tbb::interface6::flattened2d< Container >, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
allocator_type typedef (defined in tbb::interface6::flattened2d< Container >)tbb::interface6::flattened2d< Container >
begin() (defined in tbb::interface6::flattened2d< Container >)tbb::interface6::flattened2d< Container >inline
begin() const (defined in tbb::interface6::flattened2d< Container >)tbb::interface6::flattened2d< Container >inline
const_iterator typedef (defined in tbb::interface6::flattened2d< Container >)tbb::interface6::flattened2d< Container >
const_pointer typedef (defined in tbb::interface6::flattened2d< Container >)tbb::interface6::flattened2d< Container >
const_reference typedef (defined in tbb::interface6::flattened2d< Container >)tbb::interface6::flattened2d< Container >
difference_type typedef (defined in tbb::interface6::flattened2d< Container >)tbb::interface6::flattened2d< Container >
end() (defined in tbb::interface6::flattened2d< Container >)tbb::interface6::flattened2d< Container >inline
end() const (defined in tbb::interface6::flattened2d< Container >)tbb::interface6::flattened2d< Container >inline
flattened2d(const Container &c, typename Container::const_iterator b, typename Container::const_iterator e) (defined in tbb::interface6::flattened2d< Container >)tbb::interface6::flattened2d< Container >inline
flattened2d(const Container &c) (defined in tbb::interface6::flattened2d< Container >)tbb::interface6::flattened2d< Container >inline
iterator typedef (defined in tbb::interface6::flattened2d< Container >)tbb::interface6::flattened2d< Container >
pointer typedef (defined in tbb::interface6::flattened2d< Container >)tbb::interface6::flattened2d< Container >
reference typedef (defined in tbb::interface6::flattened2d< Container >)tbb::interface6::flattened2d< Container >
size() const (defined in tbb::interface6::flattened2d< Container >)tbb::interface6::flattened2d< Container >inline
size_type typedeftbb::interface6::flattened2d< Container >
value_type typedef (defined in tbb::interface6::flattened2d< Container >)tbb::interface6::flattened2d< Container >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00396.html b/doc/html/a00396.html new file mode 100644 index 0000000000..ab1a37cb5d --- /dev/null +++ b/doc/html/a00396.html @@ -0,0 +1,80 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface6::memory_pool_allocator< T, P > Member List
+
+
+ +

This is the complete list of members for tbb::interface6::memory_pool_allocator< T, P >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
address(reference x) const (defined in tbb::interface6::memory_pool_allocator< T, P >)tbb::interface6::memory_pool_allocator< T, P >inline
address(const_reference x) const (defined in tbb::interface6::memory_pool_allocator< T, P >)tbb::interface6::memory_pool_allocator< T, P >inline
allocate(size_type n, const void *=0)tbb::interface6::memory_pool_allocator< T, P >inline
const_pointer typedef (defined in tbb::interface6::memory_pool_allocator< T, P >)tbb::interface6::memory_pool_allocator< T, P >
const_reference typedef (defined in tbb::interface6::memory_pool_allocator< T, P >)tbb::interface6::memory_pool_allocator< T, P >
construct(U *p, Args &&...args)tbb::interface6::memory_pool_allocator< T, P >inline
construct(pointer p, value_type &&value) (defined in tbb::interface6::memory_pool_allocator< T, P >)tbb::interface6::memory_pool_allocator< T, P >inline
construct(pointer p, const value_type &value) (defined in tbb::interface6::memory_pool_allocator< T, P >)tbb::interface6::memory_pool_allocator< T, P >inline
deallocate(pointer p, size_type)tbb::interface6::memory_pool_allocator< T, P >inline
destroy(pointer p)tbb::interface6::memory_pool_allocator< T, P >inline
difference_type typedef (defined in tbb::interface6::memory_pool_allocator< T, P >)tbb::interface6::memory_pool_allocator< T, P >
max_size() const tbb::interface6::memory_pool_allocator< T, P >inline
memory_pool_allocator (defined in tbb::interface6::memory_pool_allocator< T, P >)tbb::interface6::memory_pool_allocator< T, P >friend
memory_pool_allocator(pool_type &pool) (defined in tbb::interface6::memory_pool_allocator< T, P >)tbb::interface6::memory_pool_allocator< T, P >inline
memory_pool_allocator(const memory_pool_allocator &src) (defined in tbb::interface6::memory_pool_allocator< T, P >)tbb::interface6::memory_pool_allocator< T, P >inline
memory_pool_allocator(const memory_pool_allocator< U, P > &src) (defined in tbb::interface6::memory_pool_allocator< T, P >)tbb::interface6::memory_pool_allocator< T, P >inline
my_pool (defined in tbb::interface6::memory_pool_allocator< T, P >)tbb::interface6::memory_pool_allocator< T, P >protected
operator!= (defined in tbb::interface6::memory_pool_allocator< T, P >)tbb::interface6::memory_pool_allocator< T, P >friend
operator== (defined in tbb::interface6::memory_pool_allocator< T, P >)tbb::interface6::memory_pool_allocator< T, P >friend
pointer typedef (defined in tbb::interface6::memory_pool_allocator< T, P >)tbb::interface6::memory_pool_allocator< T, P >
pool_type typedef (defined in tbb::interface6::memory_pool_allocator< T, P >)tbb::interface6::memory_pool_allocator< T, P >protected
reference typedef (defined in tbb::interface6::memory_pool_allocator< T, P >)tbb::interface6::memory_pool_allocator< T, P >
size_type typedef (defined in tbb::interface6::memory_pool_allocator< T, P >)tbb::interface6::memory_pool_allocator< T, P >
value_type typedef (defined in tbb::interface6::memory_pool_allocator< T, P >)tbb::interface6::memory_pool_allocator< T, P >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00397.html b/doc/html/a00397.html new file mode 100644 index 0000000000..54797ef1c1 --- /dev/null +++ b/doc/html/a00397.html @@ -0,0 +1,57 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface6::memory_pool_allocator< T, P >::rebind< U > Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00398.html b/doc/html/a00398.html new file mode 100644 index 0000000000..0ae696ed12 --- /dev/null +++ b/doc/html/a00398.html @@ -0,0 +1,67 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface6::memory_pool_allocator< void, P > Member List
+
+
+ +

This is the complete list of members for tbb::interface6::memory_pool_allocator< void, P >, including all inherited members.

+ + + + + + + + + + + + +
const_pointer typedef (defined in tbb::interface6::memory_pool_allocator< void, P >)tbb::interface6::memory_pool_allocator< void, P >
memory_pool_allocator (defined in tbb::interface6::memory_pool_allocator< void, P >)tbb::interface6::memory_pool_allocator< void, P >friend
memory_pool_allocator(pool_type &pool) (defined in tbb::interface6::memory_pool_allocator< void, P >)tbb::interface6::memory_pool_allocator< void, P >inline
memory_pool_allocator(const memory_pool_allocator &src) (defined in tbb::interface6::memory_pool_allocator< void, P >)tbb::interface6::memory_pool_allocator< void, P >inline
memory_pool_allocator(const memory_pool_allocator< U, P > &src) (defined in tbb::interface6::memory_pool_allocator< void, P >)tbb::interface6::memory_pool_allocator< void, P >inline
my_pool (defined in tbb::interface6::memory_pool_allocator< void, P >)tbb::interface6::memory_pool_allocator< void, P >protected
operator!= (defined in tbb::interface6::memory_pool_allocator< void, P >)tbb::interface6::memory_pool_allocator< void, P >friend
operator== (defined in tbb::interface6::memory_pool_allocator< void, P >)tbb::interface6::memory_pool_allocator< void, P >friend
pointer typedef (defined in tbb::interface6::memory_pool_allocator< void, P >)tbb::interface6::memory_pool_allocator< void, P >
pool_type typedef (defined in tbb::interface6::memory_pool_allocator< void, P >)tbb::interface6::memory_pool_allocator< void, P >
value_type typedef (defined in tbb::interface6::memory_pool_allocator< void, P >)tbb::interface6::memory_pool_allocator< void, P >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00399.html b/doc/html/a00399.html new file mode 100644 index 0000000000..3f7b71f658 --- /dev/null +++ b/doc/html/a00399.html @@ -0,0 +1,57 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface6::memory_pool_allocator< void, P >::rebind< U > Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00400.html b/doc/html/a00400.html new file mode 100644 index 0000000000..3afa403775 --- /dev/null +++ b/doc/html/a00400.html @@ -0,0 +1,58 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface6::memory_pool< Alloc > Member List
+
+
+ +

This is the complete list of members for tbb::interface6::memory_pool< Alloc >, including all inherited members.

+ + + +
memory_pool(const Alloc &src=Alloc())tbb::interface6::memory_pool< Alloc >
~memory_pool()tbb::interface6::memory_pool< Alloc >inline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00401.html b/doc/html/a00401.html new file mode 100644 index 0000000000..6ee01232f3 --- /dev/null +++ b/doc/html/a00401.html @@ -0,0 +1,58 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface6::fixed_pool Member List
+
+
+ +

This is the complete list of members for tbb::interface6::fixed_pool, including all inherited members.

+ + + +
fixed_pool(void *buf, size_t size)tbb::interface6::fixed_poolinline
~fixed_pool()tbb::interface6::fixed_poolinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00402.html b/doc/html/a00402.html new file mode 100644 index 0000000000..7e97ac3e9e --- /dev/null +++ b/doc/html/a00402.html @@ -0,0 +1,58 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface6::flow_control Member List
+
+
+ +

This is the complete list of members for tbb::interface6::flow_control, including all inherited members.

+ + + +
internal::concrete_filter (defined in tbb::interface6::flow_control)tbb::interface6::flow_controlfriend
stop() (defined in tbb::interface6::flow_control)tbb::interface6::flow_controlinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00403.html b/doc/html/a00403.html new file mode 100644 index 0000000000..bcae87d843 --- /dev/null +++ b/doc/html/a00403.html @@ -0,0 +1,65 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface6::filter_t< T, U > Member List
+
+
+ +

This is the complete list of members for tbb::interface6::filter_t< T, U >, including all inherited members.

+ + + + + + + + + + +
clear() (defined in tbb::interface6::filter_t< T, U >)tbb::interface6::filter_t< T, U >inline
filter_t() (defined in tbb::interface6::filter_t< T, U >)tbb::interface6::filter_t< T, U >inline
filter_t(const filter_t< T, U > &rhs) (defined in tbb::interface6::filter_t< T, U >)tbb::interface6::filter_t< T, U >inline
filter_t(tbb::filter::mode mode, const Body &body) (defined in tbb::interface6::filter_t< T, U >)tbb::interface6::filter_t< T, U >inline
internal::pipeline_proxy (defined in tbb::interface6::filter_t< T, U >)tbb::interface6::filter_t< T, U >friend
make_filter(tbb::filter::mode, const Body &)tbb::interface6::filter_t< T, U >friend
operator& (defined in tbb::interface6::filter_t< T, U >)tbb::interface6::filter_t< T, U >friend
operator=(const filter_t< T, U > &rhs) (defined in tbb::interface6::filter_t< T, U >)tbb::interface6::filter_t< T, U >inline
~filter_t() (defined in tbb::interface6::filter_t< T, U >)tbb::interface6::filter_t< T, U >inline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00404.html b/doc/html/a00404.html new file mode 100644 index 0000000000..39eaa5364c --- /dev/null +++ b/doc/html/a00404.html @@ -0,0 +1,72 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface6::runtime_loader Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00405.html b/doc/html/a00405.html new file mode 100644 index 0000000000..b90c326270 --- /dev/null +++ b/doc/html/a00405.html @@ -0,0 +1,71 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface6::task_scheduler_observer Member List
+
+
+ +

This is the complete list of members for tbb::interface6::task_scheduler_observer, including all inherited members.

+ + + + + + + + + + + + + + + + +
allow_sleep enum value (defined in tbb::interface6::task_scheduler_observer)tbb::interface6::task_scheduler_observer
internal::observer_list (defined in tbb::interface6::task_scheduler_observer)tbb::interface6::task_scheduler_observerfriend
internal::observer_proxy (defined in tbb::interface6::task_scheduler_observer)tbb::interface6::task_scheduler_observerfriend
internal::task_scheduler_observer_v3 (defined in tbb::interface6::task_scheduler_observer)tbb::interface6::task_scheduler_observerfriend
is_observing() const tbb::internal::task_scheduler_observer_v3inline
keep_awake enum value (defined in tbb::interface6::task_scheduler_observer)tbb::interface6::task_scheduler_observer
may_sleep()tbb::interface6::task_scheduler_observerinlinevirtual
observe(bool state=true)tbb::interface6::task_scheduler_observerinline
on_scheduler_entry(bool)tbb::internal::task_scheduler_observer_v3inlinevirtual
on_scheduler_exit(bool)tbb::internal::task_scheduler_observer_v3inlinevirtual
task_scheduler_observer(bool local=false)tbb::interface6::task_scheduler_observerinline
task_scheduler_observer(task_arena &a)tbb::interface6::task_scheduler_observerinline
task_scheduler_observer_v3()tbb::internal::task_scheduler_observer_v3inline
~task_scheduler_observer()tbb::interface6::task_scheduler_observerinlinevirtual
~task_scheduler_observer_v3()tbb::internal::task_scheduler_observer_v3inlinevirtual
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00406.html b/doc/html/a00406.html new file mode 100644 index 0000000000..065fe094b9 --- /dev/null +++ b/doc/html/a00406.html @@ -0,0 +1,67 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface6::internal::basic_operation_base Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00407.html b/doc/html/a00407.html new file mode 100644 index 0000000000..60b348da28 --- /dev/null +++ b/doc/html/a00407.html @@ -0,0 +1,67 @@ + + + + + + +Member List + + + + + + +
+ + + + + +
+
+
+
tbb::interface6::internal::basic_operation< Body > Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00408.html b/doc/html/a00408.html new file mode 100644 index 0000000000..630512ac43 --- /dev/null +++ b/doc/html/a00408.html @@ -0,0 +1,58 @@ + + + + + + +Member List + + + + + + +
+ + + + + +
+
+
+
tbb::interface6::internal::basic_handler Member List
+
+
+ +

This is the complete list of members for tbb::interface6::internal::basic_handler, including all inherited members.

+ + + +
basic_handler() (defined in tbb::interface6::internal::basic_handler)tbb::interface6::internal::basic_handlerinline
operator()(aggregator_operation *op_list) const (defined in tbb::interface6::internal::basic_handler)tbb::interface6::internal::basic_handlerinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00409.html b/doc/html/a00409.html new file mode 100644 index 0000000000..96d5ff01fe --- /dev/null +++ b/doc/html/a00409.html @@ -0,0 +1,70 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface7::task_arena Member List
+
+
+ +

This is the complete list of members for tbb::interface7::task_arena, including all inherited members.

+ + + + + + + + + + + + + + + +
current_thread_index()tbb::interface7::task_arenainlinestatic
debug_wait_until_empty()tbb::interface7::task_arenainline
enqueue(const F &f)tbb::interface7::task_arenainline
enqueue(const F &f, priority_t p)tbb::interface7::task_arenainline
execute(F &f)tbb::interface7::task_arenainline
execute(const F &f)tbb::interface7::task_arenainline
initialize()tbb::interface7::task_arenainline
initialize(int max_concurrency, unsigned reserved_for_masters=1)tbb::interface7::task_arenainline
is_active() const tbb::interface7::task_arenainline
task_arena(int max_concurrency=automatic, unsigned reserved_for_masters=1)tbb::interface7::task_arenainline
task_arena(const task_arena &s)tbb::interface7::task_arenainline
tbb::internal::task_scheduler_observer_v3 (defined in tbb::interface7::task_arena)tbb::interface7::task_arenafriend
terminate()tbb::interface7::task_arenainline
~task_arena()tbb::interface7::task_arenainline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00410.html b/doc/html/a00410.html new file mode 100644 index 0000000000..fb189c11b8 --- /dev/null +++ b/doc/html/a00410.html @@ -0,0 +1,63 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::interface9::global_control Member List
+
+
+ +

This is the complete list of members for tbb::interface9::global_control, including all inherited members.

+ + + + + + + + +
active_value(parameter p) (defined in tbb::interface9::global_control)tbb::interface9::global_controlinlinestatic
global_control(parameter p, size_t value) (defined in tbb::interface9::global_control)tbb::interface9::global_controlinline
max_allowed_parallelism enum value (defined in tbb::interface9::global_control)tbb::interface9::global_control
parameter enum name (defined in tbb::interface9::global_control)tbb::interface9::global_control
parameter_max enum value (defined in tbb::interface9::global_control)tbb::interface9::global_control
thread_stack_size enum value (defined in tbb::interface9::global_control)tbb::interface9::global_control
~global_control() (defined in tbb::interface9::global_control)tbb::interface9::global_controlinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00411.html b/doc/html/a00411.html new file mode 100644 index 0000000000..41b633e442 --- /dev/null +++ b/doc/html/a00411.html @@ -0,0 +1,65 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::internal::critical_section_v4 Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00412.html b/doc/html/a00412.html new file mode 100644 index 0000000000..c0b923b882 --- /dev/null +++ b/doc/html/a00412.html @@ -0,0 +1,58 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::internal::critical_section_v4::scoped_lock Member List
+
+
+ +

This is the complete list of members for tbb::internal::critical_section_v4::scoped_lock, including all inherited members.

+ + + +
scoped_lock(critical_section_v4 &lock_me) (defined in tbb::internal::critical_section_v4::scoped_lock)tbb::internal::critical_section_v4::scoped_lockinline
~scoped_lock() (defined in tbb::internal::critical_section_v4::scoped_lock)tbb::internal::critical_section_v4::scoped_lockinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00413.html b/doc/html/a00413.html new file mode 100644 index 0000000000..a16734bddd --- /dev/null +++ b/doc/html/a00413.html @@ -0,0 +1,57 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::internal::task_handle_task< F > Member List
+
+
+ +

This is the complete list of members for tbb::internal::task_handle_task< F >, including all inherited members.

+ + +
task_handle_task(task_handle< F > &h) (defined in tbb::internal::task_handle_task< F >)tbb::internal::task_handle_task< F >inline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00414.html b/doc/html/a00414.html new file mode 100644 index 0000000000..64f6de5143 --- /dev/null +++ b/doc/html/a00414.html @@ -0,0 +1,67 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::internal::task_group_base Member List
+
+
+ +

This is the complete list of members for tbb::internal::task_group_base, including all inherited members.

+ + + + + + + + + + + + +
cancel() (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinline
internal_run(F &f) (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinlineprotected
internal_run_and_wait(F &f) (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinlineprotected
is_canceling() (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinline
my_context (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseprotected
my_root (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseprotected
owner() (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinlineprotected
run(task_handle< F > &h) (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinline
task_group_base(uintptr_t traits=0) (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinline
wait() (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinline
~task_group_base() __TBB_NOEXCEPT(false) (defined in tbb::internal::task_group_base)tbb::internal::task_group_baseinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00415.html b/doc/html/a00415.html new file mode 100644 index 0000000000..b265164006 --- /dev/null +++ b/doc/html/a00415.html @@ -0,0 +1,65 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::internal::task_scheduler_observer_v3 Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00416.html b/doc/html/a00416.html new file mode 100644 index 0000000000..cae00c4071 --- /dev/null +++ b/doc/html/a00416.html @@ -0,0 +1,61 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::internal::tbb_exception_ptr Member List
+
+
+ +

This is the complete list of members for tbb::internal::tbb_exception_ptr, including all inherited members.

+ + + + + + +
allocate() (defined in tbb::internal::tbb_exception_ptr)tbb::internal::tbb_exception_ptrstatic
allocate(const tbb_exception &tag) (defined in tbb::internal::tbb_exception_ptr)tbb::internal::tbb_exception_ptrstatic
allocate(captured_exception &src)tbb::internal::tbb_exception_ptrstatic
destroy()tbb::internal::tbb_exception_ptr
throw_self()tbb::internal::tbb_exception_ptrinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00417.html b/doc/html/a00417.html new file mode 100644 index 0000000000..32b58013a6 --- /dev/null +++ b/doc/html/a00417.html @@ -0,0 +1,58 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::internal::thread_closure_base Member List
+
+
+ +

This is the complete list of members for tbb::internal::thread_closure_base, including all inherited members.

+ + + +
operator delete(void *ptr) (defined in tbb::internal::thread_closure_base)tbb::internal::thread_closure_baseinline
operator new(size_t size) (defined in tbb::internal::thread_closure_base)tbb::internal::thread_closure_baseinline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00418.html b/doc/html/a00418.html new file mode 100644 index 0000000000..6777f60916 --- /dev/null +++ b/doc/html/a00418.html @@ -0,0 +1,61 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::internal::thread_closure_0< F > Member List
+
+
+ +

This is the complete list of members for tbb::internal::thread_closure_0< F >, including all inherited members.

+ + + + + + +
function (defined in tbb::internal::thread_closure_0< F >)tbb::internal::thread_closure_0< F >
operator delete(void *ptr) (defined in tbb::internal::thread_closure_base)tbb::internal::thread_closure_baseinline
operator new(size_t size) (defined in tbb::internal::thread_closure_base)tbb::internal::thread_closure_baseinline
start_routine(void *c) (defined in tbb::internal::thread_closure_0< F >)tbb::internal::thread_closure_0< F >inlinestatic
thread_closure_0(const F &f) (defined in tbb::internal::thread_closure_0< F >)tbb::internal::thread_closure_0< F >inline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00419.html b/doc/html/a00419.html new file mode 100644 index 0000000000..52a4e83cd5 --- /dev/null +++ b/doc/html/a00419.html @@ -0,0 +1,62 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::internal::thread_closure_1< F, X > Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00420.html b/doc/html/a00420.html new file mode 100644 index 0000000000..7e69b3606c --- /dev/null +++ b/doc/html/a00420.html @@ -0,0 +1,63 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::internal::thread_closure_2< F, X, Y > Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00421.html b/doc/html/a00421.html new file mode 100644 index 0000000000..f8050a145d --- /dev/null +++ b/doc/html/a00421.html @@ -0,0 +1,75 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::internal::tbb_thread_v3 Member List
+
+
+ +

This is the complete list of members for tbb::internal::tbb_thread_v3, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
detach()tbb::internal::tbb_thread_v3
get_id() const __TBB_NOEXCEPT(true) (defined in tbb::internal::tbb_thread_v3)tbb::internal::tbb_thread_v3inline
hardware_concurrency() __TBB_NOEXCEPT(true)tbb::internal::tbb_thread_v3static
join()tbb::internal::tbb_thread_v3
joinable() const __TBB_NOEXCEPT(true) (defined in tbb::internal::tbb_thread_v3)tbb::internal::tbb_thread_v3inline
move_v3 (defined in tbb::internal::tbb_thread_v3)tbb::internal::tbb_thread_v3friend
native_handle() (defined in tbb::internal::tbb_thread_v3)tbb::internal::tbb_thread_v3inline
native_handle_type typedef (defined in tbb::internal::tbb_thread_v3)tbb::internal::tbb_thread_v3
native_handle_type typedef (defined in tbb::internal::tbb_thread_v3)tbb::internal::tbb_thread_v3
operator= (defined in tbb::internal::tbb_thread_v3)tbb::internal::tbb_thread_v3inline
operator=(tbb_thread_v3 &x) (defined in tbb::internal::tbb_thread_v3)tbb::internal::tbb_thread_v3inline
swap(tbb_thread_v3 &t) __TBB_NOEXCEPT(true) (defined in tbb::internal::tbb_thread_v3)tbb::internal::tbb_thread_v3inline
tbb::swap (defined in tbb::internal::tbb_thread_v3)tbb::internal::tbb_thread_v3friend
tbb_thread_v3(const tbb_thread_v3 &) (defined in tbb::internal::tbb_thread_v3)tbb::internal::tbb_thread_v3
tbb_thread_v3() __TBB_NOEXCEPT(true)tbb::internal::tbb_thread_v3inline
tbb_thread_v3(F f)tbb::internal::tbb_thread_v3inlineexplicit
tbb_thread_v3(F f, X x)tbb::internal::tbb_thread_v3inline
tbb_thread_v3(F f, X x, Y y)tbb::internal::tbb_thread_v3inline
~tbb_thread_v3() (defined in tbb::internal::tbb_thread_v3)tbb::internal::tbb_thread_v3inline
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00422.html b/doc/html/a00422.html new file mode 100644 index 0000000000..cf813a9a4a --- /dev/null +++ b/doc/html/a00422.html @@ -0,0 +1,68 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::internal::tbb_thread_v3::id Member List
+
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/a00423.html b/doc/html/a00423.html new file mode 100644 index 0000000000..3cb3fe73ce --- /dev/null +++ b/doc/html/a00423.html @@ -0,0 +1,83 @@ + + + + + + +Member List + + + + + + + +
+
+
tbb::strict_ppl::concurrent_queue< T, A > Member List
+
+
+ +

This is the complete list of members for tbb::strict_ppl::concurrent_queue< T, A >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
allocator_type typedeftbb::strict_ppl::concurrent_queue< T, A >
clear()tbb::strict_ppl::concurrent_queue< T, A >
concurrent_queue(const allocator_type &a=allocator_type())tbb::strict_ppl::concurrent_queue< T, A >inlineexplicit
concurrent_queue(InputIterator begin, InputIterator end, const allocator_type &a=allocator_type())tbb::strict_ppl::concurrent_queue< T, A >inline
concurrent_queue(const concurrent_queue &src, const allocator_type &a=allocator_type())tbb::strict_ppl::concurrent_queue< T, A >inline
concurrent_queue(concurrent_queue &&src)tbb::strict_ppl::concurrent_queue< T, A >inline
concurrent_queue(concurrent_queue &&src, const allocator_type &a) (defined in tbb::strict_ppl::concurrent_queue< T, A >)tbb::strict_ppl::concurrent_queue< T, A >inline
const_iterator typedef (defined in tbb::strict_ppl::concurrent_queue< T, A >)tbb::strict_ppl::concurrent_queue< T, A >
const_reference typedeftbb::strict_ppl::concurrent_queue< T, A >
difference_type typedeftbb::strict_ppl::concurrent_queue< T, A >
emplace(Arguments &&...args) (defined in tbb::strict_ppl::concurrent_queue< T, A >)tbb::strict_ppl::concurrent_queue< T, A >inline
empty() const tbb::strict_ppl::concurrent_queue< T, A >inline
get_allocator() const tbb::strict_ppl::concurrent_queue< T, A >inline
internal::concurrent_queue_iterator (defined in tbb::strict_ppl::concurrent_queue< T, A >)tbb::strict_ppl::concurrent_queue< T, A >friend
iterator typedef (defined in tbb::strict_ppl::concurrent_queue< T, A >)tbb::strict_ppl::concurrent_queue< T, A >
push(const T &source)tbb::strict_ppl::concurrent_queue< T, A >inline
push(T &&source) (defined in tbb::strict_ppl::concurrent_queue< T, A >)tbb::strict_ppl::concurrent_queue< T, A >inline
reference typedeftbb::strict_ppl::concurrent_queue< T, A >
size_type typedeftbb::strict_ppl::concurrent_queue< T, A >
try_pop(T &result)tbb::strict_ppl::concurrent_queue< T, A >inline
unsafe_begin() (defined in tbb::strict_ppl::concurrent_queue< T, A >)tbb::strict_ppl::concurrent_queue< T, A >inline
unsafe_begin() const (defined in tbb::strict_ppl::concurrent_queue< T, A >)tbb::strict_ppl::concurrent_queue< T, A >inline
unsafe_end() (defined in tbb::strict_ppl::concurrent_queue< T, A >)tbb::strict_ppl::concurrent_queue< T, A >inline
unsafe_end() const (defined in tbb::strict_ppl::concurrent_queue< T, A >)tbb::strict_ppl::concurrent_queue< T, A >inline
unsafe_size() const tbb::strict_ppl::concurrent_queue< T, A >inline
value_type typedeftbb::strict_ppl::concurrent_queue< T, A >
~concurrent_queue()tbb::strict_ppl::concurrent_queue< T, A >
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/annotated.html b/doc/html/annotated.html new file mode 100644 index 0000000000..d85034b622 --- /dev/null +++ b/doc/html/annotated.html @@ -0,0 +1,236 @@ + + + + + + +Class List + + + + + + + +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 12345]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
oNrmlThe namespace rml contains components of low-level memory pool interface
|\CMemPoolPolicy
oNtbbThe namespace tbb contains all components of the library
|oNflow
|oNinterface5
|oNinterface6
|oNinterface7
|oNinterface9
|oNinternal
|oNstrict_ppl
|oCaligned_spaceBlock of space aligned sufficiently to construct an array T with N elements
|oCatomicPrimary template for atomic
|oCatomic< void * >Specialization for atomic<void*>, for sake of not allowing arithmetic or operator->
|oCblocked_rangeA range over which to iterate
|oCblocked_range2dA 2-dimensional range that models the Range concept
|oCblocked_range3dA 3-dimensional range that models the Range concept
|oCcache_aligned_allocatorMeets "allocator" requirements of ISO C++ Standard, Section 20.1.5
|oCcache_aligned_allocator< void >Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1
|oCcombinableThread-local storage with optional reduction
|oCconcurrent_bounded_queueA high-performance thread-safe blocking concurrent bounded queue
|oCconcurrent_vectorConcurrent vector container
|oCvector_iterator
|oCmutexWrapper around the platform's native reader-writer lock
|oCnull_mutexA mutex which does nothing
|oCnull_rw_mutexA rw mutex which does nothing
|oCparallel_do_feederClass the user supplied algorithm body uses to add new tasks
|oCtask_group_context
|oCpre_scan_tagUsed to indicate that the initial scan is being performed
|oCfinal_scan_tagUsed to indicate that the final scan is being performed
|oCparallel_whileParallel iteration over a stream, with optional addition of more work
|oCfilterA stage in a pipeline
|oCthread_bound_filterA stage in a pipeline served by a user thread
|oCpipelineA processing pipeline that applies filters to items
|oCqueuing_mutexQueuing mutex with local-only spinning
|oCqueuing_rw_mutexQueuing reader-writer mutex with local-only spinning
|oCrecursive_mutex
|oCscalable_allocatorMeets "allocator" requirements of ISO C++ Standard, Section 20.1.5
|oCscalable_allocator< void >Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1
|oCspin_mutexA lock that occupies a single byte
|oCspin_rw_mutex_v3Fast, unfair, spinning reader-writer lock with backoff and writer-preference
|oCtask_handle
|oCtask_group
|oCstructured_task_group
|oCtask_scheduler_initClass delimiting the scope of task scheduler activity
|oCtbb_allocatorMeets "allocator" requirements of ISO C++ Standard, Section 20.1.5
|oCtbb_allocator< void >Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1
|oCzero_allocatorMeets "allocator" requirements of ISO C++ Standard, Section 20.1.5
|oCzero_allocator< void, Allocator >Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1
|oCbad_last_allocException for concurrent containers
|oCimproper_lockException for PPL locks
|oCuser_abortException for user-initiated abort
|oCmissing_waitException for missing wait on structured_task_group
|oCinvalid_multiple_schedulingException for repeated scheduling of the same task_handle
|oCtbb_exceptionInterface to be implemented by all exceptions TBB recognizes and propagates across the threads
|oCcaptured_exceptionThis class is used by TBB to propagate information about unhandled exceptions into the root thread
|oCmovable_exceptionTemplate that can be used to implement exception that transfers arbitrary ExceptionData to the root thread
|\Ctick_countAbsolute timestamp
\C__TBB_malloc_proxy_caller
+
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/bc_s.png b/doc/html/bc_s.png new file mode 100644 index 0000000000..224b29aa98 Binary files /dev/null and b/doc/html/bc_s.png differ diff --git a/doc/html/bdwn.png b/doc/html/bdwn.png new file mode 100644 index 0000000000..940a0b9504 Binary files /dev/null and b/doc/html/bdwn.png differ diff --git a/doc/html/classes.html b/doc/html/classes.html new file mode 100644 index 0000000000..39ec88ac0d --- /dev/null +++ b/doc/html/classes.html @@ -0,0 +1,121 @@ + + + + + + +Class Index + + + + + + + +
+
+
Class Index
+
+
+
A | B | C | E | F | G | I | J | L | M | N | O | P | Q | R | S | T | U | V | W | Z | _
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  A  
+
concurrent_priority_queue (tbb::interface5)   indexer_node< T0, T1, T2, T3, T4 > (tbb::flow::interface8)   queuing_mutex (tbb)   
  T  
+
concurrent_queue (tbb::strict_ppl)   indexer_node< T0, T1, T2, T3, T4, T5 > (tbb::flow::interface8)   queuing_rw_mutex (tbb)   
concurrent_hash_map::accessor (tbb::interface5)   concurrent_unordered_map (tbb::interface5)   indexer_node< T0, T1, T2, T3, T4, T5, T6 > (tbb::flow::interface8)   
  R  
+
task_arena (tbb::interface7)   
concurrent_hash_map::accessor_not_used (tbb::interface5)   concurrent_unordered_map_traits (tbb::interface5)   indexer_node< T0, T1, T2, T3, T4, T5, T6, T7 > (tbb::flow::interface8)   task_group (tbb)   
aggregator (tbb::interface6)   concurrent_unordered_multimap (tbb::interface5)   indexer_node< T0, T1, T2, T3, T4, T5, T6, T7, T8 > (tbb::flow::interface8)   reader_writer_lock (tbb::interface5)   task_group_base (tbb::internal)   
aggregator_ext (tbb::interface6)   concurrent_unordered_multiset (tbb::interface5)   tick_count::interval_t (tbb)   zero_allocator< void, Allocator >::rebind (tbb)   task_group_context (tbb)   
aggregator_operation (tbb::interface6)   concurrent_unordered_set (tbb::interface5)   invalid_multiple_scheduling (tbb)   cache_aligned_allocator::rebind (tbb)   task_handle (tbb)   
aligned_space (tbb)   concurrent_unordered_set_traits (tbb::interface5)   
  J  
+
tbb_allocator::rebind (tbb)   task_handle_task (tbb::internal)   
allocate_buffer (tbb::flow::interface8)   concurrent_vector (tbb)   memory_pool_allocator::rebind (tbb::interface6)   task_scheduler_init (tbb)   
allocate_buffer< queueing > (tbb::flow::interface8)   concurrent_hash_map::const_accessor (tbb::interface5)   join_node (tbb::flow::interface8)   memory_pool_allocator< void, P >::rebind (tbb::interface6)   task_scheduler_observer (tbb::interface6)   
async_gateway (tbb::flow::interface8::internal)   continue_msg (tbb::flow::interface8)   join_node< OutputTuple, key_matching< K, KHash > > (tbb::flow::interface8)   zero_allocator::rebind (tbb)   task_scheduler_observer_v3 (tbb::internal)   
async_node (tbb::flow::interface8)   continue_node (tbb::flow::interface8)   join_node< OutputTuple, queueing > (tbb::flow::interface8)   tbb_allocator< void >::rebind (tbb)   tbb_allocator (tbb)   
atomic (tbb)   continue_receiver (tbb::flow::interface8)   join_node< OutputTuple, reserving > (tbb::flow::interface8)   scalable_allocator< void >::rebind (tbb)   tbb_allocator< void > (tbb)   
atomic< void * > (tbb)   critical_section_v4 (tbb::internal)   
  L  
+
scalable_allocator::rebind (tbb)   tbb_exception (tbb)   
  B  
+
  E  
+
cache_aligned_allocator< void >::rebind (tbb)   tbb_exception_ptr (tbb::internal)   
limiter_node (tbb::flow::interface8)   receiver (tbb::flow::interface8)   tbb_thread_v3 (tbb::internal)   
bad_last_alloc (tbb)   edge_container (tbb::flow::interface8::internal)   
  M  
+
recursive_mutex (tbb)   thread_bound_filter (tbb)   
basic_handler (tbb::interface6::internal)   concurrent_vector::push_back_helper::element_construction_guard (tbb)   round_robin_cache (tbb::flow::interface8::internal)   thread_closure_0 (tbb::internal)   
basic_operation (tbb::interface6::internal)   enumerable_thread_specific (tbb::interface6)   memory_pool (tbb::interface6)   run_and_put_task (tbb::flow::interface8)   thread_closure_1 (tbb::internal)   
basic_operation_base (tbb::interface6::internal)   
  F  
+
memory_pool_allocator (tbb::interface6)   runtime_loader (tbb::interface6)   thread_closure_2 (tbb::internal)   
blocked_range (tbb)   memory_pool_allocator< void, P > (tbb::interface6)   
  S  
+
thread_closure_base (tbb::internal)   
blocked_range2d (tbb)   filter (tbb)   MemPoolPolicy (rml)   tick_count (tbb)   
blocked_range3d (tbb)   filter_t (tbb::interface6)   missing_wait (tbb)   scalable_allocator (tbb)   
  U  
+
broadcast_cache (tbb::flow::interface8::internal)   final_scan_tag (tbb)   movable_exception (tbb)   scalable_allocator< void > (tbb)   
broadcast_node (tbb::flow::interface8)   fixed_pool (tbb::interface6)   multifunction_node (tbb::flow::interface8)   critical_section_v4::scoped_lock (tbb::internal)   use_element_copy_constructor (tbb::interface5::internal)   
concurrent_hash_map::bucket_accessor (tbb::interface5)   flattened2d (tbb::interface6)   mutex (tbb)   spin_rw_mutex_v3::scoped_lock (tbb)   use_element_copy_constructor< T, false > (tbb::interface5::internal)   
buffer_node (tbb::flow::interface8)   flow_control (tbb::interface6)   
  N  
+
recursive_mutex::scoped_lock (tbb)   user_abort (tbb)   
buffer_node::buffer_operation (tbb::flow::interface8)   function_node (tbb::flow::interface8)   null_rw_mutex::scoped_lock (tbb)   
  V  
+
  C  
+
  G  
+
concurrent_hash_map::node (tbb::interface5)   mutex::scoped_lock (tbb)   
null_mutex (tbb)   queuing_mutex::scoped_lock (tbb)   concurrent_unordered_map_traits::value_compare (tbb::interface5)   
cache_aligned_allocator (tbb)   global_control (tbb::interface9)   null_rw_mutex (tbb)   spin_mutex::scoped_lock (tbb)   vector_iterator (tbb)   
cache_aligned_allocator< void > (tbb)   graph (tbb::flow::interface8)   null_type (tbb::flow::interface8)   reader_writer_lock::scoped_lock (tbb::interface5)   
  W  
+
concurrent_hash_map::call_clear_on_leave (tbb::interface5)   graph_iterator (tbb::flow::interface8)   
  O  
+
queuing_rw_mutex::scoped_lock (tbb)   
captured_exception (tbb)   graph_node (tbb::flow::interface8)   null_mutex::scoped_lock (tbb)   write_once_node (tbb::flow::interface8)   
combinable (tbb)   
  I  
+
overwrite_node (tbb::flow::interface8)   reader_writer_lock::scoped_lock_read (tbb::interface5)   
  Z  
+
composite_node (tbb::flow::interface8)   
  P  
+
sender (tbb::flow::interface8)   
composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple< OutputTypes...> > (tbb::flow::interface8)   tbb_thread_v3::id (tbb::internal)   sequencer_node (tbb::flow::interface8)   zero_allocator (tbb)   
composite_node< tbb::flow::tuple< InputTypes...>, tbb::flow::tuple<> > (tbb::flow::interface8)   improper_lock (tbb)   parallel_do_feeder (tbb)   source_node (tbb::flow::interface8)   zero_allocator< void, Allocator > (tbb)   
composite_node< tbb::flow::tuple<>, tbb::flow::tuple< OutputTypes...> > (tbb::flow::interface8)   indexer_node (tbb::flow::interface8)   parallel_while (tbb)   spin_mutex (tbb)   
  _  
+
concrete_filter (tbb::interface6::internal)   indexer_node< T0 > (tbb::flow::interface8)   pipeline (tbb)   spin_rw_mutex_v3 (tbb)   
concurrent_bounded_queue (tbb)   indexer_node< T0, T1 > (tbb::flow::interface8)   pre_scan_tag (tbb)   split_node (tbb::flow::interface8)   __TBB_malloc_proxy_caller   
concurrent_hash_map (tbb::interface5)   indexer_node< T0, T1, T2 > (tbb::flow::interface8)   priority_queue_node (tbb::flow::interface8)   structured_task_group (tbb)   
concurrent_lru_cache (tbb::interface6)   indexer_node< T0, T1, T2, T3 > (tbb::flow::interface8)   
  Q  
+
successor_cache (tbb::flow::interface8::internal)   
queue_node (tbb::flow::interface8)   
+
A | B | C | E | F | G | I | J | L | M | N | O | P | Q | R | S | T | U | V | W | Z | _
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/closed.png b/doc/html/closed.png new file mode 100644 index 0000000000..98cc2c909d Binary files /dev/null and b/doc/html/closed.png differ diff --git a/doc/html/dir_525f2cc589630bacbdc3bb450847427e.html b/doc/html/dir_525f2cc589630bacbdc3bb450847427e.html new file mode 100644 index 0000000000..7a81a723bc --- /dev/null +++ b/doc/html/dir_525f2cc589630bacbdc3bb450847427e.html @@ -0,0 +1,52 @@ + + + + + + +tbb Directory Reference + + + + + + +
+ + + + +
+
+
+
tbb Directory Reference
+
+
+ + + + +

+Directories

directory  1.0
 
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/dir_63fb2cc293d133785b96e521fa051167.html b/doc/html/dir_63fb2cc293d133785b96e521fa051167.html new file mode 100644 index 0000000000..6e4b5a0d27 --- /dev/null +++ b/doc/html/dir_63fb2cc293d133785b96e521fa051167.html @@ -0,0 +1,52 @@ + + + + + + +include Directory Reference + + + + + + + +
+
+
include Directory Reference
+
+
+ + + + +

+Directories

directory  tbb
 
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/dir_87119f26c7695cbc270003e99bc7f49f.html b/doc/html/dir_87119f26c7695cbc270003e99bc7f49f.html new file mode 100644 index 0000000000..62603e49bf --- /dev/null +++ b/doc/html/dir_87119f26c7695cbc270003e99bc7f49f.html @@ -0,0 +1,163 @@ + + + + + + +tbb Directory Reference + + + + + + + +
+
+
tbb Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  aggregator.h
 
file  aligned_space.h
 
file  atomic.h
 
file  blocked_range.h
 
file  blocked_range2d.h
 
file  blocked_range3d.h
 
file  cache_aligned_allocator.h
 
file  combinable.h
 
file  concurrent_hash_map.h
 
file  concurrent_lru_cache.h
 
file  concurrent_priority_queue.h
 
file  concurrent_queue.h
 
file  concurrent_unordered_map.h
 
file  concurrent_unordered_set.h
 
file  concurrent_vector.h
 
file  critical_section.h
 
file  enumerable_thread_specific.h
 
file  flow_graph.h
 The graph related classes and functions.
 
file  global_control.h
 
file  memory_pool.h
 
file  mutex.h
 
file  null_mutex.h
 
file  null_rw_mutex.h
 
file  parallel_do.h
 
file  parallel_for.h
 
file  parallel_for_each.h
 
file  parallel_invoke.h
 
file  parallel_reduce.h
 
file  parallel_scan.h
 
file  parallel_sort.h
 
file  parallel_while.h
 
file  partitioner.h
 
file  pipeline.h
 
file  queuing_mutex.h
 
file  queuing_rw_mutex.h
 
file  reader_writer_lock.h
 
file  recursive_mutex.h
 
file  runtime_loader.h
 
file  scalable_allocator.h
 
file  spin_mutex.h
 
file  spin_rw_mutex.h
 
file  task.h
 
file  task_arena.h
 
file  task_group.h
 
file  task_scheduler_init.h
 
file  task_scheduler_observer.h
 
file  tbb.h
 
file  tbb_allocator.h
 
file  tbb_config.h
 
file  tbb_exception.h
 
file  tbb_machine.h
 
file  tbb_profiling.h
 
file  tbb_stddef.h
 
file  tbb_thread.h
 
file  tbbmalloc_proxy.h
 
file  tick_count.h
 
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/dir_b9976680b2be72d2d0b8fca1c31202a2.html b/doc/html/dir_b9976680b2be72d2d0b8fca1c31202a2.html new file mode 100644 index 0000000000..b2e1fe0d09 --- /dev/null +++ b/doc/html/dir_b9976680b2be72d2d0b8fca1c31202a2.html @@ -0,0 +1,52 @@ + + + + + + +1.0 Directory Reference + + + + + + +
+ + + + +
+
+
+
1.0 Directory Reference
+
+
+ + + + +

+Directories

directory  include
 
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/doxygen.css b/doc/html/doxygen.css new file mode 100644 index 0000000000..3ac2851134 --- /dev/null +++ b/doc/html/doxygen.css @@ -0,0 +1,1186 @@ +/* The standard CSS for doxygen 1.8.4 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd, p.starttd { + margin-top: 2px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 0px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: bold; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view when not used as main index */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 20px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + diff --git a/doc/html/doxygen.png b/doc/html/doxygen.png new file mode 100644 index 0000000000..3ff17d807f Binary files /dev/null and b/doc/html/doxygen.png differ diff --git a/doc/html/dynsections.js b/doc/html/dynsections.js new file mode 100644 index 0000000000..ed092c7f63 --- /dev/null +++ b/doc/html/dynsections.js @@ -0,0 +1,97 @@ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} +function toggleLevel(level) +{ + $('table.directory tr').each(function(){ + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + +File List + + + + + + + +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+ + + + +
o*flow_graph.hThe graph related classes and functions
o*memory_pool.h
\*scalable_allocator.h
+
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/ftv2blank.png b/doc/html/ftv2blank.png new file mode 100644 index 0000000000..63c605bb4c Binary files /dev/null and b/doc/html/ftv2blank.png differ diff --git a/doc/html/ftv2cl.png b/doc/html/ftv2cl.png new file mode 100644 index 0000000000..132f6577bf Binary files /dev/null and b/doc/html/ftv2cl.png differ diff --git a/doc/html/ftv2doc.png b/doc/html/ftv2doc.png new file mode 100644 index 0000000000..17edabff95 Binary files /dev/null and b/doc/html/ftv2doc.png differ diff --git a/doc/html/ftv2folderclosed.png b/doc/html/ftv2folderclosed.png new file mode 100644 index 0000000000..bb8ab35edc Binary files /dev/null and b/doc/html/ftv2folderclosed.png differ diff --git a/doc/html/ftv2folderopen.png b/doc/html/ftv2folderopen.png new file mode 100644 index 0000000000..d6c7f676a3 Binary files /dev/null and b/doc/html/ftv2folderopen.png differ diff --git a/doc/html/ftv2lastnode.png b/doc/html/ftv2lastnode.png new file mode 100644 index 0000000000..63c605bb4c Binary files /dev/null and b/doc/html/ftv2lastnode.png differ diff --git a/doc/html/ftv2link.png b/doc/html/ftv2link.png new file mode 100644 index 0000000000..17edabff95 Binary files /dev/null and b/doc/html/ftv2link.png differ diff --git a/doc/html/ftv2mlastnode.png b/doc/html/ftv2mlastnode.png new file mode 100644 index 0000000000..0b63f6d38c Binary files /dev/null and b/doc/html/ftv2mlastnode.png differ diff --git a/doc/html/ftv2mnode.png b/doc/html/ftv2mnode.png new file mode 100644 index 0000000000..0b63f6d38c Binary files /dev/null and b/doc/html/ftv2mnode.png differ diff --git a/doc/html/ftv2mo.png b/doc/html/ftv2mo.png new file mode 100644 index 0000000000..4bfb80f76e Binary files /dev/null and b/doc/html/ftv2mo.png differ diff --git a/doc/html/ftv2node.png b/doc/html/ftv2node.png new file mode 100644 index 0000000000..63c605bb4c Binary files /dev/null and b/doc/html/ftv2node.png differ diff --git a/doc/html/ftv2ns.png b/doc/html/ftv2ns.png new file mode 100644 index 0000000000..72e3d71c28 Binary files /dev/null and b/doc/html/ftv2ns.png differ diff --git a/doc/html/ftv2plastnode.png b/doc/html/ftv2plastnode.png new file mode 100644 index 0000000000..c6ee22f937 Binary files /dev/null and b/doc/html/ftv2plastnode.png differ diff --git a/doc/html/ftv2pnode.png b/doc/html/ftv2pnode.png new file mode 100644 index 0000000000..c6ee22f937 Binary files /dev/null and b/doc/html/ftv2pnode.png differ diff --git a/doc/html/ftv2splitbar.png b/doc/html/ftv2splitbar.png new file mode 100644 index 0000000000..fe895f2c58 Binary files /dev/null and b/doc/html/ftv2splitbar.png differ diff --git a/doc/html/ftv2vertline.png b/doc/html/ftv2vertline.png new file mode 100644 index 0000000000..63c605bb4c Binary files /dev/null and b/doc/html/ftv2vertline.png differ diff --git a/doc/html/functions.html b/doc/html/functions.html new file mode 100644 index 0000000000..3d0bb4528f --- /dev/null +++ b/doc/html/functions.html @@ -0,0 +1,140 @@ + + + + + + +Class Members + + + + + + +
+ + + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- a -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_0x62.html b/doc/html/functions_0x62.html new file mode 100644 index 0000000000..f8654b7c13 --- /dev/null +++ b/doc/html/functions_0x62.html @@ -0,0 +1,112 @@ + + + + + + +Class Members + + + + + + +
+ + + + + + +
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_0x63.html b/doc/html/functions_0x63.html new file mode 100644 index 0000000000..6903063aa9 --- /dev/null +++ b/doc/html/functions_0x63.html @@ -0,0 +1,173 @@ + + + + + + +Class Members + + + + + + +
+ + + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- c -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_0x64.html b/doc/html/functions_0x64.html new file mode 100644 index 0000000000..6b4476e494 --- /dev/null +++ b/doc/html/functions_0x64.html @@ -0,0 +1,129 @@ + + + + + + +Class Members + + + + + + +
+ + + + + + +
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_0x65.html b/doc/html/functions_0x65.html new file mode 100644 index 0000000000..1379bf4aca --- /dev/null +++ b/doc/html/functions_0x65.html @@ -0,0 +1,171 @@ + + + + + + +Class Members + + + + + + +
+ + + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- e -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_0x66.html b/doc/html/functions_0x66.html new file mode 100644 index 0000000000..b7ec1d9a3f --- /dev/null +++ b/doc/html/functions_0x66.html @@ -0,0 +1,117 @@ + + + + + + +Class Members + + + + + + +
+ + + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- f -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_0x67.html b/doc/html/functions_0x67.html new file mode 100644 index 0000000000..e9ab88d147 --- /dev/null +++ b/doc/html/functions_0x67.html @@ -0,0 +1,109 @@ + + + + + + +Class Members + + + + + + +
+ + + + + + +
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_0x68.html b/doc/html/functions_0x68.html new file mode 100644 index 0000000000..891903880e --- /dev/null +++ b/doc/html/functions_0x68.html @@ -0,0 +1,90 @@ + + + + + + +Class Members + + + + + + +
+ + + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- h -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_0x69.html b/doc/html/functions_0x69.html new file mode 100644 index 0000000000..8af7e7591d --- /dev/null +++ b/doc/html/functions_0x69.html @@ -0,0 +1,152 @@ + + + + + + +Class Members + + + + + + +
+ + + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- i -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_0x6a.html b/doc/html/functions_0x6a.html new file mode 100644 index 0000000000..40f40af503 --- /dev/null +++ b/doc/html/functions_0x6a.html @@ -0,0 +1,90 @@ + + + + + + +Class Members + + + + + + +
+ + + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- j -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_0x6c.html b/doc/html/functions_0x6c.html new file mode 100644 index 0000000000..48a2ddf40c --- /dev/null +++ b/doc/html/functions_0x6c.html @@ -0,0 +1,111 @@ + + + + + + +Class Members + + + + + + +
+ + + + + + +
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_0x6d.html b/doc/html/functions_0x6d.html new file mode 100644 index 0000000000..d349b5cef4 --- /dev/null +++ b/doc/html/functions_0x6d.html @@ -0,0 +1,119 @@ + + + + + + +Class Members + + + + + + +
+ + + + + + +
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_0x6e.html b/doc/html/functions_0x6e.html new file mode 100644 index 0000000000..d55aaf5f4e --- /dev/null +++ b/doc/html/functions_0x6e.html @@ -0,0 +1,99 @@ + + + + + + +Class Members + + + + + + +
+ + + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- n -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_0x6f.html b/doc/html/functions_0x6f.html new file mode 100644 index 0000000000..e1c4b482b8 --- /dev/null +++ b/doc/html/functions_0x6f.html @@ -0,0 +1,153 @@ + + + + + + +Class Members + + + + + + +
+ + + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- o -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_0x70.html b/doc/html/functions_0x70.html new file mode 100644 index 0000000000..398d45f82f --- /dev/null +++ b/doc/html/functions_0x70.html @@ -0,0 +1,125 @@ + + + + + + +Class Members + + + + + + +
+ + + + + + +
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_0x71.html b/doc/html/functions_0x71.html new file mode 100644 index 0000000000..839cc98ab8 --- /dev/null +++ b/doc/html/functions_0x71.html @@ -0,0 +1,96 @@ + + + + + + +Class Members + + + + + + +
+ + + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- q -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_0x72.html b/doc/html/functions_0x72.html new file mode 100644 index 0000000000..8070c61cda --- /dev/null +++ b/doc/html/functions_0x72.html @@ -0,0 +1,181 @@ + + + + + + +Class Members + + + + + + +
+ + + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- r -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_0x73.html b/doc/html/functions_0x73.html new file mode 100644 index 0000000000..c4e0fa6de4 --- /dev/null +++ b/doc/html/functions_0x73.html @@ -0,0 +1,165 @@ + + + + + + +Class Members + + + + + + +
+ + + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- s -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_0x74.html b/doc/html/functions_0x74.html new file mode 100644 index 0000000000..a2e60b531a --- /dev/null +++ b/doc/html/functions_0x74.html @@ -0,0 +1,174 @@ + + + + + + +Class Members + + + + + + +
+ + + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- t -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_0x75.html b/doc/html/functions_0x75.html new file mode 100644 index 0000000000..1bfb2d5bac --- /dev/null +++ b/doc/html/functions_0x75.html @@ -0,0 +1,101 @@ + + + + + + +Class Members + + + + + + +
+ + + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- u -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_0x76.html b/doc/html/functions_0x76.html new file mode 100644 index 0000000000..8ebb821d13 --- /dev/null +++ b/doc/html/functions_0x76.html @@ -0,0 +1,95 @@ + + + + + + +Class Members + + + + + + +
+ + + + + + +
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_0x77.html b/doc/html/functions_0x77.html new file mode 100644 index 0000000000..2fc979231f --- /dev/null +++ b/doc/html/functions_0x77.html @@ -0,0 +1,98 @@ + + + + + + +Class Members + + + + + + +
+ + + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- w -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_0x7e.html b/doc/html/functions_0x7e.html new file mode 100644 index 0000000000..187cb394b6 --- /dev/null +++ b/doc/html/functions_0x7e.html @@ -0,0 +1,171 @@ + + + + + + +Class Members + + + + + + +
+ + + + + + +
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- ~ -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_enum.html b/doc/html/functions_enum.html new file mode 100644 index 0000000000..5256249c2c --- /dev/null +++ b/doc/html/functions_enum.html @@ -0,0 +1,70 @@ + + + + + + +Class Members - Enumerations + + + + + + + + +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_eval.html b/doc/html/functions_eval.html new file mode 100644 index 0000000000..a1ed5c8afe --- /dev/null +++ b/doc/html/functions_eval.html @@ -0,0 +1,85 @@ + + + + + + +Class Members - Enumerator + + + + + + + + +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html new file mode 100644 index 0000000000..25ba6e47a5 --- /dev/null +++ b/doc/html/functions_func.html @@ -0,0 +1,135 @@ + + + + + + +Class Members - Functions + + + + + + +
+ + + + + + +
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_func_0x62.html b/doc/html/functions_func_0x62.html new file mode 100644 index 0000000000..0b991a65a5 --- /dev/null +++ b/doc/html/functions_func_0x62.html @@ -0,0 +1,108 @@ + + + + + + +Class Members - Functions + + + + + + +
+ + + + + + +
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_func_0x63.html b/doc/html/functions_func_0x63.html new file mode 100644 index 0000000000..3b5acd8299 --- /dev/null +++ b/doc/html/functions_func_0x63.html @@ -0,0 +1,164 @@ + + + + + + +Class Members - Functions + + + + + + +
+ + + + + + +
+
+  + +

- c -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_func_0x64.html b/doc/html/functions_func_0x64.html new file mode 100644 index 0000000000..2cbbdeda3d --- /dev/null +++ b/doc/html/functions_func_0x64.html @@ -0,0 +1,117 @@ + + + + + + +Class Members - Functions + + + + + + +
+ + + + + + +
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_func_0x65.html b/doc/html/functions_func_0x65.html new file mode 100644 index 0000000000..5592c052a1 --- /dev/null +++ b/doc/html/functions_func_0x65.html @@ -0,0 +1,135 @@ + + + + + + +Class Members - Functions + + + + + + +
+ + + + + + +
+
+  + +

- e -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_func_0x66.html b/doc/html/functions_func_0x66.html new file mode 100644 index 0000000000..072857aa40 --- /dev/null +++ b/doc/html/functions_func_0x66.html @@ -0,0 +1,104 @@ + + + + + + +Class Members - Functions + + + + + + +
+ + + + + + +
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_func_0x67.html b/doc/html/functions_func_0x67.html new file mode 100644 index 0000000000..f4f7e7c594 --- /dev/null +++ b/doc/html/functions_func_0x67.html @@ -0,0 +1,108 @@ + + + + + + +Class Members - Functions + + + + + + +
+ + + + + + +
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_func_0x68.html b/doc/html/functions_func_0x68.html new file mode 100644 index 0000000000..ebcbd0d639 --- /dev/null +++ b/doc/html/functions_func_0x68.html @@ -0,0 +1,89 @@ + + + + + + +Class Members - Functions + + + + + + +
+ + + + + + +
+
+  + +

- h -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_func_0x69.html b/doc/html/functions_func_0x69.html new file mode 100644 index 0000000000..e0418531cf --- /dev/null +++ b/doc/html/functions_func_0x69.html @@ -0,0 +1,141 @@ + + + + + + +Class Members - Functions + + + + + + +
+ + + + + + +
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_func_0x6a.html b/doc/html/functions_func_0x6a.html new file mode 100644 index 0000000000..bd28be0442 --- /dev/null +++ b/doc/html/functions_func_0x6a.html @@ -0,0 +1,89 @@ + + + + + + +Class Members - Functions + + + + + + +
+ + + + + + +
+
+  + +

- j -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_func_0x6c.html b/doc/html/functions_func_0x6c.html new file mode 100644 index 0000000000..6dc10e9d31 --- /dev/null +++ b/doc/html/functions_func_0x6c.html @@ -0,0 +1,109 @@ + + + + + + +Class Members - Functions + + + + + + +
+ + + + + + +
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_func_0x6d.html b/doc/html/functions_func_0x6d.html new file mode 100644 index 0000000000..38951b2adb --- /dev/null +++ b/doc/html/functions_func_0x6d.html @@ -0,0 +1,108 @@ + + + + + + +Class Members - Functions + + + + + + +
+ + + + + + +
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_func_0x6e.html b/doc/html/functions_func_0x6e.html new file mode 100644 index 0000000000..41945b98a7 --- /dev/null +++ b/doc/html/functions_func_0x6e.html @@ -0,0 +1,94 @@ + + + + + + +Class Members - Functions + + + + + + +
+ + + + + + +
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_func_0x6f.html b/doc/html/functions_func_0x6f.html new file mode 100644 index 0000000000..80bbfa5e56 --- /dev/null +++ b/doc/html/functions_func_0x6f.html @@ -0,0 +1,141 @@ + + + + + + +Class Members - Functions + + + + + + +
+ + + + + + +
+
+  + +

- o -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_func_0x70.html b/doc/html/functions_func_0x70.html new file mode 100644 index 0000000000..b02723f3cf --- /dev/null +++ b/doc/html/functions_func_0x70.html @@ -0,0 +1,116 @@ + + + + + + +Class Members - Functions + + + + + + +
+ + + + + + +
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_func_0x71.html b/doc/html/functions_func_0x71.html new file mode 100644 index 0000000000..afe80ca044 --- /dev/null +++ b/doc/html/functions_func_0x71.html @@ -0,0 +1,95 @@ + + + + + + +Class Members - Functions + + + + + + +
+ + + + + + +
+
+  + +

- q -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_func_0x72.html b/doc/html/functions_func_0x72.html new file mode 100644 index 0000000000..34a23a4f2c --- /dev/null +++ b/doc/html/functions_func_0x72.html @@ -0,0 +1,169 @@ + + + + + + +Class Members - Functions + + + + + + +
+ + + + + + +
+
+  + +

- r -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_func_0x73.html b/doc/html/functions_func_0x73.html new file mode 100644 index 0000000000..fdb0987205 --- /dev/null +++ b/doc/html/functions_func_0x73.html @@ -0,0 +1,147 @@ + + + + + + +Class Members - Functions + + + + + + +
+ + + + + + +
+
+  + +

- s -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_func_0x74.html b/doc/html/functions_func_0x74.html new file mode 100644 index 0000000000..2701b61db5 --- /dev/null +++ b/doc/html/functions_func_0x74.html @@ -0,0 +1,170 @@ + + + + + + +Class Members - Functions + + + + + + +
+ + + + + + +
+
+  + +

- t -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_func_0x75.html b/doc/html/functions_func_0x75.html new file mode 100644 index 0000000000..17bcd77893 --- /dev/null +++ b/doc/html/functions_func_0x75.html @@ -0,0 +1,100 @@ + + + + + + +Class Members - Functions + + + + + + +
+ + + + + + +
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_func_0x77.html b/doc/html/functions_func_0x77.html new file mode 100644 index 0000000000..83de221287 --- /dev/null +++ b/doc/html/functions_func_0x77.html @@ -0,0 +1,97 @@ + + + + + + +Class Members - Functions + + + + + + +
+ + + + + + +
+ +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_func_0x7e.html b/doc/html/functions_func_0x7e.html new file mode 100644 index 0000000000..5c03d97e6f --- /dev/null +++ b/doc/html/functions_func_0x7e.html @@ -0,0 +1,170 @@ + + + + + + +Class Members - Functions + + + + + + +
+ + + + + + +
+
+  + +

- ~ -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_rela.html b/doc/html/functions_rela.html new file mode 100644 index 0000000000..0b6f2719ba --- /dev/null +++ b/doc/html/functions_rela.html @@ -0,0 +1,74 @@ + + + + + + +Class Members - Related Functions + + + + + + + + +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_type.html b/doc/html/functions_type.html new file mode 100644 index 0000000000..fa3e6e86b3 --- /dev/null +++ b/doc/html/functions_type.html @@ -0,0 +1,183 @@ + + + + + + +Class Members - Typedefs + + + + + + +
+ + + + + + +
+
+  + +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- i -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- v -

+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html new file mode 100644 index 0000000000..2ce81ff08a --- /dev/null +++ b/doc/html/functions_vars.html @@ -0,0 +1,102 @@ + + + + + + +Class Members - Variables + + + + + + + +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/globals.html b/doc/html/globals.html new file mode 100644 index 0000000000..1ccf7f9627 --- /dev/null +++ b/doc/html/globals.html @@ -0,0 +1,85 @@ + + + + + + +File Members + + + + + + +
+ + + + + +
+
+
Here is a list of all documented file members with links to the documentation:
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/globals_func.html b/doc/html/globals_func.html new file mode 100644 index 0000000000..abd569b1ff --- /dev/null +++ b/doc/html/globals_func.html @@ -0,0 +1,85 @@ + + + + + + +File Members + + + + + + +
+ + + + + +
+
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/hierarchy.html b/doc/html/hierarchy.html new file mode 100644 index 0000000000..1a921156c4 --- /dev/null +++ b/doc/html/hierarchy.html @@ -0,0 +1,307 @@ + + + + + + +Class Hierarchy + + + + + + + +
+
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 12345]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
oC__TBB_malloc_proxy_caller
oCtbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::accessor_not_used
oCaggregated_operation
oCtbb::interface6::aggregator_operation
oCtbb::aligned_space< T, N >Block of space aligned sufficiently to construct an array T with N elements
oCtbb::flow::interface8::allocate_buffer< T >
oCtbb::flow::interface8::allocate_buffer< queueing >
oCAllocator
oCallocator_base
oCtbb::flow::interface8::internal::async_gateway< Output >Pure virtual template class that defines interface for async communication
oCasync_input
oCatomic_impl
oCbad_alloc
oCtbb::interface6::internal::basic_handler
oCbinary_function
oCtbb::blocked_range< Value >A range over which to iterate
oCtbb::blocked_range2d< RowValue, ColValue >A 2-dimensional range that models the Range concept
oCtbb::blocked_range3d< PageValue, RowValue, ColValue >A 3-dimensional range that models the Range concept
oCtbb::blocked_range< ColValue >
oCtbb::blocked_range< I >
oCtbb::blocked_range< PageValue >
oCtbb::blocked_range< RowValue >
oCtbb::flow::interface8::internal::broadcast_cache< T, M >
oCtbb::flow::interface8::internal::broadcast_cache< input_type >
oCtbb::flow::interface8::internal::broadcast_cache< input_type, tbb::null_rw_mutex >
oCtbb::flow::interface8::internal::broadcast_cache< output_type >
oCtbb::flow::interface8::internal::broadcast_cache< T >
oCtbb::cache_aligned_allocator< T >Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5
oCtbb::cache_aligned_allocator< void >Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1
oCtbb::interface5::concurrent_hash_map< Key, T, HashCompare, A >::call_clear_on_leave
oCtbb::combinable< T >Thread-local storage with optional reduction
oCtbb::flow::interface8::composite_node< InputTuple, OutputTuple >
oCtbb::interface6::internal::concrete_filter< T, U, Body >
oCtbb::interface5::concurrent_priority_queue< T, Compare, A >Concurrent priority queue
oCconcurrent_queue_base_v3
oCconcurrent_queue_base_v8
oCconcurrent_unordered_base
oCtbb::interface5::concurrent_unordered_map_traits< Key, T, Hash_compare, Allocator, Allow_multimapping >
oCtbb::interface5::concurrent_unordered_set_traits< Key, Hash_compare, Allocator, Allow_multimapping >
oCconcurrent_vector_base
oCcontinue_input
oCtbb::flow::interface8::continue_msgAn empty class used for messages that mean "I'm done"
oCtbb::flow::interface8::internal::edge_container< C >
oCtbb::flow::interface8::internal::edge_container< predecessor_type >
oCtbb::flow::interface8::internal::edge_container< tbb::flow::interface8::sender >
oCets_base
oCexception
oCtbb::interface6::filter_t< T, U >Class representing a chain of type-safe pipeline filters
oCtbb::final_scan_tagUsed to indicate that the final scan is being performed
oCtbb::interface6::flattened2d< Container >
oCtbb::interface6::flow_controlInput_filter control to signal end-of-input for parallel_pipeline
oCfunction_input
oCfunction_output
oCtbb::interface9::global_control
oCtbb::flow::interface8::graph_iterator< GraphContainerType, GraphNodeType >
oChash_map_base
oCtbb::internal::tbb_thread_v3::id
oCtbb::tick_count::interval_tRelative time interval
oCtbb::flow::interface8::join_node< OutputTuple, JP >
oCtbb::interface6::memory_pool_allocator< T, P >Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5
oCtbb::interface6::memory_pool_allocator< void, P >Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1
oCrml::MemPoolPolicy
oCmultifunction_input
oCmutex_copy_deprecated_and_disabled
oCno_assign
oCno_assign
oCno_assign
oCno_copy
oCnode_base
oCtbb::flow::interface8::null_type
oCtbb::pipelineA processing pipeline that applies filters to items
oCpool_base
oCtbb::pre_scan_tagUsed to indicate that the initial scan is being performed
oCtbb::cache_aligned_allocator< void >::rebind< U >
oCtbb::scalable_allocator< T >::rebind< U >
oCtbb::scalable_allocator< void >::rebind< U >
oCtbb::tbb_allocator< void >::rebind< U >
oCtbb::zero_allocator< T, Allocator >::rebind< U >
oCtbb::interface6::memory_pool_allocator< void, P >::rebind< U >
oCtbb::interface6::memory_pool_allocator< T, P >::rebind< U >
oCtbb::tbb_allocator< T >::rebind< U >
oCtbb::cache_aligned_allocator< T >::rebind< U >
oCtbb::zero_allocator< void, Allocator >::rebind< U >
oCtbb::flow::interface8::receiver< T >Pure virtual template class that defines a receiver of messages of type T
oCtbb::flow::interface8::receiver< continue_msg >
oCreservable_item_buffer
oCtbb::flow::interface8::internal::round_robin_cache< T, M >
oCtbb::flow::interface8::internal::round_robin_cache< T, tbb::null_rw_mutex >
oCtbb::flow::interface8::run_and_put_task< R, B >
oCtbb::scalable_allocator< T >Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5
oCtbb::scalable_allocator< void >Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1
oCscoped_t
oCscoped_t
oCtbb::flow::interface8::sender< T >Pure virtual template class that defines a sender of messages of type T
oCtbb::flow::interface8::sender< Output >
oCtbb::flow::interface8::internal::successor_cache< T, M >
oCtask
oCtask_arena_base
oCtbb::task_group_context
oCtbb::internal::task_scheduler_observer_v3
oCtbb::tbb_allocator< T >Meets "allocator" requirements of ISO C++ Standard, Section 20.1.5
oCtbb::tbb_allocator< void >Analogous to std::allocator<void>, as defined in ISO C++ Standard, Section 20.4.1
oCtbb::internal::tbb_exception_ptrException container that preserves the exact copy of the original exception
oCtbb::internal::tbb_thread_v3Versioned thread class
oCtbb::internal::thread_closure_base
oCtbb::tick_countAbsolute timestamp
oCunfolded_indexer_node
oCunfolded_join_node
oCtbb::interface5::internal::use_element_copy_constructor< T, C >
oCtbb::interface5::internal::use_element_copy_constructor< T, false >
\Ctbb::vector_iterator< Container, Value >
+
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/index.html b/doc/html/index.html new file mode 100644 index 0000000000..7ca7590b5b --- /dev/null +++ b/doc/html/index.html @@ -0,0 +1,53 @@ + + + + + + +Main Page + + + + + + + +
+
+
Main Page
+
+
+

Click the tabs above for information about the

+
    +
  • Modules (groups of functionality) implemented by the library
  • +
  • Classes provided by the library
  • +
  • Files constituting the library.
  • +
+

Please note that significant part of TBB functionality is implemented in the form of template functions, descriptions of which are not accessible on the Classes tab. Use Modules or Namespace/Namespace Members tabs to find them.

+

Additional pieces of information can be found here

+ +
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/jquery.js b/doc/html/jquery.js new file mode 100644 index 0000000000..c197801c5d --- /dev/null +++ b/doc/html/jquery.js @@ -0,0 +1,31 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType; +if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1 +},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av); +ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length; +if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b +})}})(window); diff --git a/doc/html/modules.html b/doc/html/modules.html new file mode 100644 index 0000000000..76f8b41f29 --- /dev/null +++ b/doc/html/modules.html @@ -0,0 +1,52 @@ + + + + + + +Modules + + + + + + + +
+
+
Modules
+
+
+
Here is a list of all modules:
+
+ + + + + + +
oAlgorithms
oContainers
oMemory Allocation
oSynchronization
oTiming
\Task Scheduling
+ + +
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/namespacemembers.html b/doc/html/namespacemembers.html new file mode 100644 index 0000000000..e622cadb12 --- /dev/null +++ b/doc/html/namespacemembers.html @@ -0,0 +1,156 @@ + + + + + + +Namespace Members + + + + + + +
+ + + + + + +
+
+
Here is a list of all documented namespace members with links to the namespaces they belong to:
+ +

- _ -

    +
  • __TBB_DECL_ATOMIC_ALT() +: tbb +
  • +
+ + +

- a -

    +
  • acquire +: tbb +
  • +
+ + +

- e -

    +
  • ets_key_usage_type +: tbb +
  • +
+ + +

- f -

    +
  • full_fence +: tbb +
  • +
+ + +

- m -

    +
  • memory_semantics +: tbb +
  • +
+ + +

- p -

    +
  • parallel_deterministic_reduce() +: tbb +
  • +
  • parallel_do() +: tbb +
  • +
  • parallel_for() +: tbb +
  • +
  • parallel_for_each() +: tbb +
  • +
  • parallel_invoke() +: tbb +
  • +
  • parallel_reduce() +: tbb +
  • +
  • parallel_scan() +: tbb +
  • +
  • parallel_sort() +: tbb +
  • +
+ + +

- r -

    +
  • relaxed +: tbb +
  • +
  • release +: tbb +
  • +
+ + +

- s -

    +
  • speculative_spin_mutex +: tbb +
  • +
+ + +

- t -

    +
  • TBB_runtime_interface_version() +: tbb +
  • +
  • tbb_thread +: tbb +
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/namespacemembers_enum.html b/doc/html/namespacemembers_enum.html new file mode 100644 index 0000000000..6e7c677508 --- /dev/null +++ b/doc/html/namespacemembers_enum.html @@ -0,0 +1,61 @@ + + + + + + +Namespace Members + + + + + + + +
    +
  • ets_key_usage_type +: tbb +
  • +
  • memory_semantics +: tbb +
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/namespacemembers_eval.html b/doc/html/namespacemembers_eval.html new file mode 100644 index 0000000000..63609de362 --- /dev/null +++ b/doc/html/namespacemembers_eval.html @@ -0,0 +1,67 @@ + + + + + + +Namespace Members + + + + + + + +
    +
  • acquire +: tbb +
  • +
  • full_fence +: tbb +
  • +
  • relaxed +: tbb +
  • +
  • release +: tbb +
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/namespacemembers_func.html b/doc/html/namespacemembers_func.html new file mode 100644 index 0000000000..6c65b7fe7c --- /dev/null +++ b/doc/html/namespacemembers_func.html @@ -0,0 +1,102 @@ + + + + + + +Namespace Members + + + + + + + +
+  + +

- _ -

    +
  • __TBB_DECL_ATOMIC_ALT() +: tbb +
  • +
+ + +

- p -

    +
  • parallel_deterministic_reduce() +: tbb +
  • +
  • parallel_do() +: tbb +
  • +
  • parallel_for() +: tbb +
  • +
  • parallel_for_each() +: tbb +
  • +
  • parallel_invoke() +: tbb +
  • +
  • parallel_reduce() +: tbb +
  • +
  • parallel_scan() +: tbb +
  • +
  • parallel_sort() +: tbb +
  • +
+ + +

- t -

    +
  • TBB_runtime_interface_version() +: tbb +
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/namespacemembers_type.html b/doc/html/namespacemembers_type.html new file mode 100644 index 0000000000..561c26e84d --- /dev/null +++ b/doc/html/namespacemembers_type.html @@ -0,0 +1,61 @@ + + + + + + +Namespace Members + + + + + + + +
    +
  • speculative_spin_mutex +: tbb +
  • +
  • tbb_thread +: tbb +
  • +
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/namespaces.html b/doc/html/namespaces.html new file mode 100644 index 0000000000..fdc3a6773a --- /dev/null +++ b/doc/html/namespaces.html @@ -0,0 +1,54 @@ + + + + + + +Namespace List + + + + + + + +
+
+
Namespace List
+
+
+
Here is a list of all documented namespaces with brief descriptions:
+ + + +
oNrmlThe namespace rml contains components of low-level memory pool interface
\NtbbThe namespace tbb contains all components of the library
+
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/nav_f.png b/doc/html/nav_f.png new file mode 100644 index 0000000000..72a58a529e Binary files /dev/null and b/doc/html/nav_f.png differ diff --git a/doc/html/nav_g.png b/doc/html/nav_g.png new file mode 100644 index 0000000000..2093a237a9 Binary files /dev/null and b/doc/html/nav_g.png differ diff --git a/doc/html/nav_h.png b/doc/html/nav_h.png new file mode 100644 index 0000000000..33389b101d Binary files /dev/null and b/doc/html/nav_h.png differ diff --git a/doc/html/open.png b/doc/html/open.png new file mode 100644 index 0000000000..30f75c7efe Binary files /dev/null and b/doc/html/open.png differ diff --git a/doc/html/pages.html b/doc/html/pages.html new file mode 100644 index 0000000000..843ac8bb53 --- /dev/null +++ b/doc/html/pages.html @@ -0,0 +1,47 @@ + + + + + + +Related Pages + + + + + + + +
+
+
Related Pages
+
+
+
Here is a list of all related documentation pages:
+
+
+

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are +registered trademarks or trademarks of Intel Corporation or its +subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. diff --git a/doc/html/sync_off.png b/doc/html/sync_off.png new file mode 100644 index 0000000000..3b443fc628 Binary files /dev/null and b/doc/html/sync_off.png differ diff --git a/doc/html/sync_on.png b/doc/html/sync_on.png new file mode 100644 index 0000000000..e08320fb64 Binary files /dev/null and b/doc/html/sync_on.png differ diff --git a/doc/html/tab_a.png b/doc/html/tab_a.png new file mode 100644 index 0000000000..3b725c41c5 Binary files /dev/null and b/doc/html/tab_a.png differ diff --git a/doc/html/tab_b.png b/doc/html/tab_b.png new file mode 100644 index 0000000000..e2b4a8638c Binary files /dev/null and b/doc/html/tab_b.png differ diff --git a/doc/html/tab_h.png b/doc/html/tab_h.png new file mode 100644 index 0000000000..fd5cb70548 Binary files /dev/null and b/doc/html/tab_h.png differ diff --git a/doc/html/tab_s.png b/doc/html/tab_s.png new file mode 100644 index 0000000000..ab478c95b6 Binary files /dev/null and b/doc/html/tab_s.png differ diff --git a/doc/html/tabs.css b/doc/html/tabs.css new file mode 100644 index 0000000000..9cf578f23a --- /dev/null +++ b/doc/html/tabs.css @@ -0,0 +1,60 @@ +.tabs, .tabs2, .tabs3 { + background-image: url('tab_b.png'); + width: 100%; + z-index: 101; + font-size: 13px; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +.tabs2 { + font-size: 10px; +} +.tabs3 { + font-size: 9px; +} + +.tablist { + margin: 0; + padding: 0; + display: table; +} + +.tablist li { + float: left; + display: table-cell; + background-image: url('tab_b.png'); + line-height: 36px; + list-style: none; +} + +.tablist a { + display: block; + padding: 0 20px; + font-weight: bold; + background-image:url('tab_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #283A5D; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; + outline: none; +} + +.tabs3 .tablist a { + padding: 0 10px; +} + +.tablist a:hover { + background-image: url('tab_h.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + text-decoration: none; +} + +.tablist li.current a { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} diff --git a/examples/GettingStarted/index.html b/examples/GettingStarted/index.html new file mode 100644 index 0000000000..2aaeaba157 --- /dev/null +++ b/examples/GettingStarted/index.html @@ -0,0 +1,24 @@ + + + +

Overview

+This directory contains the examples referenced by the Intel® Threading Building Blocks Getting Started Guide. + +

Directories

+
+
sub_string_finder +
Finds largest matching substrings. +
+ +
+Up to parent directory +

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel is a registered trademark or trademark of Intel Corporation +or its subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. + + + diff --git a/examples/GettingStarted/sub_string_finder/Makefile b/examples/GettingStarted/sub_string_finder/Makefile new file mode 100644 index 0000000000..c1a91e28b5 --- /dev/null +++ b/examples/GettingStarted/sub_string_finder/Makefile @@ -0,0 +1,72 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# GNU Makefile that builds and runs example. +run_cmd= +PROG=sub_string_finder_extended +ARGS= +LIGHT_PROG=sub_string_finder + +# The C++ compiler +ifneq (,$(shell which icc 2>/dev/null)) +CXX=icc +endif # icc + +TBBLIB = -ltbb +TBBLIB_DEBUG = -ltbb_debug + +ifeq ($(offload), mic) +override CXXFLAGS += -opt-report-phase:offload -D__TBB_MIC_OFFLOAD=1 +# Replace -ltbb with -tbb in the offload mode +TBBLIB = -tbb +TBBLIB_DEBUG += -offload-option,mic,ld,"-ltbb_debug" +endif + +ifeq ($(shell uname), Linux) +ifeq ($(target), android) +LIBS+= --sysroot=$(SYSROOT) +run_cmd=../../common/android.linux.launcher.sh +else +LIBS+= -lrt +endif +endif + +all: release test + +release: *.cpp +ifeq ($(offload),) + $(CXX) -O2 -DNDEBUG $(CXXFLAGS) -o sub_string_finder sub_string_finder.cpp $(TBBLIB) $(LIBS) + $(CXX) -O2 -DNDEBUG $(CXXFLAGS) -o sub_string_finder_pretty sub_string_finder_pretty.cpp $(TBBLIB) $(LIBS) +endif + $(CXX) -O2 -DNDEBUG $(CXXFLAGS) -o sub_string_finder_extended sub_string_finder_extended.cpp $(TBBLIB) $(LIBS) + +debug: *.cpp +ifeq ($(offload),) + $(CXX) -O0 -g -DTBB_USE_DEBUG $(CXXFLAGS) -o sub_string_finder sub_string_finder.cpp $(TBBLIB_DEBUG) $(LIBS) + $(CXX) -O0 -g -DTBB_USE_DEBUG $(CXXFLAGS) -o sub_string_finder_pretty sub_string_finder_pretty.cpp $(TBBLIB_DEBUG) $(LIBS) +endif + $(CXX) -O0 -g -DTBB_USE_DEBUG $(CXXFLAGS) -o sub_string_finder_extended sub_string_finder_extended.cpp $(TBBLIB_DEBUG) $(LIBS) + +clean: + $(RM) sub_string_finder sub_string_finder_extended sub_string_finder_pretty *.o *.d + +test: + $(run_cmd) ./$(PROG) $(ARGS) + +light_test: + $(run_cmd) ./$(LIGHT_PROG) $(ARGS) diff --git a/examples/GettingStarted/sub_string_finder/Makefile.windows b/examples/GettingStarted/sub_string_finder/Makefile.windows new file mode 100644 index 0000000000..b3bc58bb80 --- /dev/null +++ b/examples/GettingStarted/sub_string_finder/Makefile.windows @@ -0,0 +1,53 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# Common Makefile that builds and runs examples. +PROG=sub_string_finder_extended +ARGS= +LIGHT_PROG=sub_string_finder + +# The C++ compiler options +# Trying to find if icl.exe is set +CXX1 = $(TBB_CXX)- +CXX2 = $(CXX1:icl.exe-=icl.exe) +CXX = $(CXX2:-=cl.exe) + +MYCXXFLAGS = /TP /EHsc /W3 /nologo /D _CONSOLE /D _MBCS /D WIN32 $(offload:mic=/D__TBB_MIC_OFFLOAD /Qdiag-disable:3335,3440,3441) $(CXXFLAGS) +MYLDFLAGS =/INCREMENTAL:NO /NOLOGO /DEBUG /FIXED:NO $(LDFLAGS) + +TBB_MIC_LIB = $(offload:mic=/Qtbb) +TBB_DEBUG_MIC_LIB = $(offload:mic=/Qoffload-option,mic,link,"-ltbb_debug") + +all: release test +release: compiler_check + $(CXX) sub_string_finder.cpp /MD /O2 /D NDEBUG $(MYCXXFLAGS) $(TBB_MIC_LIB) /link tbb.lib $(LIBS) $(MYLDFLAGS) /OUT:sub_string_finder.exe + $(CXX) sub_string_finder_extended.cpp /MD /O2 /D NDEBUG $(MYCXXFLAGS) $(TBB_MIC_LIB) /link tbb.lib $(LIBS) $(MYLDFLAGS) /OUT:sub_string_finder_extended.exe + $(CXX) sub_string_finder_pretty.cpp /MD /O2 /D NDEBUG $(MYCXXFLAGS) $(TBB_MIC_LIB) /link tbb.lib $(LIBS) $(MYLDFLAGS) /OUT:sub_string_finder_pretty.exe +debug: compiler_check + $(CXX) sub_string_finder.cpp /MDd /Od /Zi /D TBB_USE_DEBUG /D _DEBUG $(MYCXXFLAGS) $(TBB_DEBUG_MIC_LIB) /link tbb_debug.lib $(LIBS) $(MYLDFLAGS) /OUT:sub_string_finder.exe + $(CXX) sub_string_finder_extended.cpp /MDd /Od /Zi /D TBB_USE_DEBUG /D _DEBUG $(MYCXXFLAGS) $(TBB_DEBUG_MIC_LIB) /link tbb_debug.lib $(LIBS) $(MYLDFLAGS) /OUT:sub_string_finder_extended.exe + $(CXX) sub_string_finder_pretty.cpp /MDd /Od /Zi /D TBB_USE_DEBUG /D _DEBUG $(MYCXXFLAGS) $(TBB_DEBUG_MIC_LIB) /link tbb_debug.lib $(LIBS) $(MYLDFLAGS) /OUT:sub_string_finder_pretty.exe +clean: + @cmd.exe /C del sub_string_finder*.exe *.obj *.?db *.manifest +test: + $(PROG) $(ARGS) +light_test: + $(LIGHT_PROG) $(ARGS) +compiler_check: + @echo compiler_test>compiler_test && @$(CXX) /E compiler_test >nul 2>&1 || echo "$(CXX) command not found. Check if CXX=$(CXX) is set properly" + @cmd.exe /C del compiler_test diff --git a/examples/GettingStarted/sub_string_finder/index.html b/examples/GettingStarted/sub_string_finder/index.html new file mode 100644 index 0000000000..0e98979fac --- /dev/null +++ b/examples/GettingStarted/sub_string_finder/index.html @@ -0,0 +1,67 @@ + + + +

Overview

+
+
A simple example that uses the parallel_for template in a substring matching program. For each position +in a string, the program displays the length of the largest matching substring elsewhere in the string. +The program also displays the location of a largest match for each position. Consider the string "babba" +as an example. Starting at position 0, "ba" is the largest substring with a match elsewhere in the +string (position 3). +
The code located in the sub_string_finder_extended.cpp file +demonstrates offload programming for Intel® Many Integrated Core (Intel® MIC) Architecture (see build instructions). +
+ +

Files

+
+
sub_string_finder.cpp +
The example as it appears in the Getting Started Guide. +
sub_string_finder_extended.cpp +
An example similar to the one in the Getting Started Guide, but with an added sequential + implementation, and with an offload region added that can be executed on Intel® MIC Architecture based coprocessor. + The three implementations are timed, by using tick_count, + and the speedup of the parallel version and + the speedup of the parallel version and, if applicable, the offload version is calculated and displayed. +
sub_string_finder_pretty.cpp +
An example similar to the one in the Getting Started Guide, but with more attractive printing of the results. +
Makefile +
Makefile for building example. +
+ +

Directories

+
+
msvs +
Contains Microsoft* Visual Studio* 2010 workspace for building and running the example (Windows* systems only). +
xcode +
Contains Xcode* IDE workspace for building and running the example (OS X* systems only). +
+ +

To Build

+General build directions can be found here. + +

Usage

+
+
sub_string_finder +
Runs the example as it appears in the Getting Started Guide. +
sub_string_finder_pretty +
Runs the similar example with more attractive printing of the results. +
sub_string_finder_extended +
Runs the example extended with a sequential implementation and an offload region that can be executed on Intel® MIC Architecture based coprocessor. +
To run a short version of this example, e.g., for use with Intel® Threading Tools: +
Build a debug version of the sub_string_finder_pretty example + (see the build directions). +
Run it, e.g., sub_string_finder_pretty. +
+ +
+Up to parent directory +

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel is a registered trademark or trademark of Intel Corporation +or its subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. + + + diff --git a/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder.sln b/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder.sln new file mode 100644 index 0000000000..9120fb66b8 --- /dev/null +++ b/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder.sln @@ -0,0 +1,46 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sub_string_finder", "sub_string_finder.vcxproj", "{3AA40693-F93D-4D4B-B32E-068F511A2525}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sub_string_finder_extended", "sub_string_finder_extended.vcxproj", "{3AA40693-F93D-4D4B-B32E-068F511A2526}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sub_string_finder_pretty", "sub_string_finder_pretty.vcxproj", "{3AA40693-F93D-4D4B-B32E-068F511A2524}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3AA40693-F93D-4D4B-B32E-068F511A2525}.Debug|Win32.ActiveCfg = Debug|Win32 + {3AA40693-F93D-4D4B-B32E-068F511A2525}.Debug|Win32.Build.0 = Debug|Win32 + {3AA40693-F93D-4D4B-B32E-068F511A2525}.Debug|x64.ActiveCfg = Debug|x64 + {3AA40693-F93D-4D4B-B32E-068F511A2525}.Debug|x64.Build.0 = Debug|x64 + {3AA40693-F93D-4D4B-B32E-068F511A2525}.Release|Win32.ActiveCfg = Release|Win32 + {3AA40693-F93D-4D4B-B32E-068F511A2525}.Release|Win32.Build.0 = Release|Win32 + {3AA40693-F93D-4D4B-B32E-068F511A2525}.Release|x64.ActiveCfg = Release|x64 + {3AA40693-F93D-4D4B-B32E-068F511A2525}.Release|x64.Build.0 = Release|x64 + {3AA40693-F93D-4D4B-B32E-068F511A2526}.Debug|Win32.ActiveCfg = Debug|Win32 + {3AA40693-F93D-4D4B-B32E-068F511A2526}.Debug|Win32.Build.0 = Debug|Win32 + {3AA40693-F93D-4D4B-B32E-068F511A2526}.Debug|x64.ActiveCfg = Debug|x64 + {3AA40693-F93D-4D4B-B32E-068F511A2526}.Debug|x64.Build.0 = Debug|x64 + {3AA40693-F93D-4D4B-B32E-068F511A2526}.Release|Win32.ActiveCfg = Release|Win32 + {3AA40693-F93D-4D4B-B32E-068F511A2526}.Release|Win32.Build.0 = Release|Win32 + {3AA40693-F93D-4D4B-B32E-068F511A2526}.Release|x64.ActiveCfg = Release|x64 + {3AA40693-F93D-4D4B-B32E-068F511A2526}.Release|x64.Build.0 = Release|x64 + {3AA40693-F93D-4D4B-B32E-068F511A2524}.Debug|Win32.ActiveCfg = Debug|Win32 + {3AA40693-F93D-4D4B-B32E-068F511A2524}.Debug|Win32.Build.0 = Debug|Win32 + {3AA40693-F93D-4D4B-B32E-068F511A2524}.Debug|x64.ActiveCfg = Debug|x64 + {3AA40693-F93D-4D4B-B32E-068F511A2524}.Debug|x64.Build.0 = Debug|x64 + {3AA40693-F93D-4D4B-B32E-068F511A2524}.Release|Win32.ActiveCfg = Release|Win32 + {3AA40693-F93D-4D4B-B32E-068F511A2524}.Release|Win32.Build.0 = Release|Win32 + {3AA40693-F93D-4D4B-B32E-068F511A2524}.Release|x64.ActiveCfg = Release|x64 + {3AA40693-F93D-4D4B-B32E-068F511A2524}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder.vcxproj b/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder.vcxproj new file mode 100644 index 0000000000..4a5f94357c --- /dev/null +++ b/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder.vcxproj @@ -0,0 +1,194 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + sub_string_finder + {3AA40693-F93D-4D4B-B32E-068F511A2525} + sub_string_finder + Win32Proj + + + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(ProjectName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(ProjectName)\$(Platform)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(ProjectName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(ProjectName)\$(Platform)\$(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Console + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 debug "$(OutDir)" + + + + + X64 + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Console + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 debug "$(OutDir)" + + + + + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Console + true + true + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 release "$(OutDir)" + + + + + X64 + + + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Console + true + true + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 release "$(OutDir)" + + + + + + + + + \ No newline at end of file diff --git a/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_extended.vcxproj b/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_extended.vcxproj new file mode 100644 index 0000000000..3324d7ca0c --- /dev/null +++ b/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_extended.vcxproj @@ -0,0 +1,194 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + sub_string_finder_extended + {3AA40693-F93D-4D4B-B32E-068F511A2526} + sub_string_finder_extended + Win32Proj + + + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(ProjectName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(ProjectName)\$(Platform)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(ProjectName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(ProjectName)\$(Platform)\$(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Console + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 debug "$(OutDir)" + + + + + X64 + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Console + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 debug "$(OutDir)" + + + + + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Console + true + true + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 release "$(OutDir)" + + + + + X64 + + + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Console + true + true + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 release "$(OutDir)" + + + + + + + + + \ No newline at end of file diff --git a/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_pretty.vcxproj b/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_pretty.vcxproj new file mode 100644 index 0000000000..d599556b14 --- /dev/null +++ b/examples/GettingStarted/sub_string_finder/msvs/sub_string_finder_pretty.vcxproj @@ -0,0 +1,194 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + sub_string_finder_pretty + {3AA40693-F93D-4D4B-B32E-068F511A2524} + sub_string_finder_pretty + Win32Proj + + + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(ProjectName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(ProjectName)\$(Platform)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(ProjectName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(ProjectName)\$(Platform)\$(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Console + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 debug "$(OutDir)" + + + + + X64 + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Console + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 debug "$(OutDir)" + + + + + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Console + true + true + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 release "$(OutDir)" + + + + + X64 + + + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Console + true + true + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 release "$(OutDir)" + + + + + + + + + \ No newline at end of file diff --git a/examples/GettingStarted/sub_string_finder/sub_string_finder.cpp b/examples/GettingStarted/sub_string_finder/sub_string_finder.cpp new file mode 100644 index 0000000000..f12df4141b --- /dev/null +++ b/examples/GettingStarted/sub_string_finder/sub_string_finder.cpp @@ -0,0 +1,77 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#include +#include +#include +#include "tbb/parallel_for.h" +#include "tbb/blocked_range.h" + +using namespace tbb; +using namespace std; +static const size_t N = 23; + +class SubStringFinder { + const string str; + size_t *max_array; + size_t *pos_array; +public: + void operator() ( const blocked_range& r ) const { + for ( size_t i = r.begin(); i != r.end(); ++i ) { + size_t max_size = 0, max_pos = 0; + for (size_t j = 0; j < str.size(); ++j) + if (j != i) { + size_t limit = str.size()-max(i,j); + for (size_t k = 0; k < limit; ++k) { + if (str[i + k] != str[j + k]) break; + if (k > max_size) { + max_size = k; + max_pos = j; + } + } + } + max_array[i] = max_size; + pos_array[i] = max_pos; + } + } + SubStringFinder(string &s, size_t *m, size_t *p) : + str(s), max_array(m), pos_array(p) { } +}; + +int main() { + + string str[N] = { string("a"), string("b") }; + for (size_t i = 2; i < N; ++i) str[i] = str[i-1]+str[i-2]; + string &to_scan = str[N-1]; + size_t num_elem = to_scan.size(); + + size_t *max = new size_t[num_elem]; + size_t *pos = new size_t[num_elem]; + + parallel_for(blocked_range(0, num_elem ), + SubStringFinder( to_scan, max, pos ) ); + + for (size_t i = 0; i < num_elem; ++i) + cout << " " << max[i] << "(" << pos[i] << ")" << endl; + delete[] pos; + delete[] max; + return 0; +} + diff --git a/examples/GettingStarted/sub_string_finder/sub_string_finder_extended.cpp b/examples/GettingStarted/sub_string_finder/sub_string_finder_extended.cpp new file mode 100644 index 0000000000..a13f9e2d89 --- /dev/null +++ b/examples/GettingStarted/sub_string_finder/sub_string_finder_extended.cpp @@ -0,0 +1,163 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#if __TBB_MIC_OFFLOAD +#pragma offload_attribute (push,target(mic)) +#endif // __TBB_MIC_OFFLOAD + +#include +#include +#include + +#include "tbb/parallel_for.h" +#include "tbb/blocked_range.h" +#include "tbb/tick_count.h" + +#if __TBB_MIC_OFFLOAD +#pragma offload_attribute (pop) + +class __declspec(target(mic)) SubStringFinder; +#endif // __TBB_MIC_OFFLOAD + +using namespace tbb; +using namespace std; +static const size_t N = 22; + +void SerialSubStringFinder ( const string &str, size_t *max_array, size_t *pos_array) { + for ( size_t i = 0; i < str.size(); ++i ) { + size_t max_size = 0, max_pos = 0; + for (size_t j = 0; j < str.size(); ++j) + if (j != i) { + size_t limit = str.size()-( i > j ? i : j ); + for (size_t k = 0; k < limit; ++k) { + if (str[i + k] != str[j + k]) break; + if (k > max_size) { + max_size = k; + max_pos = j; + } + } + } + max_array[i] = max_size; + pos_array[i] = max_pos; + } +} + +class SubStringFinder { + const string str; + size_t *max_array; + size_t *pos_array; + public: + void operator() ( const blocked_range& r ) const { + for ( size_t i = r.begin(); i != r.end(); ++i ) { + size_t max_size = 0, max_pos = 0; + for (size_t j = 0; j < str.size(); ++j) + if (j != i) { + size_t limit = str.size()-( i > j ? i : j ); + for (size_t k = 0; k < limit; ++k) { + if (str[i + k] != str[j + k]) break; + if (k > max_size) { + max_size = k; + max_pos = j; + } + } + } + max_array[i] = max_size; + pos_array[i] = max_pos; + } + } + SubStringFinder(string &s, size_t *m, size_t *p) : + str(s), max_array(m), pos_array(p) { } +}; + +int main(int argc, char *argv[]) { + + + string str[N] = { string("a"), string("b") }; + for (size_t i = 2; i < N; ++i) str[i] = str[i-1]+str[i-2]; + string &to_scan = str[N-1]; + size_t num_elem = to_scan.size(); + + size_t *max = new size_t[num_elem]; + size_t *max2 = new size_t[num_elem]; + size_t *pos = new size_t[num_elem]; + size_t *pos2 = new size_t[num_elem]; + cout << " Done building string." << endl; + + + tick_count serial_t0 = tick_count::now(); + SerialSubStringFinder(to_scan, max2, pos2); + tick_count serial_t1 = tick_count::now(); + cout << " Done with serial version." << endl; + + tick_count parallel_t0 = tick_count::now(); + parallel_for(blocked_range(0, num_elem, 100), + SubStringFinder( to_scan, max, pos ) ); + tick_count parallel_t1 = tick_count::now(); + cout << " Done with parallel version." << endl; + + for (size_t i = 0; i < num_elem; ++i) { + if (max[i] != max2[i] || pos[i] != pos2[i]) { + cout << "ERROR: Serial and Parallel Results are Different!" << endl; + } + } + cout << " Done validating results." << endl; + + cout << "Serial version ran in " << (serial_t1 - serial_t0).seconds() << " seconds" << endl + << "Parallel version ran in " << (parallel_t1 - parallel_t0).seconds() << " seconds" << endl + << "Resulting in a speedup of " << (serial_t1 - serial_t0).seconds() / (parallel_t1 - parallel_t0).seconds() << endl; + +#if __TBB_MIC_OFFLOAD + // Do offloadable version. Do the timing on host. + size_t *max3 = new size_t[num_elem]; + size_t *pos3 = new size_t[num_elem]; + tick_count parallel_tt0 = tick_count::now(); + const char* to_scan_str = to_scan.c_str(); // Offload the string as a char array. + #pragma offload target(mic) in(num_elem) in(to_scan_str:length(num_elem)) out(max3,pos3:length(num_elem)) + { + string to_scan(to_scan_str, num_elem); // Reconstruct the string in offloadable region. + // Suboptimal performance because of making a copy from to_scan_str at creating to_scan. + parallel_for(blocked_range(0, num_elem, 100), + SubStringFinder( to_scan, max3, pos3 ) ); + } + tick_count parallel_tt1 = tick_count::now(); + cout << " Done with offloadable version." << endl; + + // Do validation of offloadable results on host. + for (size_t i = 0; i < num_elem; ++i) { + if (max3[i] != max2[i] || pos3[i] != pos2[i]) { + cout << "ERROR: Serial and Offloadable Results are Different!" << endl; + } + } + cout << " Done validating offloadable results." << endl; + + cout << "Offloadable version ran in " << (parallel_tt1 - parallel_tt0).seconds() << " seconds" << endl + << "Resulting in a speedup of " << (serial_t1 - serial_t0).seconds() / (parallel_tt1 - parallel_tt0).seconds() << " of offloadable version" << endl; + + delete[] max3; + delete[] pos3; +#endif // __TBB_MIC_OFFLOAD + + delete[] max; + delete[] pos; + delete[] max2; + delete[] pos2; + return 0; +} + diff --git a/examples/GettingStarted/sub_string_finder/sub_string_finder_pretty.cpp b/examples/GettingStarted/sub_string_finder/sub_string_finder_pretty.cpp new file mode 100644 index 0000000000..0cdb9880b2 --- /dev/null +++ b/examples/GettingStarted/sub_string_finder/sub_string_finder_pretty.cpp @@ -0,0 +1,90 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#include +#include +#include + +#include "tbb/parallel_for.h" +#include "tbb/blocked_range.h" + +using namespace tbb; +static const size_t N = 9; + +class SubStringFinder { + const std::string str; + size_t *max_array; + size_t *pos_array; + public: + void operator() ( const blocked_range& r ) const { + for ( size_t i = r.begin(); i != r.end(); ++i ) { + size_t max_size = 0, max_pos = 0; + for (size_t j = 0; j < str.size(); ++j) + if (j != i) { + size_t limit = str.size()-( i > j ? i : j ); + for (size_t k = 0; k < limit; ++k) { + if (str[i + k] != str[j + k]) break; + if (k+1 > max_size) { + max_size = k+1; + max_pos = j; + } + } + } + max_array[i] = max_size; + pos_array[i] = max_pos; + } + } + SubStringFinder(std::string &s, size_t *m, size_t *p) : + str(s), max_array(m), pos_array(p) { } +}; + +int main(int argc, char *argv[]) { + + + std::string str[N] = { std::string("a"), std::string("b") }; + for (size_t i = 2; i < N; ++i) str[i] = str[i-1]+str[i-2]; + std::string &to_scan = str[N-1]; + size_t num_elem = to_scan.size(); + std::cout << "String to scan: " << to_scan << std::endl; + + size_t *max = new size_t[num_elem]; + size_t *pos = new size_t[num_elem]; + + parallel_for(blocked_range(0, num_elem, 100), + SubStringFinder( to_scan, max, pos ) ); + + for (size_t i = 0; i < num_elem; ++i) { + for (size_t j = 0; j < num_elem; ++j) { + if (j >= i && j < i + max[i]) std::cout << "_"; + else std::cout << " "; + } + std::cout << std::endl << to_scan << std::endl; + + for (size_t j = 0; j < num_elem; ++j) { + if (j >= pos[i] && j < pos[i] + max[i]) std::cout << "*"; + else std::cout << " "; + } + std::cout << std::endl; + } + delete[] max; + delete[] pos; + return 0; +} + diff --git a/examples/GettingStarted/sub_string_finder/xcode/sub_string_finder.xcodeproj/project.pbxproj b/examples/GettingStarted/sub_string_finder/xcode/sub_string_finder.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..9e28b39399 --- /dev/null +++ b/examples/GettingStarted/sub_string_finder/xcode/sub_string_finder.xcodeproj/project.pbxproj @@ -0,0 +1,573 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + A1F593A60B8F042A00073279 /* sub_string_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F593A50B8F042A00073279 /* sub_string_finder.cpp */; }; + A1F593B70B8F06F900073279 /* libtbb.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A1F593B30B8F06F900073279 /* libtbb.dylib */; }; + A1F593BB0B8F072500073279 /* libtbb.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = A1F593B30B8F06F900073279 /* libtbb.dylib */; }; + A1F594120B8F1E0C00073279 /* sub_string_finder_pretty.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F594110B8F1E0C00073279 /* sub_string_finder_pretty.cpp */; }; + A1F594130B8F1E1700073279 /* libtbb.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A1F593B30B8F06F900073279 /* libtbb.dylib */; }; + A1F594160B8F1E8000073279 /* libtbb.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = A1F593B30B8F06F900073279 /* libtbb.dylib */; }; + A1F594240B8F1F5F00073279 /* libtbb.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A1F593B30B8F06F900073279 /* libtbb.dylib */; }; + A1F594250B8F1F6800073279 /* libtbb.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = A1F593B30B8F06F900073279 /* libtbb.dylib */; }; + A1F594270B8F1F8100073279 /* sub_string_finder_extended.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F594260B8F1F8100073279 /* sub_string_finder_extended.cpp */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 8DD76F690486A84900D96B5E /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 12; + dstPath = ""; + dstSubfolderSpec = 16; + files = ( + A1F593BB0B8F072500073279 /* libtbb.dylib in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A1F594140B8F1E2D00073279 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 16; + files = ( + A1F594160B8F1E8000073279 /* libtbb.dylib in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A1F5941D0B8F1F2D00073279 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 16; + files = ( + A1F594250B8F1F6800073279 /* libtbb.dylib in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 8DD76F6C0486A84900D96B5E /* sub_string_finder */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = sub_string_finder; sourceTree = BUILT_PRODUCTS_DIR; }; + A1F593A50B8F042A00073279 /* sub_string_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = sub_string_finder.cpp; path = ../sub_string_finder.cpp; sourceTree = SOURCE_ROOT; }; + A1F593B30B8F06F900073279 /* libtbb.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libtbb.dylib; path = ../../../../lib/libtbb.dylib; sourceTree = SOURCE_ROOT; }; + A1F5940A0B8F1D8E00073279 /* sub_string_finder_pretty */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = sub_string_finder_pretty; sourceTree = BUILT_PRODUCTS_DIR; }; + A1F594110B8F1E0C00073279 /* sub_string_finder_pretty.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = sub_string_finder_pretty.cpp; path = ../sub_string_finder_pretty.cpp; sourceTree = SOURCE_ROOT; }; + A1F5941B0B8F1F0900073279 /* sub_string_finder_extended */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = sub_string_finder_extended; sourceTree = BUILT_PRODUCTS_DIR; }; + A1F594260B8F1F8100073279 /* sub_string_finder_extended.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = sub_string_finder_extended.cpp; path = ../sub_string_finder_extended.cpp; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8DD76F660486A84900D96B5E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A1F593B70B8F06F900073279 /* libtbb.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A1F594080B8F1D8E00073279 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A1F594130B8F1E1700073279 /* libtbb.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A1F594190B8F1F0900073279 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A1F594240B8F1F5F00073279 /* libtbb.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 08FB7794FE84155DC02AAC07 /* sub_string_finder */ = { + isa = PBXGroup; + children = ( + 08FB7795FE84155DC02AAC07 /* Source */, + A1F593B20B8F06F900073279 /* External Frameworks and Libraries */, + 1AB674ADFE9D54B511CA2CBB /* Products */, + ); + name = sub_string_finder; + sourceTree = ""; + }; + 08FB7795FE84155DC02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + A1F594260B8F1F8100073279 /* sub_string_finder_extended.cpp */, + A1F594110B8F1E0C00073279 /* sub_string_finder_pretty.cpp */, + A1F593A50B8F042A00073279 /* sub_string_finder.cpp */, + ); + name = Source; + sourceTree = ""; + }; + 1AB674ADFE9D54B511CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8DD76F6C0486A84900D96B5E /* sub_string_finder */, + A1F5940A0B8F1D8E00073279 /* sub_string_finder_pretty */, + A1F5941B0B8F1F0900073279 /* sub_string_finder_extended */, + ); + name = Products; + sourceTree = ""; + }; + A1F593B20B8F06F900073279 /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + A1F593B30B8F06F900073279 /* libtbb.dylib */, + ); + name = "External Frameworks and Libraries"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8DD76F620486A84900D96B5E /* sub_string_finder */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "sub_string_finder" */; + buildPhases = ( + 8DD76F640486A84900D96B5E /* Sources */, + 8DD76F660486A84900D96B5E /* Frameworks */, + 8DD76F690486A84900D96B5E /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = sub_string_finder; + productInstallPath = "$(HOME)/bin"; + productName = sub_string_finder; + productReference = 8DD76F6C0486A84900D96B5E /* sub_string_finder */; + productType = "com.apple.product-type.tool"; + }; + A1F594090B8F1D8E00073279 /* sub_string_finder_pretty */ = { + isa = PBXNativeTarget; + buildConfigurationList = A1F5940C0B8F1DB600073279 /* Build configuration list for PBXNativeTarget "sub_string_finder_pretty" */; + buildPhases = ( + A1F594070B8F1D8E00073279 /* Sources */, + A1F594080B8F1D8E00073279 /* Frameworks */, + A1F594140B8F1E2D00073279 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = sub_string_finder_pretty; + productName = sub_string_finder_pretty; + productReference = A1F5940A0B8F1D8E00073279 /* sub_string_finder_pretty */; + productType = "com.apple.product-type.tool"; + }; + A1F5941A0B8F1F0900073279 /* sub_string_finder_extended */ = { + isa = PBXNativeTarget; + buildConfigurationList = A1F5941F0B8F1F4E00073279 /* Build configuration list for PBXNativeTarget "sub_string_finder_extended" */; + buildPhases = ( + A1F594180B8F1F0900073279 /* Sources */, + A1F594190B8F1F0900073279 /* Frameworks */, + A1F5941D0B8F1F2D00073279 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = sub_string_finder_extended; + productName = sub_string_finder_extended; + productReference = A1F5941B0B8F1F0900073279 /* sub_string_finder_extended */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0410; + }; + buildConfigurationList = 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "sub_string_finder" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + en, + ); + mainGroup = 08FB7794FE84155DC02AAC07 /* sub_string_finder */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + A1F5941A0B8F1F0900073279 /* sub_string_finder_extended */, + A1F594090B8F1D8E00073279 /* sub_string_finder_pretty */, + 8DD76F620486A84900D96B5E /* sub_string_finder */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 8DD76F640486A84900D96B5E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A1F593A60B8F042A00073279 /* sub_string_finder.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A1F594070B8F1D8E00073279 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A1F594120B8F1E0C00073279 /* sub_string_finder_pretty.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A1F594180B8F1F0900073279 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A1F594270B8F1F8100073279 /* sub_string_finder_extended.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1DEB923208733DC60010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = sub_string_finder; + ZERO_LINK = NO; + }; + name = Debug; + }; + 1DEB923308733DC60010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = sub_string_finder; + ZERO_LINK = NO; + }; + name = Release; + }; + 1DEB923608733DC60010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Debug; + }; + 1DEB923708733DC60010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Release; + }; + A1F593C60B8F0E6E00073279 /* Debug64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = sub_string_finder; + ZERO_LINK = NO; + }; + name = Debug64; + }; + A1F593C70B8F0E6E00073279 /* Release64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = sub_string_finder; + ZERO_LINK = NO; + }; + name = Release64; + }; + A1F593C80B8F0E6E00073279 /* Debug64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-m64", + ); + OTHER_LDFLAGS = "-m64"; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Debug64; + }; + A1F593C90B8F0E6E00073279 /* Release64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-m64", + ); + OTHER_LDFLAGS = "-m64"; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Release64; + }; + A1F5940D0B8F1DB600073279 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = sub_string_finder_pretty; + ZERO_LINK = NO; + }; + name = Debug; + }; + A1F5940E0B8F1DB600073279 /* Debug64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = sub_string_finder_pretty; + ZERO_LINK = NO; + }; + name = Debug64; + }; + A1F5940F0B8F1DB600073279 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = sub_string_finder_pretty; + ZERO_LINK = NO; + }; + name = Release; + }; + A1F594100B8F1DB600073279 /* Release64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = sub_string_finder_pretty; + ZERO_LINK = NO; + }; + name = Release64; + }; + A1F594200B8F1F4E00073279 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = sub_string_finder_extended; + ZERO_LINK = NO; + }; + name = Debug; + }; + A1F594210B8F1F4E00073279 /* Debug64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = sub_string_finder_extended; + ZERO_LINK = NO; + }; + name = Debug64; + }; + A1F594220B8F1F4E00073279 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = sub_string_finder_extended; + ZERO_LINK = NO; + }; + name = Release; + }; + A1F594230B8F1F4E00073279 /* Release64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = sub_string_finder_extended; + ZERO_LINK = NO; + }; + name = Release64; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "sub_string_finder" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB923208733DC60010E9CD /* Debug */, + A1F593C60B8F0E6E00073279 /* Debug64 */, + 1DEB923308733DC60010E9CD /* Release */, + A1F593C70B8F0E6E00073279 /* Release64 */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "sub_string_finder" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB923608733DC60010E9CD /* Debug */, + A1F593C80B8F0E6E00073279 /* Debug64 */, + 1DEB923708733DC60010E9CD /* Release */, + A1F593C90B8F0E6E00073279 /* Release64 */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + A1F5940C0B8F1DB600073279 /* Build configuration list for PBXNativeTarget "sub_string_finder_pretty" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A1F5940D0B8F1DB600073279 /* Debug */, + A1F5940E0B8F1DB600073279 /* Debug64 */, + A1F5940F0B8F1DB600073279 /* Release */, + A1F594100B8F1DB600073279 /* Release64 */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + A1F5941F0B8F1F4E00073279 /* Build configuration list for PBXNativeTarget "sub_string_finder_extended" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A1F594200B8F1F4E00073279 /* Debug */, + A1F594210B8F1F4E00073279 /* Debug64 */, + A1F594220B8F1F4E00073279 /* Release */, + A1F594230B8F1F4E00073279 /* Release64 */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/examples/Makefile b/examples/Makefile new file mode 100644 index 0000000000..232bf697e0 --- /dev/null +++ b/examples/Makefile @@ -0,0 +1,153 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# This file should be always located and called in $(tbb_root)/examples + +# Usage: +# make [all] [clean] [release] [debug] [test] +# executes specified targets for all examples. +# make {example's dir}/{target} +# calls specified example with specified target. +# For instance: make task/tree_sum/all + +tbb_root?=.. +BUILDING_PHASE:=0 +include ../build/common.inc + +#check, if tbb_root is not absolute path (the filter keeps only /* paths) +ifeq ($(filter /% $(SLASH)%, $(subst :, ,$(tbb_root)) ),) + # also changes related variables like work_dir + override tbb_root := $(CWD)$(SLASH).. + export TBBROOT := $(tbb_root) +endif + +ifneq (00,$(lambdas)$(cpp0x)) + override CXXFLAGS += $(CPP11_FLAGS) +endif + +ifeq ($(tbb_os),windows) + ifeq ($(UNIXMODE),1) + EXAMPLE_MAKEFILE = Makefile + EXAMPLES = $(wildcard */*/$(EXAMPLE_MAKEFILE)) + ifeq ($(compiler),gcc) + override CXXFLAGS += -Wl,--enable-auto-import + endif + export CPATH := $(CPATH);$(tbb_root)/include + export LIBRARY_PATH := $(LIBRARY_PATH);$(work_dir)_release;$(work_dir)_debug + export RM = cmd /C del /Q /F + else + EXAMPLE_MAKEFILE = Makefile.windows + EXAMPLES = $(wildcard */*/$(EXAMPLE_MAKEFILE)) + EXAMPLE_MAKEFILE := $(if $(EXAMPLES),Makefile.windows,Makefile) + export INCLUDE := $(tbb_root)$(SLASH)include;$(INCLUDE) + export LIB := $(work_dir)_release;$(work_dir)_debug;$(LIB) + endif + work_dir := $(subst /,$(SLASH),$(work_dir)) + export PATH := $(work_dir)_release;$(work_dir)_debug;$(PATH) + export TBB_ARCH_PLATFORM = $(arch)\$(runtime) + export TBB_TARGET_ARCH = $(arch) +else + EXAMPLE_MAKEFILE = Makefile + EXAMPLES := $(wildcard */*/$(EXAMPLE_MAKEFILE)) + # platform-specific settings + ifeq ($(arch),ia64) + override CXXFLAGS += $(PIC_KEY) + endif + ifneq ($(filter suncc gcc clang,$(compiler)),) + ifeq ($(compiler),suncc) + override CXXFLAGS += -I$(tbb_root)$(SLASH)include -library=stlport4 -M$(tbb_root)/build/suncc.map.pause -erroff=unassigned,attrskipunsup,badargtype2w,badbinaryopw,wbadasg,wvarhidemem,wbadinit + endif + ifeq ($(arch),intel64) + override CXXFLAGS += -m64 + endif + ifeq ($(arch),ia32) + override CXXFLAGS += -m32 + endif + ifeq ($(arch),ppc64) + override CXXFLAGS += -m64 + endif + ifeq ($(arch),ppc32) + override CXXFLAGS += -m32 + endif + ifeq ($(arch),sparc) + override CXXFLAGS += -mcpu=v9 -m64 + endif + endif + ifeq ($(compiler),xl) + # -qsuppress=1540-0198 suppresses warnings like "1540-0198 (W) The omitted keyword "private" is assumed for base class "no_copy"." + # -qsuppress=1540-1401 suppresses warnings like "1540-1401 (I) An unknown "pragma ivdep" is specified." + override CXXFLAGS += -I$(tbb_root)$(SLASH)include -qsuppress=1540-0198:1540-1401 -L$(work_dir)_release -L$(work_dir)_debug + ifeq ($(arch),intel64) + override CXXFLAGS += -q64 + endif + ifeq ($(arch),ia32) + override CXXFLAGS += -q32 + endif + ifeq ($(arch),ppc64) + override CXXFLAGS += -q64 + endif + ifeq ($(arch),ppc32) + override CXXFLAGS += -q32 + endif + endif + ifeq ($(tbb_os),macos) + export DYLD_LIBRARY_PATH := $(DYLD_LIBRARY_PATH):$(work_dir)_release:$(work_dir)_debug + else + export LD_LIBRARY_PATH := $(LD_LIBRARY_PATH):$(work_dir)_release:$(work_dir)_debug + ifeq ($(findstring mic,$(offload) $(target)),mic) + mic_path=$(tbb_build_dir)$(SLASH)$(mic_tbb_build_prefix) + export MIC_LIBRARY_PATH := $(mic_path)_release:$(mic_path)_debug:$(MIC_LIBRARY_PATH) + export MIC_LD_LIBRARY_PATH := $(mic_path)_release:$(mic_path)_debug:$(MIC_LD_LIBRARY_PATH) + else + # -L necessary for non-native compilers which don't search $LIBRARY_PATH + override CXXFLAGS += -L$(work_dir)_release -L$(work_dir)_debug + endif + endif + export LIBS + export LIBRARY_PATH := $(LIBRARY_PATH):$(work_dir)_release:$(work_dir)_debug + export CPATH := $(CPATH):$(tbb_root)/include +endif + +export CXXFLAGS +COMMON_TARGETS := all clean release debug test perf_build perf_run +# list of directories of examples +EXAMPLES_DIRS := $(foreach T,$(EXAMPLES),$(dir $(T))) +# targets to explicitly call example have format: {example's dir}/{example's target} +EXAMPLES_TARGETS := $(foreach T,$(COMMON_TARGETS),$(addsuffix $(T),$(EXAMPLES_DIRS))) + +.PHONY: $(COMMON_TARGETS) $(EXAMPLES_TARGETS) + +.DEFAULT: all + +# execute standard targets for all examples +$(COMMON_TARGETS):: % : $(addsuffix %,$(EXAMPLES_DIRS)) + +# proxy rule for calling appropriate example +$(EXAMPLES_TARGETS):: + @echo ------------------------ $@ ------------------------ + -$(MAKE) -C $(@D) -f $(EXAMPLE_MAKEFILE) $(notdir $@) CXX="$(CPLUS)" $(if $(run_cmd),run_cmd="$(run_cmd)",) $(if $(args),ARGS="$(args)",) $(if $(UI),UI="$(UI)") + +printenv: +ifeq ($(tbb_os),windows) + @cmd /C set PATH + @cmd /C set LIB + @cmd /C set INCLUDE +else + @env | grep PATH +endif + diff --git a/examples/common/copy_libraries.bat b/examples/common/copy_libraries.bat new file mode 100644 index 0000000000..9e94e9c820 --- /dev/null +++ b/examples/common/copy_libraries.bat @@ -0,0 +1,74 @@ +@echo off +REM +REM Copyright 2005-2015 Intel Corporation. All Rights Reserved. +REM +REM This file is part of Threading Building Blocks. Threading Building Blocks is free software; +REM you can redistribute it and/or modify it under the terms of the GNU General Public License +REM version 2 as published by the Free Software Foundation. Threading Building Blocks is +REM distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +REM implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +REM See the GNU General Public License for more details. You should have received a copy of +REM the GNU General Public License along with Threading Building Blocks; if not, write to the +REM Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +REM +REM As a special exception, you may use this file as part of a free software library without +REM restriction. Specifically, if other files instantiate templates or use macros or inline +REM functions from this file, or you compile this file and link it with other files to produce +REM an executable, this file does not by itself cause the resulting executable to be covered +REM by the GNU General Public License. This exception does not however invalidate any other +REM reasons why the executable file might be covered by the GNU General Public License. +REM + +:: Getting parameters +if ("%1") == ("") goto error0 +if ("%2") == ("") goto error0 +if ("%3") == ("") goto error0 +set arch=%1 +if ("%2") == ("debug") set postfix=_debug +set output_dir=%3 + +:: Optional 4th parameter to set install root +if ("%4") NEQ ("") set TBBROOT=%4 +:: Actually we can set install root by ourselves +if ("%TBBROOT%") == ("") set TBBROOT=%~d0%~p0..\..\ + +:: Getting vs folders in case vc_mt binaries are not provided +:: ordered from oldest to newest, so we end with newest available version +if ("%VS90COMNTOOLS%") NEQ ("") set vc_dir=vc9 +if ("%VS100COMNTOOLS%") NEQ ("") set vc_dir=vc10 +if ("%VS110COMNTOOLS%") NEQ ("") set vc_dir=vc11 +if ("%VS120COMNTOOLS%") NEQ ("") set vc_dir=vc12 + +:: Are we standalone/oss or inside compiler? +if exist "%TBBROOT%\bin\%arch%\%vc_dir%\tbb%postfix%.dll" set interim_path=bin\%arch% +if exist "%TBBROOT%\..\redist\%arch%\tbb\%vc_dir%\tbb%postfix%.dll" set interim_path=..\redist\%arch%\tbb +if ("%interim_path%") == ("") goto error1 + +:: Do we provide vc_mt binaries? +if exist "%TBBROOT%\%interim_path%\vc_mt\tbb%postfix%.dll" set vc_dir=vc_mt +if ("%vc_dir%") == ("") goto error2 + +:: We know everything we wanted and there are no errors +:: Copying binaries + +copy "%TBBROOT%\%interim_path%\%vc_dir%\tbb%postfix%.dll" "%output_dir%" +copy "%TBBROOT%\%interim_path%\%vc_dir%\tbb%postfix%.pdb" "%output_dir%" +copy "%TBBROOT%\%interim_path%\%vc_dir%\tbbmalloc%postfix%.dll" "%output_dir%" +copy "%TBBROOT%\%interim_path%\%vc_dir%\tbbmalloc%postfix%.pdb" "%output_dir%" +if exist "%TBBROOT%\%interim_path%\%vc_dir%\tbb_preview%postfix%.dll" copy "%TBBROOT%\%interim_path%\%vc_dir%\tbb_preview%postfix%.dll" "%output_dir%" +if exist "%TBBROOT%\%interim_path%\%vc_dir%\tbb_preview%postfix%.pdb" copy "%TBBROOT%\%interim_path%\%vc_dir%\tbb_preview%postfix%.pdb" "%output_dir%" + +goto end +:error0 +echo number of parameters not correct +exit /B 1 +:error1 +echo Could not determine path to TBB libraries +exit /B 1 +:error2 +echo Could not determine Visual Studio version +exit /B 1 + +:end +exit /B 0 + diff --git a/examples/common/gui/Makefile.gmake b/examples/common/gui/Makefile.gmake new file mode 100644 index 0000000000..8937826d28 --- /dev/null +++ b/examples/common/gui/Makefile.gmake @@ -0,0 +1,90 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# The C++ compiler +#CXX=g++ + +# detecting MS Windows (for MinGW support) +ifeq ($(OS), Windows_NT) +RM = cmd /C del /Q /F +RD = cmd /C rmdir +UI = con +EXE = $(NAME)$(SUFFIX).exe + +else +RM = rm -f +RD = rmdir -r + +# detecting 64-bit platform +arch ?= $(shell uname -m) +# Possible values of interest: intel64 x86_64 amd64 ia64 ppc64 sparc sparc64 +x64 ?= $(findstring 64,$(subst sparc,sparc64,$(arch))) + +# see https://wiki.debian.org/Multiarch/Tuples +MULTIARCH = $(arch) +ifeq ($(arch),ia32) +MULTIARCH = i386 +endif +ifeq ($(arch),intel64) +MULTIARCH = x86_64 +endif +ifeq ($(arch),ppc32) +MULTIARCH = powerpc +endif +ifeq ($(arch),sparc) +MULTIARCH = sparc64 +endif +MULTIARCHTUPLE ?= $(MULTIARCH)-linux-gnu + +# detecting UI ("mac", "x" or "con") +ifeq ($(shell uname),Darwin) + UI ?= mac +else + UI ?= $(shell sh -c "[ -f /usr/X11R6/lib$(x64)/libX11.so -o -f /usr/lib$(x64)/libX11.so -o -f /usr/lib/$(MULTIARCHTUPLE)/libX11.so ] && echo x") +endif + +ifeq ($(UI),x) + EXE = $(NAME)$(SUFFIX) + UI_CXXFLAGS += -I/usr/X11R6/include + LIBS += -lpthread -L/usr/X11R6/lib$(x64) -lX11 + # detect if libXext can be found + ifeq ($(shell sh -c "[ -f /usr/X11R6/lib$(x64)/libXext.so -o -f /usr/lib$(x64)/libXext.so -o -f /usr/lib/$(MULTIARCHTUPLE)/libXext.so ] && echo 0"),0) + LIBS += -lXext + else # no libXext + UI_CXXFLAGS += -DX_NOSHMEM + endif # libXext + +else # ! X + ifeq ($(UI),mac) + CXX_UI?=g++ + LIBS += -framework OpenGL -framework Foundation -framework Cocoa + MACUISOURCES = ../../common/gui/xcode/tbbExample/OpenGLView.m ../../common/gui/xcode/tbbExample/main.m ../../common/gui/xcode/tbbExample/tbbAppDelegate.m + MACUIOBJS = OpenGLView.o main.o tbbAppDelegate.o + APPRES = $(NAME)$(SUFFIX).app/Contents/Resources + EXE = $(NAME)$(SUFFIX).app/Contents/MacOS/$(NAME)$(SUFFIX) + + else # ! OS X* + + EXE = $(NAME)$(SUFFIX) + ifeq (,$(strip $(UI))) + UI = con + $(warning Note: no graphics output capability detected, building for console output.) + endif + endif # OS X* +endif # X +endif # Windows vs. other diff --git a/examples/common/gui/Makefile.win b/examples/common/gui/Makefile.win new file mode 100644 index 0000000000..42ea77f59f --- /dev/null +++ b/examples/common/gui/Makefile.win @@ -0,0 +1,74 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# Per-build Makefile rules (for recursive $(MAKE) calls from Makefile) + +# Base compile/link options +MYCXXFLAGS = /nologo /EHsc /Zc:forScope /D WIN32 /D _MBCS /D _CRT_SECURE_NO_DEPRECATE /MP $(CXXFLAGS) +MYLFLAGS = /link /incremental:no /fixed:no $(LFLAGS) +CXXFLAGS_NDEBUG = /MD /O2 /Ot /Gy /D NDEBUG +CXXFLAGS_DEBUG = /MDd /Od /Zi /D _DEBUG + +# Specify library directory for Direct X SDK +DDLIB_DIR=$(DXSDK_DIR)\lib\$(XARCH:AMD64=x64) + +# Input and output files +#SOURCE = v +#RCNAME = specified externaly +#EXE = ^ +# defaults on XARCH = x86 +UISRC = ../../common/gui/$(UI)video.cpp + +default: + +build_echo: + -@echo Building$(DEBUG) $(EXE) with UI=$(UI) XARCH=$(XARCH) + +build_one: build_echo build_$(UI)$(DEBUG) + +build_con: $(SOURCE) $(UISRC) compiler_check + $(CXX) $(CXXFLAGS_NDEBUG) $(MYCXXFLAGS) $(SOURCE) $(UISRC) $(MYLFLAGS) /subsystem:console /OUT:$(EXE) + @cmd.exe /C del *.obj + +build_con_debug: $(SOURCE) $(UISRC) compiler_check + $(CXX) $(CXXFLAGS_DEBUG) $(MYCXXFLAGS) $(SOURCE) $(UISRC) $(MYLFLAGS) /debug /subsystem:console /OUT:$(EXE) + @cmd.exe /C del *.obj + +build_gdi: $(SOURCE) $(UISRC) msvs/$(RCNAME).res compiler_check + $(CXX) $(CXXFLAGS_NDEBUG) /D _WINDOWS $(MYCXXFLAGS) $(SOURCE) $(UISRC) $(MYLFLAGS) msvs/$(RCNAME).res /subsystem:windows /machine:$(XARCH) /OUT:$(EXE) + @cmd.exe /C del *.obj + +build_gdi_debug: $(SOURCE) $(UISRC) msvs/$(RCNAME).res compiler_check + $(CXX) $(CXXFLAGS_DEBUG) /D _WINDOWS $(MYCXXFLAGS) $(SOURCE) $(UISRC) $(MYLFLAGS) msvs/$(RCNAME).res /debug /subsystem:windows /machine:$(XARCH) /OUT:$(EXE) + @cmd.exe /C del *.obj + +build_d2d: $(SOURCE) $(UISRC) msvs/$(RCNAME).res compiler_check + -@echo Using DirectX SDK from "$(DDLIB_DIR)" + $(CXX) $(CXXFLAGS_NDEBUG) /D _WINDOWS $(MYCXXFLAGS) /I "$(DXSDK_DIR)\include" $(SOURCE) $(UISRC) $(MYLFLAGS) /LIBPATH:"$(DDLIB_DIR)" msvs/$(RCNAME).res /subsystem:windows /machine:$(XARCH) /OUT:$(EXE) + @cmd.exe /C del *.obj + +build_d2d_debug: $(SOURCE) $(UISRC) msvs/$(RCNAME).res compiler_check + -@echo Using DirectX SDK from "$(DDLIB_DIR)" + $(CXX) $(CXXFLAGS_DEBUG) /D _WINDOWS $(MYCXXFLAGS) /I "$(DXSDK_DIR)\include" $(SOURCE) $(UISRC) $(MYLFLAGS) /LIBPATH:"$(DDLIB_DIR)" msvs/$(RCNAME).res /debug /subsystem:windows /machine:$(XARCH) /OUT:$(EXE) + @cmd.exe /C del *.obj + +msvs/$(RCNAME).res: + rc /r msvs/$(RCNAME) +compiler_check: + @echo compiler_test>compiler_test && @$(CXX) /E compiler_test >nul 2>&1 || echo "$(CXX) command not found. Check if CXX=$(CXX) is set properly" + @cmd.exe /C del compiler_test diff --git a/examples/common/gui/convideo.cpp b/examples/common/gui/convideo.cpp new file mode 100644 index 0000000000..fd3d76f643 --- /dev/null +++ b/examples/common/gui/convideo.cpp @@ -0,0 +1,136 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#include "video.h" +#include +#include + +unsigned int * g_pImg = 0; +int g_sizex, g_sizey; +static video *g_video = 0; +static int g_fps = 0; + +#if _WIN32 || _WIN64 + +static DWORD g_msec = 0; + +#ifdef _WINDOWS +HINSTANCE video::win_hInstance = 0; +int video::win_iCmdShow = 0; +void video::win_set_class(WNDCLASSEX &wcex) { } +void video::win_load_accelerators(int idc) { } +#endif //_WINDOWS + +#else +#include +#include +struct timeval g_time; +#endif //_WIN32||_WIN64 + +#define CALC_FPS_ENABLED ((WINAPI_FAMILY != WINAPI_FAMILY_APP) && (!__ANDROID__)) + +video::video() + // OpenGL* RGBA byte order for little-endian CPU + : red_mask(0xff), red_shift(0), green_mask(0xff00), + green_shift(8), blue_mask(0xff0000), blue_shift(16), depth(24) +{ + assert(g_video == 0); + g_video = this; title = "Video"; updating = calc_fps = false; +} + +bool video::init_window(int x, int y) +{ + g_sizex = x; g_sizey = y; + g_pImg = new unsigned int[x*y]; + running = true; + return false; +} + +bool video::init_console() +{ + running = true; + return true; +} + +void video::terminate() +{ +#if CALC_FPS_ENABLED + if(calc_fps) { + double fps = g_fps; +#if _WIN32 || _WIN64 + fps /= (GetTickCount()-g_msec)/1000.0; +#else + struct timezone tz; struct timeval end_time; gettimeofday(&end_time, &tz); + fps /= (end_time.tv_sec+1.0*end_time.tv_usec/1000000.0) - (g_time.tv_sec+1.0*g_time.tv_usec/1000000.0); +#endif + printf("%s: %.1f fps\n", title, fps); + } +#endif + g_video = 0; running = false; + if(g_pImg) { delete[] g_pImg; g_pImg = 0; } +} + +video::~video() +{ + if(g_video) terminate(); +} + +//! Count and display FPS count in titlebar +bool video::next_frame() +{ +#if CALC_FPS_ENABLED + if(calc_fps){ + if(!g_fps) { +#if _WIN32 || _WIN64 + g_msec = GetTickCount(); +#else + struct timezone tz; gettimeofday(&g_time, &tz); +#endif + } + g_fps++; + } +#endif + return running; +} + +//! Do standard loop +void video::main_loop() +{ + on_process(); +} + +//! Change window title +void video::show_title() +{ +} + +///////////////////////////////////////////// public methods of video class /////////////////////// + +drawing_area::drawing_area(int x, int y, int sizex, int sizey) + : start_x(x), start_y(y), size_x(sizex), size_y(sizey), pixel_depth(24), + base_index(y*g_sizex + x), max_index(g_sizex*g_sizey), index_stride(g_sizex), ptr32(g_pImg) +{ + assert(x < g_sizex); assert(y < g_sizey); + assert(x+sizex <= g_sizex); assert(y+sizey <= g_sizey); + + index = base_index; // current index +} + +void drawing_area::update() {} diff --git a/examples/common/gui/d2dvideo.cpp b/examples/common/gui/d2dvideo.cpp new file mode 100644 index 0000000000..64f4cc594b --- /dev/null +++ b/examples/common/gui/d2dvideo.cpp @@ -0,0 +1,201 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +// common Windows parts +#include "winvideo.h" + +// and another headers +#include +#include +#include +#if _DXSDK_PRODUCT_MAJOR < 9 +#error DXSDK Version 9 and above required. +#endif +#include +#include +#pragma comment(lib, "d2d1.lib") + +ID2D1Factory *m_pD2DFactory; +ID2D1HwndRenderTarget *m_pRenderTarget; +ID2D1Bitmap *m_pBitmap; +D2D1_SIZE_U bitmapSize; + +HANDLE g_hVSync; + +#include +#pragma comment(lib, "DxErr.lib") + +//! Create a dialog box and tell the user what went wrong +bool DisplayError(LPSTR lpstrErr, HRESULT hres) +{ + if(hres != S_OK){ + static bool InError = false; + int retval = 0; + if (!InError) + { + InError = true; + const char *message = hres?DXGetErrorString(hres):0; + retval = MessageBoxA(g_hAppWnd, lpstrErr, hres?message:"Error!", MB_OK|MB_ICONERROR); + InError = false; + } + } + return false; +} + +void DrawBitmap() +{ + HRESULT hr = S_OK; + if (m_pRenderTarget) { + m_pRenderTarget->BeginDraw(); + if (m_pBitmap) + hr = m_pBitmap->CopyFromMemory(NULL,(BYTE*)g_pImg, 4*g_sizex); + DisplayError( "DrawBitmap error", hr ); + m_pRenderTarget->DrawBitmap(m_pBitmap); + m_pRenderTarget->EndDraw(); + } + return; +} + +inline void mouse(int k, LPARAM lParam) +{ + int x = (int)LOWORD(lParam); + int y = (int)HIWORD(lParam); + RECT rc; + GetClientRect(g_hAppWnd, &rc); + g_video->on_mouse( x*g_sizex/(rc.right - rc.left), y*g_sizey/(rc.bottom - rc.top), k ); +} + +//! Win event processing function +LRESULT CALLBACK InternalWndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) +{ + switch (iMsg) + { + case WM_MOVE: + // Check to make sure our window exists before we tell it to repaint. + // This will fail the first time (while the window is being created). + if (hwnd) { + InvalidateRect(hwnd, NULL, FALSE); + UpdateWindow(hwnd); + } + return 0L; + + case WM_SIZE: + case WM_PAINT: + if( g_video->running && g_video->updating ) { + DrawBitmap(); + Sleep(0); + } + break; + // Process all mouse and keyboard events + case WM_LBUTTONDOWN: mouse( 1, lParam ); break; + case WM_LBUTTONUP: mouse(-1, lParam ); break; + case WM_RBUTTONDOWN: mouse( 2, lParam ); break; + case WM_RBUTTONUP: mouse(-2, lParam ); break; + case WM_MBUTTONDOWN: mouse( 3, lParam ); break; + case WM_MBUTTONUP: mouse(-3, lParam ); break; + case WM_CHAR: g_video->on_key( (int)wParam); break; + + // some useless stuff + case WM_ERASEBKGND: return 1; // keeps erase-background events from happening, reduces chop + case WM_DISPLAYCHANGE: return 0; + + // Now, shut down the window... + case WM_DESTROY: PostQuitMessage(0); return 0; + } + // call user defined proc, if exists + return g_pUserProc? g_pUserProc(hwnd, iMsg, wParam, lParam) : DefWindowProc(hwnd, iMsg, wParam, lParam); +} + +bool video::init_window(int sizex, int sizey) +{ + assert(win_hInstance != 0); + g_sizex = sizex; g_sizey = sizey; + if (!WinInit(win_hInstance, win_iCmdShow, gWndClass, title, false)) { + DisplayError("Unable to initialize the program's window."); + return false; + } + ShowWindow(g_hAppWnd, SW_SHOW); + g_pImg = new unsigned int[sizex*sizey]; + + HRESULT hr = S_OK; + + hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &m_pD2DFactory); + // Create a Direct2D render target. + if (SUCCEEDED(hr) && !m_pRenderTarget){ + RECT rc; + GetClientRect(g_hAppWnd, &rc); + + bitmapSize = D2D1::SizeU( + rc.right - rc.left, + rc.bottom - rc.top + ); + + hr = m_pD2DFactory->CreateHwndRenderTarget( + D2D1::RenderTargetProperties(), + D2D1::HwndRenderTargetProperties(g_hAppWnd, bitmapSize), + &m_pRenderTarget + ); + if (SUCCEEDED(hr) && !m_pBitmap){ + D2D1_PIXEL_FORMAT pixelFormat = D2D1::PixelFormat( + DXGI_FORMAT_B8G8R8A8_UNORM, + D2D1_ALPHA_MODE_IGNORE + ); + D2D1_BITMAP_PROPERTIES bitmapProperties; + bitmapProperties.pixelFormat = pixelFormat; + m_pRenderTarget->GetDpi( &bitmapProperties.dpiX, &bitmapProperties.dpiY ); + m_pRenderTarget->CreateBitmap(bitmapSize,bitmapProperties,&m_pBitmap); + m_pRenderTarget->DrawBitmap(m_pBitmap); + } + } + + running = true; + return true; +} + +void video::terminate() +{ + if (m_pBitmap) m_pBitmap->Release(); + if (m_pRenderTarget) m_pRenderTarget->Release(); + if (m_pD2DFactory) m_pD2DFactory->Release(); + g_video = 0; running = false; + if(g_pImg) { delete[] g_pImg; g_pImg = 0; } +} + +//////////// drawing area constructor & destructor ///////////// + +drawing_area::drawing_area(int x, int y, int sizex, int sizey) +: start_x(x), start_y(y), size_x(sizex), size_y(sizey), pixel_depth(24), + base_index(y*g_sizex + x), max_index(g_sizex*g_sizey), index_stride(g_sizex), ptr32(g_pImg) +{ + assert(x < g_sizex); assert(y < g_sizey); + assert(x+sizex <= g_sizex); assert(y+sizey <= g_sizey); + + index = base_index; // current index +} + +void drawing_area::update() +{ + if(g_video->updating) { + RECT r; + r.left = start_x; r.right = start_x + size_x; + r.top = start_y; r.bottom = start_y + size_y; + InvalidateRect(g_hAppWnd, &r, false); + } +} diff --git a/examples/common/gui/dxcheck.bat b/examples/common/gui/dxcheck.bat new file mode 100644 index 0000000000..5c0e282ce2 --- /dev/null +++ b/examples/common/gui/dxcheck.bat @@ -0,0 +1,28 @@ +@echo off +REM +REM Copyright 2005-2015 Intel Corporation. All Rights Reserved. +REM +REM This file is part of Threading Building Blocks. Threading Building Blocks is free software; +REM you can redistribute it and/or modify it under the terms of the GNU General Public License +REM version 2 as published by the Free Software Foundation. Threading Building Blocks is +REM distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +REM implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +REM See the GNU General Public License for more details. You should have received a copy of +REM the GNU General Public License along with Threading Building Blocks; if not, write to the +REM Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +REM +REM As a special exception, you may use this file as part of a free software library without +REM restriction. Specifically, if other files instantiate templates or use macros or inline +REM functions from this file, or you compile this file and link it with other files to produce +REM an executable, this file does not by itself cause the resulting executable to be covered +REM by the GNU General Public License. This exception does not however invalidate any other +REM reasons why the executable file might be covered by the GNU General Public License. +REM +if "%DXSDK_DIR%"=="" goto error_no_DXSDK +goto end + +:error_no_DXSDK +echo DirectX SDK Check : error : This example requires the DirectX SDK. Either (re)-install the DirectX SDK, or set the DXSDK_DIR environment variable to indicate where it is installed. + +:end + diff --git a/examples/common/gui/gdivideo.cpp b/examples/common/gui/gdivideo.cpp new file mode 100644 index 0000000000..64d6a64a52 --- /dev/null +++ b/examples/common/gui/gdivideo.cpp @@ -0,0 +1,146 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +// common Windows parts +#include "winvideo.h" +// include GDI+ headers +#include +// and another headers +#include + +// tag linking library +#pragma comment(lib, "gdiplus.lib") + +// global specific variables +Gdiplus::Bitmap * g_pBitmap; // main drawing bitmap +ULONG_PTR gdiplusToken; +Gdiplus::GdiplusStartupInput gdiplusStartupInput;// GDI+ + +//! display system error +bool DisplayError(LPSTR lpstrErr, HRESULT hres) +{ + static bool InError = false; + int retval = 0; + if (!InError) + { + InError = true; + LPCSTR lpMsgBuf; + if(!hres) hres = GetLastError(); + FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, hres, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL ); + retval = MessageBox(g_hAppWnd, lpstrErr, lpMsgBuf, MB_OK|MB_ICONERROR); + LocalFree( (HLOCAL)lpMsgBuf ); + InError = false; + } + return false; +} + +//! Win event processing function +LRESULT CALLBACK InternalWndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) +{ + switch (iMsg) + { + case WM_MOVE: + // Check to make sure our window exists before we tell it to repaint. + // This will fail the first time (while the window is being created). + if (hwnd) { + InvalidateRect(hwnd, NULL, FALSE); + UpdateWindow(hwnd); + } + return 0L; + + case WM_PAINT: + { + PAINTSTRUCT ps; + Gdiplus::Graphics graphics( BeginPaint(hwnd, &ps) ); + // redraw just requested area. This call is as fast as simple DrawImage() call. + if(g_video->updating) graphics.DrawImage(g_pBitmap, ps.rcPaint.left, ps.rcPaint.top, ps.rcPaint.left, ps.rcPaint.top, + ps.rcPaint.right, ps.rcPaint.bottom, Gdiplus::UnitPixel); + EndPaint(hwnd, &ps); + } + return 0L; + + // Process all mouse and keyboard events + case WM_LBUTTONDOWN: g_video->on_mouse( (int)LOWORD(lParam), (int)HIWORD(lParam), 1); break; + case WM_LBUTTONUP: g_video->on_mouse( (int)LOWORD(lParam), (int)HIWORD(lParam), -1); break; + case WM_RBUTTONDOWN: g_video->on_mouse( (int)LOWORD(lParam), (int)HIWORD(lParam), 2); break; + case WM_RBUTTONUP: g_video->on_mouse( (int)LOWORD(lParam), (int)HIWORD(lParam), -2); break; + case WM_MBUTTONDOWN: g_video->on_mouse( (int)LOWORD(lParam), (int)HIWORD(lParam), 3); break; + case WM_MBUTTONUP: g_video->on_mouse( (int)LOWORD(lParam), (int)HIWORD(lParam), -3); break; + case WM_CHAR: g_video->on_key( (int)wParam); break; + + // some useless stuff + case WM_ERASEBKGND: return 1; // keeps erase-background events from happening, reduces chop + case WM_DISPLAYCHANGE: return 0; + + // Now, shut down the window... + case WM_DESTROY: PostQuitMessage(0); return 0; + } + // call user defined proc, if exists + return g_pUserProc? g_pUserProc(hwnd, iMsg, wParam, lParam) : DefWindowProc(hwnd, iMsg, wParam, lParam); +} + +///////////// video functions //////////////// + +bool video::init_window(int sizex, int sizey) +{ + assert(win_hInstance != 0); + g_sizex = sizex; g_sizey = sizey; + if (!WinInit(win_hInstance, win_iCmdShow, gWndClass, title, true)) { + DisplayError("Unable to initialize the program's window."); + return false; + } + ShowWindow(g_hAppWnd, SW_SHOW); + Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); + g_pImg = new unsigned int[sizex*sizey]; + g_pBitmap = new Gdiplus::Bitmap(g_sizex, g_sizey, 4*g_sizex, PixelFormat32bppRGB, (BYTE*)g_pImg ); + running = true; + return true; +} + +void video::terminate() +{ + if(g_pBitmap) { delete g_pBitmap; g_pBitmap = 0; } + Gdiplus::GdiplusShutdown(gdiplusToken); + g_video = 0; running = false; + if(g_pImg) { delete[] g_pImg; g_pImg = 0; } +} + +//////////// drawing area constructor & destructor ///////////// + +drawing_area::drawing_area(int x, int y, int sizex, int sizey) +: start_x(x), start_y(y), size_x(sizex), size_y(sizey), pixel_depth(24), + base_index(y*g_sizex + x), max_index(g_sizex*g_sizey), index_stride(g_sizex), ptr32(g_pImg) +{ + assert(x < g_sizex); assert(y < g_sizey); + assert(x+sizex <= g_sizex); assert(y+sizey <= g_sizey); + + index = base_index; // current index +} + +void drawing_area::update() +{ + if(g_video->updating) { + RECT r; + r.left = start_x; r.right = start_x + size_x; + r.top = start_y; r.bottom = start_y + size_y; + InvalidateRect(g_hAppWnd, &r, false); + } +} diff --git a/examples/common/gui/macvideo.cpp b/examples/common/gui/macvideo.cpp new file mode 100644 index 0000000000..e18910e308 --- /dev/null +++ b/examples/common/gui/macvideo.cpp @@ -0,0 +1,158 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#include "video.h" +#include +#include +#include +#include + +unsigned int* g_pImg = 0; +int g_sizex=0, g_sizey=0; +static video *g_video = 0; +static int g_fps = 0; +char *window_title=NULL; +#define WINDOW_TITLE_SIZE 256 +int cocoa_update=0; + +#include +#include +struct timeval g_time; + +video::video() + : red_mask(0xff0000), red_shift(16), green_mask(0xff00), + green_shift(8), blue_mask(0xff), blue_shift(0), depth(24) +{ + assert(g_video == 0); + g_video = this; title = "Video"; cocoa_update=1; updating = true; calc_fps = false; +} + +bool video::init_window(int x, int y) +{ + g_sizex = x; g_sizey = y; + g_pImg = new unsigned int[x*y]; + if( window_title==NULL ) + window_title = (char*)malloc(WINDOW_TITLE_SIZE); + strncpy( window_title, title, WINDOW_TITLE_SIZE-1 ); + running = true; + return true; +} + +bool video::init_console() +{ + running = true; + return true; +} + +void video::terminate() +{ + if(calc_fps) { + double fps = g_fps; + struct timezone tz; struct timeval end_time; gettimeofday(&end_time, &tz); + fps /= (end_time.tv_sec+1.0*end_time.tv_usec/1000000.0) - (g_time.tv_sec+1.0*g_time.tv_usec/1000000.0); + printf("%s: %.1f fps\n", title, fps); + } + g_video = 0; running = false; + if(g_pImg) { delete[] g_pImg; g_pImg = 0; } +} + +video::~video() +{ + if(g_video) terminate(); +} + +//! Count and display FPS count in titlebar +bool video::next_frame() +{ + if(calc_fps){ + if(!g_fps) { + struct timezone tz; gettimeofday(&g_time, &tz); + } + g_fps++; + } + struct timezone tz; struct timeval now_time; gettimeofday(&now_time, &tz); + double sec=((now_time.tv_sec+1.0*now_time.tv_usec/1000000.0) - (g_time.tv_sec+1.0*g_time.tv_usec/1000000.0)); + if( sec>1 ){ + if(calc_fps) { + memcpy(&g_time, &now_time, sizeof(g_time)); + int fps; + fps = g_fps/sec; + cocoa_update = (int)updating; + snprintf(window_title,WINDOW_TITLE_SIZE, "%s%s: %d fps", title, updating?"":" (no updating)", int(fps)); + g_fps=0; + } + } + return running; +} + + +void* thread_func(void*) +{ + g_video->on_process(); + exit(EXIT_SUCCESS); +} + +extern "C" void on_mouse_func(int x, int y, int k) +{ + g_video->on_mouse(x, y, k); + return; +} + +extern "C" void on_key_func(int x) +{ + g_video->on_key(x); + return; +} + +extern "C" int cocoa_main( int argc, char *argv[] ); +//! Do standard loop +void video::main_loop() +{ + pthread_t handle; + pthread_attr_t attr; + pthread_attr_init(&attr); + pthread_create(&handle,&attr,&thread_func,(void*)NULL); + pthread_detach(handle); + cocoa_main( 0, NULL ); +} + +//! Change window title +void video::show_title() +{ + strncpy( window_title, title, WINDOW_TITLE_SIZE ); + return; +} + +///////////////////////////////////////////// public methods of video class /////////////////////// + +drawing_area::drawing_area(int x, int y, int sizex, int sizey) + : start_x(x), start_y(y), size_x(sizex), size_y(sizey), pixel_depth(24), + base_index(y*g_sizex + x), max_index(g_sizex*g_sizey), index_stride(g_sizex), ptr32(g_pImg) +{ + assert(x < g_sizex); assert(y < g_sizey); + assert(x+sizex <= g_sizex); assert(y+sizey <= g_sizey); + + index = base_index; // current index +} + +void drawing_area::update() +{ + //nothing to do, updating via timer in cocoa part. +} diff --git a/examples/common/gui/video.h b/examples/common/gui/video.h new file mode 100644 index 0000000000..35823ca2d1 --- /dev/null +++ b/examples/common/gui/video.h @@ -0,0 +1,241 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#ifndef __VIDEO_H__ +#define __VIDEO_H__ + +#include +#if _MSC_VER +#include // for uintptr_t +#else +#include // for uintptr_t +#endif +#if _WIN32 || _WIN64 +#include +#else +#include +#endif + +typedef unsigned int color_t; +typedef unsigned char colorcomp_t; +typedef signed char depth_t; + +//! Class for getting access to drawing memory +class drawing_memory +{ +#ifdef __TBB_MIC_OFFLOAD + // The address is kept as uintptr_t since + // the compiler could not offload a pointer +#endif + uintptr_t my_address; +public: + depth_t pixel_depth; + int sizex, sizey; + //! Get drawing memory + inline char* get_address() const { return reinterpret_cast(my_address); } + //! Get drawing memory size + inline int get_size() const { return ((pixel_depth>16) ? 4:2) * sizex * sizey; } + //! Set drawing memory + inline void set_address(char *mem) { my_address = reinterpret_cast(mem); } + + friend class drawing_area; + friend class video; +}; + +//! Simple proxy class for managing of different video systems +class video +{ + //! colorspace information + depth_t depth, red_shift, green_shift, blue_shift; + color_t red_mask, green_mask, blue_mask; + friend class drawing_area; + +public: + //! Constructor + video(); + //! Destructor + ~video(); + //! member to set window name + const char *title; + //! true is enable to show fps + bool calc_fps; + //! if true: on windows fork processing thread for on_process(), on non-windows note that next_frame() is called concurrently. + bool threaded; + //! true while running within main_loop() + bool running; + //! if true, do gui updating + bool updating; + //! initialize graphical video system + bool init_window(int sizex, int sizey); + //! initialize console. returns true if console is available + bool init_console(); + //! terminate video system + void terminate(); + //! Do standard event & processing loop. Use threaded = true to separate event/updating loop from frame processing + void main_loop(); + //! Process next frame + bool next_frame(); + //! Change window title + void show_title(); + //! translate RGB components into packed type + inline color_t get_color(colorcomp_t red, colorcomp_t green, colorcomp_t blue) const; + //! Get drawing memory descriptor + inline drawing_memory get_drawing_memory() const; + + //! code of the ESCape key + static const int esc_key = 27; + //! Mouse events handler. + virtual void on_mouse(int x, int y, int key) { } + //! Mouse events handler. + virtual void on_key(int key) { } + //! Main processing loop. Redefine with your own + virtual void on_process() { while(next_frame()); } + +#ifdef _WINDOWS + //! Windows specific members + //! if VIDEO_WINMAIN isn't defined then set this just before init() by arguments of WinMain + static HINSTANCE win_hInstance; static int win_iCmdShow; + //! optionally call it just before init() to set own. Use ascii strings convention + void win_set_class(WNDCLASSEX &); + //! load and set accelerator table from resources + void win_load_accelerators(int idc); +#endif +}; + +//! Drawing class +class drawing_area +{ + const size_t base_index, max_index, index_stride; + const depth_t pixel_depth; + unsigned int * const ptr32; + size_t index; +public: + const int start_x, start_y, size_x, size_y; + //! constructors + drawing_area(int x, int y, int sizex, int sizey); + inline drawing_area(int x, int y, int sizex, int sizey, const drawing_memory &dmem); + //! destructor + inline ~drawing_area(); + //! update the image + void update(); + //! set current position. local_x could be bigger then size_x + inline void set_pos(int local_x, int local_y); + //! put pixel in current position with incremental address calculating to next right pixel + inline void put_pixel(color_t color); + //! draw pixel at position by packed color + void set_pixel(int localx, int localy, color_t color) + { set_pos(localx, localy); put_pixel(color); } +}; + +extern int g_sizex; +extern int g_sizey; +extern unsigned int *g_pImg; + +inline drawing_memory video::get_drawing_memory() const +{ + drawing_memory dmem; + dmem.pixel_depth = depth; + dmem.my_address = reinterpret_cast(g_pImg); + dmem.sizex = g_sizex; + dmem.sizey = g_sizey; + return dmem; +} + +inline color_t video::get_color(colorcomp_t red, colorcomp_t green, colorcomp_t blue) const +{ + if(red_shift == 16) // only for depth == 24 && red_shift > blue_shift + return (red<<16) | (green<<8) | blue; + else if(depth >= 24) + return +#if __ANDROID__ + // Setting Alpha to 0xFF + 0xFF000000 | +#endif + (red< 0) { + register depth_t bs = blue_shift, rs = red_shift; + if(blue_shift < 0) blue >>= -bs, bs = 0; + else /*red_shift < 0*/ red >>= -rs, rs = 0; + return ((red<2^16 + u = (2048 + (blue << 3) - (y >> 5)) >> 4; // (limit->2^12)>>4 + v = (2048 + (red << 3) - (y >> 5)) >> 4; + y = y >> 8; + return u | (y << 8) | (v << 16) | (y << 24); + } +} + +inline drawing_area::drawing_area(int x, int y, int sizex, int sizey, const drawing_memory &dmem) + : start_x(x), start_y(y), size_x(sizex), size_y(sizey), pixel_depth(dmem.pixel_depth), + base_index(y*dmem.sizex + x), max_index(dmem.sizex*dmem.sizey), index_stride(dmem.sizex), + ptr32(reinterpret_cast(dmem.my_address)) +{ + assert(x < dmem.sizex); assert(y < dmem.sizey); + assert(x+sizex <= dmem.sizex); assert(y+sizey <= dmem.sizey); + + index = base_index; // current index +} + +inline void drawing_area::set_pos(int local_x, int local_y) +{ + index = base_index + local_x + local_y*index_stride; +} + +inline void drawing_area::put_pixel(color_t color) +{ + assert(index < max_index); + if(pixel_depth > 16) ptr32[index++] = color; + else if(pixel_depth > 0) + ((unsigned short*)ptr32)[index++] = (unsigned short)color; + else { // UYVY colorspace + if(index&1) color >>= 16; + ((unsigned short*)ptr32)[index++] = (unsigned short)color; + } +} + +inline drawing_area::~drawing_area() +{ +#if ! __TBB_DEFINE_MIC + update(); +#endif +} + +#if defined(_WINDOWS) && (defined(VIDEO_WINMAIN) || defined(VIDEO_WINMAIN_ARGS) ) +#include +//! define WinMain for subsystem:windows. +#ifdef VIDEO_WINMAIN_ARGS +int main(int, char *[]); +#else +int main(); +#endif +int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR szCmdLine, int iCmdShow) +{ + video::win_hInstance = hInstance; video::win_iCmdShow = iCmdShow; +#ifdef VIDEO_WINMAIN_ARGS + return main(__argc, __argv); +#else + return main(); +#endif +} +#endif + +#endif// __VIDEO_H__ diff --git a/examples/common/gui/winvideo.h b/examples/common/gui/winvideo.h new file mode 100644 index 0000000000..b31cd9019b --- /dev/null +++ b/examples/common/gui/winvideo.h @@ -0,0 +1,283 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +/////// Common internal implementation of Windows-specific stuff ////////////// +/////// Must be the first included header ////////////// + +#ifndef __WINVIDEO_H__ +#define __WINVIDEO_H__ + +#ifndef _CRT_SECURE_NO_DEPRECATE +#define _CRT_SECURE_NO_DEPRECATE +#endif +// Check that the target Windows version has all API calls requried. +#ifndef _WIN32_WINNT +# define _WIN32_WINNT 0x0400 +#endif +#if _WIN32_WINNT<0x0400 +# define YIELD_TO_THREAD() Sleep(0) +#else +# define YIELD_TO_THREAD() SwitchToThread() +#endif +#include "video.h" +#include +#include +#include +#include + +#pragma comment(lib, "gdi32.lib") +#pragma comment(lib, "user32.lib") + +// maximum mumber of lines the output console should have +static const WORD MAX_CONSOLE_LINES = 500; +const COLORREF RGBKEY = RGB(8, 8, 16); // at least 8 for 16-bit palette +HWND g_hAppWnd; // The program's window handle +HANDLE g_handles[2] = {0,0};// thread and wake up event +unsigned int * g_pImg = 0; // drawing memory +int g_sizex, g_sizey; +static video * g_video = 0; +WNDPROC g_pUserProc = 0; +HINSTANCE video::win_hInstance = 0; +int video::win_iCmdShow = 0; +static WNDCLASSEX * gWndClass = 0; +static HACCEL hAccelTable = 0; +static DWORD g_msec = 0; +static int g_fps = 0, g_updates = 0, g_skips = 0; + +bool DisplayError(LPSTR lpstrErr, HRESULT hres = 0); // always returns false +LRESULT CALLBACK InternalWndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam); + +//! Create window +bool WinInit(HINSTANCE hInstance, int nCmdShow, WNDCLASSEX *uwc, const char *title, bool fixedsize) +{ + WNDCLASSEX wndclass; // Our app's windows class + if(uwc) { + memcpy(&wndclass, uwc, sizeof(wndclass)); + g_pUserProc = uwc->lpfnWndProc; + } else { + memset(&wndclass, 0, sizeof(wndclass)); + wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); + wndclass.lpszClassName = title; + } + wndclass.cbSize = sizeof(wndclass); + wndclass.hInstance = hInstance; + wndclass.lpfnWndProc = InternalWndProc; + wndclass.style |= CS_HREDRAW | CS_VREDRAW; + wndclass.hbrBackground = CreateSolidBrush(RGBKEY); + + if( !RegisterClassExA(&wndclass) ) return false; + int xaddend = GetSystemMetrics(fixedsize?SM_CXFIXEDFRAME:SM_CXFRAME)*2; + int yaddend = GetSystemMetrics(fixedsize?SM_CYFIXEDFRAME:SM_CYFRAME)*2 + GetSystemMetrics(SM_CYCAPTION); + if(wndclass.lpszMenuName) yaddend += GetSystemMetrics(SM_CYMENU); + + // Setup the new window's physical parameters - and tell Windows to create it + g_hAppWnd = CreateWindowA(wndclass.lpszClassName, // Window class name + title, // Window caption + !fixedsize ? WS_OVERLAPPEDWINDOW : // Window style + WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX, + CW_USEDEFAULT, // Initial x pos: use default placement + 0, // Initial y pos: not used here + g_sizex+xaddend,// Initial x size + g_sizey+yaddend,// Initial y size + NULL, // parent window handle + NULL, // window menu handle + hInstance, // program instance handle + NULL); // Creation parameters + return g_hAppWnd != NULL; +} + +//! create console window with redirection +static bool RedirectIOToConsole(void) +{ + int hConHandle; size_t lStdHandle; + CONSOLE_SCREEN_BUFFER_INFO coninfo; + FILE *fp; + // allocate a console for this app + AllocConsole(); + + // set the screen buffer to be big enough to let us scroll text + GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &coninfo); + coninfo.dwSize.Y = MAX_CONSOLE_LINES; + SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coninfo.dwSize); + + // redirect unbuffered STDOUT to the console + lStdHandle = (size_t)GetStdHandle(STD_OUTPUT_HANDLE); + hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); + if(hConHandle <= 0) return false; + fp = _fdopen( hConHandle, "w" ); + *stdout = *fp; + setvbuf( stdout, NULL, _IONBF, 0 ); + + // redirect unbuffered STDERR to the console + lStdHandle = (size_t)GetStdHandle(STD_ERROR_HANDLE); + hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); + if(hConHandle > 0) { + fp = _fdopen( hConHandle, "w" ); + *stderr = *fp; + setvbuf( stderr, NULL, _IONBF, 0 ); + } + + // redirect unbuffered STDIN to the console + lStdHandle = (size_t)GetStdHandle(STD_INPUT_HANDLE); + hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); + if(hConHandle > 0) { + fp = _fdopen( hConHandle, "r" ); + *stdin = *fp; + setvbuf( stdin, NULL, _IONBF, 0 ); + } + + // make cout, wcout, cin, wcin, wcerr, cerr, wclog and clog + // point to console as well + std::ios::sync_with_stdio(); + return true; +} + + +video::video() + : red_mask(0xff0000), red_shift(16), green_mask(0xff00), + green_shift(8), blue_mask(0xff), blue_shift(0), depth(24) +{ + assert(g_video == 0); + g_video = this; title = "Video"; running = threaded = calc_fps = false; updating = true; +} + +//! optionally call it just before init() to set own +void video::win_set_class(WNDCLASSEX &wcex) +{ + gWndClass = &wcex; +} + +void video::win_load_accelerators(int idc) +{ + hAccelTable = LoadAccelerators(win_hInstance, MAKEINTRESOURCE(idc)); +} + +bool video::init_console() +{ + if(RedirectIOToConsole()) { + if(!g_pImg && g_sizex && g_sizey) + g_pImg = new unsigned int[g_sizex * g_sizey]; + if(g_pImg) running = true; + return true; + } + return false; +} + +video::~video() +{ + if(g_video) terminate(); +} + +DWORD WINAPI thread_video(LPVOID lpParameter) +{ + video *v = (video*)lpParameter; + v->on_process(); + return 0; +} + +static bool loop_once(video *v) +{ + // screen update notify + if(int updates = g_updates) { + g_updates = 0; + if(g_video->updating) { g_skips += updates-1; g_fps++; } + else g_skips += updates; + UpdateWindow(g_hAppWnd); + } + // update fps + DWORD msec = GetTickCount(); + if(v->calc_fps && msec >= g_msec+1000) { + double sec = (msec - g_msec)/1000.0; + char buffer[256], n = _snprintf(buffer, 128, "%s: %d fps", v->title, int(double(g_fps + g_skips)/sec)); + if(g_skips) _snprintf(buffer+n, 128, " - %d skipped = %d updates", int(g_skips/sec), int(g_fps/sec)); + SetWindowTextA(g_hAppWnd, buffer); + g_msec = msec; g_skips = g_fps = 0; + } + // event processing, including painting + MSG msg; + if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){ + if( msg.message == WM_QUIT ) { v->running = false; return false; } + if( !hAccelTable || !TranslateAccelerator(msg.hwnd, hAccelTable, &msg) ){ + TranslateMessage(&msg); + DispatchMessage(&msg); + } + return true; // try again + } + return false; +} + +//! Do standard event loop +void video::main_loop() +{ + // let Windows draw and unroll the window + InvalidateRect(g_hAppWnd, 0, false); + g_msec = GetTickCount(); // let's stay for 0,5 sec + while(g_msec + 500 > GetTickCount()) { loop_once(this); Sleep(1); } + g_msec = GetTickCount(); + // now, start main process + if(threaded) { + g_handles[0] = CreateThread ( + NULL, // LPSECURITY_ATTRIBUTES security_attrs + 0, // SIZE_T stacksize + (LPTHREAD_START_ROUTINE) thread_video, + this, // argument + 0, 0); + if(!g_handles[0]) { DisplayError("Can't create thread"); return; } + else // harmless race is possible here + g_handles[1] = CreateEvent(NULL, false, false, NULL); + while(running) { + while(loop_once(this)); + YIELD_TO_THREAD(); // give time for processing when running on single CPU + DWORD r = MsgWaitForMultipleObjects(2, g_handles, false, INFINITE, QS_ALLINPUT^QS_MOUSEMOVE); + if(r == WAIT_OBJECT_0) break; // thread terminated + } + running = false; + if(WaitForSingleObject(g_handles[0], 3000) == WAIT_TIMEOUT){ + // there was not enough time for graceful shutdown, killing the example with code 1. + exit(1); + } + if(g_handles[0]) CloseHandle(g_handles[0]); + if(g_handles[1]) CloseHandle(g_handles[1]); + g_handles[0] = g_handles[1] = 0; + } + else on_process(); +} + +//! Refresh screen picture +bool video::next_frame() +{ + if(!running) return false; + g_updates++; // Fast but inaccurate counter. The data race here is benign. + if(!threaded) while(loop_once(this)); + else if(g_handles[1]) { + SetEvent(g_handles[1]); + YIELD_TO_THREAD(); + } + return true; +} + +//! Change window title +void video::show_title() +{ + if(g_hAppWnd) + SetWindowTextA(g_hAppWnd, title); +} + +#endif //__WINVIDEO_H__ diff --git a/examples/common/gui/xcode/tbbExample/Info.plist b/examples/common/gui/xcode/tbbExample/Info.plist new file mode 100644 index 0000000000..db4faaed44 --- /dev/null +++ b/examples/common/gui/xcode/tbbExample/Info.plist @@ -0,0 +1,59 @@ + + + + + BuildMachineOSBuild + 11D50d + CFBundleDevelopmentRegion + en + CFBundleDisplayName + + CFBundleExecutable + tbbExample + CFBundleIdentifier + Intel.tbbExample + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + tbbExample + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + 4E1019 + DTPlatformVersion + GM + DTSDKBuild + 11D50a + DTSDKName + macosx10.7 + DTXcode + 0431 + DTXcodeBuild + 4E1019 + LSApplicationCategoryType + public.app-category.business + LSEnvironment + + DYLD_LIBRARY_PATH + Contents/Resources:.:../Resources:/tmp:$DYLD_LIBRARY_PATH + LIBRARY_PATH + Contents/Resources:.:../:/tmp:$DYLD_LIBRARY_PATH + + LSMinimumSystemVersion + 10.7 + NSHumanReadableCopyright + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/examples/common/gui/xcode/tbbExample/OpenGLView.h b/examples/common/gui/xcode/tbbExample/OpenGLView.h new file mode 100644 index 0000000000..5b47e3d147 --- /dev/null +++ b/examples/common/gui/xcode/tbbExample/OpenGLView.h @@ -0,0 +1,36 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#import +#import + +@interface OpenGLView : NSOpenGLView{ + NSTimer *timer; +} + +@property (nonatomic,retain) NSTimer *timer; + +- (void) drawRect:(NSRect)start; +- (void) mouseDown:(NSEvent *)theEvent; +- (void) keyDown:(NSEvent *)theEvent; +- (BOOL) acceptsFirstResponder; +- (void) viewDidEndLiveResize; + +@end diff --git a/examples/common/gui/xcode/tbbExample/OpenGLView.m b/examples/common/gui/xcode/tbbExample/OpenGLView.m new file mode 100644 index 0000000000..19a76d4586 --- /dev/null +++ b/examples/common/gui/xcode/tbbExample/OpenGLView.m @@ -0,0 +1,85 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#import "OpenGLView.h" +#import +#import "tbbAppDelegate.h" + +// defined in macvideo.cpp +extern char* window_title; +extern int cocoa_update; +extern int g_sizex, g_sizey; +extern unsigned int *g_pImg; +void on_mouse_func(int x, int y, int k); +void on_key_func(int x); + +@implementation OpenGLView + +@synthesize timer; + +- (void) drawRect:(NSRect)start +{ + glWindowPos2i(0, (int)self.visibleRect.size.height); + glPixelZoom( (float)self.visibleRect.size.width /(float)g_sizex, + -(float)self.visibleRect.size.height/(float)g_sizey); + glDrawPixels(g_sizex, g_sizey, GL_BGRA_EXT, GL_UNSIGNED_INT_8_8_8_8_REV, g_pImg); + glFlush(); + + timer = [NSTimer scheduledTimerWithTimeInterval:0.03 target:self selector:@selector(update_window) userInfo:nil repeats:YES]; +} + +-(void) update_window{ + if( cocoa_update ) [self setNeedsDisplay:YES]; // TODO also clear cocoa_update? + if( window_title ) [_window setTitle:[NSString stringWithFormat:@"%s", window_title]]; +} + +-(void) keyDown:(NSEvent *)theEvent{ + on_key_func([theEvent.characters characterAtIndex:0]); +} + +-(void) mouseDown:(NSEvent *)theEvent{ + // mouse event for seismic and fractal + NSPoint point= theEvent.locationInWindow; + const int x = (int)point.x; + const int y = (int)point.y; + NSRect rect = self.visibleRect; + on_mouse_func(x*g_sizex/(int)rect.size.width,((int)rect.size.height-y)*g_sizey/(int)rect.size.height,1); + [self setNeedsDisplay:YES]; +} + +- (BOOL) acceptsFirstResponder +{ + return YES; +} + +- (void) rightMouseDown:(NSEvent *)theEvent +{ + return; +} + +-(void) viewDidEndLiveResize +{ + NSRect rect = self.visibleRect; + const int x=(int)rect.size.width; + const int y=(int)rect.size.height; + [_window setTitle:[NSString stringWithFormat:@"X=%d Y=%d", x,y]]; +} + +@end diff --git a/examples/common/gui/xcode/tbbExample/PkgInfo b/examples/common/gui/xcode/tbbExample/PkgInfo new file mode 100644 index 0000000000..bd04210fb4 --- /dev/null +++ b/examples/common/gui/xcode/tbbExample/PkgInfo @@ -0,0 +1 @@ +APPL???? \ No newline at end of file diff --git a/examples/common/gui/xcode/tbbExample/en.lproj/InfoPlist.strings b/examples/common/gui/xcode/tbbExample/en.lproj/InfoPlist.strings new file mode 100644 index 0000000000..477b28ff8f --- /dev/null +++ b/examples/common/gui/xcode/tbbExample/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/examples/common/gui/xcode/tbbExample/en.lproj/MainMenu.nib b/examples/common/gui/xcode/tbbExample/en.lproj/MainMenu.nib new file mode 100644 index 0000000000..bbcd0057ed Binary files /dev/null and b/examples/common/gui/xcode/tbbExample/en.lproj/MainMenu.nib differ diff --git a/examples/common/gui/xcode/tbbExample/en.lproj/MainMenu.xib b/examples/common/gui/xcode/tbbExample/en.lproj/MainMenu.xib new file mode 100644 index 0000000000..14faab363f --- /dev/null +++ b/examples/common/gui/xcode/tbbExample/en.lproj/MainMenu.xib @@ -0,0 +1,291 @@ + + + + 1070 + 11D50d + 2182 + 1138.32 + 568.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 2182 + + + NSWindowTemplate + NSView + NSMenu + NSMenuItem + NSCustomObject + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + + + tbbExample + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + tbbExample + + + + Quit tbbExample + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + _NSMainMenu + + + 15 + 2 + {{100, 100}, {480, 360}} + 1148718080 + tbbExample + NSWindow + + + + + 4352 + {480, 360} + + + 2 + {1, 9} + {1, 1} + + {{0, 0}, {1280, 1002}} + {10000000000000, 10000000000000} + YES + + + tbbAppDelegate + + + NSFontManager + + + + + + + terminate: + + + + 449 + + + + delegate + + + + 495 + + + + window + + + + 532 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + 56 + + + + + + + + 57 + + + + + + + + 136 + + + + + 371 + + + + + + + + 372 + + + + + 420 + + + + + 494 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + {{380, 496}, {480, 360}} + + OpenGLView + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 539 + + + + + OpenGLView + NSOpenGLView + + IBProjectSource + ./Classes/OpenGLView.h + + + + tbbAppDelegate + NSObject + + saveAction: + id + + + saveAction: + + saveAction: + id + + + + window + NSWindow + + + window + + window + NSWindow + + + + IBProjectSource + ./Classes/tbbAppDelegate.h + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + 3 + + {11, 11} + {10, 3} + + + diff --git a/examples/common/gui/xcode/tbbExample/main.m b/examples/common/gui/xcode/tbbExample/main.m new file mode 100644 index 0000000000..24fea1bea7 --- /dev/null +++ b/examples/common/gui/xcode/tbbExample/main.m @@ -0,0 +1,26 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#import + +int cocoa_main(int argc, char *argv[]) +{ + return NSApplicationMain(argc, (const char **)argv); +} diff --git a/examples/common/gui/xcode/tbbExample/tbbAppDelegate.h b/examples/common/gui/xcode/tbbExample/tbbAppDelegate.h new file mode 100644 index 0000000000..7669ef6116 --- /dev/null +++ b/examples/common/gui/xcode/tbbExample/tbbAppDelegate.h @@ -0,0 +1,35 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +// +// Created by Xcode* 4.3.2 +// + +#import + +@interface tbbAppDelegate : NSObject { + __unsafe_unretained NSWindow *_window; +} + +@property (assign) IBOutlet NSWindow *window; + +- (BOOL) applicationShouldTerminateAfterLastWindowClosed:(NSApplication *) sender; + +@end diff --git a/examples/common/gui/xcode/tbbExample/tbbAppDelegate.m b/examples/common/gui/xcode/tbbExample/tbbAppDelegate.m new file mode 100644 index 0000000000..9338508255 --- /dev/null +++ b/examples/common/gui/xcode/tbbExample/tbbAppDelegate.m @@ -0,0 +1,51 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +// +// Created by Xcode* 4.3.2 +// + +#import "tbbAppDelegate.h" +#import + +@implementation tbbAppDelegate + +@synthesize window = _window; + +//declared in macvideo.cpp file +extern int g_sizex, g_sizey; + +- (void)applicationDidFinishLaunching:(NSNotification *)aNotification +{ + // Insert code here to initialize your application + NSRect windowSize; + windowSize.size.height = g_sizey; + windowSize.size.width = g_sizex; + windowSize.origin=_window.frame.origin; + [_window setFrame:windowSize display:YES]; + +} + +- (BOOL) applicationShouldTerminateAfterLastWindowClosed:(NSApplication *) sender +{ + return YES; +} + +@end diff --git a/examples/common/gui/xcode/tbbExample/tbbExample-Info.plist b/examples/common/gui/xcode/tbbExample/tbbExample-Info.plist new file mode 100644 index 0000000000..77ce710947 --- /dev/null +++ b/examples/common/gui/xcode/tbbExample/tbbExample-Info.plist @@ -0,0 +1,45 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIdentifier + Intel.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + LSEnvironment + + DYLD_LIBRARY_PATH + Contents/Resources:.:../Resources:/tmp:$DYLD_LIBRARY_PATH + LIBRARY_PATH + Contents/Resources:.:../:/tmp:$DYLD_LIBRARY_PATH + + CFBundleDisplayName + + CFBundleVersion + 1 + LSApplicationCategoryType + public.app-category.business + LSMinimumSystemVersion + ${MACOSX_DEPLOYMENT_TARGET} + NSHumanReadableCopyright + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/examples/common/gui/xcode/tbbExample/tbbExample-Prefix.pch b/examples/common/gui/xcode/tbbExample/tbbExample-Prefix.pch new file mode 100644 index 0000000000..5a809d4b5e --- /dev/null +++ b/examples/common/gui/xcode/tbbExample/tbbExample-Prefix.pch @@ -0,0 +1,27 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +// +// Prefix header for all source files of the 'tbbExample' target in the 'tbbExample' project +// + +#ifdef __OBJC__ + #import +#endif diff --git a/examples/common/gui/xvideo.cpp b/examples/common/gui/xvideo.cpp new file mode 100644 index 0000000000..de62123853 --- /dev/null +++ b/examples/common/gui/xvideo.cpp @@ -0,0 +1,385 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +// Uncomment next line to disable shared memory features if you do not have libXext +// (http://www.xfree86.org/current/mit-shm.html) +//#define X_NOSHMEM + +// Note that it may happen that the build environment supports the shared-memory extension +// (so there's no build-time reason to disable the relevant code by defining X_NOSHMEM), +// but that using shared memory still fails at run time. +// This situation will (ultimately) cause the error handler set by XSetErrorHandler() +// to be invoked with XErrorEvent::minor_code==X_ShmAttach. The code below tries to make +// such a determination at XShmAttach() time, which seems plausible, but unfortunately +// it has also been observed in a specific environment that the error may be reported +// at a later time instead, even after video::init_window() has returned. +// It is not clear whether this may happen in that way in any environment where it might +// depend on the kind of display, e.g., local vs. over "ssh -X", so #define'ing X_NOSHMEM +// may not always be the appropriate solution, therefore an environment variable +// has been introduced to disable shared memory at run time. +// A diagnostic has been added to advise the user about possible workarounds. +// X_ShmAttach macro was changed to 1 due to recent changes to X11/extensions/XShm.h header. + +#include "video.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef X_NOSHMEM +#include +#include +#include +#include + +static XShmSegmentInfo shmseginfo; +static Pixmap pixmap = 0; +static bool already_called_X_ShmAttach = false; +static bool already_advised_about_NOSHMEM_workarounds = false; +static const char* NOSHMEM_env_var_name = "TBB_EXAMPLES_X_NOSHMEM"; +#endif +static char *display_name = NULL; +static Display *dpy = NULL; +static Screen *scrn; +static Visual *vis; +static Colormap cmap; +static GC gc; +static Window win, rootW; +static int dispdepth = 0; +static XGCValues xgcv; +static XImage *ximage; +static int x_error = 0; +static int vidtype = 3; +int g_sizex, g_sizey; +static video *g_video = 0; +unsigned int *g_pImg = 0; +static int g_fps = 0; +struct timeval g_time; +static pthread_mutex_t g_mutex = PTHREAD_MUTEX_INITIALIZER; +Atom _XA_WM_DELETE_WINDOW = 0;// like in Xatom.h + +///////////////////////////////////////////// public methods of video class /////////////////////// + +video::video() +{ + assert(g_video == 0); + g_video = this; title = "Video"; calc_fps = running = false; updating = true; +} + +inline void mask2bits(unsigned int mask, unsigned int &save, depth_t &shift) +{ + save = mask; if(!mask) { shift = dispdepth/3; return; } + shift = 0; while(!(mask&1)) ++shift, mask >>= 1; + int bits = 0; while(mask&1) ++bits, mask >>= 1; + shift += bits - 8; +} + +int xerr_handler(Display* dpy_, XErrorEvent *error) +{ + x_error = error->error_code; + if(g_video) g_video->running = false; +#ifndef X_NOSHMEM + if (error->minor_code==1/*X_ShmAttach*/ && already_called_X_ShmAttach && !already_advised_about_NOSHMEM_workarounds) + { + char err[256]; XGetErrorText(dpy_, x_error, err, 255); + fprintf(stderr, "Warning: Can't attach shared memory to display: %s (%d)\n", err, x_error); + fprintf(stderr, "If you are seeing a black output window, try setting %s environment variable to 1" + " to disable shared memory extensions (0 to re-enable, other values undefined)," + " or rebuilding with X_NOSHMEM defined in " __FILE__ "\n", NOSHMEM_env_var_name); + already_advised_about_NOSHMEM_workarounds = true; + } +#else + (void) dpy_; // warning prevention +#endif + return 0; +} + +bool video::init_window(int xsize, int ysize) +{ + { //enclose local variables before fail label + g_sizex = xsize; g_sizey = ysize; + + // Open the display + if (!dpy) { + dpy = XOpenDisplay(display_name); + if (!dpy) { + fprintf(stderr, "Can't open X11 display %s\n", XDisplayName(display_name)); + goto fail; + } + } + int theScreen = DefaultScreen(dpy); + scrn = ScreenOfDisplay(dpy, theScreen); + dispdepth = DefaultDepth(dpy, theScreen); + XVisualInfo vinfo; + if (!( (dispdepth >= 15 && dispdepth <= 32 && XMatchVisualInfo(dpy, theScreen, dispdepth, TrueColor, &vinfo) ) + || XMatchVisualInfo(dpy, theScreen, 24, TrueColor, &vinfo) + || XMatchVisualInfo(dpy, theScreen, 32, TrueColor, &vinfo) + || XMatchVisualInfo(dpy, theScreen, 16, TrueColor, &vinfo) + || XMatchVisualInfo(dpy, theScreen, 15, TrueColor, &vinfo) + )) { + fprintf(stderr, "Display has no appropriate True Color visual\n"); + goto fail; + } + vis = vinfo.visual; + depth = dispdepth = vinfo.depth; + mask2bits(vinfo.red_mask, red_mask, red_shift); + mask2bits(vinfo.green_mask, green_mask, green_shift); + mask2bits(vinfo.blue_mask, blue_mask, blue_shift); + rootW = RootWindow(dpy, theScreen); + cmap = XCreateColormap(dpy, rootW, vis, AllocNone); + XSetWindowAttributes attrs; + attrs.backing_store = Always; + attrs.colormap = cmap; + attrs.event_mask = StructureNotifyMask|KeyPressMask|ButtonPressMask|ButtonReleaseMask; + attrs.background_pixel = BlackPixelOfScreen(scrn); + attrs.border_pixel = WhitePixelOfScreen(scrn); + win = XCreateWindow(dpy, rootW, + 0, 0, xsize, ysize, 2, + dispdepth, InputOutput, vis, + CWBackingStore | CWColormap | CWEventMask | + CWBackPixel | CWBorderPixel, + &attrs); + if(!win) { + fprintf(stderr, "Can't create the window\n"); + goto fail; + } + XSizeHints sh; + sh.flags = PSize | PMinSize | PMaxSize; + sh.width = sh.min_width = sh.max_width = xsize; + sh.height = sh.min_height = sh.max_height = ysize; + XSetStandardProperties( dpy, win, g_video->title, g_video->title, None, NULL, 0, &sh ); + _XA_WM_DELETE_WINDOW = XInternAtom(dpy, "WM_DELETE_WINDOW", false); + XSetWMProtocols(dpy, win, &_XA_WM_DELETE_WINDOW, 1); + gc = XCreateGC(dpy, win, 0L, &xgcv); + XMapRaised(dpy, win); + XFlush(dpy); +#ifdef X_FULLSYNC + XSynchronize(dpy, true); +#endif + XSetErrorHandler(xerr_handler); + + int imgbytes = xsize*ysize*(dispdepth<=16?2:4); + const char *vidstr; +#ifndef X_NOSHMEM + int major, minor, pixmaps; + if(XShmQueryExtension(dpy) && + XShmQueryVersion(dpy, &major, &minor, &pixmaps)) + { // Shared memory + if(NULL!=getenv(NOSHMEM_env_var_name) && 0!=strcmp("0",getenv(NOSHMEM_env_var_name))) { + goto generic; + } + shmseginfo.shmid = shmget(IPC_PRIVATE, imgbytes, IPC_CREAT|0777); + if(shmseginfo.shmid < 0) { + fprintf(stderr, "Warning: Can't get shared memory: %s\n", strerror(errno)); + goto generic; + } + g_pImg = (unsigned int*)(shmseginfo.shmaddr = (char*)shmat(shmseginfo.shmid, 0, 0)); + if(g_pImg == (unsigned int*)-1) { + fprintf(stderr, "Warning: Can't attach to shared memory: %s\n", strerror(errno)); + shmctl(shmseginfo.shmid, IPC_RMID, NULL); + goto generic; + } + shmseginfo.readOnly = false; + if(!XShmAttach(dpy, &shmseginfo) || x_error) { + char err[256]; XGetErrorText(dpy, x_error, err, 255); + fprintf(stderr, "Warning: Can't attach shared memory to display: %s (%d)\n", err, x_error); + shmdt(shmseginfo.shmaddr); shmctl(shmseginfo.shmid, IPC_RMID, NULL); + goto generic; + } + already_called_X_ShmAttach = true; + +#ifndef X_NOSHMPIX + if(pixmaps && XShmPixmapFormat(dpy) == ZPixmap) + { // Pixmaps + vidtype = 2; vidstr = "X11 shared memory pixmap"; + pixmap = XShmCreatePixmap(dpy, win, (char*)g_pImg, &shmseginfo, xsize, ysize, dispdepth); + XSetWindowBackgroundPixmap(dpy, win, pixmap); + } else +#endif//!X_NOSHMPIX + { // Standard + vidtype = 1; vidstr = "X11 shared memory"; + ximage = XShmCreateImage(dpy, vis, dispdepth, + ZPixmap, 0, &shmseginfo, xsize, ysize); + if(!ximage) { + fprintf(stderr, "Can't create the shared image\n"); + goto fail; + } + assert(ximage->bytes_per_line == xsize*(dispdepth<=16?2:4)); + ximage->data = shmseginfo.shmaddr; + } + } else +#endif + { +#ifndef X_NOSHMEM +generic: +#endif + vidtype = 0; vidstr = "generic X11"; + g_pImg = new unsigned int[imgbytes/sizeof(int)]; + ximage = XCreateImage(dpy, vis, dispdepth, ZPixmap, 0, (char*)g_pImg, xsize, ysize, 32, imgbytes/ysize); + if(!ximage) { + fprintf(stderr, "Can't create the image\n"); + goto fail; + } + } + // Note: It may be more efficient to adopt the server's byte order + // and swap once per get_color() call instead of once per pixel. + const uint32_t probe = 0x03020100; + const bool big_endian = (((const char*)(&probe))[0]==0x03); + ximage->byte_order = big_endian ? MSBFirst : LSBFirst; + + printf("Note: using %s with %s visual for %d-bit color depth\n", vidstr, vis==DefaultVisual(dpy, theScreen)?"default":"non-default", dispdepth); + running = true; + return true; + } // end of enclosing local variables +fail: + terminate(); init_console(); + return false; +} + +bool video::init_console() +{ + if(!g_pImg && g_sizex && g_sizey) { + dispdepth = 24; red_shift = 16; vidtype = 3; // fake video + g_pImg = new unsigned int[g_sizex*g_sizey]; + running = true; + } + return true; +} + +void video::terminate() +{ + running = false; + if(dpy) { + vidtype = 3; // stop video + if(threaded) { pthread_mutex_lock(&g_mutex); pthread_mutex_unlock(&g_mutex); } + if(ximage) { XDestroyImage(ximage); ximage = 0; g_pImg = 0; } // it frees g_pImg for vidtype == 0 +#ifndef X_NOSHMEM + if(pixmap) XFreePixmap(dpy, pixmap); + if(shmseginfo.shmaddr) { XShmDetach(dpy, &shmseginfo); shmdt(shmseginfo.shmaddr); g_pImg = 0; } + if(shmseginfo.shmid >= 0) shmctl(shmseginfo.shmid, IPC_RMID, NULL); +#endif + if(gc) XFreeGC(dpy, gc); + if(win) XDestroyWindow(dpy, win); + XCloseDisplay(dpy); dpy = 0; + } + if(g_pImg) { delete[] g_pImg; g_pImg = 0; } // if was allocated for console mode +} + +video::~video() +{ + if(g_video) terminate(); + g_video = 0; +} + +//! Do standard event loop +void video::main_loop() +{ + struct timezone tz; gettimeofday(&g_time, &tz); + on_process(); +} + +//! Check for pending events once +bool video::next_frame() +{ + if(!running) return false; + //! try acquire mutex if threaded code, returns on failure + if(vidtype == 3 || threaded && pthread_mutex_trylock(&g_mutex)) + return running; + //! Refresh screen picture + g_fps++; +#ifndef X_NOSHMPIX + if(vidtype == 2 && updating) XClearWindow(dpy, win); +#endif + while( XPending(dpy) ) { + XEvent report; XNextEvent(dpy, &report); + switch( report.type ) { + case ClientMessage: + if(report.xclient.format != 32 || report.xclient.data.l[0] != _XA_WM_DELETE_WINDOW) break; + case DestroyNotify: + running = false; + case KeyPress: + on_key( XLookupKeysym(&report.xkey, 0) ); break; + case ButtonPress: + on_mouse( report.xbutton.x, report.xbutton.y, report.xbutton.button ); break; + case ButtonRelease: + on_mouse( report.xbutton.x, report.xbutton.y, -report.xbutton.button ); break; + } + } + struct timezone tz; struct timeval now_time; gettimeofday(&now_time, &tz); + double sec = (now_time.tv_sec+1.0*now_time.tv_usec/1000000.0) - (g_time.tv_sec+1.0*g_time.tv_usec/1000000.0); + if(sec > 1) { + memcpy(&g_time, &now_time, sizeof(g_time)); + if(calc_fps) { + double fps = g_fps; g_fps = 0; + char buffer[256]; snprintf(buffer, 256, "%s%s: %d fps", title, updating?"":" (no updating)", int(fps/sec)); + XStoreName(dpy, win, buffer); + } +#ifndef X_FULLSYNC + XSync(dpy, false); // It is often better then using XSynchronize(dpy, true) +#endif//X_FULLSYNC + } + if(threaded) pthread_mutex_unlock(&g_mutex); + return true; +} + +//! Change window title +void video::show_title() +{ + if(vidtype < 3) + XStoreName(dpy, win, title); +} + +drawing_area::drawing_area(int x, int y, int sizex, int sizey) + : start_x(x), start_y(y), size_x(sizex), size_y(sizey), pixel_depth(dispdepth), + base_index(y*g_sizex + x), max_index(g_sizex*g_sizey), index_stride(g_sizex), ptr32(g_pImg) +{ + assert(x < g_sizex); assert(y < g_sizey); + assert(x+sizex <= g_sizex); assert(y+sizey <= g_sizey); + + index = base_index; // current index +} + +void drawing_area::update() +{ + if(!g_video->updating) return; +#ifndef X_NOSHMEM + switch(vidtype) { + case 0: +#endif + pthread_mutex_lock(&g_mutex); + if(vidtype == 0) XPutImage(dpy, win, gc, ximage, start_x, start_y, start_x, start_y, size_x, size_y); + pthread_mutex_unlock(&g_mutex); +#ifndef X_NOSHMEM + break; + case 1: + pthread_mutex_lock(&g_mutex); + if(vidtype == 1) XShmPutImage(dpy, win, gc, ximage, start_x, start_y, start_x, start_y, size_x, size_y, false); + pthread_mutex_unlock(&g_mutex); + break; + /*case 2: make it in next_frame(); break;*/ + } +#endif +} diff --git a/examples/common/index.html b/examples/common/index.html new file mode 100644 index 0000000000..ddb9f37cdf --- /dev/null +++ b/examples/common/index.html @@ -0,0 +1,68 @@ + + + +

Overview

+This directory contains common code that is used in the Intel® Threading Building Blocks (Intel® TBB) examples. + +

+This code is not intended to be used directly. It is incorporated automatically by the examples that need it. +

+ +

Directories

+
+
gui +
GUI code for examples that have graphical user interfaces. Currently supports: +
    +
  • GDI+*, DirectDraw*, Direct2D* (Windows* systems) +
  • OpenGL* (OS X* systems) +
  • X window (Linux* or OS X* systems) +
+ See the examples that use the GUI + (tachyon, seismic) + for more details. +
+
+
utility +
Common driver and utility code for examples. Currently provides: +
    +
  • class FastRandom - a random number generator that uses linear congruental method + (fast_random.h) +
  • class thread_number_range - a class to specify the numbers of threads an example should use + (utility.h) +
  • support for command line interface - class cli_argument_pack and function parse_cli_arguments + (utility.h) +
+
+ +

Common information

+

Number of threads

+Most Intel TBB examples allow to specify n-of-threads, the set of thread numbers that should be used to run an example. +
Usually, it is a range of the form low[:high[:(+|*|#)S]], where low and optional high +are non-negative integers or 'auto' for the default choice, and optional step expression (+|*|#)S +specifies how thread numbers are chosen within the range: +
    +
  • With +/*, the previous number is incremented/multiplied by S. + E.g., expression '12:16:+1' means 12,13,14,15,16 threads, and '1:16:*2' means 1,2,4,8,16 threads. +
  • With #, S is the desired number of steps between any subsequent powers of 2; + it must be a power of 2 on its own, with most meaningful values being 2,4, and 8. + For a given number of threads, the actual step value is computed as the quotient + of the nearest smaller power of 2 divided by the number of steps, but is at least 1. + E.g., '1:32:#4' means 1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32 threads; + note the step doubling at 8 and 16 to keep 4 steps between powers of 2. +
+A default value for the number of threads can be customized in an example; if not customized, it is '1:auto:#4'. +The 'auto' parameter is substituted with a value returned by a specified function, which typically is +tbb::task_scheduler_init::default_num_threads(). +

+ +


+Up to parent directory +

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel is a registered trademark or trademark of Intel Corporation +or its subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. + + diff --git a/examples/common/toolset.props b/examples/common/toolset.props new file mode 100644 index 0000000000..a99e238c52 --- /dev/null +++ b/examples/common/toolset.props @@ -0,0 +1,9 @@ + + + + Intel C++ Compiler XE 14.0 + Intel C++ Compiler 15.0 [Intel(R) System Studio] + Intel C++ Compiler XE 15.0 + true + + diff --git a/examples/common/utility/fast_random.h b/examples/common/utility/fast_random.h new file mode 100644 index 0000000000..c360ebc24d --- /dev/null +++ b/examples/common/utility/fast_random.h @@ -0,0 +1,82 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#ifndef FAST_RANDOM_H_ +#define FAST_RANDOM_H_ +namespace utility{ +//------------------------------------------------------------------------ +// FastRandom +//------------------------------------------------------------------------ + +namespace internal{ + size_t GetPrime ( size_t seed ); +} + +//! A fast random number generator. +/** Uses linear congruential method. */ +class FastRandom { + size_t x, a; +public: + //! Get a random number. + unsigned short get() { + return get(x); + } + //! Get a random number for the given seed; update the seed for next use. + unsigned short get( size_t& seed ) { + unsigned short r = (unsigned short)(seed>>16); + seed = seed*a+1; + return r; + } + //! Construct a random number generator. + FastRandom( size_t seed ) { + x = seed*internal::GetPrime(seed); + a = internal::GetPrime(x); + } +}; +} + +namespace utility { +namespace internal{ +//! Table of primes used by fast random-number generator (FastRandom). + static const unsigned Primes[] = { + 0x9e3779b1, 0xffe6cc59, 0x2109f6dd, 0x43977ab5, + 0xba5703f5, 0xb495a877, 0xe1626741, 0x79695e6b, + 0xbc98c09f, 0xd5bee2b3, 0x287488f9, 0x3af18231, + 0x9677cd4d, 0xbe3a6929, 0xadc6a877, 0xdcf0674b, + 0xbe4d6fe9, 0x5f15e201, 0x99afc3fd, 0xf3f16801, + 0xe222cfff, 0x24ba5fdb, 0x0620452d, 0x79f149e3, + 0xc8b93f49, 0x972702cd, 0xb07dd827, 0x6c97d5ed, + 0x085a3d61, 0x46eb5ea7, 0x3d9910ed, 0x2e687b5b, + 0x29609227, 0x6eb081f1, 0x0954c4e1, 0x9d114db9, + 0x542acfa9, 0xb3e6bd7b, 0x0742d917, 0xe9f3ffa7, + 0x54581edb, 0xf2480f45, 0x0bb9288f, 0xef1affc7, + 0x85fa0ca7, 0x3ccc14db, 0xe6baf34b, 0x343377f7, + 0x5ca19031, 0xe6d9293b, 0xf0a9f391, 0x5d2e980b, + 0xfc411073, 0xc3749363, 0xb892d829, 0x3549366b, + 0x629750ad, 0xb98294e5, 0x892d9483, 0xc235baf3, + 0x3d2402a3, 0x6bdef3c9, 0xbec333cd, 0x40c9520f + }; + size_t GetPrime ( size_t seed ) { + return Primes[seed%(sizeof(Primes)/sizeof(Primes[0]))]; + } +} +} + +#endif /* FAST_RANDOM_H_ */ diff --git a/examples/common/utility/utility.h b/examples/common/utility/utility.h new file mode 100644 index 0000000000..573cb490fc --- /dev/null +++ b/examples/common/utility/utility.h @@ -0,0 +1,519 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#ifndef UTILITY_H_ +#define UTILITY_H_ + +#if __TBB_MIC_OFFLOAD +#pragma offload_attribute (push,target(mic)) +#include +#include +#pragma offload_attribute (pop) +#endif // __TBB_MIC_OFFLOAD + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// TBB headers should not be used, as some examples may need to be built without TBB. + +namespace utility{ + namespace internal{ + +#if ((__GNUC__*100+__GNUC_MINOR__>=404 && __GXX_EXPERIMENTAL_CXX0X__) || _MSC_VER >= 1600) && (!__INTEL_COMPILER || __INTEL_COMPILER >= 1200 ) + // std::unique_ptr is available, and compiler can use it + #define smart_ptr std::unique_ptr + using std::swap; +#else + #if __INTEL_COMPILER && __GXX_EXPERIMENTAL_CXX0X__ + // std::unique_ptr is unavailable, so suppress std::auto_prt<> deprecation warning + #pragma warning(disable: 1478) + #endif + #define smart_ptr std::auto_ptr + // in some C++ libraries, std::swap does not work with std::auto_ptr + template + void swap( std::auto_ptr& ptr1, std::auto_ptr& ptr2 ) { + std::auto_ptr tmp; tmp = ptr2; ptr2 = ptr1; ptr1 = tmp; + } +#endif + + //TODO: add tcs + template + dest_type& string_to(std::string const& s, dest_type& result){ + std::stringstream stream(s); + stream>>result; + if ((!stream)||(stream.fail())){ + throw std::invalid_argument("error converting string '"+std::string(s)+"'"); + } + return result; + } + + template + dest_type string_to(std::string const& s){ + dest_type result; + return string_to(s,result); + } + + template + struct is_bool { static bool value(){return false;}}; + template<> + struct is_bool { static bool value(){return true;}}; + + class type_base { + type_base& operator=(const type_base&); + public: + const std::string name; + const std::string description; + + type_base (std::string a_name, std::string a_description) : name(a_name), description(a_description) {} + virtual void parse_and_store (const std::string & s)=0; + virtual std::string value() const =0; + virtual smart_ptr clone()const =0; + virtual ~type_base(){} + }; + template + class type_impl : public type_base { + private: + type_impl& operator=(const type_impl&); + typedef bool(*validating_function_type)(const type&); + private: + type & target; + validating_function_type validating_function; + public: + type_impl(std::string a_name, std::string a_description, type & a_target, validating_function_type a_validating_function = NULL) + : type_base (a_name,a_description), target(a_target),validating_function(a_validating_function) + {}; + void parse_and_store (const std::string & s){ + try{ + const bool is_bool = internal::is_bool::value(); + if (is_bool && s.empty()){ + //to avoid directly assigning true + //(as it will impose additional layer of indirection) + //so, simply pass it as string + internal::string_to("1",target); + }else { + internal::string_to(s,target); + } + }catch(std::invalid_argument& e){ + std::stringstream str; + str <<"'"< clone() const { + return smart_ptr(new type_impl(*this)); + } + }; + + class argument{ + private: + smart_ptr p_type; + bool matched_; + public: + argument(argument const& other) + : p_type(other.p_type.get() ? (other.p_type->clone()).release() : NULL) + ,matched_(other.matched_) + {} + argument& operator=(argument a){ + this->swap(a); + return *this; + } + void swap(argument& other){ + internal::swap(p_type, other.p_type); + std::swap(matched_,other.matched_); + } + template + argument(std::string a_name, std::string a_description, type& dest, bool(*a_validating_function)(const type&)= NULL) + :p_type(new type_impl(a_name,a_description,dest,a_validating_function)) + ,matched_(false) + {} + std::string value()const{ + return p_type->value(); + } + std::string name()const{ + return p_type->name; + } + std::string description() const{ + return p_type->description; + } + void parse_and_store(const std::string & s){ + p_type->parse_and_store(s); + matched_=true; + } + bool is_matched() const{return matched_;} + }; + } // namespace internal + + class cli_argument_pack{ + typedef std::map args_map_type; + typedef std::vector args_display_order_type; + typedef std::vector positional_arg_names_type; + private: + args_map_type args_map; + args_display_order_type args_display_order; + positional_arg_names_type positional_arg_names; + std::set bool_args_names; + private: + void add_arg(internal::argument const& a){ + std::pair result = args_map.insert(std::make_pair(a.name(),a)); + if (!result.second){ + throw std::invalid_argument("argument with name: '"+a.name()+"' already registered"); + } + args_display_order.push_back(a.name()); + } + public: + template + cli_argument_pack& arg(type& dest,std::string const& name, std::string const& description, bool(*validate)(const type &)= NULL){ + internal::argument a(name,description,dest,validate); + add_arg(a); + if (internal::is_bool::value()){ + bool_args_names.insert(name); + } + return *this; + } + + //Positional means that argument name can be omitted in actual CL + //only key to match values for parameters with + template + cli_argument_pack& positional_arg(type& dest,std::string const& name, std::string const& description, bool(*validate)(const type &)= NULL){ + internal::argument a(name,description,dest,validate); + add_arg(a); + if (internal::is_bool::value()){ + bool_args_names.insert(name); + } + positional_arg_names.push_back(name); + return *this; + } + + void parse(std::size_t argc, char const* argv[]){ + { + std::size_t current_positional_index=0; + for (std::size_t j=1;jis_matched()){ + throw std::invalid_argument(std::string("several values specified for: '")+pa->name()+"' argument"); + } + pa->parse_and_store(argument_value); + } + } + } + std::string usage_string(const std::string& binary_name)const{ + std::string command_line_params; + std::string summary_description; + + for (args_display_order_type::const_iterator it = args_display_order.begin();it!=args_display_order.end();++it){ + const bool is_bool = (0!=bool_args_names.count((*it))); + args_map_type::const_iterator argument_it = args_map.find(*it); + //TODO: probably use of smarter assert would help here + assert(argument_it!=args_map.end()/*&&"args_display_order and args_map are out of sync"*/); + if (argument_it==args_map.end()){ + throw std::logic_error("args_display_order and args_map are out of sync"); + } + const internal::argument & a = (*argument_it).second; + command_line_params +=" [" + a.name() + (is_bool ?"":"=value")+ "]"; + summary_description +=" " + a.name() + " - " + a.description() +" ("+a.value() +")" + "\n"; + } + + std::string positional_arg_cl; + for (positional_arg_names_type::const_iterator it = positional_arg_names.begin();it!=positional_arg_names.end();++it){ + positional_arg_cl +=" ["+(*it); + } + for (std::size_t i=0;i + bool is_power_of_2( T val ) { + size_t intval = size_t(val); + return (intval&(intval-1)) == size_t(0); + } + int step_function_plus(int previous, double step){ + return static_cast(previous+step); + } + int step_function_multiply(int previous, double multiply){ + return static_cast(previous*multiply); + } + // "Power-of-2 ladder": nsteps is the desired number of steps between any subsequent powers of 2. + // The actual step is the quotient of the nearest smaller power of 2 divided by that number (but at least 1). + // E.g., '1:32:#4' means 1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32 + int step_function_power2_ladder(int previous, double nsteps){ + int steps = int(nsteps); + assert( is_power_of_2(steps) ); // must be a power of 2 + // The actual step is 1 until the value is twice as big as nsteps + if( previous < 2*steps ) + return previous+1; + // calculate the previous power of 2 + int prev_power2 = previous/2; // start with half the given value + int rshift = 1; // and with the shift of 1; + while( int shifted = prev_power2>>rshift ) { // shift the value right; while the result is non-zero, + prev_power2 |= shifted; // add the bits set in 'shifted'; + rshift <<= 1; // double the shift, as twice as many top bits are set; + } // repeat. + ++prev_power2; // all low bits set; now it's just one less than the desired power of 2 + assert( is_power_of_2(prev_power2) ); + assert( (prev_power2<=previous)&&(2*prev_power2>previous) ); + // The actual step value is the previous power of 2 divided by steps + return previous + (prev_power2/steps); + } + typedef int (* step_function_ptr_type)(int,double); + + struct step_function_descriptor { + char mnemonic; + step_function_ptr_type function; + public: + step_function_descriptor(char a_mnemonic, step_function_ptr_type a_function) : mnemonic(a_mnemonic), function(a_function) {} + private: + void operator=(step_function_descriptor const&); + }; + step_function_descriptor step_function_descriptors[] = { + step_function_descriptor('*',step_function_multiply), + step_function_descriptor('+',step_function_plus), + step_function_descriptor('#',step_function_power2_ladder) + }; + + template + inline size_t array_length(const T(&)[N]) + { + return N; + } + + struct thread_range_step { + step_function_ptr_type step_function; + double step_function_argument; + + thread_range_step ( step_function_ptr_type step_function_, double step_function_argument_) + :step_function(step_function_),step_function_argument(step_function_argument_) + { + if (!step_function_) + throw std::invalid_argument("step_function for thread range step should not be NULL"); + } + int operator()(int previous)const { + assert(0<=previous); // test 0<=first and loop discipline + const int ret = step_function(previous,step_function_argument); + assert(previous>(std::istream& input_stream, thread_range_step& step){ + char function_char; + double function_argument; + input_stream >> function_char >> function_argument; + size_t i = 0; + while ((i= array_length(step_function_descriptors)){ + throw std::invalid_argument("unknown step function mnemonic: "+std::string(1,function_char)); + } else if ((function_char=='#') && !is_power_of_2(function_argument)) { + throw std::invalid_argument("the argument of # should be a power of 2"); + } + step.step_function = step_function_descriptors[i].function; + step.step_function_argument = function_argument; + return input_stream; + } + }; + } // namespace internal + + struct thread_number_range{ + int (*auto_number_of_threads)(); + int first; // 0<=first (0 can be used as a special value) + int last; // first<=last + + internal::thread_range_step step; + + thread_number_range( int (*auto_number_of_threads_)(),int low_=1, int high_=-1 + , internal::thread_range_step step_ = internal::thread_range_step(internal::step_function_power2_ladder,4) + ) + : auto_number_of_threads(auto_number_of_threads_), first(low_), last((high_>-1) ? high_ : auto_number_of_threads_()) + ,step(step_) + { + if (first<0) { + throw std::invalid_argument("negative value not allowed"); + } + if (first>last) { + throw std::invalid_argument("decreasing sequence not allowed"); + } + } + friend std::istream& operator>>(std::istream& i, thread_number_range& range){ + try{ + std::string s; + i>>s; + struct string_to_number_of_threads{ + int auto_value; + string_to_number_of_threads(int auto_value_):auto_value(auto_value_){} + int operator()(const std::string & value)const{ + return (value=="auto")? auto_value : internal::string_to(value); + } + }; + string_to_number_of_threads string_to_number_of_threads(range.auto_number_of_threads()); + int low, high; + std::size_t colon = s.find(':'); + if ( colon == std::string::npos ){ + low = high = string_to_number_of_threads(s); + } else { + //it is a range + std::size_t second_colon = s.find(':',colon+1); + + low = string_to_number_of_threads(std::string(s, 0, colon)); //not copying the colon + high = string_to_number_of_threads(std::string(s, colon+1, second_colon - (colon+1))); //not copying the colons + if (second_colon != std::string::npos){ + internal::string_to(std::string(s,second_colon + 1),range.step); + } + } + range = thread_number_range(range.auto_number_of_threads,low,high,range.step); + }catch(std::invalid_argument&){ + i.setstate(std::ios::failbit); + throw; + } + return i; + } + friend std::ostream& operator<<(std::ostream& o, thread_number_range const& range){ + using namespace internal; + size_t i = 0; + for (; i < array_length(step_function_descriptors) && step_function_descriptors[i].function != range.step.step_function; ++i ) {} + if (i >= array_length(step_function_descriptors)){ + throw std::invalid_argument("unknown step function for thread range"); + } + o<(argv), cli_pack); + } +} + +#endif /* UTILITY_H_ */ diff --git a/examples/concurrent_hash_map/count_strings/Makefile b/examples/concurrent_hash_map/count_strings/Makefile new file mode 100644 index 0000000000..b5a4a5face --- /dev/null +++ b/examples/concurrent_hash_map/count_strings/Makefile @@ -0,0 +1,57 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# GNU Makefile that builds and runs example. +run_cmd= +PROG=count_strings +ARGS= +PERF_RUN_ARGS=auto 10000000 silent + +# The C++ compiler +ifneq (,$(shell which icc 2>/dev/null)) +CXX=icc +endif # icc + +ifeq ($(shell uname), Linux) +ifeq ($(target), android) +LIBS+= --sysroot=$(SYSROOT) +run_cmd=../../common/android.linux.launcher.sh +else +LIBS+= -lrt +endif +endif + +all: release test + +release: *.cpp + $(CXX) -O2 -DNDEBUG $(CXXFLAGS) -o $(PROG) $^ -ltbb $(LIBS) + +debug: *.cpp + $(CXX) -O0 -g -DTBB_USE_DEBUG $(CXXFLAGS) -o $(PROG) $^ -ltbb_debug $(LIBS) + +clean: + $(RM) $(PROG) *.o *.d + +test: + $(run_cmd) ./$(PROG) $(ARGS) + +perf_build: release + +perf_run: + $(run_cmd) ./$(PROG) $(PERF_RUN_ARGS) + diff --git a/examples/concurrent_hash_map/count_strings/Makefile.windows b/examples/concurrent_hash_map/count_strings/Makefile.windows new file mode 100644 index 0000000000..a2ddf82e4e --- /dev/null +++ b/examples/concurrent_hash_map/count_strings/Makefile.windows @@ -0,0 +1,51 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# Common Makefile that builds and runs example. + +# Just specify your program basename +PROG=Count_Strings +ARGS= +PERF_RUN_ARGS=auto 10000000 silent + +# The C++ compiler options + +# Trying to find if icl.exe is set +CXX1 = $(TBB_CXX)- +CXX2 = $(CXX1:icl.exe-=icl.exe) +CXX = $(CXX2:-=cl.exe) + +MYCXXFLAGS = /TP /EHsc /W3 /nologo /D _CONSOLE /D _MBCS /D WIN32 $(CXXFLAGS) +MYLDFLAGS =/INCREMENTAL:NO /NOLOGO /DEBUG /FIXED:NO $(LDFLAGS) + +all: release test +release: compiler_check + $(CXX) *.cpp /MD /O2 /D NDEBUG $(MYCXXFLAGS) /link tbb.lib $(LIBS) $(MYLDFLAGS) /OUT:$(PROG).exe +debug: compiler_check + $(CXX) *.cpp /MDd /Od /Zi /D TBB_USE_DEBUG /D _DEBUG $(MYCXXFLAGS) /link tbb_debug.lib $(LIBS) $(MYLDFLAGS) /OUT:$(PROG).exe +clean: + @cmd.exe /C del $(PROG).exe *.obj *.?db *.manifest +test: + $(PROG) $(ARGS) +compiler_check: + @echo compiler_test>compiler_test && @$(CXX) /E compiler_test >nul 2>&1 || echo "$(CXX) command not found. Check if CXX=$(CXX) is set properly" + @cmd.exe /C del compiler_test +perf_build: release +perf_run: + $(PROG) $(PERF_RUN_ARGS) + diff --git a/examples/concurrent_hash_map/count_strings/count_strings.cpp b/examples/concurrent_hash_map/count_strings/count_strings.cpp new file mode 100644 index 0000000000..203319db2e --- /dev/null +++ b/examples/concurrent_hash_map/count_strings/count_strings.cpp @@ -0,0 +1,235 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +// Workaround for ICC 11.0 not finding __sync_fetch_and_add_4 on some of the Linux platforms. +#if __linux__ && defined(__INTEL_COMPILER) +#define __sync_fetch_and_add(ptr,addend) _InterlockedExchangeAdd(const_cast(reinterpret_cast(ptr)), addend) +#endif +#include +#include +#include +#include +#include +#include "tbb/concurrent_hash_map.h" +#include "tbb/blocked_range.h" +#include "tbb/parallel_for.h" +#include "tbb/tick_count.h" +#include "tbb/task_scheduler_init.h" +#include "tbb/tbb_allocator.h" +#include "../../common/utility/utility.h" + + +//! String type with scalable allocator. +/** On platforms with non-scalable default memory allocators, the example scales + better if the string allocator is changed to tbb::tbb_allocator. */ +typedef std::basic_string,tbb::tbb_allocator > MyString; + +using namespace tbb; +using namespace std; + +//! Set to true to counts. +static bool verbose = false; +static bool silent = false; +//! Problem size +long N = 1000000; +const int size_factor = 2; + +//! A concurrent hash table that maps strings to ints. +typedef concurrent_hash_map StringTable; + +//! Function object for counting occurrences of strings. +struct Tally { + StringTable& table; + Tally( StringTable& table_ ) : table(table_) {} + void operator()( const blocked_range range ) const { + for( MyString* p=range.begin(); p!=range.end(); ++p ) { + StringTable::accessor a; + table.insert( a, *p ); + a->second += 1; + } + } +}; + +static MyString* Data; + +static void CountOccurrences(int nthreads) { + StringTable table; + + tick_count t0 = tick_count::now(); + parallel_for( blocked_range( Data, Data+N, 1000 ), Tally(table) ); + tick_count t1 = tick_count::now(); + + int n = 0; + for( StringTable::iterator i=table.begin(); i!=table.end(); ++i ) { + if( verbose && nthreads ) + printf("%s %d\n",i->first.c_str(),i->second); + n += i->second; + } + + if ( !silent ) printf("total = %d unique = %u time = %g\n", n, unsigned(table.size()), (t1-t0).seconds()); +} + +/// Generator of random words + +struct Sound { + const char *chars; + int rates[3];// beginning, middle, ending +}; +Sound Vowels[] = { + {"e", {445,6220,1762}}, {"a", {704,5262,514}}, {"i", {402,5224,162}}, {"o", {248,3726,191}}, + {"u", {155,1669,23}}, {"y", {4,400,989}}, {"io", {5,512,18}}, {"ia", {1,329,111}}, + {"ea", {21,370,16}}, {"ou", {32,298,4}}, {"ie", {0,177,140}}, {"ee", {2,183,57}}, + {"ai", {17,206,7}}, {"oo", {1,215,7}}, {"au", {40,111,2}}, {"ua", {0,102,4}}, + {"ui", {0,104,1}}, {"ei", {6,94,3}}, {"ue", {0,67,28}}, {"ay", {1,42,52}}, + {"ey", {1,14,80}}, {"oa", {5,84,3}}, {"oi", {2,81,1}}, {"eo", {1,71,5}}, + {"iou", {0,61,0}}, {"oe", {2,46,9}}, {"eu", {12,43,0}}, {"iu", {0,45,0}}, + {"ya", {12,19,5}}, {"ae", {7,18,10}}, {"oy", {0,10,13}}, {"ye", {8,7,7}}, + {"ion", {0,0,20}}, {"ing", {0,0,20}}, {"ium", {0,0,10}}, {"er", {0,0,20}} +}; +Sound Consonants[] = { + {"r", {483,1414,1110}}, {"n", {312,1548,1114}}, {"t", {363,1653,251}}, {"l", {424,1341,489}}, + {"c", {734,735,260}}, {"m", {732,785,161}}, {"d", {558,612,389}}, {"s", {574,570,405}}, + {"p", {519,361,98}}, {"b", {528,356,30}}, {"v", {197,598,16}}, {"ss", {3,191,567}}, + {"g", {285,430,42}}, {"st", {142,323,180}}, {"h", {470,89,30}}, {"nt", {0,350,231}}, + {"ng", {0,117,442}}, {"f", {319,194,19}}, {"ll", {1,414,83}}, {"w", {249,131,64}}, + {"k", {154,179,47}}, {"nd", {0,279,92}}, {"bl", {62,235,0}}, {"z", {35,223,16}}, + {"sh", {112,69,79}}, {"ch", {139,95,25}}, {"th", {70,143,39}}, {"tt", {0,219,19}}, + {"tr", {131,104,0}}, {"pr", {186,41,0}}, {"nc", {0,223,2}}, {"j", {184,32,1}}, + {"nn", {0,188,20}}, {"rt", {0,148,51}}, {"ct", {0,160,29}}, {"rr", {0,182,3}}, + {"gr", {98,87,0}}, {"ck", {0,92,86}}, {"rd", {0,81,88}}, {"x", {8,102,48}}, + {"ph", {47,101,10}}, {"br", {115,43,0}}, {"cr", {92,60,0}}, {"rm", {0,131,18}}, + {"ns", {0,124,18}}, {"sp", {81,55,4}}, {"sm", {25,29,85}}, {"sc", {53,83,1}}, + {"rn", {0,100,30}}, {"cl", {78,42,0}}, {"mm", {0,116,0}}, {"pp", {0,114,2}}, + {"mp", {0,99,14}}, {"rs", {0,96,16}}, /*{"q", {52,57,1}},*/ {"rl", {0,97,7}}, + {"rg", {0,81,15}}, {"pl", {56,39,0}}, {"sn", {32,62,1}}, {"str", {38,56,0}}, + {"dr", {47,44,0}}, {"fl", {77,13,1}}, {"fr", {77,11,0}}, {"ld", {0,47,38}}, + {"ff", {0,62,20}}, {"lt", {0,61,19}}, {"rb", {0,75,4}}, {"mb", {0,72,7}}, + {"rc", {0,76,1}}, {"gg", {0,74,1}}, {"pt", {1,56,10}}, {"bb", {0,64,1}}, + {"sl", {48,17,0}}, {"dd", {0,59,2}}, {"gn", {3,50,4}}, {"rk", {0,30,28}}, + {"nk", {0,35,20}}, {"gl", {40,14,0}}, {"wh", {45,6,0}}, {"ntr", {0,50,0}}, + {"rv", {0,47,1}}, {"ght", {0,19,29}}, {"sk", {23,17,5}}, {"nf", {0,46,0}}, + {"cc", {0,45,0}}, {"ln", {0,41,0}}, {"sw", {36,4,0}}, {"rp", {0,36,4}}, + {"dn", {0,38,0}}, {"ps", {14,19,5}}, {"nv", {0,38,0}}, {"tch", {0,21,16}}, + {"nch", {0,26,11}}, {"lv", {0,35,0}}, {"wn", {0,14,21}}, {"rf", {0,32,3}}, + {"lm", {0,30,5}}, {"dg", {0,34,0}}, {"ft", {0,18,15}}, {"scr", {23,10,0}}, + {"rch", {0,24,6}}, {"rth", {0,23,7}}, {"rh", {13,15,0}}, {"mpl", {0,29,0}}, + {"cs", {0,1,27}}, {"gh", {4,10,13}}, {"ls", {0,23,3}}, {"ndr", {0,25,0}}, + {"tl", {0,23,1}}, {"ngl", {0,25,0}}, {"lk", {0,15,9}}, {"rw", {0,23,0}}, + {"lb", {0,23,1}}, {"tw", {15,8,0}}, /*{"sq", {15,8,0}},*/ {"chr", {18,4,0}}, + {"dl", {0,23,0}}, {"ctr", {0,22,0}}, {"nst", {0,21,0}}, {"lc", {0,22,0}}, + {"sch", {16,4,0}}, {"ths", {0,1,20}}, {"nl", {0,21,0}}, {"lf", {0,15,6}}, + {"ssn", {0,20,0}}, {"xt", {0,18,1}}, {"xp", {0,20,0}}, {"rst", {0,15,5}}, + {"nh", {0,19,0}}, {"wr", {14,5,0}} +}; +const int VowelsNumber = sizeof(Vowels)/sizeof(Sound); +const int ConsonantsNumber = sizeof(Consonants)/sizeof(Sound); +int VowelsRatesSum[3] = {0,0,0}, ConsonantsRatesSum[3] = {0,0,0}; + +int CountRateSum(Sound sounds[], const int num, const int part) +{ + int sum = 0; + for(int i = 0; i < num; i++) + sum += sounds[i].rates[part]; + return sum; +} + +const char *GetLetters(int type, const int part) +{ + Sound *sounds; int rate, i = 0; + if(type & 1) + sounds = Vowels, rate = rand() % VowelsRatesSum[part]; + else + sounds = Consonants, rate = rand() % ConsonantsRatesSum[part]; + do { + rate -= sounds[i++].rates[part]; + } while(rate > 0); + return sounds[--i].chars; +} + +static void CreateData() { + for(int i = 0; i < 3; i++) { + ConsonantsRatesSum[i] = CountRateSum(Consonants, ConsonantsNumber, i); + VowelsRatesSum[i] = CountRateSum(Vowels, VowelsNumber, i); + } + for( int i=0; i + + +

Overview

+The example counts the number of unique words in a text. + + +

Files

+
+
count_strings.cpp +
Source code for example. +
Makefile +
Makefile for building example. +
+ +

Directories

+
+
msvs +
Contains Microsoft* Visual Studio* 2010 workspace for building and running the example (Windows* systems only). +
xcode +
Contains Xcode* IDE workspace for building and running the example (OS X* systems only). +
+ +

To Build

+General build directions can be found here. + +

Usage

+
+
count_strings -h +
Prints the help for command line options +
count_strings [n-of-threads=value] [n-of-strings=value] [verbose] [silent] +
count_strings [n-of-threads [n-of-strings]] [verbose] [silent] +
n-of-threads is the number of threads to use; a range of the form low[:high], where low and optional high are non-negative integers or 'auto' for the TBB default.
+ n-of-strings is a number of strings.
+ verbose - enables printing of extra information during execution.
+ silent - no output except elapsed time.
+ +
To run a short version of this example, e.g., for use with Intel® Parallel Inspector: +
Build a debug version of the example + (see the build directions). +
Run it with a small number of strings and the desired number of threads, e.g., count_strings 2 10000. +
+ +
+Up to parent directory +

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel is a registered trademark or trademark of Intel Corporation +or its subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. + + + diff --git a/examples/concurrent_hash_map/count_strings/msvs/count_strings.sln b/examples/concurrent_hash_map/count_strings/msvs/count_strings.sln new file mode 100644 index 0000000000..536455bc19 --- /dev/null +++ b/examples/concurrent_hash_map/count_strings/msvs/count_strings.sln @@ -0,0 +1,26 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "count_strings", "count_strings.vcxproj", "{3AA40693-F93D-4D4B-B32E-068F511A252C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3AA40693-F93D-4D4B-B32E-068F511A252C}.Debug|Win32.ActiveCfg = Debug|Win32 + {3AA40693-F93D-4D4B-B32E-068F511A252C}.Debug|Win32.Build.0 = Debug|Win32 + {3AA40693-F93D-4D4B-B32E-068F511A252C}.Debug|x64.ActiveCfg = Debug|x64 + {3AA40693-F93D-4D4B-B32E-068F511A252C}.Debug|x64.Build.0 = Debug|x64 + {3AA40693-F93D-4D4B-B32E-068F511A252C}.Release|Win32.ActiveCfg = Release|Win32 + {3AA40693-F93D-4D4B-B32E-068F511A252C}.Release|Win32.Build.0 = Release|Win32 + {3AA40693-F93D-4D4B-B32E-068F511A252C}.Release|x64.ActiveCfg = Release|x64 + {3AA40693-F93D-4D4B-B32E-068F511A252C}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/examples/concurrent_hash_map/count_strings/msvs/count_strings.vcxproj b/examples/concurrent_hash_map/count_strings/msvs/count_strings.vcxproj new file mode 100644 index 0000000000..4929fd54bf --- /dev/null +++ b/examples/concurrent_hash_map/count_strings/msvs/count_strings.vcxproj @@ -0,0 +1,197 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + count_strings + {3AA40693-F93D-4D4B-B32E-068F511A252C} + count_strings + Win32Proj + + + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Console + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 debug "$(OutDir)" + + + + + X64 + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Console + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 debug "$(OutDir)" + + + + + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Console + true + true + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 release "$(OutDir)" + + + + + X64 + + + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Console + true + true + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 release "$(OutDir)" + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/concurrent_hash_map/count_strings/xcode/count_strings.xcodeproj/project.pbxproj b/examples/concurrent_hash_map/count_strings/xcode/count_strings.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..1b90bf71a6 --- /dev/null +++ b/examples/concurrent_hash_map/count_strings/xcode/count_strings.xcodeproj/project.pbxproj @@ -0,0 +1,305 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + A1F593A60B8F042A00073279 /* count_strings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F593A50B8F042A00073279 /* count_strings.cpp */; }; + A1F593B70B8F06F900073279 /* libtbb.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A1F593B30B8F06F900073279 /* libtbb.dylib */; }; + A1F593BB0B8F072500073279 /* libtbb.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = A1F593B30B8F06F900073279 /* libtbb.dylib */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 8DD76F690486A84900D96B5E /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 12; + dstPath = ""; + dstSubfolderSpec = 16; + files = ( + A1F593BB0B8F072500073279 /* libtbb.dylib in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 8DD76F6C0486A84900D96B5E /* count_strings */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = count_strings; sourceTree = BUILT_PRODUCTS_DIR; }; + A1F593A50B8F042A00073279 /* count_strings.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = count_strings.cpp; path = ../count_strings.cpp; sourceTree = SOURCE_ROOT; }; + A1F593B30B8F06F900073279 /* libtbb.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libtbb.dylib; path = ../../../../lib/libtbb.dylib; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8DD76F660486A84900D96B5E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A1F593B70B8F06F900073279 /* libtbb.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 08FB7794FE84155DC02AAC07 /* count_strings */ = { + isa = PBXGroup; + children = ( + 08FB7795FE84155DC02AAC07 /* Source */, + A1F593B20B8F06F900073279 /* External Frameworks and Libraries */, + 1AB674ADFE9D54B511CA2CBB /* Products */, + ); + name = count_strings; + sourceTree = ""; + }; + 08FB7795FE84155DC02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + A1F593A50B8F042A00073279 /* count_strings.cpp */, + ); + name = Source; + sourceTree = ""; + }; + 1AB674ADFE9D54B511CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8DD76F6C0486A84900D96B5E /* count_strings */, + ); + name = Products; + sourceTree = ""; + }; + A1F593B20B8F06F900073279 /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + A1F593B30B8F06F900073279 /* libtbb.dylib */, + ); + name = "External Frameworks and Libraries"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8DD76F620486A84900D96B5E /* count_strings */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "count_strings" */; + buildPhases = ( + 8DD76F640486A84900D96B5E /* Sources */, + 8DD76F660486A84900D96B5E /* Frameworks */, + 8DD76F690486A84900D96B5E /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = count_strings; + productInstallPath = "$(HOME)/bin"; + productName = count_strings; + productReference = 8DD76F6C0486A84900D96B5E /* count_strings */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0410; + }; + buildConfigurationList = 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "count_strings" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + en, + ); + mainGroup = 08FB7794FE84155DC02AAC07 /* count_strings */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8DD76F620486A84900D96B5E /* count_strings */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 8DD76F640486A84900D96B5E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A1F593A60B8F042A00073279 /* count_strings.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1DEB923208733DC60010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = count_strings; + ZERO_LINK = NO; + }; + name = Debug; + }; + 1DEB923308733DC60010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = count_strings; + ZERO_LINK = NO; + }; + name = Release; + }; + 1DEB923608733DC60010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Debug; + }; + 1DEB923708733DC60010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Release; + }; + A1F593C60B8F0E6E00073279 /* Debug64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = count_strings; + ZERO_LINK = NO; + }; + name = Debug64; + }; + A1F593C70B8F0E6E00073279 /* Release64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = count_strings; + ZERO_LINK = NO; + }; + name = Release64; + }; + A1F593C80B8F0E6E00073279 /* Debug64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-m64", + ); + OTHER_LDFLAGS = "-m64"; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Debug64; + }; + A1F593C90B8F0E6E00073279 /* Release64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-m64", + ); + OTHER_LDFLAGS = "-m64"; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Release64; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "count_strings" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB923208733DC60010E9CD /* Debug */, + A1F593C60B8F0E6E00073279 /* Debug64 */, + 1DEB923308733DC60010E9CD /* Release */, + A1F593C70B8F0E6E00073279 /* Release64 */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "count_strings" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB923608733DC60010E9CD /* Debug */, + A1F593C80B8F0E6E00073279 /* Debug64 */, + 1DEB923708733DC60010E9CD /* Release */, + A1F593C90B8F0E6E00073279 /* Release64 */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/examples/concurrent_hash_map/index.html b/examples/concurrent_hash_map/index.html new file mode 100644 index 0000000000..33b7ca5f97 --- /dev/null +++ b/examples/concurrent_hash_map/index.html @@ -0,0 +1,24 @@ + + + +

Overview

+This directory has examples of the template concurrent_hash_map. + +

Directories

+
+
count_strings +
Concurrently inserts strings into a concurrent_hash_map. +
+ +
+Up to parent directory +

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel is a registered trademark or trademark of Intel Corporation +or its subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. + + + diff --git a/examples/concurrent_priority_queue/shortpath/Makefile b/examples/concurrent_priority_queue/shortpath/Makefile new file mode 100644 index 0000000000..f5cdbf6066 --- /dev/null +++ b/examples/concurrent_priority_queue/shortpath/Makefile @@ -0,0 +1,61 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# GNU Makefile that builds and runs example. +run_cmd= +PROG=shortpath +ARGS=4 N=1000 start=0 end=999 verbose +PERF_RUN_ARGS=auto N=1000 start=0 end=99 silent + +# The C++ compiler +ifneq (,$(shell which icc 2>/dev/null)) +CXX=icc +endif # which icc +ifneq (,$(filter icc icpc,$(CXX))) +ifneq (0,$(cpp0x)) +CXX0XFLAGS?=-std=c++0x -D_TBB_CPP0X +endif +endif # icc + +ifeq ($(shell uname), Linux) +ifeq ($(target), android) +LIBS+= --sysroot=$(SYSROOT) +run_cmd=../../common/android.linux.launcher.sh +else +LIBS+= -lrt +endif +endif + +all: release test + +release: *.cpp + $(CXX) -O2 -DNDEBUG $(CXXFLAGS) -o $(PROG) $^ -ltbb $(LIBS) $(CXX0XFLAGS) + +debug: *.cpp + $(CXX) -O0 -g -DTBB_USE_DEBUG $(CXXFLAGS) -o $(PROG) $^ -ltbb_debug $(LIBS) $(CXX0XFLAGS) + +clean: + $(RM) $(PROG) *.o *.d + +test: + $(run_cmd) ./$(PROG) $(ARGS) + +perf_build: release + +perf_run: + $(run_cmd) ./$(PROG) $(PERF_RUN_ARGS) diff --git a/examples/concurrent_priority_queue/shortpath/Makefile.windows b/examples/concurrent_priority_queue/shortpath/Makefile.windows new file mode 100644 index 0000000000..0fab8f67d0 --- /dev/null +++ b/examples/concurrent_priority_queue/shortpath/Makefile.windows @@ -0,0 +1,50 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# Common Makefile that builds and runs example. + +# Just specify your program basename +PROG=shortpath +ARGS=4 N=1000 start=0 end=999 verbose +PERF_RUN_ARGS=auto N=1000 start=0 end=99 silent + +# Trying to find if icl.exe is set +CXX1 = $(TBB_CXX)- +CXX2 = $(CXX1:icl.exe-=icl.exe) +CXX = $(CXX2:-=cl.exe) + +# The C++ compiler options +MYCXXFLAGS = /TP /EHsc /W3 /nologo /D _CONSOLE /D _MBCS /D WIN32 /D _CRT_SECURE_NO_DEPRECATE $(CXXFLAGS) +MYLDFLAGS =/INCREMENTAL:NO /NOLOGO /DEBUG /FIXED:NO $(LDFLAGS) + +all: release test +release: + $(CXX) *.cpp /MD /O2 /D NDEBUG $(MYCXXFLAGS) /link tbb.lib $(LIBS) $(MYLDFLAGS) /OUT:$(PROG).exe +debug: + $(CXX) *.cpp /MDd /Od /Zi /D TBB_USE_DEBUG /D _DEBUG $(MYCXXFLAGS) /link tbb_debug.lib $(LIBS) $(MYLDFLAGS) /OUT:$(PROG).exe +clean: + @cmd.exe /C del $(PROG).exe *.obj *.?db *.manifest +test: + $(PROG) $(ARGS) +compiler_check: + @$(CXX) >nul 2>&1 || echo "$(CXX) command not found. Check if CXX=$(CXX) is set properly" + +perf_build: release + +perf_run: + $(PROG) $(PERF_RUN_ARGS) diff --git a/examples/concurrent_priority_queue/shortpath/index.html b/examples/concurrent_priority_queue/shortpath/index.html new file mode 100644 index 0000000000..a3ad551569 --- /dev/null +++ b/examples/concurrent_priority_queue/shortpath/index.html @@ -0,0 +1,82 @@ + + + +

Overview

+ +This directory contains a simple example that solves the single source +shortest path problem. It is parameterized by N, a number of nodes, +and a start and end node in [0..N). A graph is generated with N nodes +and some random number of connections between those nodes. A parallel +algorithm based on A* is used to find the shortest path. This +algorithm varies from serial A* in that it needs to add nodes back to +the open set when the g estimate (shortest path from start to the +node) is improved, even if the node has already been "visited". This +is because nodes are added and removed from the open-set in parallel, +resulting in some less optimal paths being explored. The open-set is +implemented with the concurrent_priority_queue. Note that since we +re-visit nodes, the f estimate (on which the priority queue is sorted) +is not technically needed, so we could use this same parallel +algorithm with just a concurrent_queue. However, keeping the f +estimate and using concurrent_priority_queue results in much better +performance. Silent mode prints run time only, regular mode prints +shortest path length, and verbose mode prints out the shortest path. +The generated graph follows a pattern in which the closer two pairs of +node ids are together, the fewer hops there are in a typical path +between those nodes. So, for example, the path between 5 and 7 likely +has few hops whereas 14 to 78 has more and 0 to 9999 has even more, +etc. + + +

Files

+
+
shortpath.cpp +
Driver. + +
Makefile +
Makefile for building example. + +
+ +

Directories

+
+
msvs +
Contains Microsoft* Visual Studio* 2010 workspace for building and running the example with the Intel® C++ compiler (Windows* systems only). +
xcode +
Contains OS X* Xcode* workspace for building and running the example (OS X* systems only). +
+ +

To Build

+General build directions can be found here. +

+ +

Usage

+
+ +
shortpath -h +
Prints the help for command line options +
shortpath [#threads=value] [verbose] [silent] [N=value] [start=value] [end=value] [#threads] +
#threads is the number of threads to use; a range of the form low[:high] where low and optional high are non-negative integers, or 'auto' for the TBB default.
+ verbose print full path to screen
+ silent limits output to timing info; overrides verbose
+ N number of nodes in graph
+ start node to start path at
+ end node to end path at
+ + +
To run a short version of this example, e.g., for use with Intel® Parallel Inspector: +
Build a debug version of the example + (see the build directions). +
Run it with a small problem size and the desired number of threads, e.g., shortpath 4 N=20 start=0 end=19. +
+ +
+Up to parent directory +

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel is a registered trademark or trademark of Intel Corporation +or its subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. + + diff --git a/examples/concurrent_priority_queue/shortpath/msvs/shortpath.sln b/examples/concurrent_priority_queue/shortpath/msvs/shortpath.sln new file mode 100644 index 0000000000..664ee970f0 --- /dev/null +++ b/examples/concurrent_priority_queue/shortpath/msvs/shortpath.sln @@ -0,0 +1,26 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shortpath", "shortpath.vcxproj", "{3AA40693-F93D-4D4B-B32E-068F511A252A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|Win32.ActiveCfg = Debug|Win32 + {3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|Win32.Build.0 = Debug|Win32 + {3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|x64.ActiveCfg = Debug|x64 + {3AA40693-F93D-4D4B-B32E-068F511A252A}.Debug|x64.Build.0 = Debug|x64 + {3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|Win32.ActiveCfg = Release|Win32 + {3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|Win32.Build.0 = Release|Win32 + {3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|x64.ActiveCfg = Release|x64 + {3AA40693-F93D-4D4B-B32E-068F511A252A}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/examples/concurrent_priority_queue/shortpath/msvs/shortpath.vcxproj b/examples/concurrent_priority_queue/shortpath/msvs/shortpath.vcxproj new file mode 100644 index 0000000000..2935e0eafe --- /dev/null +++ b/examples/concurrent_priority_queue/shortpath/msvs/shortpath.vcxproj @@ -0,0 +1,197 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + shortpath + {3AA40693-F93D-4D4B-B32E-068F511A252A} + shortpath + Win32Proj + + + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Console + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 debug "$(OutDir)" + + + + + X64 + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Console + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 debug "$(OutDir)" + + + + + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Console + true + true + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 release "$(OutDir)" + + + + + X64 + + + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Console + true + true + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 release "$(OutDir)" + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/concurrent_priority_queue/shortpath/shortpath.cpp b/examples/concurrent_priority_queue/shortpath/shortpath.cpp new file mode 100644 index 0000000000..f90f66e6f2 --- /dev/null +++ b/examples/concurrent_priority_queue/shortpath/shortpath.cpp @@ -0,0 +1,377 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#include +#include +#include + +#include "tbb/atomic.h" +#include "tbb/tick_count.h" +#include "tbb/task_scheduler_init.h" +#include "tbb/task_group.h" +#include "tbb/concurrent_priority_queue.h" +#include "tbb/spin_mutex.h" +#include "tbb/parallel_for.h" +#include "tbb/blocked_range.h" +#include "../../common/utility/utility.h" +#include "../../common/utility/fast_random.h" + +#if defined(_MSC_VER) && defined(_Wp64) + // Workaround for overzealous compiler warnings in /Wp64 mode + #pragma warning (disable: 4267) +#endif /* _MSC_VER && _Wp64 */ + +#if __INTEL_COMPILER +#define __TBB_LAMBDAS_PRESENT ( _TBB_CPP0X && __INTEL_COMPILER > 1100 ) +#elif __GNUC__ +#define __TBB_LAMBDAS_PRESENT ( _TBB_CPP0X && __TBB_GCC_VERSION >= 40500 ) +#elif _MSC_VER +#define __TBB_LAMBDAS_PRESENT ( _MSC_VER>=1600 ) +#endif + +using namespace std; +using namespace tbb; + +struct point { + double x, y; + point() {} + point(double _x, double _y) : x(_x), y(_y) {} + point(const point& p) : x(p.x), y(p.y) {} +}; + +double get_distance(const point& p1, const point& p2) { + double xdiff=p1.x-p2.x, ydiff=p1.y-p2.y; + return sqrt(xdiff*xdiff + ydiff*ydiff); +} + +// generates random points on 2D plane within a box of maxsize width & height +point generate_random_point(utility::FastRandom& mr) { + const size_t maxsize=500; + double x = (double)(mr.get() % maxsize); + double y = (double)(mr.get() % maxsize); + return point(x,y); +} + +// weighted toss makes closer nodes (in the point vector) heavily connected +bool die_toss(size_t a, size_t b, utility::FastRandom& mr) { + int node_diff = std::abs((int)(a-b)); + // near nodes + if (node_diff < 16) return true; + // mid nodes + if (node_diff < 64) return ((int)mr.get() % 8 == 0); + // far nodes + if (node_diff < 512) return ((int)mr.get() % 16 == 0); + return false; +} + +typedef vector point_set; +typedef size_t vertex_id; +typedef std::pair vertex_rec; +typedef vector > edge_set; + +bool verbose = false; // prints bin details and other diagnostics to screen +bool silent = false; // suppress all output except for time +size_t N = 1000; // number of vertices +size_t src = 0; // start of path +size_t dst = N-1; // end of path +double INF=100000.0; // infinity +size_t grainsize = 16; // number of vertices per task on average +size_t max_spawn; // max tasks to spawn +tbb::atomic num_spawn; // number of active tasks + +point_set vertices; // vertices +edge_set edges; // edges +vector predecessor; // for recreating path from src to dst + +vector f_distance; // estimated distances at particular vertex +vector g_distance; // current shortest distances from src vertex +spin_mutex *locks; // a lock for each vertex +task_group *sp_group; // task group for tasks executing sub-problems + +class compare_f { +public: + bool operator()(const vertex_rec& u, const vertex_rec& v) const { + return u.second>v.second; + } +}; + +concurrent_priority_queue open_set; // tentative vertices + +void shortpath_helper(); + +#if !__TBB_LAMBDAS_PRESENT +class shortpath_helper_functor { +public: + shortpath_helper_functor() {}; + void operator() () const { shortpath_helper(); } +}; +#endif + +void shortpath() { + sp_group = new task_group; + g_distance[src] = 0.0; // src's distance from src is zero + f_distance[src] = get_distance(vertices[src], vertices[dst]); // estimate distance from src to dst + open_set.push(make_pair(src,f_distance[src])); // push src into open_set +#if __TBB_LAMBDAS_PRESENT + sp_group->run([](){ shortpath_helper(); }); +#else + sp_group->run( shortpath_helper_functor() ); +#endif + sp_group->wait(); + delete sp_group; +} + +void shortpath_helper() { + vertex_rec u_rec; + while (open_set.try_pop(u_rec)) { + vertex_id u = u_rec.first; + if (u==dst) continue; + double f = u_rec.second; + double old_g_u = 0.0; + { + spin_mutex::scoped_lock l(locks[u]); + if (f > f_distance[u]) continue; // prune search space + old_g_u = g_distance[u]; + } + for (size_t i=0; irun([]{ shortpath_helper(); }); +#else + sp_group->run( shortpath_helper_functor() ); +#endif + } + else --num_spawn; + } + } + } + --num_spawn; +} + +void make_path(vertex_id src, vertex_id dst, vector& path) { + vertex_id at = predecessor[dst]; + if (at == N) path.push_back(src); + else if (at == src) { path.push_back(src); path.push_back(dst); } + else { make_path(src, at, path); path.push_back(dst); } +} + +void print_path() { + vector path; + double path_length=0.0; + make_path(src, dst, path); + if (verbose) printf("\n "); + for (size_t i=0; i", (int)path[i]); + else printf("(%4d)\n", (int)path[i]); + } + } + if (verbose) printf("Total distance = %5.1f\n", path_length); + else if (!silent) printf(" %5.1f\n", path_length); +} + +int get_default_num_threads() { + static int threads = 0; + if (threads == 0) + threads = tbb::task_scheduler_init::default_num_threads(); + return threads; +} + +#if !__TBB_LAMBDAS_PRESENT +class gen_vertices { +public: + gen_vertices() {} + void operator() (blocked_range& r) const { + utility::FastRandom my_random((unsigned int)r.begin()); + for (size_t i=r.begin(); i!=r.end(); ++i) { + vertices[i] = generate_random_point(my_random); + } + } +}; + +class gen_edges { +public: + gen_edges() {} + void operator() (blocked_range& r) const { + utility::FastRandom my_random((unsigned int)r.begin()); + for (size_t i=r.begin(); i!=r.end(); ++i) { + for (size_t j=0; j& r) const { + for (size_t i=r.begin(); i!=r.end(); ++i) { + f_distance[i] = g_distance[i] = INF; + predecessor[i] = N; + } + } +}; +#endif + +void InitializeGraph() { + task_scheduler_init init(get_default_num_threads()); + vertices.resize(N); + edges.resize(N); + predecessor.resize(N); + g_distance.resize(N); + f_distance.resize(N); + locks = new spin_mutex[N]; + if (verbose) printf("Generating vertices...\n"); +#if __TBB_LAMBDAS_PRESENT + parallel_for(blocked_range(0,N,64), + [&](blocked_range& r) { + utility::FastRandom my_random(r.begin()); + for (size_t i=r.begin(); i!=r.end(); ++i) { + vertices[i] = generate_random_point(my_random); + } + }, simple_partitioner()); +#else + parallel_for(blocked_range(0,N,64), gen_vertices(), simple_partitioner()); +#endif + if (verbose) printf("Generating edges...\n"); +#if __TBB_LAMBDAS_PRESENT + parallel_for(blocked_range(0,N,64), + [&](blocked_range& r) { + utility::FastRandom my_random(r.begin()); + for (size_t i=r.begin(); i!=r.end(); ++i) { + for (size_t j=0; j(0,N,64), gen_edges(), simple_partitioner()); +#endif + for (size_t i=0; i(0,N), + [&](blocked_range& r) { + for (size_t i=r.begin(); i!=r.end(); ++i) { + f_distance[i] = g_distance[i] = INF; + predecessor[i] = N; + } + }); +#else + parallel_for(blocked_range(0,N), reset_vertices()); +#endif +} + +int main(int argc, char *argv[]) { + try { + utility::thread_number_range threads(get_default_num_threads); + utility::parse_cli_arguments(argc, argv, + utility::cli_argument_pack() + //"-h" option for displaying help is present implicitly + .positional_arg(threads,"#threads",utility::thread_number_range_desc) + .arg(verbose,"verbose"," print diagnostic output to screen") + .arg(silent,"silent"," limits output to timing info; overrides verbose") + .arg(N,"N"," number of vertices") + .arg(src,"start"," start of path") + .arg(dst,"end"," end of path") + ); + if (silent) verbose = false; // make silent override verbose + else + printf("shortpath will run with %d vertices to find shortest path between vertices" + " %d and %d using %d:%d threads.\n", + (int)N, (int)src, (int)dst, (int)threads.first, (int)threads.last); + + if (dst >= N) { + if (verbose) + printf("end value %d is invalid for %d vertices; correcting to %d\n", (int)dst, (int)N, (int)N-1); + dst = N-1; + } + + num_spawn = 0; + max_spawn = N/grainsize; + tick_count t0, t1; + InitializeGraph(); + for (int n_thr=threads.first; n_thr<=threads.last; n_thr=threads.step(n_thr)) { + ResetGraph(); + task_scheduler_init init(n_thr); + t0 = tick_count::now(); + shortpath(); + t1 = tick_count::now(); + if (!silent) { + if (predecessor[dst] != N) { + printf("%d threads: [%6.6f] The shortest path from vertex %d to vertex %d is:", + (int)n_thr, (t1-t0).seconds(), (int)src, (int)dst); + print_path(); + } + else { + printf("%d threads: [%6.6f] There is no path from vertex %d to vertex %d\n", + (int)n_thr, (t1-t0).seconds(), (int)src, (int)dst); + } + } else + utility::report_elapsed_time((t1-t0).seconds()); + } + ReleaseGraph(); + return 0; + } catch(std::exception& e) { + cerr<<"error occurred. error text is :\"" </dev/null)) +CXX=icc +endif # which icc + +ifeq ($(shell uname), Linux) +ifeq ($(target), android) +LIBS+= --sysroot=$(SYSROOT) +run_cmd=../../common/android.linux.launcher.sh +else +LIBS+= -lrt +endif +endif + +all: release test + +release: *.cpp + $(CXX) -O2 -DNDEBUG $(CXXFLAGS) -o $(PROG) $^ -ltbb $(LIBS) $(CXX0XFLAGS) + +debug: *.cpp + $(CXX) -O0 -g -DTBB_USE_DEBUG $(CXXFLAGS) -o $(PROG) $^ -ltbb_debug $(LIBS) $(CXX0XFLAGS) + +clean: + $(RM) $(PROG) *.o *.d + +test: + $(run_cmd) ./$(PROG) $(ARGS) + +perf_build: release + +perf_run: + $(run_cmd) ./$(PROG) $(PERF_RUN_ARGS) diff --git a/examples/graph/binpack/Makefile.windows b/examples/graph/binpack/Makefile.windows new file mode 100644 index 0000000000..ee373a2bc0 --- /dev/null +++ b/examples/graph/binpack/Makefile.windows @@ -0,0 +1,50 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# Common Makefile that builds and runs example. + +# Just specify your program basename +PROG=binpack +ARGS= 4 N=1000 +PERF_RUN_ARGS=auto N=1000 silent + +# Trying to find if icl.exe is set +CXX1 = $(TBB_CXX)- +CXX2 = $(CXX1:icl.exe-=icl.exe) +CXX = $(CXX2:-=cl.exe) + +# The C++ compiler options +MYCXXFLAGS = /TP /EHsc /W3 /nologo /D _CONSOLE /D _MBCS /D WIN32 /D _CRT_SECURE_NO_DEPRECATE $(CXXFLAGS) +MYLDFLAGS =/INCREMENTAL:NO /NOLOGO /DEBUG /FIXED:NO $(LDFLAGS) + +all: release test +release: + $(CXX) *.cpp /MD /O2 /D NDEBUG $(MYCXXFLAGS) /link tbb.lib $(LIBS) $(MYLDFLAGS) /OUT:$(PROG).exe +debug: + $(CXX) *.cpp /MDd /Od /Zi /D TBB_USE_DEBUG /D _DEBUG $(MYCXXFLAGS) /link tbb_debug.lib $(LIBS) $(MYLDFLAGS) /OUT:$(PROG).exe +clean: + @cmd.exe /C del $(PROG).exe *.obj *.?db *.manifest +test: + $(PROG) $(ARGS) +compiler_check: + @$(CXX) >nul 2>&1 || echo "$(CXX) command not found. Check if CXX=$(CXX) is set properly" + +perf_build: release + +perf_run: + $(PROG) $(PERF_RUN_ARGS) diff --git a/examples/graph/binpack/binpack.cpp b/examples/graph/binpack/binpack.cpp new file mode 100644 index 0000000000..b1d5e4f545 --- /dev/null +++ b/examples/graph/binpack/binpack.cpp @@ -0,0 +1,299 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + + +/* Bin-packing algorithm that attempts to use minimal number of bins B of + size V to contain N items of varying sizes. */ + +#include +#include +#include +#include "tbb/atomic.h" +#include "tbb/task_scheduler_init.h" +#include "tbb/tick_count.h" +#include "tbb/flow_graph.h" +#include "../../common/utility/utility.h" + +using namespace std; +using namespace tbb; +using namespace tbb::flow; + +typedef size_t size_type; // to represent non-zero indices, capacities, etc. +typedef size_t value_type; // the type of items we are attempting to pack into bins +typedef vector bin; // we use a simple vector to represent a bin +// Our bin packers will be function nodes in the graph that take value_type items and +// return a dummy value. They will also implicitly send packed bins to the bin_buffer +// node, and unused items back to the value_pool node: +typedef function_node bin_packer; +// Items are placed into a pool that all bin packers grab from, represent by a queue_node: +typedef queue_node value_pool; +// Packed bins are placed in this buffer waiting to be serially printed and/or accounted for: +typedef buffer_node bin_buffer; +// Packed bins are taken from the_bin_buffer and processed by the_writer: +typedef function_node bin_writer; +// Items are injected into the graph when this node sends them to the_value_pool: +typedef source_node value_source; + +// User-specified globals with default values +size_type V = 42; // desired capacity for each bin +size_type N = 1000; // number of elements to generate +bool verbose = false; // prints bin details and other diagnostics to screen +bool silent = false; // suppress all output except for time +int num_bin_packers=-1; // number of concurrent bin packers in operation; default is #threads; + // larger values can result in more bins at less than full capacity +size_type optimality=1; // 1 (default) is highest the algorithm can obtain; larger numbers run faster + +// Calculated globals +size_type min_B; // lower bound on the optimal number of bins +size_type B; // the answer, i.e. number of bins used by the algorithm +size_type *input_array; // stores randomly generated input values +value_type item_sum; // sum of all randomly generated input values +tbb::atomic packed_sum; // sum of all values currently packed into all bins +tbb::atomic packed_items; // number of values currently packed into all bins +tbb::atomic active_bins; // number of active bin_packers +bin_packer **bins; // the array of bin packers + +// This class is the Body type for bin_packer +class bin_filler { + bin my_bin; // the current bin that this bin_filler is packing + size_type my_used; // capacity of bin used by current contents (not to be confused with my_bin.size()) + size_type relax, relax_val; // relaxation counter for determining when to settle for a non-full bin + bin_packer* my_bin_packer; // ptr to the bin packer that this body object is associated with + size_type bin_index; // index of the encapsulating bin packer in the global bins array + value_pool* the_value_pool; // ptr to the pool of items to pack + bin_buffer* the_bin_buffer; // ptr to the buffer of resulting bins + value_type looking_for; // the minimum size of item this bin_packer will accept + bool done; // flag to indicate that this binpacker has been deactivated + public: + bin_filler(size_t bidx, value_pool* q, bin_buffer* r) : + my_used(0), relax(0), relax_val(0), my_bin_packer(NULL), bin_index(bidx), the_value_pool(q), + the_bin_buffer(r), looking_for(V), done(false) {} + continue_msg operator()(const value_type& item) { + if (!my_bin_packer) my_bin_packer = bins[bin_index]; + if (done) the_value_pool->try_put(item); // this bin_packer is done packing items; put item back to pool + else if (item > V) { // signal that packed_sum has reached item_sum at some point + size_type remaining = active_bins--; + if (remaining == 1 && packed_sum == item_sum) { // this is the last bin and it has seen everything + // this bin_packer may not have seen everything, so stay active + if (my_used>0) the_bin_buffer->try_put(my_bin); + my_bin.clear(); + my_used = 0; + looking_for = V; + ++active_bins; + } + else if (remaining == 1) { // this is the last bin, but there are remaining items + the_value_pool->try_put(V+1); // send out signal + ++active_bins; + } + else if (remaining > 1) { // this is not the last bin; deactivate + if (my_used < V/(1+optimality*.1)) { // this bin is ill-utilized; throw back items and deactivate + packed_sum -= my_used; + packed_items -= my_bin.size(); + for (size_type i=0; itry_put(my_bin[i]); + the_value_pool->remove_successor(*my_bin_packer); // deactivate + done = true; + the_value_pool->try_put(V+1); // send out signal + } + else { // this bin is well-utilized; send out bin and deactivate + the_value_pool->remove_successor(*my_bin_packer); // build no more bins + done = true; + if (my_used>0) the_bin_buffer->try_put(my_bin); + the_value_pool->try_put(V+1); // send out signal + } + } + } + else if (item <= V-my_used && item >= looking_for) { // this item can be packed + my_bin.push_back(item); + my_used += item; + packed_sum += item; + ++packed_items; + looking_for = V-my_used; + relax = 0; + if (packed_sum == item_sum) { + the_value_pool->try_put(V+1); // send out signal + } + if (my_used == V) { + the_bin_buffer->try_put(my_bin); + my_bin.clear(); + my_used = 0; + looking_for = V; + } + } + else { // this item can't be packed; relax constraints + ++relax; + if (relax >= (N-packed_items)/optimality) { // this bin_packer has looked through enough items + relax = 0; + --looking_for; // accept a wider range of items + if (looking_for == 0 && my_used < V/(1+optimality*.1) && my_used > 0 && active_bins > 1) { + // this bin_packer is ill-utilized and can't find items; deactivate and throw back items + size_type remaining = active_bins--; + if (remaining > 1) { // not the last bin_packer + the_value_pool->remove_successor(*my_bin_packer); // deactivate + done = true; + } + else active_bins++; // can't deactivate last bin_packer + packed_sum -= my_used; + packed_items -= my_bin.size(); + for (size_type i=0; itry_put(my_bin[i]); + my_bin.clear(); + my_used = 0; + } + else if (looking_for == 0 && (my_used >= V/(1+optimality*.1) || active_bins == 1)) { + // this bin_packer can't find items but is well-utilized, so send it out and reset + the_bin_buffer->try_put(my_bin); + my_bin.clear(); + my_used = 0; + looking_for = V; + } + } + the_value_pool->try_put(item); // put unused item back to pool + } + return continue_msg(); // need to return something + } +}; + +// source node uses this to send the values to the value_pool +class item_generator { + size_type counter; +public: + item_generator() : counter(0) {} + bool operator()(value_type& m) { + if (counter my_max) my_max = sum; + avg += sum; + running_count += sum; + if (verbose) + cout << "]=" << sum << "; Done/Packed/Total cap: " << running_count << "/" << packed_sum << "/" << item_sum + << " items:" << item_count << "/" << packed_items << "/" << N << " B=" << B << endl; + if (item_count == N) { // should be the last; print stats + avg = avg/(double)B; + if (!silent) + cout << "SUMMARY: #Bins used: " << B << "; Avg size: " << avg << "; Max size: " << my_max + << "; Min size: " << my_min << "\n Lower bound on optimal #bins: " << min_B + << "; Start #bins: " << num_bin_packers << endl; + } + return continue_msg(); // need to return something + } +}; + +int get_default_num_threads() { + static int threads = 0; + if (threads == 0) + threads = tbb::task_scheduler_init::default_num_threads(); + return threads; +} + +int main(int argc, char *argv[]) { + try { + utility::thread_number_range threads(get_default_num_threads); + utility::parse_cli_arguments(argc, argv, + utility::cli_argument_pack() + //"-h" option for displaying help is present implicitly + .positional_arg(threads,"#threads",utility::thread_number_range_desc) + .arg(verbose,"verbose"," print diagnostic output to screen") + .arg(silent,"silent"," limits output to timing info; overrides verbose") + .arg(N,"N"," number of values to pack") + .arg(V,"V"," capacity of each bin") + .arg(num_bin_packers,"#packers"," number of concurrent bin packers to use " + "(default=#threads)") + .arg(optimality,"optimality","controls optimality of solution; 1 is highest, use\n" + " larger numbers for less optimal but faster solution") + ); + + if (silent) verbose = false; // make silent override verbose + // Generate random input data + srand(42); + input_array = new value_type[N]; + item_sum = 0; + for (size_type i=0; i + + +

Overview

+ +This directory contains a simple tbb::flow example that performs +binpacking of N integer values into a near-optimal number of bins +of capacity V. It features a source_node which passes randomly +generated integer values of size<=V to a queue_node. Multiple +function_nodes set about taking values from this queue_node and +packing them into bins according to a best-fit policy. Items that +cannot be made to fit are rejected and returned to the queue. When +a bin is packed as well as it can be, it is passed to a buffer_node +where it waits to be picked up by another function_node. This final +function nodes gathers stats about the bin and optionally prints its +contents. When all bins are accounted for, it optionally prints a +summary of the quality of the bin-packing. + +

Files

+
+
binpack.cpp +
Driver. + +
Makefile +
Makefile for building example. + +
+ +

Directories

+
+
msvs +
Contains Microsoft* Visual Studio* 2010 workspace for building and running the example with the Intel® C++ compiler (Windows* systems only). +
xcode +
Contains Xcode* IDE workspace for building and running the example (OS X* systems only). +
+ +

To Build

+General build directions can be found here. +

+ +

Usage

+
+ +
binpack -h +
Prints the help for command line options +
binpack [#threads=value] [verbose] [silent] [N=value] [V=value] [#packers=value] [optimality=value] [#threads] +
#threads is the number of threads to use; a range of the form low[:high] where low and optional high are non-negative integers, or 'auto' for the TBB default.
+ verbose print diagnostic output to screen
+ silent limits output to timing info; overrides verbose
+ N number of values to pack
+ V capacity of each bin
+ #packers number of concurrent bin packers to use (default=#threads)
+ optimality controls optimality of solution; 1 is highest, use larger numbers for less optimal but faster solution
+ + +
To run a short version of this example, e.g., for use with Intel® Parallel Inspector: +
Build a debug version of the example + (see the build directions). +
Run it with a small problem size and the desired number of threads, e.g., binpack 4 N=100. +
+ +
+Up to parent directory +

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel is a registered trademark or trademark of Intel Corporation +or its subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. + + diff --git a/examples/graph/binpack/msvs/binpack.sln b/examples/graph/binpack/msvs/binpack.sln new file mode 100644 index 0000000000..df23fe4258 --- /dev/null +++ b/examples/graph/binpack/msvs/binpack.sln @@ -0,0 +1,26 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "binpack", "binpack.vcxproj", "{C931C7A2-074E-4150-9E7A-39A03250411E}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|Win32.ActiveCfg = Debug|Win32 + {C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|Win32.Build.0 = Debug|Win32 + {C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|x64.ActiveCfg = Debug|x64 + {C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|x64.Build.0 = Debug|x64 + {C931C7A2-074E-4150-9E7A-39A03250411E}.Release|Win32.ActiveCfg = Release|Win32 + {C931C7A2-074E-4150-9E7A-39A03250411E}.Release|Win32.Build.0 = Release|Win32 + {C931C7A2-074E-4150-9E7A-39A03250411E}.Release|x64.ActiveCfg = Release|x64 + {C931C7A2-074E-4150-9E7A-39A03250411E}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/examples/graph/binpack/msvs/binpack.vcxproj b/examples/graph/binpack/msvs/binpack.vcxproj new file mode 100644 index 0000000000..336c27b5a3 --- /dev/null +++ b/examples/graph/binpack/msvs/binpack.vcxproj @@ -0,0 +1,197 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + binpack + {C931C7A2-074E-4150-9E7A-39A03250411E} + binpack + Win32Proj + + + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + ProgramDatabase + + + tbb_debug.lib;tbbmalloc_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Console + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 debug "$(OutDir)" + + + + + X64 + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + ProgramDatabase + + + tbb_debug.lib;tbbmalloc_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Console + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 debug "$(OutDir)" + + + + + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + + + tbb.lib;tbbmalloc.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Console + true + true + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 release "$(OutDir)" + + + + + X64 + + + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + + + tbb.lib;tbbmalloc.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Console + true + true + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 release "$(OutDir)" + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/graph/binpack/xcode/binpack.xcodeproj/project.pbxproj b/examples/graph/binpack/xcode/binpack.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..58bde8e88f --- /dev/null +++ b/examples/graph/binpack/xcode/binpack.xcodeproj/project.pbxproj @@ -0,0 +1,305 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 0E8A7311136F4A4600453C80 /* libtbb.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 0E8A7310136F4A4600453C80 /* libtbb.dylib */; }; + 0E8A7325136F4D3600453C80 /* libtbb.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E8A7310136F4A4600453C80 /* libtbb.dylib */; }; + A1F593A60B8F042A00073279 /* binpack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F593A50B8F042A00073279 /* binpack.cpp */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 8DD76F690486A84900D96B5E /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 12; + dstPath = ""; + dstSubfolderSpec = 16; + files = ( + 0E8A7311136F4A4600453C80 /* libtbb.dylib in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 0E8A7310136F4A4600453C80 /* libtbb.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = ../../../../lib/libtbb.dylib; sourceTree = ""; }; + 8DD76F6C0486A84900D96B5E /* Binpack */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = Binpack; sourceTree = BUILT_PRODUCTS_DIR; }; + A1F593A50B8F042A00073279 /* binpack.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = binpack.cpp; path = ../binpack.cpp; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8DD76F660486A84900D96B5E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0E8A7325136F4D3600453C80 /* libtbb.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 08FB7794FE84155DC02AAC07 /* Binpack */ = { + isa = PBXGroup; + children = ( + 08FB7795FE84155DC02AAC07 /* Source */, + A1F593B20B8F06F900073279 /* External Frameworks and Libraries */, + 1AB674ADFE9D54B511CA2CBB /* Products */, + ); + name = Binpack; + sourceTree = ""; + }; + 08FB7795FE84155DC02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + A1F593A50B8F042A00073279 /* binpack.cpp */, + ); + name = Source; + sourceTree = ""; + }; + 1AB674ADFE9D54B511CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8DD76F6C0486A84900D96B5E /* Binpack */, + ); + name = Products; + sourceTree = ""; + }; + A1F593B20B8F06F900073279 /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + 0E8A7310136F4A4600453C80 /* libtbb.dylib */, + ); + name = "External Frameworks and Libraries"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8DD76F620486A84900D96B5E /* Binpack */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "Binpack" */; + buildPhases = ( + 8DD76F640486A84900D96B5E /* Sources */, + 8DD76F660486A84900D96B5E /* Frameworks */, + 8DD76F690486A84900D96B5E /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Binpack; + productInstallPath = "$(HOME)/bin"; + productName = Binpack; + productReference = 8DD76F6C0486A84900D96B5E /* Binpack */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0410; + }; + buildConfigurationList = 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "binpack" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + en, + ); + mainGroup = 08FB7794FE84155DC02AAC07 /* Binpack */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8DD76F620486A84900D96B5E /* Binpack */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 8DD76F640486A84900D96B5E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A1F593A60B8F042A00073279 /* binpack.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1DEB923208733DC60010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = Binpack; + ZERO_LINK = NO; + }; + name = Debug; + }; + 1DEB923308733DC60010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = Binpack; + ZERO_LINK = NO; + }; + name = Release; + }; + 1DEB923608733DC60010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Debug; + }; + 1DEB923708733DC60010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Release; + }; + A1F593C60B8F0E6E00073279 /* Debug64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = Binpack; + ZERO_LINK = NO; + }; + name = Debug64; + }; + A1F593C70B8F0E6E00073279 /* Release64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = Binpack; + ZERO_LINK = NO; + }; + name = Release64; + }; + A1F593C80B8F0E6E00073279 /* Debug64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-m64", + ); + OTHER_LDFLAGS = "-m64"; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Debug64; + }; + A1F593C90B8F0E6E00073279 /* Release64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-m64", + ); + OTHER_LDFLAGS = "-m64"; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Release64; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "Binpack" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB923208733DC60010E9CD /* Debug */, + A1F593C60B8F0E6E00073279 /* Debug64 */, + 1DEB923308733DC60010E9CD /* Release */, + A1F593C70B8F0E6E00073279 /* Release64 */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "binpack" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB923608733DC60010E9CD /* Debug */, + A1F593C80B8F0E6E00073279 /* Debug64 */, + 1DEB923708733DC60010E9CD /* Release */, + A1F593C90B8F0E6E00073279 /* Release64 */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/examples/graph/dining_philosophers/Makefile b/examples/graph/dining_philosophers/Makefile new file mode 100644 index 0000000000..334d3812a3 --- /dev/null +++ b/examples/graph/dining_philosophers/Makefile @@ -0,0 +1,53 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# GNU Makefile that builds and runs example. +run_cmd= +PROG=dining_philosophers +ARGS= auto 5 +LIGHT_ARGS= auto 3 + +ifneq (,$(shell which icc 2>/dev/null)) +CXX=icc +endif # icc + +ifeq ($(shell uname), Linux) +ifeq ($(target), android) +LIBS+= --sysroot=$(SYSROOT) +run_cmd=../../common/android.linux.launcher.sh +else +LIBS+= -lrt +endif +endif + +all: release test + +release: dining_philosophers.cpp + $(CXX) -O2 -DNDEBUG -D_CONSOLE $(CXXFLAGS) -o $(PROG) $^ -ltbb $(LIBS) + +debug: dining_philosophers.cpp + $(CXX) -O0 -D_CONSOLE -g -DTBB_USE_DEBUG $(CXXFLAGS) -o $(PROG) $^ -ltbb_debug $(LIBS) + +clean: + rm -f $(PROG) *.o *.d + +test: + $(run_cmd) ./$(PROG) $(ARGS) + +light_test: + $(run_cmd) ./$(PROG) $(LIGHT_ARGS) diff --git a/examples/graph/dining_philosophers/Makefile.windows b/examples/graph/dining_philosophers/Makefile.windows new file mode 100644 index 0000000000..1776ade24e --- /dev/null +++ b/examples/graph/dining_philosophers/Makefile.windows @@ -0,0 +1,46 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# Common Makefile that builds and runs example. + +# Just specify your program basename +PROG=dining_philosophers +ARGS= auto 5 +LIGHT_ARGS= auto 3 + +# Trying to find if icl.exe is set +CXX1 = $(TBB_CXX)- +CXX2 = $(CXX1:icl.exe-=icl.exe) +CXX = $(CXX2:-=cl.exe) + +# The C++ compiler options +MYCXXFLAGS = /TP /EHsc /W3 /nologo /D _CONSOLE /D _MBCS /D WIN32 /D _CRT_SECURE_NO_DEPRECATE $(CXXFLAGS) +MYLDFLAGS =/INCREMENTAL:NO /NOLOGO /DEBUG /FIXED:NO $(LDFLAGS) + +all: release test +release: + $(CXX) ./dining_philosophers.cpp /MD /O2 /D NDEBUG $(MYCXXFLAGS) /link tbb.lib $(LIBS) $(MYLDFLAGS) /OUT:$(PROG).exe +debug: + $(CXX) ./dining_philosophers.cpp /MDd /Od /Zi /D _DEBUG $(MYCXXFLAGS) /link tbb_debug.lib $(LIBS) $(MYLDFLAGS) /OUT:$(PROG).exe +clean: + @cmd.exe /C del $(PROG).exe *.obj *.?db *.manifest +test: + $(PROG) $(ARGS) +light_test: + $(PROG) $(LIGHT_ARGS) + diff --git a/examples/graph/dining_philosophers/dining_philosophers.cpp b/examples/graph/dining_philosophers/dining_philosophers.cpp new file mode 100644 index 0000000000..c9a3a70d0f --- /dev/null +++ b/examples/graph/dining_philosophers/dining_philosophers.cpp @@ -0,0 +1,306 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#if _MSC_VER + // Suppress "decorated name length exceeded, name was truncated" warning + #pragma warning (disable: 4503) +#endif + +#include "tbb/flow_graph.h" +#include "tbb/task_scheduler_init.h" +#include "tbb/tick_count.h" +#include "tbb/tbb_thread.h" +#include "tbb/atomic.h" +#include "tbb/spin_mutex.h" +#include +#include "../../common/utility/utility.h" +#include +#include + +// Each philosopher is an object, and is invoked in the think() function_node, the +// eat() function_node and forward() multifunction_node. +// +// The graph is constructed, and each think() function_node is started with a continue_msg. +// +// The philosopher will think, then gather two chopsticks, eat, place the chopsticks back, +// and if they have not completed the required number of cycles, will start to think() again +// by sending a continue_msg to their corresponding think() function_node. +// +// The reserving join has as its inputs the left and right chopstick queues an a queue +// that stores the continue_msg emitted by the function_node after think()ing is done. +// When all three inputs are available, a tuple of the inputs will be forwarded to the +// eat() function_node. The output of the eat() function_node is sent to the forward() +// multifunction_node. + +const tbb::tick_count::interval_t think_time(1.0); +const tbb::tick_count::interval_t eat_time(1.0); +const int num_times = 10; + +tbb::tick_count t0; +bool verbose = false; + +const char *names[] = { "Archimedes", "Bakunin", "Confucius", "Democritus", "Euclid" + , "Favorinus", "Geminus", "Heraclitus", "Ichthyas", "Jason of Nysa", + "Kant", "Lavrov", "Metrocles", "Nausiphanes", "Onatas", "Phaedrus", + "Quillot", "Russell", "Socrates", "Thales", "Udayana", + "Vernadsky", "Wittgenstein", "Xenophilus", "Yen Yuan", "Zenodotus" +}; +const int NumPhilosophers = sizeof(names) / sizeof(char*); + +struct RunOptions { + utility::thread_number_range threads; + int number_of_philosophers; + bool silent; + RunOptions(utility::thread_number_range threads_, int number_of_philosophers_, bool silent_) : + threads(threads_), number_of_philosophers(number_of_philosophers_), silent(silent_) { } +}; + +RunOptions ParseCommandLine(int argc, char *argv[]) { + int auto_threads = tbb::task_scheduler_init::default_num_threads(); + utility::thread_number_range threads(tbb::task_scheduler_init::default_num_threads, auto_threads, auto_threads); + int nPhilosophers = 5; + bool verbose = false; + char charbuf[100]; + std::sprintf(charbuf, "%d", NumPhilosophers); + std::string pCount = "how many philosophers, from 2-"; + pCount += charbuf; + + utility::cli_argument_pack cli_pack; + cli_pack.positional_arg(threads, "n-of_threads", utility::thread_number_range_desc) + .positional_arg(nPhilosophers, "n-of-philosophers", pCount) + .arg(verbose,"verbose","verbose output"); + utility::parse_cli_arguments(argc, argv, cli_pack); + if(nPhilosophers < 2 || nPhilosophers > NumPhilosophers) { + std::cout << "Number of philosophers (" << nPhilosophers << ") out of range [2:" << NumPhilosophers << "]\n"; + std::cout << cli_pack.usage_string(argv[0]) << std::flush; + std::exit(1); + } + return RunOptions(threads, nPhilosophers,!verbose); +} + + +tbb::spin_mutex my_mutex; + +class chopstick {}; + +using namespace tbb::flow; + +typedef tbb::flow::tuple join_output; +typedef join_node< join_output, reserving > join_node_type; + +typedef function_node think_node_type; +typedef function_node eat_node_type; +typedef multifunction_node forward_node_type; + +class philosopher { +public: + + philosopher( const char *name ) : + my_name(name), my_count(num_times) { } + + ~philosopher() { + } + + void check(); + const char *name() const { return my_name; } + +private: + + friend std::ostream& operator<<(std::ostream& o, philosopher const &p); + + const char *my_name; + int my_count; + + friend class think_node_body; + friend class eat_node_body; + friend class forward_node_body; + + void think( ); + void eat(); + void forward( const continue_msg &in, forward_node_type::output_ports_type &out_ports ); +}; + +std::ostream& operator<<(std::ostream& o, philosopher const &p) { + o << "< philosopher[" << reinterpret_cast(const_cast(&p)) << "] " << p.name() + << ", my_count=" << p.my_count; + return o; +} + +class think_node_body { + philosopher& my_philosopher; +public: + think_node_body( philosopher &p ) : my_philosopher(p) { } + think_node_body( const think_node_body &other ) : my_philosopher(other.my_philosopher) { } + continue_msg operator()( continue_msg /*m*/) { + my_philosopher.think(); + return continue_msg(); + } +}; + +class eat_node_body { + philosopher &my_philosopher; +public: + eat_node_body( philosopher &p) : my_philosopher(p) {} + eat_node_body( const eat_node_body &other ) : my_philosopher(other.my_philosopher) { } + continue_msg operator()(const join_output &in) { + my_philosopher.eat(); + return continue_msg(); + } +}; + +class forward_node_body { + philosopher &my_philosopher; +public: + forward_node_body( philosopher &p) : my_philosopher(p) {} + forward_node_body( const forward_node_body &other ) : my_philosopher(other.my_philosopher) { } + void operator()( const continue_msg &in, forward_node_type::output_ports_type &out) { + my_philosopher.forward( in, out); + } +}; + +void philosopher::check() { + if ( my_count != 0 ) { + std::printf("ERROR: philosopher %s still had to run %d more times\n", name(), my_count); + std::exit(1); + } +} + +void philosopher::forward( const continue_msg &/*in*/, forward_node_type::output_ports_type &out_ports ) { + if(my_count < 0) abort(); + --my_count; + (void)tbb::flow::get<1>(out_ports).try_put(chopstick()); + (void)tbb::flow::get<2>(out_ports).try_put(chopstick()); + if (my_count > 0) { + (void)tbb::flow::get<0>(out_ports).try_put(continue_msg()); //start thinking again + } else { + if(verbose) { + tbb::spin_mutex::scoped_lock lock(my_mutex); + std::printf("%s has left the building\n", name()); + } + } +} + +void philosopher::eat() { + if(verbose) { + tbb::spin_mutex::scoped_lock lock(my_mutex); + std::printf("%s eating\n", name()); + } + tbb::this_tbb_thread::sleep(eat_time); + if(verbose) { + tbb::spin_mutex::scoped_lock lock(my_mutex); + std::printf("%s done eating\n", name()); + } +} + +void philosopher::think() { + if(verbose) { + tbb::spin_mutex::scoped_lock lock(my_mutex); + std::printf("%s thinking\n", name()); + } + tbb::this_tbb_thread::sleep(think_time); + if(verbose) { + tbb::spin_mutex::scoped_lock lock(my_mutex); + std::printf("%s done thinking\n", name()); + } +} + +typedef queue_node thinking_done_type; + +int main(int argc, char *argv[]) { + try { + tbb::tick_count main_time = tbb::tick_count::now(); + int num_threads; + int num_philosophers; + + RunOptions options = ParseCommandLine(argc, argv); + num_philosophers = options.number_of_philosophers; + verbose = !options.silent; + + for(num_threads = options.threads.first; num_threads <= options.threads.last; num_threads = options.threads.step(num_threads)) { + + tbb::task_scheduler_init init(num_threads); + + graph g; + + if(verbose) std::cout << std::endl << num_philosophers << " philosophers with " + << num_threads << " threads" << std::endl << std::endl; + t0 = tbb::tick_count::now(); + + std::vector > places(num_philosophers, queue_node(g)); + std::vector philosophers; + philosophers.reserve(num_philosophers); + std::vector think_nodes; + think_nodes.reserve(num_philosophers); + std::vector done_vector(num_philosophers, thinking_done_type(g)); + std::vector join_vector(num_philosophers,join_node_type(g)); + std::vector eat_nodes; + eat_nodes.reserve(num_philosophers); + std::vector forward_nodes; + forward_nodes.reserve(num_philosophers); + for ( int i = 0; i < num_philosophers; ++i ) { + places[i].try_put(chopstick()); + philosophers.push_back( philosopher( names[i] ) ); // allowed because of default generated assignment + if(verbose) { + tbb::spin_mutex::scoped_lock lock(my_mutex); + std::cout << "Built philosopher " << philosophers[i] << std::endl; + } + think_nodes.push_back(new think_node_type(g, unlimited, think_node_body(philosophers[i]))); + eat_nodes.push_back( new eat_node_type(g, unlimited, eat_node_body(philosophers[i]))); + forward_nodes.push_back( new forward_node_type(g, unlimited, forward_node_body(philosophers[i]))); + } + + // attach chopstick buffers and think function_nodes to joins + for(int i = 0; i < num_philosophers; ++i) { + make_edge( *think_nodes[i], done_vector[i] ); + make_edge( done_vector[i], input_port<0>(join_vector[i]) ); + make_edge( places[i], input_port<1>(join_vector[i]) ); // left chopstick + make_edge( places[(i+1) % num_philosophers], input_port<2>(join_vector[i]) ); // right chopstick + make_edge( join_vector[i], *eat_nodes[i] ); + make_edge( *eat_nodes[i], *forward_nodes[i] ); + make_edge( output_port<0>(*forward_nodes[i]), *think_nodes[i] ); + make_edge( output_port<1>(*forward_nodes[i]), places[i] ); + make_edge( output_port<2>(*forward_nodes[i]), places[(i+1) % num_philosophers] ); + } + + // start all the philosophers thinking + for(int i = 0; i < num_philosophers; ++i) think_nodes[i]->try_put(continue_msg()); + + g.wait_for_all(); + + tbb::tick_count t1 = tbb::tick_count::now(); + if(verbose) std::cout << std::endl << num_philosophers << " philosophers with " + << num_threads << " threads have taken " << (t1-t0).seconds() << "seconds" << std::endl; + + for ( int i = 0; i < num_philosophers; ++i ) philosophers[i].check(); + + for(int i = 0; i < num_philosophers; ++i) { + delete think_nodes[i]; + delete eat_nodes[i]; + delete forward_nodes[i]; + } + } + + utility::report_elapsed_time((tbb::tick_count::now() - main_time).seconds()); + return 0; + } catch(std::exception& e) { + std::cerr<<"error occurred. error text is :\"" < + + +

Overview

+The Dining Philosophers problem demonstrates tbb::flow and the use of the reserving join node to +solve the potential deadlock. +
This program runs some number of philosophers in parallel, each thinking and then waiting for chopsticks +to be available before eating. Eating and thinking are implemented with sleep(). The chopstick positions are represented by a queue_node with one item. + +

Source Files

+
+
dining_philosophers.cpp +
Source code for the example. +
Makefile, Makefile.windows +
Makefiles for building example. +
+ +

Directories

+
+
src +
Contains source file mentioned above. +
msvs +
Contains Microsoft* Visual Studio* 2010 workspace for building and running the + example (Windows* systems only).
xcode +
Contains Xcode* IDE workspace for building and running the example (OS X* + systems only).
+ +

To Build

+General build directions can be found here. +

+ +
+Up to parent directory +

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel is a registered trademark or trademark of Intel Corporation +or its subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. + + + diff --git a/examples/graph/dining_philosophers/msvs/dining_philosophers.sln b/examples/graph/dining_philosophers/msvs/dining_philosophers.sln new file mode 100644 index 0000000000..efcaa6ffcc --- /dev/null +++ b/examples/graph/dining_philosophers/msvs/dining_philosophers.sln @@ -0,0 +1,26 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dining_philosophers", "dining_philosophers.vcxproj", "{3894D1D2-A574-4937-AD56-726758EFE5B7}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3894D1D2-A574-4937-AD56-726758EFE5B7}.Debug|Win32.ActiveCfg = Debug|Win32 + {3894D1D2-A574-4937-AD56-726758EFE5B7}.Debug|Win32.Build.0 = Debug|Win32 + {3894D1D2-A574-4937-AD56-726758EFE5B7}.Debug|x64.ActiveCfg = Debug|x64 + {3894D1D2-A574-4937-AD56-726758EFE5B7}.Debug|x64.Build.0 = Debug|x64 + {3894D1D2-A574-4937-AD56-726758EFE5B7}.Release|Win32.ActiveCfg = Release|Win32 + {3894D1D2-A574-4937-AD56-726758EFE5B7}.Release|Win32.Build.0 = Release|Win32 + {3894D1D2-A574-4937-AD56-726758EFE5B7}.Release|x64.ActiveCfg = Release|x64 + {3894D1D2-A574-4937-AD56-726758EFE5B7}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/examples/graph/dining_philosophers/msvs/dining_philosophers.vcxproj b/examples/graph/dining_philosophers/msvs/dining_philosophers.vcxproj new file mode 100644 index 0000000000..ec2968df2d --- /dev/null +++ b/examples/graph/dining_philosophers/msvs/dining_philosophers.vcxproj @@ -0,0 +1,197 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + dining_philosophers + {3894d1d2-a574-4937-ad56-726758efe5b7} + dining_philosophers + Win32Proj + + + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Console + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 debug "$(OutDir)" + + + + + X64 + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Console + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 debug "$(OutDir)" + + + + + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Console + true + true + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 release "$(OutDir)" + + + + + X64 + + + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Console + true + true + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 release "$(OutDir)" + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/graph/dining_philosophers/xcode/dining_philosophers.xcodeproj/project.pbxproj b/examples/graph/dining_philosophers/xcode/dining_philosophers.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..fc048821d8 --- /dev/null +++ b/examples/graph/dining_philosophers/xcode/dining_philosophers.xcodeproj/project.pbxproj @@ -0,0 +1,305 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + A1F593A60B8F042A00073279 /* dining_philosophers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F593A50B8F042A00073279 /* dining_philosophers.cpp */; }; + A1F593B70B8F06F900073279 /* libtbb.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A1F593B30B8F06F900073279 /* libtbb.dylib */; }; + A1F593BB0B8F072500073279 /* libtbb.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = A1F593B30B8F06F900073279 /* libtbb.dylib */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 8DD76F690486A84900D96B5E /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 12; + dstPath = ""; + dstSubfolderSpec = 16; + files = ( + A1F593BB0B8F072500073279 /* libtbb.dylib in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 8DD76F6C0486A84900D96B5E /* dining_philosophers */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = dining_philosophers; sourceTree = BUILT_PRODUCTS_DIR; }; + A1F593A50B8F042A00073279 /* dining_philosophers.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = dining_philosophers.cpp; path = ../dining_philosophers.cpp; sourceTree = SOURCE_ROOT; }; + A1F593B30B8F06F900073279 /* libtbb.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libtbb.dylib; path = ../../../../lib/libtbb.dylib; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8DD76F660486A84900D96B5E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A1F593B70B8F06F900073279 /* libtbb.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 08FB7794FE84155DC02AAC07 /* dining_philosophers */ = { + isa = PBXGroup; + children = ( + 08FB7795FE84155DC02AAC07 /* Source */, + A1F593B20B8F06F900073279 /* External Frameworks and Libraries */, + 1AB674ADFE9D54B511CA2CBB /* Products */, + ); + name = dining_philosophers; + sourceTree = ""; + }; + 08FB7795FE84155DC02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + A1F593A50B8F042A00073279 /* dining_philosophers.cpp */, + ); + name = Source; + sourceTree = ""; + }; + 1AB674ADFE9D54B511CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8DD76F6C0486A84900D96B5E /* dining_philosophers */, + ); + name = Products; + sourceTree = ""; + }; + A1F593B20B8F06F900073279 /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + A1F593B30B8F06F900073279 /* libtbb.dylib */, + ); + name = "External Frameworks and Libraries"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8DD76F620486A84900D96B5E /* dining_philosophers */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "dining_philosophers" */; + buildPhases = ( + 8DD76F640486A84900D96B5E /* Sources */, + 8DD76F660486A84900D96B5E /* Frameworks */, + 8DD76F690486A84900D96B5E /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = dining_philosophers; + productInstallPath = "$(HOME)/bin"; + productName = dining_philosophers; + productReference = 8DD76F6C0486A84900D96B5E /* dining_philosophers */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0410; + }; + buildConfigurationList = 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "dining_philosophers" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + en, + ); + mainGroup = 08FB7794FE84155DC02AAC07 /* dining_philosophers */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8DD76F620486A84900D96B5E /* dining_philosophers */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 8DD76F640486A84900D96B5E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A1F593A60B8F042A00073279 /* dining_philosophers.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1DEB923208733DC60010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = dining_philosophers; + ZERO_LINK = NO; + }; + name = Debug; + }; + 1DEB923308733DC60010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = dining_philosophers; + ZERO_LINK = NO; + }; + name = Release; + }; + 1DEB923608733DC60010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Debug; + }; + 1DEB923708733DC60010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Release; + }; + A1F593C60B8F0E6E00073279 /* Debug64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = dining_philosophers; + ZERO_LINK = NO; + }; + name = Debug64; + }; + A1F593C70B8F0E6E00073279 /* Release64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = dining_philosophers; + ZERO_LINK = NO; + }; + name = Release64; + }; + A1F593C80B8F0E6E00073279 /* Debug64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-m64", + ); + OTHER_LDFLAGS = "-m64"; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Debug64; + }; + A1F593C90B8F0E6E00073279 /* Release64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-m64", + ); + OTHER_LDFLAGS = "-m64"; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Release64; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "dining_philosophers" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB923208733DC60010E9CD /* Debug */, + A1F593C60B8F0E6E00073279 /* Debug64 */, + 1DEB923308733DC60010E9CD /* Release */, + A1F593C70B8F0E6E00073279 /* Release64 */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "dining_philosophers" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB923608733DC60010E9CD /* Debug */, + A1F593C80B8F0E6E00073279 /* Debug64 */, + 1DEB923708733DC60010E9CD /* Release */, + A1F593C90B8F0E6E00073279 /* Release64 */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/examples/graph/fgbzip2/Makefile b/examples/graph/fgbzip2/Makefile new file mode 100644 index 0000000000..e03e298fb5 --- /dev/null +++ b/examples/graph/fgbzip2/Makefile @@ -0,0 +1,54 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# GNU Makefile that builds and runs example. + +run_cmd= +PROG=fgbzip2 +ARGS=-b=9 -a $(PROG) +PERF_RUN_ARGS=-b=9 -a $(PROG) + +# The C++ compiler +ifneq (,$(shell which icc 2>/dev/null)) +CXX=icpc +endif # which icc + +ifeq ($(shell uname), Linux) +LIBS+= -lrt -lpthread +endif + +CXXFLAGS += -std=c++0x -DTBB_PREVIEW_FLOW_GRAPH_NODES=1 $(CXX0XFLAGS) + +all: release test + +release: + $(CXX) -O2 -DNDEBUG *.cpp $(CXXFLAGS) -o $(PROG) -ltbb $(LIBS) + +debug: + $(CXX) -O0 -g -DTBB_USE_DEBUG *.cpp $(CXXFLAGS) -o $(PROG) -ltbb_debug $(LIBS) + +clean: + $(RM) $(PROG) *.o *.d + +test: + $(run_cmd) ./$(PROG) $(ARGS) + +perf_build: release + +perf_run: + $(run_cmd) ./$(PROG) $(PERF_RUN_ARGS) diff --git a/examples/graph/fgbzip2/Makefile.windows b/examples/graph/fgbzip2/Makefile.windows new file mode 100644 index 0000000000..cd79caea33 --- /dev/null +++ b/examples/graph/fgbzip2/Makefile.windows @@ -0,0 +1,54 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# Common Makefile that builds and runs example. + +# Just specify your program basename +run_cmd= +PROG=fgbzip2 +ARGS=-b=9 -a $(PROG).exe +PERF_RUN_ARGS=-b=9 -a $(PROG).exe + +# Trying to find if icl.exe is set +CXX1 = $(TBB_CXX)- +CXX2 = $(CXX1:icl.exe-=icl.exe) +CXX = $(CXX2:-=cl.exe) + +# The C++ compiler options +MYCXXFLAGS = /EHsc /W3 /nologo /D _CONSOLE /D _MBCS /D WIN32 /D _CRT_SECURE_NO_WARNINGS /D _CRT_NONSTDC_NO_DEPRECATE /wd4267 /wd4244 /D TBB_PREVIEW_FLOW_GRAPH_NODES=1 +MYLDFLAGS =/INCREMENTAL:NO /NOLOGO /DEBUG /FIXED:NO $(LDFLAGS) + +all: release test + +release: + $(CXX) *.cpp /MD /O2 /Zi /D NDEBUG $(MYCXXFLAGS) /link tbb.lib $(LIBS) $(MYLDFLAGS) /OUT:$(PROG).exe + +debug: + $(CXX) *.cpp /MDd /Od /Zi /D TBB_USE_DEBUG /D _DEBUG $(MYCXXFLAGS) /link tbb_debug.lib $(LIBS) $(MYLDFLAGS) /OUT:$(PROG).exe + +clean: + @cmd.exe /C del $(PROG).exe *.obj *.?db *.manifest + +test: + $(PROG) $(ARGS) + +perf_build: release + +perf_run: + $(PROG) $(PERF_RUN_ARGS) + diff --git a/examples/graph/fgbzip2/blocksort.cpp b/examples/graph/fgbzip2/blocksort.cpp new file mode 100644 index 0000000000..c75bf1b161 --- /dev/null +++ b/examples/graph/fgbzip2/blocksort.cpp @@ -0,0 +1,1146 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +/*-------------------------------------------------------------*/ +/*--- Block sorting machinery ---*/ +/*--- blocksort.cpp ---*/ +/*-------------------------------------------------------------*/ + +/* ------------------------------------------------------------------ + The original source for this example: + This file is part of bzip2/libbzip2, a program and library for + lossless, block-sorting data compression. + + bzip2/libbzip2 version 1.0.6 of 6 September 2010 + Copyright (C) 1996-2010 Julian Seward + + This program, "bzip2", the associated library "libbzip2", and all + documentation, are copyright (C) 1996-2010 Julian R Seward. All + rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Julian Seward, jseward@bzip.org + bzip2/libbzip2 version 1.0.6 of 6 September 2010 + ------------------------------------------------------------------ */ + + +#include "bzlib_private.h" + +/*---------------------------------------------*/ +/*--- Fallback O(N log(N)^2) sorting ---*/ +/*--- algorithm, for repetitive blocks ---*/ +/*---------------------------------------------*/ + +/*---------------------------------------------*/ +static +__inline__ +void fallbackSimpleSort ( UInt32* fmap, + UInt32* eclass, + Int32 lo, + Int32 hi ) +{ + Int32 i, j, tmp; + UInt32 ec_tmp; + + if (lo == hi) return; + + if (hi - lo > 3) { + for ( i = hi-4; i >= lo; i-- ) { + tmp = fmap[i]; + ec_tmp = eclass[tmp]; + for ( j = i+4; j <= hi && ec_tmp > eclass[fmap[j]]; j += 4 ) + fmap[j-4] = fmap[j]; + fmap[j-4] = tmp; + } + } + + for ( i = hi-1; i >= lo; i-- ) { + tmp = fmap[i]; + ec_tmp = eclass[tmp]; + for ( j = i+1; j <= hi && ec_tmp > eclass[fmap[j]]; j++ ) + fmap[j-1] = fmap[j]; + fmap[j-1] = tmp; + } +} + + +/*---------------------------------------------*/ +#define fswap(zz1, zz2) \ + { Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; } + +#define fvswap(zzp1, zzp2, zzn) \ +{ \ + Int32 yyp1 = (zzp1); \ + Int32 yyp2 = (zzp2); \ + Int32 yyn = (zzn); \ + while (yyn > 0) { \ + fswap(fmap[yyp1], fmap[yyp2]); \ + yyp1++; yyp2++; yyn--; \ + } \ +} + + +#define fmin(a,b) ((a) < (b)) ? (a) : (b) + +#define fpush(lz,hz) { stackLo[sp] = lz; \ + stackHi[sp] = hz; \ + sp++; } + +#define fpop(lz,hz) { sp--; \ + lz = stackLo[sp]; \ + hz = stackHi[sp]; } + +#define FALLBACK_QSORT_SMALL_THRESH 10 +#define FALLBACK_QSORT_STACK_SIZE 100 + + +static +void fallbackQSort3 ( UInt32* fmap, + UInt32* eclass, + Int32 loSt, + Int32 hiSt ) +{ + Int32 unLo, unHi, ltLo, gtHi, n, m; + Int32 sp, lo, hi; + UInt32 med, r, r3; + Int32 stackLo[FALLBACK_QSORT_STACK_SIZE]; + Int32 stackHi[FALLBACK_QSORT_STACK_SIZE]; + + r = 0; + + sp = 0; + fpush ( loSt, hiSt ); + + while (sp > 0) { + + AssertH ( sp < FALLBACK_QSORT_STACK_SIZE - 1, 1004 ); + + fpop ( lo, hi ); + if (hi - lo < FALLBACK_QSORT_SMALL_THRESH) { + fallbackSimpleSort ( fmap, eclass, lo, hi ); + continue; + } + + /* Random partitioning. Median of 3 sometimes fails to + avoid bad cases. Median of 9 seems to help but + looks rather expensive. This too seems to work but + is cheaper. Guidance for the magic constants + 7621 and 32768 is taken from Sedgewick's algorithms + book, chapter 35. + */ + r = ((r * 7621) + 1) % 32768; + r3 = r % 3; + if (r3 == 0) med = eclass[fmap[lo]]; else + if (r3 == 1) med = eclass[fmap[(lo+hi)>>1]]; else + med = eclass[fmap[hi]]; + + unLo = ltLo = lo; + unHi = gtHi = hi; + + while (1) { + while (1) { + if (unLo > unHi) break; + n = (Int32)eclass[fmap[unLo]] - (Int32)med; + if (n == 0) { + fswap(fmap[unLo], fmap[ltLo]); + ltLo++; unLo++; + continue; + }; + if (n > 0) break; + unLo++; + } + while (1) { + if (unLo > unHi) break; + n = (Int32)eclass[fmap[unHi]] - (Int32)med; + if (n == 0) { + fswap(fmap[unHi], fmap[gtHi]); + gtHi--; unHi--; + continue; + }; + if (n < 0) break; + unHi--; + } + if (unLo > unHi) break; + fswap(fmap[unLo], fmap[unHi]); unLo++; unHi--; + } + + AssertD ( unHi == unLo-1, "fallbackQSort3(2)" ); + + if (gtHi < ltLo) continue; + + n = fmin(ltLo-lo, unLo-ltLo); fvswap(lo, unLo-n, n); + m = fmin(hi-gtHi, gtHi-unHi); fvswap(unLo, hi-m+1, m); + + n = lo + unLo - ltLo - 1; + m = hi - (gtHi - unHi) + 1; + + if (n - lo > hi - m) { + fpush ( lo, n ); + fpush ( m, hi ); + } else { + fpush ( m, hi ); + fpush ( lo, n ); + } + } +} + +#undef fmin +#undef fpush +#undef fpop +#undef fswap +#undef fvswap +#undef FALLBACK_QSORT_SMALL_THRESH +#undef FALLBACK_QSORT_STACK_SIZE + + +/*---------------------------------------------*/ +/* Pre: + nblock > 0 + eclass exists for [0 .. nblock-1] + ((UChar*)eclass) [0 .. nblock-1] holds block + ptr exists for [0 .. nblock-1] + + Post: + ((UChar*)eclass) [0 .. nblock-1] holds block + All other areas of eclass destroyed + fmap [0 .. nblock-1] holds sorted order + bhtab [ 0 .. 2+(nblock/32) ] destroyed +*/ + +#define SET_BH(zz) bhtab[(zz) >> 5] |= (1 << ((zz) & 31)) +#define CLEAR_BH(zz) bhtab[(zz) >> 5] &= ~(1 << ((zz) & 31)) +#define ISSET_BH(zz) (bhtab[(zz) >> 5] & (1 << ((zz) & 31))) +#define WORD_BH(zz) bhtab[(zz) >> 5] +#define UNALIGNED_BH(zz) ((zz) & 0x01f) + +static +void fallbackSort ( UInt32* fmap, + UInt32* eclass, + UInt32* bhtab, + Int32 nblock, + Int32 verb ) +{ + Int32 ftab[257]; + Int32 ftabCopy[256]; + Int32 H, i, j, k, l, r, cc, cc1; + Int32 nNotDone; + Int32 nBhtab; + UChar* eclass8 = (UChar*)eclass; + + /*-- + Initial 1-char radix sort to generate + initial fmap and initial BH bits. + --*/ + if (verb >= 4) + VPrintf0 ( " bucket sorting ...\n" ); + for (i = 0; i < 257; i++) ftab[i] = 0; + for (i = 0; i < nblock; i++) ftab[eclass8[i]]++; + for (i = 0; i < 256; i++) ftabCopy[i] = ftab[i]; + for (i = 1; i < 257; i++) ftab[i] += ftab[i-1]; + + for (i = 0; i < nblock; i++) { + j = eclass8[i]; + k = ftab[j] - 1; + ftab[j] = k; + fmap[k] = i; + } + + nBhtab = 2 + (nblock / 32); + for (i = 0; i < nBhtab; i++) bhtab[i] = 0; + for (i = 0; i < 256; i++) SET_BH(ftab[i]); + + /*-- + Inductively refine the buckets. Kind-of an + "exponential radix sort" (!), inspired by the + Manber-Myers suffix array construction algorithm. + --*/ + + /*-- set sentinel bits for block-end detection --*/ + for (i = 0; i < 32; i++) { + SET_BH(nblock + 2*i); + CLEAR_BH(nblock + 2*i + 1); + } + + /*-- the log(N) loop --*/ + H = 1; + while (1) { + + if (verb >= 4) + VPrintf1 ( " depth %6d has ", H ); + + j = 0; + for (i = 0; i < nblock; i++) { + if (ISSET_BH(i)) j = i; + k = fmap[i] - H; if (k < 0) k += nblock; + eclass[k] = j; + } + + nNotDone = 0; + r = -1; + while (1) { + + /*-- find the next non-singleton bucket --*/ + k = r + 1; + while (ISSET_BH(k) && UNALIGNED_BH(k)) k++; + if (ISSET_BH(k)) { + while (WORD_BH(k) == 0xffffffff) k += 32; + while (ISSET_BH(k)) k++; + } + l = k - 1; + if (l >= nblock) break; + while (!ISSET_BH(k) && UNALIGNED_BH(k)) k++; + if (!ISSET_BH(k)) { + while (WORD_BH(k) == 0x00000000) k += 32; + while (!ISSET_BH(k)) k++; + } + r = k - 1; + if (r >= nblock) break; + + /*-- now [l, r] bracket current bucket --*/ + if (r > l) { + nNotDone += (r - l + 1); + fallbackQSort3 ( fmap, eclass, l, r ); + + /*-- scan bucket and generate header bits-- */ + cc = -1; + for (i = l; i <= r; i++) { + cc1 = eclass[fmap[i]]; + if (cc != cc1) { SET_BH(i); cc = cc1; }; + } + } + } + + if (verb >= 4) + VPrintf1 ( "%6d unresolved strings\n", nNotDone ); + + H *= 2; + if (H > nblock || nNotDone == 0) break; + } + + /*-- + Reconstruct the original block in + eclass8 [0 .. nblock-1], since the + previous phase destroyed it. + --*/ + if (verb >= 4) + VPrintf0 ( " reconstructing block ...\n" ); + j = 0; + for (i = 0; i < nblock; i++) { + while (ftabCopy[j] == 0) j++; + ftabCopy[j]--; + eclass8[fmap[i]] = (UChar)j; + } + AssertH ( j < 256, 1005 ); +} + +#undef SET_BH +#undef CLEAR_BH +#undef ISSET_BH +#undef WORD_BH +#undef UNALIGNED_BH + + +/*---------------------------------------------*/ +/*--- The main, O(N^2 log(N)) sorting ---*/ +/*--- algorithm. Faster for "normal" ---*/ +/*--- non-repetitive blocks. ---*/ +/*---------------------------------------------*/ + +/*---------------------------------------------*/ +static +__inline__ +Bool mainGtU ( UInt32 i1, + UInt32 i2, + UChar* block, + UInt16* quadrant, + UInt32 nblock, + Int32* budget ) +{ + Int32 k; + UChar c1, c2; + UInt16 s1, s2; + + AssertD ( i1 != i2, "mainGtU" ); + /* 1 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + i1++; i2++; + /* 2 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + i1++; i2++; + /* 3 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + i1++; i2++; + /* 4 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + i1++; i2++; + /* 5 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + i1++; i2++; + /* 6 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + i1++; i2++; + /* 7 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + i1++; i2++; + /* 8 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + i1++; i2++; + /* 9 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + i1++; i2++; + /* 10 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + i1++; i2++; + /* 11 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + i1++; i2++; + /* 12 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + i1++; i2++; + + k = nblock + 8; + + do { + /* 1 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + s1 = quadrant[i1]; s2 = quadrant[i2]; + if (s1 != s2) return (s1 > s2); + i1++; i2++; + /* 2 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + s1 = quadrant[i1]; s2 = quadrant[i2]; + if (s1 != s2) return (s1 > s2); + i1++; i2++; + /* 3 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + s1 = quadrant[i1]; s2 = quadrant[i2]; + if (s1 != s2) return (s1 > s2); + i1++; i2++; + /* 4 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + s1 = quadrant[i1]; s2 = quadrant[i2]; + if (s1 != s2) return (s1 > s2); + i1++; i2++; + /* 5 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + s1 = quadrant[i1]; s2 = quadrant[i2]; + if (s1 != s2) return (s1 > s2); + i1++; i2++; + /* 6 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + s1 = quadrant[i1]; s2 = quadrant[i2]; + if (s1 != s2) return (s1 > s2); + i1++; i2++; + /* 7 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + s1 = quadrant[i1]; s2 = quadrant[i2]; + if (s1 != s2) return (s1 > s2); + i1++; i2++; + /* 8 */ + c1 = block[i1]; c2 = block[i2]; + if (c1 != c2) return (c1 > c2); + s1 = quadrant[i1]; s2 = quadrant[i2]; + if (s1 != s2) return (s1 > s2); + i1++; i2++; + + if (i1 >= nblock) i1 -= nblock; + if (i2 >= nblock) i2 -= nblock; + + k -= 8; + (*budget)--; + } + while (k >= 0); + + return False; +} + + +/*---------------------------------------------*/ +/*-- + Knuth's increments seem to work better + than Incerpi-Sedgewick here. Possibly + because the number of elems to sort is + usually small, typically <= 20. +--*/ +static +Int32 incs[14] = { 1, 4, 13, 40, 121, 364, 1093, 3280, + 9841, 29524, 88573, 265720, + 797161, 2391484 }; + +static +void mainSimpleSort ( UInt32* ptr, + UChar* block, + UInt16* quadrant, + Int32 nblock, + Int32 lo, + Int32 hi, + Int32 d, + Int32* budget ) +{ + Int32 i, j, h, bigN, hp; + UInt32 v; + + bigN = hi - lo + 1; + if (bigN < 2) return; + + hp = 0; + while (incs[hp] < bigN) hp++; + hp--; + + for (; hp >= 0; hp--) { + h = incs[hp]; + + i = lo + h; + while (True) { + + /*-- copy 1 --*/ + if (i > hi) break; + v = ptr[i]; + j = i; + while ( mainGtU ( + ptr[j-h]+d, v+d, block, quadrant, nblock, budget + ) ) { + ptr[j] = ptr[j-h]; + j = j - h; + if (j <= (lo + h - 1)) break; + } + ptr[j] = v; + i++; + + /*-- copy 2 --*/ + if (i > hi) break; + v = ptr[i]; + j = i; + while ( mainGtU ( + ptr[j-h]+d, v+d, block, quadrant, nblock, budget + ) ) { + ptr[j] = ptr[j-h]; + j = j - h; + if (j <= (lo + h - 1)) break; + } + ptr[j] = v; + i++; + + /*-- copy 3 --*/ + if (i > hi) break; + v = ptr[i]; + j = i; + while ( mainGtU ( + ptr[j-h]+d, v+d, block, quadrant, nblock, budget + ) ) { + ptr[j] = ptr[j-h]; + j = j - h; + if (j <= (lo + h - 1)) break; + } + ptr[j] = v; + i++; + + if (*budget < 0) return; + } + } +} + + +/*---------------------------------------------*/ +/*-- + The following is an implementation of + an elegant 3-way quicksort for strings, + described in a paper "Fast Algorithms for + Sorting and Searching Strings", by Robert + Sedgewick and Jon L. Bentley. +--*/ + +#define mswap(zz1, zz2) \ + { Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; } + +#define mvswap(zzp1, zzp2, zzn) \ +{ \ + Int32 yyp1 = (zzp1); \ + Int32 yyp2 = (zzp2); \ + Int32 yyn = (zzn); \ + while (yyn > 0) { \ + mswap(ptr[yyp1], ptr[yyp2]); \ + yyp1++; yyp2++; yyn--; \ + } \ +} + +static +__inline__ +UChar mmed3 ( UChar a, UChar b, UChar c ) +{ + UChar t; + if (a > b) { t = a; a = b; b = t; }; + if (b > c) { + b = c; + if (a > b) b = a; + } + return b; +} + +#define mmin(a,b) ((a) < (b)) ? (a) : (b) + +#define mpush(lz,hz,dz) { stackLo[sp] = lz; \ + stackHi[sp] = hz; \ + stackD [sp] = dz; \ + sp++; } + +#define mpop(lz,hz,dz) { sp--; \ + lz = stackLo[sp]; \ + hz = stackHi[sp]; \ + dz = stackD [sp]; } + + +#define mnextsize(az) (nextHi[az]-nextLo[az]) + +#define mnextswap(az,bz) \ + { Int32 tz; \ + tz = nextLo[az]; nextLo[az] = nextLo[bz]; nextLo[bz] = tz; \ + tz = nextHi[az]; nextHi[az] = nextHi[bz]; nextHi[bz] = tz; \ + tz = nextD [az]; nextD [az] = nextD [bz]; nextD [bz] = tz; } + + +#define MAIN_QSORT_SMALL_THRESH 20 +#define MAIN_QSORT_DEPTH_THRESH (BZ_N_RADIX + BZ_N_QSORT) +#define MAIN_QSORT_STACK_SIZE 100 + +static +void mainQSort3 ( UInt32* ptr, + UChar* block, + UInt16* quadrant, + Int32 nblock, + Int32 loSt, + Int32 hiSt, + Int32 dSt, + Int32* budget ) +{ + Int32 unLo, unHi, ltLo, gtHi, n, m, med; + Int32 sp, lo, hi, d; + + Int32 stackLo[MAIN_QSORT_STACK_SIZE]; + Int32 stackHi[MAIN_QSORT_STACK_SIZE]; + Int32 stackD [MAIN_QSORT_STACK_SIZE]; + + Int32 nextLo[3]; + Int32 nextHi[3]; + Int32 nextD [3]; + + sp = 0; + mpush ( loSt, hiSt, dSt ); + + while (sp > 0) { + + AssertH ( sp < MAIN_QSORT_STACK_SIZE - 2, 1001 ); + + mpop ( lo, hi, d ); + if (hi - lo < MAIN_QSORT_SMALL_THRESH || + d > MAIN_QSORT_DEPTH_THRESH) { + mainSimpleSort ( ptr, block, quadrant, nblock, lo, hi, d, budget ); + if (*budget < 0) return; + continue; + } + + med = (Int32) + mmed3 ( block[ptr[ lo ]+d], + block[ptr[ hi ]+d], + block[ptr[ (lo+hi)>>1 ]+d] ); + + unLo = ltLo = lo; + unHi = gtHi = hi; + + while (True) { + while (True) { + if (unLo > unHi) break; + n = ((Int32)block[ptr[unLo]+d]) - med; + if (n == 0) { + mswap(ptr[unLo], ptr[ltLo]); + ltLo++; unLo++; continue; + }; + if (n > 0) break; + unLo++; + } + while (True) { + if (unLo > unHi) break; + n = ((Int32)block[ptr[unHi]+d]) - med; + if (n == 0) { + mswap(ptr[unHi], ptr[gtHi]); + gtHi--; unHi--; continue; + }; + if (n < 0) break; + unHi--; + } + if (unLo > unHi) break; + mswap(ptr[unLo], ptr[unHi]); unLo++; unHi--; + } + + AssertD ( unHi == unLo-1, "mainQSort3(2)" ); + + if (gtHi < ltLo) { + mpush(lo, hi, d+1 ); + continue; + } + + n = mmin(ltLo-lo, unLo-ltLo); mvswap(lo, unLo-n, n); + m = mmin(hi-gtHi, gtHi-unHi); mvswap(unLo, hi-m+1, m); + + n = lo + unLo - ltLo - 1; + m = hi - (gtHi - unHi) + 1; + + nextLo[0] = lo; nextHi[0] = n; nextD[0] = d; + nextLo[1] = m; nextHi[1] = hi; nextD[1] = d; + nextLo[2] = n+1; nextHi[2] = m-1; nextD[2] = d+1; + + if (mnextsize(0) < mnextsize(1)) mnextswap(0,1); + if (mnextsize(1) < mnextsize(2)) mnextswap(1,2); + if (mnextsize(0) < mnextsize(1)) mnextswap(0,1); + + AssertD (mnextsize(0) >= mnextsize(1), "mainQSort3(8)" ); + AssertD (mnextsize(1) >= mnextsize(2), "mainQSort3(9)" ); + + mpush (nextLo[0], nextHi[0], nextD[0]); + mpush (nextLo[1], nextHi[1], nextD[1]); + mpush (nextLo[2], nextHi[2], nextD[2]); + } +} + +#undef mswap +#undef mvswap +#undef mpush +#undef mpop +#undef mmin +#undef mnextsize +#undef mnextswap +#undef MAIN_QSORT_SMALL_THRESH +#undef MAIN_QSORT_DEPTH_THRESH +#undef MAIN_QSORT_STACK_SIZE + + +/*---------------------------------------------*/ +/* Pre: + nblock > N_OVERSHOOT + block32 exists for [0 .. nblock-1 +N_OVERSHOOT] + ((UChar*)block32) [0 .. nblock-1] holds block + ptr exists for [0 .. nblock-1] + + Post: + ((UChar*)block32) [0 .. nblock-1] holds block + All other areas of block32 destroyed + ftab [0 .. 65536 ] destroyed + ptr [0 .. nblock-1] holds sorted order + if (*budget < 0), sorting was abandoned +*/ + +#define BIGFREQ(b) (ftab[((b)+1) << 8] - ftab[(b) << 8]) +#define SETMASK (1 << 21) +#define CLEARMASK (~(SETMASK)) + +static +void mainSort ( UInt32* ptr, + UChar* block, + UInt16* quadrant, + UInt32* ftab, + Int32 nblock, + Int32 verb, + Int32* budget ) +{ + Int32 i, j, k, ss, sb; + Int32 runningOrder[256]; + Bool bigDone[256]; + Int32 copyStart[256]; + Int32 copyEnd [256]; + UChar c1; + Int32 numQSorted; + UInt16 s; + if (verb >= 4) VPrintf0 ( " main sort initialise ...\n" ); + + /*-- set up the 2-byte frequency table --*/ + for (i = 65536; i >= 0; i--) ftab[i] = 0; + + j = block[0] << 8; + i = nblock-1; + for (; i >= 3; i -= 4) { + quadrant[i] = 0; + j = (j >> 8) | ( ((UInt16)block[i]) << 8); + ftab[j]++; + quadrant[i-1] = 0; + j = (j >> 8) | ( ((UInt16)block[i-1]) << 8); + ftab[j]++; + quadrant[i-2] = 0; + j = (j >> 8) | ( ((UInt16)block[i-2]) << 8); + ftab[j]++; + quadrant[i-3] = 0; + j = (j >> 8) | ( ((UInt16)block[i-3]) << 8); + ftab[j]++; + } + for (; i >= 0; i--) { + quadrant[i] = 0; + j = (j >> 8) | ( ((UInt16)block[i]) << 8); + ftab[j]++; + } + + /*-- (emphasises close relationship of block & quadrant) --*/ + for (i = 0; i < BZ_N_OVERSHOOT; i++) { + block [nblock+i] = block[i]; + quadrant[nblock+i] = 0; + } + + if (verb >= 4) VPrintf0 ( " bucket sorting ...\n" ); + + /*-- Complete the initial radix sort --*/ + for (i = 1; i <= 65536; i++) ftab[i] += ftab[i-1]; + + s = block[0] << 8; + i = nblock-1; + for (; i >= 3; i -= 4) { + s = (s >> 8) | (block[i] << 8); + j = ftab[s] -1; + ftab[s] = j; + ptr[j] = i; + s = (s >> 8) | (block[i-1] << 8); + j = ftab[s] -1; + ftab[s] = j; + ptr[j] = i-1; + s = (s >> 8) | (block[i-2] << 8); + j = ftab[s] -1; + ftab[s] = j; + ptr[j] = i-2; + s = (s >> 8) | (block[i-3] << 8); + j = ftab[s] -1; + ftab[s] = j; + ptr[j] = i-3; + } + for (; i >= 0; i--) { + s = (s >> 8) | (block[i] << 8); + j = ftab[s] -1; + ftab[s] = j; + ptr[j] = i; + } + + /*-- + Now ftab contains the first loc of every small bucket. + Calculate the running order, from smallest to largest + big bucket. + --*/ + for (i = 0; i <= 255; i++) { + bigDone [i] = False; + runningOrder[i] = i; + } + + { + Int32 vv; + Int32 h = 1; + do h = 3 * h + 1; while (h <= 256); + do { + h = h / 3; + for (i = h; i <= 255; i++) { + vv = runningOrder[i]; + j = i; + while ( BIGFREQ(runningOrder[j-h]) > BIGFREQ(vv) ) { + runningOrder[j] = runningOrder[j-h]; + j = j - h; + if (j <= (h - 1)) goto zero; + } + zero: + runningOrder[j] = vv; + } + } while (h != 1); + } + + /*-- + The main sorting loop. + --*/ + + numQSorted = 0; + + for (i = 0; i <= 255; i++) { + + /*-- + Process big buckets, starting with the least full. + Basically this is a 3-step process in which we call + mainQSort3 to sort the small buckets [ss, j], but + also make a big effort to avoid the calls if we can. + --*/ + ss = runningOrder[i]; + + /*-- + Step 1: + Complete the big bucket [ss] by quicksorting + any unsorted small buckets [ss, j], for j != ss. + Hopefully previous pointer-scanning phases have already + completed many of the small buckets [ss, j], so + we don't have to sort them at all. + --*/ + for (j = 0; j <= 255; j++) { + if (j != ss) { + sb = (ss << 8) + j; + if ( ! (ftab[sb] & SETMASK) ) { + Int32 lo = ftab[sb] & CLEARMASK; + Int32 hi = (ftab[sb+1] & CLEARMASK) - 1; + if (hi > lo) { + if (verb >= 4) + VPrintf4 ( " qsort [0x%x, 0x%x] " + "done %d this %d\n", + ss, j, numQSorted, hi - lo + 1 ); + mainQSort3 ( + ptr, block, quadrant, nblock, + lo, hi, BZ_N_RADIX, budget + ); + numQSorted += (hi - lo + 1); + if (*budget < 0) return; + } + } + ftab[sb] |= SETMASK; + } + } + + AssertH ( !bigDone[ss], 1006 ); + + /*-- + Step 2: + Now scan this big bucket [ss] so as to synthesise the + sorted order for small buckets [t, ss] for all t, + including, magically, the bucket [ss,ss] too. + This will avoid doing Real Work in subsequent Step 1's. + --*/ + { + for (j = 0; j <= 255; j++) { + copyStart[j] = ftab[(j << 8) + ss] & CLEARMASK; + copyEnd [j] = (ftab[(j << 8) + ss + 1] & CLEARMASK) - 1; + } + for (j = ftab[ss << 8] & CLEARMASK; j < copyStart[ss]; j++) { + k = ptr[j]-1; if (k < 0) k += nblock; + c1 = block[k]; + if (!bigDone[c1]) + ptr[ copyStart[c1]++ ] = k; + } + for (j = (ftab[(ss+1) << 8] & CLEARMASK) - 1; j > copyEnd[ss]; j--) { + k = ptr[j]-1; if (k < 0) k += nblock; + c1 = block[k]; + if (!bigDone[c1]) + ptr[ copyEnd[c1]-- ] = k; + } + } + + AssertH ( (copyStart[ss]-1 == copyEnd[ss]) + || + /* Extremely rare case missing in bzip2-1.0.0 and 1.0.1. + Necessity for this case is demonstrated by compressing + a sequence of approximately 48.5 million of character + 251; 1.0.0/1.0.1 will then die here. */ + (copyStart[ss] == 0 && copyEnd[ss] == nblock-1), + 1007 ) + + for (j = 0; j <= 255; j++) ftab[(j << 8) + ss] |= SETMASK; + + /*-- + Step 3: + The [ss] big bucket is now done. Record this fact, + and update the quadrant descriptors. Remember to + update quadrants in the overshoot area too, if + necessary. The "if (i < 255)" test merely skips + this updating for the last bucket processed, since + updating for the last bucket is pointless. + + The quadrant array provides a way to incrementally + cache sort orderings, as they appear, so as to + make subsequent comparisons in fullGtU() complete + faster. For repetitive blocks this makes a big + difference (but not big enough to be able to avoid + the fallback sorting mechanism, exponential radix sort). + + The precise meaning is: at all times: + + for 0 <= i < nblock and 0 <= j <= nblock + + if block[i] != block[j], + + then the relative values of quadrant[i] and + quadrant[j] are meaningless. + + else { + if quadrant[i] < quadrant[j] + then the string starting at i lexicographically + precedes the string starting at j + + else if quadrant[i] > quadrant[j] + then the string starting at j lexicographically + precedes the string starting at i + + else + the relative ordering of the strings starting + at i and j has not yet been determined. + } + --*/ + bigDone[ss] = True; + + if (i < 255) { + Int32 bbStart = ftab[ss << 8] & CLEARMASK; + Int32 bbSize = (ftab[(ss+1) << 8] & CLEARMASK) - bbStart; + Int32 shifts = 0; + + while ((bbSize >> shifts) > 65534) shifts++; + + for (j = bbSize-1; j >= 0; j--) { + Int32 a2update = ptr[bbStart + j]; + UInt16 qVal = (UInt16)(j >> shifts); + quadrant[a2update] = qVal; + if (a2update < BZ_N_OVERSHOOT) + quadrant[a2update + nblock] = qVal; + } + AssertH ( ((bbSize-1) >> shifts) <= 65535, 1002 ); + } + + } + + if (verb >= 4) + VPrintf3 ( " %d pointers, %d sorted, %d scanned\n", + nblock, numQSorted, nblock - numQSorted ); +} + +#undef BIGFREQ +#undef SETMASK +#undef CLEARMASK + + +/*---------------------------------------------*/ +/* Pre: + nblock > 0 + arr2 exists for [0 .. nblock-1 +N_OVERSHOOT] + ((UChar*)arr2) [0 .. nblock-1] holds block + arr1 exists for [0 .. nblock-1] + + Post: + ((UChar*)arr2) [0 .. nblock-1] holds block + All other areas of block destroyed + ftab [ 0 .. 65536 ] destroyed + arr1 [0 .. nblock-1] holds sorted order +*/ +void BZ2_blockSort ( EState* s ) +{ + UInt32* ptr = s->ptr; + UChar* block = s->block; + UInt32* ftab = s->ftab; + Int32 nblock = s->nblock; + Int32 verb = s->verbosity; + Int32 wfact = s->workFactor; + UInt16* quadrant; + Int32 budget; + Int32 budgetInit; + Int32 i; + + if (nblock < 10000) { + fallbackSort ( s->arr1, s->arr2, ftab, nblock, verb ); + } else { + /* Calculate the location for quadrant, remembering to get + the alignment right. Assumes that &(block[0]) is at least + 2-byte aligned -- this should be ok since block is really + the first section of arr2. + */ + i = nblock+BZ_N_OVERSHOOT; + if (i & 1) i++; + quadrant = (UInt16*)(&(block[i])); + + /* (wfact-1) / 3 puts the default-factor-30 + transition point at very roughly the same place as + with v0.1 and v0.9.0. + Not that it particularly matters any more, since the + resulting compressed stream is now the same regardless + of whether or not we use the main sort or fallback sort. + */ + if (wfact < 1 ) wfact = 1; + if (wfact > 100) wfact = 100; + budgetInit = nblock * ((wfact-1) / 3); + budget = budgetInit; + + mainSort ( ptr, block, quadrant, ftab, nblock, verb, &budget ); + if (verb >= 3) + VPrintf3 ( " %d work, %d block, ratio %5.2f\n", + budgetInit - budget, + nblock, + (float)(budgetInit - budget) / + (float)(nblock==0 ? 1 : nblock) ); + if (budget < 0) { + if (verb >= 2) + VPrintf0 ( " too repetitive; using fallback" + " sorting algorithm\n" ); + fallbackSort ( s->arr1, s->arr2, ftab, nblock, verb ); + } + } + + s->origPtr = -1; + for (i = 0; i < s->nblock; i++) + if (ptr[i] == 0) + { s->origPtr = i; break; }; + + AssertH( s->origPtr != -1, 1003 ); +} + + +/*-------------------------------------------------------------*/ +/*--- end blocksort.c ---*/ +/*-------------------------------------------------------------*/ diff --git a/examples/graph/fgbzip2/bzlib.cpp b/examples/graph/fgbzip2/bzlib.cpp new file mode 100644 index 0000000000..a80426c456 --- /dev/null +++ b/examples/graph/fgbzip2/bzlib.cpp @@ -0,0 +1,1624 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +/*-------------------------------------------------------------*/ +/*--- Library top-level functions. ---*/ +/*--- bzlib.cpp ---*/ +/*-------------------------------------------------------------*/ + +/* ------------------------------------------------------------------ + The original source for this example: + This file is part of bzip2/libbzip2, a program and library for + lossless, block-sorting data compression. + + bzip2/libbzip2 version 1.0.6 of 6 September 2010 + Copyright (C) 1996-2010 Julian Seward + + This program, "bzip2", the associated library "libbzip2", and all + documentation, are copyright (C) 1996-2010 Julian R Seward. All + rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Julian Seward, jseward@bzip.org + bzip2/libbzip2 version 1.0.6 of 6 September 2010 + ------------------------------------------------------------------ */ + +/* CHANGES + 0.9.0 -- original version. + 0.9.0a/b -- no changes in this file. + 0.9.0c -- made zero-length BZ_FLUSH work correctly in bzCompress(). + fixed bzWrite/bzRead to ignore zero-length requests. + fixed bzread to correctly handle read requests after EOF. + wrong parameter order in call to bzDecompressInit in + bzBuffToBuffDecompress. Fixed. +*/ + +#include "bzlib_private.h" + + +/*---------------------------------------------------*/ +/*--- Compression stuff ---*/ +/*---------------------------------------------------*/ + + +/*---------------------------------------------------*/ +#ifndef BZ_NO_STDIO +void BZ2_bz__AssertH__fail ( int errcode ) +{ + fprintf(stderr, + "\n\nbzip2/libbzip2: internal error number %d.\n" + "This is a bug in bzip2/libbzip2, %s.\n" + "Please report it to me at: jseward@bzip.org. If this happened\n" + "when you were using some program which uses libbzip2 as a\n" + "component, you should also report this bug to the author(s)\n" + "of that program. Please make an effort to report this bug;\n" + "timely and accurate bug reports eventually lead to higher\n" + "quality software. Thanks. Julian Seward, 10 December 2007.\n\n", + errcode, + BZ2_bzlibVersion() + ); + + if (errcode == 1007) { + fprintf(stderr, + "\n*** A special note about internal error number 1007 ***\n" + "\n" + "Experience suggests that a common cause of i.e. 1007\n" + "is unreliable memory or other hardware. The 1007 assertion\n" + "just happens to cross-check the results of huge numbers of\n" + "memory reads/writes, and so acts (unintendedly) as a stress\n" + "test of your memory system.\n" + "\n" + "I suggest the following: try compressing the file again,\n" + "possibly monitoring progress in detail with the -vv flag.\n" + "\n" + "* If the error cannot be reproduced, and/or happens at different\n" + " points in compression, you may have a flaky memory system.\n" + " Try a memory-test program. I have used Memtest86\n" + " (www.memtest86.com). At the time of writing it is free (GPLd).\n" + " Memtest86 tests memory much more thorougly than your BIOSs\n" + " power-on test, and may find failures that the BIOS doesn't.\n" + "\n" + "* If the error can be repeatably reproduced, this is a bug in\n" + " bzip2, and I would very much like to hear about it. Please\n" + " let me know, and, ideally, save a copy of the file causing the\n" + " problem -- without which I will be unable to investigate it.\n" + "\n" + ); + } + + exit(3); +} +#endif + + +/*---------------------------------------------------*/ +static +int bz_config_ok ( void ) +{ + if (sizeof(int) != 4) return 0; + if (sizeof(short) != 2) return 0; + if (sizeof(char) != 1) return 0; + return 1; +} + + +/*---------------------------------------------------*/ +static +void* default_bzalloc ( void* opaque, Int32 items, Int32 size ) +{ + void* v = malloc ( items * size ); + return v; +} + +static +void default_bzfree ( void* opaque, void* addr ) +{ + if (addr != NULL) free ( addr ); +} + + +/*---------------------------------------------------*/ +static +void prepare_new_block ( EState* s ) +{ + Int32 i; + s->nblock = 0; + s->numZ = 0; + s->state_out_pos = 0; + BZ_INITIALISE_CRC ( s->blockCRC ); + for (i = 0; i < 256; i++) s->inUse[i] = False; + s->blockNo++; +} + + +/*---------------------------------------------------*/ +static +void init_RL ( EState* s ) +{ + s->state_in_ch = 256; + s->state_in_len = 0; +} + + +static +Bool isempty_RL ( EState* s ) +{ + if (s->state_in_ch < 256 && s->state_in_len > 0) + return False; else + return True; +} + + +/*---------------------------------------------------*/ +int BZ_API(BZ2_bzCompressInit) + ( bz_stream* strm, + int blockSize100k, + int verbosity, + int workFactor ) +{ + Int32 n; + EState* s; + + if (!bz_config_ok()) return BZ_CONFIG_ERROR; + + if (strm == NULL || + blockSize100k < 1 || blockSize100k > 9 || + workFactor < 0 || workFactor > 250) + return BZ_PARAM_ERROR; + + if (workFactor == 0) workFactor = 30; + if (strm->bzalloc == NULL) strm->bzalloc = default_bzalloc; + if (strm->bzfree == NULL) strm->bzfree = default_bzfree; + + s = (EState*)BZALLOC( sizeof(EState) ); + if (s == NULL) return BZ_MEM_ERROR; + s->strm = strm; + + s->arr1 = NULL; + s->arr2 = NULL; + s->ftab = NULL; + + n = 100000 * blockSize100k; + s->arr1 = (UInt32*)BZALLOC( n * sizeof(UInt32) ); + s->arr2 = (UInt32*)BZALLOC( (n+BZ_N_OVERSHOOT) * sizeof(UInt32) ); + s->ftab = (UInt32*)BZALLOC( 65537 * sizeof(UInt32) ); + + if (s->arr1 == NULL || s->arr2 == NULL || s->ftab == NULL) { + if (s->arr1 != NULL) BZFREE(s->arr1); + if (s->arr2 != NULL) BZFREE(s->arr2); + if (s->ftab != NULL) BZFREE(s->ftab); + if (s != NULL) BZFREE(s); + return BZ_MEM_ERROR; + } + + s->blockNo = 0; + s->state = BZ_S_INPUT; + s->mode = BZ_M_RUNNING; + s->combinedCRC = 0; + s->blockSize100k = blockSize100k; + s->nblockMAX = 100000 * blockSize100k - 19; + s->verbosity = verbosity; + s->workFactor = workFactor; + + s->block = (UChar*)s->arr2; + s->mtfv = (UInt16*)s->arr1; + s->zbits = NULL; + s->ptr = (UInt32*)s->arr1; + + strm->state = s; + strm->total_in_lo32 = 0; + strm->total_in_hi32 = 0; + strm->total_out_lo32 = 0; + strm->total_out_hi32 = 0; + init_RL ( s ); + prepare_new_block ( s ); + return BZ_OK; +} + + +/*---------------------------------------------------*/ +static +void add_pair_to_block ( EState* s ) +{ + Int32 i; + UChar ch = (UChar)(s->state_in_ch); + for (i = 0; i < s->state_in_len; i++) { + BZ_UPDATE_CRC( s->blockCRC, ch ); + } + s->inUse[s->state_in_ch] = True; + switch (s->state_in_len) { + case 1: + s->block[s->nblock] = (UChar)ch; s->nblock++; + break; + case 2: + s->block[s->nblock] = (UChar)ch; s->nblock++; + s->block[s->nblock] = (UChar)ch; s->nblock++; + break; + case 3: + s->block[s->nblock] = (UChar)ch; s->nblock++; + s->block[s->nblock] = (UChar)ch; s->nblock++; + s->block[s->nblock] = (UChar)ch; s->nblock++; + break; + default: + s->inUse[s->state_in_len-4] = True; + s->block[s->nblock] = (UChar)ch; s->nblock++; + s->block[s->nblock] = (UChar)ch; s->nblock++; + s->block[s->nblock] = (UChar)ch; s->nblock++; + s->block[s->nblock] = (UChar)ch; s->nblock++; + s->block[s->nblock] = ((UChar)(s->state_in_len-4)); + s->nblock++; + break; + } +} + + +/*---------------------------------------------------*/ +static +void flush_RL ( EState* s ) +{ + if (s->state_in_ch < 256) add_pair_to_block ( s ); + init_RL ( s ); +} + + +/*---------------------------------------------------*/ +#define ADD_CHAR_TO_BLOCK(zs,zchh0) \ +{ \ + UInt32 zchh = (UInt32)(zchh0); \ + /*-- fast track the common case --*/ \ + if (zchh != zs->state_in_ch && \ + zs->state_in_len == 1) { \ + UChar ch = (UChar)(zs->state_in_ch); \ + BZ_UPDATE_CRC( zs->blockCRC, ch ); \ + zs->inUse[zs->state_in_ch] = True; \ + zs->block[zs->nblock] = (UChar)ch; \ + zs->nblock++; \ + zs->state_in_ch = zchh; \ + } \ + else \ + /*-- general, uncommon cases --*/ \ + if (zchh != zs->state_in_ch || \ + zs->state_in_len == 255) { \ + if (zs->state_in_ch < 256) \ + add_pair_to_block ( zs ); \ + zs->state_in_ch = zchh; \ + zs->state_in_len = 1; \ + } else { \ + zs->state_in_len++; \ + } \ +} + + +/*---------------------------------------------------*/ +static +Bool copy_input_until_stop ( EState* s ) +{ + Bool progress_in = False; + + if (s->mode == BZ_M_RUNNING) { + + /*-- fast track the common case --*/ + while (True) { + /*-- block full? --*/ + if (s->nblock >= s->nblockMAX) break; + /*-- no input? --*/ + if (s->strm->avail_in == 0) break; + progress_in = True; + ADD_CHAR_TO_BLOCK ( s, (UInt32)(*((UChar*)(s->strm->next_in))) ); + s->strm->next_in++; + s->strm->avail_in--; + s->strm->total_in_lo32++; + if (s->strm->total_in_lo32 == 0) s->strm->total_in_hi32++; + } + + } else { + + /*-- general, uncommon case --*/ + while (True) { + /*-- block full? --*/ + if (s->nblock >= s->nblockMAX) break; + /*-- no input? --*/ + if (s->strm->avail_in == 0) break; + /*-- flush/finish end? --*/ + if (s->avail_in_expect == 0) break; + progress_in = True; + ADD_CHAR_TO_BLOCK ( s, (UInt32)(*((UChar*)(s->strm->next_in))) ); + s->strm->next_in++; + s->strm->avail_in--; + s->strm->total_in_lo32++; + if (s->strm->total_in_lo32 == 0) s->strm->total_in_hi32++; + s->avail_in_expect--; + } + } + return progress_in; +} + + +/*---------------------------------------------------*/ +static +Bool copy_output_until_stop ( EState* s ) +{ + Bool progress_out = False; + + while (True) { + + /*-- no output space? --*/ + if (s->strm->avail_out == 0) break; + + /*-- block done? --*/ + if (s->state_out_pos >= s->numZ) break; + + progress_out = True; + *(s->strm->next_out) = s->zbits[s->state_out_pos]; + s->state_out_pos++; + s->strm->avail_out--; + s->strm->next_out++; + s->strm->total_out_lo32++; + if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++; + } + + return progress_out; +} + + +/*---------------------------------------------------*/ +static +Bool handle_compress ( bz_stream* strm ) +{ + Bool progress_in = False; + Bool progress_out = False; + EState* s = (EState*)strm->state; + + while (True) { + + if (s->state == BZ_S_OUTPUT) { + progress_out |= copy_output_until_stop ( s ); + if (s->state_out_pos < s->numZ) break; + if (s->mode == BZ_M_FINISHING && + s->avail_in_expect == 0 && + isempty_RL(s)) break; + prepare_new_block ( s ); + s->state = BZ_S_INPUT; + if (s->mode == BZ_M_FLUSHING && + s->avail_in_expect == 0 && + isempty_RL(s)) break; + } + + if (s->state == BZ_S_INPUT) { + progress_in |= copy_input_until_stop ( s ); + if (s->mode != BZ_M_RUNNING && s->avail_in_expect == 0) { + flush_RL ( s ); + BZ2_compressBlock ( s, (Bool)(s->mode == BZ_M_FINISHING) ); + s->state = BZ_S_OUTPUT; + } + else + if (s->nblock >= s->nblockMAX) { + BZ2_compressBlock ( s, False ); + s->state = BZ_S_OUTPUT; + } + else + if (s->strm->avail_in == 0) { + break; + } + } + + } + + return progress_in || progress_out; +} + + +/*---------------------------------------------------*/ +int BZ_API(BZ2_bzCompress) ( bz_stream *strm, int action ) +{ + Bool progress; + EState* s; + if (strm == NULL) return BZ_PARAM_ERROR; + s = (EState*)strm->state; + if (s == NULL) return BZ_PARAM_ERROR; + if (s->strm != strm) return BZ_PARAM_ERROR; + + preswitch: + switch (s->mode) { + + case BZ_M_IDLE: + return BZ_SEQUENCE_ERROR; + + case BZ_M_RUNNING: + if (action == BZ_RUN) { + progress = handle_compress ( strm ); + return progress ? BZ_RUN_OK : BZ_PARAM_ERROR; + } + else + if (action == BZ_FLUSH) { + s->avail_in_expect = strm->avail_in; + s->mode = BZ_M_FLUSHING; + goto preswitch; + } + else + if (action == BZ_FINISH) { + s->avail_in_expect = strm->avail_in; + s->mode = BZ_M_FINISHING; + goto preswitch; + } + else + return BZ_PARAM_ERROR; + + case BZ_M_FLUSHING: + if (action != BZ_FLUSH) return BZ_SEQUENCE_ERROR; + if (s->avail_in_expect != s->strm->avail_in) + return BZ_SEQUENCE_ERROR; + progress = handle_compress ( strm ); + if (s->avail_in_expect > 0 || !isempty_RL(s) || + s->state_out_pos < s->numZ) return BZ_FLUSH_OK; + s->mode = BZ_M_RUNNING; + return BZ_RUN_OK; + + case BZ_M_FINISHING: + if (action != BZ_FINISH) return BZ_SEQUENCE_ERROR; + if (s->avail_in_expect != s->strm->avail_in) + return BZ_SEQUENCE_ERROR; + progress = handle_compress ( strm ); + if (!progress) return BZ_SEQUENCE_ERROR; + if (s->avail_in_expect > 0 || !isempty_RL(s) || + s->state_out_pos < s->numZ) return BZ_FINISH_OK; + s->mode = BZ_M_IDLE; + return BZ_STREAM_END; + } + return BZ_OK; /*--not reached--*/ +} + + +/*---------------------------------------------------*/ +int BZ_API(BZ2_bzCompressEnd) ( bz_stream *strm ) +{ + EState* s; + if (strm == NULL) return BZ_PARAM_ERROR; + s = (EState*)strm->state; + if (s == NULL) return BZ_PARAM_ERROR; + if (s->strm != strm) return BZ_PARAM_ERROR; + + if (s->arr1 != NULL) BZFREE(s->arr1); + if (s->arr2 != NULL) BZFREE(s->arr2); + if (s->ftab != NULL) BZFREE(s->ftab); + BZFREE(strm->state); + + strm->state = NULL; + + return BZ_OK; +} + + +/*---------------------------------------------------*/ +/*--- Decompression stuff ---*/ +/*---------------------------------------------------*/ + +/*---------------------------------------------------*/ +int BZ_API(BZ2_bzDecompressInit) + ( bz_stream* strm, + int verbosity, + int small ) +{ + DState* s; + + if (!bz_config_ok()) return BZ_CONFIG_ERROR; + + if (strm == NULL) return BZ_PARAM_ERROR; + if (small != 0 && small != 1) return BZ_PARAM_ERROR; + if (verbosity < 0 || verbosity > 4) return BZ_PARAM_ERROR; + + if (strm->bzalloc == NULL) strm->bzalloc = default_bzalloc; + if (strm->bzfree == NULL) strm->bzfree = default_bzfree; + + s = (DState*)BZALLOC( sizeof(DState) ); + if (s == NULL) return BZ_MEM_ERROR; + s->strm = strm; + strm->state = s; + s->state = BZ_X_MAGIC_1; + s->bsLive = 0; + s->bsBuff = 0; + s->calculatedCombinedCRC = 0; + strm->total_in_lo32 = 0; + strm->total_in_hi32 = 0; + strm->total_out_lo32 = 0; + strm->total_out_hi32 = 0; + s->smallDecompress = (Bool)small; + s->ll4 = NULL; + s->ll16 = NULL; + s->tt = NULL; + s->currBlockNo = 0; + s->verbosity = verbosity; + + return BZ_OK; +} + + +/*---------------------------------------------------*/ +/* Return True iff data corruption is discovered. + Returns False if there is no problem. +*/ +static +Bool unRLE_obuf_to_output_FAST ( DState* s ) +{ + UChar k1; + + if (s->blockRandomised) { + + while (True) { + /* try to finish existing run */ + while (True) { + if (s->strm->avail_out == 0) return False; + if (s->state_out_len == 0) break; + *( (UChar*)(s->strm->next_out) ) = s->state_out_ch; + BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch ); + s->state_out_len--; + s->strm->next_out++; + s->strm->avail_out--; + s->strm->total_out_lo32++; + if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++; + } + + /* can a new run be started? */ + if (s->nblock_used == s->save_nblock+1) return False; + + /* Only caused by corrupt data stream? */ + if (s->nblock_used > s->save_nblock+1) + return True; + + s->state_out_len = 1; + s->state_out_ch = s->k0; + BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; + k1 ^= BZ_RAND_MASK; s->nblock_used++; + if (s->nblock_used == s->save_nblock+1) continue; + if (k1 != s->k0) { s->k0 = k1; continue; }; + + s->state_out_len = 2; + BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; + k1 ^= BZ_RAND_MASK; s->nblock_used++; + if (s->nblock_used == s->save_nblock+1) continue; + if (k1 != s->k0) { s->k0 = k1; continue; }; + + s->state_out_len = 3; + BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; + k1 ^= BZ_RAND_MASK; s->nblock_used++; + if (s->nblock_used == s->save_nblock+1) continue; + if (k1 != s->k0) { s->k0 = k1; continue; }; + + BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; + k1 ^= BZ_RAND_MASK; s->nblock_used++; + s->state_out_len = ((Int32)k1) + 4; + BZ_GET_FAST(s->k0); BZ_RAND_UPD_MASK; + s->k0 ^= BZ_RAND_MASK; s->nblock_used++; + } + + } else { + + /* restore */ + UInt32 c_calculatedBlockCRC = s->calculatedBlockCRC; + UChar c_state_out_ch = s->state_out_ch; + Int32 c_state_out_len = s->state_out_len; + Int32 c_nblock_used = s->nblock_used; + Int32 c_k0 = s->k0; + UInt32* c_tt = s->tt; + UInt32 c_tPos = s->tPos; + char* cs_next_out = s->strm->next_out; + unsigned int cs_avail_out = s->strm->avail_out; + Int32 ro_blockSize100k = s->blockSize100k; + /* end restore */ + + UInt32 avail_out_INIT = cs_avail_out; + Int32 s_save_nblockPP = s->save_nblock+1; + unsigned int total_out_lo32_old; + + while (True) { + + /* try to finish existing run */ + if (c_state_out_len > 0) { + while (True) { + if (cs_avail_out == 0) goto return_notr; + if (c_state_out_len == 1) break; + *( (UChar*)(cs_next_out) ) = c_state_out_ch; + BZ_UPDATE_CRC ( c_calculatedBlockCRC, c_state_out_ch ); + c_state_out_len--; + cs_next_out++; + cs_avail_out--; + } + s_state_out_len_eq_one: + { + if (cs_avail_out == 0) { + c_state_out_len = 1; goto return_notr; + }; + *( (UChar*)(cs_next_out) ) = c_state_out_ch; + BZ_UPDATE_CRC ( c_calculatedBlockCRC, c_state_out_ch ); + cs_next_out++; + cs_avail_out--; + } + } + /* Only caused by corrupt data stream? */ + if (c_nblock_used > s_save_nblockPP) + return True; + + /* can a new run be started? */ + if (c_nblock_used == s_save_nblockPP) { + c_state_out_len = 0; goto return_notr; + }; + c_state_out_ch = c_k0; + BZ_GET_FAST_C(k1); c_nblock_used++; + if (k1 != c_k0) { + c_k0 = k1; goto s_state_out_len_eq_one; + }; + if (c_nblock_used == s_save_nblockPP) + goto s_state_out_len_eq_one; + + c_state_out_len = 2; + BZ_GET_FAST_C(k1); c_nblock_used++; + if (c_nblock_used == s_save_nblockPP) continue; + if (k1 != c_k0) { c_k0 = k1; continue; }; + + c_state_out_len = 3; + BZ_GET_FAST_C(k1); c_nblock_used++; + if (c_nblock_used == s_save_nblockPP) continue; + if (k1 != c_k0) { c_k0 = k1; continue; }; + + BZ_GET_FAST_C(k1); c_nblock_used++; + c_state_out_len = ((Int32)k1) + 4; + BZ_GET_FAST_C(c_k0); c_nblock_used++; + } + + return_notr: + total_out_lo32_old = s->strm->total_out_lo32; + s->strm->total_out_lo32 += (avail_out_INIT - cs_avail_out); + if (s->strm->total_out_lo32 < total_out_lo32_old) + s->strm->total_out_hi32++; + + /* save */ + s->calculatedBlockCRC = c_calculatedBlockCRC; + s->state_out_ch = c_state_out_ch; + s->state_out_len = c_state_out_len; + s->nblock_used = c_nblock_used; + s->k0 = c_k0; + s->tt = c_tt; + s->tPos = c_tPos; + s->strm->next_out = cs_next_out; + s->strm->avail_out = cs_avail_out; + /* end save */ + } + return False; +} + + + +/*---------------------------------------------------*/ +Int32 BZ2_indexIntoF ( Int32 indx, Int32 *cftab ) +{ + Int32 nb, na, mid; + nb = 0; + na = 256; + do { + mid = (nb + na) >> 1; + if (indx >= cftab[mid]) nb = mid; else na = mid; + } + while (na - nb != 1); + return nb; +} + + +/*---------------------------------------------------*/ +/* Return True iff data corruption is discovered. + Returns False if there is no problem. +*/ +static +Bool unRLE_obuf_to_output_SMALL ( DState* s ) +{ + UChar k1; + + if (s->blockRandomised) { + + while (True) { + /* try to finish existing run */ + while (True) { + if (s->strm->avail_out == 0) return False; + if (s->state_out_len == 0) break; + *( (UChar*)(s->strm->next_out) ) = s->state_out_ch; + BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch ); + s->state_out_len--; + s->strm->next_out++; + s->strm->avail_out--; + s->strm->total_out_lo32++; + if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++; + } + + /* can a new run be started? */ + if (s->nblock_used == s->save_nblock+1) return False; + + /* Only caused by corrupt data stream? */ + if (s->nblock_used > s->save_nblock+1) + return True; + + s->state_out_len = 1; + s->state_out_ch = s->k0; + BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; + k1 ^= BZ_RAND_MASK; s->nblock_used++; + if (s->nblock_used == s->save_nblock+1) continue; + if (k1 != s->k0) { s->k0 = k1; continue; }; + + s->state_out_len = 2; + BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; + k1 ^= BZ_RAND_MASK; s->nblock_used++; + if (s->nblock_used == s->save_nblock+1) continue; + if (k1 != s->k0) { s->k0 = k1; continue; }; + + s->state_out_len = 3; + BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; + k1 ^= BZ_RAND_MASK; s->nblock_used++; + if (s->nblock_used == s->save_nblock+1) continue; + if (k1 != s->k0) { s->k0 = k1; continue; }; + + BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; + k1 ^= BZ_RAND_MASK; s->nblock_used++; + s->state_out_len = ((Int32)k1) + 4; + BZ_GET_SMALL(s->k0); BZ_RAND_UPD_MASK; + s->k0 ^= BZ_RAND_MASK; s->nblock_used++; + } + + } else { + + while (True) { + /* try to finish existing run */ + while (True) { + if (s->strm->avail_out == 0) return False; + if (s->state_out_len == 0) break; + *( (UChar*)(s->strm->next_out) ) = s->state_out_ch; + BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch ); + s->state_out_len--; + s->strm->next_out++; + s->strm->avail_out--; + s->strm->total_out_lo32++; + if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++; + } + + /* can a new run be started? */ + if (s->nblock_used == s->save_nblock+1) return False; + + /* Only caused by corrupt data stream? */ + if (s->nblock_used > s->save_nblock+1) + return True; + + s->state_out_len = 1; + s->state_out_ch = s->k0; + BZ_GET_SMALL(k1); s->nblock_used++; + if (s->nblock_used == s->save_nblock+1) continue; + if (k1 != s->k0) { s->k0 = k1; continue; }; + + s->state_out_len = 2; + BZ_GET_SMALL(k1); s->nblock_used++; + if (s->nblock_used == s->save_nblock+1) continue; + if (k1 != s->k0) { s->k0 = k1; continue; }; + + s->state_out_len = 3; + BZ_GET_SMALL(k1); s->nblock_used++; + if (s->nblock_used == s->save_nblock+1) continue; + if (k1 != s->k0) { s->k0 = k1; continue; }; + + BZ_GET_SMALL(k1); s->nblock_used++; + s->state_out_len = ((Int32)k1) + 4; + BZ_GET_SMALL(s->k0); s->nblock_used++; + } + + } +} + + +/*---------------------------------------------------*/ +int BZ_API(BZ2_bzDecompress) ( bz_stream *strm ) +{ + Bool corrupt; + DState* s; + if (strm == NULL) return BZ_PARAM_ERROR; + s = (DState*)strm->state; + if (s == NULL) return BZ_PARAM_ERROR; + if (s->strm != strm) return BZ_PARAM_ERROR; + + while (True) { + if (s->state == BZ_X_IDLE) return BZ_SEQUENCE_ERROR; + if (s->state == BZ_X_OUTPUT) { + if (s->smallDecompress) + corrupt = unRLE_obuf_to_output_SMALL ( s ); else + corrupt = unRLE_obuf_to_output_FAST ( s ); + if (corrupt) return BZ_DATA_ERROR; + if (s->nblock_used == s->save_nblock+1 && s->state_out_len == 0) { + BZ_FINALISE_CRC ( s->calculatedBlockCRC ); + if (s->verbosity >= 3) + VPrintf2 ( " {0x%08x, 0x%08x}", s->storedBlockCRC, + s->calculatedBlockCRC ); + if (s->verbosity >= 2) VPrintf0 ( "]" ); + if (s->calculatedBlockCRC != s->storedBlockCRC) + return BZ_DATA_ERROR; + s->calculatedCombinedCRC + = (s->calculatedCombinedCRC << 1) | + (s->calculatedCombinedCRC >> 31); + s->calculatedCombinedCRC ^= s->calculatedBlockCRC; + s->state = BZ_X_BLKHDR_1; + } else { + return BZ_OK; + } + } + if (s->state >= BZ_X_MAGIC_1) { + Int32 r = BZ2_decompress ( s ); + if (r == BZ_STREAM_END) { + if (s->verbosity >= 3) + VPrintf2 ( "\n combined CRCs: stored = 0x%08x, computed = 0x%08x", + s->storedCombinedCRC, s->calculatedCombinedCRC ); + if (s->calculatedCombinedCRC != s->storedCombinedCRC) + return BZ_DATA_ERROR; + return r; + } + if (s->state != BZ_X_OUTPUT) return r; + } + } + + AssertH ( 0, 6001 ); + + return 0; /*NOTREACHED*/ +} + + +/*---------------------------------------------------*/ +int BZ_API(BZ2_bzDecompressEnd) ( bz_stream *strm ) +{ + DState* s; + if (strm == NULL) return BZ_PARAM_ERROR; + s = (DState*)strm->state; + if (s == NULL) return BZ_PARAM_ERROR; + if (s->strm != strm) return BZ_PARAM_ERROR; + + if (s->tt != NULL) BZFREE(s->tt); + if (s->ll16 != NULL) BZFREE(s->ll16); + if (s->ll4 != NULL) BZFREE(s->ll4); + + BZFREE(strm->state); + strm->state = NULL; + + return BZ_OK; +} + + +#ifndef BZ_NO_STDIO +/*---------------------------------------------------*/ +/*--- File I/O stuff ---*/ +/*---------------------------------------------------*/ + +#define BZ_SETERR(eee) \ +{ \ + if (bzerror != NULL) *bzerror = eee; \ + if (bzf != NULL) bzf->lastErr = eee; \ +} + +typedef + struct { + FILE* handle; + Char buf[BZ_MAX_UNUSED]; + Int32 bufN; + Bool writing; + bz_stream strm; + Int32 lastErr; + Bool initialisedOk; + } + bzFile; + + +/*---------------------------------------------*/ +static Bool myfeof ( FILE* f ) +{ + Int32 c = fgetc ( f ); + if (c == EOF) return True; + ungetc ( c, f ); + return False; +} + + +/*---------------------------------------------------*/ +BZFILE* BZ_API(BZ2_bzWriteOpen) + ( int* bzerror, + FILE* f, + int blockSize100k, + int verbosity, + int workFactor ) +{ + Int32 ret; + bzFile* bzf = NULL; + + BZ_SETERR(BZ_OK); + + if (f == NULL || + (blockSize100k < 1 || blockSize100k > 9) || + (workFactor < 0 || workFactor > 250) || + (verbosity < 0 || verbosity > 4)) + { BZ_SETERR(BZ_PARAM_ERROR); return NULL; }; + + if (ferror(f)) + { BZ_SETERR(BZ_IO_ERROR); return NULL; }; + + bzf = (bzFile*)malloc ( sizeof(bzFile) ); + if (bzf == NULL) + { BZ_SETERR(BZ_MEM_ERROR); return NULL; }; + + BZ_SETERR(BZ_OK); + bzf->initialisedOk = False; + bzf->bufN = 0; + bzf->handle = f; + bzf->writing = True; + bzf->strm.bzalloc = NULL; + bzf->strm.bzfree = NULL; + bzf->strm.opaque = NULL; + + if (workFactor == 0) workFactor = 30; + ret = BZ2_bzCompressInit ( &(bzf->strm), blockSize100k, + verbosity, workFactor ); + if (ret != BZ_OK) + { BZ_SETERR(ret); free(bzf); return NULL; }; + + bzf->strm.avail_in = 0; + bzf->initialisedOk = True; + return bzf; +} + + + +/*---------------------------------------------------*/ +void BZ_API(BZ2_bzWrite) + ( int* bzerror, + BZFILE* b, + void* buf, + int len ) +{ + Int32 n, n2, ret; + bzFile* bzf = (bzFile*)b; + + BZ_SETERR(BZ_OK); + if (bzf == NULL || buf == NULL || len < 0) + { BZ_SETERR(BZ_PARAM_ERROR); return; }; + if (!(bzf->writing)) + { BZ_SETERR(BZ_SEQUENCE_ERROR); return; }; + if (ferror(bzf->handle)) + { BZ_SETERR(BZ_IO_ERROR); return; }; + + if (len == 0) + { BZ_SETERR(BZ_OK); return; }; + + bzf->strm.avail_in = len; + bzf->strm.next_in = (char*)buf; + + while (True) { + bzf->strm.avail_out = BZ_MAX_UNUSED; + bzf->strm.next_out = bzf->buf; + ret = BZ2_bzCompress ( &(bzf->strm), BZ_RUN ); + if (ret != BZ_RUN_OK) + { BZ_SETERR(ret); return; }; + + if (bzf->strm.avail_out < BZ_MAX_UNUSED) { + n = BZ_MAX_UNUSED - bzf->strm.avail_out; + n2 = fwrite ( (void*)(bzf->buf), sizeof(UChar), + n, bzf->handle ); + if (n != n2 || ferror(bzf->handle)) + { BZ_SETERR(BZ_IO_ERROR); return; }; + } + + if (bzf->strm.avail_in == 0) + { BZ_SETERR(BZ_OK); return; }; + } +} + + +/*---------------------------------------------------*/ +void BZ_API(BZ2_bzWriteClose) + ( int* bzerror, + BZFILE* b, + int abandon, + unsigned int* nbytes_in, + unsigned int* nbytes_out ) +{ + BZ2_bzWriteClose64 ( bzerror, b, abandon, + nbytes_in, NULL, nbytes_out, NULL ); +} + + +void BZ_API(BZ2_bzWriteClose64) + ( int* bzerror, + BZFILE* b, + int abandon, + unsigned int* nbytes_in_lo32, + unsigned int* nbytes_in_hi32, + unsigned int* nbytes_out_lo32, + unsigned int* nbytes_out_hi32 ) +{ + Int32 n, n2, ret; + bzFile* bzf = (bzFile*)b; + + if (bzf == NULL) + { BZ_SETERR(BZ_OK); return; }; + if (!(bzf->writing)) + { BZ_SETERR(BZ_SEQUENCE_ERROR); return; }; + if (ferror(bzf->handle)) + { BZ_SETERR(BZ_IO_ERROR); return; }; + + if (nbytes_in_lo32 != NULL) *nbytes_in_lo32 = 0; + if (nbytes_in_hi32 != NULL) *nbytes_in_hi32 = 0; + if (nbytes_out_lo32 != NULL) *nbytes_out_lo32 = 0; + if (nbytes_out_hi32 != NULL) *nbytes_out_hi32 = 0; + + if ((!abandon) && bzf->lastErr == BZ_OK) { + while (True) { + bzf->strm.avail_out = BZ_MAX_UNUSED; + bzf->strm.next_out = bzf->buf; + ret = BZ2_bzCompress ( &(bzf->strm), BZ_FINISH ); + if (ret != BZ_FINISH_OK && ret != BZ_STREAM_END) + { BZ_SETERR(ret); return; }; + + if (bzf->strm.avail_out < BZ_MAX_UNUSED) { + n = BZ_MAX_UNUSED - bzf->strm.avail_out; + n2 = fwrite ( (void*)(bzf->buf), sizeof(UChar), + n, bzf->handle ); + if (n != n2 || ferror(bzf->handle)) + { BZ_SETERR(BZ_IO_ERROR); return; }; + } + + if (ret == BZ_STREAM_END) break; + } + } + + if ( !abandon && !ferror ( bzf->handle ) ) { + fflush ( bzf->handle ); + if (ferror(bzf->handle)) + { BZ_SETERR(BZ_IO_ERROR); return; }; + } + + if (nbytes_in_lo32 != NULL) + *nbytes_in_lo32 = bzf->strm.total_in_lo32; + if (nbytes_in_hi32 != NULL) + *nbytes_in_hi32 = bzf->strm.total_in_hi32; + if (nbytes_out_lo32 != NULL) + *nbytes_out_lo32 = bzf->strm.total_out_lo32; + if (nbytes_out_hi32 != NULL) + *nbytes_out_hi32 = bzf->strm.total_out_hi32; + + BZ_SETERR(BZ_OK); + BZ2_bzCompressEnd ( &(bzf->strm) ); + free ( bzf ); +} + + +/*---------------------------------------------------*/ +BZFILE* BZ_API(BZ2_bzReadOpen) + ( int* bzerror, + FILE* f, + int verbosity, + int small, + void* unused, + int nUnused ) +{ + bzFile* bzf = NULL; + int ret; + + BZ_SETERR(BZ_OK); + + if (f == NULL || + (small != 0 && small != 1) || + (verbosity < 0 || verbosity > 4) || + (unused == NULL && nUnused != 0) || + (unused != NULL && (nUnused < 0 || nUnused > BZ_MAX_UNUSED))) + { BZ_SETERR(BZ_PARAM_ERROR); return NULL; }; + + if (ferror(f)) + { BZ_SETERR(BZ_IO_ERROR); return NULL; }; + + bzf = (bzFile*)malloc ( sizeof(bzFile) ); + if (bzf == NULL) + { BZ_SETERR(BZ_MEM_ERROR); return NULL; }; + + BZ_SETERR(BZ_OK); + + bzf->initialisedOk = False; + bzf->handle = f; + bzf->bufN = 0; + bzf->writing = False; + bzf->strm.bzalloc = NULL; + bzf->strm.bzfree = NULL; + bzf->strm.opaque = NULL; + + while (nUnused > 0) { + bzf->buf[bzf->bufN] = *((UChar*)(unused)); bzf->bufN++; + unused = ((void*)( 1 + ((UChar*)(unused)) )); + nUnused--; + } + + ret = BZ2_bzDecompressInit ( &(bzf->strm), verbosity, small ); + if (ret != BZ_OK) + { BZ_SETERR(ret); free(bzf); return NULL; }; + + bzf->strm.avail_in = bzf->bufN; + bzf->strm.next_in = bzf->buf; + + bzf->initialisedOk = True; + return bzf; +} + + +/*---------------------------------------------------*/ +void BZ_API(BZ2_bzReadClose) ( int *bzerror, BZFILE *b ) +{ + bzFile* bzf = (bzFile*)b; + + BZ_SETERR(BZ_OK); + if (bzf == NULL) + { BZ_SETERR(BZ_OK); return; }; + + if (bzf->writing) + { BZ_SETERR(BZ_SEQUENCE_ERROR); return; }; + + if (bzf->initialisedOk) + (void)BZ2_bzDecompressEnd ( &(bzf->strm) ); + free ( bzf ); +} + + +/*---------------------------------------------------*/ +int BZ_API(BZ2_bzRead) + ( int* bzerror, + BZFILE* b, + void* buf, + int len ) +{ + Int32 n, ret; + bzFile* bzf = (bzFile*)b; + + BZ_SETERR(BZ_OK); + + if (bzf == NULL || buf == NULL || len < 0) + { BZ_SETERR(BZ_PARAM_ERROR); return 0; }; + + if (bzf->writing) + { BZ_SETERR(BZ_SEQUENCE_ERROR); return 0; }; + + if (len == 0) + { BZ_SETERR(BZ_OK); return 0; }; + + bzf->strm.avail_out = len; + bzf->strm.next_out = (char*)buf; + + while (True) { + + if (ferror(bzf->handle)) + { BZ_SETERR(BZ_IO_ERROR); return 0; }; + + if (bzf->strm.avail_in == 0 && !myfeof(bzf->handle)) { + n = fread ( bzf->buf, sizeof(UChar), + BZ_MAX_UNUSED, bzf->handle ); + if (ferror(bzf->handle)) + { BZ_SETERR(BZ_IO_ERROR); return 0; }; + bzf->bufN = n; + bzf->strm.avail_in = bzf->bufN; + bzf->strm.next_in = bzf->buf; + } + + ret = BZ2_bzDecompress ( &(bzf->strm) ); + + if (ret != BZ_OK && ret != BZ_STREAM_END) + { BZ_SETERR(ret); return 0; }; + + if (ret == BZ_OK && myfeof(bzf->handle) && + bzf->strm.avail_in == 0 && bzf->strm.avail_out > 0) + { BZ_SETERR(BZ_UNEXPECTED_EOF); return 0; }; + + if (ret == BZ_STREAM_END) + { BZ_SETERR(BZ_STREAM_END); + return len - bzf->strm.avail_out; }; + if (bzf->strm.avail_out == 0) + { BZ_SETERR(BZ_OK); return len; }; + + } + + return 0; /*not reached*/ +} + + +/*---------------------------------------------------*/ +void BZ_API(BZ2_bzReadGetUnused) + ( int* bzerror, + BZFILE* b, + void** unused, + int* nUnused ) +{ + bzFile* bzf = (bzFile*)b; + if (bzf == NULL) + { BZ_SETERR(BZ_PARAM_ERROR); return; }; + if (bzf->lastErr != BZ_STREAM_END) + { BZ_SETERR(BZ_SEQUENCE_ERROR); return; }; + if (unused == NULL || nUnused == NULL) + { BZ_SETERR(BZ_PARAM_ERROR); return; }; + + BZ_SETERR(BZ_OK); + *nUnused = bzf->strm.avail_in; + *unused = bzf->strm.next_in; +} +#endif + + +/*---------------------------------------------------*/ +/*--- Misc convenience stuff ---*/ +/*---------------------------------------------------*/ + +/*---------------------------------------------------*/ +int BZ_API(BZ2_bzBuffToBuffCompress) + ( char* dest, + unsigned int* destLen, + char* source, + unsigned int sourceLen, + int blockSize100k, + int verbosity, + int workFactor ) +{ + bz_stream strm; + int ret; + + if (dest == NULL || destLen == NULL || + source == NULL || + blockSize100k < 1 || blockSize100k > 9 || + verbosity < 0 || verbosity > 4 || + workFactor < 0 || workFactor > 250) + return BZ_PARAM_ERROR; + + if (workFactor == 0) workFactor = 30; + strm.bzalloc = NULL; + strm.bzfree = NULL; + strm.opaque = NULL; + ret = BZ2_bzCompressInit ( &strm, blockSize100k, + verbosity, workFactor ); + if (ret != BZ_OK) return ret; + + strm.next_in = source; + strm.next_out = dest; + strm.avail_in = sourceLen; + strm.avail_out = *destLen; + + ret = BZ2_bzCompress ( &strm, BZ_FINISH ); + if (ret == BZ_FINISH_OK) goto output_overflow; + if (ret != BZ_STREAM_END) goto errhandler; + + /* normal termination */ + *destLen -= strm.avail_out; + BZ2_bzCompressEnd ( &strm ); + return BZ_OK; + + output_overflow: + BZ2_bzCompressEnd ( &strm ); + return BZ_OUTBUFF_FULL; + + errhandler: + BZ2_bzCompressEnd ( &strm ); + return ret; +} + + +/*---------------------------------------------------*/ +int BZ_API(BZ2_bzBuffToBuffDecompress) + ( char* dest, + unsigned int* destLen, + char* source, + unsigned int sourceLen, + int small, + int verbosity ) +{ + bz_stream strm; + int ret; + + if (dest == NULL || destLen == NULL || + source == NULL || + (small != 0 && small != 1) || + verbosity < 0 || verbosity > 4) + return BZ_PARAM_ERROR; + + strm.bzalloc = NULL; + strm.bzfree = NULL; + strm.opaque = NULL; + ret = BZ2_bzDecompressInit ( &strm, verbosity, small ); + if (ret != BZ_OK) return ret; + + strm.next_in = source; + strm.next_out = dest; + strm.avail_in = sourceLen; + strm.avail_out = *destLen; + + ret = BZ2_bzDecompress ( &strm ); + if (ret == BZ_OK) goto output_overflow_or_eof; + if (ret != BZ_STREAM_END) goto errhandler; + + /* normal termination */ + *destLen -= strm.avail_out; + BZ2_bzDecompressEnd ( &strm ); + return BZ_OK; + + output_overflow_or_eof: + if (strm.avail_out > 0) { + BZ2_bzDecompressEnd ( &strm ); + return BZ_UNEXPECTED_EOF; + } else { + BZ2_bzDecompressEnd ( &strm ); + return BZ_OUTBUFF_FULL; + }; + + errhandler: + BZ2_bzDecompressEnd ( &strm ); + return ret; +} + + +/*---------------------------------------------------*/ +/*-- + Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp) + to support better zlib compatibility. + This code is not _officially_ part of libbzip2 (yet); + I haven't tested it, documented it, or considered the + threading-safeness of it. + If this code breaks, please contact both Yoshioka and me. +--*/ +/*---------------------------------------------------*/ + +/*---------------------------------------------------*/ +/*-- + return version like "0.9.5d, 4-Sept-1999". +--*/ +const char * BZ_API(BZ2_bzlibVersion)(void) +{ + return BZ_VERSION; +} + + +#ifndef BZ_NO_STDIO +/*---------------------------------------------------*/ + +#if defined(_WIN32) || defined(OS2) || defined(MSDOS) +# include +# include +# define SET_BINARY_MODE(file) setmode(fileno(file),O_BINARY) +#else +# define SET_BINARY_MODE(file) +#endif +static +BZFILE * bzopen_or_bzdopen + ( const char *path, /* no use when bzdopen */ + int fd, /* no use when bzdopen */ + const char *mode, + int open_mode) /* bzopen: 0, bzdopen:1 */ +{ + int bzerr; + char unused[BZ_MAX_UNUSED]; + int blockSize100k = 9; + int writing = 0; + char mode2[10] = ""; + FILE *fp = NULL; + BZFILE *bzfp = NULL; + int verbosity = 0; + int workFactor = 30; + int smallMode = 0; + int nUnused = 0; + + if (mode == NULL) return NULL; + while (*mode) { + switch (*mode) { + case 'r': + writing = 0; break; + case 'w': + writing = 1; break; + case 's': + smallMode = 1; break; + default: + if (isdigit((int)(*mode))) { + blockSize100k = *mode-BZ_HDR_0; + } + } + mode++; + } + strcat(mode2, writing ? "w" : "r" ); + strcat(mode2,"b"); /* binary mode */ + + if (open_mode==0) { + if (path==NULL || strcmp(path,"")==0) { + fp = (writing ? stdout : stdin); + SET_BINARY_MODE(fp); + } else { + fp = fopen(path,mode2); + } + } else { +#ifdef BZ_STRICT_ANSI + fp = NULL; +#else + fp = fdopen(fd,mode2); +#endif + } + if (fp == NULL) return NULL; + + if (writing) { + /* Guard against total chaos and anarchy -- JRS */ + if (blockSize100k < 1) blockSize100k = 1; + if (blockSize100k > 9) blockSize100k = 9; + bzfp = BZ2_bzWriteOpen(&bzerr,fp,blockSize100k, + verbosity,workFactor); + } else { + bzfp = BZ2_bzReadOpen(&bzerr,fp,verbosity,smallMode, + unused,nUnused); + } + if (bzfp == NULL) { + if (fp != stdin && fp != stdout) fclose(fp); + return NULL; + } + return bzfp; +} + + +/*---------------------------------------------------*/ +/*-- + open file for read or write. + ex) bzopen("file","w9") + case path="" or NULL => use stdin or stdout. +--*/ +BZFILE * BZ_API(BZ2_bzopen) + ( const char *path, + const char *mode ) +{ + return bzopen_or_bzdopen(path,-1,mode,/*bzopen*/0); +} + + +/*---------------------------------------------------*/ +BZFILE * BZ_API(BZ2_bzdopen) + ( int fd, + const char *mode ) +{ + return bzopen_or_bzdopen(NULL,fd,mode,/*bzdopen*/1); +} + + +/*---------------------------------------------------*/ +int BZ_API(BZ2_bzread) (BZFILE* b, void* buf, int len ) +{ + int bzerr, nread; + if (((bzFile*)b)->lastErr == BZ_STREAM_END) return 0; + nread = BZ2_bzRead(&bzerr,b,buf,len); + if (bzerr == BZ_OK || bzerr == BZ_STREAM_END) { + return nread; + } else { + return -1; + } +} + + +/*---------------------------------------------------*/ +int BZ_API(BZ2_bzwrite) (BZFILE* b, void* buf, int len ) +{ + int bzerr; + + BZ2_bzWrite(&bzerr,b,buf,len); + if(bzerr == BZ_OK){ + return len; + }else{ + return -1; + } +} + + +/*---------------------------------------------------*/ +int BZ_API(BZ2_bzflush) (BZFILE *b) +{ + /* do nothing now... */ + return 0; +} + + +/*---------------------------------------------------*/ +void BZ_API(BZ2_bzclose) (BZFILE* b) +{ + int bzerr; + FILE *fp; + + if (b==NULL) {return;} + fp = ((bzFile *)b)->handle; + if(((bzFile*)b)->writing){ + BZ2_bzWriteClose(&bzerr,b,0,NULL,NULL); + if(bzerr != BZ_OK){ + BZ2_bzWriteClose(NULL,b,1,NULL,NULL); + } + }else{ + BZ2_bzReadClose(&bzerr,b); + } + if(fp!=stdin && fp!=stdout){ + fclose(fp); + } +} + + +/*---------------------------------------------------*/ +/*-- + return last error code +--*/ +static const char *bzerrorstrings[] = { + "OK" + ,"SEQUENCE_ERROR" + ,"PARAM_ERROR" + ,"MEM_ERROR" + ,"DATA_ERROR" + ,"DATA_ERROR_MAGIC" + ,"IO_ERROR" + ,"UNEXPECTED_EOF" + ,"OUTBUFF_FULL" + ,"CONFIG_ERROR" + ,"???" /* for future */ + ,"???" /* for future */ + ,"???" /* for future */ + ,"???" /* for future */ + ,"???" /* for future */ + ,"???" /* for future */ +}; + + +const char * BZ_API(BZ2_bzerror) (BZFILE *b, int *errnum) +{ + int err = ((bzFile *)b)->lastErr; + + if(err>0) err = 0; + *errnum = err; + return bzerrorstrings[err*-1]; +} +#endif + + +/*-------------------------------------------------------------*/ +/*--- end bzlib.c ---*/ +/*-------------------------------------------------------------*/ diff --git a/examples/graph/fgbzip2/bzlib.h b/examples/graph/fgbzip2/bzlib.h new file mode 100644 index 0000000000..a83a204f31 --- /dev/null +++ b/examples/graph/fgbzip2/bzlib.h @@ -0,0 +1,334 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +/*-------------------------------------------------------------*/ +/*--- Public header file for the library. ---*/ +/*--- bzlib.h ---*/ +/*-------------------------------------------------------------*/ + +/* ------------------------------------------------------------------ + The original source for this example: + This file is part of bzip2/libbzip2, a program and library for + lossless, block-sorting data compression. + + bzip2/libbzip2 version 1.0.6 of 6 September 2010 + Copyright (C) 1996-2010 Julian Seward + + This program, "bzip2", the associated library "libbzip2", and all + documentation, are copyright (C) 1996-2010 Julian R Seward. All + rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Julian Seward, jseward@bzip.org + bzip2/libbzip2 version 1.0.6 of 6 September 2010 + ------------------------------------------------------------------ */ + + +#ifndef _BZLIB_H +#define _BZLIB_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define BZ_RUN 0 +#define BZ_FLUSH 1 +#define BZ_FINISH 2 + +#define BZ_OK 0 +#define BZ_RUN_OK 1 +#define BZ_FLUSH_OK 2 +#define BZ_FINISH_OK 3 +#define BZ_STREAM_END 4 +#define BZ_SEQUENCE_ERROR (-1) +#define BZ_PARAM_ERROR (-2) +#define BZ_MEM_ERROR (-3) +#define BZ_DATA_ERROR (-4) +#define BZ_DATA_ERROR_MAGIC (-5) +#define BZ_IO_ERROR (-6) +#define BZ_UNEXPECTED_EOF (-7) +#define BZ_OUTBUFF_FULL (-8) +#define BZ_CONFIG_ERROR (-9) + +typedef + struct { + char *next_in; + unsigned int avail_in; + unsigned int total_in_lo32; + unsigned int total_in_hi32; + + char *next_out; + unsigned int avail_out; + unsigned int total_out_lo32; + unsigned int total_out_hi32; + + void *state; + + void *(*bzalloc)(void *,int,int); + void (*bzfree)(void *,void *); + void *opaque; + } + bz_stream; + + +#ifndef BZ_IMPORT +#define BZ_EXPORT +#endif + +#ifndef BZ_NO_STDIO +/* Need a definitition for FILE */ +#include +#endif + +#ifdef _WIN32 +# include +# ifdef small + /* windows.h define small to char */ +# undef small +# endif +# ifdef BZ_EXPORT +# define BZ_API(func) WINAPI func +# define BZ_EXTERN extern +# else + /* import windows dll dynamically */ +# define BZ_API(func) (WINAPI * func) +# define BZ_EXTERN +# endif +#else +# define BZ_API(func) func +# define BZ_EXTERN extern +#endif + + +/*-- Core (low-level) library functions --*/ + +BZ_EXTERN int BZ_API(BZ2_bzCompressInit) ( + bz_stream* strm, + int blockSize100k, + int verbosity, + int workFactor + ); + +BZ_EXTERN int BZ_API(BZ2_bzCompress) ( + bz_stream* strm, + int action + ); + +BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) ( + bz_stream* strm + ); + +BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) ( + bz_stream *strm, + int verbosity, + int small + ); + +BZ_EXTERN int BZ_API(BZ2_bzDecompress) ( + bz_stream* strm + ); + +BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) ( + bz_stream *strm + ); + + + +/*-- High(er) level library functions --*/ + +#ifndef BZ_NO_STDIO +#define BZ_MAX_UNUSED 5000 + +typedef void BZFILE; + +BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) ( + int* bzerror, + FILE* f, + int verbosity, + int small, + void* unused, + int nUnused + ); + +BZ_EXTERN void BZ_API(BZ2_bzReadClose) ( + int* bzerror, + BZFILE* b + ); + +BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) ( + int* bzerror, + BZFILE* b, + void** unused, + int* nUnused + ); + +BZ_EXTERN int BZ_API(BZ2_bzRead) ( + int* bzerror, + BZFILE* b, + void* buf, + int len + ); + +BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) ( + int* bzerror, + FILE* f, + int blockSize100k, + int verbosity, + int workFactor + ); + +BZ_EXTERN void BZ_API(BZ2_bzWrite) ( + int* bzerror, + BZFILE* b, + void* buf, + int len + ); + +BZ_EXTERN void BZ_API(BZ2_bzWriteClose) ( + int* bzerror, + BZFILE* b, + int abandon, + unsigned int* nbytes_in, + unsigned int* nbytes_out + ); + +BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) ( + int* bzerror, + BZFILE* b, + int abandon, + unsigned int* nbytes_in_lo32, + unsigned int* nbytes_in_hi32, + unsigned int* nbytes_out_lo32, + unsigned int* nbytes_out_hi32 + ); +#endif + + +/*-- Utility functions --*/ + +BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) ( + char* dest, + unsigned int* destLen, + char* source, + unsigned int sourceLen, + int blockSize100k, + int verbosity, + int workFactor + ); + +BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) ( + char* dest, + unsigned int* destLen, + char* source, + unsigned int sourceLen, + int small, + int verbosity + ); + + +/*-- + Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp) + to support better zlib compatibility. + This code is not _officially_ part of libbzip2 (yet); + I haven't tested it, documented it, or considered the + threading-safeness of it. + If this code breaks, please contact both Yoshioka and me. +--*/ + +BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) ( + void + ); + +#ifndef BZ_NO_STDIO +BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) ( + const char *path, + const char *mode + ); + +BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) ( + int fd, + const char *mode + ); + +BZ_EXTERN int BZ_API(BZ2_bzread) ( + BZFILE* b, + void* buf, + int len + ); + +BZ_EXTERN int BZ_API(BZ2_bzwrite) ( + BZFILE* b, + void* buf, + int len + ); + +BZ_EXTERN int BZ_API(BZ2_bzflush) ( + BZFILE* b + ); + +BZ_EXTERN void BZ_API(BZ2_bzclose) ( + BZFILE* b + ); + +BZ_EXTERN const char * BZ_API(BZ2_bzerror) ( + BZFILE *b, + int *errnum + ); +#endif + +#ifdef __cplusplus +} +#endif + +#endif + +/*-------------------------------------------------------------*/ +/*--- end bzlib.h ---*/ +/*-------------------------------------------------------------*/ diff --git a/examples/graph/fgbzip2/bzlib_private.h b/examples/graph/fgbzip2/bzlib_private.h new file mode 100644 index 0000000000..639b780687 --- /dev/null +++ b/examples/graph/fgbzip2/bzlib_private.h @@ -0,0 +1,561 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +/*-------------------------------------------------------------*/ +/*--- Private header file for the library. ---*/ +/*--- bzlib_private.h ---*/ +/*-------------------------------------------------------------*/ + +/* ------------------------------------------------------------------ + The original source for this example: + This file is part of bzip2/libbzip2, a program and library for + lossless, block-sorting data compression. + + bzip2/libbzip2 version 1.0.6 of 6 September 2010 + Copyright (C) 1996-2010 Julian Seward + + This program, "bzip2", the associated library "libbzip2", and all + documentation, are copyright (C) 1996-2010 Julian R Seward. All + rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Julian Seward, jseward@bzip.org + bzip2/libbzip2 version 1.0.6 of 6 September 2010 + ------------------------------------------------------------------ */ + + +#ifndef _BZLIB_PRIVATE_H +#define _BZLIB_PRIVATE_H + +#include + +#ifndef BZ_NO_STDIO +#include +#include +#include +#endif + +#include "bzlib.h" + + + +/*-- General stuff. --*/ + +#define BZ_VERSION "1.0.6, 6-Sept-2010" + +typedef char Char; +typedef unsigned char Bool; +typedef unsigned char UChar; +typedef int Int32; +typedef unsigned int UInt32; +typedef short Int16; +typedef unsigned short UInt16; + +#define True ((Bool)1) +#define False ((Bool)0) + +#ifndef __GNUC__ +#define __inline__ /* */ +#endif + +#ifndef BZ_NO_STDIO + +extern void BZ2_bz__AssertH__fail ( int errcode ); +#define AssertH(cond,errcode) \ + { if (!(cond)) BZ2_bz__AssertH__fail ( errcode ); } + +#if BZ_DEBUG +#define AssertD(cond,msg) \ + { if (!(cond)) { \ + fprintf ( stderr, \ + "\n\nlibbzip2(debug build): internal error\n\t%s\n", msg );\ + exit(1); \ + }} +#else +#define AssertD(cond,msg) /* */ +#endif + +#define VPrintf0(zf) \ + fprintf(stderr,zf) +#define VPrintf1(zf,za1) \ + fprintf(stderr,zf,za1) +#define VPrintf2(zf,za1,za2) \ + fprintf(stderr,zf,za1,za2) +#define VPrintf3(zf,za1,za2,za3) \ + fprintf(stderr,zf,za1,za2,za3) +#define VPrintf4(zf,za1,za2,za3,za4) \ + fprintf(stderr,zf,za1,za2,za3,za4) +#define VPrintf5(zf,za1,za2,za3,za4,za5) \ + fprintf(stderr,zf,za1,za2,za3,za4,za5) + +#else + +extern void bz_internal_error ( int errcode ); +#define AssertH(cond,errcode) \ + { if (!(cond)) bz_internal_error ( errcode ); } +#define AssertD(cond,msg) do { } while (0) +#define VPrintf0(zf) do { } while (0) +#define VPrintf1(zf,za1) do { } while (0) +#define VPrintf2(zf,za1,za2) do { } while (0) +#define VPrintf3(zf,za1,za2,za3) do { } while (0) +#define VPrintf4(zf,za1,za2,za3,za4) do { } while (0) +#define VPrintf5(zf,za1,za2,za3,za4,za5) do { } while (0) + +#endif + + +#define BZALLOC(nnn) (strm->bzalloc)(strm->opaque,(nnn),1) +#define BZFREE(ppp) (strm->bzfree)(strm->opaque,(ppp)) + + +/*-- Header bytes. --*/ + +#define BZ_HDR_B 0x42 /* 'B' */ +#define BZ_HDR_Z 0x5a /* 'Z' */ +#define BZ_HDR_h 0x68 /* 'h' */ +#define BZ_HDR_0 0x30 /* '0' */ + +/*-- Constants for the back end. --*/ + +#define BZ_MAX_ALPHA_SIZE 258 +#define BZ_MAX_CODE_LEN 23 + +#define BZ_RUNA 0 +#define BZ_RUNB 1 + +#define BZ_N_GROUPS 6 +#define BZ_G_SIZE 50 +#define BZ_N_ITERS 4 + +#define BZ_MAX_SELECTORS (2 + (900000 / BZ_G_SIZE)) + + + +/*-- Stuff for randomising repetitive blocks. --*/ + +extern Int32 BZ2_rNums[512]; + +#define BZ_RAND_DECLS \ + Int32 rNToGo; \ + Int32 rTPos \ + +#define BZ_RAND_INIT_MASK \ + s->rNToGo = 0; \ + s->rTPos = 0 \ + +#define BZ_RAND_MASK ((s->rNToGo == 1) ? 1 : 0) + +#define BZ_RAND_UPD_MASK \ + if (s->rNToGo == 0) { \ + s->rNToGo = BZ2_rNums[s->rTPos]; \ + s->rTPos++; \ + if (s->rTPos == 512) s->rTPos = 0; \ + } \ + s->rNToGo--; + + + +/*-- Stuff for doing CRCs. --*/ + +extern UInt32 BZ2_crc32Table[256]; + +#define BZ_INITIALISE_CRC(crcVar) \ +{ \ + crcVar = 0xffffffffL; \ +} + +#define BZ_FINALISE_CRC(crcVar) \ +{ \ + crcVar = ~(crcVar); \ +} + +#define BZ_UPDATE_CRC(crcVar,cha) \ +{ \ + crcVar = (crcVar << 8) ^ \ + BZ2_crc32Table[(crcVar >> 24) ^ \ + ((UChar)cha)]; \ +} + + + +/*-- States and modes for compression. --*/ + +#define BZ_M_IDLE 1 +#define BZ_M_RUNNING 2 +#define BZ_M_FLUSHING 3 +#define BZ_M_FINISHING 4 + +#define BZ_S_OUTPUT 1 +#define BZ_S_INPUT 2 + +#define BZ_N_RADIX 2 +#define BZ_N_QSORT 12 +#define BZ_N_SHELL 18 +#define BZ_N_OVERSHOOT (BZ_N_RADIX + BZ_N_QSORT + BZ_N_SHELL + 2) + + + + +/*-- Structure holding all the compression-side stuff. --*/ + +typedef + struct { + /* pointer back to the struct bz_stream */ + bz_stream* strm; + + /* mode this stream is in, and whether inputting */ + /* or outputting data */ + Int32 mode; + Int32 state; + + /* remembers avail_in when flush/finish requested */ + UInt32 avail_in_expect; + + /* for doing the block sorting */ + UInt32* arr1; + UInt32* arr2; + UInt32* ftab; + Int32 origPtr; + + /* aliases for arr1 and arr2 */ + UInt32* ptr; + UChar* block; + UInt16* mtfv; + UChar* zbits; + + /* for deciding when to use the fallback sorting algorithm */ + Int32 workFactor; + + /* run-length-encoding of the input */ + UInt32 state_in_ch; + Int32 state_in_len; + BZ_RAND_DECLS; + + /* input and output limits and current posns */ + Int32 nblock; + Int32 nblockMAX; + Int32 numZ; + Int32 state_out_pos; + + /* map of bytes used in block */ + Int32 nInUse; + Bool inUse[256]; + UChar unseqToSeq[256]; + + /* the buffer for bit stream creation */ + UInt32 bsBuff; + Int32 bsLive; + + /* block and combined CRCs */ + UInt32 blockCRC; + UInt32 combinedCRC; + + /* misc administratium */ + Int32 verbosity; + Int32 blockNo; + Int32 blockSize100k; + + /* stuff for coding the MTF values */ + Int32 nMTF; + Int32 mtfFreq [BZ_MAX_ALPHA_SIZE]; + UChar selector [BZ_MAX_SELECTORS]; + UChar selectorMtf[BZ_MAX_SELECTORS]; + + UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + Int32 code [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + Int32 rfreq [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + /* second dimension: only 3 needed; 4 makes index calculations faster */ + UInt32 len_pack[BZ_MAX_ALPHA_SIZE][4]; + + } + EState; + + + +/*-- externs for compression. --*/ + +extern void +BZ2_blockSort ( EState* ); + +extern void +BZ2_compressBlock ( EState*, Bool ); + +extern void +BZ2_bsInitWrite ( EState* ); + +extern void +BZ2_hbAssignCodes ( Int32*, UChar*, Int32, Int32, Int32 ); + +extern void +BZ2_hbMakeCodeLengths ( UChar*, Int32*, Int32, Int32 ); + + + +/*-- states for decompression. --*/ + +#define BZ_X_IDLE 1 +#define BZ_X_OUTPUT 2 + +#define BZ_X_MAGIC_1 10 +#define BZ_X_MAGIC_2 11 +#define BZ_X_MAGIC_3 12 +#define BZ_X_MAGIC_4 13 +#define BZ_X_BLKHDR_1 14 +#define BZ_X_BLKHDR_2 15 +#define BZ_X_BLKHDR_3 16 +#define BZ_X_BLKHDR_4 17 +#define BZ_X_BLKHDR_5 18 +#define BZ_X_BLKHDR_6 19 +#define BZ_X_BCRC_1 20 +#define BZ_X_BCRC_2 21 +#define BZ_X_BCRC_3 22 +#define BZ_X_BCRC_4 23 +#define BZ_X_RANDBIT 24 +#define BZ_X_ORIGPTR_1 25 +#define BZ_X_ORIGPTR_2 26 +#define BZ_X_ORIGPTR_3 27 +#define BZ_X_MAPPING_1 28 +#define BZ_X_MAPPING_2 29 +#define BZ_X_SELECTOR_1 30 +#define BZ_X_SELECTOR_2 31 +#define BZ_X_SELECTOR_3 32 +#define BZ_X_CODING_1 33 +#define BZ_X_CODING_2 34 +#define BZ_X_CODING_3 35 +#define BZ_X_MTF_1 36 +#define BZ_X_MTF_2 37 +#define BZ_X_MTF_3 38 +#define BZ_X_MTF_4 39 +#define BZ_X_MTF_5 40 +#define BZ_X_MTF_6 41 +#define BZ_X_ENDHDR_2 42 +#define BZ_X_ENDHDR_3 43 +#define BZ_X_ENDHDR_4 44 +#define BZ_X_ENDHDR_5 45 +#define BZ_X_ENDHDR_6 46 +#define BZ_X_CCRC_1 47 +#define BZ_X_CCRC_2 48 +#define BZ_X_CCRC_3 49 +#define BZ_X_CCRC_4 50 + + + +/*-- Constants for the fast MTF decoder. --*/ + +#define MTFA_SIZE 4096 +#define MTFL_SIZE 16 + + + +/*-- Structure holding all the decompression-side stuff. --*/ + +typedef + struct { + /* pointer back to the struct bz_stream */ + bz_stream* strm; + + /* state indicator for this stream */ + Int32 state; + + /* for doing the final run-length decoding */ + UChar state_out_ch; + Int32 state_out_len; + Bool blockRandomised; + BZ_RAND_DECLS; + + /* the buffer for bit stream reading */ + UInt32 bsBuff; + Int32 bsLive; + + /* misc administratium */ + Int32 blockSize100k; + Bool smallDecompress; + Int32 currBlockNo; + Int32 verbosity; + + /* for undoing the Burrows-Wheeler transform */ + Int32 origPtr; + UInt32 tPos; + Int32 k0; + Int32 unzftab[256]; + Int32 nblock_used; + Int32 cftab[257]; + Int32 cftabCopy[257]; + + /* for undoing the Burrows-Wheeler transform (FAST) */ + UInt32 *tt; + + /* for undoing the Burrows-Wheeler transform (SMALL) */ + UInt16 *ll16; + UChar *ll4; + + /* stored and calculated CRCs */ + UInt32 storedBlockCRC; + UInt32 storedCombinedCRC; + UInt32 calculatedBlockCRC; + UInt32 calculatedCombinedCRC; + + /* map of bytes used in block */ + Int32 nInUse; + Bool inUse[256]; + Bool inUse16[16]; + UChar seqToUnseq[256]; + + /* for decoding the MTF values */ + UChar mtfa [MTFA_SIZE]; + Int32 mtfbase[256 / MTFL_SIZE]; + UChar selector [BZ_MAX_SELECTORS]; + UChar selectorMtf[BZ_MAX_SELECTORS]; + UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + + Int32 limit [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + Int32 base [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + Int32 perm [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + Int32 minLens[BZ_N_GROUPS]; + + /* save area for scalars in the main decompress code */ + Int32 save_i; + Int32 save_j; + Int32 save_t; + Int32 save_alphaSize; + Int32 save_nGroups; + Int32 save_nSelectors; + Int32 save_EOB; + Int32 save_groupNo; + Int32 save_groupPos; + Int32 save_nextSym; + Int32 save_nblockMAX; + Int32 save_nblock; + Int32 save_es; + Int32 save_N; + Int32 save_curr; + Int32 save_zt; + Int32 save_zn; + Int32 save_zvec; + Int32 save_zj; + Int32 save_gSel; + Int32 save_gMinlen; + Int32* save_gLimit; + Int32* save_gBase; + Int32* save_gPerm; + + } + DState; + + + +/*-- Macros for decompression. --*/ + +#define BZ_GET_FAST(cccc) \ + /* c_tPos is unsigned, hence test < 0 is pointless. */ \ + if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \ + s->tPos = s->tt[s->tPos]; \ + cccc = (UChar)(s->tPos & 0xff); \ + s->tPos >>= 8; + +#define BZ_GET_FAST_C(cccc) \ + /* c_tPos is unsigned, hence test < 0 is pointless. */ \ + if (c_tPos >= (UInt32)100000 * (UInt32)ro_blockSize100k) return True; \ + c_tPos = c_tt[c_tPos]; \ + cccc = (UChar)(c_tPos & 0xff); \ + c_tPos >>= 8; + +#define SET_LL4(i,n) \ + { if (((i) & 0x1) == 0) \ + s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0xf0) | (n); else \ + s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0x0f) | ((n) << 4); \ + } + +#define GET_LL4(i) \ + ((((UInt32)(s->ll4[(i) >> 1])) >> (((i) << 2) & 0x4)) & 0xF) + +#define SET_LL(i,n) \ + { s->ll16[i] = (UInt16)(n & 0x0000ffff); \ + SET_LL4(i, n >> 16); \ + } + +#define GET_LL(i) \ + (((UInt32)s->ll16[i]) | (GET_LL4(i) << 16)) + +#define BZ_GET_SMALL(cccc) \ + /* c_tPos is unsigned, hence test < 0 is pointless. */ \ + if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \ + cccc = BZ2_indexIntoF ( s->tPos, s->cftab ); \ + s->tPos = GET_LL(s->tPos); + + +/*-- externs for decompression. --*/ + +extern Int32 +BZ2_indexIntoF ( Int32, Int32* ); + +extern Int32 +BZ2_decompress ( DState* ); + +extern void +BZ2_hbCreateDecodeTables ( Int32*, Int32*, Int32*, UChar*, + Int32, Int32, Int32 ); + + +#endif + + +/*-- BZ_NO_STDIO seems to make NULL disappear on some platforms. --*/ + +#ifdef BZ_NO_STDIO +#ifndef NULL +#define NULL 0 +#endif +#endif + + +/*-------------------------------------------------------------*/ +/*--- end bzlib_private.h ---*/ +/*-------------------------------------------------------------*/ diff --git a/examples/graph/fgbzip2/compress.cpp b/examples/graph/fgbzip2/compress.cpp new file mode 100644 index 0000000000..4c8b5f3934 --- /dev/null +++ b/examples/graph/fgbzip2/compress.cpp @@ -0,0 +1,724 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +/*-------------------------------------------------------------*/ +/*--- Compression machinery (not incl block sorting) ---*/ +/*--- compress.cpp ---*/ +/*-------------------------------------------------------------*/ + +/* ------------------------------------------------------------------ + The original source for this example: + This file is part of bzip2/libbzip2, a program and library for + lossless, block-sorting data compression. + + bzip2/libbzip2 version 1.0.6 of 6 September 2010 + Copyright (C) 1996-2010 Julian Seward + + This program, "bzip2", the associated library "libbzip2", and all + documentation, are copyright (C) 1996-2010 Julian R Seward. All + rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Julian Seward, jseward@bzip.org + bzip2/libbzip2 version 1.0.6 of 6 September 2010 + ------------------------------------------------------------------ */ + + +/* CHANGES + 0.9.0 -- original version. + 0.9.0a/b -- no changes in this file. + 0.9.0c -- changed setting of nGroups in sendMTFValues() + so as to do a bit better on small files +*/ + +#include "bzlib_private.h" + + +/*---------------------------------------------------*/ +/*--- Bit stream I/O ---*/ +/*---------------------------------------------------*/ + +/*---------------------------------------------------*/ +void BZ2_bsInitWrite ( EState* s ) +{ + s->bsLive = 0; + s->bsBuff = 0; +} + + +/*---------------------------------------------------*/ +static +void bsFinishWrite ( EState* s ) +{ + while (s->bsLive > 0) { + s->zbits[s->numZ] = (UChar)(s->bsBuff >> 24); + s->numZ++; + s->bsBuff <<= 8; + s->bsLive -= 8; + } +} + + +/*---------------------------------------------------*/ +#define bsNEEDW(nz) \ +{ \ + while (s->bsLive >= 8) { \ + s->zbits[s->numZ] \ + = (UChar)(s->bsBuff >> 24); \ + s->numZ++; \ + s->bsBuff <<= 8; \ + s->bsLive -= 8; \ + } \ +} + + +/*---------------------------------------------------*/ +static +__inline__ +void bsW ( EState* s, Int32 n, UInt32 v ) +{ + bsNEEDW ( n ); + s->bsBuff |= (v << (32 - s->bsLive - n)); + s->bsLive += n; +} + + +/*---------------------------------------------------*/ +static +void bsPutUInt32 ( EState* s, UInt32 u ) +{ + bsW ( s, 8, (u >> 24) & 0xffL ); + bsW ( s, 8, (u >> 16) & 0xffL ); + bsW ( s, 8, (u >> 8) & 0xffL ); + bsW ( s, 8, u & 0xffL ); +} + + +/*---------------------------------------------------*/ +static +void bsPutUChar ( EState* s, UChar c ) +{ + bsW( s, 8, (UInt32)c ); +} + + +/*---------------------------------------------------*/ +/*--- The back end proper ---*/ +/*---------------------------------------------------*/ + +/*---------------------------------------------------*/ +static +void makeMaps_e ( EState* s ) +{ + Int32 i; + s->nInUse = 0; + for (i = 0; i < 256; i++) + if (s->inUse[i]) { + s->unseqToSeq[i] = s->nInUse; + s->nInUse++; + } +} + + +/*---------------------------------------------------*/ +static +void generateMTFValues ( EState* s ) +{ + UChar yy[256]; + Int32 i, j; + Int32 zPend; + Int32 wr; + Int32 EOB; + + /* + After sorting (eg, here), + s->arr1 [ 0 .. s->nblock-1 ] holds sorted order, + and + ((UChar*)s->arr2) [ 0 .. s->nblock-1 ] + holds the original block data. + + The first thing to do is generate the MTF values, + and put them in + ((UInt16*)s->arr1) [ 0 .. s->nblock-1 ]. + Because there are strictly fewer or equal MTF values + than block values, ptr values in this area are overwritten + with MTF values only when they are no longer needed. + + The final compressed bitstream is generated into the + area starting at + (UChar*) (&((UChar*)s->arr2)[s->nblock]) + + These storage aliases are set up in bzCompressInit(), + except for the last one, which is arranged in + compressBlock(). + */ + UInt32* ptr = s->ptr; + UChar* block = s->block; + UInt16* mtfv = s->mtfv; + + makeMaps_e ( s ); + EOB = s->nInUse+1; + + for (i = 0; i <= EOB; i++) s->mtfFreq[i] = 0; + + wr = 0; + zPend = 0; + for (i = 0; i < s->nInUse; i++) yy[i] = (UChar) i; + + for (i = 0; i < s->nblock; i++) { + UChar ll_i; + AssertD ( wr <= i, "generateMTFValues(1)" ); + j = ptr[i]-1; if (j < 0) j += s->nblock; + ll_i = s->unseqToSeq[block[j]]; + AssertD ( ll_i < s->nInUse, "generateMTFValues(2a)" ); + + if (yy[0] == ll_i) { + zPend++; + } else { + + if (zPend > 0) { + zPend--; + while (True) { + if (zPend & 1) { + mtfv[wr] = BZ_RUNB; wr++; + s->mtfFreq[BZ_RUNB]++; + } else { + mtfv[wr] = BZ_RUNA; wr++; + s->mtfFreq[BZ_RUNA]++; + } + if (zPend < 2) break; + zPend = (zPend - 2) / 2; + }; + zPend = 0; + } + { + UChar rtmp; + UChar* ryy_j; + UChar rll_i; + rtmp = yy[1]; + yy[1] = yy[0]; + ryy_j = &(yy[1]); + rll_i = ll_i; + while ( rll_i != rtmp ) { + UChar rtmp2; + ryy_j++; + rtmp2 = rtmp; + rtmp = *ryy_j; + *ryy_j = rtmp2; + }; + yy[0] = rtmp; + j = ryy_j - &(yy[0]); + mtfv[wr] = j+1; wr++; s->mtfFreq[j+1]++; + } + + } + } + + if (zPend > 0) { + zPend--; + while (True) { + if (zPend & 1) { + mtfv[wr] = BZ_RUNB; wr++; + s->mtfFreq[BZ_RUNB]++; + } else { + mtfv[wr] = BZ_RUNA; wr++; + s->mtfFreq[BZ_RUNA]++; + } + if (zPend < 2) break; + zPend = (zPend - 2) / 2; + }; + zPend = 0; + } + + mtfv[wr] = EOB; wr++; s->mtfFreq[EOB]++; + + s->nMTF = wr; +} + + +/*---------------------------------------------------*/ +#define BZ_LESSER_ICOST 0 +#define BZ_GREATER_ICOST 15 + +static +void sendMTFValues ( EState* s ) +{ + Int32 v, t, i, j, gs, ge, totc, bt, bc, iter; + Int32 nSelectors, alphaSize, minLen, maxLen, selCtr; + Int32 nGroups, nBytes; + + /*-- + UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + is a global since the decoder also needs it. + + Int32 code[BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + Int32 rfreq[BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; + are also globals only used in this proc. + Made global to keep stack frame size small. + --*/ + + + UInt16 cost[BZ_N_GROUPS]; + Int32 fave[BZ_N_GROUPS]; + + UInt16* mtfv = s->mtfv; + + if (s->verbosity >= 3) + VPrintf3( " %d in block, %d after MTF & 1-2 coding, " + "%d+2 syms in use\n", + s->nblock, s->nMTF, s->nInUse ); + + alphaSize = s->nInUse+2; + for (t = 0; t < BZ_N_GROUPS; t++) + for (v = 0; v < alphaSize; v++) + s->len[t][v] = BZ_GREATER_ICOST; + + /*--- Decide how many coding tables to use ---*/ + AssertH ( s->nMTF > 0, 3001 ); + if (s->nMTF < 200) nGroups = 2; else + if (s->nMTF < 600) nGroups = 3; else + if (s->nMTF < 1200) nGroups = 4; else + if (s->nMTF < 2400) nGroups = 5; else + nGroups = 6; + + /*--- Generate an initial set of coding tables ---*/ + { + Int32 nPart, remF, tFreq, aFreq; + + nPart = nGroups; + remF = s->nMTF; + gs = 0; + while (nPart > 0) { + tFreq = remF / nPart; + ge = gs-1; + aFreq = 0; + while (aFreq < tFreq && ge < alphaSize-1) { + ge++; + aFreq += s->mtfFreq[ge]; + } + + if (ge > gs + && nPart != nGroups && nPart != 1 + && ((nGroups-nPart) % 2 == 1)) { + aFreq -= s->mtfFreq[ge]; + ge--; + } + + if (s->verbosity >= 3) + VPrintf5( " initial group %d, [%d .. %d], " + "has %d syms (%4.1f%%)\n", + nPart, gs, ge, aFreq, + (100.0 * (float)aFreq) / (float)(s->nMTF) ); + + for (v = 0; v < alphaSize; v++) + if (v >= gs && v <= ge) + s->len[nPart-1][v] = BZ_LESSER_ICOST; else + s->len[nPart-1][v] = BZ_GREATER_ICOST; + + nPart--; + gs = ge+1; + remF -= aFreq; + } + } + + /*--- + Iterate up to BZ_N_ITERS times to improve the tables. + ---*/ + for (iter = 0; iter < BZ_N_ITERS; iter++) { + + for (t = 0; t < nGroups; t++) fave[t] = 0; + + for (t = 0; t < nGroups; t++) + for (v = 0; v < alphaSize; v++) + s->rfreq[t][v] = 0; + + /*--- + Set up an auxiliary length table which is used to fast-track + the common case (nGroups == 6). + ---*/ + if (nGroups == 6) { + for (v = 0; v < alphaSize; v++) { + s->len_pack[v][0] = (s->len[1][v] << 16) | s->len[0][v]; + s->len_pack[v][1] = (s->len[3][v] << 16) | s->len[2][v]; + s->len_pack[v][2] = (s->len[5][v] << 16) | s->len[4][v]; + } + } + + nSelectors = 0; + totc = 0; + gs = 0; + while (True) { + + /*--- Set group start & end marks. --*/ + if (gs >= s->nMTF) break; + ge = gs + BZ_G_SIZE - 1; + if (ge >= s->nMTF) ge = s->nMTF-1; + + /*-- + Calculate the cost of this group as coded + by each of the coding tables. + --*/ + for (t = 0; t < nGroups; t++) cost[t] = 0; + + if (nGroups == 6 && 50 == ge-gs+1) { + /*--- fast track the common case ---*/ + UInt32 cost01, cost23, cost45; + UInt16 icv; + cost01 = cost23 = cost45 = 0; + +# define BZ_ITER(nn) \ + icv = mtfv[gs+(nn)]; \ + cost01 += s->len_pack[icv][0]; \ + cost23 += s->len_pack[icv][1]; \ + cost45 += s->len_pack[icv][2]; \ + + BZ_ITER(0); BZ_ITER(1); BZ_ITER(2); BZ_ITER(3); BZ_ITER(4); + BZ_ITER(5); BZ_ITER(6); BZ_ITER(7); BZ_ITER(8); BZ_ITER(9); + BZ_ITER(10); BZ_ITER(11); BZ_ITER(12); BZ_ITER(13); BZ_ITER(14); + BZ_ITER(15); BZ_ITER(16); BZ_ITER(17); BZ_ITER(18); BZ_ITER(19); + BZ_ITER(20); BZ_ITER(21); BZ_ITER(22); BZ_ITER(23); BZ_ITER(24); + BZ_ITER(25); BZ_ITER(26); BZ_ITER(27); BZ_ITER(28); BZ_ITER(29); + BZ_ITER(30); BZ_ITER(31); BZ_ITER(32); BZ_ITER(33); BZ_ITER(34); + BZ_ITER(35); BZ_ITER(36); BZ_ITER(37); BZ_ITER(38); BZ_ITER(39); + BZ_ITER(40); BZ_ITER(41); BZ_ITER(42); BZ_ITER(43); BZ_ITER(44); + BZ_ITER(45); BZ_ITER(46); BZ_ITER(47); BZ_ITER(48); BZ_ITER(49); + +# undef BZ_ITER + + cost[0] = cost01 & 0xffff; cost[1] = cost01 >> 16; + cost[2] = cost23 & 0xffff; cost[3] = cost23 >> 16; + cost[4] = cost45 & 0xffff; cost[5] = cost45 >> 16; + + } else { + /*--- slow version which correctly handles all situations ---*/ + for (i = gs; i <= ge; i++) { + UInt16 icv = mtfv[i]; + for (t = 0; t < nGroups; t++) cost[t] += s->len[t][icv]; + } + } + + /*-- + Find the coding table which is best for this group, + and record its identity in the selector table. + --*/ + bc = 999999999; bt = -1; + for (t = 0; t < nGroups; t++) + if (cost[t] < bc) { bc = cost[t]; bt = t; }; + totc += bc; + fave[bt]++; + s->selector[nSelectors] = bt; + nSelectors++; + + /*-- + Increment the symbol frequencies for the selected table. + --*/ + if (nGroups == 6 && 50 == ge-gs+1) { + /*--- fast track the common case ---*/ + +# define BZ_ITUR(nn) s->rfreq[bt][ mtfv[gs+(nn)] ]++ + + BZ_ITUR(0); BZ_ITUR(1); BZ_ITUR(2); BZ_ITUR(3); BZ_ITUR(4); + BZ_ITUR(5); BZ_ITUR(6); BZ_ITUR(7); BZ_ITUR(8); BZ_ITUR(9); + BZ_ITUR(10); BZ_ITUR(11); BZ_ITUR(12); BZ_ITUR(13); BZ_ITUR(14); + BZ_ITUR(15); BZ_ITUR(16); BZ_ITUR(17); BZ_ITUR(18); BZ_ITUR(19); + BZ_ITUR(20); BZ_ITUR(21); BZ_ITUR(22); BZ_ITUR(23); BZ_ITUR(24); + BZ_ITUR(25); BZ_ITUR(26); BZ_ITUR(27); BZ_ITUR(28); BZ_ITUR(29); + BZ_ITUR(30); BZ_ITUR(31); BZ_ITUR(32); BZ_ITUR(33); BZ_ITUR(34); + BZ_ITUR(35); BZ_ITUR(36); BZ_ITUR(37); BZ_ITUR(38); BZ_ITUR(39); + BZ_ITUR(40); BZ_ITUR(41); BZ_ITUR(42); BZ_ITUR(43); BZ_ITUR(44); + BZ_ITUR(45); BZ_ITUR(46); BZ_ITUR(47); BZ_ITUR(48); BZ_ITUR(49); + +# undef BZ_ITUR + + } else { + /*--- slow version which correctly handles all situations ---*/ + for (i = gs; i <= ge; i++) + s->rfreq[bt][ mtfv[i] ]++; + } + + gs = ge+1; + } + if (s->verbosity >= 3) { + VPrintf2 ( " pass %d: size is %d, grp uses are ", + iter+1, totc/8 ); + for (t = 0; t < nGroups; t++) + VPrintf1 ( "%d ", fave[t] ); + VPrintf0 ( "\n" ); + } + + /*-- + Recompute the tables based on the accumulated frequencies. + --*/ + /* maxLen was changed from 20 to 17 in bzip2-1.0.3. See + comment in huffman.c for details. */ + for (t = 0; t < nGroups; t++) + BZ2_hbMakeCodeLengths ( &(s->len[t][0]), &(s->rfreq[t][0]), + alphaSize, 17 /*20*/ ); + } + + + AssertH( nGroups < 8, 3002 ); + AssertH( nSelectors < 32768 && + nSelectors <= (2 + (900000 / BZ_G_SIZE)), + 3003 ); + + + /*--- Compute MTF values for the selectors. ---*/ + { + UChar pos[BZ_N_GROUPS], ll_i, tmp2, tmp; + for (i = 0; i < nGroups; i++) pos[i] = i; + for (i = 0; i < nSelectors; i++) { + ll_i = s->selector[i]; + j = 0; + tmp = pos[j]; + while ( ll_i != tmp ) { + j++; + tmp2 = tmp; + tmp = pos[j]; + pos[j] = tmp2; + }; + pos[0] = tmp; + s->selectorMtf[i] = j; + } + }; + + /*--- Assign actual codes for the tables. --*/ + for (t = 0; t < nGroups; t++) { + minLen = 32; + maxLen = 0; + for (i = 0; i < alphaSize; i++) { + if (s->len[t][i] > maxLen) maxLen = s->len[t][i]; + if (s->len[t][i] < minLen) minLen = s->len[t][i]; + } + AssertH ( !(maxLen > 17 /*20*/ ), 3004 ); + AssertH ( !(minLen < 1), 3005 ); + BZ2_hbAssignCodes ( &(s->code[t][0]), &(s->len[t][0]), + minLen, maxLen, alphaSize ); + } + + /*--- Transmit the mapping table. ---*/ + { + Bool inUse16[16]; + for (i = 0; i < 16; i++) { + inUse16[i] = False; + for (j = 0; j < 16; j++) + if (s->inUse[i * 16 + j]) inUse16[i] = True; + } + + nBytes = s->numZ; + for (i = 0; i < 16; i++) + if (inUse16[i]) bsW(s,1,1); else bsW(s,1,0); + + for (i = 0; i < 16; i++) + if (inUse16[i]) + for (j = 0; j < 16; j++) { + if (s->inUse[i * 16 + j]) bsW(s,1,1); else bsW(s,1,0); + } + + if (s->verbosity >= 3) + VPrintf1( " bytes: mapping %d, ", s->numZ-nBytes ); + } + + /*--- Now the selectors. ---*/ + nBytes = s->numZ; + bsW ( s, 3, nGroups ); + bsW ( s, 15, nSelectors ); + for (i = 0; i < nSelectors; i++) { + for (j = 0; j < s->selectorMtf[i]; j++) bsW(s,1,1); + bsW(s,1,0); + } + if (s->verbosity >= 3) + VPrintf1( "selectors %d, ", s->numZ-nBytes ); + + /*--- Now the coding tables. ---*/ + nBytes = s->numZ; + + for (t = 0; t < nGroups; t++) { + Int32 curr = s->len[t][0]; + bsW ( s, 5, curr ); + for (i = 0; i < alphaSize; i++) { + while (curr < s->len[t][i]) { bsW(s,2,2); curr++; /* 10 */ }; + while (curr > s->len[t][i]) { bsW(s,2,3); curr--; /* 11 */ }; + bsW ( s, 1, 0 ); + } + } + + if (s->verbosity >= 3) + VPrintf1 ( "code lengths %d, ", s->numZ-nBytes ); + + /*--- And finally, the block data proper ---*/ + nBytes = s->numZ; + selCtr = 0; + gs = 0; + while (True) { + if (gs >= s->nMTF) break; + ge = gs + BZ_G_SIZE - 1; + if (ge >= s->nMTF) ge = s->nMTF-1; + AssertH ( s->selector[selCtr] < nGroups, 3006 ); + + if (nGroups == 6 && 50 == ge-gs+1) { + /*--- fast track the common case ---*/ + UInt16 mtfv_i; + UChar* s_len_sel_selCtr + = &(s->len[s->selector[selCtr]][0]); + Int32* s_code_sel_selCtr + = &(s->code[s->selector[selCtr]][0]); + +# define BZ_ITAH(nn) \ + mtfv_i = mtfv[gs+(nn)]; \ + bsW ( s, \ + s_len_sel_selCtr[mtfv_i], \ + s_code_sel_selCtr[mtfv_i] ) + + BZ_ITAH(0); BZ_ITAH(1); BZ_ITAH(2); BZ_ITAH(3); BZ_ITAH(4); + BZ_ITAH(5); BZ_ITAH(6); BZ_ITAH(7); BZ_ITAH(8); BZ_ITAH(9); + BZ_ITAH(10); BZ_ITAH(11); BZ_ITAH(12); BZ_ITAH(13); BZ_ITAH(14); + BZ_ITAH(15); BZ_ITAH(16); BZ_ITAH(17); BZ_ITAH(18); BZ_ITAH(19); + BZ_ITAH(20); BZ_ITAH(21); BZ_ITAH(22); BZ_ITAH(23); BZ_ITAH(24); + BZ_ITAH(25); BZ_ITAH(26); BZ_ITAH(27); BZ_ITAH(28); BZ_ITAH(29); + BZ_ITAH(30); BZ_ITAH(31); BZ_ITAH(32); BZ_ITAH(33); BZ_ITAH(34); + BZ_ITAH(35); BZ_ITAH(36); BZ_ITAH(37); BZ_ITAH(38); BZ_ITAH(39); + BZ_ITAH(40); BZ_ITAH(41); BZ_ITAH(42); BZ_ITAH(43); BZ_ITAH(44); + BZ_ITAH(45); BZ_ITAH(46); BZ_ITAH(47); BZ_ITAH(48); BZ_ITAH(49); + +# undef BZ_ITAH + + } else { + /*--- slow version which correctly handles all situations ---*/ + for (i = gs; i <= ge; i++) { + bsW ( s, + s->len [s->selector[selCtr]] [mtfv[i]], + s->code [s->selector[selCtr]] [mtfv[i]] ); + } + } + + + gs = ge+1; + selCtr++; + } + AssertH( selCtr == nSelectors, 3007 ); + + if (s->verbosity >= 3) + VPrintf1( "codes %d\n", s->numZ-nBytes ); +} + + +/*---------------------------------------------------*/ +void BZ2_compressBlock ( EState* s, Bool is_last_block ) +{ + if (s->nblock > 0) { + + BZ_FINALISE_CRC ( s->blockCRC ); + s->combinedCRC = (s->combinedCRC << 1) | (s->combinedCRC >> 31); + s->combinedCRC ^= s->blockCRC; + if (s->blockNo > 1) s->numZ = 0; + + if (s->verbosity >= 2) + VPrintf4( " block %d: crc = 0x%08x, " + "combined CRC = 0x%08x, size = %d\n", + s->blockNo, s->blockCRC, s->combinedCRC, s->nblock ); + + BZ2_blockSort ( s ); + } + + s->zbits = (UChar*) (&((UChar*)s->arr2)[s->nblock]); + + /*-- If this is the first block, create the stream header. --*/ + if (s->blockNo == 1) { + BZ2_bsInitWrite ( s ); + bsPutUChar ( s, BZ_HDR_B ); + bsPutUChar ( s, BZ_HDR_Z ); + bsPutUChar ( s, BZ_HDR_h ); + bsPutUChar ( s, (UChar)(BZ_HDR_0 + s->blockSize100k) ); + } + + if (s->nblock > 0) { + + bsPutUChar ( s, 0x31 ); bsPutUChar ( s, 0x41 ); + bsPutUChar ( s, 0x59 ); bsPutUChar ( s, 0x26 ); + bsPutUChar ( s, 0x53 ); bsPutUChar ( s, 0x59 ); + + /*-- Now the block's CRC, so it is in a known place. --*/ + bsPutUInt32 ( s, s->blockCRC ); + + /*-- + Now a single bit indicating (non-)randomisation. + As of version 0.9.5, we use a better sorting algorithm + which makes randomisation unnecessary. So always set + the randomised bit to 'no'. Of course, the decoder + still needs to be able to handle randomised blocks + so as to maintain backwards compatibility with + older versions of bzip2. + --*/ + bsW(s,1,0); + + bsW ( s, 24, s->origPtr ); + generateMTFValues ( s ); + sendMTFValues ( s ); + } + + + /*-- If this is the last block, add the stream trailer. --*/ + if (is_last_block) { + + bsPutUChar ( s, 0x17 ); bsPutUChar ( s, 0x72 ); + bsPutUChar ( s, 0x45 ); bsPutUChar ( s, 0x38 ); + bsPutUChar ( s, 0x50 ); bsPutUChar ( s, 0x90 ); + bsPutUInt32 ( s, s->combinedCRC ); + if (s->verbosity >= 2) + VPrintf1( " final combined CRC = 0x%08x\n ", s->combinedCRC ); + bsFinishWrite ( s ); + } +} + + +/*-------------------------------------------------------------*/ +/*--- end compress.c ---*/ +/*-------------------------------------------------------------*/ diff --git a/examples/graph/fgbzip2/crctable.cpp b/examples/graph/fgbzip2/crctable.cpp new file mode 100644 index 0000000000..c6865733cc --- /dev/null +++ b/examples/graph/fgbzip2/crctable.cpp @@ -0,0 +1,156 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +/*-------------------------------------------------------------*/ +/*--- Table for doing CRCs ---*/ +/*--- crctable.cpp ---*/ +/*-------------------------------------------------------------*/ + +/* ------------------------------------------------------------------ + The original source for this example: + This file is part of bzip2/libbzip2, a program and library for + lossless, block-sorting data compression. + + bzip2/libbzip2 version 1.0.6 of 6 September 2010 + Copyright (C) 1996-2010 Julian Seward + + This program, "bzip2", the associated library "libbzip2", and all + documentation, are copyright (C) 1996-2010 Julian R Seward. All + rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Julian Seward, jseward@bzip.org + bzip2/libbzip2 version 1.0.6 of 6 September 2010 + ------------------------------------------------------------------ */ + + +#include "bzlib_private.h" + +/*-- + I think this is an implementation of the AUTODIN-II, + Ethernet & FDDI 32-bit CRC standard. Vaguely derived + from code by Rob Warnock, in Section 51 of the + comp.compression FAQ. +--*/ + +UInt32 BZ2_crc32Table[256] = { + + /*-- Ugly, innit? --*/ + + 0x00000000L, 0x04c11db7L, 0x09823b6eL, 0x0d4326d9L, + 0x130476dcL, 0x17c56b6bL, 0x1a864db2L, 0x1e475005L, + 0x2608edb8L, 0x22c9f00fL, 0x2f8ad6d6L, 0x2b4bcb61L, + 0x350c9b64L, 0x31cd86d3L, 0x3c8ea00aL, 0x384fbdbdL, + 0x4c11db70L, 0x48d0c6c7L, 0x4593e01eL, 0x4152fda9L, + 0x5f15adacL, 0x5bd4b01bL, 0x569796c2L, 0x52568b75L, + 0x6a1936c8L, 0x6ed82b7fL, 0x639b0da6L, 0x675a1011L, + 0x791d4014L, 0x7ddc5da3L, 0x709f7b7aL, 0x745e66cdL, + 0x9823b6e0L, 0x9ce2ab57L, 0x91a18d8eL, 0x95609039L, + 0x8b27c03cL, 0x8fe6dd8bL, 0x82a5fb52L, 0x8664e6e5L, + 0xbe2b5b58L, 0xbaea46efL, 0xb7a96036L, 0xb3687d81L, + 0xad2f2d84L, 0xa9ee3033L, 0xa4ad16eaL, 0xa06c0b5dL, + 0xd4326d90L, 0xd0f37027L, 0xddb056feL, 0xd9714b49L, + 0xc7361b4cL, 0xc3f706fbL, 0xceb42022L, 0xca753d95L, + 0xf23a8028L, 0xf6fb9d9fL, 0xfbb8bb46L, 0xff79a6f1L, + 0xe13ef6f4L, 0xe5ffeb43L, 0xe8bccd9aL, 0xec7dd02dL, + 0x34867077L, 0x30476dc0L, 0x3d044b19L, 0x39c556aeL, + 0x278206abL, 0x23431b1cL, 0x2e003dc5L, 0x2ac12072L, + 0x128e9dcfL, 0x164f8078L, 0x1b0ca6a1L, 0x1fcdbb16L, + 0x018aeb13L, 0x054bf6a4L, 0x0808d07dL, 0x0cc9cdcaL, + 0x7897ab07L, 0x7c56b6b0L, 0x71159069L, 0x75d48ddeL, + 0x6b93dddbL, 0x6f52c06cL, 0x6211e6b5L, 0x66d0fb02L, + 0x5e9f46bfL, 0x5a5e5b08L, 0x571d7dd1L, 0x53dc6066L, + 0x4d9b3063L, 0x495a2dd4L, 0x44190b0dL, 0x40d816baL, + 0xaca5c697L, 0xa864db20L, 0xa527fdf9L, 0xa1e6e04eL, + 0xbfa1b04bL, 0xbb60adfcL, 0xb6238b25L, 0xb2e29692L, + 0x8aad2b2fL, 0x8e6c3698L, 0x832f1041L, 0x87ee0df6L, + 0x99a95df3L, 0x9d684044L, 0x902b669dL, 0x94ea7b2aL, + 0xe0b41de7L, 0xe4750050L, 0xe9362689L, 0xedf73b3eL, + 0xf3b06b3bL, 0xf771768cL, 0xfa325055L, 0xfef34de2L, + 0xc6bcf05fL, 0xc27dede8L, 0xcf3ecb31L, 0xcbffd686L, + 0xd5b88683L, 0xd1799b34L, 0xdc3abdedL, 0xd8fba05aL, + 0x690ce0eeL, 0x6dcdfd59L, 0x608edb80L, 0x644fc637L, + 0x7a089632L, 0x7ec98b85L, 0x738aad5cL, 0x774bb0ebL, + 0x4f040d56L, 0x4bc510e1L, 0x46863638L, 0x42472b8fL, + 0x5c007b8aL, 0x58c1663dL, 0x558240e4L, 0x51435d53L, + 0x251d3b9eL, 0x21dc2629L, 0x2c9f00f0L, 0x285e1d47L, + 0x36194d42L, 0x32d850f5L, 0x3f9b762cL, 0x3b5a6b9bL, + 0x0315d626L, 0x07d4cb91L, 0x0a97ed48L, 0x0e56f0ffL, + 0x1011a0faL, 0x14d0bd4dL, 0x19939b94L, 0x1d528623L, + 0xf12f560eL, 0xf5ee4bb9L, 0xf8ad6d60L, 0xfc6c70d7L, + 0xe22b20d2L, 0xe6ea3d65L, 0xeba91bbcL, 0xef68060bL, + 0xd727bbb6L, 0xd3e6a601L, 0xdea580d8L, 0xda649d6fL, + 0xc423cd6aL, 0xc0e2d0ddL, 0xcda1f604L, 0xc960ebb3L, + 0xbd3e8d7eL, 0xb9ff90c9L, 0xb4bcb610L, 0xb07daba7L, + 0xae3afba2L, 0xaafbe615L, 0xa7b8c0ccL, 0xa379dd7bL, + 0x9b3660c6L, 0x9ff77d71L, 0x92b45ba8L, 0x9675461fL, + 0x8832161aL, 0x8cf30badL, 0x81b02d74L, 0x857130c3L, + 0x5d8a9099L, 0x594b8d2eL, 0x5408abf7L, 0x50c9b640L, + 0x4e8ee645L, 0x4a4ffbf2L, 0x470cdd2bL, 0x43cdc09cL, + 0x7b827d21L, 0x7f436096L, 0x7200464fL, 0x76c15bf8L, + 0x68860bfdL, 0x6c47164aL, 0x61043093L, 0x65c52d24L, + 0x119b4be9L, 0x155a565eL, 0x18197087L, 0x1cd86d30L, + 0x029f3d35L, 0x065e2082L, 0x0b1d065bL, 0x0fdc1becL, + 0x3793a651L, 0x3352bbe6L, 0x3e119d3fL, 0x3ad08088L, + 0x2497d08dL, 0x2056cd3aL, 0x2d15ebe3L, 0x29d4f654L, + 0xc5a92679L, 0xc1683bceL, 0xcc2b1d17L, 0xc8ea00a0L, + 0xd6ad50a5L, 0xd26c4d12L, 0xdf2f6bcbL, 0xdbee767cL, + 0xe3a1cbc1L, 0xe760d676L, 0xea23f0afL, 0xeee2ed18L, + 0xf0a5bd1dL, 0xf464a0aaL, 0xf9278673L, 0xfde69bc4L, + 0x89b8fd09L, 0x8d79e0beL, 0x803ac667L, 0x84fbdbd0L, + 0x9abc8bd5L, 0x9e7d9662L, 0x933eb0bbL, 0x97ffad0cL, + 0xafb010b1L, 0xab710d06L, 0xa6322bdfL, 0xa2f33668L, + 0xbcb4666dL, 0xb8757bdaL, 0xb5365d03L, 0xb1f740b4L +}; + + +/*-------------------------------------------------------------*/ +/*--- end crctable.c ---*/ +/*-------------------------------------------------------------*/ diff --git a/examples/graph/fgbzip2/decompress.cpp b/examples/graph/fgbzip2/decompress.cpp new file mode 100644 index 0000000000..8012204557 --- /dev/null +++ b/examples/graph/fgbzip2/decompress.cpp @@ -0,0 +1,698 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +/*-------------------------------------------------------------*/ +/*--- Decompression machinery ---*/ +/*--- decompress.cpp ---*/ +/*-------------------------------------------------------------*/ + +/* ------------------------------------------------------------------ + The original source for this example: + This file is part of bzip2/libbzip2, a program and library for + lossless, block-sorting data compression. + + bzip2/libbzip2 version 1.0.6 of 6 September 2010 + Copyright (C) 1996-2010 Julian Seward + + This program, "bzip2", the associated library "libbzip2", and all + documentation, are copyright (C) 1996-2010 Julian R Seward. All + rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Julian Seward, jseward@bzip.org + bzip2/libbzip2 version 1.0.6 of 6 September 2010 + ------------------------------------------------------------------ */ + + +#include "bzlib_private.h" + + +/*---------------------------------------------------*/ +static +void makeMaps_d ( DState* s ) +{ + Int32 i; + s->nInUse = 0; + for (i = 0; i < 256; i++) + if (s->inUse[i]) { + s->seqToUnseq[s->nInUse] = i; + s->nInUse++; + } +} + + +/*---------------------------------------------------*/ +#define RETURN(rrr) \ + { retVal = rrr; goto save_state_and_return; }; + +#define GET_BITS(lll,vvv,nnn) \ + case lll: s->state = lll; \ + while (True) { \ + if (s->bsLive >= nnn) { \ + UInt32 v; \ + v = (s->bsBuff >> \ + (s->bsLive-nnn)) & ((1 << nnn)-1); \ + s->bsLive -= nnn; \ + vvv = v; \ + break; \ + } \ + if (s->strm->avail_in == 0) RETURN(BZ_OK); \ + s->bsBuff \ + = (s->bsBuff << 8) | \ + ((UInt32) \ + (*((UChar*)(s->strm->next_in)))); \ + s->bsLive += 8; \ + s->strm->next_in++; \ + s->strm->avail_in--; \ + s->strm->total_in_lo32++; \ + if (s->strm->total_in_lo32 == 0) \ + s->strm->total_in_hi32++; \ + } + +#define GET_UCHAR(lll,uuu) \ + GET_BITS(lll,uuu,8) + +#define GET_BIT(lll,uuu) \ + GET_BITS(lll,uuu,1) + +/*---------------------------------------------------*/ +#define GET_MTF_VAL(label1,label2,lval) \ +{ \ + if (groupPos == 0) { \ + groupNo++; \ + if (groupNo >= nSelectors) \ + RETURN(BZ_DATA_ERROR); \ + groupPos = BZ_G_SIZE; \ + gSel = s->selector[groupNo]; \ + gMinlen = s->minLens[gSel]; \ + gLimit = &(s->limit[gSel][0]); \ + gPerm = &(s->perm[gSel][0]); \ + gBase = &(s->base[gSel][0]); \ + } \ + groupPos--; \ + zn = gMinlen; \ + GET_BITS(label1, zvec, zn); \ + while (1) { \ + if (zn > 20 /* the longest code */) \ + RETURN(BZ_DATA_ERROR); \ + if (zvec <= gLimit[zn]) break; \ + zn++; \ + GET_BIT(label2, zj); \ + zvec = (zvec << 1) | zj; \ + }; \ + if (zvec - gBase[zn] < 0 \ + || zvec - gBase[zn] >= BZ_MAX_ALPHA_SIZE) \ + RETURN(BZ_DATA_ERROR); \ + lval = gPerm[zvec - gBase[zn]]; \ +} + + +/*---------------------------------------------------*/ +Int32 BZ2_decompress ( DState* s ) +{ + UChar uc; + Int32 retVal; + Int32 minLen, maxLen; + bz_stream* strm = s->strm; + + /* stuff that needs to be saved/restored */ + Int32 i; + Int32 j; + Int32 t; + Int32 alphaSize; + Int32 nGroups; + Int32 nSelectors; + Int32 EOB; + Int32 groupNo; + Int32 groupPos; + Int32 nextSym; + Int32 nblockMAX; + Int32 nblock; + Int32 es; + Int32 N; + Int32 curr; + Int32 zt; + Int32 zn; + Int32 zvec; + Int32 zj; + Int32 gSel; + Int32 gMinlen; + Int32* gLimit; + Int32* gBase; + Int32* gPerm; + + if (s->state == BZ_X_MAGIC_1) { + /*initialise the save area*/ + s->save_i = 0; + s->save_j = 0; + s->save_t = 0; + s->save_alphaSize = 0; + s->save_nGroups = 0; + s->save_nSelectors = 0; + s->save_EOB = 0; + s->save_groupNo = 0; + s->save_groupPos = 0; + s->save_nextSym = 0; + s->save_nblockMAX = 0; + s->save_nblock = 0; + s->save_es = 0; + s->save_N = 0; + s->save_curr = 0; + s->save_zt = 0; + s->save_zn = 0; + s->save_zvec = 0; + s->save_zj = 0; + s->save_gSel = 0; + s->save_gMinlen = 0; + s->save_gLimit = NULL; + s->save_gBase = NULL; + s->save_gPerm = NULL; + } + + /*restore from the save area*/ + i = s->save_i; + j = s->save_j; + t = s->save_t; + alphaSize = s->save_alphaSize; + nGroups = s->save_nGroups; + nSelectors = s->save_nSelectors; + EOB = s->save_EOB; + groupNo = s->save_groupNo; + groupPos = s->save_groupPos; + nextSym = s->save_nextSym; + nblockMAX = s->save_nblockMAX; + nblock = s->save_nblock; + es = s->save_es; + N = s->save_N; + curr = s->save_curr; + zt = s->save_zt; + zn = s->save_zn; + zvec = s->save_zvec; + zj = s->save_zj; + gSel = s->save_gSel; + gMinlen = s->save_gMinlen; + gLimit = s->save_gLimit; + gBase = s->save_gBase; + gPerm = s->save_gPerm; + + retVal = BZ_OK; + + switch (s->state) { + + GET_UCHAR(BZ_X_MAGIC_1, uc); + if (uc != BZ_HDR_B) RETURN(BZ_DATA_ERROR_MAGIC); + + GET_UCHAR(BZ_X_MAGIC_2, uc); + if (uc != BZ_HDR_Z) RETURN(BZ_DATA_ERROR_MAGIC); + + GET_UCHAR(BZ_X_MAGIC_3, uc) + if (uc != BZ_HDR_h) RETURN(BZ_DATA_ERROR_MAGIC); + + GET_BITS(BZ_X_MAGIC_4, s->blockSize100k, 8) + if (s->blockSize100k < (BZ_HDR_0 + 1) || + s->blockSize100k > (BZ_HDR_0 + 9)) RETURN(BZ_DATA_ERROR_MAGIC); + s->blockSize100k -= BZ_HDR_0; + + if (s->smallDecompress) { + s->ll16 = (UInt16*)BZALLOC( s->blockSize100k * 100000 * sizeof(UInt16) ); + s->ll4 = (UChar*)BZALLOC( + ((1 + s->blockSize100k * 100000) >> 1) * sizeof(UChar) + ); + if (s->ll16 == NULL || s->ll4 == NULL) RETURN(BZ_MEM_ERROR); + } else { + s->tt = (UInt32*)BZALLOC( s->blockSize100k * 100000 * sizeof(Int32) ); + if (s->tt == NULL) RETURN(BZ_MEM_ERROR); + } + + GET_UCHAR(BZ_X_BLKHDR_1, uc); + + if (uc == 0x17) goto endhdr_2; + if (uc != 0x31) RETURN(BZ_DATA_ERROR); + GET_UCHAR(BZ_X_BLKHDR_2, uc); + if (uc != 0x41) RETURN(BZ_DATA_ERROR); + GET_UCHAR(BZ_X_BLKHDR_3, uc); + if (uc != 0x59) RETURN(BZ_DATA_ERROR); + GET_UCHAR(BZ_X_BLKHDR_4, uc); + if (uc != 0x26) RETURN(BZ_DATA_ERROR); + GET_UCHAR(BZ_X_BLKHDR_5, uc); + if (uc != 0x53) RETURN(BZ_DATA_ERROR); + GET_UCHAR(BZ_X_BLKHDR_6, uc); + if (uc != 0x59) RETURN(BZ_DATA_ERROR); + + s->currBlockNo++; + if (s->verbosity >= 2) + VPrintf1 ( "\n [%d: huff+mtf ", s->currBlockNo ); + + s->storedBlockCRC = 0; + GET_UCHAR(BZ_X_BCRC_1, uc); + s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc); + GET_UCHAR(BZ_X_BCRC_2, uc); + s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc); + GET_UCHAR(BZ_X_BCRC_3, uc); + s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc); + GET_UCHAR(BZ_X_BCRC_4, uc); + s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc); + + GET_BITS(BZ_X_RANDBIT, s->blockRandomised, 1); + + s->origPtr = 0; + GET_UCHAR(BZ_X_ORIGPTR_1, uc); + s->origPtr = (s->origPtr << 8) | ((Int32)uc); + GET_UCHAR(BZ_X_ORIGPTR_2, uc); + s->origPtr = (s->origPtr << 8) | ((Int32)uc); + GET_UCHAR(BZ_X_ORIGPTR_3, uc); + s->origPtr = (s->origPtr << 8) | ((Int32)uc); + + if (s->origPtr < 0) + RETURN(BZ_DATA_ERROR); + if (s->origPtr > 10 + 100000*s->blockSize100k) + RETURN(BZ_DATA_ERROR); + + /*--- Receive the mapping table ---*/ + for (i = 0; i < 16; i++) { + GET_BIT(BZ_X_MAPPING_1, uc); + if (uc == 1) + s->inUse16[i] = True; else + s->inUse16[i] = False; + } + + for (i = 0; i < 256; i++) s->inUse[i] = False; + + for (i = 0; i < 16; i++) + if (s->inUse16[i]) + for (j = 0; j < 16; j++) { + GET_BIT(BZ_X_MAPPING_2, uc); + if (uc == 1) s->inUse[i * 16 + j] = True; + } + makeMaps_d ( s ); + if (s->nInUse == 0) RETURN(BZ_DATA_ERROR); + alphaSize = s->nInUse+2; + + /*--- Now the selectors ---*/ + GET_BITS(BZ_X_SELECTOR_1, nGroups, 3); + if (nGroups < 2 || nGroups > 6) RETURN(BZ_DATA_ERROR); + GET_BITS(BZ_X_SELECTOR_2, nSelectors, 15); + if (nSelectors < 1) RETURN(BZ_DATA_ERROR); + for (i = 0; i < nSelectors; i++) { + j = 0; + while (True) { + GET_BIT(BZ_X_SELECTOR_3, uc); + if (uc == 0) break; + j++; + if (j >= nGroups) RETURN(BZ_DATA_ERROR); + } + s->selectorMtf[i] = j; + } + + /*--- Undo the MTF values for the selectors. ---*/ + { + UChar pos[BZ_N_GROUPS], tmp, v; + for (v = 0; v < nGroups; v++) pos[v] = v; + + for (i = 0; i < nSelectors; i++) { + v = s->selectorMtf[i]; + tmp = pos[v]; + while (v > 0) { pos[v] = pos[v-1]; v--; } + pos[0] = tmp; + s->selector[i] = tmp; + } + } + + /*--- Now the coding tables ---*/ + for (t = 0; t < nGroups; t++) { + GET_BITS(BZ_X_CODING_1, curr, 5); + for (i = 0; i < alphaSize; i++) { + while (True) { + if (curr < 1 || curr > 20) RETURN(BZ_DATA_ERROR); + GET_BIT(BZ_X_CODING_2, uc); + if (uc == 0) break; + GET_BIT(BZ_X_CODING_3, uc); + if (uc == 0) curr++; else curr--; + } + s->len[t][i] = curr; + } + } + + /*--- Create the Huffman decoding tables ---*/ + for (t = 0; t < nGroups; t++) { + minLen = 32; + maxLen = 0; + for (i = 0; i < alphaSize; i++) { + if (s->len[t][i] > maxLen) maxLen = s->len[t][i]; + if (s->len[t][i] < minLen) minLen = s->len[t][i]; + } + BZ2_hbCreateDecodeTables ( + &(s->limit[t][0]), + &(s->base[t][0]), + &(s->perm[t][0]), + &(s->len[t][0]), + minLen, maxLen, alphaSize + ); + s->minLens[t] = minLen; + } + + /*--- Now the MTF values ---*/ + + EOB = s->nInUse+1; + nblockMAX = 100000 * s->blockSize100k; + groupNo = -1; + groupPos = 0; + + for (i = 0; i <= 255; i++) s->unzftab[i] = 0; + + /*-- MTF init --*/ + { + Int32 ii, jj, kk; + kk = MTFA_SIZE-1; + for (ii = 256 / MTFL_SIZE - 1; ii >= 0; ii--) { + for (jj = MTFL_SIZE-1; jj >= 0; jj--) { + s->mtfa[kk] = (UChar)(ii * MTFL_SIZE + jj); + kk--; + } + s->mtfbase[ii] = kk + 1; + } + } + /*-- end MTF init --*/ + + nblock = 0; + GET_MTF_VAL(BZ_X_MTF_1, BZ_X_MTF_2, nextSym); + + while (True) { + + if (nextSym == EOB) break; + + if (nextSym == BZ_RUNA || nextSym == BZ_RUNB) { + + es = -1; + N = 1; + do { + /* Check that N doesn't get too big, so that es doesn't + go negative. The maximum value that can be + RUNA/RUNB encoded is equal to the block size (post + the initial RLE), viz, 900k, so bounding N at 2 + million should guard against overflow without + rejecting any legitimate inputs. */ + if (N >= 2*1024*1024) RETURN(BZ_DATA_ERROR); + if (nextSym == BZ_RUNA) es = es + (0+1) * N; else + if (nextSym == BZ_RUNB) es = es + (1+1) * N; + N = N * 2; + GET_MTF_VAL(BZ_X_MTF_3, BZ_X_MTF_4, nextSym); + } + while (nextSym == BZ_RUNA || nextSym == BZ_RUNB); + + es++; + uc = s->seqToUnseq[ s->mtfa[s->mtfbase[0]] ]; + s->unzftab[uc] += es; + + if (s->smallDecompress) + while (es > 0) { + if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR); + s->ll16[nblock] = (UInt16)uc; + nblock++; + es--; + } + else + while (es > 0) { + if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR); + s->tt[nblock] = (UInt32)uc; + nblock++; + es--; + }; + + continue; + + } else { + + if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR); + + /*-- uc = MTF ( nextSym-1 ) --*/ + { + Int32 ii, jj, kk, pp, lno, off; + UInt32 nn; + nn = (UInt32)(nextSym - 1); + + if (nn < MTFL_SIZE) { + /* avoid general-case expense */ + pp = s->mtfbase[0]; + uc = s->mtfa[pp+nn]; + while (nn > 3) { + Int32 z = pp+nn; + s->mtfa[(z) ] = s->mtfa[(z)-1]; + s->mtfa[(z)-1] = s->mtfa[(z)-2]; + s->mtfa[(z)-2] = s->mtfa[(z)-3]; + s->mtfa[(z)-3] = s->mtfa[(z)-4]; + nn -= 4; + } + while (nn > 0) { + s->mtfa[(pp+nn)] = s->mtfa[(pp+nn)-1]; nn--; + }; + s->mtfa[pp] = uc; + } else { + /* general case */ + lno = nn / MTFL_SIZE; + off = nn % MTFL_SIZE; + pp = s->mtfbase[lno] + off; + uc = s->mtfa[pp]; + while (pp > s->mtfbase[lno]) { + s->mtfa[pp] = s->mtfa[pp-1]; pp--; + }; + s->mtfbase[lno]++; + while (lno > 0) { + s->mtfbase[lno]--; + s->mtfa[s->mtfbase[lno]] + = s->mtfa[s->mtfbase[lno-1] + MTFL_SIZE - 1]; + lno--; + } + s->mtfbase[0]--; + s->mtfa[s->mtfbase[0]] = uc; + if (s->mtfbase[0] == 0) { + kk = MTFA_SIZE-1; + for (ii = 256 / MTFL_SIZE-1; ii >= 0; ii--) { + for (jj = MTFL_SIZE-1; jj >= 0; jj--) { + s->mtfa[kk] = s->mtfa[s->mtfbase[ii] + jj]; + kk--; + } + s->mtfbase[ii] = kk + 1; + } + } + } + } + /*-- end uc = MTF ( nextSym-1 ) --*/ + + s->unzftab[s->seqToUnseq[uc]]++; + if (s->smallDecompress) + s->ll16[nblock] = (UInt16)(s->seqToUnseq[uc]); else + s->tt[nblock] = (UInt32)(s->seqToUnseq[uc]); + nblock++; + + GET_MTF_VAL(BZ_X_MTF_5, BZ_X_MTF_6, nextSym); + continue; + } + } + + /* Now we know what nblock is, we can do a better sanity + check on s->origPtr. + */ + if (s->origPtr < 0 || s->origPtr >= nblock) + RETURN(BZ_DATA_ERROR); + + /*-- Set up cftab to facilitate generation of T^(-1) --*/ + /* Check: unzftab entries in range. */ + for (i = 0; i <= 255; i++) { + if (s->unzftab[i] < 0 || s->unzftab[i] > nblock) + RETURN(BZ_DATA_ERROR); + } + /* Actually generate cftab. */ + s->cftab[0] = 0; + for (i = 1; i <= 256; i++) s->cftab[i] = s->unzftab[i-1]; + for (i = 1; i <= 256; i++) s->cftab[i] += s->cftab[i-1]; + /* Check: cftab entries in range. */ + for (i = 0; i <= 256; i++) { + if (s->cftab[i] < 0 || s->cftab[i] > nblock) { + /* s->cftab[i] can legitimately be == nblock */ + RETURN(BZ_DATA_ERROR); + } + } + /* Check: cftab entries non-descending. */ + for (i = 1; i <= 256; i++) { + if (s->cftab[i-1] > s->cftab[i]) { + RETURN(BZ_DATA_ERROR); + } + } + + s->state_out_len = 0; + s->state_out_ch = 0; + BZ_INITIALISE_CRC ( s->calculatedBlockCRC ); + s->state = BZ_X_OUTPUT; + if (s->verbosity >= 2) VPrintf0 ( "rt+rld" ); + + if (s->smallDecompress) { + + /*-- Make a copy of cftab, used in generation of T --*/ + for (i = 0; i <= 256; i++) s->cftabCopy[i] = s->cftab[i]; + + /*-- compute the T vector --*/ + for (i = 0; i < nblock; i++) { + uc = (UChar)(s->ll16[i]); + SET_LL(i, s->cftabCopy[uc]); + s->cftabCopy[uc]++; + } + + /*-- Compute T^(-1) by pointer reversal on T --*/ + i = s->origPtr; + j = GET_LL(i); + do { + Int32 tmp = GET_LL(j); + SET_LL(j, i); + i = j; + j = tmp; + } + while (i != s->origPtr); + + s->tPos = s->origPtr; + s->nblock_used = 0; + if (s->blockRandomised) { + BZ_RAND_INIT_MASK; + BZ_GET_SMALL(s->k0); s->nblock_used++; + BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK; + } else { + BZ_GET_SMALL(s->k0); s->nblock_used++; + } + + } else { + + /*-- compute the T^(-1) vector --*/ + for (i = 0; i < nblock; i++) { + uc = (UChar)(s->tt[i] & 0xff); + s->tt[s->cftab[uc]] |= (i << 8); + s->cftab[uc]++; + } + + s->tPos = s->tt[s->origPtr] >> 8; + s->nblock_used = 0; + if (s->blockRandomised) { + BZ_RAND_INIT_MASK; + BZ_GET_FAST(s->k0); s->nblock_used++; + BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK; + } else { + BZ_GET_FAST(s->k0); s->nblock_used++; + } + + } + + RETURN(BZ_OK); + + + + endhdr_2: + + GET_UCHAR(BZ_X_ENDHDR_2, uc); + if (uc != 0x72) RETURN(BZ_DATA_ERROR); + GET_UCHAR(BZ_X_ENDHDR_3, uc); + if (uc != 0x45) RETURN(BZ_DATA_ERROR); + GET_UCHAR(BZ_X_ENDHDR_4, uc); + if (uc != 0x38) RETURN(BZ_DATA_ERROR); + GET_UCHAR(BZ_X_ENDHDR_5, uc); + if (uc != 0x50) RETURN(BZ_DATA_ERROR); + GET_UCHAR(BZ_X_ENDHDR_6, uc); + if (uc != 0x90) RETURN(BZ_DATA_ERROR); + + s->storedCombinedCRC = 0; + GET_UCHAR(BZ_X_CCRC_1, uc); + s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc); + GET_UCHAR(BZ_X_CCRC_2, uc); + s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc); + GET_UCHAR(BZ_X_CCRC_3, uc); + s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc); + GET_UCHAR(BZ_X_CCRC_4, uc); + s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc); + + s->state = BZ_X_IDLE; + RETURN(BZ_STREAM_END); + + default: AssertH ( False, 4001 ); + } + + AssertH ( False, 4002 ); + + save_state_and_return: + + s->save_i = i; + s->save_j = j; + s->save_t = t; + s->save_alphaSize = alphaSize; + s->save_nGroups = nGroups; + s->save_nSelectors = nSelectors; + s->save_EOB = EOB; + s->save_groupNo = groupNo; + s->save_groupPos = groupPos; + s->save_nextSym = nextSym; + s->save_nblockMAX = nblockMAX; + s->save_nblock = nblock; + s->save_es = es; + s->save_N = N; + s->save_curr = curr; + s->save_zt = zt; + s->save_zn = zn; + s->save_zvec = zvec; + s->save_zj = zj; + s->save_gSel = gSel; + s->save_gMinlen = gMinlen; + s->save_gLimit = gLimit; + s->save_gBase = gBase; + s->save_gPerm = gPerm; + + return retVal; +} + + +/*-------------------------------------------------------------*/ +/*--- end decompress.c ---*/ +/*-------------------------------------------------------------*/ diff --git a/examples/graph/fgbzip2/fgbzip2.cpp b/examples/graph/fgbzip2/fgbzip2.cpp new file mode 100644 index 0000000000..360c976e3f --- /dev/null +++ b/examples/graph/fgbzip2/fgbzip2.cpp @@ -0,0 +1,310 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#include "tbb/tbb_config.h" +#include "../../common/utility/utility.h" + +#if __TBB_CPP11_LAMBDAS_PRESENT + +#include +#include +#include +#include +#include "tbb/compat/thread" +#include + +#include "bzlib.h" + +#include "tbb/flow_graph.h" +#include "tbb/tick_count.h" +#include "tbb/concurrent_queue.h" + +bool quiet = false; +bool verbose = false; +bool asyncIO = false; + + +bool endsWith( const std::string& str, const std::string& suffix ) { + return (str.length() > suffix.length()) && (str.compare(str.length() - suffix.length(), suffix.length(), suffix) == 0); +} + +struct buffer_t { + size_t seq_id; + unsigned long len; + char *b; + + bool operator==( const buffer_t& other ) { + return (this == &other) || (seq_id == other.seq_id && len == other.len && b == other.b); + } +}; + +buffer_t dummyBuffer = {0}; + +struct buffer_comp { + bool operator()( const buffer_t& a, const buffer_t& b ) { + return a.seq_id > b.seq_id; + } +}; + +class bufferCompressor { +public: + bufferCompressor( int block_size_in_100kb ) : my_blockSize(block_size_in_100kb) {} + + buffer_t operator()( buffer_t inputBuffer ) const; +private: + int my_blockSize; +}; + +buffer_t bufferCompressor::operator()( buffer_t inputBuffer ) const { + buffer_t compressedBuffer; + compressedBuffer.seq_id = inputBuffer.seq_id; + unsigned int outSize = (unsigned int) (((inputBuffer.len)*1.01)+600); + compressedBuffer.b = new char[outSize]; + + BZ2_bzBuffToBuffCompress( compressedBuffer.b, &outSize, inputBuffer.b, inputBuffer.len, my_blockSize, 0, 30 ); + delete[] inputBuffer.b; + + compressedBuffer.len = outSize; + + return compressedBuffer; +} + +buffer_t readChunk(std::istream& inputStream, size_t& chunksRead, size_t chunkSize ) { + buffer_t buffer; + + buffer.seq_id = chunksRead++; + buffer.b = new char[chunkSize]; + inputStream.read( buffer.b, chunkSize ); + buffer.len = static_cast( inputStream.gcount() ); + + return buffer; +} + +typedef tbb::flow::async_node async_file_reader_node; +typedef tbb::flow::async_node< buffer_t, tbb::flow::continue_msg > async_file_writer_node; + +class IOActivity { +public: + IOActivity( std::ifstream& inputStream, std::ofstream& output, size_t chunkSize ) : + my_inputStream(inputStream), my_outputStream(output), my_chunkSize(chunkSize), + my_fileWriter( [this]() { + std::priority_queue< buffer_t, std::vector, buffer_comp > my_outputQueue; + size_t my_nextOutputId = 0; + + while( true ) { + buffer_t buffer; + my_writeQueue.pop( buffer ); + if( buffer == dummyBuffer ) break; + if( buffer.seq_id == my_nextOutputId ) { + my_outputStream.write( buffer.b, buffer.len ); + delete[] buffer.b; + ++my_nextOutputId; + while( !my_outputQueue.empty() && my_outputQueue.top().seq_id == my_nextOutputId ) { + buffer = my_outputQueue.top(); + my_outputQueue.pop(); + my_outputStream.write( buffer.b, buffer.len ); + delete[] buffer.b; + ++my_nextOutputId; + } + } else { + my_outputQueue.push( buffer ); + } + } + }) + {} + + ~IOActivity() { + if( my_fileReader.joinable() ) my_fileReader.join(); + if( my_fileWriter.joinable() ) { + my_writeQueue.push( dummyBuffer ); + my_fileWriter.join(); + } + } + + void start_read( async_file_reader_node::async_gateway_type& asyncGateway ) { + if( my_inputStream.is_open() && !my_fileReader.joinable() ) { + asyncGateway.async_reserve(); + + std::thread( ([this, &asyncGateway]() { + size_t chunksRead = 0; + while( !my_inputStream.eof() ) { + buffer_t buffer = readChunk( my_inputStream, chunksRead, my_chunkSize ); + asyncGateway.async_try_put( buffer ); + } + asyncGateway.async_commit(); + }) ).swap( my_fileReader ); + + } + + } + + void write( const buffer_t& buffer ) { + my_writeQueue.push(buffer); + } + +private: + std::ifstream& my_inputStream; + std::thread my_fileReader; + + std::ofstream& my_outputStream; + tbb::concurrent_bounded_queue< buffer_t > my_writeQueue; + + size_t my_chunkSize; + + std::thread my_fileWriter; + + +}; + +void fgCompressionAsyncIO( std::ifstream& inputStream, std::ofstream& outputStream, int block_size_in_100kb ) { + size_t chunkSize = block_size_in_100kb*100*1024; + + IOActivity ioActivity( inputStream, outputStream, chunkSize ); + + tbb::flow::graph g; + + async_file_reader_node file_reader( g, [&ioActivity]( const tbb::flow::continue_msg& msg, async_file_reader_node::async_gateway_type& asyncGateway ) { + ioActivity.start_read( asyncGateway ); + } ); + + tbb::flow::function_node< buffer_t, buffer_t > compressor( g, tbb::flow::unlimited, bufferCompressor( block_size_in_100kb ) ); + + tbb::flow::sequencer_node< buffer_t > ordering( g, []( const buffer_t& buffer )->size_t { + return buffer.seq_id; + }); + + async_file_writer_node output_writer( g, [&ioActivity](const buffer_t& buffer, async_file_writer_node::async_gateway_type& asyncGateway ) { + ioActivity.write( buffer ); + }); + + make_edge( file_reader, compressor ); + make_edge( compressor, ordering ); + make_edge( ordering, output_writer ); + + file_reader.try_put( tbb::flow::continue_msg() ); + + g.wait_for_all(); +} + +void fgCompression( std::ifstream& inputStream, std::ofstream& outputStream, int block_size_in_100kb ) { + size_t chunkSize = block_size_in_100kb*100*1024; + tbb::flow::graph g; + + size_t chunksRead = 0; + tbb::flow::source_node< buffer_t > file_reader( g, [&inputStream, chunkSize, &chunksRead]( buffer_t& buffer )->bool { + if( inputStream.eof() ) return false; + buffer = readChunk( inputStream, chunksRead, chunkSize ); + return true; + } ); + + tbb::flow::function_node< buffer_t, buffer_t > compressor( g, tbb::flow::unlimited, bufferCompressor( block_size_in_100kb ) ); + + tbb::flow::sequencer_node< buffer_t > ordering(g, []( const buffer_t& buffer )->size_t { + return buffer.seq_id; + }); + + tbb::flow::function_node< buffer_t > output_writer(g, tbb::flow::serial, [&outputStream]( const buffer_t& buffer ) { + outputStream.write( buffer.b, buffer.len ); + delete[] buffer.b; + }); + + make_edge( file_reader, compressor ); + make_edge( compressor, ordering ); + make_edge( ordering, output_writer ); + + g.wait_for_all(); +} + +int main( int argc, char* argv[] ) { + try { + tbb::tick_count mainStartTime = tbb::tick_count::now(); + + const std::string archiveExtension = ".bz2"; + std::string inputFileName = ""; + int block_size_in_100kb = 1; // block size in 100 Kb chunks + + + utility::parse_cli_arguments(argc, argv, + utility::cli_argument_pack() + //"-h" option for displaying help is present implicitly + .arg(block_size_in_100kb, "-b", "\t block size in 100 Kb chunks, [1 .. 9]") + .arg(quiet, "-q", "quiet mode") + .arg(verbose, "-v", "verbose mode") + .arg(asyncIO, "-a", "asynchronous I/O") + .positional_arg(inputFileName,"filename","input file name") + ); + + if( quiet ) verbose = false; + + if( inputFileName.empty() ) { + if(!quiet) std::cerr << "Please specify input file name." << std::endl; + return -1; + } + + if( block_size_in_100kb < 1 || block_size_in_100kb > 9) { + if(!quiet) std::cerr << "Incorrect block size." << std::endl; + return -1; + } + + if( verbose ) std::cout << "Input file name: " << inputFileName << std::endl; + if( endsWith(inputFileName, archiveExtension) ) { + if(!quiet) std::cerr << "Input file already have " << archiveExtension << " extension." << std::endl; + return 0; + } + + std::ifstream inputStream( inputFileName.c_str(), std::ios::in | std::ios::binary ); + if( !inputStream.is_open() ) { + if(!quiet) std::cerr << "Cannot open " << inputFileName << " file." << std::endl; + return -1; + } + + std::string outputFileName(inputFileName + archiveExtension); + + std::ofstream outputStream( outputFileName.c_str(), std::ios::out | std::ios::binary | std::ios::trunc ); + if( !outputStream.is_open() ) { + if(!quiet) std::cerr << "Cannot open " << outputFileName << " file." << std::endl; + return -1; + } + + if( asyncIO ) { + if( verbose ) std::cout << "Running compression with async_node." << std::endl; + fgCompressionAsyncIO( inputStream, outputStream, block_size_in_100kb ); + } else { + if( verbose ) std::cout << "Running compression without async_node." << std::endl; + fgCompression( inputStream, outputStream, block_size_in_100kb ); + } + + inputStream.close(); + outputStream.close(); + + utility::report_elapsed_time((tbb::tick_count::now() - mainStartTime).seconds()); + + return 0; + } catch( std::exception& e ) { + std::cerr<<"error occurred. error text is :\"" < + + This program, "bzip2", the associated library "libbzip2", and all + documentation, are copyright (C) 1996-2010 Julian R Seward. All + rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Julian Seward, jseward@bzip.org + bzip2/libbzip2 version 1.0.6 of 6 September 2010 + ------------------------------------------------------------------ */ + + +#include "bzlib_private.h" + +/*---------------------------------------------------*/ +#define WEIGHTOF(zz0) ((zz0) & 0xffffff00) +#define DEPTHOF(zz1) ((zz1) & 0x000000ff) +#define MYMAX(zz2,zz3) ((zz2) > (zz3) ? (zz2) : (zz3)) + +#define ADDWEIGHTS(zw1,zw2) \ + (WEIGHTOF(zw1)+WEIGHTOF(zw2)) | \ + (1 + MYMAX(DEPTHOF(zw1),DEPTHOF(zw2))) + +#define UPHEAP(z) \ +{ \ + Int32 zz, tmp; \ + zz = z; tmp = heap[zz]; \ + while (weight[tmp] < weight[heap[zz >> 1]]) { \ + heap[zz] = heap[zz >> 1]; \ + zz >>= 1; \ + } \ + heap[zz] = tmp; \ +} + +#define DOWNHEAP(z) \ +{ \ + Int32 zz, yy, tmp; \ + zz = z; tmp = heap[zz]; \ + while (True) { \ + yy = zz << 1; \ + if (yy > nHeap) break; \ + if (yy < nHeap && \ + weight[heap[yy+1]] < weight[heap[yy]]) \ + yy++; \ + if (weight[tmp] < weight[heap[yy]]) break; \ + heap[zz] = heap[yy]; \ + zz = yy; \ + } \ + heap[zz] = tmp; \ +} + + +/*---------------------------------------------------*/ +void BZ2_hbMakeCodeLengths ( UChar *len, + Int32 *freq, + Int32 alphaSize, + Int32 maxLen ) +{ + /*-- + Nodes and heap entries run from 1. Entry 0 + for both the heap and nodes is a sentinel. + --*/ + Int32 nNodes, nHeap, n1, n2, i, j, k; + Bool tooLong; + + Int32 heap [ BZ_MAX_ALPHA_SIZE + 2 ]; + Int32 weight [ BZ_MAX_ALPHA_SIZE * 2 ]; + Int32 parent [ BZ_MAX_ALPHA_SIZE * 2 ]; + + for (i = 0; i < alphaSize; i++) + weight[i+1] = (freq[i] == 0 ? 1 : freq[i]) << 8; + + while (True) { + + nNodes = alphaSize; + nHeap = 0; + + heap[0] = 0; + weight[0] = 0; + parent[0] = -2; + + for (i = 1; i <= alphaSize; i++) { + parent[i] = -1; + nHeap++; + heap[nHeap] = i; + UPHEAP(nHeap); + } + + AssertH( nHeap < (BZ_MAX_ALPHA_SIZE+2), 2001 ); + + while (nHeap > 1) { + n1 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1); + n2 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1); + nNodes++; + parent[n1] = parent[n2] = nNodes; + weight[nNodes] = ADDWEIGHTS(weight[n1], weight[n2]); + parent[nNodes] = -1; + nHeap++; + heap[nHeap] = nNodes; + UPHEAP(nHeap); + } + + AssertH( nNodes < (BZ_MAX_ALPHA_SIZE * 2), 2002 ); + + tooLong = False; + for (i = 1; i <= alphaSize; i++) { + j = 0; + k = i; + while (parent[k] >= 0) { k = parent[k]; j++; } + len[i-1] = j; + if (j > maxLen) tooLong = True; + } + + if (! tooLong) break; + + /* 17 Oct 04: keep-going condition for the following loop used + to be 'i < alphaSize', which missed the last element, + theoretically leading to the possibility of the compressor + looping. However, this count-scaling step is only needed if + one of the generated Huffman code words is longer than + maxLen, which up to and including version 1.0.2 was 20 bits, + which is extremely unlikely. In version 1.0.3 maxLen was + changed to 17 bits, which has minimal effect on compression + ratio, but does mean this scaling step is used from time to + time, enough to verify that it works. + + This means that bzip2-1.0.3 and later will only produce + Huffman codes with a maximum length of 17 bits. However, in + order to preserve backwards compatibility with bitstreams + produced by versions pre-1.0.3, the decompressor must still + handle lengths of up to 20. */ + + for (i = 1; i <= alphaSize; i++) { + j = weight[i] >> 8; + j = 1 + (j / 2); + weight[i] = j << 8; + } + } +} + + +/*---------------------------------------------------*/ +void BZ2_hbAssignCodes ( Int32 *code, + UChar *length, + Int32 minLen, + Int32 maxLen, + Int32 alphaSize ) +{ + Int32 n, vec, i; + + vec = 0; + for (n = minLen; n <= maxLen; n++) { + for (i = 0; i < alphaSize; i++) + if (length[i] == n) { code[i] = vec; vec++; }; + vec <<= 1; + } +} + + +/*---------------------------------------------------*/ +void BZ2_hbCreateDecodeTables ( Int32 *limit, + Int32 *base, + Int32 *perm, + UChar *length, + Int32 minLen, + Int32 maxLen, + Int32 alphaSize ) +{ + Int32 pp, i, j, vec; + + pp = 0; + for (i = minLen; i <= maxLen; i++) + for (j = 0; j < alphaSize; j++) + if (length[j] == i) { perm[pp] = j; pp++; }; + + for (i = 0; i < BZ_MAX_CODE_LEN; i++) base[i] = 0; + for (i = 0; i < alphaSize; i++) base[length[i]+1]++; + + for (i = 1; i < BZ_MAX_CODE_LEN; i++) base[i] += base[i-1]; + + for (i = 0; i < BZ_MAX_CODE_LEN; i++) limit[i] = 0; + vec = 0; + + for (i = minLen; i <= maxLen; i++) { + vec += (base[i+1] - base[i]); + limit[i] = vec-1; + vec <<= 1; + } + for (i = minLen + 1; i <= maxLen; i++) + base[i] = ((limit[i-1] + 1) << 1) - base[i]; +} + + +/*-------------------------------------------------------------*/ +/*--- end huffman.c ---*/ +/*-------------------------------------------------------------*/ diff --git a/examples/graph/fgbzip2/index.html b/examples/graph/fgbzip2/index.html new file mode 100644 index 0000000000..0a517c249e --- /dev/null +++ b/examples/graph/fgbzip2/index.html @@ -0,0 +1,132 @@ + + + +

Overview

+ +fgbzip2 is a parallel implementation of bzip2 block-sorting file compressor that uses tbb::flow. +The output of this application is fully compatible with bzip2 v1.0.6 or newer. + +

+This example includes software developed by Julian R Seward. See +here for copyright information. +

+ +It exemplifies the async_node CPF, among others. + +

Files

+
+
fgbzip2.cpp +
Flow Graph implementation of bzip2 compressor. + +
blocksort.cpp +
Block sorting machinery of libbzip2. + +
bzlib.cpp +
libbzip2 top-level functions. + +
bzlib.h +
Public header file for the libbzip2. + +
bzlib_private.h +
Private header file for the libbzip2. + +
compress.cpp +
Compression machinery of libbzip2. + +
crctable.cpp +
libbzip2 table for doing CRCs. + +
decompress.cpp +
Decompression machinery of libbzip2. + +
huffman.cpp +
Huffman coding low-level stuff of libbzip2. + +
randtable.cpp +
libbzip2 table for randomising repetitive blocks. + +
Makefile +
Makefile for building example. + +
+ +

Directories

+
+There are no any sub-directories. +
+ +

To Build

+General build directions can be found here. +

+ +

Usage

+
+ +
fgbzip2 -h +
Prints the help for command line options +
fgbzip2 [-b=value] [-q] [-v] [-a] [filename] +
-b block size in 100 Kb chunks, [1 .. 9]
+ -q limits output to timing info; overrides verbose
+ -v print diagnostic output to screen
+ -a use async_node version
+ filename name of the file to compress
+ + +
To run a short version of this example, e.g., for use with Intel® Parallel Inspector: +
Build a debug version of the example + (see the build directions). +
Run it with a small problem size, e.g., fgbzip2 -b=1 -a fgbzip2. +
+ + + +
+Up to parent directory +

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel is a registered trademark or trademark of Intel Corporation +or its subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. + + +

+The "libbzip2" sources for this example is +Copyright (c) 1996-2010 Julian R Seward. +All rights reserved. +

+

+Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +

    +
  1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +
  2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. +
  3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. +
  4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. +
+

+

+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +

+
+ + diff --git a/examples/graph/fgbzip2/msvs/fgbzip2.sln b/examples/graph/fgbzip2/msvs/fgbzip2.sln new file mode 100644 index 0000000000..cc273f2834 --- /dev/null +++ b/examples/graph/fgbzip2/msvs/fgbzip2.sln @@ -0,0 +1,26 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fgbzip2", "fgbzip2.vcxproj", "{C931C7A2-074E-4150-9E7A-39A03250411E}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|Win32.ActiveCfg = Debug|Win32 + {C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|Win32.Build.0 = Debug|Win32 + {C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|x64.ActiveCfg = Debug|x64 + {C931C7A2-074E-4150-9E7A-39A03250411E}.Debug|x64.Build.0 = Debug|x64 + {C931C7A2-074E-4150-9E7A-39A03250411E}.Release|Win32.ActiveCfg = Release|Win32 + {C931C7A2-074E-4150-9E7A-39A03250411E}.Release|Win32.Build.0 = Release|Win32 + {C931C7A2-074E-4150-9E7A-39A03250411E}.Release|x64.ActiveCfg = Release|x64 + {C931C7A2-074E-4150-9E7A-39A03250411E}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/examples/graph/fgbzip2/msvs/fgbzip2.vcxproj b/examples/graph/fgbzip2/msvs/fgbzip2.vcxproj new file mode 100644 index 0000000000..ab61551d56 --- /dev/null +++ b/examples/graph/fgbzip2/msvs/fgbzip2.vcxproj @@ -0,0 +1,219 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + fgbzip2 + {C931C7A2-074E-4150-9E7A-39A03250411E} + fgbzip2 + Win32Proj + + + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + v120 + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + C:\svn\trunk\tbb\1.0\build\windows_intel64_cl_vc12_debug;$(LibraryPath) + + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + TBB_PREVIEW_FLOW_GRAPH_NODES;WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + ProgramDatabase + true + + + tbb_debug.lib;tbbmalloc_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Console + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 debug "$(OutDir)" + + + + + X64 + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + TBB_PREVIEW_FLOW_GRAPH_NODES;WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + ProgramDatabase + true + + + tbb_debug.lib;tbbmalloc_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Console + MachineX64 + false + + + Copying DLLs and PDBs + REM call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 debug "$(OutDir)" + + + + + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + TBB_PREVIEW_FLOW_GRAPH_NODES;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + true + + + tbb.lib;tbbmalloc.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Console + true + true + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 release "$(OutDir)" + + + + + X64 + + + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + TBB_PREVIEW_FLOW_GRAPH_NODES;WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + true + + + tbb.lib;tbbmalloc.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Console + true + true + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 release "$(OutDir)" + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/graph/fgbzip2/randtable.cpp b/examples/graph/fgbzip2/randtable.cpp new file mode 100644 index 0000000000..6210d0fea7 --- /dev/null +++ b/examples/graph/fgbzip2/randtable.cpp @@ -0,0 +1,136 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +/*-------------------------------------------------------------*/ +/*--- Table for randomising repetitive blocks ---*/ +/*--- randtable.cpp ---*/ +/*-------------------------------------------------------------*/ + +/* ------------------------------------------------------------------ + The original source for this example: + This file is part of bzip2/libbzip2, a program and library for + lossless, block-sorting data compression. + + bzip2/libbzip2 version 1.0.6 of 6 September 2010 + Copyright (C) 1996-2010 Julian Seward + + This program, "bzip2", the associated library "libbzip2", and all + documentation, are copyright (C) 1996-2010 Julian R Seward. All + rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Julian Seward, jseward@bzip.org + bzip2/libbzip2 version 1.0.6 of 6 September 2010 + ------------------------------------------------------------------ */ + + +#include "bzlib_private.h" + + +/*---------------------------------------------*/ +Int32 BZ2_rNums[512] = { + 619, 720, 127, 481, 931, 816, 813, 233, 566, 247, + 985, 724, 205, 454, 863, 491, 741, 242, 949, 214, + 733, 859, 335, 708, 621, 574, 73, 654, 730, 472, + 419, 436, 278, 496, 867, 210, 399, 680, 480, 51, + 878, 465, 811, 169, 869, 675, 611, 697, 867, 561, + 862, 687, 507, 283, 482, 129, 807, 591, 733, 623, + 150, 238, 59, 379, 684, 877, 625, 169, 643, 105, + 170, 607, 520, 932, 727, 476, 693, 425, 174, 647, + 73, 122, 335, 530, 442, 853, 695, 249, 445, 515, + 909, 545, 703, 919, 874, 474, 882, 500, 594, 612, + 641, 801, 220, 162, 819, 984, 589, 513, 495, 799, + 161, 604, 958, 533, 221, 400, 386, 867, 600, 782, + 382, 596, 414, 171, 516, 375, 682, 485, 911, 276, + 98, 553, 163, 354, 666, 933, 424, 341, 533, 870, + 227, 730, 475, 186, 263, 647, 537, 686, 600, 224, + 469, 68, 770, 919, 190, 373, 294, 822, 808, 206, + 184, 943, 795, 384, 383, 461, 404, 758, 839, 887, + 715, 67, 618, 276, 204, 918, 873, 777, 604, 560, + 951, 160, 578, 722, 79, 804, 96, 409, 713, 940, + 652, 934, 970, 447, 318, 353, 859, 672, 112, 785, + 645, 863, 803, 350, 139, 93, 354, 99, 820, 908, + 609, 772, 154, 274, 580, 184, 79, 626, 630, 742, + 653, 282, 762, 623, 680, 81, 927, 626, 789, 125, + 411, 521, 938, 300, 821, 78, 343, 175, 128, 250, + 170, 774, 972, 275, 999, 639, 495, 78, 352, 126, + 857, 956, 358, 619, 580, 124, 737, 594, 701, 612, + 669, 112, 134, 694, 363, 992, 809, 743, 168, 974, + 944, 375, 748, 52, 600, 747, 642, 182, 862, 81, + 344, 805, 988, 739, 511, 655, 814, 334, 249, 515, + 897, 955, 664, 981, 649, 113, 974, 459, 893, 228, + 433, 837, 553, 268, 926, 240, 102, 654, 459, 51, + 686, 754, 806, 760, 493, 403, 415, 394, 687, 700, + 946, 670, 656, 610, 738, 392, 760, 799, 887, 653, + 978, 321, 576, 617, 626, 502, 894, 679, 243, 440, + 680, 879, 194, 572, 640, 724, 926, 56, 204, 700, + 707, 151, 457, 449, 797, 195, 791, 558, 945, 679, + 297, 59, 87, 824, 713, 663, 412, 693, 342, 606, + 134, 108, 571, 364, 631, 212, 174, 643, 304, 329, + 343, 97, 430, 751, 497, 314, 983, 374, 822, 928, + 140, 206, 73, 263, 980, 736, 876, 478, 430, 305, + 170, 514, 364, 692, 829, 82, 855, 953, 676, 246, + 369, 970, 294, 750, 807, 827, 150, 790, 288, 923, + 804, 378, 215, 828, 592, 281, 565, 555, 710, 82, + 896, 831, 547, 261, 524, 462, 293, 465, 502, 56, + 661, 821, 976, 991, 658, 869, 905, 758, 745, 193, + 768, 550, 608, 933, 378, 286, 215, 979, 792, 961, + 61, 688, 793, 644, 986, 403, 106, 366, 905, 644, + 372, 567, 466, 434, 645, 210, 389, 550, 919, 135, + 780, 773, 635, 389, 707, 100, 626, 958, 165, 504, + 920, 176, 193, 713, 857, 265, 203, 50, 668, 108, + 645, 990, 626, 197, 510, 357, 358, 850, 858, 364, + 936, 638 +}; + + +/*-------------------------------------------------------------*/ +/*--- end randtable.c ---*/ +/*-------------------------------------------------------------*/ diff --git a/examples/graph/fgbzip2/xcode/fgbzip2.xcodeproj/project.pbxproj b/examples/graph/fgbzip2/xcode/fgbzip2.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..399a4b8b11 --- /dev/null +++ b/examples/graph/fgbzip2/xcode/fgbzip2.xcodeproj/project.pbxproj @@ -0,0 +1,265 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + A1F593A60B8F042A00073279 /* fgbzip2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F593A50B8F042A00073279 /* fgbzip2.cpp */; }; + A1F593B70B8F06F900073279 /* libtbb.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A1F593B30B8F06F900073279 /* libtbb.dylib */; }; + A1F593BB0B8F072500073279 /* libtbb.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = A1F593B30B8F06F900073279 /* libtbb.dylib */; }; + EAA00DB11B443FB000A83D1A /* blocksort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAA00D931B443FB000A83D1A /* blocksort.cpp */; }; + EAA00DB31B443FB000A83D1A /* bzlib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAA00D961B443FB000A83D1A /* bzlib.cpp */; }; + EAA00DB51B443FB000A83D1A /* compress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAA00D991B443FB000A83D1A /* compress.cpp */; }; + EAA00DB71B443FB000A83D1A /* crctable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAA00D9B1B443FB000A83D1A /* crctable.cpp */; }; + EAA00DB91B443FB000A83D1A /* decompress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAA00D9D1B443FB000A83D1A /* decompress.cpp */; }; + EAA00DBB1B443FB000A83D1A /* huffman.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAA00DA11B443FB000A83D1A /* huffman.cpp */; }; + EAA00DBE1B443FB000A83D1A /* randtable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAA00DAB1B443FB000A83D1A /* randtable.cpp */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 8DD76F690486A84900D96B5E /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 12; + dstPath = ""; + dstSubfolderSpec = 16; + files = ( + A1F593BB0B8F072500073279 /* libtbb.dylib in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 8DD76F6C0486A84900D96B5E /* fgbzip2 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = fgbzip2; sourceTree = BUILT_PRODUCTS_DIR; }; + A1F593A50B8F042A00073279 /* fgbzip2.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = fgbzip2.cpp; path = ../fgbzip2.cpp; sourceTree = SOURCE_ROOT; }; + A1F593B30B8F06F900073279 /* libtbb.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libtbb.dylib; path = ../../../../lib/libtbb.dylib; sourceTree = SOURCE_ROOT; }; + EAA00D931B443FB000A83D1A /* blocksort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = blocksort.cpp; path = ../blocksort.cpp; sourceTree = ""; }; + EAA00D951B443FB000A83D1A /* bzlib_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = bzlib_private.h; path = ../bzlib_private.h; sourceTree = ""; }; + EAA00D961B443FB000A83D1A /* bzlib.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = bzlib.cpp; path = ../bzlib.cpp; sourceTree = ""; }; + EAA00D971B443FB000A83D1A /* bzlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = bzlib.h; path = ../bzlib.h; sourceTree = ""; }; + EAA00D991B443FB000A83D1A /* compress.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = compress.cpp; path = ../compress.cpp; sourceTree = ""; }; + EAA00D9B1B443FB000A83D1A /* crctable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = crctable.cpp; path = ../crctable.cpp; sourceTree = ""; }; + EAA00D9D1B443FB000A83D1A /* decompress.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = decompress.cpp; path = ../decompress.cpp; sourceTree = ""; }; + EAA00DA11B443FB000A83D1A /* huffman.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = huffman.cpp; path = ../huffman.cpp; sourceTree = ""; }; + EAA00DAB1B443FB000A83D1A /* randtable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = randtable.cpp; path = ../randtable.cpp; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8DD76F660486A84900D96B5E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A1F593B70B8F06F900073279 /* libtbb.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 08FB7794FE84155DC02AAC07 /* fgbzip2 */ = { + isa = PBXGroup; + children = ( + 08FB7795FE84155DC02AAC07 /* Source */, + A1F593B20B8F06F900073279 /* External Frameworks and Libraries */, + 1AB674ADFE9D54B511CA2CBB /* Products */, + ); + name = fgbzip2; + sourceTree = ""; + }; + 08FB7795FE84155DC02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + EAA00D931B443FB000A83D1A /* blocksort.cpp */, + EAA00D951B443FB000A83D1A /* bzlib_private.h */, + EAA00D961B443FB000A83D1A /* bzlib.cpp */, + EAA00D971B443FB000A83D1A /* bzlib.h */, + EAA00D991B443FB000A83D1A /* compress.cpp */, + EAA00D9B1B443FB000A83D1A /* crctable.cpp */, + EAA00D9D1B443FB000A83D1A /* decompress.cpp */, + EAA00DA11B443FB000A83D1A /* huffman.cpp */, + EAA00DAB1B443FB000A83D1A /* randtable.cpp */, + A1F593A50B8F042A00073279 /* fgbzip2.cpp */, + ); + name = Source; + sourceTree = ""; + }; + 1AB674ADFE9D54B511CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8DD76F6C0486A84900D96B5E /* fgbzip2 */, + ); + name = Products; + sourceTree = ""; + }; + A1F593B20B8F06F900073279 /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + A1F593B30B8F06F900073279 /* libtbb.dylib */, + ); + name = "External Frameworks and Libraries"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8DD76F620486A84900D96B5E /* fgbzip2 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "fgbzip2" */; + buildPhases = ( + 8DD76F640486A84900D96B5E /* Sources */, + 8DD76F660486A84900D96B5E /* Frameworks */, + 8DD76F690486A84900D96B5E /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = fgbzip2; + productInstallPath = "$(HOME)/bin"; + productName = fgbzip2; + productReference = 8DD76F6C0486A84900D96B5E /* fgbzip2 */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0610; + }; + buildConfigurationList = 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "fgbzip2" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + en, + ); + mainGroup = 08FB7794FE84155DC02AAC07 /* fgbzip2 */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8DD76F620486A84900D96B5E /* fgbzip2 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 8DD76F640486A84900D96B5E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EAA00DB91B443FB000A83D1A /* decompress.cpp in Sources */, + EAA00DBB1B443FB000A83D1A /* huffman.cpp in Sources */, + EAA00DB31B443FB000A83D1A /* bzlib.cpp in Sources */, + EAA00DB71B443FB000A83D1A /* crctable.cpp in Sources */, + A1F593A60B8F042A00073279 /* fgbzip2.cpp in Sources */, + EAA00DB11B443FB000A83D1A /* blocksort.cpp in Sources */, + EAA00DBE1B443FB000A83D1A /* randtable.cpp in Sources */, + EAA00DB51B443FB000A83D1A /* compress.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1DEB923208733DC60010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = fgbzip2; + ZERO_LINK = NO; + }; + name = Debug; + }; + 1DEB923308733DC60010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = fgbzip2; + ZERO_LINK = NO; + }; + name = Release; + }; + 1DEB923608733DC60010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_PREPROCESSOR_DEFINITIONS = TBB_PREVIEW_FLOW_GRAPH_NODES; + GCC_VERSION = ""; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.9; + ONLY_ACTIVE_ARCH = YES; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Debug; + }; + 1DEB923708733DC60010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_PREPROCESSOR_DEFINITIONS = TBB_PREVIEW_FLOW_GRAPH_NODES; + GCC_VERSION = ""; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.9; + ONLY_ACTIVE_ARCH = YES; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "fgbzip2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB923208733DC60010E9CD /* Debug */, + 1DEB923308733DC60010E9CD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "fgbzip2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB923608733DC60010E9CD /* Debug */, + 1DEB923708733DC60010E9CD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; +/* End XCConfigurationList section */ + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/examples/graph/index.html b/examples/graph/index.html new file mode 100644 index 0000000000..df37e757ad --- /dev/null +++ b/examples/graph/index.html @@ -0,0 +1,30 @@ + + + +

Overview

+This directory has examples of tbb::flow. + +

Directories

+
+
dining_philosophers +
An implementation of dining philosophers in graph using the reserving join node. +
binpack +
A solution to the binpacking problem using a queue_node, a buffer_node and function_nodes. +
logic_sim +
A simplistic example of a collection of digital logic gates that can be easily composed into larger circuits. +
som +
A simple example of a Kohonen Self-Organizing Map using cancellation. +
+ +
+Up to parent directory +

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel is a registered trademark or trademark of Intel Corporation +or its subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. + + + diff --git a/examples/graph/logic_sim/D_latch.h b/examples/graph/logic_sim/D_latch.h new file mode 100644 index 0000000000..bbe056a7d5 --- /dev/null +++ b/examples/graph/logic_sim/D_latch.h @@ -0,0 +1,60 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#ifndef __TBBexample_graph_logicsim_dlatch_H +#define __TBBexample_graph_logicsim_dlatch_H 1 + +#include "basics.h" + +class D_latch : public composite_node< tuple< signal_t, signal_t >, tuple< signal_t, signal_t > > { + broadcast_node D_port; + broadcast_node E_port; + not_gate a_not; + and_gate<2> first_and; + and_gate<2> second_and; + nor_gate<2> first_nor; + nor_gate<2> second_nor; + graph& my_graph; + typedef composite_node< tuple< signal_t, signal_t >, tuple< signal_t, signal_t > > base_type; + + public: + D_latch(graph& g) : base_type(g), my_graph(g), D_port(g), E_port(g), a_not(g), first_and(g), second_and(g), + first_nor(g), second_nor(g) + { + make_edge(D_port, input_port<0>(a_not)); + make_edge(D_port, input_port<1>(second_and)); + make_edge(E_port, input_port<1>(first_and)); + make_edge(E_port, input_port<0>(second_and)); + make_edge(a_not, input_port<0>(first_and)); + make_edge(first_and, input_port<0>(first_nor)); + make_edge(second_and, input_port<1>(second_nor)); + make_edge(first_nor, input_port<0>(second_nor)); + make_edge(second_nor, input_port<1>(first_nor)); + + base_type::input_ports_type input_tuple(D_port, E_port); + base_type::output_ports_type output_tuple(output_port<0>(first_nor), output_port<0>(second_nor)); + + base_type::set_external_ports(input_tuple, output_tuple); + base_type::add_visible_nodes(D_port, E_port, a_not, first_and, second_and, first_nor, second_nor); + } + ~D_latch() {} +}; + +#endif /* __TBBexample_graph_logicsim_dlatch_H */ diff --git a/examples/graph/logic_sim/Makefile b/examples/graph/logic_sim/Makefile new file mode 100644 index 0000000000..e5a985a501 --- /dev/null +++ b/examples/graph/logic_sim/Makefile @@ -0,0 +1,55 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# GNU Makefile that builds and runs example. +run_cmd= +PROG=test_all +ARGS=4 +PERF_RUN_ARGS=auto silent + +# The C++ compiler +ifneq (,$(shell which icc 2>/dev/null)) +CXX=icc +endif # which icc + +ifeq ($(shell uname), Linux) +ifeq ($(target), android) +LIBS+= --sysroot=$(SYSROOT) +run_cmd=../../common/android.linux.launcher.sh +else +LIBS+= -lrt +endif +endif + +all: release test + +release: *.cpp + $(CXX) -O2 -DNDEBUG $(CXXFLAGS) -o $(PROG) $(PROG).cpp -std=c++0x -ltbb $(LIBS) + +debug: *.cpp + $(CXX) -O0 -g -DTBB_USE_DEBUG $(CXXFLAGS) -o $(PROG) $(PROG).cpp -std=c++0x -ltbb_debug $(LIBS) +clean: + $(RM) $(PROG) *.o *.d + +test: + $(run_cmd) ./$(PROG) $(ARGS) + +perf_build: release + +perf_run: + $(run_cmd) ./$(PROG) $(PERF_RUN_ARGS) diff --git a/examples/graph/logic_sim/Makefile.windows b/examples/graph/logic_sim/Makefile.windows new file mode 100644 index 0000000000..5c162b63d3 --- /dev/null +++ b/examples/graph/logic_sim/Makefile.windows @@ -0,0 +1,53 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# Common Makefile that builds and runs example. +PROG=test_all +ARGS=4 +PERF_RUN_ARGS=auto silent + +# Try to find icl.exe +CXX1 = $(TBB_CXX)- +CXX2 = $(CXX1:icl.exe-=icl.exe) +CXX = $(CXX2:-=cl.exe) + +# The C++ compiler options +MYCXXFLAGS = /TP /EHsc /W3 /nologo /D _CONSOLE /D _MBCS /D WIN32 /D _CRT_SECURE_NO_DEPRECATE $(CXXFLAGS) +MYLDFLAGS =/INCREMENTAL:NO /NOLOGO /DEBUG /FIXED:NO $(LDFLAGS) + +all: release test + +release: *.cpp + $(CXX) $(PROG).cpp /MD /O2 /D NDEBUG $(MYCXXFLAGS) /link tbb.lib $(LIBS) $(MYLDFLAGS) /OUT:$(PROG).exe + +debug: *.cpp + $(CXX) $(PROG).cpp /MDd /Od /Zi /D TBB_USE_DEBUG /D _DEBUG $(MYCXXFLAGS) /link tbb_debug.lib $(LIBS) $(MYLDFLAGS) /OUT:$(PROG).exe + +clean: + @cmd.exe /C del $(PROG).exe *.obj *.?db *.manifest + +test: + $(PROG) $(ARGS) + +compiler_check: + @$(CXX) >nul 2>&1 || echo "$(CXX) command not found. Check if CXX=$(CXX) is set properly" + +perf_build: release + +perf_run: + $(PROG) $(PERF_RUN_ARGS) diff --git a/examples/graph/logic_sim/basics.h b/examples/graph/logic_sim/basics.h new file mode 100644 index 0000000000..eeced8e222 --- /dev/null +++ b/examples/graph/logic_sim/basics.h @@ -0,0 +1,560 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#ifndef __TBBexample_graph_logicsim_basics_H +#define __TBBexample_graph_logicsim_basics_H 1 + +#include +#include +#include "tbb/atomic.h" +#include "tbb/task_scheduler_init.h" +#include "tbb/tick_count.h" +#include "tbb/flow_graph.h" +#include "../../common/utility/utility.h" + +#ifndef _WIN32 +#include +#include + +void rt_sleep(int msec) { + usleep(msec*1000); +} + +#else //_WIN32 + +#undef OLDUNIXTIME +#undef STDTIME + +#include + +void rt_sleep(int msec) { + Sleep(msec); +} +#endif /* _WIN32 */ + +using namespace std; +using namespace tbb; +using namespace tbb::flow; + +typedef enum { low=0, high, undefined } signal_t; + +template class gate; + +template<> +class gate<1> : public composite_node< tuple< signal_t >, tuple< signal_t > > { +protected: + typedef indexer_node input_port_t; + typedef multifunction_node< input_port_t::output_type, tuple > gate_fn_t; + typedef gate_fn_t::output_ports_type ports_type; + typedef composite_node< tuple< signal_t >, tuple< signal_t > > base_type; +public: + template + gate(graph& g, Body b) : base_type(g), my_graph(g), in_ports(g), gate_fn(g, 1, b) { + make_edge(in_ports, gate_fn); + base_type::input_ports_type input_tuple(input_port<0>(in_ports)); + base_type::output_ports_type output_tuple(output_port<0>(gate_fn)); + base_type::set_external_ports(input_tuple, output_tuple); + base_type::add_visible_nodes(in_ports, gate_fn); + } + virtual ~gate() {} + gate& operator=(const gate& src) { return *this; } +protected: + graph& my_graph; +private: + input_port_t in_ports; + gate_fn_t gate_fn; +}; + +template<> +class gate<2> : public composite_node< tuple< signal_t, signal_t >, tuple< signal_t > > { +protected: + typedef indexer_node input_port_t; + typedef multifunction_node< input_port_t::output_type, tuple > gate_fn_t; + typedef gate_fn_t::output_ports_type ports_type; + typedef composite_node< tuple< signal_t, signal_t >, tuple< signal_t > > base_type; +public: + template + gate(graph& g, Body b) : base_type(g), my_graph(g), in_ports(g), gate_fn(g, 1, b) { + make_edge(in_ports, gate_fn); + base_type::input_ports_type input_tuple(input_port<0>(in_ports),input_port<1>(in_ports)); + base_type::output_ports_type output_tuple(output_port<0>(gate_fn)); + base_type::set_external_ports(input_tuple, output_tuple); + base_type::add_visible_nodes(in_ports, gate_fn); + } + virtual ~gate() {} + gate& operator=(const gate& src) { return *this; } +protected: + graph& my_graph; +private: + input_port_t in_ports; + gate_fn_t gate_fn; +}; + +template<> +class gate<3> : public composite_node< tuple< signal_t, signal_t, signal_t >, tuple< signal_t > > { +protected: + typedef indexer_node input_port_t; + typedef multifunction_node< input_port_t::output_type, tuple > gate_fn_t; + typedef gate_fn_t::output_ports_type ports_type; + typedef composite_node< tuple< signal_t, signal_t, signal_t >, tuple< signal_t > > base_type; +public: + template + gate(graph& g, Body b) : base_type(g), my_graph(g), in_ports(g), gate_fn(g, 1, b) { + make_edge(in_ports, gate_fn); + base_type::input_ports_type input_tuple(input_port<0>(in_ports),input_port<1>(in_ports),input_port<2>(in_ports)); + base_type::output_ports_type output_tuple(output_port<0>(gate_fn)); + base_type::set_external_ports(input_tuple, output_tuple); + base_type::add_visible_nodes(in_ports, gate_fn); + } + virtual ~gate() {} + gate& operator=(const gate& src) { return *this; } +protected: + graph& my_graph; +private: + input_port_t in_ports; + gate_fn_t gate_fn; +}; + +template<> +class gate<4> : public composite_node< tuple< signal_t, signal_t, signal_t, signal_t >, tuple< signal_t > > { +protected: + typedef indexer_node input_port_t; + typedef multifunction_node< input_port_t::output_type, tuple > gate_fn_t; + typedef gate_fn_t::output_ports_type ports_type; + typedef composite_node< tuple< signal_t, signal_t, signal_t, signal_t >, tuple< signal_t > > base_type; +public: + template + gate(graph& g, Body b) : base_type(g), my_graph(g), in_ports(g), gate_fn(g, 1, b) { + make_edge(in_ports, gate_fn); + base_type::input_ports_type input_tuple(input_port<0>(in_ports),input_port<1>(in_ports),input_port<2>(in_ports), input_port<3>(in_ports)); + base_type::output_ports_type output_tuple(output_port<0>(gate_fn)); + base_type::set_external_ports(input_tuple, output_tuple); + base_type::add_visible_nodes(in_ports, gate_fn); + } + virtual ~gate() {} + gate& operator=(const gate& src) { return *this; } +protected: + graph& my_graph; +private: + input_port_t in_ports; + gate_fn_t gate_fn; +}; + +// Input devices +class steady_signal { + graph& my_graph; + signal_t init_signal; + write_once_node signal_node; + public: + steady_signal(graph& g, signal_t v) : + my_graph(g), init_signal(v), signal_node(g) {} + steady_signal(const steady_signal& src) : + my_graph(src.my_graph), init_signal(src.init_signal), + signal_node(src.my_graph) {} + ~steady_signal() {} + // Assignment is ignored + steady_signal& operator=(const steady_signal& src) { return *this; } + sender& get_out() { return signal_node; } + void activate() { signal_node.try_put(init_signal); } +}; + +class pulse { + class clock_body { + size_t& ms; + int& reps; + signal_t val; + public: + clock_body(size_t& _ms, int& _reps) : ms(_ms), reps(_reps), val(low) {} + bool operator()(signal_t& out) { + rt_sleep((int)ms); + if (reps>0) --reps; + if (val==low) val = high; + else val = low; + out = val; + return reps>0 || reps == -1; + } + }; + graph& my_graph; + size_t ms, init_ms; + int reps, init_reps; + source_node clock_node; + +public: + pulse(graph& g, size_t _ms=1000, int _reps=-1) : + my_graph(g), ms(_ms), init_ms(_ms), reps(_reps), init_reps(_reps), + clock_node(g, clock_body(ms, reps), false) + {} + pulse(const pulse& src) : + my_graph(src.my_graph), ms(src.init_ms), init_ms(src.init_ms), + reps(src.init_reps), init_reps(src.init_reps), + clock_node(src.my_graph, clock_body(ms, reps), false) + {} + ~pulse() {} + // Assignment changes the behavior of LHS to that of the RHS, but doesn't change owning graph + pulse& operator=(const pulse& src) { + ms = src.ms; init_ms = src.init_ms; reps = src.reps; init_reps = src.init_reps; + return *this; + } + sender& get_out() { return clock_node; } + void activate() { clock_node.activate(); } + void reset() { reps = init_reps; } +}; + +class push_button { + graph& my_graph; + overwrite_node push_button_node; + public: + push_button(graph& g) : my_graph(g), push_button_node(g) { + push_button_node.try_put(low); + } + push_button(const push_button& src) : + my_graph(src.my_graph), push_button_node(src.my_graph) { + push_button_node.try_put(low); + } + ~push_button() {} + // Assignment is ignored + push_button& operator=(const push_button& src) { return *this; } + sender& get_out() { return push_button_node; } + void press() { push_button_node.try_put(high); } + void release() { push_button_node.try_put(low); } +}; + +class toggle { + graph& my_graph; + signal_t state; + overwrite_node toggle_node; + public: + toggle(graph& g) : my_graph(g), state(undefined), toggle_node(g) {} + toggle(const toggle& src) : my_graph(src.my_graph), state(undefined), + toggle_node(src.my_graph) {} + ~toggle() {} + // Assignment ignored + toggle& operator=(const toggle& src) { return *this; } + sender& get_out() { return toggle_node; } + void flip() { + if (state==high) state = low; + else state = high; + toggle_node.try_put(state); + } + void activate() { + state = low; + toggle_node.try_put(state); + } +}; + +// Basic gates +class buffer : public gate<1> { + using gate<1>::my_graph; + typedef gate<1>::ports_type ports_type; + class buffer_body { + signal_t state; + bool touched; + public: + buffer_body() : state(undefined), touched(false) {} + void operator()(const input_port_t::output_type &v, ports_type& p) { + if (!touched || state != cast_to(v)) { + state = cast_to(v); + tbb::flow::get<0>(p).try_put(state); + touched = true; + } + } + }; +public: + buffer(graph& g) : gate<1>(g, buffer_body()) {} + buffer(const buffer& src) : gate<1>(src.my_graph, buffer_body()) {} + ~buffer() {} +}; + +class not_gate : public gate<1> { + using gate<1>::my_graph; + typedef gate<1>::ports_type ports_type; + class not_body { + signal_t port; + bool touched; + public: + not_body() : port(undefined), touched(false) {} + void operator()(const input_port_t::output_type &v, ports_type& p) { + if (!touched || port != cast_to(v)) { + port = cast_to(v); + signal_t state = low; + if (port==low) state = high; + tbb::flow::get<0>(p).try_put(state); + touched = true; + } + } + }; + public: + not_gate(graph& g) : gate<1>(g, not_body()) {} + not_gate(const not_gate& src) : gate<1>(src.my_graph, not_body()) {} + ~not_gate() {} +}; + +template +class and_gate : public gate { + using gate::my_graph; + typedef typename gate::ports_type ports_type; + typedef typename gate::input_port_t::output_type from_input; + class and_body { + signal_t *ports; + signal_t state; + bool touched; + public: + and_body() : state(undefined), touched(false) { + ports = new signal_t[N]; + for (int i=0; i(v); + signal_t new_state=high; + size_t i=0; + while (i(p).try_put(state); + touched = true; + } + } + }; + public: + and_gate(graph& g) : gate(g, and_body()) {} + and_gate(const and_gate& src) : gate(src.my_graph, and_body()) {} + ~and_gate() {} +}; + +template +class or_gate : public gate { + using gate::my_graph; + typedef typename gate::ports_type ports_type; + typedef typename gate::input_port_t::output_type from_input; + class or_body { + signal_t *ports; + signal_t state; + bool touched; + public: + or_body() : state(undefined), touched(false) { + ports = new signal_t[N]; + for (int i=0; i(v); + signal_t new_state=low; + size_t i=0; + while (i(p).try_put(state); + touched = true; + } + } + }; +public: + or_gate(graph& g) : gate(g, or_body()) {} + or_gate(const or_gate& src) : gate(src.my_graph, or_body()) {} + ~or_gate() {} +}; + +template +class xor_gate : public gate { + using gate::my_graph; + typedef typename gate::ports_type ports_type; + typedef typename gate::input_port_t input_port_t; + class xor_body { + signal_t *ports; + signal_t state; + bool touched; + public: + xor_body() : state(undefined), touched(false) { + ports = new signal_t[N]; + for (int i=0; i(v); + signal_t new_state=low; + size_t i=0, highs=0; + while (i 0) { new_state = low; break; } + else if (ports[i] == high ) { ++highs; } + ++i; + } + if (!touched || state != new_state) { + state = new_state; + tbb::flow::get<0>(p).try_put(state); + touched = true; + } + } + }; + public: + xor_gate(graph& g) : gate(g, xor_body()) {} + xor_gate(const xor_gate& src) : gate(src.my_graph, xor_body()) {} + ~xor_gate() {} +}; + +template +class nor_gate : public gate { + using gate::my_graph; + typedef typename gate::ports_type ports_type; + typedef typename gate::input_port_t input_port_t; + class nor_body { + signal_t *ports; + signal_t state; + bool touched; + public: + nor_body() : state(undefined), touched(false) { + ports = new signal_t[N]; + for (int i=0; i(v); + signal_t new_state=low; + size_t i=0; + while (i(p).try_put(state); + touched = true; + } + } + }; + public: + nor_gate(graph& g) : gate(g, nor_body()) {} + nor_gate(const nor_gate& src) : gate(src.my_graph, nor_body()) {} + ~nor_gate() {} +}; + +// Output devices +class led { + class led_body { + signal_t &state; + string &label; + bool report_changes; + bool touched; + public: + led_body(signal_t &s, string &l, bool r) : + state(s), label(l), report_changes(r), touched(false) + {} + continue_msg operator()(signal_t b) { + if (!touched || b!=state) { + state = b; + if (state != undefined && report_changes) { + if (state) printf("%s: (*)\n", label.c_str()); + else printf("%s: ( )\n", label.c_str()); + } + touched = false; + } + return continue_msg(); + } + }; + graph& my_graph; + string label; + signal_t state; + bool report_changes; + function_node led_node; + public: + led(graph& g, string l, bool rc=false) : my_graph(g), label(l), state(undefined), + report_changes(rc), + led_node(g, 1, led_body(state, label, report_changes)) + {} + led(const led& src) : my_graph(src.my_graph), label(src.label), state(undefined), + report_changes(src.report_changes), + led_node(src.my_graph, 1, led_body(state, label, report_changes)) + {} + ~led() {} + // Assignment changes the behavior of LHS to that of the RHS, but doesn't change owning graph + // state is set to undefined so that next signal changes it + led& operator=(const led& src) { + label = src.label; state = undefined; report_changes = src.report_changes; + return *this; + } + receiver& get_in() { return led_node; } + void display() { + if (state == high) printf("%s: (*)\n", label.c_str()); + else if (state == low) printf("%s: ( )\n", label.c_str()); + else printf("%s: (u)\n", label.c_str()); + } + signal_t get_value() { return state; } +}; + +class digit : public gate<4> { + using gate<4>::my_graph; + typedef gate<4>::ports_type ports_type; + typedef gate<4>::input_port_t input_port_t; + class digit_body { + signal_t ports[4]; + static const int N = 4; + unsigned int &state; + string &label; + bool& report_changes; + public: + digit_body(unsigned int &s, string &l, bool& r) : state(s), label(l), report_changes(r) { + for (int i=0; i(v); + if (ports[0] == high) ++new_state; + if (ports[1] == high) new_state += 2; + if (ports[2] == high) new_state += 4; + if (ports[3] == high) new_state += 8; + if (state != new_state) { + state = new_state; + if (report_changes) { + printf("%s: %x\n", label.c_str(), state); + } + } + } + }; + string label; + unsigned int state; + bool report_changes; + public: + digit(graph& g, string l, bool rc=false) : + gate<4>(g, digit_body(state, label, report_changes)), + label(l), state(0), report_changes(rc) {} + digit(const digit& src) : + gate<4>(src.my_graph, digit_body(state, label, report_changes)), + label(src.label), state(0), report_changes(src.report_changes) {} + ~digit() {} + // Assignment changes the behavior of LHS to that of the RHS, but doesn't change owning graph. + // state is reset as in constructors + digit& operator=(const digit& src) { + label = src.label; state = 0; report_changes = src.report_changes; + return *this; + } + void display() { printf("%s: %x\n", label.c_str(), state); } + unsigned int get_value() { return state; } +}; + +#endif /* __TBBexample_graph_logicsim_basics_H */ diff --git a/examples/graph/logic_sim/four_bit_adder.h b/examples/graph/logic_sim/four_bit_adder.h new file mode 100644 index 0000000000..026a3656e0 --- /dev/null +++ b/examples/graph/logic_sim/four_bit_adder.h @@ -0,0 +1,61 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#ifndef __TBBexample_graph_logicsim_fba_H +#define __TBBexample_graph_logicsim_fba_H 1 + +#include "one_bit_adder.h" + +typedef composite_node< tuple< signal_t, signal_t, signal_t, signal_t, signal_t, signal_t, signal_t, signal_t, signal_t >, + tuple< signal_t, signal_t, signal_t, signal_t, signal_t > > fba_base_type; + +class four_bit_adder : public fba_base_type { + graph& my_graph; + std::vector four_adders; +public: + four_bit_adder(graph& g) : fba_base_type(g), my_graph(g), four_adders(4, one_bit_adder(g)) { + make_connections(); + set_up_composite(); + } + four_bit_adder(const four_bit_adder& src) : + fba_base_type(src.my_graph), my_graph(src.my_graph), four_adders(4, one_bit_adder(src.my_graph)) + { + make_connections(); + set_up_composite(); + } + ~four_bit_adder() {} + +private: + void make_connections() { + make_edge(output_port<1>(four_adders[0]), input_port<0>(four_adders[1])); + make_edge(output_port<1>(four_adders[1]), input_port<0>(four_adders[2])); + make_edge(output_port<1>(four_adders[2]), input_port<0>(four_adders[3])); + } + void set_up_composite() { + + fba_base_type::input_ports_type input_tuple(input_port<0>(four_adders[0]/*CI*/), input_port<1>(four_adders[0]), input_port<2>(four_adders[0]), input_port<1>(four_adders[1]), input_port<2>(four_adders[1]), input_port<1>(four_adders[2]), input_port<2>(four_adders[2]), input_port<1>(four_adders[3]), input_port<2>(four_adders[3])); + + fba_base_type::output_ports_type output_tuple(output_port<0>(four_adders[0]), output_port<0>(four_adders[1]), output_port<0>(four_adders[2]), output_port<0>(four_adders[3]),output_port<1>(four_adders[3]/*CO*/)); + + fba_base_type::set_external_ports(input_tuple, output_tuple); + } +}; + +#endif /* __TBBexample_graph_logicsim_fba_H */ diff --git a/examples/graph/logic_sim/index.html b/examples/graph/logic_sim/index.html new file mode 100644 index 0000000000..56ed19fd31 --- /dev/null +++ b/examples/graph/logic_sim/index.html @@ -0,0 +1,67 @@ + + + +

Overview

+ +This directory contains a simple tbb::flow example that performs +simplistic digital logic simulations with basic logic gates that can +be easily composed to create more interesting circuits. It +exemplifies the multifunction_node and the indexer_node CPF, among others. + +

Files

+
+
basics.h +
Several I/O devices and basic gates. +
one_bit_adder.h +
A one-bit full adder composed of basic gates. +
four_bit_adder.h +
A four-bit full adder composed of one-bit adders. +
D_latch.h +
A D-latch composed of basic gates. +
test_all.cpp +
A simple test program that exercises the code in the headers. + +
Makefile +
Makefile for building example. + +
+ +

Directories

+
+
msvs +
Contains Microsoft* Visual Studio* 2010 workspace for building and running the example with the Intel® C++ compiler (Windows* systems only). +
xcode +
Contains Xcode* IDE workspace for building and running the example (OS X* systems only). +
+ +

To Build

+General build directions can be found here. +

+ +

Usage

+
+ +
test_all -h +
Prints the help for command line options +
test_all [#threads=value] [verbose] [silent] [#threads] +
#threads is the number of threads to use; a range of the form low[:high] where low and optional high are non-negative integers, or 'auto' for the TBB default.
+ verbose print diagnostic output to screen
+ silent limits output to timing info; overrides verbose
+ +
To run a short version of this example, e.g., for use with Intel® Parallel Inspector: +
Build a debug version of the example + (see the build directions). +
Run it with the desired number of threads, e.g., test_all 4. +
+ +
+Up to parent directory +

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel is a registered trademark or trademark of Intel Corporation +or its subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. + + diff --git a/examples/graph/logic_sim/msvs/logic_sim.sln b/examples/graph/logic_sim/msvs/logic_sim.sln new file mode 100644 index 0000000000..cb397b1256 --- /dev/null +++ b/examples/graph/logic_sim/msvs/logic_sim.sln @@ -0,0 +1,26 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "logic_sim", "logic_sim.vcxproj", "{6E9B1702-78E0-4D64-B771-8B274D963B58}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6E9B1702-78E0-4D64-B771-8B274D963B58}.Debug|Win32.ActiveCfg = Debug|Win32 + {6E9B1702-78E0-4D64-B771-8B274D963B58}.Debug|Win32.Build.0 = Debug|Win32 + {6E9B1702-78E0-4D64-B771-8B274D963B58}.Debug|x64.ActiveCfg = Debug|x64 + {6E9B1702-78E0-4D64-B771-8B274D963B58}.Debug|x64.Build.0 = Debug|x64 + {6E9B1702-78E0-4D64-B771-8B274D963B58}.Release|Win32.ActiveCfg = Release|Win32 + {6E9B1702-78E0-4D64-B771-8B274D963B58}.Release|Win32.Build.0 = Release|Win32 + {6E9B1702-78E0-4D64-B771-8B274D963B58}.Release|x64.ActiveCfg = Release|x64 + {6E9B1702-78E0-4D64-B771-8B274D963B58}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/examples/graph/logic_sim/msvs/logic_sim.vcxproj b/examples/graph/logic_sim/msvs/logic_sim.vcxproj new file mode 100644 index 0000000000..e82a581004 --- /dev/null +++ b/examples/graph/logic_sim/msvs/logic_sim.vcxproj @@ -0,0 +1,197 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + logic_sim + {6E9B1702-78E0-4D64-B771-8B274D963B58} + test_all + Win32Proj + + + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + ProgramDatabase + + + tbb_debug.lib;tbbmalloc_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Console + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 debug "$(OutDir)" + + + + + X64 + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + ProgramDatabase + + + tbb_debug.lib;tbbmalloc_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Console + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 debug "$(OutDir)" + + + + + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + + + tbb.lib;tbbmalloc.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Console + true + true + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 release "$(OutDir)" + + + + + X64 + + + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + + + tbb.lib;tbbmalloc.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Console + true + true + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 release "$(OutDir)" + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/graph/logic_sim/one_bit_adder.h b/examples/graph/logic_sim/one_bit_adder.h new file mode 100644 index 0000000000..5fc8703dde --- /dev/null +++ b/examples/graph/logic_sim/one_bit_adder.h @@ -0,0 +1,103 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#ifndef __TBBexample_graph_logicsim_oba_H +#define __TBBexample_graph_logicsim_oba_H 1 + +namespace P { + //input ports + const int CI = 0; + const int A0 = 1; + const int B0 = 2; + const int A1 = 3; + const int B1 = 4; + const int A2 = 5; + const int B2 = 6; + const int A3 = 7; + const int B3 = 8; + + //output_ports + const int S0 = 0; + const int S1 = 1; + const int S2 = 2; + const int S3 = 3; + +#if USE_TWO_BIT_FULL_ADDER + const int CO = 2; +#else + const int CO = 4; +#endif +} + +#include "basics.h" + +class one_bit_adder : public composite_node< tuple< signal_t, signal_t, signal_t >, tuple< signal_t, signal_t > > { + broadcast_node A_port; + broadcast_node B_port; + broadcast_node CI_port; + xor_gate<2> FirstXOR; + xor_gate<2> SecondXOR; + and_gate<2> FirstAND; + and_gate<2> SecondAND; + or_gate<2> FirstOR; + graph& my_graph; + typedef composite_node< tuple< signal_t, signal_t, signal_t >, tuple< signal_t, signal_t > > base_type; + +public: + one_bit_adder(graph& g) : base_type(g), my_graph(g), A_port(g), B_port(g), CI_port(g), FirstXOR(g), + SecondXOR(g), FirstAND(g), SecondAND(g), FirstOR(g) { + make_connections(); + set_up_composite(); + } + one_bit_adder(const one_bit_adder& src) : + base_type(src.my_graph), my_graph(src.my_graph), A_port(src.my_graph), B_port(src.my_graph), + CI_port(src.my_graph), FirstXOR(src.my_graph), SecondXOR(src.my_graph), + FirstAND(src.my_graph), SecondAND(src.my_graph), FirstOR(src.my_graph) + { + make_connections(); + set_up_composite(); + } + + ~one_bit_adder() {} + +private: + void make_connections() { + + make_edge(A_port, input_port<0>(FirstXOR)); + make_edge(A_port, input_port<0>(FirstAND)); + make_edge(B_port, input_port<1>(FirstXOR)); + make_edge(B_port, input_port<1>(FirstAND)); + make_edge(CI_port, input_port<1>(SecondXOR)); + make_edge(CI_port, input_port<1>(SecondAND)); + make_edge(FirstXOR, input_port<0>(SecondXOR)); + make_edge(FirstXOR, input_port<0>(SecondAND)); + make_edge(SecondAND, input_port<0>(FirstOR)); + make_edge(FirstAND, input_port<1>(FirstOR)); + } + + void set_up_composite() { + base_type::input_ports_type input_tuple(CI_port, A_port, B_port); + base_type::output_ports_type output_tuple(output_port<0>(SecondXOR), output_port<0>(FirstOR)); + base_type::set_external_ports( input_tuple, output_tuple); + base_type::add_visible_nodes(A_port, B_port, CI_port, FirstXOR, SecondXOR, FirstAND, SecondAND, FirstOR ); + } +}; + +#endif /* __TBBexample_graph_logicsim_oba_H */ diff --git a/examples/graph/logic_sim/test_all.cpp b/examples/graph/logic_sim/test_all.cpp new file mode 100644 index 0000000000..d81d55dfb3 --- /dev/null +++ b/examples/graph/logic_sim/test_all.cpp @@ -0,0 +1,645 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#include "tbb/tbb_config.h" +#include + +#include "../../common/utility/utility.h" + +#if __TBB_FLOW_GRAPH_CPP11_FEATURES + +#if _MSC_VER +#pragma warning (disable: 4503) // Suppress "decorated name length exceeded, name was truncated" warning +#endif + +#define USE_TWO_BIT_FULL_ADDER 1 + +#include "basics.h" +#include "one_bit_adder.h" +#if USE_TWO_BIT_FULL_ADDER +#include "two_bit_adder.h" +#else +#include "four_bit_adder.h" +#endif +#include "D_latch.h" +#include + +// User-specified globals with default values +bool verbose = false; // prints bin details and other diagnostics to screen +bool silent = false; // suppress all output except for time + +int get_default_num_threads() { + static int threads = 0; + if (threads == 0) + threads = tbb::task_scheduler_init::default_num_threads(); + return threads; +} +#endif + +int main(int argc, char *argv[]) { +#if __TBB_FLOW_GRAPH_CPP11_FEATURES + try { + utility::thread_number_range threads(get_default_num_threads); + utility::parse_cli_arguments(argc, argv, + utility::cli_argument_pack() + //"-h" option for displaying help is present implicitly + .positional_arg(threads,"#threads",utility::thread_number_range_desc) + .arg(verbose,"verbose"," print diagnostic output to screen") + .arg(silent,"silent"," limits output to timing info; overrides verbose") + ); + + if (silent) verbose = false; // make silent override verbose + + tick_count start = tick_count::now(); + for(int p = threads.first; p <= threads.last; p = threads.step(p)) { + task_scheduler_init init(p); + if (!silent) cout << "graph test running on " << p << " threads.\n"; + + graph g; + + { // test buffer: 0, 1 + buffer b(g); + toggle input(g); + led output(g, "OUTPUT", false); // false means we will explicitly call display to see LED + + make_edge(input.get_out(), input_port<0>(b)); + make_edge(output_port<0>(b), output.get_in()); + + if (!silent) printf("Testing buffer...\n"); + input.activate(); // 0 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == low); + input.flip(); // 1 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == high); + } + + { // test not_gate: 0, 1 + not_gate n(g); + toggle input(g); + led output(g, "OUTPUT", false); + + make_edge(input.get_out(), input_port<0>(n)); + make_edge(output_port<0>(n), output.get_in()); + + if (!silent) printf("Testing not_gate...\n"); + input.activate(); // 0 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == high); + input.flip(); // 1 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == low); + } + + { // test two-input and_gate: 00, 01, 10, 11 + and_gate<2> a(g); + toggle input0(g); + toggle input1(g); + led output(g, "OUTPUT", false); + + make_edge(input0.get_out(), input_port<0>(a)); + make_edge(input1.get_out(), input_port<1>(a)); + make_edge(output_port<0>(a), output.get_in()); + + if (!silent) printf("Testing and_gate...\n"); + input1.activate(); input0.activate(); // 0 0 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == low); + input0.flip(); // 0 1 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == low); + input1.flip(); input0.flip(); // 1 0 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == low); + input0.flip(); // 1 1 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == high); + } + + { // test three-input or_gate: 000, 001, 010, 100, 011, 101, 110, 111 + or_gate<3> o(g); + toggle input0(g); + toggle input1(g); + toggle input2(g); + led output(g, "OUTPUT", false); + + make_edge(input0.get_out(), input_port<0>(o)); + make_edge(input1.get_out(), input_port<1>(o)); + make_edge(input2.get_out(), input_port<2>(o)); + make_edge(output_port<0>(o), output.get_in()); + + if (!silent) printf("Testing or_gate...\n"); + input2.activate(); input1.activate(); input0.activate(); // 0 0 0 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == low); + input0.flip(); // 0 0 1 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == high); + input1.flip(); input0.flip(); // 0 1 0 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == high); + input2.flip(); input1.flip(); // 1 0 0 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == high); + input2.flip(); input1.flip(); input0.flip(); // 0 1 1 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == high); + input2.flip(); input1.flip(); // 1 0 1 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == high); + input1.flip(); input0.flip(); // 1 1 0 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == high); + input0.flip(); // 1 1 1 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == high); + } + + { // test two-input xor_gate: 00, 01, 10, 11 + xor_gate<2> x(g); + toggle input0(g); + toggle input1(g); + led output(g, "OUTPUT", false); + + make_edge(input0.get_out(), input_port<0>(x)); + make_edge(input1.get_out(), input_port<1>(x)); + make_edge(output_port<0>(x), output.get_in()); + + if (!silent) printf("Testing xor_gate...\n"); + input1.activate(); input0.activate(); // 0 0 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == low); + input0.flip(); // 0 1 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == high); + input1.flip(); input0.flip(); // 1 0 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == high); + input0.flip(); // 1 1 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == low); + } + + + { // test two-input nor_gate: 00, 01, 10, 11 + nor_gate<2> n(g); + toggle input0(g); + toggle input1(g); + led output(g, "OUTPUT", false); + + make_edge(input0.get_out(), input_port<0>(n)); + make_edge(input1.get_out(), input_port<1>(n)); + make_edge(output_port<0>(n), output.get_in()); + + if (!silent) printf("Testing nor_gate...\n"); + input1.activate(); input0.activate(); // 0 0 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == high); + input0.flip(); // 0 1 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == low); + input1.flip(); input0.flip(); // 1 0 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == low); + input0.flip(); // 1 1 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == low); + } + + { // test steady_signal and digit + steady_signal input0(g, high); + steady_signal input1(g, low); + and_gate<2> a(g); + or_gate<2> o(g); + xor_gate<2> x(g); + nor_gate<2> n(g); + digit output(g, "OUTPUT", false); + + make_edge(input0.get_out(), input_port<0>(a)); + make_edge(input1.get_out(), input_port<1>(a)); + make_edge(output_port<0>(a), input_port<0>(output)); + + make_edge(input0.get_out(), input_port<0>(o)); + make_edge(input1.get_out(), input_port<1>(o)); + make_edge(output_port<0>(o), input_port<1>(output)); + + make_edge(input0.get_out(), input_port<0>(x)); + make_edge(input1.get_out(), input_port<1>(x)); + make_edge(output_port<0>(x), input_port<2>(output)); + + make_edge(input0.get_out(), input_port<0>(n)); + make_edge(input1.get_out(), input_port<1>(n)); + make_edge(output_port<0>(n), input_port<3>(output)); + + if (!silent) printf("Testing steady_signal...\n"); + input0.activate(); // 1 + input1.activate(); // 0 + g.wait_for_all(); + if (!silent) output.display(); + assert(output.get_value() == 6); + } + + { // test push_button + push_button p(g); + buffer b(g); + led output(g, "OUTPUT", !silent); // true means print all LED state changes + + make_edge(p.get_out(), input_port<0>(b)); + make_edge(output_port<0>(b), output.get_in()); + + if (!silent) printf("Testing push_button...\n"); + p.press(); + p.release(); + p.press(); + p.release(); + g.wait_for_all(); + } + + { // test one_bit_adder + one_bit_adder my_adder(g); + toggle A(g); + toggle B(g); + toggle CarryIN(g); + led Sum(g, "SUM"); + led CarryOUT(g, "CarryOUT"); + + make_edge(A.get_out(), input_port(my_adder)); + make_edge(B.get_out(), input_port(my_adder)); + make_edge(CarryIN.get_out(), input_port(my_adder)); + make_edge(output_port(my_adder), Sum.get_in()); + make_edge(output_port<1>(my_adder), CarryOUT.get_in()); + + A.activate(); + B.activate(); + CarryIN.activate(); + + if (!silent) printf("A on\n"); + A.flip(); + g.wait_for_all(); + if (!silent) Sum.display(); + if (!silent) CarryOUT.display(); + assert((Sum.get_value() == high) && (CarryOUT.get_value() == low)); + + if (!silent) printf("A off\n"); + A.flip(); + g.wait_for_all(); + if (!silent) Sum.display(); + if (!silent) CarryOUT.display(); + assert((Sum.get_value() == low) && (CarryOUT.get_value() == low)); + + if (!silent) printf("B on\n"); + B.flip(); + g.wait_for_all(); + if (!silent) Sum.display(); + if (!silent) CarryOUT.display(); + assert((Sum.get_value() == high) && (CarryOUT.get_value() == low)); + if (!silent) printf("B off\n"); + B.flip(); + g.wait_for_all(); + if (!silent) Sum.display(); + if (!silent) CarryOUT.display(); + assert((Sum.get_value() == low) && (CarryOUT.get_value() == low)); + + if (!silent) printf("CarryIN on\n"); + CarryIN.flip(); + g.wait_for_all(); + if (!silent) Sum.display(); + if (!silent) CarryOUT.display(); + assert((Sum.get_value() == high) && (CarryOUT.get_value() == low)); + if (!silent) printf("CarryIN off\n"); + CarryIN.flip(); + g.wait_for_all(); + if (!silent) Sum.display(); + if (!silent) CarryOUT.display(); + assert((Sum.get_value() == low) && (CarryOUT.get_value() == low)); + + if (!silent) printf("A&B on\n"); + A.flip(); + B.flip(); + g.wait_for_all(); + if (!silent) Sum.display(); + if (!silent) CarryOUT.display(); + assert((Sum.get_value() == low) && (CarryOUT.get_value() == high)); + if (!silent) printf("A&B off\n"); + A.flip(); + B.flip(); + g.wait_for_all(); + if (!silent) Sum.display(); + if (!silent) CarryOUT.display(); + assert((Sum.get_value() == low) && (CarryOUT.get_value() == low)); + + if (!silent) printf("A&CarryIN on\n"); + A.flip(); + CarryIN.flip(); + g.wait_for_all(); + if (!silent) Sum.display(); + if (!silent) CarryOUT.display(); + assert((Sum.get_value() == low) && (CarryOUT.get_value() == high)); + if (!silent) printf("A&CarryIN off\n"); + A.flip(); + CarryIN.flip(); + g.wait_for_all(); + if (!silent) Sum.display(); + if (!silent) CarryOUT.display(); + assert((Sum.get_value() == low) && (CarryOUT.get_value() == low)); + + if (!silent) printf("B&CarryIN on\n"); + B.flip(); + CarryIN.flip(); + g.wait_for_all(); + if (!silent) Sum.display(); + if (!silent) CarryOUT.display(); + assert((Sum.get_value() == low) && (CarryOUT.get_value() == high)); + if (!silent) printf("B&CarryIN off\n"); + B.flip(); + CarryIN.flip(); + g.wait_for_all(); + if (!silent) Sum.display(); + if (!silent) CarryOUT.display(); + assert((Sum.get_value() == low) && (CarryOUT.get_value() == low)); + + if (!silent) printf("A&B&CarryIN on\n"); + A.flip(); + B.flip(); + CarryIN.flip(); + g.wait_for_all(); + if (!silent) Sum.display(); + if (!silent) CarryOUT.display(); + assert((Sum.get_value() == high) && (CarryOUT.get_value() == high)); + if (!silent) printf("A&B&CarryIN off\n"); + A.flip(); + B.flip(); + CarryIN.flip(); + g.wait_for_all(); + if (!silent) Sum.display(); + if (!silent) CarryOUT.display(); + assert((Sum.get_value() == low) && (CarryOUT.get_value() == low)); + } + +#if USE_TWO_BIT_FULL_ADDER + { // test two_bit_adder + if (!silent) printf("testing two_bit adder\n"); + two_bit_adder two_adder(g); + std::vector A(2, toggle(g)); + std::vector B(2, toggle(g)); + toggle CarryIN(g); + digit Sum(g, "SUM"); + led CarryOUT(g, "CarryOUT"); + + make_edge(A[0].get_out(), input_port(two_adder)); + make_edge(B[0].get_out(), input_port(two_adder)); + make_edge(output_port(two_adder), input_port<0>(Sum)); + + make_edge(A[1].get_out(), input_port(two_adder)); + make_edge(B[1].get_out(), input_port(two_adder)); + make_edge(output_port(two_adder), input_port<1>(Sum)); + + make_edge(CarryIN.get_out(), input_port(two_adder)); + make_edge(output_port(two_adder), CarryOUT.get_in()); + + // Activate all switches at low state + for (int i=0; i<2; ++i) { + A[i].activate(); + B[i].activate(); + } + CarryIN.activate(); + + if (!silent) printf("1+0\n"); + A[0].flip(); + g.wait_for_all(); + if (!silent) Sum.display(); + if (!silent) CarryOUT.display(); + assert((Sum.get_value() == 1) && (CarryOUT.get_value() == low)); + + if (!silent) printf("0+1\n"); + A[0].flip(); + B[0].flip(); + g.wait_for_all(); + if (!silent) Sum.display(); + if (!silent) CarryOUT.display(); + assert((Sum.get_value() == 1) && (CarryOUT.get_value() == low)); + } +#else + { // test four_bit_adder + four_bit_adder four_adder(g); + std::vector A(4, toggle(g)); + std::vector B(4, toggle(g)); + toggle CarryIN(g); + digit Sum(g, "SUM"); + led CarryOUT(g, "CarryOUT"); + + make_edge(A[0].get_out(), input_port(four_adder)); + make_edge(B[0].get_out(), input_port(four_adder)); + make_edge(output_port(four_adder), input_port<0>(Sum)); + + make_edge(A[1].get_out(), input_port(four_adder)); + make_edge(B[1].get_out(), input_port(four_adder)); + make_edge(output_port(four_adder), input_port<1>(Sum)); + + make_edge(A[2].get_out(), input_port(four_adder)); + make_edge(B[2].get_out(), input_port(four_adder)); + make_edge(output_port(four_adder), input_port<2>(Sum)); + + make_edge(A[3].get_out(), input_port(four_adder)); + make_edge(B[3].get_out(), input_port(four_adder)); + make_edge(output_port(four_adder), input_port<3>(Sum)); + + make_edge(CarryIN.get_out(), input_port(four_adder)); + make_edge(output_port(four_adder), CarryOUT.get_in()); + + // Activate all switches at low state + for (int i=0; i<4; ++i) { + A[i].activate(); + B[i].activate(); + } + CarryIN.activate(); + + if (!silent) printf("1+0\n"); + A[0].flip(); + g.wait_for_all(); + if (!silent) Sum.display(); + if (!silent) CarryOUT.display(); + assert((Sum.get_value() == 1) && (CarryOUT.get_value() == low)); + + if (!silent) printf("0+1\n"); + A[0].flip(); + B[0].flip(); + g.wait_for_all(); + if (!silent) Sum.display(); + if (!silent) CarryOUT.display(); + assert((Sum.get_value() == 1) && (CarryOUT.get_value() == low)); + + if (!silent) printf("3+4\n"); + A[0].flip(); + A[1].flip(); + B[0].flip(); + B[2].flip(); + g.wait_for_all(); + if (!silent) Sum.display(); + if (!silent) CarryOUT.display(); + assert((Sum.get_value() == 7) && (CarryOUT.get_value() == low)); + + if (!silent) printf("6+1\n"); + A[0].flip(); + A[2].flip(); + B[0].flip(); + B[2].flip(); + g.wait_for_all(); + if (!silent) Sum.display(); + if (!silent) CarryOUT.display(); + assert((Sum.get_value() == 7) && (CarryOUT.get_value() == low)); + + if (!silent) printf("0+0+carry\n"); + A[1].flip(); + A[2].flip(); + B[0].flip(); + CarryIN.flip(); + g.wait_for_all(); + if (!silent) Sum.display(); + if (!silent) CarryOUT.display(); + assert((Sum.get_value() == 1) && (CarryOUT.get_value() == low)); + + if (!silent) printf("15+15+carry\n"); + A[0].flip(); + A[1].flip(); + A[2].flip(); + A[3].flip(); + B[0].flip(); + B[1].flip(); + B[2].flip(); + B[3].flip(); + g.wait_for_all(); + if (!silent) Sum.display(); + if (!silent) CarryOUT.display(); + assert((Sum.get_value() == 0xf) && (CarryOUT.get_value() == high)); + + if (!silent) printf("8+8\n"); + A[0].flip(); + A[1].flip(); + A[2].flip(); + B[0].flip(); + B[1].flip(); + B[2].flip(); + CarryIN.flip(); + g.wait_for_all(); + if (!silent) Sum.display(); + if (!silent) CarryOUT.display(); + assert((Sum.get_value() == 0) && (CarryOUT.get_value() == high)); + + if (!silent) printf("0+0\n"); + A[3].flip(); + B[3].flip(); + g.wait_for_all(); + if (!silent) Sum.display(); + if (!silent) CarryOUT.display(); + assert((Sum.get_value() == 0) && (CarryOUT.get_value() == low)); + } +#endif + + { // test D_latch + D_latch my_d_latch(g); + toggle D(g); + pulse E(g, 500, 4); // clock changes every 500ms; stops after 4 changes + led Q(g, " Q", verbose); // if true, LEDs print at every state change + led notQ(g, "~Q", verbose); + + make_edge(D.get_out(), input_port<0>(my_d_latch)); + make_edge(E.get_out(), input_port<1>(my_d_latch)); + make_edge(output_port<0>(my_d_latch), Q.get_in()); + make_edge(output_port<1>(my_d_latch), notQ.get_in()); + + D.activate(); + + if (!silent) printf("Toggling D\n"); + E.activate(); + D.flip(); + g.wait_for_all(); + if (!silent && !verbose) { Q.display(); notQ.display(); } + assert((Q.get_value() == high) && (notQ.get_value() == low)); + E.reset(); + + if (!silent) printf("Toggling D\n"); + E.activate(); + D.flip(); + g.wait_for_all(); + if (!silent && !verbose) { Q.display(); notQ.display(); } + assert((Q.get_value() == low) && (notQ.get_value() == high)); + E.reset(); + + if (!silent) printf("Toggling D\n"); + E.activate(); + D.flip(); + g.wait_for_all(); + if (!silent && !verbose) { Q.display(); notQ.display(); } + assert((Q.get_value() == high) && (notQ.get_value() == low)); + E.reset(); + + if (!silent) printf("Toggling D\n"); + E.activate(); + D.flip(); + g.wait_for_all(); + if (!silent && !verbose) { Q.display(); notQ.display(); } + assert((Q.get_value() == low) && (notQ.get_value() == high)); + E.reset(); + + if (!silent) printf("Toggling D\n"); + E.activate(); + D.flip(); + g.wait_for_all(); + if (!silent && !verbose) { Q.display(); notQ.display(); } + assert((Q.get_value() == high) && (notQ.get_value() == low)); + } + } + utility::report_elapsed_time((tbb::tick_count::now() - start).seconds()); + return 0; + } catch(std::exception& e) { + cerr<<"error occurred. error text is :\"" <, + tuple< signal_t, signal_t, signal_t > > { + graph& my_graph; + std::vector two_adders; + typedef composite_node< tuple< signal_t, signal_t, signal_t, signal_t, signal_t >, + tuple< signal_t, signal_t, signal_t > > base_type; + public: + two_bit_adder(graph& g) : base_type(g), my_graph(g), two_adders(2, one_bit_adder(g)) { + make_connections(); + set_up_composite(); + } + two_bit_adder(const two_bit_adder& src) : + base_type(src.my_graph), my_graph(src.my_graph), two_adders(2, one_bit_adder(src.my_graph)) + { + make_connections(); + set_up_composite(); + } + ~two_bit_adder() {} + +private: + void make_connections() { + make_edge(output_port<1>(two_adders[0]), input_port<0>(two_adders[1])); + } + void set_up_composite() { + + base_type::input_ports_type input_tuple(input_port<0>(two_adders[0]/*CI*/), input_port<1>(two_adders[0]), input_port<2>(two_adders[0]), input_port<1>(two_adders[1]), input_port<2>(two_adders[1])); + + base_type::output_ports_type output_tuple(output_port<0>(two_adders[0]), output_port<0>(two_adders[1]),output_port<1>(two_adders[1]/*CO*/)); + base_type::set_external_ports(input_tuple, output_tuple); + } +}; + +#endif /* __TBBexample_graph_logicsim_tba_H */ + diff --git a/examples/graph/som/Makefile b/examples/graph/som/Makefile new file mode 100644 index 0000000000..da4954c19c --- /dev/null +++ b/examples/graph/som/Makefile @@ -0,0 +1,58 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# GNU Makefile that builds and runs example. +NAME=som +EXE=$(NAME).exe +ARGS= +LIGHT_ARGS=4 + +# The C++ compiler +ifneq (,$(shell which icc 2>/dev/null)) +CXX=icc +endif # icc + +override CXXFLAGS += $(UI_CXXFLAGS) + +SRCFILES = som_graph.cpp som.cpp + +ifeq ($(shell uname), Linux) +LIBS+= -lrt +endif + +all: release test + +release: $(SRCFILES) +ifeq ($(compiler),xl) + # Avoiding "1586-346 (U) An error occurred during code generation. The code generation return code was 40." with -O3. + $(CXX) -O2 -DNDEBUG $(CXXFLAGS) -o $(EXE) $(SRCFILES) -ltbb -ltbbmalloc $(LIBS) +else + $(CXX) -O3 -DNDEBUG $(CXXFLAGS) -o $(EXE) $(SRCFILES) -ltbb -ltbbmalloc $(LIBS) +endif + +debug: $(SRCFILES) + $(CXX) -g -O0 -DTBB_USE_DEBUG -D_DEBUG $(CXXFLAGS) -o $(EXE) $(SRCFILES) -ltbb_debug -ltbbmalloc_debug $(LIBS) + +clean: + $(RM) $(EXE) *.o *.d + +test: + $(run_cmd) ./$(EXE) $(ARGS) + +light_test: + $(run_cmd) ./$(EXE) $(LIGHT_ARGS) diff --git a/examples/graph/som/Makefile.windows b/examples/graph/som/Makefile.windows new file mode 100644 index 0000000000..06c4a640d7 --- /dev/null +++ b/examples/graph/som/Makefile.windows @@ -0,0 +1,46 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# Common Makefile that builds and runs example. + +# Just specify your program basename +PROG=som +ARGS= +LIGHT_ARGS=4 + +# Trying to find if icl.exe is set +CXX1 = $(TBB_CXX)- +CXX2 = $(CXX1:icl.exe-=icl.exe) +CXX = $(CXX2:-=cl.exe) + +# The C++ compiler options +MYCXXFLAGS = /TP /EHsc /W3 /nologo /D _CONSOLE /D _MBCS /D WIN32 /D _CRT_SECURE_NO_DEPRECATE $(CXXFLAGS) +MYLDFLAGS =/INCREMENTAL:NO /NOLOGO /DEBUG /FIXED:NO $(LDFLAGS) + +all: release test +release: + $(CXX) ./som_graph.cpp ./som.cpp /MD /O2 /D NDEBUG $(MYCXXFLAGS) /link tbb.lib $(LIBS) $(MYLDFLAGS) /OUT:$(PROG).exe +debug: + $(CXX) ./som_graph.cpp ./som.cpp /MDd /Od /Zi /D _DEBUG $(MYCXXFLAGS) /link tbb_debug.lib $(LIBS) $(MYLDFLAGS) /OUT:$(PROG).exe +clean: + @cmd.exe /C del $(PROG).exe *.obj *.?db *.manifest +test: + $(PROG) $(ARGS) +light_test: + $(PROG) $(LIGHT_ARGS) + diff --git a/examples/graph/som/index.html b/examples/graph/som/index.html new file mode 100644 index 0000000000..fed4681e68 --- /dev/null +++ b/examples/graph/som/index.html @@ -0,0 +1,53 @@ + + + +

Overview

+The Self-Organizing Map demonstrates tbb::flow and the use of cancellation in scheduling multiple iterations of +map updates. +

+For tutorials on Self-organizing Maps, see here and +here. +

+

+The program trains the map with several examples, splitting the map into subsections and looking for best-match +for multiple examples. When an example is used to update the map, the graphs examining the sections being +updated for the next example are cancelled and restarted after the update. +

+ +

Source Files

+
+
som_graph.cpp +
The main program. +
som.cpp +
utilities for handling the map. +
som.h +
Definitions and utilites. +
Makefile, Makefile.windows +
Makefiles for building example. +
+ +

Directories

+
+
msvs +
Contains Microsoft* Visual Studio* 2010 workspace for building and running the + example (Windows* systems only). +
xcode +
Contains Xcode* IDE workspace for building and running the example (OS X* + systems only).
+ +

To Build

+General build directions can be found here. +

+ +
+Up to parent directory +

+Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

+Intel is a registered trademark or trademark of Intel Corporation +or its subsidiaries in the United States and other countries. +

+* Other names and brands may be claimed as the property of others. + + + diff --git a/examples/graph/som/msvs/som.sln b/examples/graph/som/msvs/som.sln new file mode 100644 index 0000000000..88b536fb69 --- /dev/null +++ b/examples/graph/som/msvs/som.sln @@ -0,0 +1,26 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "som", "som.vcxproj", "{B2AE2EDC-697B-4C85-AC0D-E3E523D20D6D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B2AE2EDC-697B-4C85-AC0D-E3E523D20D6D}.Debug|Win32.ActiveCfg = Debug|Win32 + {B2AE2EDC-697B-4C85-AC0D-E3E523D20D6D}.Debug|Win32.Build.0 = Debug|Win32 + {B2AE2EDC-697B-4C85-AC0D-E3E523D20D6D}.Debug|x64.ActiveCfg = Debug|x64 + {B2AE2EDC-697B-4C85-AC0D-E3E523D20D6D}.Debug|x64.Build.0 = Debug|x64 + {B2AE2EDC-697B-4C85-AC0D-E3E523D20D6D}.Release|Win32.ActiveCfg = Release|Win32 + {B2AE2EDC-697B-4C85-AC0D-E3E523D20D6D}.Release|Win32.Build.0 = Release|Win32 + {B2AE2EDC-697B-4C85-AC0D-E3E523D20D6D}.Release|x64.ActiveCfg = Release|x64 + {B2AE2EDC-697B-4C85-AC0D-E3E523D20D6D}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/examples/graph/som/msvs/som.vcxproj b/examples/graph/som/msvs/som.vcxproj new file mode 100644 index 0000000000..c4b97d29be --- /dev/null +++ b/examples/graph/som/msvs/som.vcxproj @@ -0,0 +1,213 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + som + {b2ae2edc-697b-4c85-ac0d-e3e523d20d6d} + som + Win32Proj + + + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Console + false + false + + + MachineX86 + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 debug "$(OutDir)" + + + + + X64 + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Console + false + false + + + MachineX64 + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 debug "$(OutDir)" + + + + + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Console + true + true + false + false + + + MachineX86 + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 release "$(OutDir)" + + + + + X64 + + + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Console + true + true + false + false + + + MachineX64 + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 release "$(OutDir)" + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/graph/som/som.cpp b/examples/graph/som/som.cpp new file mode 100644 index 0000000000..895801f731 --- /dev/null +++ b/examples/graph/som/som.cpp @@ -0,0 +1,217 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +// +// Self-organizing map in TBB flow::graph +// +// we will do a color map (the simple example.) +// +// serial algorithm +// +// initialize map with vectors (could be random, gradient, or something else) +// for some number of iterations +// update radius r, weight of change L +// for each example V +// find the best matching unit +// for each part of map within radius of BMU W +// update vector: W(t+1) = W(t) + w(dist)*L*(V - W(t)) + +#include "som.h" +#include "tbb/task.h" + +std::ostream& operator<<( std::ostream &out, const SOM_element &s) { + out << "("; + for(int i=0;i<(int)s.w.size();++i) { + out << s.w[i]; + if(i < (int)s.w.size()-1) { + out << ","; + } + } + out << ")"; + return out; +} + +void remark_SOM_element(const SOM_element &s) { + printf("("); + for(int i=0;i<(int)s.w.size();++i) { + printf("%g",s.w[i]); + if(i < (int)s.w.size()-1) { + printf(","); + } + } + printf(")"); +} + +std::ostream& operator<<( std::ostream &out, const search_result_type &s) { + out << "<"; + out << get(s); + out << ", " << get(s); + out << ", "; + out << get(s); + out << ">"; + return out; +} + +void remark_search_result_type(const search_result_type &s) { + printf("<%g,%d,%d>", get(s), get(s), get(s)); +} + +double +randval( double lowlimit, double highlimit) { + return double(rand()) / double(RAND_MAX) * (highlimit - lowlimit) + lowlimit; +} + +void +find_data_ranges(teaching_vector_type &teaching, SOM_element &max_range, SOM_element &min_range ) { + if(teaching.size() == 0) return; + max_range = min_range = teaching[0]; + for(int i = 1; i < (int)teaching.size(); ++i) { + max_range.elementwise_max(teaching[i]); + min_range.elementwise_min(teaching[i]); + } +} + +void add_fraction_of_difference( SOM_element &to, SOM_element const &from, double frac) { + for(int i = 0; i < (int)from.size(); ++i) { + to[i] += frac*(from[i] - to[i]); + } +} + +double +distance_squared(SOM_element x, SOM_element y) { + double rval = 0.0; for(int i=0;i<(int)x.size();++i) { + double diff = x[i] - y[i]; + rval += diff*diff; + } + return rval; +} + +void SOMap::initialize(InitializeType it, SOM_element &max_range, SOM_element &min_range) { + for(int x = 0; x < xMax; ++x) { + for(int y = 0; y < yMax; ++y) { + for( int i = 0; i < (int)max_range.size(); ++i) { + if(it == InitializeRandom) { + my_map[x][y][i] = (randval(min_range[i], max_range[i])); + } + else if(it == InitializeGradient) { + my_map[x][y][i] = ((double)(x+y)/(xMax+yMax)*(max_range[i]-min_range[i]) + min_range[i]); + } + } + } + } +} + +// subsquare [low,high) +double +SOMap::BMU_range( const SOM_element &s, int &xval, int &yval, subsquare_type &r) { + double min_distance_squared = DBL_MAX; + task &my_task = task::self(); + int min_x = -1; + int min_y = -1; + for(int x = r.rows().begin(); x != r.rows().end(); ++x) { + for( int y = r.cols().begin(); y != r.cols().end(); ++y) { + double dist = distance_squared(s,my_map[x][y]); + if(dist < min_distance_squared) { + min_distance_squared = dist; + min_x = x; + min_y = y; + } + if(cancel_test && my_task.is_cancelled()) { + xval = r.rows().begin(); + yval = r.cols().begin(); + return DBL_MAX; + } + } + } + xval = min_x; + yval = min_y; + return sqrt(min_distance_squared); +} + +void +SOMap::epoch_update_range( SOM_element const &s, int epoch, int min_x, int min_y, double radius, double learning_rate, blocked_range &r) { + int min_xiter = (int)((double)min_x - radius); + if(min_xiter < 0) min_xiter = 0; + int max_xiter = (int)((double)min_x + radius); + if(max_xiter > (int)my_map.size()-1) max_xiter = (int)my_map.size()-1; + for(int xx = r.begin(); xx <= r.end(); ++xx) { + double xrsq = (xx-min_x)*(xx-min_x); + double ysq = radius*radius - xrsq; // max extent of y influence + double yd; + if(ysq > 0) { + yd = sqrt(ysq); + int lb = (int)(min_y - yd); + int ub = (int)(min_y + yd); + for(int yy = lb; yy < ub; ++yy) { + if(yy >= 0 && yy < (int)my_map[xx].size()) { + // [xx, yy] is in the range of the update. + double my_rsq = xrsq + (yy-min_y)*(yy-min_y); // distance from BMU squared + double theta = exp(-(radius*radius) /(2.0* my_rsq)); + add_fraction_of_difference(my_map[xx][yy], s, theta * learning_rate); + } + } + } + } +} + +void SOMap::teach(teaching_vector_type &in) { + for(int i = 0; i < nPasses; ++i ) { + int j = (int)(randval(0, (double)in.size())); // this won't be reproducible. + if(j == in.size()) --j; + + int min_x = -1; + int min_y = -1; + subsquare_type br2(0, (int)my_map.size(), 1, 0, (int)my_map[0].size(), 1); + (void) BMU_range(in[j],min_x, min_y, br2); // just need min_x, min_y + // radius of interest + double radius = max_radius * exp(-(double)i*radius_decay_rate); + // update circle is min_xiter to max_xiter inclusive. + double learning_rate = max_learning_rate * exp( -(double)i * learning_decay_rate); + epoch_update(in[j], i, min_x, min_y, radius, learning_rate); + } +} + +void SOMap::debug_output() { + printf("SOMap:\n"); + for(int i = 0; i < (int)(this->my_map.size()); ++i) { + for(int j = 0; j < (int)(this->my_map[i].size()); ++j) { + printf( "map[%d, %d] == ", i, j ); + remark_SOM_element( this->my_map[i][j] ); + printf("\n"); + } + } +} + +#define RED 0 +#define GREEN 1 +#define BLUE 2 + +void readInputData() { + my_teaching.push_back(SOM_element()); + my_teaching.push_back(SOM_element()); + my_teaching.push_back(SOM_element()); + my_teaching.push_back(SOM_element()); + my_teaching.push_back(SOM_element()); + my_teaching[0][RED] = 1.0; my_teaching[0][GREEN] = 0.0; my_teaching[0][BLUE] = 0.0; + my_teaching[1][RED] = 0.0; my_teaching[1][GREEN] = 1.0; my_teaching[1][BLUE] = 0.0; + my_teaching[2][RED] = 0.0; my_teaching[2][GREEN] = 0.0; my_teaching[2][BLUE] = 1.0; + my_teaching[3][RED] = 0.3; my_teaching[3][GREEN] = 0.3; my_teaching[3][BLUE] = 0.0; + my_teaching[4][RED] = 0.5; my_teaching[4][GREEN] = 0.5; my_teaching[4][BLUE] = 0.9; +} diff --git a/examples/graph/som/som.h b/examples/graph/som/som.h new file mode 100644 index 0000000000..1590db3af9 --- /dev/null +++ b/examples/graph/som/som.h @@ -0,0 +1,161 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +// +// Self-organizing map +// +// support for self-ordering maps +#ifndef __SOM_H__ +#define __SOM_H__ + +#include +#include +#include +#include +#include +#include + +#include "tbb/flow_graph.h" +#include "tbb/blocked_range2d.h" + +using namespace tbb; +using namespace tbb::flow; + +typedef blocked_range2d subsquare_type; +typedef tuple search_result_type; + +std::ostream& operator<<( std::ostream &out, const search_result_type &s); + +#define RADIUS 0 // for the std::gets +#define XV 1 +#define YV 2 + +// to have single definitions of static variables, define _MAIN_C_ in the main program +// +#ifdef _MAIN_C_ +#define DEFINE // nothing +#define INIT(n) = n +#else // not in main file +#define DEFINE extern +#define INIT(n) // nothing +#endif // _MAIN_C_ + +DEFINE int nElements INIT(3); // length of input vectors, matching vector in map +DEFINE double max_learning_rate INIT(0.8); // decays exponentially +DEFINE double radius_decay_rate; +DEFINE double learning_decay_rate INIT(0.005); +DEFINE double max_radius; +DEFINE bool extra_debug INIT(false); +DEFINE bool cancel_test INIT(false); + +DEFINE int xMax INIT(100); +DEFINE int yMax INIT(100); +DEFINE int nPasses INIT(100); + +enum InitializeType { InitializeRandom, InitializeGradient }; +#define RED 0 +#define GREEN 1 +#define BLUE 2 +class SOM_element; +void remark_SOM_element(const SOM_element &s); + +// all SOM_element vectors are the same length (nElements), so we do not have +// to range-check the vector accesses. +class SOM_element { + std::vector w; +public: + friend std::ostream& operator<<( std::ostream &out, const SOM_element &s); + friend void remark_SOM_element(const SOM_element &s); + SOM_element() : w(nElements,0.0) {} + double &operator[](int indx) { return w.at(indx); } + const double &operator[](int indx) const { return w.at(indx); } + bool operator==(SOM_element const &other) const { + for(size_t i=0;i other.w[i]) w[i] = other.w[i]; + } + size_t size() const { return w.size(); } +}; + +typedef std::vector teaching_vector_type; + +DEFINE SOM_element max_range; +DEFINE SOM_element min_range; + +extern double randval( double lowlimit, double highlimit); + +extern void find_data_ranges(teaching_vector_type &teaching, SOM_element &max_range, SOM_element &min_range ); + +extern void add_fraction_of_difference( SOM_element &to, SOM_element &from, double frac); + +DEFINE teaching_vector_type my_teaching; + +class SOMap { + std::vector< std::vector< SOM_element > > my_map; +public: + SOMap(int xSize, int ySize) { + my_map.reserve(xSize); + for(int i = 0; i < xSize; ++i) { + my_map.push_back(teaching_vector_type()); + my_map[i].reserve(ySize); + for(int j = 0; j < ySize;++j) { + my_map[i].push_back(SOM_element()); + } + } + } + size_t size() { return my_map.size(); } + void initialize(InitializeType it, SOM_element &max_range, SOM_element &min_range); + teaching_vector_type &operator[](int indx) { return my_map[indx]; } + SOM_element &at(int xVal, int yVal) { return my_map[xVal][yVal]; } + SOM_element &at(search_result_type const &s) { return my_map[flow::get<1>(s)][flow::get<2>(s)]; } + void epoch_update( SOM_element const &s, int epoch, int min_x, int min_y, double radius, double learning_rate) { + int min_xiter = (int)((double)min_x - radius); + if(min_xiter < 0) min_xiter = 0; + int max_xiter = (int)((double)min_x + radius); + if(max_xiter > (int)my_map.size()-1) max_xiter = (int)(my_map.size()-1); + blocked_range br1(min_xiter, max_xiter, 1); + epoch_update_range(s, epoch, min_x, min_y, radius, learning_rate, br1); + } + void epoch_update_range( SOM_element const &s, int epoch, int min_x, int min_y, double radius, double learning_rate, blocked_range &r); + void teach( teaching_vector_type &id); + void debug_output(); + // find BMU given an input, returns distance + double BMU_range(const SOM_element &s, int &xval, int &yval, subsquare_type &r); + double BMU(const SOM_element &s, int &xval, int &yval) { + subsquare_type br(0,(int)my_map.size(),1,0,(int)my_map[0].size(),1); + return BMU_range(s, xval, yval, br); + } +}; + +extern double distance_squared(SOM_element x, SOM_element y); +void remark_SOM_element(const SOM_element &s); + +extern void readInputData(); +#endif // __SOM_H__ diff --git a/examples/graph/som/som_graph.cpp b/examples/graph/som/som_graph.cpp new file mode 100644 index 0000000000..bf5e13f7e3 --- /dev/null +++ b/examples/graph/som/som_graph.cpp @@ -0,0 +1,423 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +// +// Self-organizing map in TBB flow::graph +// +// This is an example of the use of cancellation in a graph. After a point in searching for +// the best match for an example, two examples are looked for simultaneously. When the +// earlier example is found and the update radius is determined, the affected searches +// for the subsequent example are cancelled, and after the update they are restarted. +// As the update radius shrinks fewer searches are cancelled, and by the last iterations +// virtually all the work done for the speculating example is useful. +// +// first, a simple implementation with only one example vector +// at a time. +// +// we will do a color map (the simple example.) +// +// graph algorithm +// +// for some number of iterations +// update radius r, weight of change L +// for each example V +// use graph to find BMU +// for each part of map within radius of BMU W +// update vector: W(t+1) = W(t) + w(dist)*L*(V - W(t)) + +#define _MAIN_C_ 1 +#include "som.h" + +#include "tbb/task_scheduler_init.h" +#include "tbb/flow_graph.h" +#include "tbb/blocked_range2d.h" +#include "tbb/tick_count.h" +#include "../examples/common/utility/utility.h" + +#define RED 0 +#define GREEN 1 +#define BLUE 2 + +static int xranges = 1; +static int yranges = 1; +static int xsize = -1; +static int ysize = -1; + +static int global_i = 0; +static int speculation_start; +std::vector function_node_execs; +static int xRangeMax = 3; +static int yRangeMax = 3; +static bool dont_speculate = false; +static search_result_type last_update; + +class BMU_search_body { + SOMap &my_map; + subsquare_type my_square; + int &fn_tally; +public: + BMU_search_body(SOMap &_m, subsquare_type &_sq, int &fnt) : my_map(_m), my_square(_sq), fn_tally(fnt) { } + BMU_search_body( const BMU_search_body &other) : my_map(other.my_map), my_square(other.my_square), fn_tally(other.fn_tally) { } + search_result_type operator()(const SOM_element s) { + int my_x; + int my_y; + double min_dist = my_map.BMU_range(s, my_x, my_y, my_square); + ++fn_tally; // count how many times this function_node executed + return search_result_type(min_dist, my_x, my_y); + } +}; + +typedef function_node search_node; +typedef broadcast_node b_node; +typedef std::vector< search_node *> search_node_vector_type; +typedef std::vector< search_node_vector_type > search_node_array_type; +typedef std::vector< graph *> graph_vector_type; +typedef std::vector< graph_vector_type > graph_array_type; + +#define SPECULATION_CNT 2 + +graph *g[SPECULATION_CNT]; // main graph; there should only be one per epoch +b_node *send_to[SPECULATION_CNT]; // broadcast node to send exemplar to all function_nodes +queue_node *q[SPECULATION_CNT]; // queue for function nodes to put their results in +// each function_node should have its own graph +search_node_array_type* s_array[SPECULATION_CNT]; // 2d array of function nodes +graph_array_type* g_array[SPECULATION_CNT]; // 2d array of graphs + +// build a set of SPECULATION_CNT graphs, each of which consists of a broadcast_node, +// xranges x yranges function_nodes, and one queue_node for output. +// once speculation starts, if i % SPECULATION_CNT is the current graph, (i+1) % SPECULATION_CNT +// is the first speculation, and so on. +void +build_BMU_graph(SOMap &map1) { + // build current graph + xsize = ((int)map1.size() + xranges - 1) / xranges; + ysize = ((int)map1[0].size() + yranges - 1) / yranges; + function_node_execs.clear(); + function_node_execs.reserve(xranges*yranges+1); + for(int ii = 0; ii < xranges*yranges+1;++ii) function_node_execs.push_back(0); + + for(int scnt = 0; scnt < SPECULATION_CNT; ++scnt) { + g[scnt] = new graph; + send_to[scnt] = new b_node(*(g[scnt])); // broadcast node to the function_nodes + q[scnt] = new queue_node(*(g[scnt])); // output queue + + // create the function_nodes, tie to the graph + s_array[scnt] = new search_node_array_type; + s_array[scnt]->reserve(xranges); + g_array[scnt] = new graph_array_type; + g_array[scnt]->reserve(xranges); + for(int i = 0; i < (int)map1.size(); i += xsize) { + int xindex = i / xsize; + s_array[scnt]->push_back(search_node_vector_type()); + (*s_array[scnt])[xindex].reserve(yranges); + g_array[scnt]->push_back(graph_vector_type()); + (*g_array[scnt])[xindex].reserve(yranges); + for( int j = 0; j < (int)map1[0].size(); j += ysize) { + int offset = (i/xsize)*yranges + (j / ysize); + int xmax = (i + xsize) > (int)map1.size() ? (int)map1.size() : i + xsize; + int ymax = (j + ysize) > (int)map1[0].size() ? (int)map1[0].size() : j + ysize; + subsquare_type sst(i,xmax,1,j,ymax,1); + BMU_search_body bb(map1,sst,function_node_execs[offset]); + graph *g_local = new graph; + search_node *s = new search_node(*g_local, serial, bb); // copies Body + (*g_array[scnt])[xindex].push_back(g_local); + (*s_array[scnt])[xindex].push_back(s); + make_edge(*(send_to[scnt]), *s); // broadcast_node -> function_node + make_edge(*s, *(q[scnt])); // function_node -> queue_node + } + } + } +} + +// Wait for the 2D array of flow::graphs. +void wait_for_all_graphs(int cIndex) { // cIndex ranges over [0 .. SPECULATION_CNT - 1] + for(int x = 0; x < xranges; ++x) { + for(int y = 0; y < yranges; ++y) { + (*g_array[cIndex])[x][y]->wait_for_all(); + } + } +} + +void +destroy_BMU_graph() { + for(int scnt = 0; scnt < SPECULATION_CNT; ++scnt) { + for( int i = 0; i < (int)(*s_array[scnt]).size(); ++i ) { + for(int j = 0; j < (int)(*s_array[scnt])[i].size(); ++j) { + delete (*s_array[scnt])[i][j]; + delete (*g_array[scnt])[i][j]; + } + } + (*s_array[scnt]).clear(); + delete s_array[scnt]; + (*g_array[scnt]).clear(); + delete g_array[scnt]; + delete q[scnt]; + delete send_to[scnt]; + delete g[scnt]; + } +} + +void find_subrange_overlap(int const &xval, int const &yval, double const &radius, int &xlow, int &xhigh, int &ylow, int &yhigh) { + xlow = int((xval-radius)/xsize); + xhigh = int((xval+radius)/xsize); + ylow = int((yval-radius)/ysize); + yhigh = int((yval+radius)/ysize); + // circle may fall partly outside map + if(xlow < 0) xlow = 0; + if(xhigh >= xranges) xhigh = xranges - 1; + if(ylow < 0) ylow = 0; + if(yhigh >= yranges) yhigh = yranges - 1; +} + +bool overlap( int &xval, int &yval, search_result_type &sr) { + int xlow, xhigh, ylow, yhigh; + find_subrange_overlap(get(sr), get(sr), get(sr), xlow, xhigh, ylow, yhigh); + return xval >= xlow && xval <= xhigh && yval >= ylow && yval <= yhigh; +} + +void +cancel_submaps(int &xval, int &yval, double &radius, int indx) { + int xlow; + int xhigh; + int ylow; + int yhigh; + find_subrange_overlap(xval, yval, radius, xlow, xhigh, ylow, yhigh); + for(int x = xlow; x <= xhigh; ++x) { + for(int y = ylow; y <= yhigh; ++y) { + (*g_array[indx])[x][y]->root_task()->cancel_group_execution(); + } + } +} + +void +restart_submaps(int &xval, int &yval, double &radius, int indx, SOM_element &vector) { + int xlow; + int xhigh; + int ylow; + int yhigh; + find_subrange_overlap(xval, yval, radius, xlow, xhigh, ylow, yhigh); + for(int x = xlow; x <= xhigh; ++x) { + for(int y = ylow; y <= yhigh; ++y) { + // have to reset the graph + (*g_array[indx])[x][y]->root_task()->context()->reset(); + // and re-submit the exemplar for search. + (*s_array[indx])[x][y]->try_put(vector); + } + } +} + +search_result_type +graph_BMU( int indx ) { // indx ranges over [0 .. SPECULATION_CNT -1] + wait_for_all_graphs(indx); // wait for the array of subgraphs + (g[indx])->wait_for_all(); + std::vector all_srs(xRangeMax*yRangeMax,search_result_type(DBL_MAX,-1,-1)); + search_result_type sr; + search_result_type min_sr; + get(min_sr) = DBL_MAX; + int result_count = 0; + while((q[indx])->try_get(sr)) { + ++result_count; + // figure which submap this came from + int x = get(sr) / xsize; + int y = get(sr) / ysize; + int offset = x*yranges+y; // linearized subscript + all_srs[offset] = sr; + if(get(sr) < get(min_sr)) + min_sr = sr; + else if(get(sr) == get(min_sr)) { + if(get(sr) < get(min_sr)) { + min_sr = sr; + } + else if((get(sr) == get(min_sr) && + get(sr) < get(min_sr))) + { + min_sr = sr; + } + } + } + return min_sr; + // end of one epoch +} + +void graph_teach(SOMap &map1, teaching_vector_type &in) { + build_BMU_graph(map1); + // normally the training would pick random exemplars to teach the SOM. We need + // the process to be reproducible, so we will pick the exemplars in order, [0, in.size()) + int next_j = 0; + for(int epoch = 0; epoch < nPasses; ++epoch) { + global_i = epoch; + bool canceled_submaps = false; + int j = next_j; // try to make reproducible + next_j = (epoch+1) % in.size(); + search_result_type min_sr; + if(epoch < speculation_start) { + (send_to[epoch%SPECULATION_CNT])->try_put(in[j]); + } + else if(epoch == speculation_start) { + (send_to[epoch%SPECULATION_CNT])->try_put(in[j]); + if(epoch < nPasses-1) { + (send_to[(epoch+1)%SPECULATION_CNT])->try_put(in[next_j]); + } + } + else if(epoch < nPasses - 1) { + (send_to[(epoch+1)%SPECULATION_CNT])->try_put(in[next_j]); + } + min_sr = graph_BMU(epoch % SPECULATION_CNT); //calls wait_for_all() + double min_distance = get<0>(min_sr); + double radius = max_radius * exp(-(double)epoch*radius_decay_rate); + double learning_rate = max_learning_rate * exp(-(double)epoch * learning_decay_rate); + if(epoch >= speculation_start && epoch < (nPasses - 1)) { + // have to cancel the affected submaps + cancel_submaps(get(min_sr), get(min_sr), radius, (epoch+1)%SPECULATION_CNT); + canceled_submaps = true; + } + map1.epoch_update(in[j], epoch, get<1>(min_sr), get<2>(min_sr), radius, learning_rate); + ++global_i; + if(canceled_submaps) { + // do I have to wait for all the non-canceled speculative graph to complete first? + // yes, in case a canceled task was already executing. + wait_for_all_graphs((epoch+1) % SPECULATION_CNT); // wait for the array of subgraphs + restart_submaps(get<1>(min_sr), get<2>(min_sr), radius, (epoch+1)%SPECULATION_CNT, in[next_j]); + } + + last_update = min_sr; + get(last_update) = radius; // not smallest value, but range of effect + } + destroy_BMU_graph(); +} + +static const double serial_time_adjust = 1.25; +static double radius_fraction = 3.0; + +int +main(int argc, char** argv) { + int l_speculation_start; + utility::thread_number_range threads( + task_scheduler_init::default_num_threads, + task_scheduler_init::default_num_threads() // run only the default number of threads if none specified + ); + + utility::parse_cli_arguments(argc,argv, + utility::cli_argument_pack() + //"-h" option for for displaying help is present implicitly + .positional_arg(threads,"n-of-threads","number of threads to use; a range of the form low[:high], where low and optional high are non-negative integers or 'auto' for the TBB default.") + // .positional_arg(InputFileName,"input-file","input file name") + // .positional_arg(OutputFileName,"output-file","output file name") + .positional_arg(radius_fraction, "radius-fraction","size of radius at which to start speculating") + .positional_arg(nPasses, "number-of-epochs","number of examples used in learning phase") + .arg(cancel_test, "cancel-test", "test for cancel signal while finding BMU") + .arg(extra_debug, "debug", "additional output") + .arg(dont_speculate,"nospeculate","don't speculate in SOM map teaching") + ); + + readInputData(); + max_radius = (xMax < yMax) ? yMax / 2 : xMax / 2; + // need this value for the 1x1 timing below + radius_decay_rate = -(log(1.0/(double)max_radius) / (double)nPasses); + find_data_ranges(my_teaching, max_range, min_range ); + if(extra_debug) { + printf( "Data range: "); + remark_SOM_element(min_range); + printf( " to "); + remark_SOM_element(max_range); + printf( "\n"); + } + + // find how much time is taken for the single function_node case. + // adjust nPasses so the 1x1 time is somewhere around serial_time_adjust seconds. + // make sure the example test runs for at least 0.5 second. + for(;;) { + task_scheduler_init init(1); + SOMap map1(xMax,yMax); + speculation_start = nPasses + 1; // Don't speculate + + xranges = 1; + yranges = 1; + map1.initialize(InitializeGradient, max_range, min_range); + tick_count t0 = tick_count::now(); + graph_teach(map1, my_teaching); + tick_count t1 = tick_count::now(); + double nSeconds = (t1-t0).seconds(); + if(nSeconds < 0.5) { + xMax *= 2; + yMax *= 2; + continue; + } + double size_adjust = sqrt(serial_time_adjust / nSeconds); + xMax = (int)((double)xMax * size_adjust); + yMax = (int)((double)yMax * size_adjust); + max_radius = (xMax < yMax) ? yMax / 2 : xMax / 2; + radius_decay_rate = log((double)max_radius) / (double)nPasses; + + if(extra_debug) { + printf("original 1x1 case ran in %g seconds\n", nSeconds); + printf(" Size of table == %d x %d\n", xMax, yMax); + printf(" radius_decay_rate == %g\n", radius_decay_rate); + } + break; + } + + // the "max_radius" starts at 1/2*radius_fraction the table size. To start the speculation when the radius is + // 1 / n * the table size, the constant in the log below should be n / 2. so 2 == 1/4, 3 == 1/6th, + // et c. + if(dont_speculate) { + l_speculation_start = nPasses + 1; + if ( extra_debug )printf("speculation will not be done\n"); + } + else { + if(radius_fraction < 1.0 ) { + if ( extra_debug )printf("Warning: radius_fraction should be >= 1. Setting to 1.\n"); + radius_fraction = 1.0; + } + l_speculation_start = (int)((double)nPasses * log(radius_fraction) / log((double)nPasses)); + if ( extra_debug )printf( "We will start speculation at iteration %d\n", l_speculation_start ); + } + double single_time; // for speedup calculations + for(int p = threads.first; p <= threads.last; ++p) { + task_scheduler_init init(p); + if ( extra_debug )printf( " -------------- Running with %d threads. ------------\n", p); + // run the SOM build for a series of subranges + for(xranges = 1; xranges <= xRangeMax; ++xranges) { + for(yranges = xranges; yranges <= yRangeMax; ++yranges) { + if(xranges == 1 && yranges == 1) { + // don't pointlessly speculate if we're only running one subrange. + speculation_start = nPasses + 1; + } + else { + speculation_start = l_speculation_start; + } + SOMap map1(xMax, yMax); + map1.initialize(InitializeGradient, max_range, min_range); + + if(extra_debug) printf( "Start learning for [%d,%d] ----------- \n", xranges,yranges); + tick_count t0 = tick_count::now(); + graph_teach(map1, my_teaching); + tick_count t1 = tick_count::now(); + + if ( extra_debug )printf( "Done learning for [%d,%d], which took %g seconds ", xranges,yranges, (t1-t0).seconds()); + if(xranges == 1 && yranges == 1) single_time = (t1-t0).seconds(); + if ( extra_debug )printf( ": speedup == %g\n", single_time / (t1-t0).seconds()); + + } // yranges + } // xranges + } // #threads p + printf("done\n"); + return 0; +} diff --git a/examples/graph/som/xcode/som.xcodeproj/project.pbxproj b/examples/graph/som/xcode/som.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..aeb5256809 --- /dev/null +++ b/examples/graph/som/xcode/som.xcodeproj/project.pbxproj @@ -0,0 +1,313 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 522FF8DD11F573FC00A587B2 /* som_graph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 522FF8DB11F573FC00A587B2 /* som_graph.cpp */; }; + 522FF8DE11F573FC00A587B2 /* som.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 522FF8DC11F573FC00A587B2 /* som.cpp */; }; + A1F593B70B8F06F900073279 /* libtbb.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A1F593B30B8F06F900073279 /* libtbb.dylib */; }; + A1F593BB0B8F072500073279 /* libtbb.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = A1F593B30B8F06F900073279 /* libtbb.dylib */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 8DD76F690486A84900D96B5E /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 12; + dstPath = ""; + dstSubfolderSpec = 16; + files = ( + A1F593BB0B8F072500073279 /* libtbb.dylib in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 522FF8DB11F573FC00A587B2 /* som_graph.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = som_graph.cpp; path = ../som_graph.cpp; sourceTree = SOURCE_ROOT; }; + 522FF8DC11F573FC00A587B2 /* som.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = som.cpp; path = ../som.cpp; sourceTree = SOURCE_ROOT; }; + 8DD76F6C0486A84900D96B5E /* som */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = som; sourceTree = BUILT_PRODUCTS_DIR; }; + A1F593B30B8F06F900073279 /* libtbb.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libtbb.dylib; path = ../../../../lib/libtbb.dylib; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8DD76F660486A84900D96B5E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A1F593B70B8F06F900073279 /* libtbb.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 08FB7794FE84155DC02AAC07 /* som */ = { + isa = PBXGroup; + children = ( + 08FB7795FE84155DC02AAC07 /* Source */, + A1F593B20B8F06F900073279 /* External Frameworks and Libraries */, + 1AB674ADFE9D54B511CA2CBB /* Products */, + ); + name = som; + sourceTree = ""; + }; + 08FB7795FE84155DC02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + 522FF8DB11F573FC00A587B2 /* som_graph.cpp */, + 522FF8DC11F573FC00A587B2 /* som.cpp */, + ); + name = Source; + sourceTree = ""; + }; + 1AB674ADFE9D54B511CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8DD76F6C0486A84900D96B5E /* som */, + ); + name = Products; + sourceTree = ""; + }; + A1F593B20B8F06F900073279 /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + A1F593B30B8F06F900073279 /* libtbb.dylib */, + ); + name = "External Frameworks and Libraries"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8DD76F620486A84900D96B5E /* som */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "som" */; + buildPhases = ( + 8DD76F640486A84900D96B5E /* Sources */, + 8DD76F660486A84900D96B5E /* Frameworks */, + 8DD76F690486A84900D96B5E /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = som; + productInstallPath = "$(HOME)/bin"; + productName = som; + productReference = 8DD76F6C0486A84900D96B5E /* som */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0410; + }; + buildConfigurationList = 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "som" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + en, + ); + mainGroup = 08FB7794FE84155DC02AAC07 /* som */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8DD76F620486A84900D96B5E /* som */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 8DD76F640486A84900D96B5E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 522FF8DD11F573FC00A587B2 /* som_graph.cpp in Sources */, + 522FF8DE11F573FC00A587B2 /* som.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1DEB923208733DC60010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = _CONSOLE; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = som; + ZERO_LINK = NO; + }; + name = Debug; + }; + 1DEB923308733DC60010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_PREPROCESSOR_DEFINITIONS = _CONSOLE; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = som; + ZERO_LINK = NO; + }; + name = Release; + }; + 1DEB923608733DC60010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Debug; + }; + 1DEB923708733DC60010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Release; + }; + A1F593C60B8F0E6E00073279 /* Debug64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = _CONSOLE; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = som; + ZERO_LINK = NO; + }; + name = Debug64; + }; + A1F593C70B8F0E6E00073279 /* Release64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_PREPROCESSOR_DEFINITIONS = _CONSOLE; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = som; + ZERO_LINK = NO; + }; + name = Release64; + }; + A1F593C80B8F0E6E00073279 /* Debug64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-m64", + ); + OTHER_LDFLAGS = "-m64"; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Debug64; + }; + A1F593C90B8F0E6E00073279 /* Release64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-m64", + ); + OTHER_LDFLAGS = "-m64"; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Release64; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "som" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB923208733DC60010E9CD /* Debug */, + A1F593C60B8F0E6E00073279 /* Debug64 */, + 1DEB923308733DC60010E9CD /* Release */, + A1F593C70B8F0E6E00073279 /* Release64 */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "som" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB923608733DC60010E9CD /* Debug */, + A1F593C80B8F0E6E00073279 /* Debug64 */, + 1DEB923708733DC60010E9CD /* Release */, + A1F593C90B8F0E6E00073279 /* Release64 */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/examples/index.html b/examples/index.html new file mode 100644 index 0000000000..8eeb038bb1 --- /dev/null +++ b/examples/index.html @@ -0,0 +1,166 @@ + + + +

Overview

+This directory has example usages of Intel® Threading Building Blocks (Intel® TBB). + +

Directories

+
+
GettingStarted +
Examples from the Getting Started Guide. +
concurrent_hash_map +
Examples using concurrent_hash_map. +
concurrent_priority_queue +
Examples using concurrent_priority_queue. +
graph +
Examples using tbb::flow graph. +
parallel_do +
Examples using parallel_do. +
parallel_for +
Examples using parallel_for. +
parallel_reduce +
Examples using parallel_reduce. +
pipeline +
Examples using pipeline. +
task +
Examples using raw task interface. +
task_group +
Examples using task_group interface. +
task_priority +
Examples using the task priority feature. +
test_all +
Examples that test all the parts of the package. +
common +
Common files for building various examples. Should not be used directly. But if you copy an example to other place this folder should be copied also and should have the same relative path for copied example. +
+ +

To Build

+Build each example by using one of the following methods. The specific directions for each +method can be found below. + + +

+Some of the following directions refer to a shell window; this refers +to the command prompt environment/window normally used on your system. +A shell might be a cmd.exe command prompt window (Windows* systems), or a +sh, bash, csh, ksh, etc. (or compatible) shell window (Windows*, Linux* or OS X* systems). +

+ +

To build by using a Microsoft* Visual Studio* project (Windows* systems):

+Perform the following steps: +
    +
  1. Identify the solution (*.sln) file for the example you wish to build and run. For Microsoft* Visual Studio* 2010, the *.sln file is in the example's msvs sub-directory.
  2. +
  3. Open the project by using one of the following methods: +
      +
    • Navigate to the *.sln file from My Computer, by using Windows Explorer, or by using another file browser. Double-click the *.sln file to invoke Microsoft* Visual Studio* and open the project.
    • +
    • Invoke Microsoft* Visual Studio* from the Start menu and use the "Open Project" dialog to navigate to and open the project.
    • +
    +
  4. +
  5. Press <ctrl-F5> to build and run the example.
  6. +
  7. If you copied an example to another place separately from libraries you need to + set %TBBROOT% variable pointing to <installdir> folder.
  8. +
+ +

To build by using a Xcode* IDE project (OS X* systems):

+Perform the following steps: +
    +
  1. Identify the project (*.xcodeproj) file for the example you wish to build and run. +
      +
    • The *.xcodeproj file is in the example's xcode sub-directory. +
    +
  2. +
  3. Open the project by using one of the following methods: +
      +
    • Navigate to the *.xcodeproj file by using the Finder.Double-click the *.xcodeproj file to invoke the Xcode* IDE and open the project.
    • +
    • Invoke the Xcode* IDE and use the "File -> Open" dialog to navigate to and open the project.
    • +
    +
  4. +
  5. Press <Apple-R>, or press the "Build and Go" button in the toolbox, to build and run the example. +
  6. +
+ +

To build by using a Makefile (Windows*, Linux* or OS X* systems):

+Perform the following steps: +
    +
  1. Open a shell window. For Windows* systems, make sure this shell window has the proper environment + defined for use with Microsoft* Visual Studio* (2005, 2008, 2010 or 2012); such a shell can be invoked + from the Start menu, under Visual Studio, Visual Studio Tools, Visual Studio Command Prompt. +
  2. Set up the environment in this shell window for use with Intel TBB. +
    See below for how to set up the environment for Windows*, Linux* or OS X* systems. +
  3. Unless you installed Intel TBB yourself, you may not have write permissions to the directory + containing the example. In this case, make a copy of the example, and use the copy for the following steps. +
  4. In the shell window, navigate to the directory for the example + (or to the directory for the copy of the example if you made one in the previous step). +
  5. Use one or more of the following commands to build and run the example. + Here, make refers to the make command normally used on your system: this could be + nmake, gmake, or make on Windows* systems, or make or gmake on Linux* or OS X* systems. +
    +
    make +
    Default build and run. Equivalent to 'make release test'. +
    make release +
    Compile and link against the release version of Intel TBB runtime library. The resulting executable is left in the directory for the example. +
    make debug +
    Compile and link against the debug version of Intel TBB runtime library. The resulting executable is left in the directory for the example. +
    make test +
    Run an executable previously produced by one of the above commands. +
    make [(above options or targets)] CXX={icl, icc} +
    Build and run as above, but use Intel® compilers instead of default, native compilers (e.g., icl instead of cl.exe on Windows* systems, or icc instead of g++ on Linux* or OS X* systems). +
    make [(above options or targets)] offload=mic +
    Build and run the offload version of an example for Intel® Many Integrated Core (Intel® MIC) Architecture. +
    Note: Only Intel® MIC Architecture with Linux* based host is currently supported. +
    make clean +
    Remove any executables or intermediate files produced by the above commands. +
    +
+ +

To set up the environment (Windows* systems):

+It is strongly recommended that the environment be set up when installing Intel TBB. +Do this by selecting the appropriate check-box during the install. However, if the environment is not set up +during installation, or you wish to build for an alternate architecture or Microsoft* Visual Studio* version, +it may be set up, for a given type of shell window, by using one of the following commands: +
+
For cmd.exe (command prompt): +
<installdir>\bin\tbbvars.bat (arch) (vs) +
+    where (arch) must be is one of the following
+       ia32         : Set up for IA-32  architecture
+       intel64      : Set up for Intel® 64  architecture
+   (vs) should be one of the following
+       vs2010      : Set to use with Microsoft Visual Studio 2010 runtime DLLs
+       vs2012      : Set to use with Microsoft Visual Studio 2012 runtime DLLs
+       vs2013      : Set to use with Microsoft Visual Studio 2013 runtime DLLs
+       all         : Set to use TBB statically linked with Microsoft Visual C++ runtime
+   if (vs) is not set TBB statically linked with Microsoft Visual C++ runtime will be used.
+
+
+ +

To set up the environment (Linux* or OS X* systems):

+The environment may be set up, for a given type of shell window, by using one of the following commands: +
+
For sh, bash, ksh (or compatibles): +
. <installdir>/bin/tbbvars.sh (arch) +
For csh (or compatibles): +
source <installdir>/bin/tbbvars.csh (arch) +
Notes: +
+
  • Choose one of {ia32,intel64} depending on the architecture to be used. +
  • Environment setup need only be performed once per shell window to be used. +
  • Always source tbbvars.sh or tbbvars.csh rather than executing them directly. + +
  • + +
    +Up to parent directory +

    +Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

    +Intel is a registered trademark or trademark of Intel Corporation +or its subsidiaries in the United States and other countries. +

    +* Other names and brands may be claimed as the property of others. + + diff --git a/examples/parallel_do/index.html b/examples/parallel_do/index.html new file mode 100644 index 0000000000..ef1c3b5401 --- /dev/null +++ b/examples/parallel_do/index.html @@ -0,0 +1,24 @@ + + + +

    Overview

    +This directory has examples of the template parallel_do. + +

    Directories

    +
    +
    parallel_preorder +
    Parallel preorder traversal of a graph. +
    + +
    +Up to parent directory +

    +Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

    +Intel is a registered trademark or trademark of Intel Corporation +or its subsidiaries in the United States and other countries. +

    +* Other names and brands may be claimed as the property of others. + + + diff --git a/examples/parallel_do/parallel_preorder/Graph.cpp b/examples/parallel_do/parallel_preorder/Graph.cpp new file mode 100644 index 0000000000..8729a1c368 --- /dev/null +++ b/examples/parallel_do/parallel_preorder/Graph.cpp @@ -0,0 +1,101 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#include +#include "Graph.h" +#include + +using namespace std; + +void Graph::create_random_dag( size_t number_of_nodes ) { + my_vertex_set.resize(number_of_nodes); + for( size_t k=0; k>8)%5u); + if( op>int(k) ) op = int(k); + switch( op ) { + default: + c.op = OP_VALUE; + c.value = Cell::value_type((float)k); + break; + case 1: + c.op = OP_NEGATE; + break; + case 2: + c.op = OP_SUB; + break; + case 3: + c.op = OP_ADD; + break; + case 4: + c.op = OP_MUL; + break; + } + for( int j=0; j& root_set ) { + for( size_t k=0; ksuccessor.push_back(&c); + } + if( ArityOfOp[c.op]==0 ) + root_set.push_back(&my_vertex_set[k]); + } +} + +void Cell::update() { + switch( op ) { + case OP_VALUE: + break; + case OP_NEGATE: + value = -(input[0]->value); + break; + case OP_ADD: + value = input[0]->value + input[1]->value; + break; + case OP_SUB: + value = input[0]->value - input[1]->value; + break; + case OP_MUL: + value = input[0]->value * input[1]->value; + break; + } +} + diff --git a/examples/parallel_do/parallel_preorder/Graph.h b/examples/parallel_do/parallel_preorder/Graph.h new file mode 100644 index 0000000000..1369c3335a --- /dev/null +++ b/examples/parallel_do/parallel_preorder/Graph.h @@ -0,0 +1,80 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#include "Matrix.h" +#include "tbb/atomic.h" +#include + +enum OpKind { + // Use Cell's value + OP_VALUE, + // Unary negation + OP_NEGATE, + // Addition + OP_ADD, + // Subtraction + OP_SUB, + // Multiplication + OP_MUL +}; + +static const int ArityOfOp[] = {0,1,2,2,2}; + +class Cell { +public: + //! Operation for this cell + OpKind op; + + //! Inputs to this cell + Cell* input[2]; + + //! Type of value stored in a Cell + typedef Matrix value_type; + + //! Value associated with this Cell + value_type value; + + //! Set of cells that use this Cell as an input + std::vector successor; + + //! Reference count of number of inputs that are not yet updated. + tbb::atomic ref_count; + + //! Update the Cell's value. + void update(); + + //! Default construtor + Cell() {} +}; + +//! A directed graph where the vertices are Cells. +class Graph { + std::vector my_vertex_set; +public: + //! Create a random acyclic directed graph + void create_random_dag( size_t number_of_nodes ); + + //! Print the graph + void print(); + + //! Get set of cells that have no inputs. + void get_root_set( std::vector& root_set ); +}; + diff --git a/examples/parallel_do/parallel_preorder/Makefile b/examples/parallel_do/parallel_preorder/Makefile new file mode 100644 index 0000000000..b76ece9a3c --- /dev/null +++ b/examples/parallel_do/parallel_preorder/Makefile @@ -0,0 +1,61 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# GNU Makefile that builds and runs example. +run_cmd= +PROG=parallel_preorder +ARGS= +PERF_RUN_ARGS=auto silent 500000 100 +LIGHT_ARGS=1:auto:+4 n-of-traversals=50 + +# The C++ compiler +ifneq (,$(shell which icc 2>/dev/null)) +CXX=icc +endif # icc + +ifeq ($(shell uname), Linux) +ifeq ($(target), android) +LIBS+= --sysroot=$(SYSROOT) +run_cmd=../../common/android.linux.launcher.sh +else +LIBS+= -lrt +endif +endif + +all: release test + +release: *.cpp + $(CXX) -O2 -DNDEBUG $(CXXFLAGS) -o $(PROG) $^ -ltbb $(LIBS) + +debug: *.cpp + $(CXX) -O0 -g -DTBB_USE_DEBUG $(CXXFLAGS) -o $(PROG) $^ -ltbb_debug $(LIBS) + +clean: + $(RM) $(PROG) *.o *.d + +test: + $(run_cmd) ./$(PROG) $(ARGS) + +light_test: + $(run_cmd) ./$(PROG) $(LIGHT_ARGS) + +perf_build: release + +perf_run: + $(run_cmd) ./$(PROG) $(PERF_RUN_ARGS) + diff --git a/examples/parallel_do/parallel_preorder/Makefile.windows b/examples/parallel_do/parallel_preorder/Makefile.windows new file mode 100644 index 0000000000..e0cb7ab487 --- /dev/null +++ b/examples/parallel_do/parallel_preorder/Makefile.windows @@ -0,0 +1,54 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# Common Makefile that builds and runs example. + +# Just specify your program basename +PROG=Parallel_Preorder +ARGS= +PERF_RUN_ARGS=auto silent 500000 100 +LIGHT_ARGS=1:auto:+4 n-of-traversals=50 + +# Trying to find if icl.exe is set +CXX1 = $(TBB_CXX)- +CXX2 = $(CXX1:icl.exe-=icl.exe) +CXX = $(CXX2:-=cl.exe) + +# The C++ compiler options +MYCXXFLAGS = /TP /EHsc /W3 /nologo /D _CONSOLE /D _MBCS /D WIN32 /D _CRT_SECURE_NO_DEPRECATE $(CXXFLAGS) +MYLDFLAGS =/INCREMENTAL:NO /NOLOGO /DEBUG /FIXED:NO $(LDFLAGS) + +all: release test +release: compiler_check + $(CXX) *.cpp /MD /O2 /D NDEBUG $(MYCXXFLAGS) /link tbb.lib $(LIBS) $(MYLDFLAGS) /OUT:$(PROG).exe +debug: compiler_check + $(CXX) *.cpp /MDd /Od /Zi /D TBB_USE_DEBUG /D _DEBUG $(MYCXXFLAGS) /link tbb_debug.lib $(LIBS) $(MYLDFLAGS) /OUT:$(PROG).exe +clean: + @cmd.exe /C del $(PROG).exe *.obj *.?db *.manifest +test: + $(PROG) $(ARGS) +light_test: + $(PROG) $(LIGHT_ARGS) +compiler_check: + @echo compiler_test>compiler_test && @$(CXX) /E compiler_test >nul 2>&1 || echo "$(CXX) command not found. Check if CXX=$(CXX) is set properly" + @cmd.exe /C del compiler_test + +perf_build: release + +perf_run: + ./$(PROG) $(PERF_RUN_ARGS) diff --git a/examples/parallel_do/parallel_preorder/Matrix.h b/examples/parallel_do/parallel_preorder/Matrix.h new file mode 100644 index 0000000000..9576512a67 --- /dev/null +++ b/examples/parallel_do/parallel_preorder/Matrix.h @@ -0,0 +1,60 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +class Matrix { + static const int n = 20; + float array[n][n]; +public: + Matrix() {} + Matrix( float z ) { + for( int i=0; i + + +

    Overview

    +Example that uses parallel_do to do parallel preorder traversal of a sparse graph. +

    +Each vertex in the graph is called a "cell". +Each cell has a value. +The value is a matrix. +Some of the cells have operators +that compute the cell's value, using other cell's values as input. +A cell that uses the value of cell x is called a successor of x. +

    +The algorithm works as follows. +

      +
    1. Compute the set of cells that have no inputs. This set is called root_set. +
    2. Each cell has an associated field ref_count that is an atomic integer. + Initialize ref_count to the number of inputs for the Cell. +
    3. Update each cell in root_set, by applying a parallel_do to a root_set +
    4. After updating a cell, for each of its successors +
        +
      1. Atomically decrement the successor's ref_count +
      2. If the count became zero, add the cell to the set of cells to be updated, + by calling parallel_do_feeder_impl::add. +
      +
    +

    +The times printed are for the traversal and update, +and do not include time for computing the root_set. +

    +The example is using custom synchronization via ref_count atomic variable. +Correctness checking tools might not take this into account, and report data races +between different tasks that are actually synchronized. +

    + +NOTE: It is important to understand that this example is unlikely to show speedup +if the cell values are changed to type "float". The reason is twofold. +
      +
    • The smaller value type causes each Cell to be significantly smaller than a cache line, + which leads to false sharing conflicts. +
    • The time to update the cells becomes very small, and consequently the overhead of + parallel_do swamps the useful work. +
    + +

    Files

    +
    +
    main.cpp +
    Main program which parses command line options and runs the algorithm with different numbers of threads. +
    parallel_preorder.cpp +
    Implementation of the parallel preorder traversal algorithm. +
    Graph.h +
    Interfaces of the Graph and Cell classes. +
    Graph.cpp +
    Implementations of the Graph and Cell classes. +
    Matrix.h +
    The Matrix class definition. +
    Makefile +
    Makefile for building example. +
    + +

    Directories

    +
    +
    msvs +
    Contains Microsoft* Visual Studio* 2010 workspace for building and running the example (Windows* systems only). +
    xcode +
    Contains Xcode* IDE workspace for building and running the example (OS X* systems only). +
    + +

    To Build

    +General build directions can be found here. + +

    Usage

    +
    +
    parallel_preorder -h +
    Prints the help for command line options +
    parallel_preorder [n-of-threads=value] [n-of-nodes=value] [n-of-traversals=value] [silent] +
    parallel_preorder [n-of-threads [n-of-nodes [n-of-traversals]]] [silent] +
    n-of-threads is the number of threads to use; a range of the form low[:high], where low and optional high are non-negative integers or 'auto' for the TBB default.
    + n-of-nodes is a number of nodes in the graph. Default value is 1000.
    + n-of-traversals is the number of times to evaluate the graph. Default value is 500.
    + silent - no output except elapsed time.
    +
    To run a short version of this example, e.g., for use with Intel® Parallel Inspector: +
    Build a debug version of the example + (see the build directions). +
    Run it with the desired number of threads and smaller number of traversals, e.g., parallel_preorder 4 1000 5. +
    + +
    +Up to parent directory +

    +Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

    +Intel is a registered trademark or trademark of Intel Corporation +or its subsidiaries in the United States and other countries. +

    +* Other names and brands may be claimed as the property of others. + + + diff --git a/examples/parallel_do/parallel_preorder/main.cpp b/examples/parallel_do/parallel_preorder/main.cpp new file mode 100644 index 0000000000..0fe20b289e --- /dev/null +++ b/examples/parallel_do/parallel_preorder/main.cpp @@ -0,0 +1,93 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +/* Example program that shows how to use parallel_do to do parallel preorder + traversal of a directed acyclic graph. */ + +#include +#include "tbb/task_scheduler_init.h" +#include "tbb/tick_count.h" +#include "../../common/utility/utility.h" +#include +#include +#include "Graph.h" + +// some forward declarations +class Cell; +void ParallelPreorderTraversal( const std::vector& root_set ); + +//------------------------------------------------------------------------ +// Test driver +//------------------------------------------------------------------------ +utility::thread_number_range threads(tbb::task_scheduler_init::default_num_threads); +static unsigned nodes = 1000; +static unsigned traversals = 500; +static bool SilentFlag = false; + +//! Parse the command line. +static void ParseCommandLine( int argc, const char* argv[] ) { + utility::parse_cli_arguments( + argc,argv, + utility::cli_argument_pack() + //"-h" option for displaying help is present implicitly + .positional_arg(threads,"n-of-threads",utility::thread_number_range_desc) + .positional_arg(nodes,"n-of-nodes","number of nodes in the graph.") + .positional_arg(traversals,"n-of-traversals","number of times to evaluate the graph. Reduce it (e.g. to 100) to shorten example run time\n") + .arg(SilentFlag,"silent","no output except elapsed time ") + ); +} + +int main( int argc, const char* argv[] ) { + try { + tbb::tick_count main_start = tbb::tick_count::now(); + ParseCommandLine(argc,argv); + + // Start scheduler with given number of threads. + for( int p=threads.first; p<=threads.last; p = threads.step(p) ) { + tbb::tick_count t0 = tbb::tick_count::now(); + tbb::task_scheduler_init init(p); + srand(2); + size_t root_set_size = 0; + { + Graph g; + g.create_random_dag(nodes); + std::vector root_set; + g.get_root_set(root_set); + root_set_size = root_set.size(); + for( unsigned int trial=0; trial + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + parallel_preorder + {3AA40693-F93D-4D4B-B32E-068F511A252B} + parallel_preorder + Win32Proj + + + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Console + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 debug "$(OutDir)" + + + + + X64 + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;_DEBUG;_CONSOLE;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Console + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 debug "$(OutDir)" + + + + + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Console + true + true + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 release "$(OutDir)" + + + + + X64 + + + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreadedDLL + + + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Console + true + true + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 release "$(OutDir)" + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/parallel_do/parallel_preorder/parallel_preorder.cpp b/examples/parallel_do/parallel_preorder/parallel_preorder.cpp new file mode 100644 index 0000000000..197e691fc4 --- /dev/null +++ b/examples/parallel_do/parallel_preorder/parallel_preorder.cpp @@ -0,0 +1,56 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#include "tbb/parallel_do.h" +#include +#include +#include "Graph.h" + + +class Body { +public: + Body() {}; + + //------------------------------------------------------------------------ + // Following signatures are required by parallel_do + //------------------------------------------------------------------------ + typedef Cell* argument_type; + + void operator()( Cell* c, tbb::parallel_do_feeder& feeder ) const { + c->update(); + // Restore ref_count in preparation for subsequent traversal. + c->ref_count = ArityOfOp[c->op]; + for( size_t k=0; ksuccessor.size(); ++k ) { + Cell* successor = c->successor[k]; + // ref_count is used for inter-task synchronization. + // Correctness checking tools might not take this into account, and report + // data races between different tasks, that are actually synchronized. + if( 0 == --(successor->ref_count) ) { + feeder.add( successor ); + } + } + } +}; + +void ParallelPreorderTraversal( const std::vector& root_set ) { + tbb::parallel_do(root_set.begin(), root_set.end(),Body()); +} + + diff --git a/examples/parallel_do/parallel_preorder/xcode/parallel_preorder.xcodeproj/project.pbxproj b/examples/parallel_do/parallel_preorder/xcode/parallel_preorder.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..6773133b21 --- /dev/null +++ b/examples/parallel_do/parallel_preorder/xcode/parallel_preorder.xcodeproj/project.pbxproj @@ -0,0 +1,317 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 05593AA80B8F55D500DE73AB /* Graph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 05593AA40B8F55D500DE73AB /* Graph.cpp */; }; + 05593AAB0B8F55D500DE73AB /* parallel_preorder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 05593AA70B8F55D500DE73AB /* parallel_preorder.cpp */; }; + A1F593B70B8F06F900073279 /* libtbb.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A1F593B30B8F06F900073279 /* libtbb.dylib */; }; + A1F593BB0B8F072500073279 /* libtbb.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = A1F593B30B8F06F900073279 /* libtbb.dylib */; }; + EAD808FA13051AB300FE8C7C /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAD808F913051AB300FE8C7C /* main.cpp */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 8DD76F690486A84900D96B5E /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 12; + dstPath = ""; + dstSubfolderSpec = 16; + files = ( + A1F593BB0B8F072500073279 /* libtbb.dylib in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 05593AA40B8F55D500DE73AB /* Graph.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Graph.cpp; path = ../Graph.cpp; sourceTree = SOURCE_ROOT; }; + 05593AA50B8F55D500DE73AB /* Graph.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = Graph.h; path = ../Graph.h; sourceTree = SOURCE_ROOT; }; + 05593AA60B8F55D500DE73AB /* Matrix.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = Matrix.h; path = ../Matrix.h; sourceTree = SOURCE_ROOT; }; + 05593AA70B8F55D500DE73AB /* parallel_preorder.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = parallel_preorder.cpp; path = ../parallel_preorder.cpp; sourceTree = SOURCE_ROOT; }; + 8DD76F6C0486A84900D96B5E /* parallel_preorder */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = parallel_preorder; sourceTree = BUILT_PRODUCTS_DIR; }; + A1F593B30B8F06F900073279 /* libtbb.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libtbb.dylib; path = ../../../../lib/libtbb.dylib; sourceTree = SOURCE_ROOT; }; + EAD808F913051AB300FE8C7C /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = ../main.cpp; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8DD76F660486A84900D96B5E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A1F593B70B8F06F900073279 /* libtbb.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 08FB7794FE84155DC02AAC07 /* parallel_preorder */ = { + isa = PBXGroup; + children = ( + 08FB7795FE84155DC02AAC07 /* Source */, + A1F593B20B8F06F900073279 /* External Frameworks and Libraries */, + 1AB674ADFE9D54B511CA2CBB /* Products */, + ); + name = parallel_preorder; + sourceTree = ""; + }; + 08FB7795FE84155DC02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + EAD808F913051AB300FE8C7C /* main.cpp */, + 05593AA70B8F55D500DE73AB /* parallel_preorder.cpp */, + 05593AA40B8F55D500DE73AB /* Graph.cpp */, + 05593AA50B8F55D500DE73AB /* Graph.h */, + 05593AA60B8F55D500DE73AB /* Matrix.h */, + ); + name = Source; + sourceTree = ""; + }; + 1AB674ADFE9D54B511CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8DD76F6C0486A84900D96B5E /* parallel_preorder */, + ); + name = Products; + sourceTree = ""; + }; + A1F593B20B8F06F900073279 /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + A1F593B30B8F06F900073279 /* libtbb.dylib */, + ); + name = "External Frameworks and Libraries"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8DD76F620486A84900D96B5E /* parallel_preorder */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "parallel_preorder" */; + buildPhases = ( + 8DD76F640486A84900D96B5E /* Sources */, + 8DD76F660486A84900D96B5E /* Frameworks */, + 8DD76F690486A84900D96B5E /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = parallel_preorder; + productInstallPath = "$(HOME)/bin"; + productName = parallel_preorder; + productReference = 8DD76F6C0486A84900D96B5E /* parallel_preorder */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0410; + }; + buildConfigurationList = 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "parallel_preorder" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + en, + ); + mainGroup = 08FB7794FE84155DC02AAC07 /* parallel_preorder */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8DD76F620486A84900D96B5E /* parallel_preorder */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 8DD76F640486A84900D96B5E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 05593AA80B8F55D500DE73AB /* Graph.cpp in Sources */, + 05593AAB0B8F55D500DE73AB /* parallel_preorder.cpp in Sources */, + EAD808FA13051AB300FE8C7C /* main.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1DEB923208733DC60010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = parallel_preorder; + ZERO_LINK = NO; + }; + name = Debug; + }; + 1DEB923308733DC60010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = parallel_preorder; + ZERO_LINK = NO; + }; + name = Release; + }; + 1DEB923608733DC60010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Debug; + }; + 1DEB923708733DC60010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Release; + }; + A1F593C60B8F0E6E00073279 /* Debug64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = parallel_preorder; + ZERO_LINK = NO; + }; + name = Debug64; + }; + A1F593C70B8F0E6E00073279 /* Release64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = parallel_preorder; + ZERO_LINK = NO; + }; + name = Release64; + }; + A1F593C80B8F0E6E00073279 /* Debug64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-m64", + ); + OTHER_LDFLAGS = "-m64"; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Debug64; + }; + A1F593C90B8F0E6E00073279 /* Release64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-m64", + ); + OTHER_LDFLAGS = "-m64"; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Release64; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "parallel_preorder" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB923208733DC60010E9CD /* Debug */, + A1F593C60B8F0E6E00073279 /* Debug64 */, + 1DEB923308733DC60010E9CD /* Release */, + A1F593C70B8F0E6E00073279 /* Release64 */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "parallel_preorder" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB923608733DC60010E9CD /* Debug */, + A1F593C80B8F0E6E00073279 /* Debug64 */, + 1DEB923708733DC60010E9CD /* Release */, + A1F593C90B8F0E6E00073279 /* Release64 */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/examples/parallel_for/game_of_life/Makefile b/examples/parallel_for/game_of_life/Makefile new file mode 100644 index 0000000000..df52391f47 --- /dev/null +++ b/examples/parallel_for/game_of_life/Makefile @@ -0,0 +1,51 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# GNU Makefile that builds and runs example. +run_cmd= +PROG=game_of_life +ARGS=2:4 -t 5 +LIGHT_ARGS=1:2 -t 5 +ifneq (,$(shell which icc 2>/dev/null)) +CXX=icc +endif # icc + +ifeq ($(shell uname), Linux) +ifeq ($(target), android) +LIBS+= --sysroot=$(SYSROOT) +run_cmd=../../common/android.linux.launcher.sh +else +LIBS+= -lrt +endif +endif + +all: release test + +release: src/Evolution.cpp src/Update_state.cpp src/Game_of_life.cpp + $(CXX) -O2 -DNDEBUG -D_CONSOLE $(CXXFLAGS) -o $(PROG) $^ -ltbb $(LIBS) + +debug: src/Evolution.cpp src/Update_state.cpp src/Game_of_life.cpp + $(CXX) -O0 -D_CONSOLE -g -DTBB_USE_DEBUG $(CXXFLAGS) -o $(PROG) $^ -ltbb_debug $(LIBS) + +clean: + rm -f $(PROG) *.o *.d + +test: + $(run_cmd) ./$(PROG) $(ARGS) +light_test: + $(run_cmd) ./$(PROG) $(LIGHT_ARGS) diff --git a/examples/parallel_for/game_of_life/Makefile.windows b/examples/parallel_for/game_of_life/Makefile.windows new file mode 100644 index 0000000000..d22cb6fd58 --- /dev/null +++ b/examples/parallel_for/game_of_life/Makefile.windows @@ -0,0 +1,46 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# Common Makefile that builds and runs example. + +# Just specify your program basename +PROG=game_of_life +ARGS=2:4 -t 5 +LIGHT_ARGS=1:2 -t 5 + +# Trying to find if icl.exe is set +CXX1 = $(TBB_CXX)- +CXX2 = $(CXX1:icl.exe-=icl.exe) +CXX = $(CXX2:-=cl.exe) + +# The C++ compiler options +MYCXXFLAGS = /TP /EHsc /W3 /nologo /D _CONSOLE /D _MBCS /D WIN32 /D _CRT_SECURE_NO_DEPRECATE $(CXXFLAGS) +MYLDFLAGS =/INCREMENTAL:NO /NOLOGO /DEBUG /FIXED:NO $(LDFLAGS) + +all: release test +release: + $(CXX) ./src/Evolution.cpp ./src/Game_of_life.cpp ./src/Update_state.cpp /MD /O2 /D NDEBUG $(MYCXXFLAGS) /link tbb.lib $(LIBS) $(MYLDFLAGS) /OUT:$(PROG).exe +debug: + $(CXX) ./src/Evolution.cpp ./src/Game_of_life.cpp ./src/Update_state.cpp /MDd /Od /Zi /D _DEBUG $(MYCXXFLAGS) /link tbb_debug.lib $(LIBS) $(MYLDFLAGS) /OUT:$(PROG).exe +clean: + @cmd.exe /C del $(PROG).exe *.obj *.?db *.manifest +test: + $(PROG) $(ARGS) +light_test: + $(PROG) $(LIGHT_ARGS) + diff --git a/examples/parallel_for/game_of_life/index.html b/examples/parallel_for/game_of_life/index.html new file mode 100644 index 0000000000..7fb36bdd87 --- /dev/null +++ b/examples/parallel_for/game_of_life/index.html @@ -0,0 +1,54 @@ + + + +

    Overview

    +The "Game of life" example demonstrates interoperability of TBB and .NET. +
    This program runs 2 simultaneous instances of the classic Conway's "Game of Life". +One of these instances uses serial calculations to update the board. The other one calculates in parallel with TBB. +The visualization is written in managed C++ and uses .NET CLR. + +

    Source Files

    +
    +
    Form1.h, Board.h +
    Header files for GUI classes. +
    Evolution.h, Evolution.cpp +
    Contain class hierarchy to implement game evolution in serial and parallel. +
    Update_state.cpp +
    Implements 2 approaches for calculating steps in the program: with the use of SSE intrinsics, and ordinary C++ code. +
    Game_of_life.cpp +
    Contains program entry point and other source not related to logical structure of the example. +
    Makefile +
    Makefile for building example. +
    + +

    Directories

    +
    +
    src +
    Contains source files mentioned above. +
    msvs +
    Contains Microsoft* Visual Studio* 2010 workspace for building and running the example (Windows* systems only). +
    xcode +
    Contains Xcode* IDE workspace for building and running the example (OS X* systems only). +
    + +

    To Build

    +General build directions can be found here. +

    + +

    Usage

    +
    +For Windows* systems, Microsoft* Visual Studio* projects are provided for each of the above versions. +
    + +
    +Up to parent directory +

    +Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

    +Intel is a registered trademark or trademark of Intel Corporation +or its subsidiaries in the United States and other countries. +

    +* Other names and brands may be claimed as the property of others. + + + diff --git a/examples/parallel_for/game_of_life/msvs/Game_of_life.sln b/examples/parallel_for/game_of_life/msvs/Game_of_life.sln new file mode 100644 index 0000000000..05012366d2 --- /dev/null +++ b/examples/parallel_for/game_of_life/msvs/Game_of_life.sln @@ -0,0 +1,38 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Game of Life", "Game_of_life.vcxproj", "{731C7E2E-2766-41D9-96FC-0A3548973803}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug(console)|Win32 = Debug(console)|Win32 + Debug(console)|x64 = Debug(console)|x64 + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release(console)|Win32 = Release(console)|Win32 + Release(console)|x64 = Release(console)|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {731C7E2E-2766-41D9-96FC-0A3548973803}.Debug(console)|Win32.ActiveCfg = Debug(console)|Win32 + {731C7E2E-2766-41D9-96FC-0A3548973803}.Debug(console)|Win32.Build.0 = Debug(console)|Win32 + {731C7E2E-2766-41D9-96FC-0A3548973803}.Debug(console)|x64.ActiveCfg = Debug(console)|x64 + {731C7E2E-2766-41D9-96FC-0A3548973803}.Debug(console)|x64.Build.0 = Debug(console)|x64 + {731C7E2E-2766-41D9-96FC-0A3548973803}.Debug|Win32.ActiveCfg = Debug|Win32 + {731C7E2E-2766-41D9-96FC-0A3548973803}.Debug|Win32.Build.0 = Debug|Win32 + {731C7E2E-2766-41D9-96FC-0A3548973803}.Debug|x64.ActiveCfg = Debug|x64 + {731C7E2E-2766-41D9-96FC-0A3548973803}.Debug|x64.Build.0 = Debug|x64 + {731C7E2E-2766-41D9-96FC-0A3548973803}.Release(console)|Win32.ActiveCfg = Release(console)|Win32 + {731C7E2E-2766-41D9-96FC-0A3548973803}.Release(console)|Win32.Build.0 = Release(console)|Win32 + {731C7E2E-2766-41D9-96FC-0A3548973803}.Release(console)|x64.ActiveCfg = Release(console)|x64 + {731C7E2E-2766-41D9-96FC-0A3548973803}.Release(console)|x64.Build.0 = Release(console)|x64 + {731C7E2E-2766-41D9-96FC-0A3548973803}.Release|Win32.ActiveCfg = Release|Win32 + {731C7E2E-2766-41D9-96FC-0A3548973803}.Release|Win32.Build.0 = Release|Win32 + {731C7E2E-2766-41D9-96FC-0A3548973803}.Release|x64.ActiveCfg = Release|x64 + {731C7E2E-2766-41D9-96FC-0A3548973803}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/examples/parallel_for/game_of_life/msvs/Game_of_life.vcxproj b/examples/parallel_for/game_of_life/msvs/Game_of_life.vcxproj new file mode 100644 index 0000000000..96da7865fb --- /dev/null +++ b/examples/parallel_for/game_of_life/msvs/Game_of_life.vcxproj @@ -0,0 +1,443 @@ + + + + + Debug(console) + Win32 + + + Debug(console) + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release(console) + Win32 + + + Release(console) + x64 + + + Release + Win32 + + + Release + x64 + + + + Game of Life + {731C7E2E-2766-41D9-96FC-0A3548973803} + Game_of_life + ManagedCProj + + + + Application + MultiByte + false + + + Application + MultiByte + false + + + Application + Unicode + true + true + + + Application + Unicode + true + false + + + Application + MultiByte + false + + + Application + MultiByte + false + + + Application + Unicode + true + true + + + Application + Unicode + true + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + true + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + true + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + false + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + false + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_WINDOWS;_DEBUG;USE_SSE;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + false + Level2 + ProgramDatabase + + + tbb_debug.lib;user32.lib + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + true + Windows + main + MachineX86 + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 debug "$(OutDir)" + + + + + X64 + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;_WINDOWS;_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + false + Level2 + ProgramDatabase + + + tbb_debug.lib;user32.lib + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + true + Windows + main + MachineX64 + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 debug "$(OutDir)" + + + + + -S -03 + %(AdditionalOptions) + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + tbb.lib;user32.lib + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Windows + true + true + main + MachineX86 + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 release "$(OutDir)" + + + + + X64 + + + -S -03 + %(AdditionalOptions) + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;_WINDOWS;NDEBUG;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + tbb.lib;user32.lib + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Windows + true + true + main + MachineX64 + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 release "$(OutDir)" + + + + + + + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;USE_SSE;%(PreprocessorDefinitions) + Sync + MultiThreadedDebugDLL + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + $(TargetDir)$(TargetName).pdb + Console + MachineX86 + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 debug "$(OutDir)" + + + + + + + + + X64 + + + Disabled + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + Sync + MultiThreadedDebugDLL + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + $(TargetDir)$(TargetName).pdb + Console + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 debug "$(OutDir)" + + + + + + + + + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;USE_SSE;%(PreprocessorDefinitions) + MultiThreadedDLL + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Console + true + true + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 release "$(OutDir)" + + + + + + + + + X64 + + + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;USE_SSE;%(PreprocessorDefinitions) + MultiThreadedDLL + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Console + true + true + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 release "$(OutDir)" + + + + + true + true + + + true + true + + + true + true + + + true + true + + + true + true + + + + + true + true + true + true + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/parallel_for/game_of_life/msvs/app.ico b/examples/parallel_for/game_of_life/msvs/app.ico new file mode 100644 index 0000000000..3a5525fd79 Binary files /dev/null and b/examples/parallel_for/game_of_life/msvs/app.ico differ diff --git a/examples/parallel_for/game_of_life/msvs/app.rc b/examples/parallel_for/game_of_life/msvs/app.rc new file mode 100644 index 0000000000..807aa89666 --- /dev/null +++ b/examples/parallel_for/game_of_life/msvs/app.rc @@ -0,0 +1,63 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon placed first or with lowest ID value becomes application icon + +LANGUAGE 9, 1 +#pragma code_page(1252) +1 ICON "app.ico" + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" + "\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\0" +END + +#endif // APSTUDIO_INVOKED + +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/examples/parallel_for/game_of_life/msvs/resource.h b/examples/parallel_for/game_of_life/msvs/resource.h new file mode 100644 index 0000000000..d5ac7c42aa --- /dev/null +++ b/examples/parallel_for/game_of_life/msvs/resource.h @@ -0,0 +1,3 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by app.rc diff --git a/examples/parallel_for/game_of_life/src/AssemblyInfo.cpp b/examples/parallel_for/game_of_life/src/AssemblyInfo.cpp new file mode 100644 index 0000000000..7f3c96067d --- /dev/null +++ b/examples/parallel_for/game_of_life/src/AssemblyInfo.cpp @@ -0,0 +1,58 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +using namespace System; +using namespace System::Reflection; +using namespace System::Runtime::CompilerServices; +using namespace System::Runtime::InteropServices; +using namespace System::Security::Permissions; + +// +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +// +[assembly:AssemblyTitleAttribute("Automata")]; +[assembly:AssemblyDescriptionAttribute("")]; +[assembly:AssemblyConfigurationAttribute("")]; +[assembly:AssemblyCompanyAttribute("")]; +[assembly:AssemblyProductAttribute("Automata")]; +[assembly:AssemblyCopyrightAttribute("Copyright (c) 2007")]; +[assembly:AssemblyTrademarkAttribute("")]; +[assembly:AssemblyCultureAttribute("")]; + +// +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the value or you can default the Revision and Build Numbers +// by using the '*' as shown below: + +[assembly:AssemblyVersionAttribute("1.0.*")]; + +[assembly:ComVisible(false)]; + +[assembly:CLSCompliantAttribute(true)]; + +[assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode = true)]; diff --git a/examples/parallel_for/game_of_life/src/Board.h b/examples/parallel_for/game_of_life/src/Board.h new file mode 100644 index 0000000000..aff6b562ef --- /dev/null +++ b/examples/parallel_for/game_of_life/src/Board.h @@ -0,0 +1,107 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#ifndef __BOARD_H__ +#define __BOARD_H__ + +#define WIN32_LEAN_AND_MEAN + +#ifndef _CONSOLE +#include + +using namespace System; +using namespace System::ComponentModel; +using namespace System::Collections; +using namespace System::Windows::Forms; +using namespace System::Data; +using namespace System::Drawing; +#define LabelPtr Label^ +#define BoardPtr Board^ +#else +#define LabelPtr int* +#define BoardPtr Board* +#endif + +struct Matrix +{ + int width; + int height; + char* data; +}; + +#ifndef _CONSOLE +public ref class Board : public System::Windows::Forms::UserControl +#else +class Board +#endif + { + public: + Board(int width, int height, int squareSize, LabelPtr counter); + virtual ~Board(); + void seed(int s); + void seed(const BoardPtr s); +#ifndef _CONSOLE + protected: + virtual void OnPaint(PaintEventArgs^ e) override; + void Board::draw(Graphics^ g); + + private: + System::ComponentModel::Container ^components; + +#pragma region Windows Form Designer generated code + void InitializeComponent(void) + { + this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; + } +#pragma endregion + + private: delegate void drawDelegate(Int32); + public: + //! Called from the Evolution thread + void draw( Int32 nCurIteration ) + { + if (this->InvokeRequired) + { + drawDelegate^ d = gcnew drawDelegate(this, &Board::draw); + IAsyncResult^ result = BeginInvoke(d, nCurIteration); + EndInvoke(result); + return; + } + m_counter->Text = nCurIteration.ToString(); + Invalidate(); + } +#endif + public: + Matrix *m_matrix; + + private: +#ifndef _CONSOLE + SolidBrush^ m_occupiedBrush; + SolidBrush^ m_freeBrush; + Graphics^ m_graphics; + Graphics^ m_mem_dc; + Bitmap^ m_bmp; +#endif + int m_width; + int m_height; + int m_squareSize; + LabelPtr m_counter; + }; +#endif diff --git a/examples/parallel_for/game_of_life/src/Evolution.cpp b/examples/parallel_for/game_of_life/src/Evolution.cpp new file mode 100644 index 0000000000..603dceaef4 --- /dev/null +++ b/examples/parallel_for/game_of_life/src/Evolution.cpp @@ -0,0 +1,243 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +/* + Evolution.cpp: implementation file for evolution classes; evolution + classes do looped evolution of patterns in a defined + 2 dimensional space +*/ + +#include "Evolution.h" +#include "Board.h" + +#ifdef USE_SSE +#define GRAIN_SIZE 14 +#else +#define GRAIN_SIZE 4000 +#endif +#define TIME_SLICE 330 + +/* + Evolution +*/ + +/** + Evolution::UpdateMatrix() - moves the calculated destination data + to the source data block. No destination zeroing is required since it will + be completely overwritten during the next calculation cycle. +**/ +void Evolution::UpdateMatrix() +{ + memcpy(m_matrix->data, m_dest, m_size); +} + +/* + SequentialEvolution +*/ + +//! SequentialEvolution::Run - begins looped evolution +#ifndef _CONSOLE +void SequentialEvolution::Run() +{ +#else +void SequentialEvolution::Run(double execution_time, int nthread) +{ + printf("Starting game (Sequential evolution)\n"); +#endif + + m_nIteration = 0; + m_serial_time = 0; + tbb::tick_count t0 = tbb::tick_count::now(); + while (!m_done) + { + if( !is_paused ) + { + tbb::tick_count t = tbb::tick_count::now(); + Step(); + tbb::tick_count t1 = tbb::tick_count::now(); + ++m_nIteration; + double work_time = (t1-t0).seconds(); +#ifndef _CONSOLE + if ( work_time * 1000 < TIME_SLICE ) + continue; + m_serial_time += work_time; + m_board->draw(m_nIteration); +#else + m_serial_time += work_time; +#endif + } + //! Let the parallel algorithm work uncontended almost the same time + //! as the serial one. See ParallelEvolution::Run() as well. +#ifndef _CONSOLE + m_evt_start_parallel->Set(); + m_evt_start_serial->WaitOne(); + t0 = tbb::tick_count::now(); +#else + t0 = tbb::tick_count::now(); + if(m_serial_time > execution_time) + { + printf("iterations count = %d time = %g\n", m_nIteration, m_serial_time); + break; + } +#endif + } +} + +//! SequentialEvolution::Step() - override of step method +void SequentialEvolution::Step() +{ + if( !is_paused ) + { +#ifdef USE_SSE + UpdateState(m_matrix, m_matrix->data, 0, m_matrix->height); +#else + UpdateState(m_matrix, m_dest, 0, (m_matrix->width * m_matrix->height)-1); + UpdateMatrix(); +#endif + } +} + +/* + ParallelEvolution +*/ + +//! SequentialEvolution::Run - begins looped evolution +#ifndef _CONSOLE +void ParallelEvolution::Run() +{ +#else +void ParallelEvolution::Run(double execution_time, int nthread) +{ + if(nthread == tbb::task_scheduler_init::automatic) + printf("Starting game (Parallel evolution for automatic number of thread(s))\n"); + else + printf("Starting game (Parallel evolution for %d thread(s))\n", nthread); +#endif + + m_nIteration = 0; + m_parallel_time = 0; + +#ifndef _CONSOLE + //! start task scheduler as necessary + if (m_pInit == NULL) + { + m_pInit = new tbb::task_scheduler_init(); + } + m_evt_start_parallel->WaitOne(); +#else + tbb::task_scheduler_init init(nthread); +#endif + + double work_time = m_serial_time; + tbb::tick_count t0 = tbb::tick_count::now(); + + while (!m_done) + { + if( !is_paused ) + { + tbb::tick_count t = tbb::tick_count::now(); + Step(); + tbb::tick_count t1 = tbb::tick_count::now(); + ++m_nIteration; + double real_work_time = (t1-t0).seconds(); +#ifndef _CONSOLE + if ( real_work_time < work_time ) + continue; + m_parallel_time += real_work_time; + m_board->draw(m_nIteration); +#else + m_parallel_time += real_work_time; +#endif + } + //! Let the serial algorithm work the same time as the parallel one. +#ifndef _CONSOLE + m_evt_start_serial->Set(); + m_evt_start_parallel->WaitOne(); + + work_time = m_serial_time - m_parallel_time; + t0 = tbb::tick_count::now(); +#else + t0 = tbb::tick_count::now(); + if(m_parallel_time > execution_time) + { + printf("iterations count = %d time = %g\n", m_nIteration, m_parallel_time); + init.terminate(); + break; + } +#endif + } +} + +/** + class tbb_parallel_task + + TBB requires a class for parallel loop implementations. The actual + loop "chunks" are performed using the () operator of the class. + The blocked_range contains the range to calculate. Please see the + TBB documentation for more information. +**/ +#ifndef _CONSOLE +public class tbb_parallel_task +#else +class tbb_parallel_task +#endif +{ +public: + static void set_values (Matrix* source, char* dest) + { + m_source = source; + m_dest = dest; + return; + } + + void operator()( const tbb::blocked_range& r ) const + { + int begin = (int)r.begin(); //! capture lower range number for this chunk + int end = (int)r.end(); //! capture upper range number for this chunk + UpdateState(m_source, m_dest, begin, end); + } + + tbb_parallel_task () {} + +private: + static Matrix* m_source; + static char* m_dest; +}; + +Matrix* tbb_parallel_task::m_source; +char* tbb_parallel_task::m_dest; + +//! ParallelEvolution::Step() - override of Step method +void ParallelEvolution::Step() +{ + size_t begin = 0; //! beginning cell position +#ifdef USE_SSE + size_t end = m_matrix->height; //! ending cell position +#else + size_t end = m_size-1; //! ending cell position +#endif + + //! set matrix pointers + tbb_parallel_task::set_values(m_matrix, m_dest); + + //! do calculation loop + parallel_for (tbb::blocked_range (begin, end, GRAIN_SIZE), tbb_parallel_task()); + UpdateMatrix(); +} diff --git a/examples/parallel_for/game_of_life/src/Evolution.h b/examples/parallel_for/game_of_life/src/Evolution.h new file mode 100644 index 0000000000..99280b8d9a --- /dev/null +++ b/examples/parallel_for/game_of_life/src/Evolution.h @@ -0,0 +1,195 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +/** + Evolution.h: Header file for evolution classes; evolution classes do + looped evolution of patterns in a defined 2 dimensional space +**/ + +#ifndef __EVOLUTION_H__ +#define __EVOLUTION_H__ + +#include "Board.h" +#include +#include +#include + +#define WIN32_LEAN_AND_MEAN + +#include "tbb/task_scheduler_init.h" +#include "tbb/blocked_range.h" +#include "tbb/parallel_for.h" +#include "tbb/tick_count.h" + +#ifndef _CONSOLE +#include +using namespace System::Threading; +#else +typedef unsigned int Int32; +#endif + +void UpdateState(Matrix * m_matrix, char * dest ,int begin, int end); + +/** + class Evolution - base class for SequentialEvolution and ParallelEvolution +**/ +#ifndef _CONSOLE +public ref class Evolution abstract +#else +class Evolution +#endif +{ +public: + Evolution( Matrix *m, //! beginning matrix including initial pattern + BoardPtr board //! the board to update + ) : m_matrix(m), m_board(board), + m_size(m_matrix->height * m_matrix->width), m_done(false) + { + //! allocate memory for second matrix data block + m_dest = new char[m_size]; + is_paused = false; +#ifdef _CONSOLE + m_serial_time = 0; +#endif + } + + virtual ~Evolution() + { + delete[] m_dest; + } + + //! Run() - begins looped evolution +#ifndef _CONSOLE + virtual void Run() = 0; +#else + virtual void Run(double execution_time, int nthread) = 0; +#endif + + //! Quit() - tell the thread to terminate + virtual void Quit() { m_done = true; } + + //! Step() - performs a single evolutionary generation computation on the game matrix + virtual void Step() = 0; + + //! SetPause() - change condition of variable is_paused + virtual void SetPause(bool condition) + { + if ( condition == true ) + is_paused = true; + else + is_paused = false; + } + +protected: + /** + UpdateMatrix() - moves the previous destination data to the source + data block and zeros out destination. + **/ + void UpdateMatrix(); + +protected: + Matrix* m_matrix; //! Pointer to initial matrix + char* m_dest; //! Pointer to calculation destination data + BoardPtr m_board; //! The game board to update + int m_size; //! size of the matrix data block + volatile bool m_done; //! a flag used to terminate the thread + Int32 m_nIteration; //! current calculation cycle index + volatile bool is_paused; //! is needed to perform next iteration + + //! Calculation time of the sequential version (since the start), seconds. + /** + This member is updated by the sequential version and read by parallel, + so no synchronization is necessary. + **/ +#ifndef _CONSOLE + static volatile double m_serial_time = 0; + + static System::Threading::AutoResetEvent ^m_evt_start_serial = gcnew AutoResetEvent(false), + ^m_evt_start_parallel = gcnew AutoResetEvent(false); +#else + double m_serial_time; +#endif +}; + +/** + class SequentialEvolution - derived from Evolution - calculate life generations serially +**/ +#ifndef _CONSOLE +public ref class SequentialEvolution: public Evolution +#else +class SequentialEvolution: public Evolution +#endif +{ +public: + SequentialEvolution(Matrix *m, BoardPtr board) + : Evolution(m, board) + {} +#ifndef _CONSOLE + virtual void Run() override; + virtual void Step() override; +#else + virtual void Run(double execution_time, int nthread); + virtual void Step(); +#endif + +}; + +/** + class ParallelEvolution - derived from Evolution - calculate life generations + in parallel using Intel(R) TBB +**/ +#ifndef _CONSOLE +public ref class ParallelEvolution: public Evolution +#else +class ParallelEvolution: public Evolution +#endif +{ +public: + + ParallelEvolution(Matrix *m, BoardPtr board) + : Evolution(m, board), + m_parallel_time(0) + { + // instantiate a task_scheduler_init object and save a pointer to it + m_pInit = NULL; + } + + ~ParallelEvolution() + { + //! delete task_scheduler_init object + if (m_pInit != NULL) + delete m_pInit; + } +#ifndef _CONSOLE + virtual void Run() override; + virtual void Step() override; +#else + virtual void Run(double execution_time, int nthread); + virtual void Step(); +#endif + + +private: + tbb::task_scheduler_init* m_pInit; + + double m_parallel_time; +}; + +#endif diff --git a/examples/parallel_for/game_of_life/src/Form1.h b/examples/parallel_for/game_of_life/src/Form1.h new file mode 100644 index 0000000000..976b05333f --- /dev/null +++ b/examples/parallel_for/game_of_life/src/Form1.h @@ -0,0 +1,306 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#ifndef _CONSOLE +#ifndef __FORM1_H__ +#define __FORM1_H__ + +#include +#include "Board.h" +#include "Evolution.h" + +#define BOARD_SQUARE_SIZE 2 + + using namespace System; + using namespace System::ComponentModel; + using namespace System::Collections; + using namespace System::Windows::Forms; + using namespace System::Data; + using namespace System::Drawing; + + public ref class Form1 : public System::Windows::Forms::Form + { + public: + Form1(void) + { + InitializeComponent(); + + FormBorderStyle = System::Windows::Forms::FormBorderStyle::FixedDialog; + ClientSize = System::Drawing::Size(1206, 600+m_ribbonHeight+menuStrip1->Height); + + int boardWidth = (ClientRectangle.Width/2-m_sepWidth/2)/BOARD_SQUARE_SIZE; + int boardHeight = (ClientRectangle.Height-menuStrip1->Height-m_ribbonHeight)/BOARD_SQUARE_SIZE; + + m_board1 = gcnew Board(boardWidth, boardHeight, BOARD_SQUARE_SIZE, seqGen); + m_board2 = gcnew Board(boardWidth, boardHeight, BOARD_SQUARE_SIZE, parGen); + + Controls->Add(m_board1); + Controls->Add(m_board2); + + m_board1->Location = System::Drawing::Point(2, m_ribbonHeight + menuStrip1->Height); + m_board2->Location = System::Drawing::Point(2 + boardWidth*BOARD_SQUARE_SIZE + m_sepWidth/2, m_ribbonHeight + menuStrip1->Height); + + m_seq = gcnew SequentialEvolution(m_board1->m_matrix, m_board1); + m_par = gcnew ParallelEvolution(m_board2->m_matrix, m_board2); + + m_seqThread = gcnew Thread(gcnew ThreadStart(m_seq, &SequentialEvolution::Run)); + m_parThread = gcnew Thread(gcnew ThreadStart(m_par, &ParallelEvolution::Run)); + + Thread::CurrentThread->Priority = ThreadPriority::AboveNormal; + + m_suspend = true; + } + protected: + ~Form1() + { + if (components) + { + delete components; + } + } + private: System::Windows::Forms::MenuStrip^ menuStrip1; + private: System::Windows::Forms::ToolStripMenuItem^ fileToolStripMenuItem; + private: System::Windows::Forms::ToolStripMenuItem^ exitToolStripMenuItem; + private: System::Windows::Forms::ToolStripMenuItem^ gameToolStripMenuItem; + private: System::Windows::Forms::ToolStripMenuItem^ seedToolStripMenuItem; + private: System::Windows::Forms::ToolStripMenuItem^ runToolStripMenuItem; + private: System::Windows::Forms::ToolStripMenuItem^ pauseToolStripMenuItem; + private: Board^ m_board1; + private: Board^ m_board2; + private: System::Windows::Forms::Label^ Sequential; + private: System::Windows::Forms::Label^ label1; + private: static const int m_sepWidth = 5; + private: static const int m_ribbonHeight = 26; + private: SequentialEvolution^ m_seq; + private: ParallelEvolution^ m_par; + private: Thread^ m_seqThread; + private: Thread^ m_parThread; + private: System::Windows::Forms::Label^ seqGen; + private: System::Windows::Forms::Label^ parGen; + private: bool m_suspend; + + private: + System::ComponentModel::Container ^components; + +#pragma region Windows Form Designer generated code + void InitializeComponent(void) + { + this->menuStrip1 = (gcnew System::Windows::Forms::MenuStrip()); + this->fileToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem()); + this->exitToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem()); + this->gameToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem()); + this->seedToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem()); + this->runToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem()); + this->pauseToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem()); + this->Sequential = (gcnew System::Windows::Forms::Label()); + this->label1 = (gcnew System::Windows::Forms::Label()); + this->seqGen = (gcnew System::Windows::Forms::Label()); + this->parGen = (gcnew System::Windows::Forms::Label()); + this->menuStrip1->SuspendLayout(); + this->SuspendLayout(); + // + // menuStrip1 + // + this->menuStrip1->Items->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(2) + {this->fileToolStripMenuItem, this->gameToolStripMenuItem}); + this->menuStrip1->Location = System::Drawing::Point(0, 0); + this->menuStrip1->Name = L"menuStrip1"; + this->menuStrip1->Padding = System::Windows::Forms::Padding(8, 2, 0, 2); + this->menuStrip1->Size = System::Drawing::Size(1600, 26); + this->menuStrip1->TabIndex = 0; + this->menuStrip1->Text = L"menuStrip1"; + this->menuStrip1->ItemClicked += gcnew System::Windows::Forms::ToolStripItemClickedEventHandler(this, &Form1::menuStrip1_ItemClicked); + // + // fileToolStripMenuItem + // + this->fileToolStripMenuItem->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(1) {this->exitToolStripMenuItem}); + this->fileToolStripMenuItem->Name = L"fileToolStripMenuItem"; + this->fileToolStripMenuItem->Size = System::Drawing::Size(40, 22); + this->fileToolStripMenuItem->Text = L"File"; + // + // exitToolStripMenuItem + // + this->exitToolStripMenuItem->Name = L"exitToolStripMenuItem"; + this->exitToolStripMenuItem->Size = System::Drawing::Size(99, 22); + this->exitToolStripMenuItem->Text = L"Exit"; + this->exitToolStripMenuItem->Click += gcnew System::EventHandler(this, &Form1::OnExit); + // + // gameToolStripMenuItem + // + this->gameToolStripMenuItem->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(3) {this->seedToolStripMenuItem, + this->runToolStripMenuItem, this->pauseToolStripMenuItem}); + this->gameToolStripMenuItem->Name = L"gameToolStripMenuItem"; + this->gameToolStripMenuItem->Size = System::Drawing::Size(59, 22); + this->gameToolStripMenuItem->Text = L"Game"; + // + // seedToolStripMenuItem + // + this->seedToolStripMenuItem->Name = L"seedToolStripMenuItem"; + this->seedToolStripMenuItem->Size = System::Drawing::Size(115, 22); + this->seedToolStripMenuItem->Text = L"Seed"; + this->seedToolStripMenuItem->Click += gcnew System::EventHandler(this, &Form1::OnSeed); + // + // runToolStripMenuItem + // + this->runToolStripMenuItem->Enabled = false; + this->runToolStripMenuItem->Name = L"runToolStripMenuItem"; + this->runToolStripMenuItem->Size = System::Drawing::Size(115, 22); + this->runToolStripMenuItem->Text = L"Run"; + this->runToolStripMenuItem->Click += gcnew System::EventHandler(this, &Form1::OnRun); + // + // pauseToolStripMenuItem + // + this->pauseToolStripMenuItem->Enabled = false; + this->pauseToolStripMenuItem->Name = L"pauseToolStripMenuItem"; + this->pauseToolStripMenuItem->Size = System::Drawing::Size(115, 22); + this->pauseToolStripMenuItem->Text = L"Pause"; + this->pauseToolStripMenuItem->Click += gcnew System::EventHandler(this, &Form1::OnPauseResume); + // + // Sequential + // + this->Sequential->AutoSize = true; + this->Sequential->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 9, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, + static_cast(0))); + this->Sequential->Location = System::Drawing::Point(12, 32); + this->Sequential->Margin = System::Windows::Forms::Padding(4, 0, 4, 0); + this->Sequential->Name = L"Sequential"; + this->Sequential->Size = System::Drawing::Size(239, 18); + this->Sequential->TabIndex = 1; + this->Sequential->Text = L"Sequential Algorithm generation:"; + // + // label1 + // + this->label1->AutoSize = true; + this->label1->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 9, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, + static_cast(0))); + this->label1->Location = System::Drawing::Point(813, 32); + this->label1->Margin = System::Windows::Forms::Padding(4, 0, 4, 0); + this->label1->Name = L"label1"; + this->label1->Size = System::Drawing::Size(219, 18); + this->label1->TabIndex = 2; + this->label1->Text = L"Parallel Algorithm generation: "; + // + // seqGen + // + this->seqGen->AutoSize = true; + this->seqGen->Location = System::Drawing::Point(289, 35); + this->seqGen->Margin = System::Windows::Forms::Padding(4, 0, 4, 0); + this->seqGen->Name = L"seqGen"; + this->seqGen->Size = System::Drawing::Size(16, 17); + this->seqGen->TabIndex = 3; + this->seqGen->Text = L"0"; + // + // parGen + // + this->parGen->AutoSize = true; + this->parGen->Location = System::Drawing::Point(1068, 35); + this->parGen->Margin = System::Windows::Forms::Padding(4, 0, 4, 0); + this->parGen->Name = L"parGen"; + this->parGen->Size = System::Drawing::Size(16, 17); + this->parGen->TabIndex = 4; + this->parGen->Text = L"0"; + // + // Form1 + // + this->AutoScaleDimensions = System::Drawing::SizeF(8, 16); + this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; + this->ClientSize = System::Drawing::Size(1600, 738); + this->Controls->Add(this->parGen); + this->Controls->Add(this->seqGen); + this->Controls->Add(this->label1); + this->Controls->Add(this->Sequential); + this->Controls->Add(this->menuStrip1); + this->MainMenuStrip = this->menuStrip1; + this->Margin = System::Windows::Forms::Padding(4); + this->MaximizeBox = false; + this->Name = L"Form1"; + this->Text = L"Game of Life"; + this->menuStrip1->ResumeLayout(false); + this->menuStrip1->PerformLayout(); + this->ResumeLayout(false); + this->PerformLayout(); + + } +#pragma endregion + protected: + void CloseApp () + { + m_seq->Quit(); + m_par->Quit(); + //! Perform a very ungracious exit, should coordinate the threads + System::Environment::Exit(0); + } + + protected: + virtual void OnPaint(PaintEventArgs^ e) override + { + } + + virtual void OnFormClosing(FormClosingEventArgs^ e) override + { + CloseApp(); + } + + void OnExit(System::Object^ sender, System::EventArgs^ e) + { + CloseApp(); + } + + void OnSeed(System::Object^ sender, System::EventArgs^ e) + { + this->seedToolStripMenuItem->Enabled = false; + this->runToolStripMenuItem->Enabled = true; + time_t now = time(NULL); + this->m_board1->seed((int)now); + this->m_board2->seed(this->m_board1); + this->Invalidate(); + } + + void OnRun(System::Object^ sender, System::EventArgs^ e) + { + this->runToolStripMenuItem->Enabled = false; + this->pauseToolStripMenuItem->Enabled = true; + m_seqThread->Start(); + m_parThread->Start(); + } + + void OnPauseResume(System::Object^ sender, System::EventArgs^ e) + { + if (m_suspend) + { + m_seq->SetPause(true); + m_par->SetPause(true); + this->pauseToolStripMenuItem->Text = L"Resume"; + } + else + { + m_seq->SetPause(false); + m_par->SetPause(false); + this->pauseToolStripMenuItem->Text = L"Pause"; + } + m_suspend = !m_suspend; + } + + private: + System::Void menuStrip1_ItemClicked(System::Object^ sender, System::Windows::Forms::ToolStripItemClickedEventArgs^ e) + {} +}; +#endif +#endif diff --git a/examples/parallel_for/game_of_life/src/Game_of_life.cpp b/examples/parallel_for/game_of_life/src/Game_of_life.cpp new file mode 100644 index 0000000000..80b86ed8ee --- /dev/null +++ b/examples/parallel_for/game_of_life/src/Game_of_life.cpp @@ -0,0 +1,230 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +/* + Game_of_life.cpp : + main project file. +*/ +#include "Board.h" +#include "Form1.h" + +#define WIN32_LEAN_AND_MEAN + +#ifndef _CONSOLE +#include +#else +#include +#include +#include +#include "Evolution.h" + +#define BOARD_SQUARE_SIZE 2 + +int low; //! lower range limit of threads +int high; //! high range limit of threads +double execution_time; //! time for game of life iterations +#endif + +Board::Board(int width, int height, int squareSize, LabelPtr counter) +: m_width(width), m_height(height), m_squareSize(squareSize), m_counter(counter) +{ +#ifndef _CONSOLE + InitializeComponent(); + DoubleBuffered = true; + + this->Width = m_squareSize*width; + this->Height = m_squareSize*height; +#endif + m_matrix = new Matrix(); + m_matrix->width = width; + m_matrix->height = height; + m_matrix->data = new char[width*height]; + memset(m_matrix->data, 0, width*height); +#ifndef _CONSOLE + m_occupiedBrush = gcnew SolidBrush(Color::Black); + m_freeBrush = gcnew SolidBrush(Color::LightGray); + + m_graphics = CreateGraphics(); + m_bmp = gcnew Bitmap(Width, Height); + m_mem_dc = Graphics::FromImage(m_bmp); +#endif +} + +Board::~Board() +{ +#ifndef _CONSOLE + if (components) + { + delete components; + } +#endif + delete[] m_matrix->data; + delete m_matrix; +} + +void Board::seed(int s) +{ + srand(s); + for (int j=0; jdata[i+j*m_width] = x>75? 1: 0; // 25% occupied + } + } +#ifndef _CONSOLE + Invalidate(); +#endif +} + +void Board::seed( const BoardPtr src ) +{ + memcpy(m_matrix->data, src->m_matrix->data, m_height*m_width); +#ifndef _CONSOLE + Invalidate(); +#endif +} + +#ifndef _CONSOLE +void Board::draw(Graphics^ g) +{ + m_mem_dc->FillRectangle(m_freeBrush, Drawing::Rectangle(0, 0, m_width*m_squareSize, m_height*m_squareSize)); + for (int j=0; jdata[i+j*m_width] ) + { + m_mem_dc->FillRectangle(m_occupiedBrush, Drawing::Rectangle(i*m_squareSize, j*m_squareSize, m_squareSize, m_squareSize)); + } + } + } + g->DrawImage(m_bmp, 0, 0); +} + +void Board::OnPaint(PaintEventArgs^ e) +{ + draw(e->Graphics); +} + +[STAThreadAttribute] +int main(array ^args) +{ + // Enabling Windows XP visual effects before any controls are created + Application::EnableVisualStyles(); + Application::SetCompatibleTextRenderingDefault(false); + + // Create the main window and run it + Application::Run(gcnew Form1()); + return 0; +} +#else + +//! Print usage of this program +void PrintUsage() +{ + printf("Usage: gol [M[:N] -t execution_time]\nM and N are a range of numbers of threads to be used.\nexecution_time is a time (in sec) for execution game_of_life iterations\n"); + printf("Default values:\nM:\t\tautomatic\nN:\t\tM\nexecution_time:\t10\n"); +} + +//! Parse command line +bool ParseCommandLine(int argc, char * argv []) +{ + char* s = argv[1]; + char* end; + //! command line without parameters + if(argc == 1) + { + low = tbb::task_scheduler_init::automatic; + high = low; + execution_time = 5; + return true; + } + //! command line with parameters + if(argc != 4) + { + PrintUsage(); + return false; + } + if(std::string("-t") != argv[argc-2]) + //! process M[:N] parameter + high = strtol(s,&end,0); + low = strtol(s,&end,0); + switch( *end ) + { + case ':': + high = strtol(end+1,0,0); + break; + case '\0': + break; + default: + PrintUsage(); + return false; + } + if (high < low) + { + std::cout << "Set correct range. Current range: " << low << ":" << high << std::endl; + PrintUsage(); + return false; + + } + //! process execution_time parameter + execution_time = strtol(argv[argc-1],&end,0); + return true; +} + +int main( int argc, char* argv[] ) +{ + if(!ParseCommandLine( argc, argv )) + return 1; + SequentialEvolution* m_seq; + ParallelEvolution* m_par; + Board* m_board1; + Board* m_board2; + int* count = NULL; + + int boardWidth = 300; + int boardHeight = 300; + + m_board1 = new Board(boardWidth, boardHeight, BOARD_SQUARE_SIZE, count); + m_board2 = new Board(boardWidth, boardHeight, BOARD_SQUARE_SIZE, count); + + time_t now = time(NULL); + printf("Generate Game of life board\n"); + m_board1->seed((int)now); + m_board2->seed(m_board1); + + m_seq = new SequentialEvolution(m_board1->m_matrix, m_board1); + m_seq->Run(execution_time, 1); + delete m_seq; + + m_par = new ParallelEvolution(m_board2->m_matrix, m_board2); + for( int p = low; p <= high; ++p ) + { + m_par->Run(execution_time, p); + } + delete m_par; + + delete m_board1; + delete m_board2; + return 0; +} +#endif diff --git a/examples/parallel_for/game_of_life/src/Update_state.cpp b/examples/parallel_for/game_of_life/src/Update_state.cpp new file mode 100644 index 0000000000..e64056717a --- /dev/null +++ b/examples/parallel_for/game_of_life/src/Update_state.cpp @@ -0,0 +1,402 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#include "Evolution.h" + +#ifdef USE_SSE +/* Update states with SSE */ + +#include +#include + +inline void create_record( char * src, unsigned * dst, unsigned width) +{ + dst[0] |= src[width - 1]; + for( unsigned a=0; a<31u; ++a ) + dst[0] |= src[a]<<(a+1); + unsigned a; + for( a=31u; a>=31; + X[ind] =_mm_or_si128( _mm_slli_epi16(X[ind],1), + _mm_srli_epi16( _mm_slli_si128( X[ind], 2), 15) ); + + unsigned x1 = X[ind + 1].m128i_u32[3]; x1>>=31; + X[ind + 1] =_mm_or_si128( _mm_slli_epi16(X[ind + 1],1), + _mm_srli_epi16( _mm_slli_si128( X[ind + 1], 2), 15) ); + X[ind + 1].m128i_u32[0] |= x0; + + unsigned* dst = (unsigned*)&X[ind]; + unsigned x2 = dst[301/32u] & (1<<(301%32u)); x2>>=(301%32u); + X[ind + 2] =_mm_or_si128( _mm_slli_epi16(X[ind + 2],1), + _mm_srli_epi16( _mm_slli_si128( X[ind + 2], 2), 15) ); + X[ind + 2].m128i_u32[0] |= x1; + X[ind].m128i_u32[0] |= x2; + } +} + +void UpdateState(Matrix * m_matrix, char * dest ,int begin, int end) +{ + //300/128 + 1 =3, 3*300=900 + unsigned size_sse_row = m_matrix->width/128 + 1; //3 + unsigned size_sse_ar=size_sse_row * (end - begin); + __m128i X[906], A[900], B[900], C[900]; + char * mas = m_matrix->data; + + for( unsigned i=0; iwidth; + for( unsigned b = 0 ; b < height; ++b ) + { + char* src = &mas[(b + begin)*width]; + unsigned* dst = (unsigned*)&X[(b+1)*size_sse_row]; + create_record(src, dst, width); + } + // create high row in X[] + char * src; + if(begin == 0) + { + src = &mas[(m_matrix->height-1)*width]; + } + else + { + src = &mas[(begin-1)*width]; + } + unsigned* dst = (unsigned*)X; + create_record(src, dst, width); + + //create lower row in X[] + if(end == m_matrix->height ) + { + src = mas; + } + else + { + src = &mas[end*width]; + } + dst = (unsigned*)&X[(height+1)*size_sse_row]; + create_record(src, dst, width); + + //sum( C, B, A, X+offset_for_upwards ); high-left friend + sum_offset(X,A,B,C,size_sse_ar, 0); + + //sum( C, B, A, X+offset_for_no_vertical_shift ); + sum_offset(X,A,B,C,size_sse_ar, size_sse_row); + + //sum( C, B, A, X+offset_for_downwards ); + sum_offset(X,A,B,C,size_sse_ar, 2*size_sse_row); + + //shift_left( X ); (when view 2D) in our logic it is in right + height = end - begin + 2; + shift_left2D( X, height, size_sse_row); + + //sum( C, B, A, X+offset_for_upwards ); high-left friend + sum_offset(X,A,B,C,size_sse_ar, 0); + + //sum( C, B, A, X+offset_for_downwards ); + sum_offset(X,A,B,C,size_sse_ar, 2*size_sse_row); + + //shift_left( X ); (view in 2D) in our logic it is right shift + height = end - begin + 2; + shift_left2D( X, height, size_sse_row); + + //sum( C, B, A, X+offset_for_upwards ); high-right friend + sum_offset(X,A,B,C,size_sse_ar, 0); + + //sum( C, B, A, X+offset_for_no_vertical_shift ); right friend + sum_offset(X,A,B,C,size_sse_ar, size_sse_row); + + //sum( C, B, A, X+offset_for_downwards ); right down friend + sum_offset(X,A,B,C,size_sse_ar, 2*size_sse_row); + + //shift_right( X ); (when view in 2D) in our case it left shift. + height = end - begin + 2; + shift_right2D( X, height, size_sse_row); + + //X = (X|A)&B&~C (done bitwise over the arrays) + unsigned shift = size_sse_row; + for(unsigned i=0; iwidth; + for( unsigned b=0; b>(a%32u); + } + } +} +#else +/* end SSE block */ + +// ---------------------------------------------------------------------- +// GetAdjacentCellState() - returns the state (value) of the specified +// adjacent cell of the current cell "cellNumber" +char GetAdjacentCellState( + char* source, // pointer to source data block + int x, // logical width of field + int y, // logical height of field + int cellNumber, // number of cell position to examine + int cp // which adjacent position + ) +{ +/* +cp +*-- cp=1 ... --- cp=8 (summary: -1-2-3- +-x- -x- -4-x-5- +--- --* -6-7-8- ) +*/ + char cellState = 0; // return value + + // set up boundary flags to trigger field-wrap logic + bool onTopRow = false; + bool onBottomRow = false; + bool onLeftColumn = false; + bool onRightColumn = false; + + // check to see if cell is on top row + if (cellNumber < x) + { + onTopRow = true; + } + // check to see if cell is on bottom row + if ((x*y)-cellNumber <= x) + { + onBottomRow = true; + } + // check to see if cell is on left column + if (cellNumber%x == 0) + { + onLeftColumn = true; + } + // check to see if cell is on right column + if ((cellNumber+1)%x == 0) + { + onRightColumn = true; + } + + switch (cp) + { + case 1: + if (onTopRow && onLeftColumn) + { + return *(source+((x*y)-1)); + } + if (onTopRow && !onLeftColumn) + { + return *(source+(((x*y)-x)+(cellNumber-1))); + } + if (onLeftColumn && !onTopRow) + { + return *(source+(cellNumber-1)); + } + return *((source+cellNumber)-(x+1)); + + case 2: + if (onTopRow) + { + return *(source+(((x*y)-x)+cellNumber)); + } + return *((source+cellNumber)-x); + + case 3: + if (onTopRow && onRightColumn) + { + return *(source+((x*y)-x)); + } + if (onTopRow && !onRightColumn) + { + return *(source+(((x*y)-x)+(cellNumber+1))); + } + if (onRightColumn && !onTopRow) + { + return *(source+((cellNumber-(x*2))+1)); + } + return *(source+(cellNumber-(x-1))); + + case 4: + if (onRightColumn) + { + return *(source+(cellNumber-(x-1))); + } + return *(source+(cellNumber+1)); + + case 5: + if (onBottomRow && onRightColumn) + { + return *source; + } + if (onBottomRow && !onRightColumn) + { + return *(source+((cellNumber-((x*y)-x))+1)); + } + if (onRightColumn && !onBottomRow) + { + return *(source+(cellNumber+1)); + } + return *(source+(((cellNumber+x))+1)); + + case 6: + if (onBottomRow) + { + return *(source+(cellNumber-((x*y)-x))); + } + return *(source+(cellNumber+x)); + + case 7: + if (onBottomRow && onLeftColumn) + { + return *(source+(x-1)); + } + if (onBottomRow && !onLeftColumn) + { + return *(source+(cellNumber-((x*y)-x)-1)); + } + if (onLeftColumn && !onBottomRow) + { + return *(source+(cellNumber+((x*2)-1))); + } + return *(source+(cellNumber+(x-1))); + + case 8: + if (onLeftColumn) + { + return *(source+(cellNumber+(x-1))); + } + return *(source+(cellNumber-1)); + } + return cellState; +} + +char CheckCell(Matrix * m_matrix, int cellNumber) +{ + char total = 0; + char* source = m_matrix->data; + //look around to find cell's with status "alive" + for(int i=1; i<9; i++) + { + total += GetAdjacentCellState(source, m_matrix->width, m_matrix->height, cellNumber, i); + } + // if the number of adjacent live cells is < 2 or > 3, the result is a dead + // cell regardless of its current state. (A live cell dies of loneliness if it + // has less than 2 neighbors, and of overcrowding if it has more than 3; a new + // cell is born in an empty spot only if it has exactly 3 neighbors. + if (total < 2 || total > 3) + { + return 0; + } + + // if we get here and the cell position holds a living cell, it stays alive + if (*(source+cellNumber)) + { + return 1; + } + + // we have an empty position. If there are only 2 neighbors, the position stays + // empty. + if (total == 2) + { + return 0; + } + + // we have an empty position and exactly 3 neighbors. A cell is born. + return 1; +} + +void UpdateState(Matrix * m_matrix, char * dest ,int begin, int end) +{ + for (int i=begin; i<=end; i++) + { + *(dest+i) = CheckCell(m_matrix, i); + } +} + +#endif +/* end non-SSE block */ diff --git a/examples/parallel_for/game_of_life/xcode/game_of_life.xcodeproj/project.pbxproj b/examples/parallel_for/game_of_life/xcode/game_of_life.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..1c1cd6a822 --- /dev/null +++ b/examples/parallel_for/game_of_life/xcode/game_of_life.xcodeproj/project.pbxproj @@ -0,0 +1,317 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 612CD8DD11F573FC00A587B2 /* Game_of_life.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 612CD8DB11F573FC00A587B2 /* Game_of_life.cpp */; }; + 612CD8DE11F573FC00A587B2 /* Update_state.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 612CD8DC11F573FC00A587B2 /* Update_state.cpp */; }; + 612CD8E111F5742000A587B2 /* Evolution.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 612CD8E011F5742000A587B2 /* Evolution.cpp */; }; + A1F593B70B8F06F900073279 /* libtbb.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A1F593B30B8F06F900073279 /* libtbb.dylib */; }; + A1F593BB0B8F072500073279 /* libtbb.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = A1F593B30B8F06F900073279 /* libtbb.dylib */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 8DD76F690486A84900D96B5E /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 12; + dstPath = ""; + dstSubfolderSpec = 16; + files = ( + A1F593BB0B8F072500073279 /* libtbb.dylib in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 612CD8DB11F573FC00A587B2 /* Game_of_life.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Game_of_life.cpp; path = ../src/Game_of_life.cpp; sourceTree = SOURCE_ROOT; }; + 612CD8DC11F573FC00A587B2 /* Update_state.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Update_state.cpp; path = ../src/Update_state.cpp; sourceTree = SOURCE_ROOT; }; + 612CD8E011F5742000A587B2 /* Evolution.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Evolution.cpp; path = ../src/Evolution.cpp; sourceTree = SOURCE_ROOT; }; + 8DD76F6C0486A84900D96B5E /* game_of_life */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = game_of_life; sourceTree = BUILT_PRODUCTS_DIR; }; + A1F593B30B8F06F900073279 /* libtbb.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libtbb.dylib; path = ../../../../lib/libtbb.dylib; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8DD76F660486A84900D96B5E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A1F593B70B8F06F900073279 /* libtbb.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 08FB7794FE84155DC02AAC07 /* game_of_life */ = { + isa = PBXGroup; + children = ( + 08FB7795FE84155DC02AAC07 /* Source */, + A1F593B20B8F06F900073279 /* External Frameworks and Libraries */, + 1AB674ADFE9D54B511CA2CBB /* Products */, + ); + name = game_of_life; + sourceTree = ""; + }; + 08FB7795FE84155DC02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + 612CD8E011F5742000A587B2 /* Evolution.cpp */, + 612CD8DB11F573FC00A587B2 /* Game_of_life.cpp */, + 612CD8DC11F573FC00A587B2 /* Update_state.cpp */, + ); + name = Source; + sourceTree = ""; + }; + 1AB674ADFE9D54B511CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8DD76F6C0486A84900D96B5E /* game_of_life */, + ); + name = Products; + sourceTree = ""; + }; + A1F593B20B8F06F900073279 /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + A1F593B30B8F06F900073279 /* libtbb.dylib */, + ); + name = "External Frameworks and Libraries"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8DD76F620486A84900D96B5E /* game_of_life */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "game_of_life" */; + buildPhases = ( + 8DD76F640486A84900D96B5E /* Sources */, + 8DD76F660486A84900D96B5E /* Frameworks */, + 8DD76F690486A84900D96B5E /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = game_of_life; + productInstallPath = "$(HOME)/bin"; + productName = game_of_life; + productReference = 8DD76F6C0486A84900D96B5E /* game_of_life */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0410; + }; + buildConfigurationList = 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "game_of_life" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + en, + ); + mainGroup = 08FB7794FE84155DC02AAC07 /* game_of_life */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8DD76F620486A84900D96B5E /* game_of_life */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 8DD76F640486A84900D96B5E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 612CD8DD11F573FC00A587B2 /* Game_of_life.cpp in Sources */, + 612CD8DE11F573FC00A587B2 /* Update_state.cpp in Sources */, + 612CD8E111F5742000A587B2 /* Evolution.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1DEB923208733DC60010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = _CONSOLE; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = game_of_life; + ZERO_LINK = NO; + }; + name = Debug; + }; + 1DEB923308733DC60010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_PREPROCESSOR_DEFINITIONS = _CONSOLE; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = game_of_life; + ZERO_LINK = NO; + }; + name = Release; + }; + 1DEB923608733DC60010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Debug; + }; + 1DEB923708733DC60010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Release; + }; + A1F593C60B8F0E6E00073279 /* Debug64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = _CONSOLE; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = game_of_life; + ZERO_LINK = NO; + }; + name = Debug64; + }; + A1F593C70B8F0E6E00073279 /* Release64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_PREPROCESSOR_DEFINITIONS = _CONSOLE; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ../../../../include; + INSTALL_PATH = "$(HOME)/bin"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + ../../../../lib, + ); + PRODUCT_NAME = game_of_life; + ZERO_LINK = NO; + }; + name = Release64; + }; + A1F593C80B8F0E6E00073279 /* Debug64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-m64", + ); + OTHER_LDFLAGS = "-m64"; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Debug64; + }; + A1F593C90B8F0E6E00073279 /* Release64 */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = i386; + GCC_ENABLE_CPP_RTTI = YES; + GCC_MODEL_TUNING = ""; + GCC_VERSION = 4.0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-m64", + ); + OTHER_LDFLAGS = "-m64"; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + SYMROOT = "/tmp/tbb-$(USER)"; + }; + name = Release64; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "game_of_life" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB923208733DC60010E9CD /* Debug */, + A1F593C60B8F0E6E00073279 /* Debug64 */, + 1DEB923308733DC60010E9CD /* Release */, + A1F593C70B8F0E6E00073279 /* Release64 */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "game_of_life" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB923608733DC60010E9CD /* Debug */, + A1F593C80B8F0E6E00073279 /* Debug64 */, + 1DEB923708733DC60010E9CD /* Release */, + A1F593C90B8F0E6E00073279 /* Release64 */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/examples/parallel_for/index.html b/examples/parallel_for/index.html new file mode 100644 index 0000000000..8df0cd1406 --- /dev/null +++ b/examples/parallel_for/index.html @@ -0,0 +1,30 @@ + + + +

    Overview

    +This directory has examples of the template parallel_for. + +

    Directories

    +
    +
    seismic +
    Parallel seismic wave simulation. +
    tachyon +
    Parallel 2-D raytracer/renderer. +
    polygon_overlay +
    Simple polygon overlay. +
    game_of_life +
    Simple Game of life overlay. +
    + +
    +Up to parent directory +

    +Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

    +Intel is a registered trademark or trademark of Intel Corporation +or its subsidiaries in the United States and other countries. +

    +* Other names and brands may be claimed as the property of others. + + + diff --git a/examples/parallel_for/polygon_overlay/Makefile b/examples/parallel_for/polygon_overlay/Makefile new file mode 100644 index 0000000000..76ada47d15 --- /dev/null +++ b/examples/parallel_for/polygon_overlay/Makefile @@ -0,0 +1,88 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# GNU Makefile that builds and runs example. +NAME=pover +ARGS= +LIGHT_ARGS= --polys 10 --size 5x5 + +# The C++ compiler +ifneq (,$(shell which icc 2>/dev/null)) +CXX=icc +endif # icc + +include ../../common/gui/Makefile.gmake + +ifeq ($(UI),x) +UI_CXXFLAGS += -DX_FULLSYNC +endif # X + +override CXXFLAGS += $(UI_CXXFLAGS) + +SRCFILES = ../../common/gui/$(UI)video.cpp pover_video.cpp polymain.cpp polyover.cpp + +ifeq ($(shell uname), Linux) +LIBS+= -lrt +endif + +all: release test + +resources: +ifeq ($(UI),mac) + mkdir -p $(APPRES)/en.lproj $(NAME).app/Contents/MacOS + cp ../../common/gui/xcode/tbbExample/Info.plist $(NAME).app/Contents + cp ../../common/gui/xcode/tbbExample/PkgInfo $(NAME).app/Contents + cp ../../common/gui/xcode/tbbExample/en.lproj/* $(APPRES)/en.lproj +endif # OS X* + +release: $(SRCFILES) resources +ifeq ($(compiler),xl) + # Avoiding "1586-346 (U) An error occurred during code generation. The code generation return code was 40." with -O3. + $(CXX) -O2 -DNDEBUG $(CXXFLAGS) -o $(EXE) $(SRCFILES) -ltbb -ltbbmalloc $(LIBS) +else +ifeq ($(UI),mac) + $(CXX_UI) -O3 -DNDEBUG $(CXXFLAGS) -c $(MACUISOURCES) +endif # OS X* + $(CXX) -O3 -DNDEBUG $(CXXFLAGS) -o $(EXE) $(SRCFILES) $(MACUIOBJS) -ltbb -ltbbmalloc $(LIBS) +endif + +debug: $(SRCFILES) resources +ifeq ($(UI),mac) + $(CXX_UI) -g -O0 -DTBB_USE_DEBUG -D_DEBUG $(CXXFLAGS) -c $(MACUISOURCES) +endif # OS X* + $(CXX) -g -O0 -DTBB_USE_DEBUG -D_DEBUG $(CXXFLAGS) -o $(EXE) $(SRCFILES) $(MACUIOBJS) -ltbb_debug -ltbbmalloc_debug $(LIBS) + +clean: + $(RM) $(EXE) *.o *.d +ifeq ($(UI),mac) + rm -rf $(NAME).app +endif + +test: +ifeq ($(UI),mac) + export DYLD_LIBRARY_PATH="$(DYLD_LIBRARY_PATH):$(TBBLIBSPATH)"; $(run_cmd) ./$(EXE) $(ARGS) +else + $(run_cmd) ./$(EXE) $(ARGS) +endif + +light_test: +ifeq ($(UI),mac) + export DYLD_LIBRARY_PATH="$(DYLD_LIBRARY_PATH):$(TBBLIBSPATH)"; $(run_cmd) ./$(EXE) $(LIGHT_ARGS) +else + $(run_cmd) ./$(EXE) $(LIGHT_ARGS) +endif diff --git a/examples/parallel_for/polygon_overlay/Makefile.windows b/examples/parallel_for/polygon_overlay/Makefile.windows new file mode 100644 index 0000000000..972d9c1fdc --- /dev/null +++ b/examples/parallel_for/polygon_overlay/Makefile.windows @@ -0,0 +1,60 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# Common Makefile that builds and runs example. + +# Just specify your program basename +PROG=Pover +ARGS= +LIGHT_ARGS= --polys 10 --size 5x5 + +# Trying to find if icl.exe is set +CXX1 = $(TBB_CXX)- +CXX2 = $(CXX1:icl.exe-=icl.exe) +CXX = $(CXX2:-=cl.exe) + +# The C++ compiler options + +# Uncomment one of next lines to choose user interface type (console, gdiplus, direct draw) +#UI = con +UI = gdi +#UI = dd + +# Machine architecture, auto-detected from TBB_TARGET_ARCH by default +# Use XARCH variable to change it. See index.html for more information +ARCH0 = $(TBB_TARGET_ARCH)- +ARCH1 = $(ARCH0:ia32-=x86) +ARCH2 = $(ARCH1:intel64-=AMD64) +XARCH = $(ARCH2:-=x86) + +MAKEINC = ../../common/gui/Makefile.win + +all: release test +release: compiler_check + @$(MAKE) -f $(MAKEINC) UI=$(UI) CXX="$(CXX)" CXXFLAGS="$(CXXFLAGS)" LFLAGS="$(LDFLAGS) tbb.lib tbbmalloc.lib $(LIBS)" XARCH=$(XARCH) RCNAME=pover SOURCE=*.cpp EXE=$(PROG).exe build_one +debug: compiler_check + @$(MAKE) -f $(MAKEINC) UI=$(UI) DEBUG=_debug CXX="$(CXX)" CXXFLAGS="$(CXXFLAGS) /D TBB_USE_DEBUG" LFLAGS="$(LDFLAGS) tbb_debug.lib tbbmalloc_debug.lib $(LIBS)" XARCH=$(XARCH) RCNAME=pover SOURCE=*.cpp EXE=$(PROG).exe build_one +clean: + @cmd.exe /C del $(PROG).exe *.obj *.?db *.manifest msvs\pover.res +test: + $(PROG) $(ARGS) +light_test: + $(PROG) $(LIGHT_ARGS) +compiler_check: + @echo compiler_test>compiler_test && @$(CXX) /E compiler_test >nul 2>&1 || echo "$(CXX) command not found. Check if CXX=$(CXX) is set properly" + @cmd.exe /C del compiler_test diff --git a/examples/parallel_for/polygon_overlay/index.html b/examples/parallel_for/polygon_overlay/index.html new file mode 100644 index 0000000000..262eaa10b5 --- /dev/null +++ b/examples/parallel_for/polygon_overlay/index.html @@ -0,0 +1,121 @@ + + + +

    Overview

    +Polygon Overlay example that demonstrates the use of parallel_for. +

    +This example is a simple implementation of polygon overlay, as described in + + Parallelizing the Polygon Overlay Problem Using Orca, by H.F. Langendoen. +

    +The solution was implemented in three forms: +
      +
    • The naive serial solution. +
    • The naive parallel solution, by splitting list of polygons from one map and intersecting + each sub-list against the entire list of polygons from the second map. +
    • A parallel solution where each map is split into submaps, with each resulting submap being + intersected against the corresponding submap from the other map. This solution requires some + redundancy (some polygons are members of more than one submap). To prevent multiple copies + of a polygon from being placed in the solution map, if both polygons are duplicated (that is, + if they both appear in more than one map), they are intersected but the result is not placed + in the solution map. +
    +The only optimization in each solution is that the area of the generated sub-polygons are subtracted from +the original area of one of the source polygons. When the remaining area is zero, the intersection process +is halted. +

    +A word about the speedup of the submap case. One may get superlinear speedup in this case (for instance a +laptop with Intel® Core(TM) Duo processor got a speedup of about 20 percent over serial.) This results from two effects: +

    +
      +
    • the number of threads used, and +
    • the fact that for each submap, the number of polygons is smaller than that for the other two cases. +
    +If there are, say, 400 polygons in each map, then on average the number of intersections calculated is +approximately 80,000 (400 * 200, where 200 is the average number of polygons examined before stopping.) +If the maps are split into 2 submaps, the time for each submap is about 200*100, or 20,000. So even +comparing the two sets of submaps serially should result in a speedup somewhere around 2. This number +is affected by the number of redundant polygons being compared; this effect would eventually swamp the gain +from comparing smaller numbers of polygons per submap. And remember the submaps are created by intersecting each +map with a rectangular polygon covering the submap being generated, which is additional work taking about N * O(400) +in the case above, where N is the number of submaps generated, that can be done in parallel. +

    +Running the default release pover while varying the number of submaps from 1 to 1000, the speedup on the submap +case for a 2-processor system looks like
    +Table of speedup for the algorithm
    +

    +

    +One further optimization would be to sort one map, say map1, by maxY, and sort the other map (map2) +by minY. For p1 in map1, start testing for intersection at the first p2 in map2 +that intersected the last polygon tested in map1. This would speed up the intersection process greatly, +but the optimization would apply to all the methods, and the sort would have to be accounted for in the timing. +

    +

    +The source maps are generated pseudo-randomly in the manner described in the paper above. That is, if +we need N polygons, then N "boxes" are chosen at random, then one-at-a-time the areas are expanded in +one of fours directions until the area hits an adjacent polygon. When this process is finished, the +resulting map is inspected and any remaining unoccupied "boxes" are made into additional polygons, as +large as possible in each case. So the actual number of polygons in each map will in general be larger +than the number of polygons requested (sometimes by 10% or more.) +

    +

    +One limitation of the program is that if the number of polygons in the source map is greater than the number of +"boxes" (pixels in the GUI case), the maps cannot be generated. +

    + +

    Files

    +
    +
    polyover.cpp +
    Source code for main program. +
    polyover.h +
    Global variables, classes and enums. +
    pover_video.cpp +
    Source code for the GUI interface. +
    pover_video.h +
    Defines for the GUI version. +
    Makefile +
    Makefile for building example. +
    + +

    Directories

    +
    +
    msvs +
    Contains Microsoft* Visual Studio* 2010 workspace for building and running the + example (Windows* systems only).
    xcode +
    Contains Xcode* IDE workspace for building and running the example (OS X* + systems only).
    + +

    To Build

    +General build directions can be found here. For the various UI options, see the common GUI code build instructions. + +

    Usage

    +Building via the above make commands, or via Visual Studio projects on Windows* systems, produces executable files +named pover.exe. To run these executables directly, use one or more of the following commands. +
    +
    pover.exe +
    Run this version (release or debug). +
    pover.exe n:m +
    Run this version (release or debug) (m-n+1) times, with n threads to m threads inclusive. +
    To run a short version of this example, e.g., for use with Intel® Threading Tools: +
    Build a debug version with the GUI turned off + (e.g., make UI=con debug; see also the build directions above). +
    Run it with a small dataset, e.g., pover.exe --polys 10 --size 5x5. +
    + +

    Notes

    +
      +
    • While running with the GUI display should yield reasonable performance in most cases, running with no GUI + display is strongly recommended in order to demonstrate the full performance and scalability of the example. +
    + +
    +Up to parent directory +

    +Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

    +Intel is a registered trademark or trademark of Intel Corporation +or its subsidiaries in the United States and other countries. +

    +* Other names and brands may be claimed as the property of others. + + diff --git a/examples/parallel_for/polygon_overlay/msvs/pover.rc b/examples/parallel_for/polygon_overlay/msvs/pover.rc new file mode 100644 index 0000000000..3eee795fa1 --- /dev/null +++ b/examples/parallel_for/polygon_overlay/msvs/pover.rc @@ -0,0 +1,61 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE 9, 1 +#pragma code_page(1252) + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/examples/parallel_for/polygon_overlay/msvs/pover.sln b/examples/parallel_for/polygon_overlay/msvs/pover.sln new file mode 100644 index 0000000000..c1df0ca5c0 --- /dev/null +++ b/examples/parallel_for/polygon_overlay/msvs/pover.sln @@ -0,0 +1,38 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pover", "pover.vcxproj", "{4BB7B455-1E09-41D3-BC89-6E67C9032F8C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + _GDIRelease|Win32 = _GDIRelease|Win32 + _GDIRelease|x64 = _GDIRelease|x64 + DD Debug|Win32 = DD Debug|Win32 + DD Debug|x64 = DD Debug|x64 + DD Release|Win32 = DD Release|Win32 + DD Release|x64 = DD Release|x64 + GDIDebug|Win32 = GDIDebug|Win32 + GDIDebug|x64 = GDIDebug|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4BB7B455-1E09-41D3-BC89-6E67C9032F8C}._GDIRelease|Win32.ActiveCfg = Release|Win32 + {4BB7B455-1E09-41D3-BC89-6E67C9032F8C}._GDIRelease|Win32.Build.0 = Release|Win32 + {4BB7B455-1E09-41D3-BC89-6E67C9032F8C}._GDIRelease|x64.ActiveCfg = Release|x64 + {4BB7B455-1E09-41D3-BC89-6E67C9032F8C}._GDIRelease|x64.Build.0 = Release|x64 + {4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Debug|Win32.ActiveCfg = DD Debug|Win32 + {4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Debug|Win32.Build.0 = DD Debug|Win32 + {4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Debug|x64.ActiveCfg = DD Debug|x64 + {4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Debug|x64.Build.0 = DD Debug|x64 + {4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Release|Win32.ActiveCfg = DD Release|Win32 + {4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Release|Win32.Build.0 = DD Release|Win32 + {4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Release|x64.ActiveCfg = DD Release|x64 + {4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.DD Release|x64.Build.0 = DD Release|x64 + {4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.GDIDebug|Win32.ActiveCfg = Debug|Win32 + {4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.GDIDebug|Win32.Build.0 = Debug|Win32 + {4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.GDIDebug|x64.ActiveCfg = Debug|x64 + {4BB7B455-1E09-41D3-BC89-6E67C9032F8C}.GDIDebug|x64.Build.0 = Debug|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/examples/parallel_for/polygon_overlay/msvs/pover.vcxproj b/examples/parallel_for/polygon_overlay/msvs/pover.vcxproj new file mode 100644 index 0000000000..3efcc752b5 --- /dev/null +++ b/examples/parallel_for/polygon_overlay/msvs/pover.vcxproj @@ -0,0 +1,440 @@ + + + + + DD Debug + Win32 + + + DD Debug + x64 + + + DD Release + Win32 + + + DD Release + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + pover + {4BB7B455-1E09-41D3-BC89-6E67C9032F8C} + pover + Win32Proj + + + + + Application + MultiByte + true + + + Application + MultiByte + true + + + Application + MultiByte + true + + + Application + MultiByte + true + + + Application + MultiByte + true + + + Application + MultiByte + true + + + Application + MultiByte + true + + + Application + MultiByte + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + true + true + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + + + ProgramDatabase + + + tbb_debug.lib;tbbmalloc_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Windows + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 debug "$(OutDir)" + + + + + X64 + + + Disabled + true + true + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;_DEBUG;_WINDOWS;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + + + ProgramDatabase + + + tbb_debug.lib;tbbmalloc_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Windows + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 debug "$(OutDir)" + + + + + MaxSpeed + Speed + true + true + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + ProgramDatabase + + + tbb.lib;tbbmalloc.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Windows + true + true + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 release "$(OutDir)" + + + + + X64 + + + MaxSpeed + Speed + true + true + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + ProgramDatabase + + + tbb.lib;tbbmalloc.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Windows + true + true + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 release "$(OutDir)" + + + + + ..\..\..\common\gui\dxcheck.bat + + + MaxSpeed + Speed + true + true + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;$(DXSDK_DIR)\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + ProgramDatabase + + + tbb.lib;tbbmalloc.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;$(DXSDK_DIR)\lib\x86;%(AdditionalLibraryDirectories) + true + Windows + true + true + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 release "$(OutDir)" + + + + + ..\..\..\common\gui\dxcheck.bat + + + X64 + + + MaxSpeed + Speed + true + true + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;$(DXSDK_DIR)\include;%(AdditionalIncludeDirectories) + WIN64;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + ProgramDatabase + + + tbb.lib;tbbmalloc.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;$(DXSDK_DIR)\lib\x64;%(AdditionalLibraryDirectories) + true + Windows + true + true + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 release "$(OutDir)" + + + + + ..\..\..\common\gui\dxcheck.bat + + + Disabled + true + true + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;$(DXSDK_DIR)\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + + + ProgramDatabase + + + tbb_debug.lib;tbbmalloc_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;$(DXSDK_DIR)\lib\x86;%(AdditionalLibraryDirectories) + true + Windows + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 debug "$(OutDir)" + + + + + ..\..\..\common\gui\dxcheck.bat + + + X64 + + + Disabled + true + true + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;$(DXSDK_DIR)\include;%(AdditionalIncludeDirectories) + WIN64;_DEBUG;_WINDOWS;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + + + ProgramDatabase + + + tbb_debug.lib;tbbmalloc_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;$(DXSDK_DIR)\lib\x64;%(AdditionalLibraryDirectories) + true + Windows + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 debug "$(OutDir)" + + + + + + + + true + true + true + true + + + true + true + true + true + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/parallel_for/polygon_overlay/msvs/resource.h b/examples/parallel_for/polygon_overlay/msvs/resource.h new file mode 100644 index 0000000000..e70b4ea1e0 --- /dev/null +++ b/examples/parallel_for/polygon_overlay/msvs/resource.h @@ -0,0 +1,14 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by pover.rc + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/examples/parallel_for/polygon_overlay/polymain.cpp b/examples/parallel_for/polygon_overlay/polymain.cpp new file mode 100644 index 0000000000..60f8ec446e --- /dev/null +++ b/examples/parallel_for/polygon_overlay/polymain.cpp @@ -0,0 +1,620 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +// Polygon overlay +// +// Don't want warnings about deprecated sscanf, getenv +#ifndef _CRT_SECURE_NO_DEPRECATE +#define _CRT_SECURE_NO_DEPRECATE +#endif +#define _MAIN_C_ 1 +#include +#include +#include +#include + +#include "tbb/tick_count.h" +#include "tbb/task_scheduler_init.h" +#include "pover_global.h" +#include "polyover.h" +#include "pover_video.h" +#include "polymain.h" + +using namespace std; + +#if _DEBUG +const char *faceNames[] = { "North", "East", "South", "West" }; +#endif + +/** +**/ +int main( int argc, char **argv) { + pover_video poly; + poly.threaded = true; + gVideo = &poly; + + if(!initializeVideo(argc, argv)) { + return 1; + } + + gIsGraphicalVersion = poly.graphic_display(); + if(argc > 1) { + if(!ParseCmdLine(argc, argv)) { + if(gIsGraphicalVersion) rt_sleep(10000); + // if graphical, we haven't opened the console window so all the error messages we + // so carefully wrote out disappeared into the ether. :( + exit(1); + } + } + + if(gCsvFilename != NULL) { +#define BUFLEN 1000 + std::string fname_buf = gCsvFilename; + fname_buf += ".csv"; + gCsvFile.open(fname_buf.c_str()); + } + + // we have gMapXSize and gMapYSize determining the number of "squares" + // we have g_xwinsize and g_ywinsize the total size of the window + // we also have BORDER_SIZE the size of the border between maps + // we need to determine + // g_polyBoxSize -- the number of pixels on each size of each square + + if(gIsGraphicalVersion) { + int xpixelsPerMap = (g_xwinsize - 4*BORDER_SIZE) / 3; // three maps, with borders between and outside + gMapXSize = xpixelsPerMap; // make the boxes one per pixel + gPolyXBoxSize = xpixelsPerMap / gMapXSize; + int ypixelsPerMap = (g_ywinsize - 2*BORDER_SIZE); // one map vertically + gMapYSize = ypixelsPerMap; // one pixel per box, rather. + + gPolyYBoxSize = ypixelsPerMap / gMapYSize; + if((gPolyXBoxSize == 0) || (gPolyYBoxSize == 0)) { + cout << "The display window is not large enough to show the maps" << std::endl; + int minxSize = 4*BORDER_SIZE + 3*gMapXSize; + int minySize = 2*BORDER_SIZE + gMapYSize; + cout << " Should be at least " << minxSize << " x " << minySize << "." << std::endl; + return 1; + } + map2XLoc = 2*BORDER_SIZE + gMapXSize * gPolyXBoxSize; + maprXLoc = 3*BORDER_SIZE + 2 * gMapXSize * gPolyXBoxSize; + + } + else { // not gIsGraphicalVersion + // gMapXSize, gMapYSize, gNPolygons defined in pover_global.h + } + + // create two polygon maps + SetRandomSeed(gMyRandomSeed); // for repeatability + + gVideo->main_loop(); +} + +void Usage(int argc, char **argv) { + char *cmdTail = strrchr(*argv, '\\'); + if(cmdTail == NULL) { + cmdTail = *argv; + } + else { + cmdTail++; + } + cout << cmdTail << " [threads[:threads2]] [--polys npolys] [--size nnnxnnn] [--seed nnn]" << std::endl; + cout << "Create polygon maps and overlay them." << std::endl << std::endl; + cout << "Parameters:" << std::endl; + cout << " threads[:threads2] - number of threads to run" << std::endl; + cout << " --polys npolys - number of polygons in each map" << std::endl; + cout << " --size nnnxnnn - size of each map (X x Y)" << std::endl; + cout << " --seed nnn - initial value of random number generator" << std::endl; + cout << " --csv filename - write timing data to CSV-format file" << std::endl; + cout << " --grainsize n - set grainsize to n" << std::endl; + cout << " --use_malloc - allocate polygons with malloc instead of scalable allocator" << std::endl; + cout << std::endl; + cout << "npolys must be smaller than the size of the map" << std::endl; + cout << std::endl; + exit(1); +} + +bool ParseCmdLine(int argc, char **argv ) { + bool error_found = false; + bool nPolysSpecified = false; + bool nMapSizeSpecified = false; + bool nSeedSpecified = false; + bool csvSpecified = false; + bool grainsizeSpecified = false; + bool mallocSpecified = false; + int origArgc = argc; + char** origArgv = argv; + unsigned int newnPolygons = gNPolygons; + unsigned int newSeed = gMyRandomSeed; + unsigned int newX = gMapXSize; + unsigned int newY = gMapYSize; + unsigned int newGrainSize = gGrainSize; + argc--; argv++; + if(argc > 0 && isdigit((*argv)[0])) { + // first argument is one or two numbers, specifying how mny threads to run + char* end; gThreadsHigh = gThreadsLow = (int)strtol(argv[0],&end,0); + switch( *end) { + case ':': gThreadsHigh = (int)strtol(end+1,0,0); break; + case '\0': break; + default: cout << "Unexpected character in thread specifier: " << *end << std::endl; break; + } + if(gThreadsLow > gThreadsHigh) { + int t = gThreadsLow; + gThreadsLow = gThreadsHigh; + gThreadsHigh = t; + } + argv++; argc--; + } + while(argc > 0) { + // format 1: --size nnnxnnn, where nnn in {0 .. 9}+ -- size of map in "squares" + if(!strncmp("--size", *argv, (size_t)6)) { + if(nMapSizeSpecified) { + cout << " Error: map size multiply specified" << std::endl; + error_found = true; + } + else { + argv++; argc--; + if(argc == 0) { + error_found = true; + cout << " Error: --size must have a value" << std::endl; + } + if(strchr(*argv, 'x') != strrchr(*argv,'x')) { + // more than one 'x' + cout << "Error: map size should be nnnxnnn (" << *argv << ")" << std::endl; + error_found = true; + } + else { + int rval; + rval = sscanf(*argv, "%ux%u", &newX, &newY); + if(rval != 2) { + cout << "Error parsing map size (format should be nnnxnnn (" << *argv << ")" << std::endl; + error_found = true; + } + if(newX == 0 || newY == 0) { + cout << "Error: size of map should be greater than 0 (" << *argv << ")" << std::endl; + error_found = true; + } + } + } + argc--; argv++; + } + // format 2: --seed nnn -- initial random number seed + else if(!strncmp("--seed", *argv, (size_t)6)) { + argv++; argc--; + if(nSeedSpecified) { + cout << "Error: new seed multiply specified" << std::endl; + error_found = true; + } + else { + nSeedSpecified = true; + int rtval = sscanf(*argv, "%u", &newSeed); + if(rtval == 0) { + cout << "Error: --seed should be an unsigned number (instead of " << *argv << ")" << std::endl; + error_found = true; + } + } + argv++; argc--; + } + // format 3: --polys n[n] -- number of polygons in each map + else if(!strncmp("--polys", *argv, (size_t)7)) { + //unsigned int newnPolygons; + argv++; argc--; + if(nPolysSpecified) { + cout << "Error: number of polygons multiply-specified" << std::endl; + error_found = true; + }else { + int rtval = sscanf(*argv, "%u", &newnPolygons); + if(newnPolygons == 0) { + cout << "Error: number of polygons must be greater than 0 (" << *argv << ")" << std::endl; + } + } + argv++; argc--; + } + // format 4: --csv -- name of CSV output file ("xxx" for "xxx.csv") + else if(!strncmp("--csv", *argv, (size_t)5)) { + argv++; argc--; + if(csvSpecified) { + cout << "Error: Multiple specification of CSV file" << std::endl; + error_found = true; + } + else { + gCsvFilename = *argv; + argv++; argc--; + csvSpecified = true; + } + } + else if(!strncmp("--grainsize", *argv, (size_t)11)) { + argv++; argc--; + if(grainsizeSpecified) { + cout << "Error: Multiple specification of grainsize" << std::endl; + error_found = true; + } + else { + int grval = sscanf(*argv, "%u", &newGrainSize); + grainsizeSpecified = true; + if(newGrainSize == 0) { + cout << "Error: grainsize must be greater than 0" << std::endl; + error_found = true; + } + } + argv++; argc--; + } + else if(!strncmp("--use_malloc", *argv, (size_t)12)) { + argv++; argc--; + if(mallocSpecified) { + cout << "Error: --use_malloc multiply-specified" << std::endl; + error_found = true; + } + else { + mallocSpecified = true; + gMBehavior = UseMalloc; + } + } + else { + cout << "Error: unrecognized argument: " << *argv << std::endl; + error_found = true; + argv++; argc--; + } + } + if(!error_found) { + if(newX * newY < newnPolygons) { + error_found = true; + cout << "Error: map size should not be smaller than the number of polygons (gNPolygons = " << newnPolygons << ", map size " << newX << "x" << newY << ")" << std::endl; + } + } + if(!error_found) { + gMapXSize = newX; + gMapYSize = newY; + gNPolygons = newnPolygons; + gMyRandomSeed = newSeed; + gGrainSize = (int)newGrainSize; + } + else { + Usage(origArgc, origArgv); + } + return !error_found; +} + +// create a polygon map with at least gNPolygons polygons. +// Usually more than gNPolygons polygons will be generated, because the +// process of growing the polygons results in holes. +bool GenerateMap(Polygon_map_t **newMap, int xSize, int ySize, int gNPolygons, colorcomp_t maxR, colorcomp_t maxG, colorcomp_t maxB) { + bool error_found = false; + int *validPolys; + int *validSide; + int maxSides; + RPolygon *newPoly; + + if(xSize <= 0) { + cout << "xSize (" << xSize << ") should be > 0." << std::endl; + error_found = true; + } + if(ySize <= 0) { + cout << "ySize (" << ySize << ") should be > 0." << std::endl; + error_found = true; + } + if(gNPolygons > (xSize * ySize)) { + cout << "gNPolygons (" << gNPolygons << ") should be less than " << (xSize * ySize) << std::endl; + error_found = true; + } + if(error_found) return false; + // the whole map is [xSize x ySize] squares + // the way we create the map is to + // 1) pick nPolygon discrete squares on an [xSize x ySize] grid + // 2) while there are unused squares on the grid + // 3) pick a polygon with a side that has unused squares on a side + // 4) expand the polygon by 1 to occupy the unused squares + // + // Continue until every square on the grid is occupied by a polygon + int *tempMap; + tempMap = (int *)malloc(xSize * ySize * sizeof(int)); + for(int i=0;i < xSize; i++) { + for(int j=0;j < ySize; j++) { + tempMap[i*ySize + j] = 0; + } + } + + // *newMap = new vector; + *newMap = new Polygon_map_t; + (*newMap)->reserve(gNPolygons + 1); // how much bigger does this need to be on average? + (*newMap)->push_back(RPolygon(0,0,xSize-1, ySize-1)); + for(int i=0; i < gNPolygons; i++) { + int nX; + int nY; + do { // look for an empty square. + nX = NextRan(xSize); + nY = NextRan(ySize); + } while(tempMap[nX * ySize + nY] != 0); + int nR = (maxR * NextRan(1000)) / 999; + int nG = (maxG * NextRan(1000)) / 999; + int nB = (maxB * NextRan(1000)) / 999; + (*newMap)->push_back(RPolygon(nX,nY,nX,nY,nR,nG,nB)); + tempMap[nX * ySize + nY] = i+1; // index of this polygon + 1 + } + // now have to grow polygons to fill the space. + validPolys = (int *)malloc(4*gNPolygons * sizeof(int)); + validSide = (int *)malloc(4*gNPolygons * sizeof(int)); + for(int i=0;i 0) { + int indx = NextRan(maxSides); + int polyIndx = validPolys[indx]; + int checkSide = validSide[indx]; + int xlow, xhigh, ylow, yhigh; + int xlnew, xhnew, ylnew, yhnew; + (**newMap)[polyIndx].get(&xlow,&ylow,&xhigh,&yhigh); + xlnew = xlow; + xhnew = xhigh; + ylnew = ylow; + yhnew = yhigh; + // can this polygon be expanded along the chosen side? + switch(checkSide) { + case NORTH_SIDE: + // y-1 from xlow to xhigh + ylow = yhigh = (ylow - 1); + ylnew--; + break; + case EAST_SIDE: + // x+1 from ylow to yhigh + xlow = xhigh = (xhigh + 1); + xhnew++; + break; + case SOUTH_SIDE: + // y+1 from xlow to xhigh + ylow = yhigh = (yhigh+1); + yhnew++; + break; + case WEST_SIDE: + // x-1 from ylow to yhigh + xlow = xhigh = (xlow - 1); + xlnew--; + break; + } + bool okay_to_extend = !(((xlow < 0) || (xlow >= xSize)) || ((ylow < 0) || (ylow >= ySize))); + for(int ii = xlow; (ii <= xhigh) && okay_to_extend; ii++) { + for(int jj=ylow; (jj <= yhigh) && okay_to_extend; jj++) { + okay_to_extend = tempMap[ii*ySize + jj] == 0; + } + } + if(okay_to_extend) { + (**newMap)[polyIndx].set(xlnew,ylnew,xhnew,yhnew); + for(int ii = xlow; ii <= xhigh; ii++) { + for(int jj=ylow; jj <= yhigh && okay_to_extend; jj++) { + tempMap[ii*ySize + jj] = polyIndx; + } + } + } + else { + // once we cannot expand along a side, we will never be able to; remove from the list. + for(int i=indx + 1; i < maxSides; i++) { + validPolys[i-1] = validPolys[i]; + validSide[i-1] = validSide[i]; + } + maxSides--; + } + } + + // Once no polygons can be grown, look for unused squares, and fill them with polygons. + for(int j=0;jpush_back(RPolygon(i,j,ilen,jlen,nR,nG,nB)); + gNPolygons++; + for(int ii=i; ii<=ilen;ii++) { + for(int jj=j;jj<=jlen;jj++) { + tempMap[ii*ySize + jj] = gNPolygons; + } + } + } + } + } + +#if _DEBUG + if(!gIsGraphicalVersion) { + cout << std::endl << "Final Map:" << std::endl; + for(int j=0; j < ySize; j++ ) { + cout << "Row " << setw(2) << j << ":"; + for(int i=0;i=limit)) {cout << "checkMap error: " << str << " out of range (" << n << ")" << std::endl;anError=true;} +#define xRangeCheck(str,n) rangeCheck(str,n,gMapXSize) +#define yRangeCheck(str,n) rangeCheck(str,n,gMapYSize) + // The first polygon is the whole map. + bool anError = false; + int *cArray; + if(checkMap->size() <= 0) { + cout << "checkMap error: no polygons in map" << std::endl; + return; + } + // mapXhigh and mapYhigh are inclusive, that is, if the map is 5x5, those values would be 4. + int mapXhigh, mapYhigh, mapLowX, mapLowY; + int gMapXSize, gMapYSize; + (*checkMap)[0].get(&mapLowX, &mapLowY, &mapXhigh, &mapYhigh); + if((mapLowX !=0) || (mapLowY != 0)) { + cout << "checkMap error: map origin not (0,0) (X=" << mapLowX << ", Y=" << mapLowY << ")" << std::endl; + anError = true; + } + if((mapXhigh < 0) || (mapYhigh < 0)) { + cout << "checkMap error: no area in map (X=" << mapXhigh << ", Y=" << mapYhigh << ")" << std::endl; + anError = true; + } + if(anError) return; + // bounds for array. + gMapXSize = mapXhigh + 1; + gMapYSize = mapYhigh + 1; + cArray = (int *)malloc(sizeof(int)*(gMapXSize*gMapYSize)); + + for(int i=0; isize()) && !anError; p++) { + (*checkMap)[p].get(&xlow, &ylow, &xhigh, &yhigh); + xRangeCheck("xlow", xlow); + yRangeCheck("ylow", ylow); + xRangeCheck("xhigh", xhigh); + yRangeCheck("yhigh", yhigh); + if(xlow>xhigh) { + cout << "checkMap error: xlow > xhigh (" << xlow << "," << xhigh << ")" << std::endl; + anError = true; + } + if(ylow>yhigh) { + cout << "checkMap error: ylow > yhigh (" << ylow << "," << yhigh << ")" << std::endl; + anError = true; + } + for(int ii = xlow; ii <= xhigh; ii++) { + for(int jj = ylow; jj <= yhigh; jj++) { + if(cArray[indx(ii,jj)] != 0) { + cout << "checkMap error: polygons " << cArray[indx(ii,jj)] << " and " << p << " intersect" << std::endl; + anError = true; + } + cArray[indx(ii,jj)] = p; + } + } + } + for(int ii=0; ii < gMapXSize; ii++) { + for(int jj=0; jj < gMapYSize; jj++) { + if(cArray[indx(ii,jj)] == 0) { + cout << "checkMap error: block(" << ii << ", " << jj << ") not in any polygon" << std::endl; + anError = true; + } + } + } + free(cArray); +} + +bool CompOnePolygon(RPolygon &p1, RPolygon &p2) { + int xl1, xh1, yl1, yh1; + int xl2, xh2, yl2, yh2; + p1.get(&xl1, &yl1, &xh1, &yh1); + p2.get(&xl2, &yl2, &xh2, &yh2); + if(yl1>yl2) return true; + if(yl1 xl2); +} + +bool PolygonsEqual(RPolygon *p1, RPolygon *p2) { + int xl1, xh1, yl1, yh1; + int xl2, xh2, yl2, yh2; + p1->get(&xl1, &yl1, &xh1, &yh1); + p2->get(&xl2, &yl2, &xh2, &yh2); + return ((xl1 == xl2) && (yl1==yl2) && (xh1 == xh2) && (yh1 == yh2)); +} + +bool ComparePolygonMaps(Polygon_map_t *map1, Polygon_map_t *map2) { + // create two new polygon maps, copy the pointers from the original to these. + // we have to skip the first polygon, which is the size of the whole map + Polygon_map_t *t1, *t2; + bool is_ok = true; + t1 = new Polygon_map_t; + t1->reserve(map1->size()); + for(unsigned int i=1;isize(); i++) { + t1->push_back(map1->at(i)); + } + t2 = new Polygon_map_t; + t2->reserve(map2->size()); + for(unsigned int i=1;isize();i++) { + t2->push_back(map2->at(i)); + } + // sort the two created maps by (xlow, ylow) + sort(t1->begin(), t1->end()); + sort(t2->begin(), t2->end()); + // compare each element of both maps. + if(t1->size() != t2->size()) { + cout << "Error: maps not the same size ( " << int(t1->size()) << " vs " << int(t2->size()) << ")." << std::endl; + } + int maxSize = (int)((t1->size() < t2->size()) ? t1->size() : t2->size()); + for(int i=0; i < maxSize; i++) { + if(!PolygonsEqual(&((*t1)[i]), &((*t2)[i]))) { + cout << "Error: polygons unequal (" << (*t1)[i] << " vs " << (*t2)[i] << std::endl; + is_ok = false; + } + } + delete t1; + delete t2; + return is_ok; +} + +void SetRandomSeed(int newSeed) { + srand((unsigned)newSeed); +} + +int NextRan(int n) { + // assert(n > 1); + // if we are given 1, we will just return 0 + //assert(n < RAND_MAX); + int rrand = rand() << 15 | rand(); + if(rrand < 0) rrand = -rrand; + return rrand % n; +} + +std::ostream& operator<<(std::ostream& s, const RPolygon &p) { + int xl, yl, xh, yh; + p.get(&xl, &yl, &xh, &yh); + return s << "[(" << xl << "," << yl << ")-(" << xh << "," << yh << ")] "; +} diff --git a/examples/parallel_for/polygon_overlay/polymain.h b/examples/parallel_for/polygon_overlay/polymain.h new file mode 100644 index 0000000000..86e4b50b88 --- /dev/null +++ b/examples/parallel_for/polygon_overlay/polymain.h @@ -0,0 +1,45 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#include "pover_global.h" // for declaration of DEFINE and INIT + +DEFINE Polygon_map_t *gPolymap1 INIT(0); +DEFINE Polygon_map_t *gPolymap2 INIT(0); +DEFINE Polygon_map_t *gResultMap INIT(0); + +extern void Usage(int argc, char **argv); + +extern bool ParseCmdLine(int argc, char **argv ); + +extern bool GenerateMap(Polygon_map_t **newMap, int xSize, int ySize, int gNPolygons, colorcomp_t maxR, colorcomp_t maxG, colorcomp_t maxB); + +extern bool PolygonsOverlap(RPolygon *p1, RPolygon *p2, int &xl, int &yl, int &xh, int &yh); + +extern void CheckPolygonMap(Polygon_map_t *checkMap); + +extern bool CompOnePolygon(RPolygon *p1, RPolygon *p2); + +extern bool PolygonsEqual(RPolygon *p1, RPolygon *p2); + +extern bool ComparePolygonMaps(Polygon_map_t *map1, Polygon_map_t *map2); + +extern void SetRandomSeed(int newSeed); + +extern int NextRan(int n); diff --git a/examples/parallel_for/polygon_overlay/polyover.cpp b/examples/parallel_for/polygon_overlay/polyover.cpp new file mode 100644 index 0000000000..8f9c6dd797 --- /dev/null +++ b/examples/parallel_for/polygon_overlay/polyover.cpp @@ -0,0 +1,668 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +// Polygon overlay +// +#include +#include +#include +#include +#include +#include "tbb/tick_count.h" +#include "tbb/blocked_range.h" +#include "tbb/task_scheduler_init.h" +#include "tbb/parallel_for.h" +#include "tbb/mutex.h" +#include "tbb/spin_mutex.h" +#include "polyover.h" +#include "polymain.h" +#include "pover_video.h" + +using namespace std; + +/*! +* @brief intersects a polygon with a map, adding any results to output map +* +* @param[out] resultMap output map (must be allocated) +* @param[in] polygon to be intersected +* @param[in] map intersected against +* @param[in] lock to use when adding output polygons to result map +* +*/ +void OverlayOnePolygonWithMap(Polygon_map_t *resultMap, RPolygon *myPoly, Polygon_map_t *map2, tbb::spin_mutex *rMutex) { + int r1, g1, b1, r2, g2, b2; + int myr=0; + int myg=0; + int myb=0; + int p1Area = myPoly->area(); + for(unsigned int j=1; (j < map2->size()) && (p1Area > 0); j++) { + RPolygon *p2 = &((*map2)[j]); + RPolygon *pnew; + int newxMin, newxMax, newyMin, newyMax; + myPoly->getColor(&r1, &g1, &b1); + if(PolygonsOverlap(myPoly, p2, newxMin, newyMin, newxMax, newyMax)) { + p2->getColor(&r2, &g2, &b2); + myr = r1 + r2; + myg = g1 + g2; + myb = b1 + b2; + p1Area -= (newxMax-newxMin+1)*(newyMax - newyMin + 1); + if(rMutex) { + tbb::spin_mutex::scoped_lock lock(*rMutex); + resultMap->push_back(RPolygon(newxMin, newyMin, newxMax, newyMax, myr, myg, myb)); + } + else { + resultMap->push_back(RPolygon(newxMin, newyMin, newxMax, newyMax, myr, myg, myb)); + } + } + } +} + +/*! +* @brief Serial version of polygon overlay +* @param[out] output map +* @param[in] first map (map that individual polygons are taken from) +* @param[in] second map (map passed to OverlayOnePolygonWithMap) +*/ +void SerialOverlayMaps(Polygon_map_t **resultMap, Polygon_map_t *map1, Polygon_map_t *map2) { + cout << "SerialOverlayMaps called" << std::endl; + *resultMap = new Polygon_map_t; + + RPolygon *p0 = &((*map1)[0]); + int mapxSize, mapySize, ignore1, ignore2; + p0->get(&ignore1, &ignore2, &mapxSize, &mapySize); + (*resultMap)->reserve(mapxSize*mapySize); // can't be any bigger than this + // push the map size as the first polygon, + (*resultMap)->push_back(RPolygon(0,0,mapxSize, mapySize)); + for(unsigned int i=1; i < map1->size(); i++) { + RPolygon *p1 = &((*map1)[i]); + OverlayOnePolygonWithMap(*resultMap, p1, map2, NULL); + } +} + +/*! +* @class ApplyOverlay +* @brief Simple version of parallel overlay (make parallel on polygons in map1) +*/ +class ApplyOverlay { + Polygon_map_t *m_map1, *m_map2, *m_resultMap; + tbb::spin_mutex *m_rMutex; +public: + /*! + * @brief functor to apply + * @param[in] r range of polygons to intersect from map1 + */ + void operator()( const tbb::blocked_range & r) const { + PRINT_DEBUG("From " << r.begin() << " to " << r.end()); + for(int i=r.begin(); i != r.end(); i++) { + RPolygon *myPoly = &((*m_map1)[i]); + OverlayOnePolygonWithMap(m_resultMap, myPoly, m_map2, m_rMutex); + } + } + ApplyOverlay(Polygon_map_t *resultMap, Polygon_map_t *map1, Polygon_map_t *map2, tbb::spin_mutex *rmutex) : + m_resultMap(resultMap), m_map1(map1), m_map2(map2), m_rMutex(rmutex) {} +}; + +/*! +* @brief apply the parallel algorithm +* @param[out] result_map generated map +* @param[in] polymap1 first map to be applied (algorithm is parallel on this map) +* @param[in] polymap2 second map. +*/ +void NaiveParallelOverlay(Polygon_map_t *&result_map, Polygon_map_t &polymap1, Polygon_map_t &polymap2) { +// ----------------------------------- + bool automatic_threadcount = false; + + if(gThreadsLow == THREADS_UNSET || gThreadsLow == tbb::task_scheduler_init::automatic) { + gThreadsLow = gThreadsHigh = tbb::task_scheduler_init::automatic; + automatic_threadcount = true; + } + result_map = new Polygon_map_t; + + RPolygon *p0 = &(polymap1[0]); + int mapxSize, mapySize, ignore1, ignore2; + p0->get(&ignore1, &ignore2, &mapxSize, &mapySize); + result_map->reserve(mapxSize*mapySize); // can't be any bigger than this + // push the map size as the first polygon, + tbb::spin_mutex *resultMutex = new tbb::spin_mutex(); + int grain_size = gGrainSize; + + for(int nthreads = gThreadsLow; nthreads <= gThreadsHigh; nthreads++) { + tbb::task_scheduler_init init(nthreads); + if(gIsGraphicalVersion) { + RPolygon *xp = new RPolygon(0, 0, gMapXSize-1, gMapYSize-1, 0, 0, 0); // Clear the output space + delete xp; + } + // put size polygon in result map + result_map->push_back(RPolygon(0,0,mapxSize, mapySize)); + + tbb::tick_count t0 = tbb::tick_count::now(); + tbb::parallel_for (tbb::blocked_range(1,(int)(polymap1.size()),grain_size), ApplyOverlay(result_map, &polymap1, &polymap2, resultMutex)); + tbb::tick_count t1 = tbb::tick_count::now(); + + double naiveParallelTime = (t1-t0).seconds() * 1000; + cout << "Naive parallel with spin lock and "; + if(automatic_threadcount) cout << "automatic"; + else cout << nthreads; + cout << ((nthreads == 1) ? " thread" : " threads"); + cout << " took " << naiveParallelTime << " msec : speedup over serial " << (gSerialTime / naiveParallelTime) << std::endl; + if(gCsvFile.is_open()) { + gCsvFile << "," << naiveParallelTime; + } +#if _DEBUG + CheckPolygonMap(result_map); + ComparePolygonMaps(result_map, gResultMap); +#endif + result_map->clear(); + } + delete resultMutex; + if(gCsvFile.is_open()) { + gCsvFile << std::endl; + } +// ----------------------------------- +} + +template +void split_at( Flagged_map_t& in_map, Flagged_map_t &left_out, Flagged_map_t &right_out, const T median) { + left_out.reserve(in_map.size()); + right_out.reserve(in_map.size()); + for(Flagged_map_t::iterator i = in_map.begin(); i != in_map.end(); ++i ) { + RPolygon *p = i->p(); + if(p->xmax() < median) { + // in left map + left_out.push_back(*i); + } + else if(p->xmin() >= median) { + right_out.push_back(*i); + // in right map + } + else { + // in both maps. + left_out.push_back(*i); + right_out.push_back(RPolygon_flagged(p, true)); + } + } +} + +// range that splits the maps as well as the range. the flagged_map_t are +// vectors of pointers, and each range owns its maps (has to free them on destruction.) +template +class blocked_range_with_maps { + + typedef blocked_range my_range_type; + +private: + + my_range_type my_range; + Flagged_map_t my_map1; + Flagged_map_t my_map2; + +public: + + blocked_range_with_maps( + T begin, T end, typename my_range_type::size_type my_grainsize, + Polygon_map_t *p1, Polygon_map_t *p2 + ) + : my_range(begin, end, my_grainsize) + { + my_map1.reserve(p1->size()); + my_map2.reserve(p2->size()); + for(int i=1; i < p1->size(); ++i) { + my_map1.push_back(RPolygon_flagged(&((*p1)[i]), false)); + } + for(int i=1; i < p2->size(); ++i) { + my_map2.push_back(RPolygon_flagged(&(p2->at(i)), false)); + } + } + + // copy-constructor required for deep copy of flagged maps. One copy is done at the start of the + // parallel for. + blocked_range_with_maps(const blocked_range_with_maps& other): my_range(other.my_range), my_map1(other.my_map1), my_map2(other.my_map2) { } + bool empty() const { return my_range.empty(); } + bool is_divisible() const { return my_range.is_divisible(); } + +#if _DEBUG + void check_my_map() { + assert(my_range.begin() <= my_range.end()); + for(Flagged_map_t::iterator ci = my_map1.begin(); ci != my_map1.end(); ++ci) { + RPolygon *rp = ci->p(); + assert(rp->xmax() >= my_range.begin()); + assert(rp->xmin() < my_range.end()); + } + for(Flagged_map_t::iterator ci = my_map2.begin(); ci != my_map2.end(); ++ci) { + RPolygon *rp = ci->p(); + assert(rp->xmax() >= my_range.begin()); + assert(rp->xmin() < my_range.end()); + } + } + + void dump_map( Flagged_map_t& mapx) { + cout << " ** MAP **\n"; + for( Flagged_map_t::iterator ci = mapx.begin(); ci != mapx.end(); ++ci) { + cout << *(ci->p()); + if(ci->isDuplicate()) { + cout << " -- is_duplicate"; + } + cout << "\n"; + } + cout << "\n"; + } +#endif + + blocked_range_with_maps(blocked_range_with_maps& lhs_r, split ) : my_range(my_range_type(lhs_r.my_range, split())) { + // lhs_r.my_range makes my_range from [median, high) and rhs_r.my_range from [low, median) + Flagged_map_t original_map1 = lhs_r.my_map1; + Flagged_map_t original_map2 = lhs_r.my_map2; + lhs_r.my_map1.clear(); + lhs_r.my_map2.clear(); + split_at(original_map1, lhs_r.my_map1, my_map1, my_range.begin()); + split_at(original_map2, lhs_r.my_map2, my_map2, my_range.begin()); +#if _DEBUG + this->check_my_map(); + lhs_r.check_my_map(); +#endif + } + + const my_range_type& range() const { return my_range; } + Flagged_map_t& map1() { return my_map1; } + Flagged_map_t& map2() { return my_map2; } +}; + +/*! +* @class ApplySplitOverlay +* @brief parallel by columnar strip +*/ +class ApplySplitOverlay { + Polygon_map_t *m_map1, *m_map2, *m_resultMap; + tbb::spin_mutex *m_rMutex; +public: + /*! + * @brief functor for columnar parallel version + * @param[in] r range of map to be operated on + */ + void operator()(/*const*/ blocked_range_with_maps & r) const { +#ifdef _DEBUG + // if we are debugging, serialize the method. That way we can + // see what is happening in each strip without the interleaving + // confusing things. + tbb::spin_mutex::scoped_lock lock(*m_rMutex); + cout << unitbuf << "From " << r.range().begin() << " to " << r.range().end()-1 << std::endl; +#endif + // get yMapSize + int r1, g1, b1, r2, g2, b2; + int myr=-1; + int myg=-1; + int myb=-1; + int i1, i2, i3, yMapSize; + (*m_map1)[0].get(&i1, &i2, &i3, &yMapSize); + + Flagged_map_t &fmap1 = r.map1(); + Flagged_map_t &fmap2 = r.map2(); + + // When intersecting polygons from fmap1 and fmap2, if BOTH are flagged + // as duplicate, don't add the result to the output map. We can still + // intersect them, because we are keeping track of how much of the polygon + // is left over from intersecting, and quitting when the polygon is + // used up. + + for(unsigned int ii=0; ii < fmap1.size(); ii++) { + RPolygon *p1 = fmap1[ii].p(); + bool is_dup = fmap1[ii].isDuplicate(); + int parea = p1->area(); + p1->getColor(&r1, &g1, &b1); + for(unsigned int jj=0;(jj < fmap2.size()) && (parea > 0); jj++) { + int xl, yl, xh, yh; + RPolygon *p2 = fmap2[jj].p(); + if(PolygonsOverlap(p1, p2, xl, yl, xh, yh)) { + if(!(is_dup && fmap2[jj].isDuplicate())) { + p2->getColor(&r2, &g2, &b2); + myr = r1 + r2; + myg = g1 + g2; + myb = b1 + b2; +#ifdef _DEBUG +#else + tbb::spin_mutex::scoped_lock lock(*m_rMutex); +#endif + (*m_resultMap).push_back(RPolygon(xl, yl, xh, yh, myr, myg, myb)); + } + parea -= (xh-xl+1)*(yh-yl+1); + } + } + } + } + + ApplySplitOverlay(Polygon_map_t *resultMap, Polygon_map_t *map1, Polygon_map_t *map2, tbb::spin_mutex *rmutex) : + m_resultMap(resultMap), m_map1(map1), m_map2(map2), m_rMutex(rmutex) {} +}; + + +/*! +* @brief intersects two maps strip-wise +* +* @param[out] resultMap output map (must be allocated) +* @param[in] polymap1 map to be intersected +* @param[in] polymap2 map to be intersected +*/ +void SplitParallelOverlay(Polygon_map_t **result_map, Polygon_map_t *polymap1, Polygon_map_t *polymap2) { + int nthreads; + bool automatic_threadcount = false; + double domainSplitParallelTime; + tbb::tick_count t0, t1; + tbb::spin_mutex *resultMutex; + if(gThreadsLow == THREADS_UNSET || gThreadsLow == tbb::task_scheduler_init::automatic ) { + gThreadsLow = gThreadsHigh = tbb::task_scheduler_init::automatic; + automatic_threadcount = true; + } + *result_map = new Polygon_map_t; + + RPolygon *p0 = &((*polymap1)[0]); + int mapxSize, mapySize, ignore1, ignore2; + p0->get(&ignore1, &ignore2, &mapxSize, &mapySize); + (*result_map)->reserve(mapxSize*mapySize); // can't be any bigger than this + resultMutex = new tbb::spin_mutex(); + + int grain_size; +#ifdef _DEBUG + grain_size = gMapXSize / 4; +#else + grain_size = gGrainSize; +#endif + for(nthreads = gThreadsLow; nthreads <= gThreadsHigh; nthreads++) { + tbb::task_scheduler_init init(nthreads); + if(gIsGraphicalVersion) { + RPolygon *xp = new RPolygon(0, 0, gMapXSize-1, gMapYSize-1, 0, 0, 0); // Clear the output space + delete xp; + } + // push the map size as the first polygon, + (*result_map)->push_back(RPolygon(0,0,mapxSize, mapySize)); + t0 = tbb::tick_count::now(); + tbb::parallel_for (blocked_range_with_maps(0,(int)(mapxSize+1),grain_size, polymap1, polymap2), ApplySplitOverlay((*result_map), polymap1, polymap2, resultMutex)); + t1 = tbb::tick_count::now(); + domainSplitParallelTime = (t1-t0).seconds()*1000; + cout << "Splitting parallel with spin lock and "; + if(automatic_threadcount) cout << "automatic"; + else cout << nthreads; + cout << ((nthreads == 1) ? " thread" : " threads"); + cout << " took " << domainSplitParallelTime << " msec : speedup over serial " << (gSerialTime / domainSplitParallelTime) << std::endl; + if(gCsvFile.is_open()) { + gCsvFile << "," << domainSplitParallelTime; + } +#if _DEBUG + CheckPolygonMap(*result_map); + ComparePolygonMaps(*result_map, gResultMap); +#endif + (*result_map)->clear(); + + } + delete resultMutex; + if(gCsvFile.is_open()) { + gCsvFile << std::endl; + } +} + +class ApplySplitOverlayCV { + Polygon_map_t *m_map1, *m_map2; + concurrent_Polygon_map_t *m_resultMap; +public: + /*! + * @brief functor for columnar parallel version + * @param[in] r range of map to be operated on + */ + void operator()(blocked_range_with_maps & r) const { + // get yMapSize + int r1, g1, b1, r2, g2, b2; + int myr=-1; + int myg=-1; + int myb=-1; + int i1, i2, i3, yMapSize; + (*m_map1)[0].get(&i1, &i2, &i3, &yMapSize); + + Flagged_map_t &fmap1 = r.map1(); + Flagged_map_t &fmap2 = r.map2(); + + // When intersecting polygons from fmap1 and fmap2, if BOTH are flagged + // as duplicate, don't add the result to the output map. We can still + // intersect them, because we are keeping track of how much of the polygon + // is left over from intersecting, and quitting when the polygon is + // used up. + + for(unsigned int ii=0; ii < fmap1.size(); ii++) { + RPolygon *p1 = fmap1[ii].p(); + bool is_dup = fmap1[ii].isDuplicate(); + int parea = p1->area(); + p1->getColor(&r1, &g1, &b1); + for(unsigned int jj=0;(jj < fmap2.size()) && (parea > 0); jj++) { + int xl, yl, xh, yh; + RPolygon *p2 = fmap2[jj].p(); + if(PolygonsOverlap(p1, p2, xl, yl, xh, yh)) { + if(!(is_dup && fmap2[jj].isDuplicate())) { + p2->getColor(&r2, &g2, &b2); + myr = r1 + r2; + myg = g1 + g2; + myb = b1 + b2; + (*m_resultMap).push_back(RPolygon(xl, yl, xh, yh, myr, myg, myb)); + } + parea -= (xh-xl+1)*(yh-yl+1); + } + } + } + } + + ApplySplitOverlayCV(concurrent_Polygon_map_t *resultMap, Polygon_map_t *map1, Polygon_map_t *map2 ) : + m_resultMap(resultMap), m_map1(map1), m_map2(map2) {} +}; + + +/*! +* @brief intersects two maps strip-wise, accumulating into a concurrent_vector +* +* @param[out] resultMap output map (must be allocated) +* @param[in] polymap1 map to be intersected +* @param[in] polymap2 map to be intersected +*/ +void SplitParallelOverlayCV(concurrent_Polygon_map_t **result_map, Polygon_map_t *polymap1, Polygon_map_t *polymap2) { + int nthreads; + bool automatic_threadcount = false; + double domainSplitParallelTime; + tbb::tick_count t0, t1; + if(gThreadsLow == THREADS_UNSET || gThreadsLow == tbb::task_scheduler_init::automatic ) { + gThreadsLow = gThreadsHigh = tbb::task_scheduler_init::automatic; + automatic_threadcount = true; + } + *result_map = new concurrent_Polygon_map_t; + + RPolygon *p0 = &((*polymap1)[0]); + int mapxSize, mapySize, ignore1, ignore2; + p0->get(&ignore1, &ignore2, &mapxSize, &mapySize); + // (*result_map)->reserve(mapxSize*mapySize); // can't be any bigger than this + + int grain_size; +#ifdef _DEBUG + grain_size = gMapXSize / 4; +#else + grain_size = gGrainSize; +#endif + for(nthreads = gThreadsLow; nthreads <= gThreadsHigh; nthreads++) { + tbb::task_scheduler_init init(nthreads); + if(gIsGraphicalVersion) { + RPolygon *xp = new RPolygon(0, 0, gMapXSize-1, gMapYSize-1, 0, 0, 0); // Clear the output space + delete xp; + } + // push the map size as the first polygon, + (*result_map)->push_back(RPolygon(0,0,mapxSize, mapySize)); + t0 = tbb::tick_count::now(); + tbb::parallel_for (blocked_range_with_maps(0,(int)(mapxSize+1),grain_size, polymap1, polymap2), ApplySplitOverlayCV((*result_map), polymap1, polymap2)); + t1 = tbb::tick_count::now(); + domainSplitParallelTime = (t1-t0).seconds()*1000; + cout << "Splitting parallel with concurrent_vector and "; + if(automatic_threadcount) cout << "automatic"; + else cout << nthreads; + cout << ((nthreads == 1) ? " thread" : " threads"); + cout << " took " << domainSplitParallelTime << " msec : speedup over serial " << (gSerialTime / domainSplitParallelTime) << std::endl; + if(gCsvFile.is_open()) { + gCsvFile << "," << domainSplitParallelTime; + } +#if _DEBUG + { + + Polygon_map_t s_result_map; + for(concurrent_Polygon_map_t::const_iterator ci = (*result_map)->begin(); ci != (*result_map)->end(); ++ci) { + s_result_map.push_back(*ci); + } + CheckPolygonMap(&s_result_map); + ComparePolygonMaps(&s_result_map, gResultMap); + } +#endif + (*result_map)->clear(); + + } + + if(gCsvFile.is_open()) { + gCsvFile << std::endl; + } + +} + +// ------------------------------------------------------ + +class ApplySplitOverlayETS { + Polygon_map_t *m_map1, *m_map2; + ETS_Polygon_map_t *m_resultMap; +public: + /*! + * @brief functor for columnar parallel version + * @param[in] r range of map to be operated on + */ + void operator()(blocked_range_with_maps & r) const { + // get yMapSize + int r1, g1, b1, r2, g2, b2; + int myr=-1; + int myg=-1; + int myb=-1; + int i1, i2, i3, yMapSize; + (*m_map1)[0].get(&i1, &i2, &i3, &yMapSize); + + Flagged_map_t &fmap1 = r.map1(); + Flagged_map_t &fmap2 = r.map2(); + + // When intersecting polygons from fmap1 and fmap2, if BOTH are flagged + // as duplicate, don't add the result to the output map. We can still + // intersect them, because we are keeping track of how much of the polygon + // is left over from intersecting, and quitting when the polygon is + // used up. + + for(unsigned int ii=0; ii < fmap1.size(); ii++) { + RPolygon *p1 = fmap1[ii].p(); + bool is_dup = fmap1[ii].isDuplicate(); + int parea = p1->area(); + p1->getColor(&r1, &g1, &b1); + for(unsigned int jj=0;(jj < fmap2.size()) && (parea > 0); jj++) { + int xl, yl, xh, yh; + RPolygon *p2 = fmap2[jj].p(); + if(PolygonsOverlap(p1, p2, xl, yl, xh, yh)) { + if(!(is_dup && fmap2[jj].isDuplicate())) { + p2->getColor(&r2, &g2, &b2); + myr = r1 + r2; + myg = g1 + g2; + myb = b1 + b2; + (*m_resultMap).local().push_back(RPolygon(xl, yl, xh, yh, myr, myg, myb)); + } + parea -= (xh-xl+1)*(yh-yl+1); + } + } + } + } + + ApplySplitOverlayETS(ETS_Polygon_map_t *resultMap, Polygon_map_t *map1, Polygon_map_t *map2 ) : + m_resultMap(resultMap), m_map1(map1), m_map2(map2) {} +}; + + +/*! +* @brief intersects two maps strip-wise, accumulating into an ets variable +* +* @param[out] resultMap output map (must be allocated) +* @param[in] polymap1 map to be intersected +* @param[in] polymap2 map to be intersected +*/ +void SplitParallelOverlayETS(ETS_Polygon_map_t **result_map, Polygon_map_t *polymap1, Polygon_map_t *polymap2) { + int nthreads; + bool automatic_threadcount = false; + double domainSplitParallelTime; + tbb::tick_count t0, t1; + if(gThreadsLow == THREADS_UNSET || gThreadsLow == tbb::task_scheduler_init::automatic ) { + gThreadsLow = gThreadsHigh = tbb::task_scheduler_init::automatic; + automatic_threadcount = true; + } + *result_map = new ETS_Polygon_map_t; + + RPolygon *p0 = &((*polymap1)[0]); + int mapxSize, mapySize, ignore1, ignore2; + p0->get(&ignore1, &ignore2, &mapxSize, &mapySize); + // (*result_map)->reserve(mapxSize*mapySize); // can't be any bigger than this + + int grain_size; +#ifdef _DEBUG + grain_size = gMapXSize / 4; +#else + grain_size = gGrainSize; +#endif + for(nthreads = gThreadsLow; nthreads <= gThreadsHigh; nthreads++) { + tbb::task_scheduler_init init(nthreads); + if(gIsGraphicalVersion) { + RPolygon *xp = new RPolygon(0, 0, gMapXSize-1, gMapYSize-1, 0, 0, 0); // Clear the output space + delete xp; + } + // push the map size as the first polygon, + // This polygon needs to be first, so we can push it at the start of a combine. + // (*result_map)->local.push_back(RPolygon(0,0,mapxSize, mapySize)); + t0 = tbb::tick_count::now(); + tbb::parallel_for (blocked_range_with_maps(0,(int)(mapxSize+1),grain_size, polymap1, polymap2), ApplySplitOverlayETS((*result_map), polymap1, polymap2)); + t1 = tbb::tick_count::now(); + domainSplitParallelTime = (t1-t0).seconds()*1000; + cout << "Splitting parallel with ETS and "; + if(automatic_threadcount) cout << "automatic"; + else cout << nthreads; + cout << ((nthreads == 1) ? " thread" : " threads"); + cout << " took " << domainSplitParallelTime << " msec : speedup over serial " << (gSerialTime / domainSplitParallelTime) << std::endl; + if(gCsvFile.is_open()) { + gCsvFile << "," << domainSplitParallelTime; + } +#if _DEBUG + { + + Polygon_map_t s_result_map; + flattened2d psv = flatten2d(**result_map); + s_result_map.push_back(RPolygon(0,0,mapxSize, mapySize)); + for(flattened2d::const_iterator ci = psv.begin(); ci != psv.end(); ++ci) { + s_result_map.push_back(*ci); + } + CheckPolygonMap(&s_result_map); + ComparePolygonMaps(&s_result_map, gResultMap); + } +#endif + (*result_map)->clear(); + + } + + if(gCsvFile.is_open()) { + gCsvFile << std::endl; + } + +} diff --git a/examples/parallel_for/polygon_overlay/polyover.h b/examples/parallel_for/polygon_overlay/polyover.h new file mode 100644 index 0000000000..477f141ee7 --- /dev/null +++ b/examples/parallel_for/polygon_overlay/polyover.h @@ -0,0 +1,41 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +/*! + * polyover.h : extern declarations for polyover.cpp +*/ +#include "rpolygon.h" +#include "tbb/mutex.h" +#include "tbb/spin_mutex.h" + +extern void OverlayOnePolygonWithMap(Polygon_map_t *resultMap, RPolygon *myPoly, Polygon_map_t *map2, tbb::spin_mutex *rMutex); + +extern void SerialOverlayMaps(Polygon_map_t **resultMap, Polygon_map_t *map1, Polygon_map_t *map2); + +// extern void NaiveParallelOverlay(Polygon_map_t **result_map, Polygon_map_t *polymap1, Polygon_map_t *polymap2); +extern void NaiveParallelOverlay(Polygon_map_t *&result_map, Polygon_map_t &polymap1, Polygon_map_t &polymap2); + +extern void SplitParallelOverlay(Polygon_map_t **result_map, Polygon_map_t *polymap1, Polygon_map_t *polymap2); +extern void SplitParallelOverlayCV(concurrent_Polygon_map_t **result_map, Polygon_map_t *polymap1, Polygon_map_t *polymap2); +extern void SplitParallelOverlayETS(ETS_Polygon_map_t **result_map, Polygon_map_t *polymap1, Polygon_map_t *polymap2); + +extern void CheckPolygonMap(Polygon_map_t *checkMap); +extern bool ComparePolygonMaps(Polygon_map_t *map1, Polygon_map_t *map2); + diff --git a/examples/parallel_for/polygon_overlay/pover_global.h b/examples/parallel_for/polygon_overlay/pover_global.h new file mode 100644 index 0000000000..bbf30ffc36 --- /dev/null +++ b/examples/parallel_for/polygon_overlay/pover_global.h @@ -0,0 +1,93 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +// +// pover_global.h +// +#ifndef _POVER_GLOBAL_H_ +#define _POVER_GLOBAL_H_ + +#ifdef _MAIN_C_ +#define DEFINE // nothing +#define STATIC static +#define INIT(n) = n +#else // not in main file +#define DEFINE extern +#define STATIC // nothing +#define INIT(n) // nothing +#endif // _MAIN_C_ + +#include +#include + +#ifdef _WINDOWS +#include +#endif + +// this Polygon class only supports rectangles +DEFINE int gDrawXOffset INIT(0); // used for drawing polygons +DEFINE int gDrawYOffset INIT(0); +DEFINE int gPolyXBoxSize INIT(0); // number of pixels orresponding to one "square" (x) +DEFINE int gPolyYBoxSize INIT(0); // number of pixels orresponding to one "square" (y) +DEFINE bool gDoDraw INIT(false); // render the boxes + +#define THREADS_UNSET 0 +DEFINE int gThreadsLow INIT(THREADS_UNSET); +DEFINE int gThreadsHigh INIT(THREADS_UNSET); + +DEFINE std::ofstream gCsvFile; +DEFINE double gSerialTime; +DEFINE char *gCsvFilename INIT(NULL); + +#define BORDER_SIZE 10 // number of pixels between maps + +// The map size and the number of polygons depends on the version we are compiling. +// If DEBUG then it is small; else it is large. + +#ifdef _DEBUG +DEFINE int gNPolygons INIT(30); // default number of polygons in map +DEFINE int gMapXSize INIT(30); +DEFINE int gMapYSize INIT(30); +DEFINE int gGrainSize INIT(5); +#else +DEFINE int gNPolygons INIT(50000); // default number of polygons in map +DEFINE int gMapXSize INIT(1000); +DEFINE int gMapYSize INIT(1000); +DEFINE int gGrainSize INIT(20); +#endif +DEFINE int gMyRandomSeed INIT(2453185); + +DEFINE bool gIsGraphicalVersion INIT(false); + +typedef enum { + NORTH_SIDE, + EAST_SIDE, + SOUTH_SIDE, + WEST_SIDE +} allSides; + +#if _DEBUG +#define PRINT_DEBUG(x) (cout << x << std::endl) +#else +#define PRINT_DEBUG(x) +#endif + + +#endif // _POVER_GLOBAL_H_ diff --git a/examples/parallel_for/polygon_overlay/pover_video.cpp b/examples/parallel_for/polygon_overlay/pover_video.cpp new file mode 100644 index 0000000000..fb1d2050a6 --- /dev/null +++ b/examples/parallel_for/polygon_overlay/pover_video.cpp @@ -0,0 +1,175 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +// Support for GUI display for Polygon overlay demo + +#define VIDEO_WINMAIN_ARGS +#include +#include "polyover.h" +#include "polymain.h" +#include "pover_video.h" +#include "tbb/tick_count.h" +#include "tbb/task_scheduler_init.h" +#ifndef _WIN32 +#include +#include + +void rt_sleep(int msec) { + usleep(msec*1000); +} + +#else //_WIN32 + +#undef OLDUNIXTIME +#undef STDTIME + +#include + +void rt_sleep(int msec) { + Sleep(msec); +} + +#endif /* _WIN32 */ + +using namespace std; + +bool g_next_frame() { + if(++n_next_frame_calls >= frame_skips) { // the data race here is benign + n_next_frame_calls = 0; + return gVideo->next_frame(); + } + return gVideo->running; +} + +bool g_last_frame() { + if(n_next_frame_calls) return gVideo->next_frame(); + return gVideo->running; +} + +bool initializeVideo(int argc, char **argv) { + //pover_video *l_video = new pover_video(); + //gVideo = l_video; + gVideo->init_console(); // don't check return code. + gVideo->title = g_windowTitle; + g_useGraphics = gVideo->init_window(g_xwinsize, g_ywinsize); + return true; +} + +void pover_video::on_process() { + tbb::tick_count t0, t1; + double naiveParallelTime, domainSplitParallelTime; + // create map1 These could be done in parallel, if the pseudorandom number generator were re-seeded. + GenerateMap(&gPolymap1, gMapXSize, gMapYSize, gNPolygons, /*red*/255, /*green*/0, /*blue*/127); + // create map2 + GenerateMap(&gPolymap2, gMapXSize, gMapYSize, gNPolygons, /*red*/0, /*green*/255, /*blue*/127); + // + // Draw source maps + gDrawXOffset = map1XLoc; + gDrawYOffset = map1YLoc; + for(int i=0; i < int(gPolymap1->size()); i++) { + (*gPolymap1)[i].drawPoly(); + } + gDrawXOffset = map2XLoc; + gDrawYOffset = map2YLoc; + for(int i=0; i < int(gPolymap2->size()) ;i++) { + (*gPolymap2)[i].drawPoly(); + } + gDoDraw = true; + + // run serial map generation + gDrawXOffset = maprXLoc; + gDrawYOffset = maprYLoc; + { + RPolygon *xp = new RPolygon(0, 0, gMapXSize-1, gMapYSize-1, 0, 0, 0); // Clear the output space + delete xp; + t0 = tbb::tick_count::now(); + SerialOverlayMaps(&gResultMap, gPolymap1, gPolymap2); + t1 = tbb::tick_count::now(); + cout << "Serial overlay took " << (t1-t0).seconds()*1000 << " msec" << std::endl; + gSerialTime = (t1-t0).seconds()*1000; +#if _DEBUG + CheckPolygonMap(gResultMap); + // keep the map for comparison purposes. +#else + delete gResultMap; +#endif + if(gCsvFile.is_open()) { + gCsvFile << "Serial Time," << gSerialTime << std::endl; + gCsvFile << "Threads,"; + if(gThreadsLow == THREADS_UNSET || gThreadsLow == tbb::task_scheduler_init::automatic) { + gCsvFile << "Threads,Automatic"; + } + else { + for(int i=gThreadsLow; i <= gThreadsHigh; i++) { + gCsvFile << i; + if(i < gThreadsHigh) gCsvFile << ","; + } + } + gCsvFile << std::endl; + } + if(gIsGraphicalVersion) rt_sleep(2000); + } + // run naive parallel map generation + { + Polygon_map_t *resultMap; + if(gCsvFile.is_open()) { + gCsvFile << "Naive Time"; + } + NaiveParallelOverlay(resultMap, *gPolymap1, *gPolymap2); + delete resultMap; + if(gIsGraphicalVersion) rt_sleep(2000); + } + // run split map generation + { + Polygon_map_t *resultMap; + if(gCsvFile.is_open()) { + gCsvFile << "Split Time"; + } + SplitParallelOverlay(&resultMap, gPolymap1, gPolymap2); + delete resultMap; + if(gIsGraphicalVersion) rt_sleep(2000); + } + // split, accumulating into concurrent vector + { + concurrent_Polygon_map_t *cresultMap; + if(gCsvFile.is_open()) { + gCsvFile << "Split CV time"; + } + SplitParallelOverlayCV(&cresultMap, gPolymap1, gPolymap2); + delete cresultMap; + if(gIsGraphicalVersion) rt_sleep(2000); + } + // split, accumulating into ETS + { + ETS_Polygon_map_t *cresultMap; + if(gCsvFile.is_open()) { + gCsvFile << "Split ETS time"; + } + SplitParallelOverlayETS(&cresultMap, gPolymap1, gPolymap2); + delete cresultMap; + if(gIsGraphicalVersion) rt_sleep(2000); + } + if(gIsGraphicalVersion) rt_sleep(8000); + delete gPolymap1; + delete gPolymap2; +#if _DEBUG + delete gResultMap; +#endif +} diff --git a/examples/parallel_for/polygon_overlay/pover_video.h b/examples/parallel_for/polygon_overlay/pover_video.h new file mode 100644 index 0000000000..7906359f45 --- /dev/null +++ b/examples/parallel_for/polygon_overlay/pover_video.h @@ -0,0 +1,64 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +// support for GUI for polygon overlay demo +// +#ifndef _POVER_VIDEO_H_ +#define _POVER_VIDEO_H_ +#include "../../common/gui/video.h" + +#include "pover_global.h" // for declaration of DEFINE and INIT + +DEFINE class video *gVideo INIT(0); + +DEFINE int n_next_frame_calls INIT(0); +DEFINE int frame_skips INIT(10); +extern bool g_next_frame(); +extern bool g_last_frame(); + +class pover_video: public video { + void on_process(); +public: +#ifdef _WINDOWS + bool graphic_display(){return video::win_hInstance != (HINSTANCE)NULL;} +#else + bool graphic_display() { return true;} // fix this for Linux +#endif + //void on_key(int key); +}; + +DEFINE int g_xwinsize INIT(1024); +DEFINE int g_ywinsize INIT(768); + +DEFINE int map1XLoc INIT(10); +DEFINE int map1YLoc INIT(10); +DEFINE int map2XLoc INIT(270); +DEFINE int map2YLoc INIT(10); +DEFINE int maprXLoc INIT(530); +DEFINE int maprYLoc INIT(10); + +DEFINE const char *g_windowTitle INIT("Polygon Overlay"); +DEFINE bool g_useGraphics INIT(true); + +extern bool initializeVideo(int argc, char **argv); + +extern void rt_sleep(int msec); + +#endif // _POVER_VIDEO_H_ diff --git a/examples/parallel_for/polygon_overlay/rpolygon.h b/examples/parallel_for/polygon_overlay/rpolygon.h new file mode 100644 index 0000000000..f34ab7d16e --- /dev/null +++ b/examples/parallel_for/polygon_overlay/rpolygon.h @@ -0,0 +1,155 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +// rpolygon.h +// +#ifndef _RPOLYGON_H_ +#define _RPOLYGON_H_ +#include +#include +#include "pover_video.h" + +#include "tbb/scalable_allocator.h" +#include "tbb/concurrent_vector.h" +#include "tbb/enumerable_thread_specific.h" + +using namespace std; + +using namespace tbb; + +class RPolygon; +typedef scalable_allocator RPolygon_allocator; +DEFINE RPolygon_allocator rAlloc; + +enum MallocBehavior { + UseMalloc, + UseScalableAllocator +}; + +DEFINE MallocBehavior gMBehavior INIT(UseScalableAllocator); + +class RPolygon { +public: + RPolygon() {m_XMin = m_YMin = m_XMax = m_YMax = 0; + m_r = m_g = m_b = 0; + } + RPolygon(int xMin, int yMin, int xMax, int yMax, int r=-1, int g=-1, int b=-1) : m_XMin(xMin), m_YMin(yMin), m_XMax(xMax), m_YMax(yMax) { + if( r >= 0) { + m_r=(colorcomp_t)r; m_g=(colorcomp_t)g; m_b=(colorcomp_t)b; + if(gDoDraw) drawPoly(); + } + } + + void set_nodraw(int xMin, int yMin, int xMax, int yMax) {m_XMin=xMin; m_YMin=yMin; m_XMax=xMax; m_YMax=yMax;} + + RPolygon &intersect(RPolygon &otherPoly); + void set(int xMin, int yMin, int xMax, int yMax) { + set_nodraw(xMin,yMin,xMax,yMax); + if(gDoDraw) { + drawPoly(); + } + } + void get(int *xMin, int *yMin, int *xMax, int *yMax) const {*xMin=m_XMin;*yMin=m_YMin;*xMax=m_XMax;*yMax=m_YMax;} + int xmax() const { return m_XMax; } + int xmin() const { return m_XMin; } + int ymax() const { return m_YMax; } + int ymin() const { return m_YMin; } + void setColor(colorcomp_t newr, colorcomp_t newg, colorcomp_t newb) {m_r = newr; m_g=newg; m_b=newb;} + void getColor(int *myr, int *myg, int *myb) {*myr=m_r; *myg=m_g; *myb=m_b;} + color_t myColor() {return gVideo->get_color(m_r, m_g, m_b);} + void drawPoly() { + if(gVideo->running) { + if(g_next_frame()) { // Shouldn't call next_frame each time + drawing_area ldrawing( + gDrawXOffset+m_XMin*gPolyXBoxSize, //x + gDrawYOffset+m_YMin*gPolyYBoxSize, //y + (m_XMax-m_XMin+1)*gPolyXBoxSize, //sizex + (m_YMax-m_YMin+1)*gPolyYBoxSize); //sizey + for(int y=0; y b.ymin()) return false; + if(a.ymin() < b.ymin()) return true; + return a.xmin() < b.xmin(); +} +#else +extern bool operator<(const RPolygon& a, const RPolygon& b); +#endif + +extern ostream& operator<<(ostream& s, const RPolygon &p); + +class RPolygon_flagged { + RPolygon *myPoly; + bool is_duplicate; +public: + RPolygon_flagged() {myPoly = NULL; is_duplicate = false;} + RPolygon_flagged(RPolygon* _p, bool _is_duplicate) : myPoly(_p), is_duplicate(_is_duplicate) { } + bool isDuplicate() {return is_duplicate;} + void setDuplicate(bool newValue) {is_duplicate = newValue;} + RPolygon *p() {return myPoly;} + void setp(RPolygon *newp) {myPoly = newp;} +}; + +typedef class vector Polygon_map_t; +typedef class concurrent_vector concurrent_Polygon_map_t; +typedef class enumerable_thread_specific ETS_Polygon_map_t; +typedef class vector > Flagged_map_t; // we'll make shallow copies + +inline bool PolygonsOverlap(RPolygon *p1, RPolygon *p2, int &xl, int &yl, int &xh, int &yh) { + int xl1, yl1, xh1, yh1, xl2, yl2, xh2, yh2; +#if _DEBUG + rt_sleep(1); // slow down the process so we can see it. +#endif + p1->get(&xl1, &yl1, &xh1, &yh1); + p2->get(&xl2, &yl2, &xh2, &yh2); + if(xl1 > xh2) return false; + if(xh1 < xl2) return false; + if(yl1 > yh2) return false; + if(yh1 < yl2) return false; + xl = (xl1 < xl2) ? xl2 : xl1; + xh = (xh1 < xh2) ? xh1 : xh2; + yl = (yl1 < yl2) ? yl2 : yl1; + yh = (yh1 < yh2) ? yh1 : yh2; + return true; +} + +#endif // _RPOLYGON_H_ diff --git a/examples/parallel_for/polygon_overlay/speedup.gif b/examples/parallel_for/polygon_overlay/speedup.gif new file mode 100644 index 0000000000..04d6d87689 Binary files /dev/null and b/examples/parallel_for/polygon_overlay/speedup.gif differ diff --git a/examples/parallel_for/polygon_overlay/xcode/polygon_overlay.xcodeproj/project.pbxproj b/examples/parallel_for/polygon_overlay/xcode/polygon_overlay.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..4ada99960b --- /dev/null +++ b/examples/parallel_for/polygon_overlay/xcode/polygon_overlay.xcodeproj/project.pbxproj @@ -0,0 +1,355 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 84011603152CB4AD00B07E4D /* libtbbmalloc.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 84011602152CB4AD00B07E4D /* libtbbmalloc.dylib */; }; + 84B8DA19152C9AC600D59B95 /* libtbb.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 84B8DA13152C9AC600D59B95 /* libtbb.dylib */; }; + 84B8DA77152CA90100D59B95 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 84B8DA6F152CA90100D59B95 /* main.m */; }; + 84B8DA78152CA90100D59B95 /* OpenGLView.m in Sources */ = {isa = PBXBuildFile; fileRef = 84B8DA71152CA90100D59B95 /* OpenGLView.m */; }; + 84B8DA79152CA90100D59B95 /* tbbAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 84B8DA73152CA90100D59B95 /* tbbAppDelegate.m */; }; + 84B8DA7A152CA90100D59B95 /* (null) in Resources */ = {isa = PBXBuildFile; }; + 84B8DA80152CA97B00D59B95 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 84B8DA7C152CA97B00D59B95 /* InfoPlist.strings */; }; + 84B8DA81152CA97B00D59B95 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 84B8DA7E152CA97B00D59B95 /* MainMenu.xib */; }; + 84B8DA9A152CADF400D59B95 /* macvideo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B8DA99152CADF400D59B95 /* macvideo.cpp */; }; + 84B8DAAC152CB05200D59B95 /* polymain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B8DAA4152CB05200D59B95 /* polymain.cpp */; }; + 84B8DAAD152CB05200D59B95 /* polyover.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B8DAA6152CB05200D59B95 /* polyover.cpp */; }; + 84B8DAAE152CB05200D59B95 /* pover_video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B8DAA9152CB05200D59B95 /* pover_video.cpp */; }; + 84D017561527431F0008A4E0 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D017551527431F0008A4E0 /* Cocoa.framework */; }; + 84D01776152744BD0008A4E0 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D01775152744BD0008A4E0 /* OpenGL.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 84011602152CB4AD00B07E4D /* libtbbmalloc.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libtbbmalloc.dylib; path = ../../../../lib/libtbbmalloc.dylib; sourceTree = ""; }; + 84B8DA13152C9AC600D59B95 /* libtbb.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libtbb.dylib; path = ../../../../lib/libtbb.dylib; sourceTree = ""; }; + 84B8DA6F152CA90100D59B95 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = ../../../common/gui/xcode/tbbExample/main.m; sourceTree = ""; }; + 84B8DA70152CA90100D59B95 /* OpenGLView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenGLView.h; path = ../../../common/gui/xcode/tbbExample/OpenGLView.h; sourceTree = ""; }; + 84B8DA71152CA90100D59B95 /* OpenGLView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OpenGLView.m; path = ../../../common/gui/xcode/tbbExample/OpenGLView.m; sourceTree = ""; }; + 84B8DA72152CA90100D59B95 /* tbbAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tbbAppDelegate.h; path = ../../../common/gui/xcode/tbbExample/tbbAppDelegate.h; sourceTree = ""; }; + 84B8DA73152CA90100D59B95 /* tbbAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = tbbAppDelegate.m; path = ../../../common/gui/xcode/tbbExample/tbbAppDelegate.m; sourceTree = ""; }; + 84B8DA75152CA90100D59B95 /* tbbExample-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "tbbExample-Prefix.pch"; path = "../../../common/gui/xcode/tbbExample/tbbExample-Prefix.pch"; sourceTree = ""; }; + 84B8DA7D152CA97B00D59B95 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = InfoPlist.strings; sourceTree = ""; }; + 84B8DA7F152CA97B00D59B95 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = MainMenu.xib; sourceTree = ""; }; + 84B8DA99152CADF400D59B95 /* macvideo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = macvideo.cpp; path = ../../../common/gui/macvideo.cpp; sourceTree = ""; }; + 84B8DAA4152CB05200D59B95 /* polymain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = polymain.cpp; path = ../polymain.cpp; sourceTree = ""; }; + 84B8DAA5152CB05200D59B95 /* polymain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = polymain.h; path = ../polymain.h; sourceTree = ""; }; + 84B8DAA6152CB05200D59B95 /* polyover.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = polyover.cpp; path = ../polyover.cpp; sourceTree = ""; }; + 84B8DAA7152CB05200D59B95 /* polyover.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = polyover.h; path = ../polyover.h; sourceTree = ""; }; + 84B8DAA8152CB05200D59B95 /* pover_global.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pover_global.h; path = ../pover_global.h; sourceTree = ""; }; + 84B8DAA9152CB05200D59B95 /* pover_video.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = pover_video.cpp; path = ../pover_video.cpp; sourceTree = ""; }; + 84B8DAAA152CB05200D59B95 /* pover_video.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pover_video.h; path = ../pover_video.h; sourceTree = ""; }; + 84B8DAAB152CB05200D59B95 /* rpolygon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rpolygon.h; path = ../rpolygon.h; sourceTree = ""; }; + 84D017511527431F0008A4E0 /* tbbExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = tbbExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 84D017551527431F0008A4E0 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + 84D017581527431F0008A4E0 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; + 84D017591527431F0008A4E0 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + 84D0175A1527431F0008A4E0 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 84D01775152744BD0008A4E0 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 84D0174E1527431F0008A4E0 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 84D01776152744BD0008A4E0 /* OpenGL.framework in Frameworks */, + 84D017561527431F0008A4E0 /* Cocoa.framework in Frameworks */, + 84B8DA19152C9AC600D59B95 /* libtbb.dylib in Frameworks */, + 84011603152CB4AD00B07E4D /* libtbbmalloc.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 84B8DA6C152CA8D900D59B95 /* tbbExample */ = { + isa = PBXGroup; + children = ( + 84B8DAA4152CB05200D59B95 /* polymain.cpp */, + 84B8DAA5152CB05200D59B95 /* polymain.h */, + 84B8DAA6152CB05200D59B95 /* polyover.cpp */, + 84B8DAA7152CB05200D59B95 /* polyover.h */, + 84B8DAA8152CB05200D59B95 /* pover_global.h */, + 84B8DAA9152CB05200D59B95 /* pover_video.cpp */, + 84B8DAAA152CB05200D59B95 /* pover_video.h */, + 84B8DAAB152CB05200D59B95 /* rpolygon.h */, + 84B8DA98152CAD8600D59B95 /* Gui layer */, + 84B8DA7B152CA97B00D59B95 /* Resources */, + ); + name = tbbExample; + sourceTree = ""; + }; + 84B8DA7B152CA97B00D59B95 /* Resources */ = { + isa = PBXGroup; + children = ( + 84B8DA7C152CA97B00D59B95 /* InfoPlist.strings */, + 84B8DA7E152CA97B00D59B95 /* MainMenu.xib */, + ); + name = Resources; + path = ../../../common/gui/xcode/tbbExample/en.lproj; + sourceTree = ""; + }; + 84B8DA98152CAD8600D59B95 /* Gui layer */ = { + isa = PBXGroup; + children = ( + 84B8DA99152CADF400D59B95 /* macvideo.cpp */, + 84B8DA6F152CA90100D59B95 /* main.m */, + 84B8DA70152CA90100D59B95 /* OpenGLView.h */, + 84B8DA71152CA90100D59B95 /* OpenGLView.m */, + 84B8DA72152CA90100D59B95 /* tbbAppDelegate.h */, + 84B8DA73152CA90100D59B95 /* tbbAppDelegate.m */, + 84B8DA75152CA90100D59B95 /* tbbExample-Prefix.pch */, + ); + name = "Gui layer"; + sourceTree = ""; + }; + 84D017461527431F0008A4E0 = { + isa = PBXGroup; + children = ( + 84B8DA6C152CA8D900D59B95 /* tbbExample */, + 84D017541527431F0008A4E0 /* Frameworks */, + 84D017521527431F0008A4E0 /* Products */, + ); + sourceTree = ""; + }; + 84D017521527431F0008A4E0 /* Products */ = { + isa = PBXGroup; + children = ( + 84D017511527431F0008A4E0 /* tbbExample.app */, + ); + name = Products; + sourceTree = ""; + }; + 84D017541527431F0008A4E0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 84D01775152744BD0008A4E0 /* OpenGL.framework */, + 84D017551527431F0008A4E0 /* Cocoa.framework */, + 84D017571527431F0008A4E0 /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; + 84D017571527431F0008A4E0 /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 84011602152CB4AD00B07E4D /* libtbbmalloc.dylib */, + 84B8DA13152C9AC600D59B95 /* libtbb.dylib */, + 84D017581527431F0008A4E0 /* AppKit.framework */, + 84D017591527431F0008A4E0 /* CoreData.framework */, + 84D0175A1527431F0008A4E0 /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 84D017501527431F0008A4E0 /* tbbExample */ = { + isa = PBXNativeTarget; + buildConfigurationList = 84D01772152743200008A4E0 /* Build configuration list for PBXNativeTarget "tbbExample" */; + buildPhases = ( + 84D0174D1527431F0008A4E0 /* Sources */, + 84D0174E1527431F0008A4E0 /* Frameworks */, + 84D0174F1527431F0008A4E0 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = tbbExample; + productName = tbbExample; + productReference = 84D017511527431F0008A4E0 /* tbbExample.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 84D017481527431F0008A4E0 /* Project object */ = { + isa = PBXProject; + attributes = { + CLASSPREFIX = tbb; + LastUpgradeCheck = 0430; + }; + buildConfigurationList = 84D0174B1527431F0008A4E0 /* Build configuration list for PBXProject "polygon_overlay" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 84D017461527431F0008A4E0; + productRefGroup = 84D017521527431F0008A4E0 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 84D017501527431F0008A4E0 /* tbbExample */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 84D0174F1527431F0008A4E0 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 84B8DA7A152CA90100D59B95 /* (null) in Resources */, + 84B8DA80152CA97B00D59B95 /* InfoPlist.strings in Resources */, + 84B8DA81152CA97B00D59B95 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 84D0174D1527431F0008A4E0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 84B8DA77152CA90100D59B95 /* main.m in Sources */, + 84B8DA78152CA90100D59B95 /* OpenGLView.m in Sources */, + 84B8DA79152CA90100D59B95 /* tbbAppDelegate.m in Sources */, + 84B8DA9A152CADF400D59B95 /* macvideo.cpp in Sources */, + 84B8DAAC152CB05200D59B95 /* polymain.cpp in Sources */, + 84B8DAAD152CB05200D59B95 /* polyover.cpp in Sources */, + 84B8DAAE152CB05200D59B95 /* pover_video.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 84B8DA7C152CA97B00D59B95 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 84B8DA7D152CA97B00D59B95 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 84B8DA7E152CA97B00D59B95 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 84B8DA7F152CA97B00D59B95 /* en */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 84D01770152743200008A4E0 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_ARC = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.7; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 84D01771152743200008A4E0 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_ARC = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.7; + SDKROOT = macosx; + }; + name = Release; + }; + 84D01773152743200008A4E0 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "../../../common/gui/xcode/tbbExample/tbbExample-Prefix.pch"; + HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../../../../include\""; + INFOPLIST_FILE = "../../../common/gui/xcode/tbbExample/tbbExample-Info.plist"; + LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../../../../lib\""; + MACOSX_DEPLOYMENT_TARGET = 10.7; + PRODUCT_NAME = "$(TARGET_NAME)"; + RUN_CLANG_STATIC_ANALYZER = YES; + USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../../../../include\""; + VERSION_INFO_BUILDER = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 84D01774152743200008A4E0 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "../../../common/gui/xcode/tbbExample/tbbExample-Prefix.pch"; + HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../../../../include\""; + INFOPLIST_FILE = "../../../common/gui/xcode/tbbExample/tbbExample-Info.plist"; + LIBRARY_SEARCH_PATHS = ( + "\"$(SRCROOT)/../../../../lib\"", + "\"$(SRCROOT)\"", + ); + MACOSX_DEPLOYMENT_TARGET = 10.7; + PRODUCT_NAME = "$(TARGET_NAME)"; + RUN_CLANG_STATIC_ANALYZER = YES; + USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../../../../include\""; + VERSION_INFO_BUILDER = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 84D0174B1527431F0008A4E0 /* Build configuration list for PBXProject "polygon_overlay" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 84D01770152743200008A4E0 /* Debug */, + 84D01771152743200008A4E0 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 84D01772152743200008A4E0 /* Build configuration list for PBXNativeTarget "tbbExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 84D01773152743200008A4E0 /* Debug */, + 84D01774152743200008A4E0 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 84D017481527431F0008A4E0 /* Project object */; +} diff --git a/examples/parallel_for/polygon_overlay/xcode/polygon_overlay.xcodeproj/xcshareddata/xcschemes/tbbExample.xcscheme b/examples/parallel_for/polygon_overlay/xcode/polygon_overlay.xcodeproj/xcshareddata/xcschemes/tbbExample.xcscheme new file mode 100644 index 0000000000..37d4ac6bf5 --- /dev/null +++ b/examples/parallel_for/polygon_overlay/xcode/polygon_overlay.xcodeproj/xcshareddata/xcschemes/tbbExample.xcscheme @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/parallel_for/seismic/Makefile b/examples/parallel_for/seismic/Makefile new file mode 100644 index 0000000000..e406ee590b --- /dev/null +++ b/examples/parallel_for/seismic/Makefile @@ -0,0 +1,95 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# GNU Makefile that builds and runs example. +NAME=seismic +ARGS=auto 0 +PERF_RUN_ARGS=auto 10000 silent +LIGHT_ARGS=1:2 100 + +# The C++ compiler +ifneq (,$(shell which icc 2>/dev/null)) +CXX=icc +endif # icc + +TBBLIB = -ltbb +TBBLIB_DEBUG = -ltbb_debug + +ifeq ($(offload), mic) +override CXXFLAGS += -D__TBB_MIC_OFFLOAD=1 -offload-attribute-target=mic +# Replace -ltbb with -tbb in the offload mode +TBBLIB = -tbb +TBBLIB_DEBUG += -offload-option,mic,ld,"-ltbb_debug" +# Currently only console mode is supported in offload version +override UI=con +else +PERFFLAGS=-msse2 +endif + +SOURCES = ../../common/gui/$(UI)video.cpp universe.cpp seismic_video.cpp main.cpp + +include ../../common/gui/Makefile.gmake +override CXXFLAGS += $(UI_CXXFLAGS) + +ifeq ($(shell uname), Linux) +LIBS+= -lrt +endif + +all: release test + +resources: +ifeq ($(UI),mac) + mkdir -p $(APPRES)/en.lproj $(NAME).app/Contents/MacOS + cp ../../common/gui/xcode/tbbExample/Info.plist $(NAME).app/Contents + cp ../../common/gui/xcode/tbbExample/PkgInfo $(NAME).app/Contents + cp ../../common/gui/xcode/tbbExample/en.lproj/* $(APPRES)/en.lproj +endif # OS X* + +release: resources +ifeq ($(UI),mac) + $(CXX_UI) -O2 -DNDEBUG $(CXXFLAGS) -c $(MACUISOURCES) +endif # OS X* + $(CXX) -O2 -DNDEBUG $(CXXFLAGS) -o $(EXE) $(SOURCES) $(MACUIOBJS) $(TBBLIB) $(LIBS) + +debug: resources +ifeq ($(UI),mac) + $(CXX_UI) -g -O0 -DTBB_USE_DEBUG $(CXXFLAGS) -c $(MACUISOURCES) +endif # OS X* + $(CXX) -g -O0 -DTBB_USE_DEBUG $(CXXFLAGS) -o $(EXE) $(SOURCES) $(MACUIOBJS) $(TBBLIB_DEBUG) $(LIBS) + +clean: + $(RM) $(EXE) *.o *.d +ifeq ($(UI),mac) + rm -rf $(NAME).app +endif + +test: +ifeq ($(UI),mac) + export DYLD_LIBRARY_PATH="$(DYLD_LIBRARY_PATH):$(TBBLIBSPATH)"; $(run_cmd) ./$(EXE) $(ARGS) +else + $(run_cmd) ./$(EXE) $(ARGS) +endif + +perf_build: override CXXFLAGS+=$(PERFFLAGS) +perf_build: release + +perf_run: + $(run_cmd) ./$(EXE) $(PERF_RUN_ARGS) + +light_test: + $(run_cmd) ./$(EXE) $(LIGHT_ARGS) diff --git a/examples/parallel_for/seismic/Makefile.windows b/examples/parallel_for/seismic/Makefile.windows new file mode 100644 index 0000000000..61b431c117 --- /dev/null +++ b/examples/parallel_for/seismic/Makefile.windows @@ -0,0 +1,67 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# Common Makefile that builds and runs example. + +# Just specify your program basename +PROG=Seismic +ARGS=auto 0 +PERF_RUN_ARGS=auto 10000 silent +LIGHT_ARGS=1:2 100 + +# Trying to find if icl.exe is set +CXX1 = $(TBB_CXX)- +CXX2 = $(CXX1:icl.exe-=icl.exe) +CXX = $(CXX2:-=cl.exe) + +# Uncomment one of next lines to choose user interface type (console, gdiplus, direct draw) +#UI = con +UI = gdi +#UI = dd + +# Machine architecture, auto-detected from TBB_TARGET_ARCH by default +# Use XARCH variable to change it. See index.html for more information +ARCH0 = $(TBB_TARGET_ARCH)- +ARCH1 = $(ARCH0:ia32-=x86) +ARCH2 = $(ARCH1:intel64-=AMD64) +XARCH = $(ARCH2:-=x86) + +MAKEINC = ../../common/gui/Makefile.win +SOURCES = seismic_video.cpp universe.cpp main.cpp + +all: release test +release: compiler_check + @$(MAKE) -f $(MAKEINC) UI=$(UI) CXX="$(CXX)" CXXFLAGS="$(CXXFLAGS)" LFLAGS="$(LDFLAGS) tbb.lib $(LIBS)" XARCH=$(XARCH) RCNAME=SeismicSimulation SOURCE="$(SOURCES)" EXE=$(PROG).exe build_one +debug: compiler_check + @$(MAKE) -f $(MAKEINC) UI=$(UI) DEBUG=_debug CXX="$(CXX)" CXXFLAGS="$(CXXFLAGS) /D TBB_USE_DEBUG" LFLAGS="$(LDFLAGS) tbb_debug.lib $(LIBS)" XARCH=$(XARCH) RCNAME=SeismicSimulation SOURCE="$(SOURCES)" EXE=$(PROG).exe build_one +clean: + @cmd.exe /C del $(PROG).exe *.obj *.?db *.manifest msvs\SeismicSimulation.res >nul 2>&1 +test: + $(PROG) $(ARGS) + +perf_build: compiler_check + @$(MAKE) -f $(MAKEINC) UI=con CXX="$(CXX)" CXXFLAGS="$(CXXFLAGS)" LFLAGS="$(LDFLAGS) tbb.lib $(LIBS)" XARCH=$(XARCH) RCNAME=SeismicSimulation SOURCE="$(SOURCES) " EXE=$(PROG).exe build_one +perf_run: + $(PROG) $(PERF_RUN_ARGS) + +light_test: + $(PROG) $(LIGHT_ARGS) + +compiler_check: + @echo compiler_test>compiler_test && @$(CXX) /E compiler_test >nul 2>&1 || echo "$(CXX) command not found. Check if CXX=$(CXX) is set properly" + @cmd.exe /C del compiler_test diff --git a/examples/parallel_for/seismic/index.html b/examples/parallel_for/seismic/index.html new file mode 100644 index 0000000000..da0960948e --- /dev/null +++ b/examples/parallel_for/seismic/index.html @@ -0,0 +1,112 @@ + + + +

    Overview

    +
    +
    Parallel seismic wave simulation that demonstrates use of parallel_for and affinity_partitioner. +
    The example can be built in the offload version to run on Intel® Many Integrated Core (Intel® MIC) Architecture based coprocessor (see build instructions). +NOTE: Currently, the offload version does not support GUI and can only be used with console mode. +
    + +

    Files

    +
    +
    main.cpp +
    Main program which parses command line options and runs the algorithm with different numbers of threads. +
    universe.h +
    Wave propagation methods interface. +
    universe.cpp +
    Wave propagation methods implementation. +
    seismic_video.h +
    GUI mode support interface. +
    seismic_video.cpp +
    GUI mode support implementation. +
    Makefile +
    Makefile for building example. +
    + +

    Directories

    +
    +
    msvs +
    Contains Microsoft* Visual Studio* 2010 workspace for building and running the + example (Windows* systems only).
    xcode +
    Contains Xcode* IDE workspace for building and running the example (OS X* + systems only).
    + +

    To Build

    +General build directions can be found here. +The following additional options are supported: +
    +
    make [(general targets: {release, debug} [test])] UI={con, gdi, d2d, x, mac} +
    Build and run as usual, but build with the specified GUI driver: console, GDI+*, + Direct2D*, X11, or OpenGL* + (see the description of the common GUI code + for more information on available graphics support). + For Linux* and OS X* systems, the best available driver is detected automatically by the Makefile. + For Windows* systems, UI=gdi is the default GUI driver; compiling with UI=d2d may offer superior + performance, but can only be used if the Microsoft* DirectX* SDK is installed on your system + and if overlay is supported by your graphics card. + Use UI=con to build without the GUI for use in making performance measurements + (strongly recommended when measuring performance or scalability; see note below). +
    make [(above options or targets)] XARCH=x64 +
    Build and run as above, but also specify XARCH=x64 + (or XARCH=AMD64 for older compilers) when building the example on Windows* as a 64-bit binary. +
    make [(above options or targets)] DDLIB_DIR=<specify path to library directory of Direct Draw* SDK here> +
    If you experience ddraw.lib linking problems, specify the correct library directory via this option. +
    make [(above options or targets)] CXXFLAGS=-DX_FULLSYNC +
    Build and run as above, but enable full X11 synchronization if you experience "tearing" of motion on slower video systems. +
    + +

    Usage

    +
    +
    seismic -h +
    Prints the help for command line options +
    seismic [n-of-threads=value] [n-of-frames=value] [silent] [serial] +
    seismic [n-of-threads [n-of-frames]] [silent] [serial] +
    n-of-threads is the number of threads to use; a range of the form low[:high], where low and optional high are non-negative integers or 'auto' for the TBB default.
    + n-of-frames is a number of frames the example processes internally.
    + silent - no output except elapsed time.
    + serial - in GUI mode start with serial version of algorithm.
    + +
    To run a short version of this example, e.g., for use with Intel® Parallel Inspector:: +
    Build a debug version of the example + (see the build directions). +
    Run it with the desired number of threads and smaller number of frames, e.g., seismic 4 5. +
    + +

    Hot keys

    +The following hot keys can be used in interactive execution mode when the example is compiled with the graphical +user interface: +
    +
    <left mouse button> +
    Starts new seismic wave in place specified by mouse cursor. +
    <space> +
    Toggles between parallel and serial execution modes. +
    <p> +
    Enables parallel execution mode. +
    <s> +
    Enables serial execution mode. +
    <e> +
    Enables screen updates. +
    <d> +
    Disables screen updates (strongly recommended when measuring performance or scalability; see note below). +
    <esc> +
    Stops execution. +
    + +

    Notes

    +
      +
    • While running with the GUI display turned on should yield reasonable performance in most cases, running with the GUI + display turned off is strongly recommended in order to demonstrate the full performance and scalability of the example. +
    + +
    +Up to parent directory +

    +Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

    +Intel is a registered trademark or trademark of Intel Corporation +or its subsidiaries in the United States and other countries. +

    +* Other names and brands may be claimed as the property of others. + + diff --git a/examples/parallel_for/seismic/main.cpp b/examples/parallel_for/seismic/main.cpp new file mode 100644 index 0000000000..f776a6df5a --- /dev/null +++ b/examples/parallel_for/seismic/main.cpp @@ -0,0 +1,151 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#define VIDEO_WINMAIN_ARGS + +#include +#include "tbb/tick_count.h" +#include "../../common/utility/utility.h" + +#include "seismic_video.h" +#include "universe.h" +#include "tbb/task_scheduler_init.h" + +Universe u; + +struct RunOptions { + //! It is used for console mode for test with different number of threads and also has + //! meaning for GUI: threads.first - use separate event/updating loop thread (>0) or not (0). + //! threads.second - initialization value for scheduler + utility::thread_number_range threads; + int numberOfFrames; + bool silent; + bool parallel; + RunOptions(utility::thread_number_range threads_ , int number_of_frames_ , bool silent_ , bool parallel_ ) + : threads(threads_),numberOfFrames(number_of_frames_), silent(silent_), parallel(parallel_) + { + } +}; + +int do_get_default_num_threads() { + int threads; +#if __TBB_MIC_OFFLOAD + #pragma offload target(mic) out(threads) +#endif // __TBB_MIC_OFFLOAD + threads = tbb::task_scheduler_init::default_num_threads(); + return threads; +} + +int get_default_num_threads() { + static int threads = do_get_default_num_threads(); + return threads; +} + +RunOptions ParseCommandLine(int argc, char *argv[]){ + // zero number of threads means to run serial version + utility::thread_number_range threads(get_default_num_threads,0,get_default_num_threads()); + + int numberOfFrames = 0; + bool silent = false; + bool serial = false; + + utility::parse_cli_arguments(argc,argv, + utility::cli_argument_pack() + //"-h" option for displaying help is present implicitly + .positional_arg(threads,"n-of-threads",utility::thread_number_range_desc) + .positional_arg(numberOfFrames,"n-of-frames","number of frames the example processes internally (0 means unlimited)") + .arg(silent,"silent","no output except elapsed time") + .arg(serial,"serial","in GUI mode start with serial version of algorithm") + ); + return RunOptions(threads,numberOfFrames,silent,!serial); +} + +int main(int argc, char *argv[]) +{ + try{ + tbb::tick_count mainStartTime = tbb::tick_count::now(); + RunOptions options = ParseCommandLine(argc,argv); + SeismicVideo video(u,options.numberOfFrames,options.threads.last,options.parallel); + + // video layer init + if(video.init_window(u.UniverseWidth, u.UniverseHeight)) { + video.calc_fps = true; + video.threaded = options.threads.first > 0; + // video is ok, init Universe + u.InitializeUniverse(video); + // main loop + video.main_loop(); + } + else if(video.init_console()) { + // do console mode + if (options.numberOfFrames == 0) { + options.numberOfFrames = 1000; + std::cout << "Substituting 1000 for unlimited frames because not running interactively\n"; + } + for(int p = options.threads.first; p <= options.threads.last; p = options.threads.step(p)) { + tbb::tick_count xwayParallelismStartTime = tbb::tick_count::now(); + u.InitializeUniverse(video); + int numberOfFrames = options.numberOfFrames; +#if __TBB_MIC_OFFLOAD + drawing_memory dmem = video.get_drawing_memory(); + char *pMem = dmem.get_address(); + size_t memSize = dmem.get_size(); + + #pragma offload target(mic) in(u, numberOfFrames, p, dmem), out(pMem:length(memSize)) + { + // It is necessary to update the pointer on mic + // since the address spaces on host and on target are different + dmem.set_address(pMem); + u.SetDrawingMemory(dmem); +#endif // __TBB_MIC_OFFLOAD + if (p==0) { + //run a serial version + for( int i=0; i + + + + DDDebug + Win32 + + + DDDebug + x64 + + + DDRelease + Win32 + + + DDRelease + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + SeismicSimulation + {3AA40693-F93D-4D4B-B32E-068F511A2527} + SeismicSimulation + Win32Proj + + + + + Application + MultiByte + true + + + Application + MultiByte + true + + + Application + MultiByte + true + + + Application + MultiByte + true + + + Application + MultiByte + true + + + Application + MultiByte + true + + + Application + MultiByte + true + + + Application + MultiByte + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + true + true + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + + + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Windows + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 debug "$(OutDir)" + + + + + X64 + + + Disabled + true + true + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;_DEBUG;_WINDOWS;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + + + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Windows + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 debug "$(OutDir)" + + + + + MaxSpeed + Speed + true + true + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Windows + true + true + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 release "$(OutDir)" + + + + + X64 + + + MaxSpeed + Speed + true + true + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN64;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Windows + true + true + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 release "$(OutDir)" + + + + + ..\..\..\common\gui\dxcheck.bat + + + MaxSpeed + Speed + true + true + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;$(DXSDK_DIR)\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;$(DXSDK_DIR)\lib\x86;%(AdditionalLibraryDirectories) + true + Windows + true + true + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 release "$(OutDir)" + + + + + ..\..\..\common\gui\dxcheck.bat + + + X64 + + + MaxSpeed + Speed + true + true + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;$(DXSDK_DIR)\include;%(AdditionalIncludeDirectories) + WIN64;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;$(DXSDK_DIR)\lib\x64;%(AdditionalLibraryDirectories) + true + Windows + true + true + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 release "$(OutDir)" + + + + + ..\..\..\common\gui\dxcheck.bat + + + Disabled + true + true + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;$(DXSDK_DIR)\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + + + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;$(DXSDK_DIR)\lib\x86;%(AdditionalLibraryDirectories) + true + Windows + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 debug "$(OutDir)" + + + + + ..\..\..\common\gui\dxcheck.bat + + + X64 + + + Disabled + true + true + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;$(DXSDK_DIR)\include;%(AdditionalIncludeDirectories) + WIN64;_DEBUG;_WINDOWS;TBB_USE_DEBUG;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + true + + + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;$(DXSDK_DIR)\lib\x64;%(AdditionalLibraryDirectories) + true + Windows + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 debug "$(OutDir)" + + + + + + + + true + true + true + true + + + true + true + true + true + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/parallel_for/seismic/msvs/resource.h b/examples/parallel_for/seismic/msvs/resource.h new file mode 100644 index 0000000000..44453d7ee1 --- /dev/null +++ b/examples/parallel_for/seismic/msvs/resource.h @@ -0,0 +1,32 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by SeismicSimulation.rc +// +#define IDC_MYICON 2 +#define IDD_SEISMICSIMULATION_DIALOG 102 +#define IDS_APP_TITLE 103 +#define IDD_ABOUTBOX 103 +#define IDM_ABOUT 104 +#define IDM_EXIT 105 +#define IDI_SEISMICSIMULATION 107 +#define IDI_SMALL 108 +#define IDC_SEISMICSIMULATION 109 +#define IDR_MAINFRAME 128 +#define ID_FILE_PARALLEL 32771 +#define ID_FILE_SERIAL 32772 +#define IDM_PARALLEL 32773 +#define ID_FILE_ENABLEGUI 32774 +#define ID_FILE_DISABLEGUI 32775 +#define IDC_STATIC -1 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NO_MFC 1 +#define _APS_NEXT_RESOURCE_VALUE 129 +#define _APS_NEXT_COMMAND_VALUE 32782 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 110 +#endif +#endif diff --git a/examples/parallel_for/seismic/msvs/small.ico b/examples/parallel_for/seismic/msvs/small.ico new file mode 100644 index 0000000000..d551aa3aaf Binary files /dev/null and b/examples/parallel_for/seismic/msvs/small.ico differ diff --git a/examples/parallel_for/seismic/seismic_video.cpp b/examples/parallel_for/seismic/seismic_video.cpp new file mode 100644 index 0000000000..50c978f9ca --- /dev/null +++ b/examples/parallel_for/seismic/seismic_video.cpp @@ -0,0 +1,148 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#include "seismic_video.h" +#include "universe.h" +#include "tbb/task_scheduler_init.h" + +const char * const SeismicVideo::titles[2] = {"Seismic Simulation: Serial", "Seismic Simulation: Parallel"}; +void SeismicVideo::on_mouse(int x, int y, int key) { + if(key == 1){ + u_.TryPutNewPulseSource(x,y); + } +} + +void SeismicVideo::on_key(int key) { + key &= 0xff; + if(char(key) == ' ') initIsParallel = !initIsParallel; + else if(char(key) == 'p') initIsParallel = true; + else if(char(key) == 's') initIsParallel = false; + else if(char(key) == 'e') updating = true; + else if(char(key) == 'd') updating = false; + else if(key == 27) running = false; + title = titles[initIsParallel?1:0]; +} + +void SeismicVideo::on_process() { + tbb::task_scheduler_init Init(threadsHigh); + for( int frames = 0; numberOfFrames_==0 || frameson_key('p'); + break; + case ID_FILE_SERIAL: + gVideo->on_key('s'); + break; + case ID_FILE_ENABLEGUI: + gVideo->on_key('e'); + break; + case ID_FILE_DISABLEGUI: + gVideo->on_key('d'); + break; + default: + return DefWindowProc(hWnd, message, wParam, lParam); + } + break; + default: + return DefWindowProc(hWnd, message, wParam, lParam); + } + return 0; +} + +#endif diff --git a/examples/parallel_for/seismic/seismic_video.h b/examples/parallel_for/seismic/seismic_video.h new file mode 100644 index 0000000000..4197cd7115 --- /dev/null +++ b/examples/parallel_for/seismic/seismic_video.h @@ -0,0 +1,54 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#ifndef SEISMIC_VIDEO_H_ +#define SEISMIC_VIDEO_H_ + +#include "../../common/gui/video.h" + +class Universe; + +class SeismicVideo : public video +{ +#ifdef _WINDOWS + #define MAX_LOADSTRING 100 + TCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name + WNDCLASSEX wcex; +#endif + static const char * const titles[2]; + + bool initIsParallel ; + + Universe &u_; + int numberOfFrames_; // 0 means forever, positive means number of frames, negative is undefined + int threadsHigh; +private: + void on_mouse(int x, int y, int key); + void on_process(); + +#ifdef _WINDOWS +public: +#endif + void on_key(int key); + +public: + SeismicVideo( Universe &u,int numberOfFrames, int threadsHigh, bool initIsParallel=true); +}; +#endif /* SEISMIC_VIDEO_H_ */ diff --git a/examples/parallel_for/seismic/universe.cpp b/examples/parallel_for/seismic/universe.cpp new file mode 100644 index 0000000000..dc5e27acba --- /dev/null +++ b/examples/parallel_for/seismic/universe.cpp @@ -0,0 +1,221 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#include "../../common/gui/video.h" +#include +#include "tbb/blocked_range.h" +#include "tbb/parallel_for.h" + + +using namespace std; + +#ifdef _MSC_VER +// warning C4068: unknown pragma +#pragma warning(disable: 4068) +// warning C4351: new behavior: elements of array 'array' will be default initialized +#pragma warning(disable: 4351) +#endif + +#include "universe.h" + +const colorcomp_t MaterialColor[4][3] = { // BGR + {96,0,0}, // WATER + {0,48,48}, // SANDSTONE + {32,32,23} // SHALE +}; + +void Universe::InitializeUniverse(video const& colorizer) { + + pulseCounter = pulseTime = 100; + pulseX = UniverseWidth/3; + pulseY = UniverseHeight/4; + // Initialize V, S, and T to slightly non-zero values, in order to avoid denormal waves. + for( int i=0; i0 ? t : 0; + ValueType b = t<0 ? -t : 0; + ValueType g = 0.5f*fabs(t); + memcpy(c, MaterialColor[k], sizeof(c)); + c[2] = colorcomp_t(r*(255-c[2])+c[2]); + c[1] = colorcomp_t(g*(255-c[1])+c[1]); + c[0] = colorcomp_t(b*(255-c[0])+c[0]); + ColorMap[k][i] = colorizer.get_color(c[2], c[1], c[0]); + } + } + // Set damping coefficients around border to reduce reflections from boundaries. + ValueType d = 1.0; + for( int k=DamperSize-1; k>0; --k ) { + d *= 1-1.0f/(DamperSize*DamperSize); + for( int j=1; j0 ) { + ValueType t = (pulseCounter-pulseTime/2)*0.05f; + V[pulseY][pulseX] += 64*sqrt(M[pulseY][pulseX])*exp(-t*t); + --pulseCounter; + } +} + +struct Universe::Rectangle { + struct std::pair xRange; + struct std::pair yRange; + Rectangle (int startX, int startY, int width, int height):xRange(startX,width),yRange(startY,height){} + int StartX() const {return xRange.first;} + int StartY() const {return yRange.first;} + int Width() const {return xRange.second;} + int Height() const {return yRange.second;} + int EndX() const {return xRange.first + xRange.second;} + int EndY() const {return yRange.first + yRange.second;} + +}; + +void Universe::UpdateStress(Rectangle const& r ) { + drawing_area drawing(r.StartX(),r.StartY(),r.Width(),r.Height(),drawingMemory); + for( int i=r.StartY(); i=ColorMapSize ) index = ColorMapSize-1; + color_t* c = ColorMap[material[i][j]]; + drawing.put_pixel(c[index]); + } + } +} + +void Universe::SerialUpdateStress() { + Rectangle area(0, 0, UniverseWidth-1, UniverseHeight-1); + UpdateStress(area); +} + +struct UpdateStressBody { + Universe & u_; + UpdateStressBody(Universe & u):u_(u){} + void operator()( const tbb::blocked_range& range ) const { + Universe::Rectangle area(0, range.begin(), u_.UniverseWidth-1, range.size()); + u_.UpdateStress(area); + } +}; + +void Universe::ParallelUpdateStress(tbb::affinity_partitioner &affinity) { + tbb::parallel_for( tbb::blocked_range( 0, UniverseHeight-1 ), // Index space for loop + UpdateStressBody(*this), // Body of loop + affinity ); // Affinity hint +} + +void Universe::UpdateVelocity(Rectangle const& r) { + for( int i=r.StartY(); i& y_range ) const { + u_.UpdateVelocity(Universe::Rectangle(1,y_range.begin(),u_.UniverseWidth-1,y_range.size())); + } +}; + +void Universe::ParallelUpdateVelocity(tbb::affinity_partitioner &affinity) { + tbb::parallel_for( tbb::blocked_range( 1, UniverseHeight ), // Index space for loop + UpdateVelocityBody(*this), // Body of loop + affinity ); // Affinity hint +} + +void Universe::SerialUpdateUniverse() { + UpdatePulse(); + SerialUpdateStress(); + SerialUpdateVelocity(); +} + +void Universe::ParallelUpdateUniverse() { + /** Affinity is an argument to parallel_for to hint that an iteration of a loop + is best replayed on the same processor for each execution of the loop. + It is a static object because it must remember where the iterations happened + in previous executions. */ + static tbb::affinity_partitioner affinity; + UpdatePulse(); + ParallelUpdateStress(affinity); + ParallelUpdateVelocity(affinity); +} + +bool Universe::TryPutNewPulseSource(int x, int y){ + if(pulseCounter == 0) { + pulseCounter = pulseTime; + pulseX = x; pulseY = y; + return true; + } + return false; +} + +void Universe::SetDrawingMemory(const drawing_memory &dmem) { + drawingMemory = dmem; +} diff --git a/examples/parallel_for/seismic/universe.h b/examples/parallel_for/seismic/universe.h new file mode 100644 index 0000000000..ff1a79ac93 --- /dev/null +++ b/examples/parallel_for/seismic/universe.h @@ -0,0 +1,118 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + This file is part of Threading Building Blocks. Threading Building Blocks is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. Threading Building Blocks is + distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. You should have received a copy of + the GNU General Public License along with Threading Building Blocks; if not, write to the + Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + As a special exception, you may use this file as part of a free software library without + restriction. Specifically, if other files instantiate templates or use macros or inline + functions from this file, or you compile this file and link it with other files to produce + an executable, this file does not by itself cause the resulting executable to be covered + by the GNU General Public License. This exception does not however invalidate any other + reasons why the executable file might be covered by the GNU General Public License. +*/ + +#ifndef UNIVERSE_H_ +#define UNIVERSE_H_ + +#ifndef UNIVERSE_WIDTH +#define UNIVERSE_WIDTH 1024 +#endif +#ifndef UNIVERSE_HEIGHT +#define UNIVERSE_HEIGHT 512 +#endif + +#include "../../common/gui/video.h" +#include "tbb/partitioner.h" + +class Universe { +public: + enum { + UniverseWidth = UNIVERSE_WIDTH, + UniverseHeight = UNIVERSE_HEIGHT + }; +private: + //in order to avoid performance degradation due to cache aliasing issue + //some padding is needed after each row in array, and between array themselves. + //the padding is achieved by adjusting number of rows and columns. + //as the compiler is forced to place class members of the same clause in order of the + //declaration this seems to be the right way of padding. + + //magic constants added below are chosen experimentally for 1024x512. + enum { + MaxWidth = UniverseWidth+1, + MaxHeight = UniverseHeight+3 + }; + + typedef float ValueType; + + //! Horizontal stress + ValueType S[MaxHeight][MaxWidth]; + + //! Velocity at each grid point + ValueType V[MaxHeight][MaxWidth]; + + //! Vertical stress + ValueType T[MaxHeight][MaxWidth]; + + //! Coefficient related to modulus + ValueType M[MaxHeight][MaxWidth]; + + //! Damping coefficients + ValueType D[MaxHeight][MaxWidth]; + + //! Coefficient related to lightness + ValueType L[MaxHeight][MaxWidth]; + + enum { ColorMapSize = 1024}; + color_t ColorMap[4][ColorMapSize]; + + enum MaterialType { + WATER=0, + SANDSTONE=1, + SHALE=2 + }; + + //! Values are MaterialType, cast to an unsigned char to save space. + unsigned char material[MaxHeight][MaxWidth]; + +private: + enum { DamperSize = 32}; + + int pulseTime; + int pulseCounter; + int pulseX; + int pulseY; + + drawing_memory drawingMemory; + +public: + void InitializeUniverse(video const& colorizer); + + void SerialUpdateUniverse(); + void ParallelUpdateUniverse(); + bool TryPutNewPulseSource(int x, int y); + void SetDrawingMemory(const drawing_memory &dmem); +private: + struct Rectangle; + void UpdatePulse(); + void UpdateStress(Rectangle const& r ); + + void SerialUpdateStress() ; + friend struct UpdateStressBody; + friend struct UpdateVelocityBody; + void ParallelUpdateStress(tbb::affinity_partitioner &affinity); + + void UpdateVelocity(Rectangle const& r); + + void SerialUpdateVelocity() ; + void ParallelUpdateVelocity(tbb::affinity_partitioner &affinity); +}; + +#endif /* UNIVERSE_H_ */ diff --git a/examples/parallel_for/seismic/xcode/seismic.xcodeproj/project.pbxproj b/examples/parallel_for/seismic/xcode/seismic.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..ff394654c2 --- /dev/null +++ b/examples/parallel_for/seismic/xcode/seismic.xcodeproj/project.pbxproj @@ -0,0 +1,345 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 84B8DA19152C9AC600D59B95 /* libtbb.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 84B8DA13152C9AC600D59B95 /* libtbb.dylib */; }; + 84B8DA77152CA90100D59B95 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 84B8DA6F152CA90100D59B95 /* main.m */; }; + 84B8DA78152CA90100D59B95 /* OpenGLView.m in Sources */ = {isa = PBXBuildFile; fileRef = 84B8DA71152CA90100D59B95 /* OpenGLView.m */; }; + 84B8DA79152CA90100D59B95 /* tbbAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 84B8DA73152CA90100D59B95 /* tbbAppDelegate.m */; }; + 84B8DA7A152CA90100D59B95 /* (null) in Resources */ = {isa = PBXBuildFile; }; + 84B8DA80152CA97B00D59B95 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 84B8DA7C152CA97B00D59B95 /* InfoPlist.strings */; }; + 84B8DA81152CA97B00D59B95 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 84B8DA7E152CA97B00D59B95 /* MainMenu.xib */; }; + 84B8DA87152CA99C00D59B95 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B8DA82152CA99C00D59B95 /* main.cpp */; }; + 84B8DA88152CA99C00D59B95 /* seismic_video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B8DA83152CA99C00D59B95 /* seismic_video.cpp */; }; + 84B8DA89152CA99C00D59B95 /* universe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B8DA85152CA99C00D59B95 /* universe.cpp */; }; + 84B8DA9A152CADF400D59B95 /* macvideo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B8DA99152CADF400D59B95 /* macvideo.cpp */; }; + 84D017561527431F0008A4E0 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D017551527431F0008A4E0 /* Cocoa.framework */; }; + 84D01776152744BD0008A4E0 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84D01775152744BD0008A4E0 /* OpenGL.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 84B8DA13152C9AC600D59B95 /* libtbb.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libtbb.dylib; path = ../../../../lib/libtbb.dylib; sourceTree = ""; }; + 84B8DA6F152CA90100D59B95 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = ../../../common/gui/xcode/tbbExample/main.m; sourceTree = ""; }; + 84B8DA70152CA90100D59B95 /* OpenGLView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OpenGLView.h; path = ../../../common/gui/xcode/tbbExample/OpenGLView.h; sourceTree = ""; }; + 84B8DA71152CA90100D59B95 /* OpenGLView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OpenGLView.m; path = ../../../common/gui/xcode/tbbExample/OpenGLView.m; sourceTree = ""; }; + 84B8DA72152CA90100D59B95 /* tbbAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tbbAppDelegate.h; path = ../../../common/gui/xcode/tbbExample/tbbAppDelegate.h; sourceTree = ""; }; + 84B8DA73152CA90100D59B95 /* tbbAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = tbbAppDelegate.m; path = ../../../common/gui/xcode/tbbExample/tbbAppDelegate.m; sourceTree = ""; }; + 84B8DA75152CA90100D59B95 /* tbbExample-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "tbbExample-Prefix.pch"; path = "../../../common/gui/xcode/tbbExample/tbbExample-Prefix.pch"; sourceTree = ""; }; + 84B8DA7D152CA97B00D59B95 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = InfoPlist.strings; sourceTree = ""; }; + 84B8DA7F152CA97B00D59B95 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = MainMenu.xib; sourceTree = ""; }; + 84B8DA82152CA99C00D59B95 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = ../main.cpp; sourceTree = ""; }; + 84B8DA83152CA99C00D59B95 /* seismic_video.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = seismic_video.cpp; path = ../seismic_video.cpp; sourceTree = ""; }; + 84B8DA84152CA99C00D59B95 /* seismic_video.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = seismic_video.h; path = ../seismic_video.h; sourceTree = ""; }; + 84B8DA85152CA99C00D59B95 /* universe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = universe.cpp; path = ../universe.cpp; sourceTree = ""; }; + 84B8DA86152CA99C00D59B95 /* universe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = universe.h; path = ../universe.h; sourceTree = ""; }; + 84B8DA99152CADF400D59B95 /* macvideo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = macvideo.cpp; path = ../../../common/gui/macvideo.cpp; sourceTree = ""; }; + 84D017511527431F0008A4E0 /* tbbExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = tbbExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 84D017551527431F0008A4E0 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + 84D017581527431F0008A4E0 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; + 84D017591527431F0008A4E0 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + 84D0175A1527431F0008A4E0 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 84D01775152744BD0008A4E0 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 84D0174E1527431F0008A4E0 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 84D01776152744BD0008A4E0 /* OpenGL.framework in Frameworks */, + 84D017561527431F0008A4E0 /* Cocoa.framework in Frameworks */, + 84B8DA19152C9AC600D59B95 /* libtbb.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 84B8DA6C152CA8D900D59B95 /* tbbExample */ = { + isa = PBXGroup; + children = ( + 84B8DA98152CAD8600D59B95 /* Gui layer */, + 84B8DA7B152CA97B00D59B95 /* Resources */, + 84B8DA82152CA99C00D59B95 /* main.cpp */, + 84B8DA83152CA99C00D59B95 /* seismic_video.cpp */, + 84B8DA84152CA99C00D59B95 /* seismic_video.h */, + 84B8DA85152CA99C00D59B95 /* universe.cpp */, + 84B8DA86152CA99C00D59B95 /* universe.h */, + ); + name = tbbExample; + sourceTree = ""; + }; + 84B8DA7B152CA97B00D59B95 /* Resources */ = { + isa = PBXGroup; + children = ( + 84B8DA7C152CA97B00D59B95 /* InfoPlist.strings */, + 84B8DA7E152CA97B00D59B95 /* MainMenu.xib */, + ); + name = Resources; + path = ../../../common/gui/xcode/tbbExample/en.lproj; + sourceTree = ""; + }; + 84B8DA98152CAD8600D59B95 /* Gui layer */ = { + isa = PBXGroup; + children = ( + 84B8DA99152CADF400D59B95 /* macvideo.cpp */, + 84B8DA6F152CA90100D59B95 /* main.m */, + 84B8DA70152CA90100D59B95 /* OpenGLView.h */, + 84B8DA71152CA90100D59B95 /* OpenGLView.m */, + 84B8DA72152CA90100D59B95 /* tbbAppDelegate.h */, + 84B8DA73152CA90100D59B95 /* tbbAppDelegate.m */, + 84B8DA75152CA90100D59B95 /* tbbExample-Prefix.pch */, + ); + name = "Gui layer"; + sourceTree = ""; + }; + 84D017461527431F0008A4E0 = { + isa = PBXGroup; + children = ( + 84B8DA6C152CA8D900D59B95 /* tbbExample */, + 84D017541527431F0008A4E0 /* Frameworks */, + 84D017521527431F0008A4E0 /* Products */, + ); + sourceTree = ""; + }; + 84D017521527431F0008A4E0 /* Products */ = { + isa = PBXGroup; + children = ( + 84D017511527431F0008A4E0 /* tbbExample.app */, + ); + name = Products; + sourceTree = ""; + }; + 84D017541527431F0008A4E0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 84D01775152744BD0008A4E0 /* OpenGL.framework */, + 84D017551527431F0008A4E0 /* Cocoa.framework */, + 84D017571527431F0008A4E0 /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; + 84D017571527431F0008A4E0 /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 84B8DA13152C9AC600D59B95 /* libtbb.dylib */, + 84D017581527431F0008A4E0 /* AppKit.framework */, + 84D017591527431F0008A4E0 /* CoreData.framework */, + 84D0175A1527431F0008A4E0 /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 84D017501527431F0008A4E0 /* tbbExample */ = { + isa = PBXNativeTarget; + buildConfigurationList = 84D01772152743200008A4E0 /* Build configuration list for PBXNativeTarget "tbbExample" */; + buildPhases = ( + 84D0174D1527431F0008A4E0 /* Sources */, + 84D0174E1527431F0008A4E0 /* Frameworks */, + 84D0174F1527431F0008A4E0 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = tbbExample; + productName = tbbExample; + productReference = 84D017511527431F0008A4E0 /* tbbExample.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 84D017481527431F0008A4E0 /* Project object */ = { + isa = PBXProject; + attributes = { + CLASSPREFIX = tbb; + LastUpgradeCheck = 0430; + }; + buildConfigurationList = 84D0174B1527431F0008A4E0 /* Build configuration list for PBXProject "tbbExample" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 84D017461527431F0008A4E0; + productRefGroup = 84D017521527431F0008A4E0 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 84D017501527431F0008A4E0 /* tbbExample */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 84D0174F1527431F0008A4E0 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 84B8DA7A152CA90100D59B95 /* (null) in Resources */, + 84B8DA80152CA97B00D59B95 /* InfoPlist.strings in Resources */, + 84B8DA81152CA97B00D59B95 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 84D0174D1527431F0008A4E0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 84B8DA77152CA90100D59B95 /* main.m in Sources */, + 84B8DA78152CA90100D59B95 /* OpenGLView.m in Sources */, + 84B8DA79152CA90100D59B95 /* tbbAppDelegate.m in Sources */, + 84B8DA87152CA99C00D59B95 /* main.cpp in Sources */, + 84B8DA88152CA99C00D59B95 /* seismic_video.cpp in Sources */, + 84B8DA89152CA99C00D59B95 /* universe.cpp in Sources */, + 84B8DA9A152CADF400D59B95 /* macvideo.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 84B8DA7C152CA97B00D59B95 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 84B8DA7D152CA97B00D59B95 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 84B8DA7E152CA97B00D59B95 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 84B8DA7F152CA97B00D59B95 /* en */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 84D01770152743200008A4E0 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_ARC = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.7; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 84D01771152743200008A4E0 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_ARC = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.7; + SDKROOT = macosx; + }; + name = Release; + }; + 84D01773152743200008A4E0 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "../../../common/gui/xcode/tbbExample/tbbExample-Prefix.pch"; + HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../../../../include\""; + INFOPLIST_FILE = "../../../common/gui/xcode/tbbExample/tbbExample-Info.plist"; + LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../../../../lib\""; + MACOSX_DEPLOYMENT_TARGET = 10.7; + PRODUCT_NAME = "$(TARGET_NAME)"; + RUN_CLANG_STATIC_ANALYZER = YES; + USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../../../../include\""; + VERSION_INFO_BUILDER = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 84D01774152743200008A4E0 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "../../../common/gui/xcode/tbbExample/tbbExample-Prefix.pch"; + HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../../../../include\""; + INFOPLIST_FILE = "../../../common/gui/xcode/tbbExample/tbbExample-Info.plist"; + LIBRARY_SEARCH_PATHS = ( + "\"$(SRCROOT)/../../../../lib\"", + "\"$(SRCROOT)\"", + ); + MACOSX_DEPLOYMENT_TARGET = 10.7; + PRODUCT_NAME = "$(TARGET_NAME)"; + RUN_CLANG_STATIC_ANALYZER = YES; + USER_HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../../../../include\""; + VERSION_INFO_BUILDER = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 84D0174B1527431F0008A4E0 /* Build configuration list for PBXProject "tbbExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 84D01770152743200008A4E0 /* Debug */, + 84D01771152743200008A4E0 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 84D01772152743200008A4E0 /* Build configuration list for PBXNativeTarget "tbbExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 84D01773152743200008A4E0 /* Debug */, + 84D01774152743200008A4E0 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 84D017481527431F0008A4E0 /* Project object */; +} diff --git a/examples/parallel_for/seismic/xcode/seismic.xcodeproj/xcshareddata/xcschemes/tbbExample.xcscheme b/examples/parallel_for/seismic/xcode/seismic.xcodeproj/xcshareddata/xcschemes/tbbExample.xcscheme new file mode 100644 index 0000000000..1dd33ab334 --- /dev/null +++ b/examples/parallel_for/seismic/xcode/seismic.xcodeproj/xcshareddata/xcschemes/tbbExample.xcscheme @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/parallel_for/tachyon/Makefile b/examples/parallel_for/tachyon/Makefile new file mode 100644 index 0000000000..0e8db68a27 --- /dev/null +++ b/examples/parallel_for/tachyon/Makefile @@ -0,0 +1,182 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# The original source for this example is +# Copyright (c) 1994-2008 John E. Stone +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS +# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. + +# GNU Makefile that builds and runs example. +NAME:=tachyon + +# The C++ compiler +ifneq (,$(shell which icc 2>/dev/null)) +CXX=icc +endif # icc + +# The default runtime arguments +export ARGS = dat/balls.dat +export PERF_RUN_ARGS = silent dat/balls3.dat +export LIGHT_ARGS= dat/model2.dat + +# define name suffix +SUFFIX = .$(VERSION) + +LIBS ?= -lm + +include ../../common/gui/Makefile.gmake + +ifeq ($(UI),x) +UI_CXXFLAGS += -DX_FULLSYNC +ifneq (,$(findstring -lXext,$(LIBS))) +UI_CXXFLAGS += -DX_NOSHMPIX +endif +endif # X + +MYCXXFLAGS = $(CXXFLAGS) $(UI_CXXFLAGS) + +all: build run +release: build +debug: build_debug +test: run + +build: build_serial build_tbb1d build_tbb +build_debug: build_serial_debug build_tbb1d_debug build_tbb_debug +run: run_serial run_tbb1d run_tbb + +serial: build_serial run_serial +serial_debug: build_serial_debug run_serial +tbb: build_tbb run_tbb +tbb_debug: build_tbb_debug run_tbb +tbb1d: build_tbb1d run_tbb1d +tbb1d_debug: build_tbb1d_debug run_tbb1d + +build_serial: + $(MAKE) VERSION=serial build_one +build_serial_debug: + $(MAKE) VERSION=serial ADD_DEBUG=1 build_one +run_serial: + $(MAKE) VERSION=serial run_one + +build_tbb: + $(MAKE) VERSION=tbb ADD_TBB=1 build_one +build_tbb_debug: + $(MAKE) VERSION=tbb ADD_TBB=1 ADD_DEBUG=1 build_one +run_tbb: + $(MAKE) VERSION=tbb run_one + +build_tbb1d: + $(MAKE) VERSION=tbb1d ADD_TBB=1 build_one +build_tbb1d_debug: + $(MAKE) VERSION=tbb1d ADD_TBB=1 ADD_DEBUG=1 build_one +run_tbb1d: + $(MAKE) VERSION=tbb1d run_one + + +perf_build: + $(MAKE) UI=con VERSION=tbb ADD_TBB=1 build_one +perf_run: + $(MAKE) UI=con VERSION=tbb run_perf_one + +light_test: + $(MAKE) UI=con VERSION=tbb light_test_one + + +# +# Per-build Makefile rules (for recursive $(MAKE) calls from above) +# + +SVERSION = $(VERSION) + +ifeq ($(ADD_DEBUG),1) +MYCXXFLAGS += -O0 -g -D_DEBUG +else +MYCXXFLAGS += -O2 -DNDEBUG +endif + + +ifeq ($(ADD_TBB),1) +MYCXXFLAGS += +ifeq ($(ADD_DEBUG),1) +MYCXXFLAGS += -DTBB_USE_DEBUG +LIBS += -ltbb_debug +else +LIBS += -ltbb +endif +endif + +ifeq ($(shell uname), Linux) +LIBS += -lrt +endif + +SOURCE = ../../common/gui/$(UI)video.cpp src/trace.$(SVERSION).cpp src/main.cpp src/pthread.cpp src/tachyon_video.cpp src/api.cpp src/apigeom.cpp src/apitrigeom.cpp src/bndbox.cpp src/box.cpp src/camera.cpp src/coordsys.cpp src/cylinder.cpp src/extvol.cpp src/global.cpp src/grid.cpp src/imageio.cpp src/imap.cpp src/intersect.cpp src/jpeg.cpp src/light.cpp src/objbound.cpp src/parse.cpp src/plane.cpp src/ppm.cpp src/quadric.cpp src/render.cpp src/ring.cpp src/shade.cpp src/sphere.cpp src/texture.cpp src/tgafile.cpp src/trace_rest.cpp src/triangle.cpp src/ui.cpp src/util.cpp src/vector.cpp src/vol.cpp + +build_one: $(EXE) + +run_one: +ifeq ($(UI),mac) + export DYLD_LIBRARY_PATH="$(DYLD_LIBRARY_PATH):$(TBBLIBSPATH)"; $(run_cmd) ./$(EXE) $(ARGS) +else + $(run_cmd) ./$(EXE) $(ARGS) +endif + +run_perf_one: + $(run_cmd) ./$(EXE) $(PERF_RUN_ARGS) + +light_test_one: + $(run_cmd) ./$(EXE) $(LIGHT_ARGS) + +$(EXE): $(SOURCE) +ifeq ($(UI),mac) + mkdir -p $(APPRES)/en.lproj $(NAME)$(SUFFIX).app/Contents/MacOS + cp ../../common/gui/xcode/tbbExample/Info.plist $(NAME)$(SUFFIX).app/Contents + cp ../../common/gui/xcode/tbbExample/PkgInfo $(NAME)$(SUFFIX).app/Contents + cp ../../common/gui/xcode/tbbExample/en.lproj/* $(APPRES)/en.lproj + $(CXX_UI) $(MYCXXFLAGS) $(CXXFLAGS) -c $(MACUISOURCES) +endif # OS X* + $(CXX) $(MYCXXFLAGS) -o $@ $(SOURCE) $(MACUIOBJS) $(LIBS) + $(RM) *.o + +clean: VERSION = * +clean: +ifeq ($(UI),mac) + rm -rf $(NAME).* +endif + $(RM) $(EXE) *.o *.d diff --git a/examples/parallel_for/tachyon/Makefile.windows b/examples/parallel_for/tachyon/Makefile.windows new file mode 100644 index 0000000000..f738a7fa35 --- /dev/null +++ b/examples/parallel_for/tachyon/Makefile.windows @@ -0,0 +1,150 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# This file is part of Threading Building Blocks. Threading Building Blocks is free software; +# you can redistribute it and/or modify it under the terms of the GNU General Public License +# version 2 as published by the Free Software Foundation. Threading Building Blocks is +# distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. You should have received a copy of +# the GNU General Public License along with Threading Building Blocks; if not, write to the +# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# As a special exception, you may use this file as part of a free software library without +# restriction. Specifically, if other files instantiate templates or use macros or inline +# functions from this file, or you compile this file and link it with other files to produce +# an executable, this file does not by itself cause the resulting executable to be covered +# by the GNU General Public License. This exception does not however invalidate any other +# reasons why the executable file might be covered by the GNU General Public License. + +# The original source for this example is +# Copyright (c) 1994-2008 John E. Stone +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS +# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. + +# Common Makefile that builds and runs example. + +# Trying to find if icl.exe is set +CXX1 = $(TBB_CXX)- +CXX2 = $(CXX1:icl.exe-=icl.exe) +CXX = $(CXX2:-=cl.exe) + +# Uncomment one of next lines to choose user interface type (console, gdiplus, direct draw) +#UI = con +UI = gdi +#UI = dd + +# Machine architecture, auto-detected from TBB_TARGET_ARCH by default +# Use XARCH variable to change it. See index.html for more information +ARCH0 = $(TBB_TARGET_ARCH)- +ARCH1 = $(ARCH0:ia32-=x86) +ARCH2 = $(ARCH1:intel64-=AMD64) +XARCH = $(ARCH2:-=x86) + +# The default runtime arguments +ARGS = dat\balls.dat +PERF_RUN_ARGS = silent dat\balls3.dat +LIGHT_ARGS=dat\model2.dat + +# Add these for tbb/tbb1d release builds +# /GL is a workaround to prevent run-time crash when built by VS2010 +CXXFLAGS_TBB_NDEBUG = $(CXXFLAGS) /GL +LIBS_TBB_NDEBUG = tbb.lib $(LIBS) + +# Add these for tbb/tbb1d debug builds +CXXFLAGS_TBB_DEBUG = $(CXXFLAGS) /D TBB_USE_DEBUG +LIBS_TBB_DEBUG = tbb_debug.lib $(LIBS) + + +MAKEINC = ../../common/gui/Makefile.win +# scr/main.cpp src/tachyon_video.cpp cannot be included to the SOURCE_COMMON list since it depends on UI and /subsystem which is not specified for common SOURCE build +SOURCE = src/main.cpp src/tachyon_video.cpp +SOURCE_COMMON = src/pthread.cpp src/api.cpp src/apigeom.cpp src/apitrigeom.cpp src/bndbox.cpp src/box.cpp src/camera.cpp src/coordsys.cpp src/cylinder.cpp src/extvol.cpp src/global.cpp src/grid.cpp src/imageio.cpp src/imap.cpp src/intersect.cpp src/jpeg.cpp src/light.cpp src/objbound.cpp src/parse.cpp src/plane.cpp src/ppm.cpp src/quadric.cpp src/render.cpp src/ring.cpp src/shade.cpp src/sphere.cpp src/texture.cpp src/tgafile.cpp src/trace_rest.cpp src/triangle.cpp src/ui.cpp src/util.cpp src/vector.cpp src/vol.cpp + +# Targets +all: build run +release: build +debug: build_debug +test: run + +build: build_serial build_tbb1d build_tbb +build_debug: build_serial_debug build_tbb1d_debug build_tbb_debug +run: run_serial run_tbb1d run_tbb + +serial: build_serial run_serial +serial_debug: build_serial_debug run_serial +tbb: build_tbb run_tbb +tbb_debug: build_tbb_debug run_tbb +tbb1d: build_tbb1d run_tbb1d +tbb1d_debug: build_tbb1d_debug run_tbb1d + +CXXFLAGS_COMMON = /c /nologo /EHsc /Zc:forScope /D WIN32 /D _MBCS /D _CRT_SECURE_NO_DEPRECATE /Foobj/ /MP $(CXXFLAGS) +CXXFLAGS_NDEBUG = /MD /O2 /Ot /Gy /D NDEBUG +CXXFLAGS_DEBUG = /MDd /Od /Zi /D _DEBUG +LIB_LINK_FLAGS = /nologo /machine:$(XARCH) + +tachyon_common.lib: + @cmd.exe /C if not exist obj mkdir obj + $(CXX) $(CXXFLAGS_NDEBUG) $(CXXFLAGS_COMMON) $(SOURCE_COMMON) + LIB $(LIB_LINK_FLAGS) obj/*.obj /OUT:$@ + @cmd.exe /C if exist obj rmdir /S /Q obj + +tachyon_common_debug.lib: + @cmd.exe /C if not exist obj mkdir obj + $(CXX) $(CXXFLAGS_DEBUG) $(CXXFLAGS_COMMON) $(SOURCE_COMMON) + LIB $(LIB_LINK_FLAGS) obj/*.obj /OUT:$@ + @cmd.exe /C if exist obj rmdir /S /Q obj + +build_serial: tachyon_common.lib + @$(MAKE) -f $(MAKEINC) SOURCE="src/trace.serial.cpp $(SOURCE) tachyon_common.lib" EXE=tachyon.serial.exe RCNAME=gui UI=$(UI) CXX="$(CXX)" CXXFLAGS="/GL $(CXXFLAGS)" XARCH=$(XARCH) build_one +build_serial_debug: tachyon_common_debug.lib + @$(MAKE) -f $(MAKEINC) SOURCE="src/trace.serial.cpp $(SOURCE) tachyon_common_debug.lib" EXE=tachyon.serial.exe RCNAME=gui UI=$(UI) DEBUG=_debug CXX="$(CXX)" CXXFLAGS=$(CXXFLAGS) XARCH=$(XARCH) build_one +run_serial: + -.\tachyon.serial.exe $(ARGS) + +build_tbb: tachyon_common.lib + @$(MAKE) -f $(MAKEINC) SOURCE="src/trace.tbb.cpp $(SOURCE) tachyon_common.lib" EXE=tachyon.tbb.exe RCNAME=gui UI=$(UI) CXX="$(CXX)" CXXFLAGS="$(CXXFLAGS_TBB_NDEBUG)" LFLAGS="$(LIBS_TBB_NDEBUG)" XARCH=$(XARCH) build_one +build_tbb_debug: tachyon_common_debug.lib + @$(MAKE) -f $(MAKEINC) SOURCE="src/trace.tbb.cpp $(SOURCE) tachyon_common_debug.lib" EXE=tachyon.tbb.exe RCNAME=gui UI=$(UI) DEBUG=_debug CXX="$(CXX)" CXXFLAGS="$(CXXFLAGS_TBB_DEBUG)" LFLAGS="$(LIBS_TBB_DEBUG)" XARCH=$(XARCH) build_one +run_tbb: + -.\tachyon.tbb.exe $(ARGS) + +build_tbb1d: tachyon_common.lib + @$(MAKE) -f $(MAKEINC) SOURCE="src/trace.tbb1d.cpp $(SOURCE) tachyon_common.lib" EXE=tachyon.tbb1d.exe RCNAME=gui UI=$(UI) CXX="$(CXX)" CXXFLAGS="$(CXXFLAGS_TBB_NDEBUG)" LFLAGS="$(LIBS_TBB_NDEBUG)" XARCH=$(XARCH) build_one +build_tbb1d_debug: tachyon_common_debug.lib + @$(MAKE) -f $(MAKEINC) SOURCE="src/trace.tbb1d.cpp $(SOURCE) tachyon_common_debug.lib" EXE=tachyon.tbb1d.exe RCNAME=gui UI=$(UI) DEBUG=_debug CXX="$(CXX)" CXXFLAGS="$(CXXFLAGS_TBB_DEBUG)" LFLAGS="$(LIBS_TBB_DEBUG)" XARCH=$(XARCH) build_one +run_tbb1d: + -.\tachyon.tbb1d.exe $(ARGS) + + +clean: + @cmd.exe /C del tachyon.* *.manifest *.obj *.lib msvs\gui.res *.?db + +perf_build: tachyon_common.lib + @$(MAKE) -f $(MAKEINC) SOURCE="src/trace.tbb.cpp $(SOURCE) tachyon_common.lib" EXE=tachyon.tbb.exe RCNAME=gui UI=con CXX="$(CXX)" CXXFLAGS="$(CXXFLAGS_TBB_NDEBUG)" LFLAGS="$(LIBS_TBB_NDEBUG)" XARCH=$(XARCH) build_one +perf_run: + -.\tachyon.tbb.exe $(PERF_RUN_ARGS) + +light_test: + -.\tachyon.tbb.exe $(LIGHT_ARGS) diff --git a/examples/parallel_for/tachyon/android/.classpath b/examples/parallel_for/tachyon/android/.classpath new file mode 100644 index 0000000000..3f9691c5dd --- /dev/null +++ b/examples/parallel_for/tachyon/android/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/examples/parallel_for/tachyon/android/.cproject b/examples/parallel_for/tachyon/android/.cproject new file mode 100644 index 0000000000..e2df34aa1b --- /dev/null +++ b/examples/parallel_for/tachyon/android/.cproject @@ -0,0 +1,223 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/parallel_for/tachyon/android/.project b/examples/parallel_for/tachyon/android/.project new file mode 100644 index 0000000000..fc089ae301 --- /dev/null +++ b/examples/parallel_for/tachyon/android/.project @@ -0,0 +1,98 @@ + + + Tachyon + + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + ?children? + ?name?=outputEntries\|?children?=?name?=entry\\\\\\\|\\\|?name?=entry\\\\\\\|\\\|\|| + + + ?name? + + + + org.eclipse.cdt.make.core.append_environment + true + + + org.eclipse.cdt.make.core.buildArguments + + + + org.eclipse.cdt.make.core.buildCommand + ndk-build + + + org.eclipse.cdt.make.core.cleanBuildTarget + clean + + + org.eclipse.cdt.make.core.contents + org.eclipse.cdt.make.core.activeConfigSettings + + + org.eclipse.cdt.make.core.enableAutoBuild + false + + + org.eclipse.cdt.make.core.enableCleanBuild + true + + + org.eclipse.cdt.make.core.enableFullBuild + true + + + org.eclipse.cdt.make.core.stopOnError + true + + + org.eclipse.cdt.make.core.useDefaultBuildCmd + true + + + + + com.android.ide.eclipse.adt.ResourceManagerBuilder + + + + + com.android.ide.eclipse.adt.PreCompilerBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.android.ide.eclipse.adt.ApkBuilder + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + com.android.ide.eclipse.adt.AndroidNature + org.eclipse.jdt.core.javanature + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/examples/parallel_for/tachyon/android/AndroidManifest.xml b/examples/parallel_for/tachyon/android/AndroidManifest.xml new file mode 100644 index 0000000000..c3e1887e41 --- /dev/null +++ b/examples/parallel_for/tachyon/android/AndroidManifest.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/parallel_for/tachyon/android/assets/data.dat b/examples/parallel_for/tachyon/android/assets/data.dat new file mode 100644 index 0000000000..0d4bbb15bb --- /dev/null +++ b/examples/parallel_for/tachyon/android/assets/data.dat @@ -0,0 +1,14804 @@ +BEGIN_SCENE + OUTFILE /dev/null + RESOLUTION 512 512 + VERBOSE 0 + +CAMERA + ZOOM 1.20711 +ASPECTRATIO 1.0 + ANTIALIASING 0 + RAYDEPTH 5 + CENTER 2.1 1.3 1.7 + VIEWDIR -0.700389 -0.433574 -0.566982 + UPDIR -0.482085 -0.298433 0.82373 + +END_CAMERA + +BACKGROUND 0.078 0.361 0.753 + +LIGHT CENTER 4 3 2 RAD 0.002 COLOR 0.5 0.5 0.5 + +LIGHT CENTER 1 -4 4 RAD 0.002 COLOR 0.5 0.5 0.5 + +LIGHT CENTER -3 1 5 RAD 0.002 COLOR 0.5 0.5 0.5 + +TEXDEF txt001 AMBIENT 0.2 DIFFUSE 0.8 SPECULAR 0 OPACITY 1 +PHONG PLASTIC 0 PHONG_SIZE 100000 + COLOR 1 0.75 0.33 + TEXFUNC 0 + +TRI + V0 12 12 -0.5 V1 -12 -12 -0.5 V2 12 -12 -0.5 + txt001 +TRI + V0 12 12 -0.5 V1 -12 12 -0.5 V2 -12 -12 -0.5 + txt001 +TEXDEF txt002 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 +PHONG PLASTIC 0.5 PHONG_SIZE 45.2776 + COLOR 1 0.9 0.7 + TEXFUNC 0 + + SPHERE CENTER 0 0 0 RAD 0.5 + txt002 + SPHERE CENTER 0.272166 0.272166 0.544331 RAD 0.166667 + txt002 + SPHERE CENTER 0.420314 0.420314 0.618405 RAD 0.0555556 + txt002 + SPHERE CENTER 0.470715 0.470715 0.598245 RAD 0.0185185 + txt002 + SPHERE CENTER 0.481689 0.481689 0.57904 RAD 0.00617284 + txt002 + SPHERE CENTER 0.475329 0.45787 0.577669 RAD 0.00617284 + txt002 + SPHERE CENTER 0.45787 0.475329 0.577669 RAD 0.00617284 + txt002 + SPHERE CENTER 0.477074 0.494534 0.599616 RAD 0.00617284 + txt002 + SPHERE CENTER 0.453255 0.488174 0.598245 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4661 0.48356 0.618821 RAD 0.00617284 + txt002 + SPHERE CENTER 0.494534 0.477074 0.599616 RAD 0.00617284 + txt002 + SPHERE CENTER 0.48356 0.4661 0.618821 RAD 0.00617284 + txt002 + SPHERE CENTER 0.488174 0.453255 0.598245 RAD 0.00617284 + txt002 + SPHERE CENTER 0.461623 0.409245 0.557924 RAD 0.0185185 + txt002 + SPHERE CENTER 0.47044 0.419664 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER 0.447954 0.425689 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.468014 0.433095 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER 0.484109 0.40322 0.549693 RAD 0.00617284 + txt002 + SPHERE CENTER 0.481683 0.416651 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER 0.475292 0.392801 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER 0.464049 0.395814 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER 0.455233 0.385395 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER 0.441563 0.401839 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.409245 0.461623 0.557924 RAD 0.0185185 + txt002 + SPHERE CENTER 0.419664 0.47044 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER 0.433095 0.468014 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER 0.425689 0.447954 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.395814 0.464049 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER 0.401839 0.441563 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.385395 0.455233 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40322 0.484109 0.549693 RAD 0.00617284 + txt002 + SPHERE CENTER 0.392801 0.475292 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER 0.416651 0.481683 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER 0.429405 0.481784 0.658726 RAD 0.0185185 + txt002 + SPHERE CENTER 0.441197 0.503434 0.660098 RAD 0.00617284 + txt002 + SPHERE CENTER 0.452601 0.483752 0.650495 RAD 0.00617284 + txt002 + SPHERE CENTER 0.434161 0.494577 0.63815 RAD 0.00617284 + txt002 + SPHERE CENTER 0.418001 0.501466 0.668328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.410965 0.492609 0.64638 RAD 0.00617284 + txt002 + SPHERE CENTER 0.406209 0.479816 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436441 0.490641 0.680674 RAD 0.00617284 + txt002 + SPHERE CENTER 0.42465 0.46899 0.679302 RAD 0.00617284 + txt002 + SPHERE CENTER 0.447846 0.470958 0.671072 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367935 0.472692 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.36376 0.497028 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.383056 0.487812 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.383056 0.487812 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.34864 0.481907 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367935 0.472692 0.593714 RAD 0.00617284 + txt002 + SPHERE CENTER 0.352815 0.457572 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.34864 0.481907 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.352815 0.457572 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367935 0.472692 0.643096 RAD 0.00617284 + txt002 + SPHERE CENTER 0.379004 0.431383 0.678886 RAD 0.0185185 + txt002 + SPHERE CENTER 0.376578 0.444814 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399064 0.438789 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER 0.385395 0.455233 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356518 0.437408 0.687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.365335 0.447826 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.358944 0.423976 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.370187 0.420964 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.372614 0.407532 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER 0.392673 0.414939 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER 0.481784 0.429405 0.658726 RAD 0.0185185 + txt002 + SPHERE CENTER 0.503434 0.441197 0.660098 RAD 0.00617284 + txt002 + SPHERE CENTER 0.494577 0.434161 0.63815 RAD 0.00617284 + txt002 + SPHERE CENTER 0.483752 0.452601 0.650495 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490641 0.436441 0.680674 RAD 0.00617284 + txt002 + SPHERE CENTER 0.470958 0.447846 0.671072 RAD 0.00617284 + txt002 + SPHERE CENTER 0.46899 0.42465 0.679302 RAD 0.00617284 + txt002 + SPHERE CENTER 0.501466 0.418001 0.668328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.479816 0.406209 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER 0.492609 0.410965 0.64638 RAD 0.00617284 + txt002 + SPHERE CENTER 0.431383 0.379004 0.678886 RAD 0.0185185 + txt002 + SPHERE CENTER 0.444814 0.376578 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.455233 0.385395 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER 0.438789 0.399064 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER 0.420964 0.370187 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.414939 0.392673 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER 0.407532 0.372614 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER 0.437408 0.356518 0.687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.423976 0.358944 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.447826 0.365335 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472692 0.367935 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.497028 0.36376 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.487812 0.383056 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.487812 0.383056 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.481907 0.34864 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472692 0.367935 0.643096 RAD 0.00617284 + txt002 + SPHERE CENTER 0.457572 0.352815 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.481907 0.34864 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.457572 0.352815 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472692 0.367935 0.593714 RAD 0.00617284 + txt002 + SPHERE CENTER 0.461844 0.304709 0.43322 RAD 0.0555556 + txt002 + SPHERE CENTER 0.492085 0.33495 0.372739 RAD 0.0185185 + txt002 + SPHERE CENTER 0.492085 0.33495 0.348047 RAD 0.00617284 + txt002 + SPHERE CENTER 0.488469 0.313874 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.471009 0.331334 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.495701 0.356025 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.474625 0.352409 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER 0.495701 0.356025 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.51316 0.338566 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.51316 0.338566 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.509544 0.31749 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER 0.424345 0.305171 0.369341 RAD 0.0185185 + txt002 + SPHERE CENTER 0.40568 0.315605 0.356995 RAD 0.00617284 + txt002 + SPHERE CENTER 0.403931 0.312107 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.419383 0.329161 0.372427 RAD 0.00617284 + txt002 + SPHERE CENTER 0.426095 0.30867 0.344961 RAD 0.00617284 + txt002 + SPHERE CENTER 0.439797 0.322225 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.444759 0.298235 0.357307 RAD 0.00617284 + txt002 + SPHERE CENTER 0.410643 0.291616 0.353908 RAD 0.00617284 + txt002 + SPHERE CENTER 0.429307 0.281181 0.366254 RAD 0.00617284 + txt002 + SPHERE CENTER 0.408893 0.288117 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.435193 0.368397 0.406378 RAD 0.0185185 + txt002 + SPHERE CENTER 0.440864 0.389015 0.394032 RAD 0.00617284 + txt002 + SPHERE CENTER 0.457301 0.37895 0.409464 RAD 0.00617284 + txt002 + SPHERE CENTER 0.451857 0.367697 0.388171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.418755 0.378463 0.390945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.429748 0.357145 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.413085 0.357845 0.403291 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4242 0.389715 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.418529 0.369098 0.424584 RAD 0.00617284 + txt002 + SPHERE CENTER 0.440637 0.37965 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER 0.529584 0.334488 0.436618 RAD 0.0185185 + txt002 + SPHERE CENTER 0.546497 0.347572 0.424272 RAD 0.00617284 + txt002 + SPHERE CENTER 0.532117 0.331508 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522481 0.352406 0.421186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.543964 0.350552 0.448652 RAD 0.00617284 + txt002 + SPHERE CENTER 0.519948 0.355387 0.445566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.52705 0.337468 0.460998 RAD 0.00617284 + txt002 + SPHERE CENTER 0.5536 0.329654 0.439705 RAD 0.00617284 + txt002 + SPHERE CENTER 0.536686 0.31657 0.45205 RAD 0.00617284 + txt002 + SPHERE CENTER 0.53922 0.313589 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472692 0.367935 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.48474 0.389488 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.495668 0.369235 0.46131 RAD 0.00617284 + txt002 + SPHERE CENTER 0.477004 0.379669 0.448964 RAD 0.00617284 + txt002 + SPHERE CENTER 0.461764 0.388188 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER 0.454027 0.37837 0.457911 RAD 0.00617284 + txt002 + SPHERE CENTER 0.449715 0.366636 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER 0.480429 0.377754 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.46838 0.356202 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.491357 0.357501 0.482603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.499343 0.304247 0.497099 RAD 0.0185185 + txt002 + SPHERE CENTER 0.518259 0.314219 0.509445 RAD 0.00617284 + txt002 + SPHERE CENTER 0.519922 0.310678 0.485065 RAD 0.00617284 + txt002 + SPHERE CENTER 0.504895 0.328108 0.494013 RAD 0.00617284 + txt002 + SPHERE CENTER 0.49768 0.307788 0.521479 RAD 0.00617284 + txt002 + SPHERE CENTER 0.484316 0.321677 0.506047 RAD 0.00617284 + txt002 + SPHERE CENTER 0.478764 0.297816 0.509133 RAD 0.00617284 + txt002 + SPHERE CENTER 0.512708 0.290358 0.512531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.493791 0.280387 0.500186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.51437 0.286818 0.488152 RAD 0.00617284 + txt002 + SPHERE CENTER 0.518736 0.271262 0.399581 RAD 0.0185185 + txt002 + SPHERE CENTER 0.539811 0.274878 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.520873 0.290418 0.384149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.533373 0.290264 0.405442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.537674 0.255722 0.402668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.531235 0.271108 0.420874 RAD 0.00617284 + txt002 + SPHERE CENTER 0.516598 0.252106 0.415013 RAD 0.00617284 + txt002 + SPHERE CENTER 0.525174 0.255876 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.504099 0.25226 0.39372 RAD 0.00617284 + txt002 + SPHERE CENTER 0.506236 0.271416 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.488495 0.241021 0.460062 RAD 0.0185185 + txt002 + SPHERE CENTER 0.50716 0.230587 0.472408 RAD 0.00617284 + txt002 + SPHERE CENTER 0.51153 0.24936 0.456976 RAD 0.00617284 + txt002 + SPHERE CENTER 0.499694 0.253381 0.478269 RAD 0.00617284 + txt002 + SPHERE CENTER 0.484125 0.222248 0.475494 RAD 0.00617284 + txt002 + SPHERE CENTER 0.476659 0.245042 0.481355 RAD 0.00617284 + txt002 + SPHERE CENTER 0.46546 0.232683 0.463149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.495961 0.218227 0.454201 RAD 0.00617284 + txt002 + SPHERE CENTER 0.477296 0.228661 0.441856 RAD 0.00617284 + txt002 + SPHERE CENTER 0.500331 0.237 0.438769 RAD 0.00617284 + txt002 + SPHERE CENTER 0.450996 0.241483 0.396183 RAD 0.0185185 + txt002 + SPHERE CENTER 0.455172 0.217147 0.396183 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472226 0.232599 0.40513 RAD 0.00617284 + txt002 + SPHERE CENTER 0.45115 0.228983 0.417476 RAD 0.00617284 + txt002 + SPHERE CENTER 0.433942 0.226031 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.429921 0.237867 0.408529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.429767 0.250367 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.455018 0.229647 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER 0.450842 0.253983 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472072 0.245099 0.383837 RAD 0.00617284 + txt002 + SPHERE CENTER 0.304709 0.461844 0.43322 RAD 0.0555556 + txt002 + SPHERE CENTER 0.33495 0.492085 0.372739 RAD 0.0185185 + txt002 + SPHERE CENTER 0.33495 0.492085 0.348047 RAD 0.00617284 + txt002 + SPHERE CENTER 0.331334 0.471009 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.313874 0.488469 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.338566 0.51316 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31749 0.509544 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER 0.338566 0.51316 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356025 0.495701 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356025 0.495701 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.352409 0.474625 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER 0.368397 0.435193 0.406378 RAD 0.0185185 + txt002 + SPHERE CENTER 0.389015 0.440864 0.394032 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367697 0.451857 0.388171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37895 0.457301 0.409464 RAD 0.00617284 + txt002 + SPHERE CENTER 0.389715 0.4242 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37965 0.440637 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER 0.369098 0.418529 0.424584 RAD 0.00617284 + txt002 + SPHERE CENTER 0.378463 0.418755 0.390945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.357845 0.413085 0.403291 RAD 0.00617284 + txt002 + SPHERE CENTER 0.357145 0.429748 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.305171 0.424345 0.369341 RAD 0.0185185 + txt002 + SPHERE CENTER 0.315605 0.40568 0.356995 RAD 0.00617284 + txt002 + SPHERE CENTER 0.329161 0.419383 0.372427 RAD 0.00617284 + txt002 + SPHERE CENTER 0.312107 0.403931 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.291616 0.410643 0.353908 RAD 0.00617284 + txt002 + SPHERE CENTER 0.288117 0.408893 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.281181 0.429307 0.366254 RAD 0.00617284 + txt002 + SPHERE CENTER 0.30867 0.426095 0.344961 RAD 0.00617284 + txt002 + SPHERE CENTER 0.298235 0.444759 0.357307 RAD 0.00617284 + txt002 + SPHERE CENTER 0.322225 0.439797 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271262 0.518736 0.399581 RAD 0.0185185 + txt002 + SPHERE CENTER 0.274878 0.539811 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.290264 0.533373 0.405442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.290418 0.520873 0.384149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.255876 0.525174 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271416 0.506236 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.25226 0.504099 0.39372 RAD 0.00617284 + txt002 + SPHERE CENTER 0.255722 0.537674 0.402668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.252106 0.516598 0.415013 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271108 0.531235 0.420874 RAD 0.00617284 + txt002 + SPHERE CENTER 0.241483 0.450996 0.396183 RAD 0.0185185 + txt002 + SPHERE CENTER 0.217147 0.455172 0.396183 RAD 0.00617284 + txt002 + SPHERE CENTER 0.228983 0.45115 0.417476 RAD 0.00617284 + txt002 + SPHERE CENTER 0.232599 0.472226 0.40513 RAD 0.00617284 + txt002 + SPHERE CENTER 0.229647 0.455018 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER 0.245099 0.472072 0.383837 RAD 0.00617284 + txt002 + SPHERE CENTER 0.253983 0.450842 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER 0.226031 0.433942 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.250367 0.429767 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.237867 0.429921 0.408529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.241021 0.488495 0.460062 RAD 0.0185185 + txt002 + SPHERE CENTER 0.230587 0.50716 0.472408 RAD 0.00617284 + txt002 + SPHERE CENTER 0.253381 0.499694 0.478269 RAD 0.00617284 + txt002 + SPHERE CENTER 0.24936 0.51153 0.456976 RAD 0.00617284 + txt002 + SPHERE CENTER 0.218227 0.495961 0.454201 RAD 0.00617284 + txt002 + SPHERE CENTER 0.237 0.500331 0.438769 RAD 0.00617284 + txt002 + SPHERE CENTER 0.228661 0.477296 0.441856 RAD 0.00617284 + txt002 + SPHERE CENTER 0.222248 0.484125 0.475494 RAD 0.00617284 + txt002 + SPHERE CENTER 0.232683 0.46546 0.463149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.245042 0.476659 0.481355 RAD 0.00617284 + txt002 + SPHERE CENTER 0.334488 0.529584 0.436618 RAD 0.0185185 + txt002 + SPHERE CENTER 0.347572 0.546497 0.424272 RAD 0.00617284 + txt002 + SPHERE CENTER 0.352406 0.522481 0.421186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.331508 0.532117 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.329654 0.5536 0.439705 RAD 0.00617284 + txt002 + SPHERE CENTER 0.313589 0.53922 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31657 0.536686 0.45205 RAD 0.00617284 + txt002 + SPHERE CENTER 0.350552 0.543964 0.448652 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337468 0.52705 0.460998 RAD 0.00617284 + txt002 + SPHERE CENTER 0.355387 0.519948 0.445566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.304247 0.499343 0.497099 RAD 0.0185185 + txt002 + SPHERE CENTER 0.314219 0.518259 0.509445 RAD 0.00617284 + txt002 + SPHERE CENTER 0.328108 0.504895 0.494013 RAD 0.00617284 + txt002 + SPHERE CENTER 0.310678 0.519922 0.485065 RAD 0.00617284 + txt002 + SPHERE CENTER 0.290358 0.512708 0.512531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.286818 0.51437 0.488152 RAD 0.00617284 + txt002 + SPHERE CENTER 0.280387 0.493791 0.500186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307788 0.49768 0.521479 RAD 0.00617284 + txt002 + SPHERE CENTER 0.297816 0.478764 0.509133 RAD 0.00617284 + txt002 + SPHERE CENTER 0.321677 0.484316 0.506047 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367935 0.472692 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.389488 0.48474 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.379669 0.477004 0.448964 RAD 0.00617284 + txt002 + SPHERE CENTER 0.369235 0.495668 0.46131 RAD 0.00617284 + txt002 + SPHERE CENTER 0.377754 0.480429 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.357501 0.491357 0.482603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356202 0.46838 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.388188 0.461764 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER 0.366636 0.449715 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37837 0.454027 0.457911 RAD 0.00617284 + txt002 + SPHERE CENTER 0.230635 0.38777 0.729516 RAD 0.0555556 + txt002 + SPHERE CENTER 0.2506 0.446614 0.769837 RAD 0.0185185 + txt002 + SPHERE CENTER 0.264242 0.467193 0.770086 RAD 0.00617284 + txt002 + SPHERE CENTER 0.272442 0.447086 0.758332 RAD 0.00617284 + txt002 + SPHERE CENTER 0.253384 0.459832 0.749168 RAD 0.00617284 + txt002 + SPHERE CENTER 0.2424 0.46672 0.781591 RAD 0.00617284 + txt002 + SPHERE CENTER 0.231541 0.459359 0.760673 RAD 0.00617284 + txt002 + SPHERE CENTER 0.228758 0.446141 0.781342 RAD 0.00617284 + txt002 + SPHERE CENTER 0.261459 0.453974 0.790755 RAD 0.00617284 + txt002 + SPHERE CENTER 0.247817 0.433396 0.790506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.269659 0.433868 0.779001 RAD 0.00617284 + txt002 + SPHERE CENTER 0.301839 0.407906 0.732914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.319874 0.420236 0.72141 RAD 0.00617284 + txt002 + SPHERE CENTER 0.303021 0.407886 0.708251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.296625 0.428474 0.720288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318692 0.420256 0.746073 RAD 0.00617284 + txt002 + SPHERE CENTER 0.295442 0.428494 0.744951 RAD 0.00617284 + txt002 + SPHERE CENTER 0.300656 0.407926 0.757577 RAD 0.00617284 + txt002 + SPHERE CENTER 0.325088 0.399668 0.734036 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307053 0.387338 0.745541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.308235 0.387318 0.720878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.253236 0.449775 0.695877 RAD 0.0185185 + txt002 + SPHERE CENTER 0.263032 0.459076 0.675209 RAD 0.00617284 + txt002 + SPHERE CENTER 0.270029 0.436804 0.683251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.247378 0.440021 0.673964 RAD 0.00617284 + txt002 + SPHERE CENTER 0.246239 0.472047 0.687835 RAD 0.00617284 + txt002 + SPHERE CENTER 0.230585 0.452992 0.68659 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236443 0.462746 0.708504 RAD 0.00617284 + txt002 + SPHERE CENTER 0.26889 0.468829 0.697123 RAD 0.00617284 + txt002 + SPHERE CENTER 0.259094 0.459528 0.717791 RAD 0.00617284 + txt002 + SPHERE CENTER 0.275887 0.446557 0.705165 RAD 0.00617284 + txt002 + SPHERE CENTER 0.179397 0.426478 0.766439 RAD 0.0185185 + txt002 + SPHERE CENTER 0.174744 0.447688 0.778193 RAD 0.00617284 + txt002 + SPHERE CENTER 0.197172 0.437457 0.779597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.1895 0.447523 0.758396 RAD 0.00617284 + txt002 + SPHERE CENTER 0.156968 0.436708 0.765035 RAD 0.00617284 + txt002 + SPHERE CENTER 0.171724 0.436544 0.745238 RAD 0.00617284 + txt002 + SPHERE CENTER 0.161621 0.415499 0.753281 RAD 0.00617284 + txt002 + SPHERE CENTER 0.164641 0.426642 0.786236 RAD 0.00617284 + txt002 + SPHERE CENTER 0.169293 0.405432 0.774481 RAD 0.00617284 + txt002 + SPHERE CENTER 0.187069 0.416412 0.787639 RAD 0.00617284 + txt002 + SPHERE CENTER 0.182032 0.429639 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.177682 0.45215 0.683315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.190087 0.449636 0.704516 RAD 0.00617284 + txt002 + SPHERE CENTER 0.200611 0.44299 0.683192 RAD 0.00617284 + txt002 + SPHERE CENTER 0.169628 0.432153 0.671279 RAD 0.00617284 + txt002 + SPHERE CENTER 0.192556 0.422992 0.671155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.173978 0.409641 0.680442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.159104 0.438799 0.692603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.163454 0.416288 0.701767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.171508 0.436286 0.713804 RAD 0.00617284 + txt002 + SPHERE CENTER 0.159431 0.367634 0.726118 RAD 0.0185185 + txt002 + SPHERE CENTER 0.13761 0.368692 0.737623 RAD 0.00617284 + txt002 + SPHERE CENTER 0.158434 0.366998 0.750781 RAD 0.00617284 + txt002 + SPHERE CENTER 0.153102 0.387887 0.738744 RAD 0.00617284 + txt002 + SPHERE CENTER 0.138607 0.369329 0.71296 RAD 0.00617284 + txt002 + SPHERE CENTER 0.154099 0.388523 0.714081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.160429 0.36827 0.701455 RAD 0.00617284 + txt002 + SPHERE CENTER 0.14394 0.34844 0.724997 RAD 0.00617284 + txt002 + SPHERE CENTER 0.165761 0.347381 0.713492 RAD 0.00617284 + txt002 + SPHERE CENTER 0.164764 0.346745 0.738155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.227999 0.384609 0.803476 RAD 0.0185185 + txt002 + SPHERE CENTER 0.237348 0.393812 0.824394 RAD 0.00617284 + txt002 + SPHERE CENTER 0.251829 0.390976 0.804597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.234368 0.408432 0.804721 RAD 0.00617284 + txt002 + SPHERE CENTER 0.213518 0.387445 0.823273 RAD 0.00617284 + txt002 + SPHERE CENTER 0.210538 0.402066 0.8036 RAD 0.00617284 + txt002 + SPHERE CENTER 0.204169 0.378242 0.802355 RAD 0.00617284 + txt002 + SPHERE CENTER 0.23098 0.369989 0.823149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.221631 0.360786 0.802231 RAD 0.00617284 + txt002 + SPHERE CENTER 0.245461 0.367152 0.803352 RAD 0.00617284 + txt002 + SPHERE CENTER 0.208034 0.325765 0.763155 RAD 0.0185185 + txt002 + SPHERE CENTER 0.209548 0.312342 0.783824 RAD 0.00617284 + txt002 + SPHERE CENTER 0.229235 0.324887 0.775781 RAD 0.00617284 + txt002 + SPHERE CENTER 0.209827 0.337 0.785069 RAD 0.00617284 + txt002 + SPHERE CENTER 0.188347 0.31322 0.771198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.188626 0.337878 0.772443 RAD 0.00617284 + txt002 + SPHERE CENTER 0.186834 0.326643 0.750529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.207755 0.301107 0.76191 RAD 0.00617284 + txt002 + SPHERE CENTER 0.206242 0.31453 0.741241 RAD 0.00617284 + txt002 + SPHERE CENTER 0.227442 0.313652 0.753867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.279238 0.345901 0.766553 RAD 0.0185185 + txt002 + SPHERE CENTER 0.302145 0.344931 0.775717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.297823 0.356827 0.754517 RAD 0.00617284 + txt002 + SPHERE CENTER 0.289691 0.366251 0.775841 RAD 0.00617284 + txt002 + SPHERE CENTER 0.28356 0.334005 0.787754 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271106 0.355325 0.787878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.260653 0.334975 0.77859 RAD 0.00617284 + txt002 + SPHERE CENTER 0.291692 0.324581 0.766429 RAD 0.00617284 + txt002 + SPHERE CENTER 0.268785 0.325551 0.757266 RAD 0.00617284 + txt002 + SPHERE CENTER 0.28737 0.336477 0.745229 RAD 0.00617284 + txt002 + SPHERE CENTER 0.115031 0.4293 0.544331 RAD 0.0555556 + txt002 + SPHERE CENTER 0.102505 0.502308 0.544331 RAD 0.0185185 + txt002 + SPHERE CENTER 0.110567 0.524146 0.536101 RAD 0.00617284 + txt002 + SPHERE CENTER 0.126738 0.506465 0.542066 RAD 0.00617284 + txt002 + SPHERE CENTER 0.112687 0.504055 0.521905 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0863343 0.519988 0.538366 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0884544 0.499897 0.524171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0782715 0.49815 0.546597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.100385 0.522399 0.558526 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0923218 0.500561 0.566757 RAD 0.00617284 + txt002 + SPHERE CENTER 0.116555 0.504718 0.564491 RAD 0.00617284 + txt002 + SPHERE CENTER 0.160392 0.474661 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.177777 0.492047 0.579103 RAD 0.00617284 + txt002 + SPHERE CENTER 0.176681 0.473492 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.159222 0.490951 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.161488 0.493217 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.142932 0.492121 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.144102 0.475831 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.178947 0.475757 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.161561 0.458371 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.177851 0.457202 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.160392 0.474661 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.167697 0.481967 0.484868 RAD 0.00617284 + txt002 + SPHERE CENTER 0.161561 0.458371 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.144102 0.475831 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.166528 0.498257 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.142932 0.492121 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.159222 0.490951 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.183987 0.480797 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.176681 0.473492 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.177851 0.457202 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0571437 0.456947 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0450372 0.477623 0.501329 RAD 0.00617284 + txt002 + SPHERE CENTER 0.055591 0.475469 0.523547 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0696413 0.47788 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0465898 0.4591 0.485076 RAD 0.00617284 + txt002 + SPHERE CENTER 0.071194 0.459357 0.487134 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0586963 0.438424 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0325396 0.45669 0.505236 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0446461 0.436013 0.511201 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0430934 0.454536 0.527454 RAD 0.00617284 + txt002 + SPHERE CENTER 0.115031 0.4293 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.10495 0.439381 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0911807 0.435691 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.10864 0.45315 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.128801 0.43299 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.13249 0.44676 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.138881 0.42291 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.111341 0.415531 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.121421 0.40545 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0975713 0.411841 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0696698 0.383939 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.052284 0.366554 0.509559 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0708393 0.36765 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0533799 0.385109 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0511144 0.382844 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0522103 0.401399 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0685002 0.400229 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0685739 0.365384 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0859596 0.38277 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0871292 0.36648 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0571437 0.456947 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0493251 0.475575 0.595564 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0725262 0.467381 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.06557 0.479825 0.577461 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0339426 0.465141 0.57931 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0501875 0.46939 0.561208 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0417612 0.446512 0.565115 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0408988 0.452697 0.599471 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0487174 0.434069 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0640999 0.444504 0.601529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0696698 0.383939 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0623642 0.376634 0.603794 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0859596 0.38277 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0685002 0.400229 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0460743 0.377803 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0522103 0.401399 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0533799 0.385109 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0635337 0.360344 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0708393 0.36765 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0871292 0.36648 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.115031 0.4293 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.125111 0.439381 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.138881 0.435691 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.121421 0.45315 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.101261 0.43299 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0975713 0.44676 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0911807 0.42291 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.11872 0.415531 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.10864 0.40545 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.13249 0.411841 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.082487 0.239622 0.655442 RAD 0.0555556 + txt002 + SPHERE CENTER 0.0438957 0.258053 0.715923 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0426858 0.273525 0.735128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.064638 0.265928 0.726759 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0510334 0.281546 0.713318 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0219434 0.26565 0.724292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.030291 0.273671 0.702483 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0231533 0.250178 0.705088 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0355481 0.250032 0.737733 RAD 0.00617284 + txt002 + SPHERE CENTER 0.036758 0.23456 0.718528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0575003 0.242434 0.729364 RAD 0.00617284 + txt002 + SPHERE CENTER 0.117687 0.252557 0.719322 RAD 0.0185185 + txt002 + SPHERE CENTER 0.135677 0.265544 0.730157 RAD 0.00617284 + txt002 + SPHERE CENTER 0.138361 0.25778 0.706872 RAD 0.00617284 + txt002 + SPHERE CENTER 0.12224 0.275732 0.71212 RAD 0.00617284 + txt002 + SPHERE CENTER 0.115003 0.26032 0.742607 RAD 0.00617284 + txt002 + SPHERE CENTER 0.101567 0.270508 0.72457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.097014 0.247334 0.731771 RAD 0.00617284 + txt002 + SPHERE CENTER 0.131123 0.242369 0.737359 RAD 0.00617284 + txt002 + SPHERE CENTER 0.113134 0.229382 0.726523 RAD 0.00617284 + txt002 + SPHERE CENTER 0.133808 0.234605 0.714074 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0863845 0.308551 0.682285 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0971427 0.330622 0.67968 RAD 0.00617284 + txt002 + SPHERE CENTER 0.109956 0.310023 0.675083 RAD 0.00617284 + txt002 + SPHERE CENTER 0.091905 0.317013 0.659755 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0735708 0.329151 0.686881 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0683331 0.315541 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0628126 0.30708 0.689486 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0916222 0.322161 0.702209 RAD 0.00617284 + txt002 + SPHERE CENTER 0.080864 0.30009 0.704814 RAD 0.00617284 + txt002 + SPHERE CENTER 0.104436 0.301561 0.697613 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00869528 0.245118 0.652044 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0110117 0.257416 0.660413 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00823377 0.253319 0.675329 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0102865 0.269325 0.656641 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0105502 0.249215 0.637128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.010748 0.261124 0.633356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00915679 0.236916 0.628759 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0126029 0.233209 0.655816 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00710408 0.22091 0.647447 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00664257 0.229111 0.670732 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0511841 0.295616 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0555846 0.315856 0.604965 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0705987 0.309941 0.623653 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0705297 0.296292 0.603077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.03617 0.301531 0.599717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0511152 0.281968 0.597829 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0317696 0.281291 0.613157 RAD 0.00617284 + txt002 + SPHERE CENTER 0.036239 0.31518 0.620293 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0318385 0.29494 0.633733 RAD 0.00617284 + txt002 + SPHERE CENTER 0.051253 0.309265 0.638981 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0472866 0.226687 0.591563 RAD 0.0185185 + txt002 + SPHERE CENTER 0.025169 0.224935 0.580727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0281502 0.217281 0.604012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0288111 0.241399 0.598764 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0443054 0.234341 0.568278 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0479475 0.250805 0.586315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.066423 0.236092 0.579113 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0436445 0.210223 0.573526 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0657621 0.211974 0.584361 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0466257 0.202569 0.596811 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0399982 0.189123 0.689081 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0335228 0.179527 0.71089 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0567332 0.187058 0.707118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0385291 0.203632 0.709006 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0167878 0.181593 0.692853 RAD 0.00617284 + txt002 + SPHERE CENTER 0.021794 0.205698 0.690969 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0232631 0.191189 0.671044 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0349919 0.165018 0.690965 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0414672 0.174615 0.669156 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0582023 0.172549 0.687193 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0785895 0.170692 0.6286 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0867911 0.147549 0.631205 RAD 0.00617284 + txt002 + SPHERE CENTER 0.101845 0.166573 0.635801 RAD 0.00617284 + txt002 + SPHERE CENTER 0.083121 0.161663 0.65113 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0635354 0.151669 0.624003 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0598652 0.165782 0.643928 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0553337 0.174812 0.621398 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0822597 0.156579 0.608675 RAD 0.00617284 + txt002 + SPHERE CENTER 0.074058 0.179722 0.60607 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0973138 0.175603 0.613272 RAD 0.00617284 + txt002 + SPHERE CENTER 0.11379 0.183628 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.133336 0.176775 0.705919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.136161 0.192663 0.687231 RAD 0.00617284 + txt002 + SPHERE CENTER 0.124499 0.199753 0.707807 RAD 0.00617284 + txt002 + SPHERE CENTER 0.110965 0.167739 0.711167 RAD 0.00617284 + txt002 + SPHERE CENTER 0.102127 0.190718 0.713055 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0914184 0.174592 0.697727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.122627 0.160649 0.690591 RAD 0.00617284 + txt002 + SPHERE CENTER 0.103081 0.167502 0.677151 RAD 0.00617284 + txt002 + SPHERE CENTER 0.125452 0.176537 0.671903 RAD 0.00617284 + txt002 + SPHERE CENTER 0.38777 0.230635 0.729516 RAD 0.0555556 + txt002 + SPHERE CENTER 0.446614 0.2506 0.769837 RAD 0.0185185 + txt002 + SPHERE CENTER 0.467193 0.264242 0.770086 RAD 0.00617284 + txt002 + SPHERE CENTER 0.459832 0.253384 0.749168 RAD 0.00617284 + txt002 + SPHERE CENTER 0.447086 0.272442 0.758332 RAD 0.00617284 + txt002 + SPHERE CENTER 0.453974 0.261459 0.790755 RAD 0.00617284 + txt002 + SPHERE CENTER 0.433868 0.269659 0.779001 RAD 0.00617284 + txt002 + SPHERE CENTER 0.433396 0.247817 0.790506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.46672 0.2424 0.781591 RAD 0.00617284 + txt002 + SPHERE CENTER 0.446141 0.228758 0.781342 RAD 0.00617284 + txt002 + SPHERE CENTER 0.459359 0.231541 0.760673 RAD 0.00617284 + txt002 + SPHERE CENTER 0.449775 0.253236 0.695877 RAD 0.0185185 + txt002 + SPHERE CENTER 0.459076 0.263032 0.675209 RAD 0.00617284 + txt002 + SPHERE CENTER 0.440021 0.247378 0.673964 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436804 0.270029 0.683251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.468829 0.26889 0.697123 RAD 0.00617284 + txt002 + SPHERE CENTER 0.446557 0.275887 0.705165 RAD 0.00617284 + txt002 + SPHERE CENTER 0.459528 0.259094 0.717791 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472047 0.246239 0.687835 RAD 0.00617284 + txt002 + SPHERE CENTER 0.462746 0.236443 0.708504 RAD 0.00617284 + txt002 + SPHERE CENTER 0.452992 0.230585 0.68659 RAD 0.00617284 + txt002 + SPHERE CENTER 0.407906 0.301839 0.732914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.420236 0.319874 0.72141 RAD 0.00617284 + txt002 + SPHERE CENTER 0.428474 0.296625 0.720288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.407886 0.303021 0.708251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399668 0.325088 0.734036 RAD 0.00617284 + txt002 + SPHERE CENTER 0.387318 0.308235 0.720878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.387338 0.307053 0.745541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.420256 0.318692 0.746073 RAD 0.00617284 + txt002 + SPHERE CENTER 0.407926 0.300656 0.757577 RAD 0.00617284 + txt002 + SPHERE CENTER 0.428494 0.295442 0.744951 RAD 0.00617284 + txt002 + SPHERE CENTER 0.384609 0.227999 0.803476 RAD 0.0185185 + txt002 + SPHERE CENTER 0.393812 0.237348 0.824394 RAD 0.00617284 + txt002 + SPHERE CENTER 0.408432 0.234368 0.804721 RAD 0.00617284 + txt002 + SPHERE CENTER 0.390976 0.251829 0.804597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.369989 0.23098 0.823149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367152 0.245461 0.803352 RAD 0.00617284 + txt002 + SPHERE CENTER 0.360786 0.221631 0.802231 RAD 0.00617284 + txt002 + SPHERE CENTER 0.387445 0.213518 0.823273 RAD 0.00617284 + txt002 + SPHERE CENTER 0.378242 0.204169 0.802355 RAD 0.00617284 + txt002 + SPHERE CENTER 0.402066 0.210538 0.8036 RAD 0.00617284 + txt002 + SPHERE CENTER 0.345901 0.279238 0.766553 RAD 0.0185185 + txt002 + SPHERE CENTER 0.344931 0.302145 0.775717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.366251 0.289691 0.775841 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356827 0.297823 0.754517 RAD 0.00617284 + txt002 + SPHERE CENTER 0.324581 0.291692 0.766429 RAD 0.00617284 + txt002 + SPHERE CENTER 0.336477 0.28737 0.745229 RAD 0.00617284 + txt002 + SPHERE CENTER 0.325551 0.268785 0.757266 RAD 0.00617284 + txt002 + SPHERE CENTER 0.334005 0.28356 0.787754 RAD 0.00617284 + txt002 + SPHERE CENTER 0.334975 0.260653 0.77859 RAD 0.00617284 + txt002 + SPHERE CENTER 0.355325 0.271106 0.787878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.325765 0.208034 0.763155 RAD 0.0185185 + txt002 + SPHERE CENTER 0.312342 0.209548 0.783824 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337 0.209827 0.785069 RAD 0.00617284 + txt002 + SPHERE CENTER 0.324887 0.229235 0.775781 RAD 0.00617284 + txt002 + SPHERE CENTER 0.301107 0.207755 0.76191 RAD 0.00617284 + txt002 + SPHERE CENTER 0.313652 0.227442 0.753867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31453 0.206242 0.741241 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31322 0.188347 0.771198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.326643 0.186834 0.750529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337878 0.188626 0.772443 RAD 0.00617284 + txt002 + SPHERE CENTER 0.426478 0.179397 0.766439 RAD 0.0185185 + txt002 + SPHERE CENTER 0.447688 0.174744 0.778193 RAD 0.00617284 + txt002 + SPHERE CENTER 0.447523 0.1895 0.758396 RAD 0.00617284 + txt002 + SPHERE CENTER 0.437457 0.197172 0.779597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.426642 0.164641 0.786236 RAD 0.00617284 + txt002 + SPHERE CENTER 0.416412 0.187069 0.787639 RAD 0.00617284 + txt002 + SPHERE CENTER 0.405432 0.169293 0.774481 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436708 0.156968 0.765035 RAD 0.00617284 + txt002 + SPHERE CENTER 0.415499 0.161621 0.753281 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436544 0.171724 0.745238 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367634 0.159431 0.726118 RAD 0.0185185 + txt002 + SPHERE CENTER 0.368692 0.13761 0.737623 RAD 0.00617284 + txt002 + SPHERE CENTER 0.387887 0.153102 0.738744 RAD 0.00617284 + txt002 + SPHERE CENTER 0.366998 0.158434 0.750781 RAD 0.00617284 + txt002 + SPHERE CENTER 0.34844 0.14394 0.724997 RAD 0.00617284 + txt002 + SPHERE CENTER 0.346745 0.164764 0.738155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.347381 0.165761 0.713492 RAD 0.00617284 + txt002 + SPHERE CENTER 0.369329 0.138607 0.71296 RAD 0.00617284 + txt002 + SPHERE CENTER 0.36827 0.160429 0.701455 RAD 0.00617284 + txt002 + SPHERE CENTER 0.388523 0.154099 0.714081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.429639 0.182032 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.45215 0.177682 0.683315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.44299 0.200611 0.683192 RAD 0.00617284 + txt002 + SPHERE CENTER 0.449636 0.190087 0.704516 RAD 0.00617284 + txt002 + SPHERE CENTER 0.438799 0.159104 0.692603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436286 0.171508 0.713804 RAD 0.00617284 + txt002 + SPHERE CENTER 0.416288 0.163454 0.701767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.432153 0.169628 0.671279 RAD 0.00617284 + txt002 + SPHERE CENTER 0.409641 0.173978 0.680442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.422992 0.192556 0.671155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.239622 0.082487 0.655442 RAD 0.0555556 + txt002 + SPHERE CENTER 0.258053 0.0438957 0.715923 RAD 0.0185185 + txt002 + SPHERE CENTER 0.273525 0.0426858 0.735128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.281546 0.0510334 0.713318 RAD 0.00617284 + txt002 + SPHERE CENTER 0.265928 0.064638 0.726759 RAD 0.00617284 + txt002 + SPHERE CENTER 0.250032 0.0355481 0.737733 RAD 0.00617284 + txt002 + SPHERE CENTER 0.242434 0.0575003 0.729364 RAD 0.00617284 + txt002 + SPHERE CENTER 0.23456 0.036758 0.718528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.26565 0.0219434 0.724292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.250178 0.0231533 0.705088 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273671 0.030291 0.702483 RAD 0.00617284 + txt002 + SPHERE CENTER 0.308551 0.0863845 0.682285 RAD 0.0185185 + txt002 + SPHERE CENTER 0.330622 0.0971427 0.67968 RAD 0.00617284 + txt002 + SPHERE CENTER 0.317013 0.091905 0.659755 RAD 0.00617284 + txt002 + SPHERE CENTER 0.310023 0.109956 0.675083 RAD 0.00617284 + txt002 + SPHERE CENTER 0.322161 0.0916222 0.702209 RAD 0.00617284 + txt002 + SPHERE CENTER 0.301561 0.104436 0.697613 RAD 0.00617284 + txt002 + SPHERE CENTER 0.30009 0.080864 0.704814 RAD 0.00617284 + txt002 + SPHERE CENTER 0.329151 0.0735708 0.686881 RAD 0.00617284 + txt002 + SPHERE CENTER 0.30708 0.0628126 0.689486 RAD 0.00617284 + txt002 + SPHERE CENTER 0.315541 0.0683331 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER 0.252557 0.117687 0.719322 RAD 0.0185185 + txt002 + SPHERE CENTER 0.265544 0.135677 0.730157 RAD 0.00617284 + txt002 + SPHERE CENTER 0.275732 0.12224 0.71212 RAD 0.00617284 + txt002 + SPHERE CENTER 0.25778 0.138361 0.706872 RAD 0.00617284 + txt002 + SPHERE CENTER 0.242369 0.131123 0.737359 RAD 0.00617284 + txt002 + SPHERE CENTER 0.234605 0.133808 0.714074 RAD 0.00617284 + txt002 + SPHERE CENTER 0.229382 0.113134 0.726523 RAD 0.00617284 + txt002 + SPHERE CENTER 0.26032 0.115003 0.742607 RAD 0.00617284 + txt002 + SPHERE CENTER 0.247334 0.097014 0.731771 RAD 0.00617284 + txt002 + SPHERE CENTER 0.270508 0.101567 0.72457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.189123 0.0399982 0.689081 RAD 0.0185185 + txt002 + SPHERE CENTER 0.179527 0.0335228 0.71089 RAD 0.00617284 + txt002 + SPHERE CENTER 0.203632 0.0385291 0.709006 RAD 0.00617284 + txt002 + SPHERE CENTER 0.187058 0.0567332 0.707118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.165018 0.0349919 0.690965 RAD 0.00617284 + txt002 + SPHERE CENTER 0.172549 0.0582023 0.687193 RAD 0.00617284 + txt002 + SPHERE CENTER 0.174615 0.0414672 0.669156 RAD 0.00617284 + txt002 + SPHERE CENTER 0.181593 0.0167878 0.692853 RAD 0.00617284 + txt002 + SPHERE CENTER 0.191189 0.0232631 0.671044 RAD 0.00617284 + txt002 + SPHERE CENTER 0.205698 0.021794 0.690969 RAD 0.00617284 + txt002 + SPHERE CENTER 0.183628 0.11379 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.176775 0.133336 0.705919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.199753 0.124499 0.707807 RAD 0.00617284 + txt002 + SPHERE CENTER 0.192663 0.136161 0.687231 RAD 0.00617284 + txt002 + SPHERE CENTER 0.160649 0.122627 0.690591 RAD 0.00617284 + txt002 + SPHERE CENTER 0.176537 0.125452 0.671903 RAD 0.00617284 + txt002 + SPHERE CENTER 0.167502 0.103081 0.677151 RAD 0.00617284 + txt002 + SPHERE CENTER 0.167739 0.110965 0.711167 RAD 0.00617284 + txt002 + SPHERE CENTER 0.174592 0.0914184 0.697727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.190718 0.102127 0.713055 RAD 0.00617284 + txt002 + SPHERE CENTER 0.170692 0.0785895 0.6286 RAD 0.0185185 + txt002 + SPHERE CENTER 0.147549 0.0867911 0.631205 RAD 0.00617284 + txt002 + SPHERE CENTER 0.161663 0.083121 0.65113 RAD 0.00617284 + txt002 + SPHERE CENTER 0.166573 0.101845 0.635801 RAD 0.00617284 + txt002 + SPHERE CENTER 0.156579 0.0822597 0.608675 RAD 0.00617284 + txt002 + SPHERE CENTER 0.175603 0.0973138 0.613272 RAD 0.00617284 + txt002 + SPHERE CENTER 0.179722 0.074058 0.60607 RAD 0.00617284 + txt002 + SPHERE CENTER 0.151669 0.0635354 0.624003 RAD 0.00617284 + txt002 + SPHERE CENTER 0.174812 0.0553337 0.621398 RAD 0.00617284 + txt002 + SPHERE CENTER 0.165782 0.0598652 0.643928 RAD 0.00617284 + txt002 + SPHERE CENTER 0.245118 0.00869528 0.652044 RAD 0.0185185 + txt002 + SPHERE CENTER 0.257416 -0.0110117 0.660413 RAD 0.00617284 + txt002 + SPHERE CENTER 0.269325 0.0102865 0.656641 RAD 0.00617284 + txt002 + SPHERE CENTER 0.253319 0.00823377 0.675329 RAD 0.00617284 + txt002 + SPHERE CENTER 0.233209 -0.0126029 0.655816 RAD 0.00617284 + txt002 + SPHERE CENTER 0.229111 0.00664257 0.670732 RAD 0.00617284 + txt002 + SPHERE CENTER 0.22091 0.00710408 0.647447 RAD 0.00617284 + txt002 + SPHERE CENTER 0.249215 -0.0105502 0.637128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236916 0.00915679 0.628759 RAD 0.00617284 + txt002 + SPHERE CENTER 0.261124 0.010748 0.633356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.226687 0.0472866 0.591563 RAD 0.0185185 + txt002 + SPHERE CENTER 0.224935 0.025169 0.580727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.241399 0.0288111 0.598764 RAD 0.00617284 + txt002 + SPHERE CENTER 0.217281 0.0281502 0.604012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.210223 0.0436445 0.573526 RAD 0.00617284 + txt002 + SPHERE CENTER 0.202569 0.0466257 0.596811 RAD 0.00617284 + txt002 + SPHERE CENTER 0.211974 0.0657621 0.584361 RAD 0.00617284 + txt002 + SPHERE CENTER 0.234341 0.0443054 0.568278 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236092 0.066423 0.579113 RAD 0.00617284 + txt002 + SPHERE CENTER 0.250805 0.0479475 0.586315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.295616 0.0511841 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.315856 0.0555846 0.604965 RAD 0.00617284 + txt002 + SPHERE CENTER 0.296292 0.0705297 0.603077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.309941 0.0705987 0.623653 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31518 0.036239 0.620293 RAD 0.00617284 + txt002 + SPHERE CENTER 0.309265 0.051253 0.638981 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29494 0.0318385 0.633733 RAD 0.00617284 + txt002 + SPHERE CENTER 0.301531 0.03617 0.599717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.281291 0.0317696 0.613157 RAD 0.00617284 + txt002 + SPHERE CENTER 0.281968 0.0511152 0.597829 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4293 0.115031 0.544331 RAD 0.0555556 + txt002 + SPHERE CENTER 0.502308 0.102505 0.544331 RAD 0.0185185 + txt002 + SPHERE CENTER 0.524146 0.110567 0.536101 RAD 0.00617284 + txt002 + SPHERE CENTER 0.504055 0.112687 0.521905 RAD 0.00617284 + txt002 + SPHERE CENTER 0.506465 0.126738 0.542066 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522399 0.100385 0.558526 RAD 0.00617284 + txt002 + SPHERE CENTER 0.504718 0.116555 0.564491 RAD 0.00617284 + txt002 + SPHERE CENTER 0.500561 0.0923218 0.566757 RAD 0.00617284 + txt002 + SPHERE CENTER 0.519988 0.0863343 0.538366 RAD 0.00617284 + txt002 + SPHERE CENTER 0.49815 0.0782715 0.546597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.499897 0.0884544 0.524171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.474661 0.160392 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.481967 0.167697 0.484868 RAD 0.00617284 + txt002 + SPHERE CENTER 0.475831 0.144102 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.458371 0.161561 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.480797 0.183987 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.457202 0.177851 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.473492 0.176681 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.498257 0.166528 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490951 0.159222 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.492121 0.142932 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.474661 0.160392 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.492047 0.177777 0.579103 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490951 0.159222 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.473492 0.176681 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.475757 0.178947 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.457202 0.177851 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.458371 0.161561 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.493217 0.161488 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.475831 0.144102 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.492121 0.142932 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.456947 0.0571437 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.475575 0.0493251 0.595564 RAD 0.00617284 + txt002 + SPHERE CENTER 0.479825 0.06557 0.577461 RAD 0.00617284 + txt002 + SPHERE CENTER 0.467381 0.0725262 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.452697 0.0408988 0.599471 RAD 0.00617284 + txt002 + SPHERE CENTER 0.444504 0.0640999 0.601529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.434069 0.0487174 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.465141 0.0339426 0.57931 RAD 0.00617284 + txt002 + SPHERE CENTER 0.446512 0.0417612 0.565115 RAD 0.00617284 + txt002 + SPHERE CENTER 0.46939 0.0501875 0.561208 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4293 0.115031 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.439381 0.125111 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.45315 0.121421 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.435691 0.138881 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.415531 0.11872 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.411841 0.13249 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40545 0.10864 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.43299 0.101261 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.42291 0.0911807 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.44676 0.0975713 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.383939 0.0696698 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.376634 0.0623642 0.603794 RAD 0.00617284 + txt002 + SPHERE CENTER 0.400229 0.0685002 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.38277 0.0859596 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.360344 0.0635337 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.36648 0.0871292 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.36765 0.0708393 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.377803 0.0460743 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.385109 0.0533799 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.401399 0.0522103 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.456947 0.0571437 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.477623 0.0450372 0.501329 RAD 0.00617284 + txt002 + SPHERE CENTER 0.47788 0.0696413 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.475469 0.055591 0.523547 RAD 0.00617284 + txt002 + SPHERE CENTER 0.45669 0.0325396 0.505236 RAD 0.00617284 + txt002 + SPHERE CENTER 0.454536 0.0430934 0.527454 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436013 0.0446461 0.511201 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4591 0.0465898 0.485076 RAD 0.00617284 + txt002 + SPHERE CENTER 0.438424 0.0586963 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.459357 0.071194 0.487134 RAD 0.00617284 + txt002 + SPHERE CENTER 0.383939 0.0696698 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.366554 0.052284 0.509559 RAD 0.00617284 + txt002 + SPHERE CENTER 0.385109 0.0533799 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.36765 0.0708393 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.365384 0.0685739 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.36648 0.0871292 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.38277 0.0859596 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.382844 0.0511144 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.400229 0.0685002 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.401399 0.0522103 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4293 0.115031 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.41922 0.125111 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40545 0.121421 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.42291 0.138881 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.44307 0.11872 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.44676 0.13249 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.45315 0.10864 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.425611 0.101261 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.435691 0.0911807 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.411841 0.0975713 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.643951 0.172546 1.11022e-16 RAD 0.166667 + txt002 + SPHERE CENTER 0.802608 0.281471 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.824035 0.30566 -0.177765 RAD 0.0185185 + txt002 + SPHERE CENTER 0.822021 0.302088 -0.202114 RAD 0.00617284 + txt002 + SPHERE CENTER 0.821938 0.282758 -0.186751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.802598 0.298094 -0.187402 RAD 0.00617284 + txt002 + SPHERE CENTER 0.824119 0.32499 -0.193128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.804695 0.320997 -0.178416 RAD 0.00617284 + txt002 + SPHERE CENTER 0.826132 0.328563 -0.16878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.843459 0.309654 -0.192477 RAD 0.00617284 + txt002 + SPHERE CENTER 0.845472 0.313227 -0.168128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.843375 0.290324 -0.177114 RAD 0.00617284 + txt002 + SPHERE CENTER 0.787796 0.241352 -0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER 0.785699 0.218449 -0.180578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.802677 0.22345 -0.163362 RAD 0.00617284 + txt002 + SPHERE CENTER 0.778718 0.223304 -0.157397 RAD 0.00617284 + txt002 + SPHERE CENTER 0.770818 0.236351 -0.188808 RAD 0.00617284 + txt002 + SPHERE CENTER 0.763837 0.241205 -0.165627 RAD 0.00617284 + txt002 + SPHERE CENTER 0.772915 0.259253 -0.179823 RAD 0.00617284 + txt002 + SPHERE CENTER 0.794777 0.236497 -0.194773 RAD 0.00617284 + txt002 + SPHERE CENTER 0.796874 0.2594 -0.185788 RAD 0.00617284 + txt002 + SPHERE CENTER 0.811756 0.241498 -0.177557 RAD 0.00617284 + txt002 + SPHERE CENTER 0.752156 0.305221 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.741263 0.325175 -0.169507 RAD 0.00617284 + txt002 + SPHERE CENTER 0.747715 0.32493 -0.145675 RAD 0.00617284 + txt002 + SPHERE CENTER 0.765112 0.325981 -0.163165 RAD 0.00617284 + txt002 + SPHERE CENTER 0.745704 0.305466 -0.183703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.769553 0.306272 -0.17736 RAD 0.00617284 + txt002 + SPHERE CENTER 0.756597 0.285513 -0.174066 RAD 0.00617284 + txt002 + SPHERE CENTER 0.728307 0.304415 -0.166213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.7392 0.284462 -0.156576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.734759 0.304171 -0.142381 RAD 0.00617284 + txt002 + SPHERE CENTER 0.838847 0.34578 -0.117284 RAD 0.0185185 + txt002 + SPHERE CENTER 0.851488 0.360404 -0.132647 RAD 0.00617284 + txt002 + SPHERE CENTER 0.853509 0.335865 -0.1345 RAD 0.00617284 + txt002 + SPHERE CENTER 0.832518 0.347059 -0.141116 RAD 0.00617284 + txt002 + SPHERE CENTER 0.836826 0.370319 -0.115431 RAD 0.00617284 + txt002 + SPHERE CENTER 0.817857 0.356973 -0.1239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.824185 0.355695 -0.100068 RAD 0.00617284 + txt002 + SPHERE CENTER 0.857816 0.359125 -0.108814 RAD 0.00617284 + txt002 + SPHERE CENTER 0.845176 0.344501 -0.0934517 RAD 0.00617284 + txt002 + SPHERE CENTER 0.859838 0.334587 -0.110668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.766968 0.345341 -0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.768944 0.369945 -0.10004 RAD 0.00617284 + txt002 + SPHERE CENTER 0.788341 0.356172 -0.093424 RAD 0.00617284 + txt002 + SPHERE CENTER 0.780624 0.356171 -0.116879 RAD 0.00617284 + txt002 + SPHERE CENTER 0.747572 0.359113 -0.106005 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759252 0.34534 -0.122844 RAD 0.00617284 + txt002 + SPHERE CENTER 0.745596 0.33451 -0.105354 RAD 0.00617284 + txt002 + SPHERE CENTER 0.755289 0.359115 -0.0825505 RAD 0.00617284 + txt002 + SPHERE CENTER 0.753313 0.334511 -0.0818993 RAD 0.00617284 + txt002 + SPHERE CENTER 0.774685 0.345342 -0.0759343 RAD 0.00617284 + txt002 + SPHERE CENTER 0.817421 0.321591 -0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER 0.83071 0.340361 -0.0416443 RAD 0.00617284 + txt002 + SPHERE CENTER 0.840365 0.325527 -0.0588603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.822249 0.341208 -0.0648253 RAD 0.00617284 + txt002 + SPHERE CENTER 0.807766 0.336425 -0.0334138 RAD 0.00617284 + txt002 + SPHERE CENTER 0.799305 0.337272 -0.0565949 RAD 0.00617284 + txt002 + SPHERE CENTER 0.794477 0.317654 -0.0423994 RAD 0.00617284 + txt002 + SPHERE CENTER 0.825882 0.320744 -0.0274488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.812593 0.301973 -0.0364345 RAD 0.00617284 + txt002 + SPHERE CENTER 0.835537 0.30591 -0.0446649 RAD 0.00617284 + txt002 + SPHERE CENTER 0.874487 0.28191 -0.129006 RAD 0.0185185 + txt002 + SPHERE CENTER 0.891539 0.292033 -0.143718 RAD 0.00617284 + txt002 + SPHERE CENTER 0.868678 0.28812 -0.152187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.872763 0.305711 -0.135349 RAD 0.00617284 + txt002 + SPHERE CENTER 0.897348 0.285824 -0.120537 RAD 0.00617284 + txt002 + SPHERE CENTER 0.878572 0.299501 -0.112168 RAD 0.00617284 + txt002 + SPHERE CENTER 0.880296 0.275701 -0.105825 RAD 0.00617284 + txt002 + SPHERE CENTER 0.893263 0.268233 -0.137375 RAD 0.00617284 + txt002 + SPHERE CENTER 0.876212 0.25811 -0.122663 RAD 0.00617284 + txt002 + SPHERE CENTER 0.870402 0.264319 -0.145845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.853061 0.257721 -0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.87538 0.26204 -0.0527151 RAD 0.00617284 + txt002 + SPHERE CENTER 0.87108 0.266856 -0.0765474 RAD 0.00617284 + txt002 + SPHERE CENTER 0.860805 0.280934 -0.0590577 RAD 0.00617284 + txt002 + SPHERE CENTER 0.857361 0.252905 -0.0385197 RAD 0.00617284 + txt002 + SPHERE CENTER 0.842785 0.271799 -0.0448623 RAD 0.00617284 + txt002 + SPHERE CENTER 0.835041 0.248586 -0.0481565 RAD 0.00617284 + txt002 + SPHERE CENTER 0.867636 0.238827 -0.0560094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.845317 0.234508 -0.0656463 RAD 0.00617284 + txt002 + SPHERE CENTER 0.863337 0.243643 -0.0798417 RAD 0.00617284 + txt002 + SPHERE CENTER 0.838248 0.217602 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.860225 0.206363 -0.122182 RAD 0.00617284 + txt002 + SPHERE CENTER 0.858689 0.230102 -0.128798 RAD 0.00617284 + txt002 + SPHERE CENTER 0.854636 0.223536 -0.105343 RAD 0.00617284 + txt002 + SPHERE CENTER 0.839784 0.193863 -0.116217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.834196 0.211035 -0.0993785 RAD 0.00617284 + txt002 + SPHERE CENTER 0.817808 0.205101 -0.116868 RAD 0.00617284 + txt002 + SPHERE CENTER 0.843837 0.200429 -0.139672 RAD 0.00617284 + txt002 + SPHERE CENTER 0.821861 0.211667 -0.140323 RAD 0.00617284 + txt002 + SPHERE CENTER 0.842301 0.224168 -0.146288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.643951 0.172546 -0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER 0.61371 0.202787 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.61556 0.221097 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.621702 0.225035 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.635958 0.210779 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.607567 0.198849 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627965 0.188531 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.605717 0.180539 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.593312 0.213105 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.591462 0.194794 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.599454 0.217042 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.5724 0.191718 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.556122 0.208861 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.575596 0.203643 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.578791 0.215568 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.552927 0.196936 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.575596 0.203643 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.569205 0.179793 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.549732 0.185011 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.56601 0.167868 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.569205 0.179793 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.624779 0.244096 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.631486 0.266765 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.648629 0.250487 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.636704 0.247291 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.607636 0.260374 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.612854 0.240901 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.600929 0.237705 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.619561 0.26357 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.612854 0.240901 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.636704 0.247291 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.68526 0.183615 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.684921 0.190903 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665787 0.178397 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669989 0.201661 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.704395 0.196121 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.689462 0.206879 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.704733 0.188833 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.700193 0.172858 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.700531 0.165569 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.681058 0.160351 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.696329 0.224924 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.710584 0.23918 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.705059 0.216195 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.687599 0.233654 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.701855 0.24791 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.678869 0.242384 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.687599 0.233654 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.719314 0.23045 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.705059 0.216195 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.713788 0.207465 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.715501 0.153374 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.738169 0.160081 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.718696 0.165299 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.721891 0.177224 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.734974 0.148156 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.718696 0.165299 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.712305 0.141449 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.731779 0.136231 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.70911 0.129524 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.712305 0.141449 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.632882 0.131237 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.634145 0.108412 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.650927 0.115965 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627664 0.111763 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616099 0.123683 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.609618 0.127034 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.614836 0.146508 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.639363 0.127886 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.6381 0.15071 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.656145 0.135439 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.663122 0.100996 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.680265 0.0847178 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.686972 0.107387 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.675047 0.104191 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.656415 0.0783272 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.651197 0.0978007 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.639272 0.0946054 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.66834 0.0815225 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.651197 0.0978007 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.675047 0.104191 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.591572 0.120168 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.577317 0.105912 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.600302 0.111438 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.582843 0.128897 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.568587 0.114642 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.574113 0.137627 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.582843 0.128897 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.586046 0.0971825 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.600302 0.111438 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.609032 0.102708 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.594141 0.358439 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.619127 0.408291 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.625955 0.411883 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.630791 0.390369 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.607547 0.396287 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.61429 0.429805 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.595882 0.414208 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.607462 0.426212 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.637535 0.423887 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.630706 0.420295 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.642371 0.402373 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665691 0.37761 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.68332 0.389713 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665691 0.37761 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.660156 0.398265 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.68332 0.389713 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.660156 0.398265 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665691 0.37761 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.688854 0.369058 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671225 0.356956 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671225 0.356956 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.638217 0.337042 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.652948 0.344865 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.632683 0.357697 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.651954 0.357326 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.658482 0.324211 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.657489 0.336672 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.643752 0.316388 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.639211 0.324581 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.624481 0.316758 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.618946 0.337413 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.547576 0.389119 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.541008 0.410169 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.548718 0.410472 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.564748 0.405866 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539866 0.388816 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.563607 0.384513 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.546435 0.367766 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.523836 0.393422 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.530405 0.372372 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.531546 0.393725 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.566667 0.317871 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.555534 0.296626 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.572202 0.297216 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.550163 0.307914 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.549999 0.31728 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.544629 0.328569 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.561133 0.338525 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.572037 0.306582 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.583171 0.327827 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.588706 0.307172 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522591 0.339267 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.501272 0.340934 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522591 0.339267 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.517056 0.359921 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.501272 0.340934 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.517056 0.359921 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522591 0.339267 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.506807 0.320279 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.528125 0.318612 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.528125 0.318612 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.57505 0.429687 -0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER 0.58161 0.452905 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.5989 0.436077 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.586467 0.434777 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.55776 0.446515 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.562617 0.428387 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.5512 0.423296 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.570193 0.447815 -0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER 0.563633 0.424596 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.587483 0.430987 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.550064 0.379835 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.547099 0.396248 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.569716 0.388263 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.557504 0.403175 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.527447 0.387819 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.537852 0.394747 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.530412 0.371406 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539659 0.372907 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.542624 0.356494 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.562276 0.364922 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.621614 0.399007 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.637209 0.41723 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.642848 0.401533 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.624734 0.418027 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.615976 0.414703 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.603501 0.4155 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.600381 0.39648 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.634089 0.39821 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.618494 0.379986 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.639728 0.382513 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.802608 0.281471 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.858698 0.329459 0.104938 RAD 0.0185185 + txt002 + SPHERE CENTER 0.872345 0.34259 0.0890951 RAD 0.00617284 + txt002 + SPHERE CENTER 0.86421 0.32016 0.0827387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.848329 0.338969 0.0846485 RAD 0.00617284 + txt002 + SPHERE CENTER 0.866833 0.351888 0.111295 RAD 0.00617284 + txt002 + SPHERE CENTER 0.842817 0.348268 0.106848 RAD 0.00617284 + txt002 + SPHERE CENTER 0.853186 0.338757 0.127138 RAD 0.00617284 + txt002 + SPHERE CENTER 0.882715 0.333079 0.109385 RAD 0.00617284 + txt002 + SPHERE CENTER 0.869068 0.319948 0.125228 RAD 0.00617284 + txt002 + SPHERE CENTER 0.87458 0.310649 0.103028 RAD 0.00617284 + txt002 + SPHERE CENTER 0.845371 0.280879 0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER 0.849036 0.291048 0.0284303 RAD 0.00617284 + txt002 + SPHERE CENTER 0.826067 0.287867 0.0369125 RAD 0.00617284 + txt002 + SPHERE CENTER 0.840755 0.304882 0.0471312 RAD 0.00617284 + txt002 + SPHERE CENTER 0.868341 0.28406 0.0421477 RAD 0.00617284 + txt002 + SPHERE CENTER 0.86006 0.297894 0.0608487 RAD 0.00617284 + txt002 + SPHERE CENTER 0.864676 0.273891 0.0643473 RAD 0.00617284 + txt002 + SPHERE CENTER 0.853652 0.267046 0.0319289 RAD 0.00617284 + txt002 + SPHERE CENTER 0.849987 0.256877 0.0541285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.830683 0.263865 0.0404111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.798572 0.337088 0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.808673 0.346884 0.0420622 RAD 0.00617284 + txt002 + SPHERE CENTER 0.82298 0.335792 0.0588533 RAD 0.00617284 + txt002 + SPHERE CENTER 0.807762 0.322361 0.044793 RAD 0.00617284 + txt002 + SPHERE CENTER 0.784265 0.34818 0.0455609 RAD 0.00617284 + txt002 + SPHERE CENTER 0.783355 0.323657 0.0482916 RAD 0.00617284 + txt002 + SPHERE CENTER 0.774164 0.338384 0.0658506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.799483 0.361611 0.0596212 RAD 0.00617284 + txt002 + SPHERE CENTER 0.789382 0.351815 0.079911 RAD 0.00617284 + txt002 + SPHERE CENTER 0.81379 0.350519 0.0764123 RAD 0.00617284 + txt002 + SPHERE CENTER 0.815936 0.330051 0.165419 RAD 0.0185185 + txt002 + SPHERE CENTER 0.828769 0.350165 0.171776 RAD 0.00617284 + txt002 + SPHERE CENTER 0.838905 0.333232 0.156937 RAD 0.00617284 + txt002 + SPHERE CENTER 0.820583 0.347547 0.148628 RAD 0.00617284 + txt002 + SPHERE CENTER 0.805799 0.346984 0.180258 RAD 0.00617284 + txt002 + SPHERE CENTER 0.797614 0.344366 0.157111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.792966 0.32687 0.173902 RAD 0.00617284 + txt002 + SPHERE CENTER 0.824121 0.332668 0.188567 RAD 0.00617284 + txt002 + SPHERE CENTER 0.811288 0.312554 0.182211 RAD 0.00617284 + txt002 + SPHERE CENTER 0.834258 0.315735 0.173728 RAD 0.00617284 + txt002 + SPHERE CENTER 0.75581 0.33768 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.753851 0.362219 0.124743 RAD 0.00617284 + txt002 + SPHERE CENTER 0.774086 0.350765 0.133052 RAD 0.00617284 + txt002 + SPHERE CENTER 0.76987 0.352319 0.108773 RAD 0.00617284 + txt002 + SPHERE CENTER 0.735575 0.349134 0.114524 RAD 0.00617284 + txt002 + SPHERE CENTER 0.751594 0.339233 0.0985541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.737534 0.324595 0.112614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.739791 0.347581 0.138803 RAD 0.00617284 + txt002 + SPHERE CENTER 0.74175 0.323042 0.136894 RAD 0.00617284 + txt002 + SPHERE CENTER 0.760026 0.336127 0.147112 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759846 0.282063 0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER 0.756464 0.29233 0.193792 RAD 0.00617284 + txt002 + SPHERE CENTER 0.779336 0.288514 0.18531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.765125 0.305929 0.175091 RAD 0.00617284 + txt002 + SPHERE CENTER 0.736973 0.285879 0.180075 RAD 0.00617284 + txt002 + SPHERE CENTER 0.745634 0.299478 0.161374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.740355 0.275612 0.157875 RAD 0.00617284 + txt002 + SPHERE CENTER 0.751185 0.268464 0.190293 RAD 0.00617284 + txt002 + SPHERE CENTER 0.754567 0.258198 0.168094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.774058 0.264649 0.181811 RAD 0.00617284 + txt002 + SPHERE CENTER 0.862735 0.273842 0.153697 RAD 0.0185185 + txt002 + SPHERE CENTER 0.885497 0.282313 0.158144 RAD 0.00617284 + txt002 + SPHERE CENTER 0.876946 0.281455 0.134996 RAD 0.00617284 + txt002 + SPHERE CENTER 0.867718 0.29787 0.150967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.871286 0.274699 0.176845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.853506 0.290257 0.169668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.848523 0.266228 0.172398 RAD 0.00617284 + txt002 + SPHERE CENTER 0.880514 0.258284 0.160875 RAD 0.00617284 + txt002 + SPHERE CENTER 0.857752 0.249813 0.156428 RAD 0.00617284 + txt002 + SPHERE CENTER 0.871963 0.257427 0.137727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.806645 0.225855 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.818054 0.21762 0.18016 RAD 0.00617284 + txt002 + SPHERE CENTER 0.83061 0.230661 0.163369 RAD 0.00617284 + txt002 + SPHERE CENTER 0.813612 0.241754 0.177429 RAD 0.00617284 + txt002 + SPHERE CENTER 0.794089 0.212813 0.176661 RAD 0.00617284 + txt002 + SPHERE CENTER 0.789647 0.236948 0.173931 RAD 0.00617284 + txt002 + SPHERE CENTER 0.78268 0.221048 0.156372 RAD 0.00617284 + txt002 + SPHERE CENTER 0.811087 0.20172 0.162601 RAD 0.00617284 + txt002 + SPHERE CENTER 0.799677 0.209955 0.142311 RAD 0.00617284 + txt002 + SPHERE CENTER 0.823642 0.214761 0.14581 RAD 0.00617284 + txt002 + SPHERE CENTER 0.849407 0.225263 0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.873186 0.21889 0.0974792 RAD 0.00617284 + txt002 + SPHERE CENTER 0.865588 0.240865 0.0891702 RAD 0.00617284 + txt002 + SPHERE CENTER 0.866351 0.236437 0.113449 RAD 0.00617284 + txt002 + SPHERE CENTER 0.857005 0.203288 0.107698 RAD 0.00617284 + txt002 + SPHERE CENTER 0.850171 0.220835 0.123668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.833227 0.20966 0.109608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.856242 0.207715 0.0834188 RAD 0.00617284 + txt002 + SPHERE CENTER 0.832464 0.214088 0.0853287 RAD 0.00617284 + txt002 + SPHERE CENTER 0.848644 0.22969 0.0751099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.594141 0.358439 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.613592 0.428945 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.626191 0.448155 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.634643 0.42519 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.614455 0.43276 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.60514 0.45191 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.593404 0.436515 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.592541 0.4327 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.625328 0.44434 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.612729 0.42513 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.63378 0.421375 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665691 0.37761 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.68332 0.389713 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665691 0.37761 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.660156 0.398265 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.68332 0.389713 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.660156 0.398265 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665691 0.37761 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.688854 0.369058 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671225 0.356956 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671225 0.356956 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.621614 0.399007 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.625435 0.399844 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627149 0.378352 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.60511 0.38905 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.619901 0.420499 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.599576 0.409705 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.61608 0.419661 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.641939 0.409801 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.638118 0.408963 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.643653 0.388308 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.542042 0.409774 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.53788 0.433888 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.558395 0.423551 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.55574 0.426423 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.521526 0.42011 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539387 0.412646 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.525689 0.395996 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.524182 0.417238 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.528344 0.393124 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.544697 0.406901 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.550064 0.379835 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.540802 0.399304 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.54453 0.400489 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.563801 0.400119 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.546337 0.37865 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.569335 0.379464 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555599 0.35918 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.527065 0.37902 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.536327 0.359551 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.530793 0.380205 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522591 0.339267 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.501272 0.340934 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522591 0.339267 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.517056 0.359921 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.501272 0.340934 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.517056 0.359921 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522591 0.339267 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.506807 0.320279 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.528125 0.318612 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.528125 0.318612 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.586119 0.388377 0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.594185 0.405974 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.609969 0.394768 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.593017 0.410332 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.570335 0.399584 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.569167 0.403942 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.562269 0.381987 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.587286 0.384019 0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.57922 0.366422 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.60307 0.372813 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.566667 0.317871 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.567308 0.314012 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.587901 0.320398 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.569787 0.336891 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.546074 0.311485 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.548554 0.334364 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.545434 0.315344 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.564188 0.294991 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.563547 0.29885 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.584781 0.301377 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.638217 0.337042 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.659244 0.341809 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.65787 0.345471 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.645657 0.360383 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.639592 0.33338 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.626005 0.351955 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.618565 0.328614 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.651804 0.318468 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.630777 0.313702 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.65043 0.32213 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.643951 0.172546 0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER 0.674191 0.202787 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.690652 0.219248 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.695267 0.206403 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.677807 0.223862 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669577 0.215632 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.656732 0.220246 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.653116 0.199171 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.687036 0.198172 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.670575 0.181711 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.691651 0.185327 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.715501 0.191718 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.733129 0.203821 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.715501 0.191718 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.709966 0.212373 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.733129 0.203821 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.709966 0.212373 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.715501 0.191718 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.738664 0.183166 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.721035 0.171063 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.721035 0.171063 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.663122 0.244096 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.675225 0.261725 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.683777 0.238562 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.663122 0.244096 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.65457 0.267259 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.642468 0.249631 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.642468 0.249631 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.675225 0.261725 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.663122 0.244096 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.683777 0.238562 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.602641 0.183615 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.600215 0.197046 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.622701 0.191021 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.609032 0.207465 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.580155 0.18964 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.588972 0.200059 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.582581 0.176209 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.593824 0.173196 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.596251 0.159765 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.61631 0.167171 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.591572 0.224924 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.587397 0.24926 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.606693 0.240045 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.606693 0.240045 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.572277 0.23414 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.591572 0.224924 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.576452 0.209804 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.572277 0.23414 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.576452 0.209804 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.591572 0.224924 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.5724 0.153374 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.551082 0.155041 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.5724 0.153374 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.566866 0.174029 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.551082 0.155041 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.566866 0.174029 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.5724 0.153374 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.556617 0.134387 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.577935 0.13272 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.577935 0.13272 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.655019 0.131237 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.668451 0.12881 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.678869 0.137627 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.662426 0.151296 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.644601 0.12242 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.638576 0.144906 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.631169 0.124846 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.661044 0.108751 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.647613 0.111177 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671463 0.117567 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.624779 0.100996 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.626446 0.0796777 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.645433 0.0954616 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.624779 0.100996 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.605791 0.0852121 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.604124 0.10653 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.604124 0.10653 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.626446 0.0796777 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.624779 0.100996 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.645433 0.0954616 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.696329 0.120168 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.720665 0.115992 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.711449 0.135288 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.711449 0.135288 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.705544 0.100872 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.696329 0.120168 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.681209 0.105047 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.705544 0.100872 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.681209 0.105047 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.696329 0.120168 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.852418 0.0955788 1.89979e-16 RAD 0.0555556 + txt002 + SPHERE CENTER 0.922609 0.11107 -0.0178949 RAD 0.0185185 + txt002 + SPHERE CENTER 0.937225 0.122151 -0.0344251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.916553 0.11086 -0.0418311 RAD 0.00617284 + txt002 + SPHERE CENTER 0.915202 0.131874 -0.0289382 RAD 0.00617284 + txt002 + SPHERE CENTER 0.943281 0.12236 -0.0104889 RAD 0.00617284 + txt002 + SPHERE CENTER 0.921258 0.132084 -0.00500196 RAD 0.00617284 + txt002 + SPHERE CENTER 0.928665 0.111279 0.00604126 RAD 0.00617284 + txt002 + SPHERE CENTER 0.944632 0.101346 -0.0233819 RAD 0.00617284 + txt002 + SPHERE CENTER 0.930016 0.0902645 -0.00685171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.92396 0.090055 -0.0307879 RAD 0.00617284 + txt002 + SPHERE CENTER 0.867231 0.135698 -0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER 0.873196 0.134634 -0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER 0.882112 0.117797 -0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.858152 0.11765 -0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.858315 0.152536 -0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.843271 0.135552 -0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.852349 0.1536 -0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER 0.882275 0.152682 -0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.876309 0.153747 -0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER 0.89119 0.135845 -0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER 0.877966 0.164775 0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER 0.890926 0.182656 -0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER 0.897331 0.159019 -0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER 0.876622 0.167676 -0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER 0.871561 0.188412 0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER 0.857256 0.173431 -0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.8586 0.17053 0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.89227 0.179755 0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER 0.87931 0.161874 0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.898675 0.156118 0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.907797 0.0709499 0.0425863 RAD 0.0185185 + txt002 + SPHERE CENTER 0.930963 0.0752104 0.0499923 RAD 0.00617284 + txt002 + SPHERE CENTER 0.924191 0.0806562 0.0268805 RAD 0.00617284 + txt002 + SPHERE CENTER 0.915684 0.0941344 0.0457385 RAD 0.00617284 + txt002 + SPHERE CENTER 0.914568 0.0655041 0.065698 RAD 0.00617284 + txt002 + SPHERE CENTER 0.899289 0.0844281 0.0614442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.891402 0.0612436 0.058292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.923076 0.0520258 0.0468401 RAD 0.00617284 + txt002 + SPHERE CENTER 0.89991 0.0477654 0.0394341 RAD 0.00617284 + txt002 + SPHERE CENTER 0.916304 0.0574717 0.0237283 RAD 0.00617284 + txt002 + SPHERE CENTER 0.863153 0.124655 0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER 0.875744 0.141535 0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER 0.88655 0.129819 0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.868763 0.146389 0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER 0.852347 0.136371 0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.845366 0.141225 0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER 0.839756 0.119492 0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER 0.870135 0.119801 0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER 0.857544 0.102922 0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER 0.880941 0.108085 0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER 0.837606 0.0554592 0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER 0.842832 0.0523913 0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER 0.86055 0.0593957 0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.842434 0.0750766 0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.819888 0.0484547 0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.81949 0.07114 0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.814662 0.0515226 0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER 0.838004 0.0327739 0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.832778 0.0358417 0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER 0.855722 0.0397783 0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER 0.897062 0.0418734 -0.0246914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.920407 0.0359958 -0.0301783 RAD 0.00617284 + txt002 + SPHERE CENTER 0.912106 0.0588574 -0.0344321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.915603 0.0511067 -0.0112511 RAD 0.00617284 + txt002 + SPHERE CENTER 0.905363 0.0190117 -0.0204376 RAD 0.00617284 + txt002 + SPHERE CENTER 0.900559 0.0341227 -0.00151032 RAD 0.00617284 + txt002 + SPHERE CENTER 0.882018 0.0248894 -0.0149506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.901866 0.0267625 -0.0436186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.878521 0.0326401 -0.0381316 RAD 0.00617284 + txt002 + SPHERE CENTER 0.893565 0.0496241 -0.0478724 RAD 0.00617284 + txt002 + SPHERE CENTER 0.826871 0.0263827 -0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER 0.825102 0.00436945 0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER 0.84533 0.018173 0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER 0.823964 0.025051 0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER 0.806642 0.0125791 -0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER 0.805505 0.0332607 0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.808411 0.0345923 -0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.828008 0.00570109 -0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER 0.829777 0.0277143 -0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.848237 0.0195047 -0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.841683 0.0665023 -0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER 0.840284 0.0454909 -0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER 0.856111 0.0473735 -0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.831823 0.0463379 -0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER 0.825856 0.0646197 -0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.817395 0.0654667 -0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER 0.827255 0.0856311 -0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER 0.850144 0.0656554 -0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER 0.851543 0.0866667 -0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER 0.865971 0.0675379 -0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER 0.69376 -0.0133465 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.740325 -0.0440268 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.762259 -0.0417568 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759495 -0.0345526 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.748937 -0.0216407 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.743089 -0.051231 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.729767 -0.0311149 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.721155 -0.053501 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.753646 -0.0641429 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.731712 -0.0664129 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.750882 -0.0569387 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.76531 0.0058253 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.782939 0.0179281 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.76531 0.0058253 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759776 0.02648 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.782939 0.0179281 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759776 0.02648 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.76531 0.0058253 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.788473 -0.00272662 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.770845 -0.0148294 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.770845 -0.0148294 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.721234 0.0272215 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.736829 0.0454452 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.742467 0.0297485 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.724354 0.046242 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.715595 0.0429182 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.70312 0.043715 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.7 0.0246945 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.733709 0.0264247 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.718114 0.00820099 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.739347 0.010728 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.668775 -0.0631985 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.669983 -0.0708196 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.690113 -0.0618185 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671462 -0.0467378 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.648644 -0.0721997 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.650123 -0.0481178 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.647436 -0.0645786 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.667296 -0.0872804 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.666087 -0.0796593 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.687426 -0.0782793 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.649684 0.00804971 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.646718 0.0244627 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669336 0.016478 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.657124 0.0313903 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627066 0.0160343 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.637471 0.022962 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.630031 -0.000378614 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.639278 0.00112207 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.642244 -0.0152909 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.661896 -0.00686255 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.62221 -0.0325183 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.600892 -0.0308513 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.62221 -0.0325183 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616676 -0.0118635 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.600892 -0.0308513 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616676 -0.0118635 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.62221 -0.0325183 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.606426 -0.051506 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627745 -0.053173 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627745 -0.053173 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.712851 -0.0845947 0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER 0.730141 -0.101422 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.736701 -0.0782041 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.725284 -0.0832945 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.706291 -0.107813 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.701434 -0.0896851 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.689001 -0.0909853 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.717709 -0.102723 0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER 0.700418 -0.0858949 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.724268 -0.0795043 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.666287 -0.0539145 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.655153 -0.0751594 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671821 -0.0745692 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.649783 -0.0638711 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.649619 -0.0545047 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.644249 -0.0432164 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.660752 -0.0332597 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671657 -0.0652028 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.682791 -0.0439578 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.688325 -0.0646126 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.737837 -0.0347427 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.752567 -0.0269197 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.732303 -0.014088 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.751574 -0.0144587 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.758102 -0.0475745 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.757108 -0.0351134 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.743371 -0.0553974 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.73883 -0.0472037 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.7241 -0.0550267 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.718566 -0.0343719 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.69376 -0.0133465 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.745859 -0.0646815 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.770032 -0.0684873 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759394 -0.0481266 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.762305 -0.0507391 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.756497 -0.0850422 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.74877 -0.067294 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.732325 -0.0812364 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.753586 -0.0824297 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.729413 -0.0786239 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.742948 -0.062069 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.76531 0.0058253 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.782939 0.0179281 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.76531 0.0058253 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759776 0.02648 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.782939 0.0179281 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759776 0.02648 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.76531 0.0058253 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.788473 -0.00272662 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.770845 -0.0148294 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.770845 -0.0148294 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.737837 -0.0347427 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.758864 -0.0299763 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.757489 -0.0263144 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.745277 -0.0114021 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.739212 -0.0384047 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.725625 -0.0198304 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.718185 -0.043171 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.751424 -0.0533169 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.730397 -0.0580833 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.750049 -0.0496549 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.674309 -0.0838533 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.675276 -0.106805 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.694308 -0.091423 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.673094 -0.0875713 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.655278 -0.0992356 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.653095 -0.0800016 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.65431 -0.0762835 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.676491 -0.103087 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.675524 -0.0801352 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.695522 -0.0877049 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.666287 -0.0539145 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.666927 -0.0577732 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.68752 -0.0513875 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669407 -0.034894 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.645694 -0.0603001 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.648173 -0.0374209 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.645053 -0.0564414 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.663807 -0.0767937 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.663167 -0.072935 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.6844 -0.070408 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.62221 -0.0325183 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.600892 -0.0308513 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.62221 -0.0325183 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616676 -0.0118635 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.600892 -0.0308513 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616676 -0.0118635 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.62221 -0.0325183 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.606426 -0.051506 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627745 -0.053173 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627745 -0.053173 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.701782 -0.0432853 -0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.717566 -0.0544915 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.725632 -0.0368947 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.718734 -0.0588496 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.693716 -0.0608821 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.694884 -0.0652402 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.677932 -0.0496759 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.700615 -0.0389272 -0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.684831 -0.027721 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.708681 -0.0213304 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.649684 0.00804971 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.640422 0.0275193 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.644149 0.0287044 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.66342 0.0283337 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.645956 0.00686453 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.668955 0.00767898 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.655218 -0.012605 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.626685 0.00723527 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.635947 -0.0122343 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.630413 0.00842045 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.721234 0.0272215 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.725055 0.0280589 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.726768 0.00656677 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.70473 0.0172649 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.71952 0.0487136 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.699195 0.0379196 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.715699 0.0478762 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.741558 0.0380155 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.737738 0.0371781 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.743272 0.0165234 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.172546 0.643951 1.11022e-16 RAD 0.166667 + txt002 + SPHERE CENTER 0.281471 0.802608 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.30566 0.824035 -0.177765 RAD 0.0185185 + txt002 + SPHERE CENTER 0.302088 0.822021 -0.202114 RAD 0.00617284 + txt002 + SPHERE CENTER 0.298094 0.802598 -0.187402 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282758 0.821938 -0.186751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.309654 0.843459 -0.192477 RAD 0.00617284 + txt002 + SPHERE CENTER 0.290324 0.843375 -0.177114 RAD 0.00617284 + txt002 + SPHERE CENTER 0.313227 0.845472 -0.168128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32499 0.824119 -0.193128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.328563 0.826132 -0.16878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.320997 0.804695 -0.178416 RAD 0.00617284 + txt002 + SPHERE CENTER 0.305221 0.752156 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.325175 0.741263 -0.169507 RAD 0.00617284 + txt002 + SPHERE CENTER 0.325981 0.765112 -0.163165 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32493 0.747715 -0.145675 RAD 0.00617284 + txt002 + SPHERE CENTER 0.304415 0.728307 -0.166213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.304171 0.734759 -0.142381 RAD 0.00617284 + txt002 + SPHERE CENTER 0.284462 0.7392 -0.156576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.305466 0.745704 -0.183703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.285513 0.756597 -0.174066 RAD 0.00617284 + txt002 + SPHERE CENTER 0.306272 0.769553 -0.17736 RAD 0.00617284 + txt002 + SPHERE CENTER 0.241352 0.787796 -0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER 0.218449 0.785699 -0.180578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.223304 0.778718 -0.157397 RAD 0.00617284 + txt002 + SPHERE CENTER 0.22345 0.802677 -0.163362 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236497 0.794777 -0.194773 RAD 0.00617284 + txt002 + SPHERE CENTER 0.241498 0.811756 -0.177557 RAD 0.00617284 + txt002 + SPHERE CENTER 0.2594 0.796874 -0.185788 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236351 0.770818 -0.188808 RAD 0.00617284 + txt002 + SPHERE CENTER 0.259253 0.772915 -0.179823 RAD 0.00617284 + txt002 + SPHERE CENTER 0.241205 0.763837 -0.165627 RAD 0.00617284 + txt002 + SPHERE CENTER 0.28191 0.874487 -0.129006 RAD 0.0185185 + txt002 + SPHERE CENTER 0.292033 0.891539 -0.143718 RAD 0.00617284 + txt002 + SPHERE CENTER 0.305711 0.872763 -0.135349 RAD 0.00617284 + txt002 + SPHERE CENTER 0.28812 0.868678 -0.152187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.268233 0.893263 -0.137375 RAD 0.00617284 + txt002 + SPHERE CENTER 0.264319 0.870402 -0.145845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.25811 0.876212 -0.122663 RAD 0.00617284 + txt002 + SPHERE CENTER 0.285824 0.897348 -0.120537 RAD 0.00617284 + txt002 + SPHERE CENTER 0.275701 0.880296 -0.105825 RAD 0.00617284 + txt002 + SPHERE CENTER 0.299501 0.878572 -0.112168 RAD 0.00617284 + txt002 + SPHERE CENTER 0.217602 0.838248 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.206363 0.860225 -0.122182 RAD 0.00617284 + txt002 + SPHERE CENTER 0.223536 0.854636 -0.105343 RAD 0.00617284 + txt002 + SPHERE CENTER 0.230102 0.858689 -0.128798 RAD 0.00617284 + txt002 + SPHERE CENTER 0.200429 0.843837 -0.139672 RAD 0.00617284 + txt002 + SPHERE CENTER 0.224168 0.842301 -0.146288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.211667 0.821861 -0.140323 RAD 0.00617284 + txt002 + SPHERE CENTER 0.193863 0.839784 -0.116217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.205101 0.817808 -0.116868 RAD 0.00617284 + txt002 + SPHERE CENTER 0.211035 0.834196 -0.0993785 RAD 0.00617284 + txt002 + SPHERE CENTER 0.257721 0.853061 -0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.26204 0.87538 -0.0527151 RAD 0.00617284 + txt002 + SPHERE CENTER 0.280934 0.860805 -0.0590577 RAD 0.00617284 + txt002 + SPHERE CENTER 0.266856 0.87108 -0.0765474 RAD 0.00617284 + txt002 + SPHERE CENTER 0.238827 0.867636 -0.0560094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.243643 0.863337 -0.0798417 RAD 0.00617284 + txt002 + SPHERE CENTER 0.234508 0.845317 -0.0656463 RAD 0.00617284 + txt002 + SPHERE CENTER 0.252905 0.857361 -0.0385197 RAD 0.00617284 + txt002 + SPHERE CENTER 0.248586 0.835041 -0.0481565 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271799 0.842785 -0.0448623 RAD 0.00617284 + txt002 + SPHERE CENTER 0.34578 0.838847 -0.117284 RAD 0.0185185 + txt002 + SPHERE CENTER 0.360404 0.851488 -0.132647 RAD 0.00617284 + txt002 + SPHERE CENTER 0.347059 0.832518 -0.141116 RAD 0.00617284 + txt002 + SPHERE CENTER 0.335865 0.853509 -0.1345 RAD 0.00617284 + txt002 + SPHERE CENTER 0.359125 0.857816 -0.108814 RAD 0.00617284 + txt002 + SPHERE CENTER 0.334587 0.859838 -0.110668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.344501 0.845176 -0.0934517 RAD 0.00617284 + txt002 + SPHERE CENTER 0.370319 0.836826 -0.115431 RAD 0.00617284 + txt002 + SPHERE CENTER 0.355695 0.824185 -0.100068 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356973 0.817857 -0.1239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.321591 0.817421 -0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER 0.340361 0.83071 -0.0416443 RAD 0.00617284 + txt002 + SPHERE CENTER 0.341208 0.822249 -0.0648253 RAD 0.00617284 + txt002 + SPHERE CENTER 0.325527 0.840365 -0.0588603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.320744 0.825882 -0.0274488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.30591 0.835537 -0.0446649 RAD 0.00617284 + txt002 + SPHERE CENTER 0.301973 0.812593 -0.0364345 RAD 0.00617284 + txt002 + SPHERE CENTER 0.336425 0.807766 -0.0334138 RAD 0.00617284 + txt002 + SPHERE CENTER 0.317654 0.794477 -0.0423994 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337272 0.799305 -0.0565949 RAD 0.00617284 + txt002 + SPHERE CENTER 0.345341 0.766968 -0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.369945 0.768944 -0.10004 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356171 0.780624 -0.116879 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356172 0.788341 -0.093424 RAD 0.00617284 + txt002 + SPHERE CENTER 0.359115 0.755289 -0.0825505 RAD 0.00617284 + txt002 + SPHERE CENTER 0.345342 0.774685 -0.0759343 RAD 0.00617284 + txt002 + SPHERE CENTER 0.334511 0.753313 -0.0818993 RAD 0.00617284 + txt002 + SPHERE CENTER 0.359113 0.747572 -0.106005 RAD 0.00617284 + txt002 + SPHERE CENTER 0.33451 0.745596 -0.105354 RAD 0.00617284 + txt002 + SPHERE CENTER 0.34534 0.759252 -0.122844 RAD 0.00617284 + txt002 + SPHERE CENTER 0.358439 0.594141 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.408291 0.619127 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.411883 0.625955 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396287 0.607547 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.390369 0.630791 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.423887 0.637535 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.402373 0.642371 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.420295 0.630706 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.429805 0.61429 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.426212 0.607462 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.414208 0.595882 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337042 0.638217 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.344865 0.652948 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.357326 0.651954 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.357697 0.632683 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.324581 0.639211 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337413 0.618946 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.316758 0.624481 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.324211 0.658482 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.316388 0.643752 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.336672 0.657489 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37761 0.665691 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.389713 0.68332 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.398265 0.660156 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37761 0.665691 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.369058 0.688854 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356956 0.671225 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356956 0.671225 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.389713 0.68332 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37761 0.665691 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.398265 0.660156 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.429687 0.57505 -0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER 0.452905 0.58161 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.434777 0.586467 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436077 0.5989 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.447815 0.570193 -0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER 0.430987 0.587483 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.424596 0.563633 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.446515 0.55776 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.423296 0.5512 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.428387 0.562617 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399007 0.621614 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.41723 0.637209 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.418027 0.624734 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.401533 0.642848 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.39821 0.634089 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.382513 0.639728 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.379986 0.618494 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.414703 0.615976 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.39648 0.600381 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4155 0.603501 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.379835 0.550064 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.396248 0.547099 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.403175 0.557504 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.388263 0.569716 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.372907 0.539659 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.364922 0.562276 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356494 0.542624 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.387819 0.527447 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.371406 0.530412 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.394747 0.537852 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.389119 0.547576 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.410169 0.541008 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.405866 0.564748 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.410472 0.548718 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.393422 0.523836 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.393725 0.531546 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.372372 0.530405 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.388816 0.539866 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367766 0.546435 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.384513 0.563607 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.339267 0.522591 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.340934 0.501272 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.359921 0.517056 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.339267 0.522591 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.320279 0.506807 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318612 0.528125 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318612 0.528125 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.340934 0.501272 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.339267 0.522591 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.359921 0.517056 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.317871 0.566667 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.296626 0.555534 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307914 0.550163 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.297216 0.572202 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.306582 0.572037 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307172 0.588706 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.327827 0.583171 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31728 0.549999 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.338525 0.561133 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.328569 0.544629 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.172546 0.643951 -0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER 0.142305 0.674191 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.144155 0.692502 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.150298 0.696439 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.164554 0.682184 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.136163 0.670254 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.156561 0.659936 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.134313 0.651943 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.121907 0.684509 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.120057 0.666199 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.12805 0.688447 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.100996 0.663122 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0847178 0.680265 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.104191 0.675047 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.107387 0.686972 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0815225 0.66834 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.104191 0.675047 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0978007 0.651197 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0783272 0.656415 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0946054 0.639272 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0978007 0.651197 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.153374 0.715501 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.160081 0.738169 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.177224 0.721891 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.165299 0.718696 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.136231 0.731779 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.141449 0.712305 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.129524 0.70911 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.148156 0.734974 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.141449 0.712305 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.165299 0.718696 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.213855 0.655019 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.213517 0.662308 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.194382 0.649801 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.198584 0.673065 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.23299 0.667526 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.218058 0.678283 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.233329 0.660237 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.228788 0.644262 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.229127 0.636974 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.209653 0.631756 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.224924 0.696329 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.23918 0.710584 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.233654 0.687599 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.216195 0.705059 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.23045 0.719314 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.207465 0.713788 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.216195 0.705059 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.24791 0.701855 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.233654 0.687599 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.242384 0.678869 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.244096 0.624779 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.266765 0.631486 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.247291 0.636704 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.250487 0.648629 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.26357 0.619561 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.247291 0.636704 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.240901 0.612854 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.260374 0.607636 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.237705 0.600929 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.240901 0.612854 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.161477 0.602641 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.162741 0.579817 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.179523 0.58737 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.156259 0.583168 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.144695 0.595088 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.138214 0.598439 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.143431 0.617912 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.167958 0.59929 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.166695 0.622115 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.184741 0.606843 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.191718 0.5724 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.208861 0.556122 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.215568 0.578791 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.203643 0.575596 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.185011 0.549732 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.179793 0.569205 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.167868 0.56601 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.196936 0.552927 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.179793 0.569205 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.203643 0.575596 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.120168 0.591572 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.105912 0.577317 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.128897 0.582843 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.111438 0.600302 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0971825 0.586046 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.102708 0.609032 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.111438 0.600302 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.114642 0.568587 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.128897 0.582843 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.137627 0.574113 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0955788 0.852418 9.1293e-17 RAD 0.0555556 + txt002 + SPHERE CENTER 0.11107 0.922609 -0.0178949 RAD 0.0185185 + txt002 + SPHERE CENTER 0.122151 0.937225 -0.0344251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.131874 0.915202 -0.0289382 RAD 0.00617284 + txt002 + SPHERE CENTER 0.11086 0.916553 -0.0418311 RAD 0.00617284 + txt002 + SPHERE CENTER 0.101346 0.944632 -0.0233819 RAD 0.00617284 + txt002 + SPHERE CENTER 0.090055 0.92396 -0.0307879 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0902645 0.930016 -0.00685171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.12236 0.943281 -0.0104889 RAD 0.00617284 + txt002 + SPHERE CENTER 0.111279 0.928665 0.00604126 RAD 0.00617284 + txt002 + SPHERE CENTER 0.132084 0.921258 -0.00500196 RAD 0.00617284 + txt002 + SPHERE CENTER 0.164775 0.877966 0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER 0.182656 0.890926 -0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER 0.167676 0.876622 -0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER 0.159019 0.897331 -0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER 0.179755 0.89227 0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER 0.156118 0.898675 0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.161874 0.87931 0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.188412 0.871561 0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER 0.17053 0.8586 0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.173431 0.857256 -0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.135698 0.867231 -0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER 0.134634 0.873196 -0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER 0.11765 0.858152 -0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.117797 0.882112 -0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.152682 0.882275 -0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.135845 0.89119 -0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER 0.153747 0.876309 -0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER 0.152536 0.858315 -0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.1536 0.852349 -0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER 0.135552 0.843271 -0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0418734 0.897062 -0.0246914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0359958 0.920407 -0.0301783 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0511067 0.915603 -0.0112511 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0588574 0.912106 -0.0344321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0267625 0.901866 -0.0436186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0496241 0.893565 -0.0478724 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0326401 0.878521 -0.0381316 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0190117 0.905363 -0.0204376 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0248894 0.882018 -0.0149506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0341227 0.900559 -0.00151032 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0665023 0.841683 -0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0454909 0.840284 -0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0463379 0.831823 -0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0473735 0.856111 -0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0656554 0.850144 -0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0675379 0.865971 -0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0866667 0.851543 -0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0646197 0.825856 -0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0856311 0.827255 -0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0654667 0.817395 -0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0263827 0.826871 -0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER 0.00436945 0.825102 0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER 0.025051 0.823964 0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER 0.018173 0.84533 0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00570109 0.828008 -0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0195047 0.848237 -0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0277143 0.829777 -0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0125791 0.806642 -0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0345923 0.808411 -0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0332607 0.805505 0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0709499 0.907797 0.0425863 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0752104 0.930963 0.0499923 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0941344 0.915684 0.0457385 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0806562 0.924191 0.0268805 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0520258 0.923076 0.0468401 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0574717 0.916304 0.0237283 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0477654 0.89991 0.0394341 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0655041 0.914568 0.065698 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0612436 0.891402 0.058292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0844281 0.899289 0.0614442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0554592 0.837606 0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0523913 0.842832 0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0750766 0.842434 0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0593957 0.86055 0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0327739 0.838004 0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0397783 0.855722 0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0358417 0.832778 0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0484547 0.819888 0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0515226 0.814662 0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER 0.07114 0.81949 0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.124655 0.863153 0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER 0.141535 0.875744 0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER 0.146389 0.868763 0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER 0.129819 0.88655 0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.119801 0.870135 0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER 0.108085 0.880941 0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER 0.102922 0.857544 0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER 0.136371 0.852347 0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.119492 0.839756 0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER 0.141225 0.845366 0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0133465 0.69376 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.0646815 0.745859 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0684873 0.770032 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0507391 0.762305 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0481266 0.759394 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0824297 0.753586 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.062069 0.742948 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0786239 0.729413 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0850422 0.756497 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0812364 0.732325 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.067294 0.74877 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0347427 0.737837 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0299763 0.758864 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0114021 0.745277 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0263144 0.757489 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0533169 0.751424 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0496549 0.750049 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0580833 0.730397 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0384047 0.739212 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.043171 0.718185 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0198304 0.725625 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0058253 0.76531 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0179281 0.782939 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.02648 0.759776 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0058253 0.76531 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00272662 0.788473 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0148294 0.770845 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0148294 0.770845 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0179281 0.782939 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0058253 0.76531 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.02648 0.759776 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0432853 0.701782 -0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0544915 0.717566 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0588496 0.718734 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0368947 0.725632 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0389272 0.700615 -0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0213304 0.708681 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.027721 0.684831 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0608821 0.693716 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0496759 0.677932 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0652402 0.694884 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0272215 0.721234 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0280589 0.725055 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0172649 0.70473 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00656677 0.726768 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0380155 0.741558 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0165234 0.743272 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0371781 0.737738 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0487136 0.71952 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0478762 0.715699 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0379196 0.699195 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00804971 0.649684 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0275193 0.640422 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0283337 0.66342 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0287044 0.644149 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00723527 0.626685 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00842045 0.630413 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0122343 0.635947 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00686453 0.645956 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.012605 0.655218 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00767898 0.668955 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0838533 0.674309 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.106805 0.675276 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0875713 0.673094 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.091423 0.694308 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.103087 0.676491 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0877049 0.695522 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0801352 0.675524 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0992356 0.655278 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0762835 0.65431 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0800016 0.653095 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0325183 0.62221 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0308513 0.600892 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0118635 0.616676 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0325183 0.62221 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.051506 0.606426 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.053173 0.627745 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.053173 0.627745 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0308513 0.600892 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0325183 0.62221 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0118635 0.616676 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0539145 0.666287 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0577732 0.666927 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.034894 0.669407 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0513875 0.68752 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0767937 0.663807 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.070408 0.6844 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.072935 0.663167 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0603001 0.645694 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0564414 0.645053 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0374209 0.648173 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0133465 0.69376 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.0440268 0.740325 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0417568 0.762259 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0216407 0.748937 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0345526 0.759495 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0641429 0.753646 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0569387 0.750882 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0664129 0.731712 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.051231 0.743089 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.053501 0.721155 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0311149 0.729767 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0272215 0.721234 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0454452 0.736829 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.046242 0.724354 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0297485 0.742467 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0264247 0.733709 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.010728 0.739347 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00820099 0.718114 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0429182 0.715595 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0246945 0.7 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.043715 0.70312 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0058253 0.76531 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0179281 0.782939 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.02648 0.759776 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0058253 0.76531 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00272662 0.788473 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0148294 0.770845 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0148294 0.770845 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0179281 0.782939 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0058253 0.76531 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.02648 0.759776 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0845947 0.712851 0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER -0.101422 0.730141 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0832945 0.725284 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0782041 0.736701 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.102723 0.717709 0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0795043 0.724268 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0858949 0.700418 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.107813 0.706291 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0909853 0.689001 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0896851 0.701434 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0347427 0.737837 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0269197 0.752567 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0144587 0.751574 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.014088 0.732303 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0472037 0.73883 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0343719 0.718566 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0550267 0.7241 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0475745 0.758102 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0553974 0.743371 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0351134 0.757108 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0539145 0.666287 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0751594 0.655153 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0638711 0.649783 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0745692 0.671821 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0652028 0.671657 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0646126 0.688325 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0439578 0.682791 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0545047 0.649619 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0332597 0.660752 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0432164 0.644249 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0631985 0.668775 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0708196 0.669983 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0467378 0.671462 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0618185 0.690113 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0872804 0.667296 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0782793 0.687426 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0796593 0.666087 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0721997 0.648644 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0645786 0.647436 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0481178 0.650123 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0325183 0.62221 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0308513 0.600892 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0118635 0.616676 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0325183 0.62221 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.051506 0.606426 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.053173 0.627745 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.053173 0.627745 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0308513 0.600892 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0325183 0.62221 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0118635 0.616676 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00804971 0.649684 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0244627 0.646718 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0313903 0.657124 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.016478 0.669336 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00112207 0.639278 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00686255 0.661896 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0152909 0.642244 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0160343 0.627066 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.000378614 0.630031 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.022962 0.637471 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.281471 0.802608 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.329459 0.858698 0.104938 RAD 0.0185185 + txt002 + SPHERE CENTER 0.34259 0.872345 0.0890951 RAD 0.00617284 + txt002 + SPHERE CENTER 0.338969 0.848329 0.0846485 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32016 0.86421 0.0827387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.333079 0.882715 0.109385 RAD 0.00617284 + txt002 + SPHERE CENTER 0.310649 0.87458 0.103028 RAD 0.00617284 + txt002 + SPHERE CENTER 0.319948 0.869068 0.125228 RAD 0.00617284 + txt002 + SPHERE CENTER 0.351888 0.866833 0.111295 RAD 0.00617284 + txt002 + SPHERE CENTER 0.338757 0.853186 0.127138 RAD 0.00617284 + txt002 + SPHERE CENTER 0.348268 0.842817 0.106848 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337088 0.798572 0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.346884 0.808673 0.0420622 RAD 0.00617284 + txt002 + SPHERE CENTER 0.322361 0.807762 0.044793 RAD 0.00617284 + txt002 + SPHERE CENTER 0.335792 0.82298 0.0588533 RAD 0.00617284 + txt002 + SPHERE CENTER 0.361611 0.799483 0.0596212 RAD 0.00617284 + txt002 + SPHERE CENTER 0.350519 0.81379 0.0764123 RAD 0.00617284 + txt002 + SPHERE CENTER 0.351815 0.789382 0.079911 RAD 0.00617284 + txt002 + SPHERE CENTER 0.34818 0.784265 0.0455609 RAD 0.00617284 + txt002 + SPHERE CENTER 0.338384 0.774164 0.0658506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.323657 0.783355 0.0482916 RAD 0.00617284 + txt002 + SPHERE CENTER 0.280879 0.845371 0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER 0.291048 0.849036 0.0284303 RAD 0.00617284 + txt002 + SPHERE CENTER 0.304882 0.840755 0.0471312 RAD 0.00617284 + txt002 + SPHERE CENTER 0.287867 0.826067 0.0369125 RAD 0.00617284 + txt002 + SPHERE CENTER 0.267046 0.853652 0.0319289 RAD 0.00617284 + txt002 + SPHERE CENTER 0.263865 0.830683 0.0404111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.256877 0.849987 0.0541285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.28406 0.868341 0.0421477 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273891 0.864676 0.0643473 RAD 0.00617284 + txt002 + SPHERE CENTER 0.297894 0.86006 0.0608487 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273842 0.862735 0.153697 RAD 0.0185185 + txt002 + SPHERE CENTER 0.282313 0.885497 0.158144 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29787 0.867718 0.150967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.281455 0.876946 0.134996 RAD 0.00617284 + txt002 + SPHERE CENTER 0.258284 0.880514 0.160875 RAD 0.00617284 + txt002 + SPHERE CENTER 0.257427 0.871963 0.137727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.249813 0.857752 0.156428 RAD 0.00617284 + txt002 + SPHERE CENTER 0.274699 0.871286 0.176845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.266228 0.848523 0.172398 RAD 0.00617284 + txt002 + SPHERE CENTER 0.290257 0.853506 0.169668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.225263 0.849407 0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.21889 0.873186 0.0974792 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236437 0.866351 0.113449 RAD 0.00617284 + txt002 + SPHERE CENTER 0.240865 0.865588 0.0891702 RAD 0.00617284 + txt002 + SPHERE CENTER 0.207715 0.856242 0.0834188 RAD 0.00617284 + txt002 + SPHERE CENTER 0.22969 0.848644 0.0751099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.214088 0.832464 0.0853287 RAD 0.00617284 + txt002 + SPHERE CENTER 0.203288 0.857005 0.107698 RAD 0.00617284 + txt002 + SPHERE CENTER 0.20966 0.833227 0.109608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.220835 0.850171 0.123668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.225855 0.806645 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.21762 0.818054 0.18016 RAD 0.00617284 + txt002 + SPHERE CENTER 0.241754 0.813612 0.177429 RAD 0.00617284 + txt002 + SPHERE CENTER 0.230661 0.83061 0.163369 RAD 0.00617284 + txt002 + SPHERE CENTER 0.20172 0.811087 0.162601 RAD 0.00617284 + txt002 + SPHERE CENTER 0.214761 0.823642 0.14581 RAD 0.00617284 + txt002 + SPHERE CENTER 0.209955 0.799677 0.142311 RAD 0.00617284 + txt002 + SPHERE CENTER 0.212813 0.794089 0.176661 RAD 0.00617284 + txt002 + SPHERE CENTER 0.221048 0.78268 0.156372 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236948 0.789647 0.173931 RAD 0.00617284 + txt002 + SPHERE CENTER 0.330051 0.815936 0.165419 RAD 0.0185185 + txt002 + SPHERE CENTER 0.350165 0.828769 0.171776 RAD 0.00617284 + txt002 + SPHERE CENTER 0.347547 0.820583 0.148628 RAD 0.00617284 + txt002 + SPHERE CENTER 0.333232 0.838905 0.156937 RAD 0.00617284 + txt002 + SPHERE CENTER 0.332668 0.824121 0.188567 RAD 0.00617284 + txt002 + SPHERE CENTER 0.315735 0.834258 0.173728 RAD 0.00617284 + txt002 + SPHERE CENTER 0.312554 0.811288 0.182211 RAD 0.00617284 + txt002 + SPHERE CENTER 0.346984 0.805799 0.180258 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32687 0.792966 0.173902 RAD 0.00617284 + txt002 + SPHERE CENTER 0.344366 0.797614 0.157111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282063 0.759846 0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER 0.29233 0.756464 0.193792 RAD 0.00617284 + txt002 + SPHERE CENTER 0.305929 0.765125 0.175091 RAD 0.00617284 + txt002 + SPHERE CENTER 0.288514 0.779336 0.18531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.268464 0.751185 0.190293 RAD 0.00617284 + txt002 + SPHERE CENTER 0.264649 0.774058 0.181811 RAD 0.00617284 + txt002 + SPHERE CENTER 0.258198 0.754567 0.168094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.285879 0.736973 0.180075 RAD 0.00617284 + txt002 + SPHERE CENTER 0.275612 0.740355 0.157875 RAD 0.00617284 + txt002 + SPHERE CENTER 0.299478 0.745634 0.161374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.33768 0.75581 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.362219 0.753851 0.124743 RAD 0.00617284 + txt002 + SPHERE CENTER 0.352319 0.76987 0.108773 RAD 0.00617284 + txt002 + SPHERE CENTER 0.350765 0.774086 0.133052 RAD 0.00617284 + txt002 + SPHERE CENTER 0.347581 0.739791 0.138803 RAD 0.00617284 + txt002 + SPHERE CENTER 0.336127 0.760026 0.147112 RAD 0.00617284 + txt002 + SPHERE CENTER 0.323042 0.74175 0.136894 RAD 0.00617284 + txt002 + SPHERE CENTER 0.349134 0.735575 0.114524 RAD 0.00617284 + txt002 + SPHERE CENTER 0.324595 0.737534 0.112614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.339233 0.751594 0.0985541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.172546 0.643951 0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER 0.202787 0.674191 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.219248 0.690652 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.223862 0.677807 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.206403 0.695267 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.198172 0.687036 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.185327 0.691651 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.181711 0.670575 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.215632 0.669577 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.199171 0.653116 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.220246 0.656732 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.244096 0.663122 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.261725 0.675225 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.244096 0.663122 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.238562 0.683777 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.261725 0.675225 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.238562 0.683777 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.244096 0.663122 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.267259 0.65457 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.249631 0.642468 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.249631 0.642468 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.191718 0.715501 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.203821 0.733129 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.212373 0.709966 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.191718 0.715501 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.183166 0.738664 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.171063 0.721035 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.171063 0.721035 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.203821 0.733129 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.191718 0.715501 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.212373 0.709966 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.131237 0.655019 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.12881 0.668451 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.151296 0.662426 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.137627 0.678869 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.108751 0.661044 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.117567 0.671463 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.111177 0.647613 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.12242 0.644601 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.124846 0.631169 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.144906 0.638576 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.120168 0.696329 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.115992 0.720665 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.135288 0.711449 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.135288 0.711449 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.100872 0.705544 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.120168 0.696329 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.105047 0.681209 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.100872 0.705544 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.105047 0.681209 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.120168 0.696329 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.100996 0.624779 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0796777 0.626446 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.100996 0.624779 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0954616 0.645433 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0796777 0.626446 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0954616 0.645433 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.100996 0.624779 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0852121 0.605791 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.10653 0.604124 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.10653 0.604124 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.183615 0.602641 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.197046 0.600215 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.207465 0.609032 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.191021 0.622701 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.173196 0.593824 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.167171 0.61631 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.159765 0.596251 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.18964 0.580155 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.176209 0.582581 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.200059 0.588972 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.153374 0.5724 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.155041 0.551082 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.174029 0.566866 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.153374 0.5724 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.134387 0.556617 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.13272 0.577935 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.13272 0.577935 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.155041 0.551082 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.153374 0.5724 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.174029 0.566866 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.224924 0.591572 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.24926 0.587397 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.240045 0.606693 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.240045 0.606693 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.23414 0.572277 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.224924 0.591572 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.209804 0.576452 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.23414 0.572277 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.209804 0.576452 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.224924 0.591572 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.358439 0.594141 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.428945 0.613592 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.448155 0.626191 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.43276 0.614455 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.42519 0.634643 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.44434 0.625328 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.421375 0.63378 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.42513 0.612729 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.45191 0.60514 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4327 0.592541 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436515 0.593404 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399007 0.621614 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.399844 0.625435 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.38905 0.60511 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.378352 0.627149 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.409801 0.641939 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.388308 0.643653 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.408963 0.638118 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.420499 0.619901 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.419661 0.61608 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.409705 0.599576 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37761 0.665691 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.389713 0.68332 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.398265 0.660156 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37761 0.665691 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.369058 0.688854 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356956 0.671225 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356956 0.671225 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.389713 0.68332 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37761 0.665691 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.398265 0.660156 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.388377 0.586119 0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.405974 0.594185 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.410332 0.593017 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.394768 0.609969 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.384019 0.587286 0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.372813 0.60307 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.366422 0.57922 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399584 0.570335 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.381987 0.562269 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.403942 0.569167 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337042 0.638217 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.341809 0.659244 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.360383 0.645657 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.345471 0.65787 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318468 0.651804 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32213 0.65043 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.313702 0.630777 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.33338 0.639592 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.328614 0.618565 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.351955 0.626005 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.317871 0.566667 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.314012 0.567308 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.336891 0.569787 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.320398 0.587901 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.294991 0.564188 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.301377 0.584781 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29885 0.563547 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.311485 0.546074 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.315344 0.545434 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.334364 0.548554 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.409774 0.542042 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.433888 0.53788 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.426423 0.55574 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.423551 0.558395 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.417238 0.524182 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.406901 0.544697 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.393124 0.528344 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.42011 0.521526 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.395996 0.525689 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.412646 0.539387 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.339267 0.522591 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.340934 0.501272 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.359921 0.517056 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.339267 0.522591 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.320279 0.506807 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318612 0.528125 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318612 0.528125 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.340934 0.501272 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.339267 0.522591 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.359921 0.517056 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.379835 0.550064 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.399304 0.540802 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.400119 0.563801 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.400489 0.54453 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37902 0.527065 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.380205 0.530793 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.359551 0.536327 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37865 0.546337 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.35918 0.555599 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.379464 0.569335 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.371785 0.0996195 0.544331 RAD 0.166667 + txt002 + SPHERE CENTER -0.393621 0.220501 0.729516 RAD 0.0555556 + txt002 + SPHERE CENTER -0.368601 0.279642 0.766439 RAD 0.0185185 + txt002 + SPHERE CENTER -0.354293 0.299716 0.765035 RAD 0.00617284 + txt002 + SPHERE CENTER -0.347717 0.279022 0.753281 RAD 0.00617284 + txt002 + SPHERE CENTER -0.366989 0.292196 0.745238 RAD 0.00617284 + txt002 + SPHERE CENTER -0.375177 0.300337 0.778193 RAD 0.00617284 + txt002 + SPHERE CENTER -0.387873 0.292817 0.758396 RAD 0.00617284 + txt002 + SPHERE CENTER -0.389485 0.280263 0.779597 RAD 0.00617284 + txt002 + SPHERE CENTER -0.355904 0.287162 0.786236 RAD 0.00617284 + txt002 + SPHERE CENTER -0.370213 0.267088 0.787639 RAD 0.00617284 + txt002 + SPHERE CENTER -0.349329 0.266468 0.774481 RAD 0.00617284 + txt002 + SPHERE CENTER -0.321889 0.238665 0.726118 RAD 0.0185185 + txt002 + SPHERE CENTER -0.304702 0.250544 0.71296 RAD 0.00617284 + txt002 + SPHERE CENTER -0.32307 0.238717 0.701455 RAD 0.00617284 + txt002 + SPHERE CENTER -0.327715 0.259421 0.714081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.30352 0.250492 0.737623 RAD 0.00617284 + txt002 + SPHERE CENTER -0.326533 0.259369 0.738744 RAD 0.00617284 + txt002 + SPHERE CENTER -0.320707 0.238612 0.750781 RAD 0.00617284 + txt002 + SPHERE CENTER -0.298875 0.229788 0.724997 RAD 0.00617284 + txt002 + SPHERE CENTER -0.316063 0.217908 0.738155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.317244 0.21796 0.713492 RAD 0.00617284 + txt002 + SPHERE CENTER -0.372464 0.281062 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER -0.362978 0.289441 0.671279 RAD 0.00617284 + txt002 + SPHERE CENTER -0.35549 0.267771 0.680442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.378255 0.270044 0.671155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.379952 0.302733 0.683315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.395229 0.283335 0.683192 RAD 0.00617284 + txt002 + SPHERE CENTER -0.389438 0.294353 0.704516 RAD 0.00617284 + txt002 + SPHERE CENTER -0.357187 0.30046 0.692603 RAD 0.00617284 + txt002 + SPHERE CENTER -0.366673 0.29208 0.713804 RAD 0.00617284 + txt002 + SPHERE CENTER -0.349699 0.278789 0.701767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.440333 0.261479 0.769837 RAD 0.0185185 + txt002 + SPHERE CENTER -0.443285 0.282991 0.781591 RAD 0.00617284 + txt002 + SPHERE CENTER -0.421181 0.271991 0.781342 RAD 0.00617284 + txt002 + SPHERE CENTER -0.4302 0.282046 0.760673 RAD 0.00617284 + txt002 + SPHERE CENTER -0.462437 0.27248 0.770086 RAD 0.00617284 + txt002 + SPHERE CENTER -0.449353 0.271534 0.749168 RAD 0.00617284 + txt002 + SPHERE CENTER -0.459485 0.250967 0.758332 RAD 0.00617284 + txt002 + SPHERE CENTER -0.453417 0.262424 0.790755 RAD 0.00617284 + txt002 + SPHERE CENTER -0.450466 0.240911 0.779001 RAD 0.00617284 + txt002 + SPHERE CENTER -0.431313 0.251423 0.790506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.444196 0.262898 0.695877 RAD 0.0185185 + txt002 + SPHERE CENTER -0.449273 0.285685 0.687835 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436139 0.282528 0.708504 RAD 0.00617284 + txt002 + SPHERE CENTER -0.426189 0.27701 0.68659 RAD 0.00617284 + txt002 + SPHERE CENTER -0.45733 0.266055 0.675209 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434246 0.257381 0.673964 RAD 0.00617284 + txt002 + SPHERE CENTER -0.452254 0.243269 0.683251 RAD 0.00617284 + txt002 + SPHERE CENTER -0.46728 0.271573 0.697123 RAD 0.00617284 + txt002 + SPHERE CENTER -0.462204 0.248787 0.705165 RAD 0.00617284 + txt002 + SPHERE CENTER -0.454146 0.268416 0.717791 RAD 0.00617284 + txt002 + SPHERE CENTER -0.465353 0.202338 0.732914 RAD 0.0185185 + txt002 + SPHERE CENTER -0.486123 0.204606 0.746073 RAD 0.00617284 + txt002 + SPHERE CENTER -0.464339 0.202946 0.757577 RAD 0.00617284 + txt002 + SPHERE CENTER -0.470107 0.223366 0.744951 RAD 0.00617284 + txt002 + SPHERE CENTER -0.487137 0.203998 0.72141 RAD 0.00617284 + txt002 + SPHERE CENTER -0.471122 0.222757 0.720288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.466367 0.201729 0.708251 RAD 0.00617284 + txt002 + SPHERE CENTER -0.481368 0.183578 0.734036 RAD 0.00617284 + txt002 + SPHERE CENTER -0.460599 0.18131 0.720878 RAD 0.00617284 + txt002 + SPHERE CENTER -0.459584 0.181918 0.745541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.389758 0.219082 0.803476 RAD 0.0185185 + txt002 + SPHERE CENTER -0.378635 0.228779 0.823273 RAD 0.00617284 + txt002 + SPHERE CENTER -0.365937 0.225483 0.802355 RAD 0.00617284 + txt002 + SPHERE CENTER -0.383364 0.24293 0.8036 RAD 0.00617284 + txt002 + SPHERE CENTER -0.402455 0.222377 0.824394 RAD 0.00617284 + txt002 + SPHERE CENTER -0.407185 0.236529 0.804721 RAD 0.00617284 + txt002 + SPHERE CENTER -0.413578 0.21268 0.804597 RAD 0.00617284 + txt002 + SPHERE CENTER -0.385029 0.20493 0.823149 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396152 0.195233 0.803352 RAD 0.00617284 + txt002 + SPHERE CENTER -0.372331 0.201634 0.802231 RAD 0.00617284 + txt002 + SPHERE CENTER -0.414778 0.15994 0.766553 RAD 0.0185185 + txt002 + SPHERE CENTER -0.412573 0.147477 0.787754 RAD 0.00617284 + txt002 + SPHERE CENTER -0.39322 0.15977 0.77859 RAD 0.00617284 + txt002 + SPHERE CENTER -0.412448 0.172167 0.787878 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434131 0.147647 0.775717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434006 0.172338 0.775841 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436336 0.16011 0.754517 RAD 0.00617284 + txt002 + SPHERE CENTER -0.414903 0.13525 0.766429 RAD 0.00617284 + txt002 + SPHERE CENTER -0.417108 0.147713 0.745229 RAD 0.00617284 + txt002 + SPHERE CENTER -0.39555 0.147543 0.757266 RAD 0.00617284 + txt002 + SPHERE CENTER -0.343046 0.178104 0.763155 RAD 0.0185185 + txt002 + SPHERE CENTER -0.319723 0.177083 0.771198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.325124 0.189464 0.750529 RAD 0.00617284 + txt002 + SPHERE CENTER -0.332294 0.198298 0.772443 RAD 0.00617284 + txt002 + SPHERE CENTER -0.337645 0.165722 0.783824 RAD 0.00617284 + txt002 + SPHERE CENTER -0.350216 0.186938 0.785069 RAD 0.00617284 + txt002 + SPHERE CENTER -0.360967 0.166743 0.775781 RAD 0.00617284 + txt002 + SPHERE CENTER -0.330475 0.156889 0.76191 RAD 0.00617284 + txt002 + SPHERE CENTER -0.353797 0.157909 0.753867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.335876 0.16927 0.741241 RAD 0.00617284 + txt002 + SPHERE CENTER -0.191247 0.166275 0.655442 RAD 0.0555556 + txt002 + SPHERE CENTER -0.130089 0.20793 0.652044 RAD 0.0185185 + txt002 + SPHERE CENTER -0.115471 0.221102 0.637128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.126388 0.200597 0.628759 RAD 0.00617284 + txt002 + SPHERE CENTER -0.13987 0.220766 0.633356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.119172 0.228435 0.660413 RAD 0.00617284 + txt002 + SPHERE CENTER -0.143571 0.228099 0.656641 RAD 0.00617284 + txt002 + SPHERE CENTER -0.13379 0.215264 0.675329 RAD 0.00617284 + txt002 + SPHERE CENTER -0.10569 0.208266 0.655816 RAD 0.00617284 + txt002 + SPHERE CENTER -0.120308 0.195095 0.670732 RAD 0.00617284 + txt002 + SPHERE CENTER -0.116607 0.187762 0.647447 RAD 0.00617284 + txt002 + SPHERE CENTER -0.154295 0.172673 0.591563 RAD 0.0185185 + txt002 + SPHERE CENTER -0.15554 0.180792 0.568278 RAD 0.00617284 + txt002 + SPHERE CENTER -0.17557 0.171251 0.579113 RAD 0.00617284 + txt002 + SPHERE CENTER -0.166926 0.19323 0.586315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.134265 0.182215 0.580727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.145651 0.194652 0.598764 RAD 0.00617284 + txt002 + SPHERE CENTER -0.133019 0.174096 0.604012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.142909 0.160236 0.573526 RAD 0.00617284 + txt002 + SPHERE CENTER -0.141663 0.152117 0.596811 RAD 0.00617284 + txt002 + SPHERE CENTER -0.162939 0.150694 0.584361 RAD 0.00617284 + txt002 + SPHERE CENTER -0.192135 0.230419 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.18209 0.243049 0.599717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.168159 0.227721 0.613157 RAD 0.00617284 + txt002 + SPHERE CENTER -0.185251 0.218634 0.597829 RAD 0.00617284 + txt002 + SPHERE CENTER -0.206066 0.245747 0.604965 RAD 0.00617284 + txt002 + SPHERE CENTER -0.209227 0.221332 0.603077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.216111 0.233117 0.623653 RAD 0.00617284 + txt002 + SPHERE CENTER -0.188974 0.254834 0.620293 RAD 0.00617284 + txt002 + SPHERE CENTER -0.199019 0.242204 0.638981 RAD 0.00617284 + txt002 + SPHERE CENTER -0.175043 0.239506 0.633733 RAD 0.00617284 + txt002 + SPHERE CENTER -0.167041 0.201532 0.715923 RAD 0.0185185 + txt002 + SPHERE CENTER -0.151829 0.219088 0.724292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.14514 0.205084 0.705088 RAD 0.00617284 + txt002 + SPHERE CENTER -0.163068 0.221861 0.702483 RAD 0.00617284 + txt002 + SPHERE CENTER -0.173729 0.215537 0.735128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.184969 0.218309 0.713318 RAD 0.00617284 + txt002 + SPHERE CENTER -0.188942 0.197981 0.726759 RAD 0.00617284 + txt002 + SPHERE CENTER -0.155801 0.19876 0.737733 RAD 0.00617284 + txt002 + SPHERE CENTER -0.171014 0.181204 0.729364 RAD 0.00617284 + txt002 + SPHERE CENTER -0.149113 0.184756 0.718528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.229087 0.224021 0.682285 RAD 0.0185185 + txt002 + SPHERE CENTER -0.22829 0.248268 0.686881 RAD 0.00617284 + txt002 + SPHERE CENTER -0.207937 0.234532 0.689486 RAD 0.00617284 + txt002 + SPHERE CENTER -0.216949 0.2391 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER -0.249439 0.237756 0.67968 RAD 0.00617284 + txt002 + SPHERE CENTER -0.238098 0.228589 0.659755 RAD 0.00617284 + txt002 + SPHERE CENTER -0.250236 0.213509 0.675083 RAD 0.00617284 + txt002 + SPHERE CENTER -0.240428 0.233189 0.702209 RAD 0.00617284 + txt002 + SPHERE CENTER -0.241225 0.208942 0.697613 RAD 0.00617284 + txt002 + SPHERE CENTER -0.220075 0.219453 0.704814 RAD 0.00617284 + txt002 + SPHERE CENTER -0.228199 0.159877 0.719322 RAD 0.0185185 + txt002 + SPHERE CENTER -0.229756 0.167942 0.742607 RAD 0.00617284 + txt002 + SPHERE CENTER -0.207683 0.16569 0.731771 RAD 0.00617284 + txt002 + SPHERE CENTER -0.223214 0.183484 0.72457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.250271 0.162129 0.730157 RAD 0.00617284 + txt002 + SPHERE CENTER -0.243729 0.177671 0.71212 RAD 0.00617284 + txt002 + SPHERE CENTER -0.248714 0.154064 0.706872 RAD 0.00617284 + txt002 + SPHERE CENTER -0.234741 0.144336 0.737359 RAD 0.00617284 + txt002 + SPHERE CENTER -0.233184 0.13627 0.714074 RAD 0.00617284 + txt002 + SPHERE CENTER -0.212668 0.142084 0.726523 RAD 0.00617284 + txt002 + SPHERE CENTER -0.129201 0.143787 0.689081 RAD 0.0185185 + txt002 + SPHERE CENTER -0.105335 0.14887 0.692853 RAD 0.00617284 + txt002 + SPHERE CENTER -0.115741 0.153943 0.671044 RAD 0.00617284 + txt002 + SPHERE CENTER -0.121723 0.167242 0.690969 RAD 0.00617284 + txt002 + SPHERE CENTER -0.118795 0.138714 0.71089 RAD 0.00617284 + txt002 + SPHERE CENTER -0.135183 0.157086 0.709006 RAD 0.00617284 + txt002 + SPHERE CENTER -0.142661 0.13363 0.707118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.112813 0.125414 0.690965 RAD 0.00617284 + txt002 + SPHERE CENTER -0.136679 0.120331 0.687193 RAD 0.00617284 + txt002 + SPHERE CENTER -0.123219 0.130487 0.669156 RAD 0.00617284 + txt002 + SPHERE CENTER -0.190359 0.102131 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER -0.179968 0.0897843 0.711167 RAD 0.00617284 + txt002 + SPHERE CENTER -0.166467 0.105492 0.697727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.183804 0.114103 0.713055 RAD 0.00617284 + txt002 + SPHERE CENTER -0.20386 0.0864233 0.705919 RAD 0.00617284 + txt002 + SPHERE CENTER -0.207696 0.110742 0.707807 RAD 0.00617284 + txt002 + SPHERE CENTER -0.214251 0.0987702 0.687231 RAD 0.00617284 + txt002 + SPHERE CENTER -0.186523 0.0778128 0.690591 RAD 0.00617284 + txt002 + SPHERE CENTER -0.196914 0.0901597 0.671903 RAD 0.00617284 + txt002 + SPHERE CENTER -0.173022 0.0935207 0.677151 RAD 0.00617284 + txt002 + SPHERE CENTER -0.153407 0.108529 0.6286 RAD 0.0185185 + txt002 + SPHERE CENTER -0.130858 0.0995811 0.624003 RAD 0.00617284 + txt002 + SPHERE CENTER -0.135326 0.123725 0.621398 RAD 0.00617284 + txt002 + SPHERE CENTER -0.134736 0.113639 0.643928 RAD 0.00617284 + txt002 + SPHERE CENTER -0.148938 0.0843858 0.631205 RAD 0.00617284 + txt002 + SPHERE CENTER -0.152816 0.0984435 0.65113 RAD 0.00617284 + txt002 + SPHERE CENTER -0.171487 0.0933338 0.635801 RAD 0.00617284 + txt002 + SPHERE CENTER -0.149528 0.0944715 0.608675 RAD 0.00617284 + txt002 + SPHERE CENTER -0.172078 0.10342 0.613272 RAD 0.00617284 + txt002 + SPHERE CENTER -0.153997 0.118615 0.60607 RAD 0.00617284 + txt002 + SPHERE CENTER -0.31427 0.31427 0.544331 RAD 0.0555556 + txt002 + SPHERE CENTER -0.277961 0.367156 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.269898 0.374298 0.485076 RAD 0.00617284 + txt002 + SPHERE CENTER -0.270045 0.350338 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.291334 0.362218 0.487134 RAD 0.00617284 + txt002 + SPHERE CENTER -0.277815 0.391115 0.501329 RAD 0.00617284 + txt002 + SPHERE CENTER -0.299251 0.379036 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.285878 0.383973 0.523547 RAD 0.00617284 + txt002 + SPHERE CENTER -0.256525 0.379235 0.505236 RAD 0.00617284 + txt002 + SPHERE CENTER -0.264588 0.372093 0.527454 RAD 0.00617284 + txt002 + SPHERE CENTER -0.256671 0.355276 0.511201 RAD 0.00617284 + txt002 + SPHERE CENTER -0.252306 0.297666 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.235688 0.305995 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.259438 0.312359 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.245915 0.321516 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.228556 0.291303 0.509559 RAD 0.00617284 + txt002 + SPHERE CENTER -0.238783 0.306824 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.245173 0.282974 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.242079 0.282145 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.258696 0.273816 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.265828 0.288509 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.31427 0.31427 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER -0.32435 0.32435 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.33812 0.32066 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.32066 0.33812 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.3005 0.317959 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.29681 0.331729 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.29042 0.307879 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.317959 0.3005 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.307879 0.29042 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.331729 0.29681 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339925 0.383759 0.544331 RAD 0.0185185 + txt002 + SPHERE CENTER -0.334762 0.407156 0.538366 RAD 0.00617284 + txt002 + SPHERE CENTER -0.31686 0.392275 0.546597 RAD 0.00617284 + txt002 + SPHERE CENTER -0.326552 0.388696 0.524171 RAD 0.00617284 + txt002 + SPHERE CENTER -0.357827 0.39864 0.536101 RAD 0.00617284 + txt002 + SPHERE CENTER -0.349618 0.380181 0.521905 RAD 0.00617284 + txt002 + SPHERE CENTER -0.362991 0.375243 0.542066 RAD 0.00617284 + txt002 + SPHERE CENTER -0.348135 0.402218 0.558526 RAD 0.00617284 + txt002 + SPHERE CENTER -0.353299 0.378821 0.564491 RAD 0.00617284 + txt002 + SPHERE CENTER -0.330233 0.387337 0.566757 RAD 0.00617284 + txt002 + SPHERE CENTER -0.376234 0.330873 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.393346 0.348239 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.383366 0.345565 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.369843 0.354723 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.386213 0.333547 0.484868 RAD 0.00617284 + txt002 + SPHERE CENTER -0.362711 0.340031 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.369102 0.316181 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399736 0.324389 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.382624 0.307023 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.389757 0.321715 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.376234 0.330873 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.386461 0.346394 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.362711 0.340031 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.369843 0.354723 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399983 0.337237 0.579103 RAD 0.00617284 + txt002 + SPHERE CENTER -0.383366 0.345565 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.389757 0.321715 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.392851 0.322544 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.382624 0.307023 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.369102 0.316181 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.277961 0.367156 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.261966 0.385852 0.57931 RAD 0.00617284 + txt002 + SPHERE CENTER -0.259422 0.36581 0.565115 RAD 0.00617284 + txt002 + SPHERE CENTER -0.278159 0.38141 0.561208 RAD 0.00617284 + txt002 + SPHERE CENTER -0.280504 0.387198 0.595564 RAD 0.00617284 + txt002 + SPHERE CENTER -0.296698 0.382755 0.577461 RAD 0.00617284 + txt002 + SPHERE CENTER -0.2965 0.368501 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.261768 0.371598 0.599471 RAD 0.00617284 + txt002 + SPHERE CENTER -0.277764 0.352901 0.601529 RAD 0.00617284 + txt002 + SPHERE CENTER -0.259225 0.351556 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.31427 0.31427 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.304189 0.32435 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.29042 0.32066 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.307879 0.33812 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.328039 0.317959 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.331729 0.331729 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.33812 0.307879 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.31058 0.3005 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.32066 0.29042 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.29681 0.29681 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.252306 0.297666 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.228803 0.30415 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.238783 0.306824 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.245915 0.321516 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.242326 0.294992 0.603794 RAD 0.00617284 + txt002 + SPHERE CENTER -0.259438 0.312359 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.265828 0.288509 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.235194 0.2803 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.258696 0.273816 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.245173 0.282974 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.574159 0.153845 0.618405 RAD 0.0555556 + txt002 + SPHERE CENTER -0.612768 0.202534 0.658726 RAD 0.0185185 + txt002 + SPHERE CENTER -0.612732 0.225282 0.668328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.591695 0.212428 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER -0.60221 0.22113 0.64638 RAD 0.00617284 + txt002 + SPHERE CENTER -0.633805 0.215388 0.660098 RAD 0.00617284 + txt002 + SPHERE CENTER -0.623283 0.211236 0.63815 RAD 0.00617284 + txt002 + SPHERE CENTER -0.63384 0.192641 0.650495 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62329 0.206686 0.680674 RAD 0.00617284 + txt002 + SPHERE CENTER -0.623325 0.183939 0.671072 RAD 0.00617284 + txt002 + SPHERE CENTER -0.602253 0.193832 0.679302 RAD 0.00617284 + txt002 + SPHERE CENTER -0.543919 0.184086 0.678886 RAD 0.0185185 + txt002 + SPHERE CENTER -0.527458 0.200547 0.687117 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522843 0.187702 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.540303 0.205161 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.548533 0.196931 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.561378 0.201546 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER -0.564994 0.18047 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER -0.531074 0.179472 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.547535 0.163011 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER -0.526459 0.166627 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554987 0.225396 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.542885 0.243024 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER -0.534333 0.219861 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554987 0.225396 0.593714 RAD 0.00617284 + txt002 + SPHERE CENTER -0.563539 0.248559 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.575642 0.23093 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER -0.575642 0.23093 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542885 0.243024 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554987 0.225396 0.643096 RAD 0.00617284 + txt002 + SPHERE CENTER -0.534333 0.219861 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643008 0.172294 0.598245 RAD 0.0185185 + txt002 + SPHERE CENTER -0.660425 0.189742 0.599616 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645434 0.185725 0.618821 RAD 0.00617284 + txt002 + SPHERE CENTER -0.636618 0.196144 0.598245 RAD 0.00617284 + txt002 + SPHERE CENTER -0.657999 0.17631 0.57904 RAD 0.00617284 + txt002 + SPHERE CENTER -0.634191 0.182712 0.577669 RAD 0.00617284 + txt002 + SPHERE CENTER -0.640582 0.158862 0.577669 RAD 0.00617284 + txt002 + SPHERE CENTER -0.666816 0.165892 0.599616 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649399 0.148444 0.598245 RAD 0.00617284 + txt002 + SPHERE CENTER -0.651825 0.161875 0.618821 RAD 0.00617284 + txt002 + SPHERE CENTER -0.585228 0.195155 0.557924 RAD 0.0185185 + txt002 + SPHERE CENTER -0.574809 0.203972 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER -0.561378 0.201546 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER -0.568784 0.181486 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER -0.598659 0.197581 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER -0.592634 0.175095 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER -0.609078 0.188764 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER -0.591253 0.217641 0.549693 RAD 0.00617284 + txt002 + SPHERE CENTER -0.601672 0.208824 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER -0.577822 0.215215 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER -0.6044 0.123605 0.557924 RAD 0.0185185 + txt002 + SPHERE CENTER -0.620861 0.107144 0.549693 RAD 0.00617284 + txt002 + SPHERE CENTER -0.608016 0.102529 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER -0.625475 0.119989 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER -0.617245 0.128219 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER -0.621859 0.141064 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600784 0.14468 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER -0.599785 0.11076 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER -0.583324 0.127221 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER -0.58694 0.106145 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER -0.631939 0.130984 0.658726 RAD 0.0185185 + txt002 + SPHERE CENTER -0.643128 0.132649 0.680674 RAD 0.00617284 + txt002 + SPHERE CENTER -0.618482 0.133263 0.679302 RAD 0.00617284 + txt002 + SPHERE CENTER -0.631785 0.152367 0.671072 RAD 0.00617284 + txt002 + SPHERE CENTER -0.656585 0.130371 0.660098 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645242 0.150088 0.650495 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645397 0.128706 0.63815 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643283 0.111266 0.668328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.632094 0.109601 0.64638 RAD 0.00617284 + txt002 + SPHERE CENTER -0.618637 0.11188 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593331 0.0822954 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.591664 0.0609772 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.572676 0.076761 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593331 0.0822954 0.643096 RAD 0.00617284 + txt002 + SPHERE CENTER -0.612319 0.0665116 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.613986 0.0878298 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.613986 0.0878298 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER -0.591664 0.0609772 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593331 0.0822954 0.593714 RAD 0.00617284 + txt002 + SPHERE CENTER -0.572676 0.076761 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER -0.56309 0.112536 0.678886 RAD 0.0185185 + txt002 + SPHERE CENTER -0.549659 0.11011 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.53924 0.118927 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555684 0.132596 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER -0.573509 0.103719 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.579534 0.126205 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER -0.58694 0.106145 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER -0.557065 0.09005 0.687117 RAD 0.00617284 + txt002 + SPHERE CENTER -0.570497 0.0924762 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.546646 0.0988668 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.494808 0.247614 0.43322 RAD 0.0555556 + txt002 + SPHERE CENTER -0.494287 0.313607 0.399581 RAD 0.0185185 + txt002 + SPHERE CENTER -0.484182 0.326876 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.470513 0.310432 0.39372 RAD 0.00617284 + txt002 + SPHERE CENTER -0.488171 0.302705 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.507957 0.330051 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.511946 0.305881 0.384149 RAD 0.00617284 + txt002 + SPHERE CENTER -0.518062 0.316783 0.405442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.490299 0.337778 0.402668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.500404 0.324509 0.420874 RAD 0.00617284 + txt002 + SPHERE CENTER -0.476629 0.321334 0.415013 RAD 0.00617284 + txt002 + SPHERE CENTER -0.452978 0.302539 0.460062 RAD 0.0185185 + txt002 + SPHERE CENTER -0.436971 0.320401 0.454201 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436675 0.29902 0.441856 RAD 0.00617284 + txt002 + SPHERE CENTER -0.455413 0.3148 0.438769 RAD 0.00617284 + txt002 + SPHERE CENTER -0.453274 0.32392 0.472408 RAD 0.00617284 + txt002 + SPHERE CENTER -0.471717 0.318318 0.456976 RAD 0.00617284 + txt002 + SPHERE CENTER -0.469281 0.306057 0.478269 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434535 0.30814 0.475494 RAD 0.00617284 + txt002 + SPHERE CENTER -0.450543 0.290278 0.481355 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434239 0.286759 0.463149 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434629 0.269833 0.396183 RAD 0.0185185 + txt002 + SPHERE CENTER -0.426389 0.279233 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER -0.445377 0.263449 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER -0.448298 0.286276 0.383837 RAD 0.00617284 + txt002 + SPHERE CENTER -0.415641 0.285616 0.396183 RAD 0.00617284 + txt002 + SPHERE CENTER -0.43755 0.29266 0.40513 RAD 0.00617284 + txt002 + SPHERE CENTER -0.42388 0.276216 0.417476 RAD 0.00617284 + txt002 + SPHERE CENTER -0.41272 0.262789 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.420959 0.253389 0.408529 RAD 0.00617284 + txt002 + SPHERE CENTER -0.431707 0.247006 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536117 0.258683 0.372739 RAD 0.0185185 + txt002 + SPHERE CENTER -0.549787 0.275127 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.549787 0.275127 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER -0.529727 0.282533 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536117 0.258683 0.348047 RAD 0.00617284 + txt002 + SPHERE CENTER -0.516058 0.266089 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522448 0.242239 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.556177 0.251277 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542508 0.234833 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER -0.556177 0.251277 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER -0.476459 0.214908 0.369341 RAD 0.0185185 + txt002 + SPHERE CENTER -0.457868 0.209819 0.353908 RAD 0.00617284 + txt002 + SPHERE CENTER -0.458164 0.2312 0.366254 RAD 0.00617284 + txt002 + SPHERE CENTER -0.453963 0.210053 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.476163 0.193527 0.356995 RAD 0.00617284 + txt002 + SPHERE CENTER -0.472258 0.193761 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.494753 0.198616 0.372427 RAD 0.00617284 + txt002 + SPHERE CENTER -0.480363 0.214674 0.344961 RAD 0.00617284 + txt002 + SPHERE CENTER -0.498954 0.219763 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.480659 0.236055 0.357307 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536638 0.19269 0.406378 RAD 0.0185185 + txt002 + SPHERE CENTER -0.549603 0.17251 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER -0.528912 0.177908 0.424584 RAD 0.00617284 + txt002 + SPHERE CENTER -0.549105 0.191778 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER -0.557329 0.187292 0.394032 RAD 0.00617284 + txt002 + SPHERE CENTER -0.556831 0.20656 0.409464 RAD 0.00617284 + txt002 + SPHERE CENTER -0.544363 0.207471 0.388171 RAD 0.00617284 + txt002 + SPHERE CENTER -0.537136 0.173421 0.390945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.524171 0.193601 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER -0.516445 0.178819 0.403291 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554467 0.291389 0.436618 RAD 0.0185185 + txt002 + SPHERE CENTER -0.562288 0.314604 0.439705 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542501 0.306499 0.45205 RAD 0.00617284 + txt002 + SPHERE CENTER -0.541186 0.310183 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER -0.574255 0.299494 0.424272 RAD 0.00617284 + txt002 + SPHERE CENTER -0.553152 0.295073 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER -0.566433 0.276279 0.421186 RAD 0.00617284 + txt002 + SPHERE CENTER -0.575569 0.29581 0.448652 RAD 0.00617284 + txt002 + SPHERE CENTER -0.567748 0.272595 0.445566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555781 0.287705 0.460998 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554987 0.225396 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER -0.567359 0.227186 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.54267 0.227528 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555283 0.246777 0.482603 RAD 0.00617284 + txt002 + SPHERE CENTER -0.579676 0.225054 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.567601 0.244644 0.46131 RAD 0.00617284 + txt002 + SPHERE CENTER -0.567305 0.223263 0.448964 RAD 0.00617284 + txt002 + SPHERE CENTER -0.567063 0.205805 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554691 0.204014 0.457911 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542374 0.206147 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER -0.513157 0.28032 0.497099 RAD 0.0185185 + txt002 + SPHERE CENTER -0.507811 0.298839 0.512531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.489718 0.287442 0.500186 RAD 0.00617284 + txt002 + SPHERE CENTER -0.505577 0.302049 0.488152 RAD 0.00617284 + txt002 + SPHERE CENTER -0.531251 0.291716 0.509445 RAD 0.00617284 + txt002 + SPHERE CENTER -0.529016 0.294927 0.485065 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536597 0.273198 0.494013 RAD 0.00617284 + txt002 + SPHERE CENTER -0.515392 0.27711 0.521479 RAD 0.00617284 + txt002 + SPHERE CENTER -0.520738 0.258591 0.506047 RAD 0.00617284 + txt002 + SPHERE CENTER -0.497299 0.265714 0.509133 RAD 0.00617284 + txt002 + SPHERE CENTER -0.552323 0.0329639 0.43322 RAD 0.0555556 + txt002 + SPHERE CENTER -0.625877 0.0248832 0.436618 RAD 0.0185185 + txt002 + SPHERE CENTER -0.646362 0.0316054 0.448652 RAD 0.00617284 + txt002 + SPHERE CENTER -0.625173 0.0287309 0.460998 RAD 0.00617284 + txt002 + SPHERE CENTER -0.627981 0.0478 0.445566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.647066 0.0277577 0.424272 RAD 0.00617284 + txt002 + SPHERE CENTER -0.628685 0.0439523 0.421186 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62658 0.0210355 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER -0.644258 0.00868865 0.439705 RAD 0.00617284 + txt002 + SPHERE CENTER -0.623773 0.00196644 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER -0.623069 0.00581415 0.45205 RAD 0.00617284 + txt002 + SPHERE CENTER -0.584567 0.0138144 0.497099 RAD 0.0185185 + txt002 + SPHERE CENTER -0.584898 0.0177119 0.521479 RAD 0.00617284 + txt002 + SPHERE CENTER -0.56353 0.0185345 0.509133 RAD 0.00617284 + txt002 + SPHERE CENTER -0.580268 0.0364224 0.506047 RAD 0.00617284 + txt002 + SPHERE CENTER -0.605935 0.0129918 0.509445 RAD 0.00617284 + txt002 + SPHERE CENTER -0.601305 0.0317022 0.494013 RAD 0.00617284 + txt002 + SPHERE CENTER -0.605605 0.00909422 0.485065 RAD 0.00617284 + txt002 + SPHERE CENTER -0.589197 -0.00489609 0.512531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.588867 -0.00879364 0.488152 RAD 0.00617284 + txt002 + SPHERE CENTER -0.567829 -0.00407348 0.500186 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593331 0.0822954 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER -0.593994 0.105299 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER -0.572783 0.0926585 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582384 0.100664 0.457911 RAD 0.00617284 + txt002 + SPHERE CENTER -0.614541 0.0949359 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.602932 0.090301 0.448964 RAD 0.00617284 + txt002 + SPHERE CENTER -0.613879 0.0719323 0.46131 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604941 0.0869303 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604278 0.0639267 0.482603 RAD 0.00617284 + txt002 + SPHERE CENTER -0.58373 0.0742898 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593633 0.0440327 0.372739 RAD 0.0185185 + txt002 + SPHERE CENTER -0.607302 0.0604766 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.607302 0.0604766 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER -0.587242 0.0678827 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593633 0.0440327 0.348047 RAD 0.00617284 + txt002 + SPHERE CENTER -0.573573 0.0514389 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.579964 0.0275889 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.613693 0.0366265 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600023 0.0201827 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER -0.613693 0.0366265 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER -0.561087 0.101445 0.406378 RAD 0.0185185 + txt002 + SPHERE CENTER -0.551884 0.118381 0.390945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536664 0.103361 0.403291 RAD 0.00617284 + txt002 + SPHERE CENTER -0.550745 0.0944221 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER -0.576307 0.116465 0.394032 RAD 0.00617284 + txt002 + SPHERE CENTER -0.575168 0.0925065 0.388171 RAD 0.00617284 + txt002 + SPHERE CENTER -0.58551 0.0995293 0.409464 RAD 0.00617284 + txt002 + SPHERE CENTER -0.562225 0.125404 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER -0.571428 0.108468 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER -0.547006 0.110383 0.424584 RAD 0.00617284 + txt002 + SPHERE CENTER -0.520079 0.0521134 0.369341 RAD 0.0185185 + txt002 + SPHERE CENTER -0.523344 0.0542684 0.344961 RAD 0.00617284 + txt002 + SPHERE CENTER -0.534291 0.0358996 0.357307 RAD 0.00617284 + txt002 + SPHERE CENTER -0.541988 0.0591566 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.509132 0.0704822 0.356995 RAD 0.00617284 + txt002 + SPHERE CENTER -0.527777 0.0753703 0.372427 RAD 0.00617284 + txt002 + SPHERE CENTER -0.505868 0.0683272 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.501435 0.0472252 0.353908 RAD 0.00617284 + txt002 + SPHERE CENTER -0.49817 0.0450702 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.512382 0.0288565 0.366254 RAD 0.00617284 + txt002 + SPHERE CENTER -0.584869 -0.0244483 0.399581 RAD 0.0185185 + txt002 + SPHERE CENTER -0.5935 -0.0473753 0.402668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.57344 -0.0399691 0.415013 RAD 0.00617284 + txt002 + SPHERE CENTER -0.595617 -0.0308315 0.420874 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604929 -0.0318545 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.607046 -0.0153107 0.405442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.596298 -0.00892756 0.384149 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582752 -0.0409921 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.574121 -0.0180651 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.562692 -0.0335859 0.39372 RAD 0.00617284 + txt002 + SPHERE CENTER -0.511316 -0.0163676 0.396183 RAD 0.0185185 + txt002 + SPHERE CENTER -0.48882 -0.0212225 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.497372 0.00194055 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.491256 -0.00896145 0.408529 RAD 0.00617284 + txt002 + SPHERE CENTER -0.502764 -0.0395307 0.396183 RAD 0.00617284 + txt002 + SPHERE CENTER -0.505199 -0.0272696 0.417476 RAD 0.00617284 + txt002 + SPHERE CENTER -0.525259 -0.0346758 0.40513 RAD 0.00617284 + txt002 + SPHERE CENTER -0.50888 -0.0286287 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER -0.531375 -0.0237738 0.383837 RAD 0.00617284 + txt002 + SPHERE CENTER -0.517432 -0.00546563 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER -0.54356 -0.0355172 0.460062 RAD 0.0185185 + txt002 + SPHERE CENTER -0.530389 -0.0495897 0.475494 RAD 0.00617284 + txt002 + SPHERE CENTER -0.519442 -0.031221 0.463149 RAD 0.00617284 + txt002 + SPHERE CENTER -0.53532 -0.0261165 0.481355 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554507 -0.0538859 0.472408 RAD 0.00617284 + txt002 + SPHERE CENTER -0.559438 -0.0304127 0.478269 RAD 0.00617284 + txt002 + SPHERE CENTER -0.567678 -0.0398133 0.456976 RAD 0.00617284 + txt002 + SPHERE CENTER -0.538628 -0.0589904 0.454201 RAD 0.00617284 + txt002 + SPHERE CENTER -0.551799 -0.0449178 0.438769 RAD 0.00617284 + txt002 + SPHERE CENTER -0.527681 -0.0406217 0.441856 RAD 0.00617284 + txt002 + SPHERE CENTER -0.451136 0.0058509 0.729516 RAD 0.0555556 + txt002 + SPHERE CENTER -0.447081 0.0051487 0.803476 RAD 0.0185185 + txt002 + SPHERE CENTER -0.435909 0.01504 0.823149 RAD 0.00617284 + txt002 + SPHERE CENTER -0.423265 0.0115452 0.802231 RAD 0.00617284 + txt002 + SPHERE CENTER -0.440694 0.0289993 0.803352 RAD 0.00617284 + txt002 + SPHERE CENTER -0.459725 0.00864346 0.824394 RAD 0.00617284 + txt002 + SPHERE CENTER -0.46451 0.0226028 0.804597 RAD 0.00617284 + txt002 + SPHERE CENTER -0.470897 -0.0012478 0.804721 RAD 0.00617284 + txt002 + SPHERE CENTER -0.442297 -0.00881065 0.823273 RAD 0.00617284 + txt002 + SPHERE CENTER -0.453468 -0.0187019 0.8036 RAD 0.00617284 + txt002 + SPHERE CENTER -0.429652 -0.0123054 0.802355 RAD 0.00617284 + txt002 + SPHERE CENTER -0.386138 0.0172804 0.763155 RAD 0.0185185 + txt002 + SPHERE CENTER -0.364644 0.0293677 0.76191 RAD 0.00617284 + txt002 + SPHERE CENTER -0.375512 0.0213457 0.741241 RAD 0.00617284 + txt002 + SPHERE CENTER -0.385352 0.0401449 0.753867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37527 0.0253024 0.783824 RAD 0.00617284 + txt002 + SPHERE CENTER -0.395978 0.0360796 0.775781 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396764 0.0132151 0.785069 RAD 0.00617284 + txt002 + SPHERE CENTER -0.36543 0.0065032 0.771198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.386924 -0.00558411 0.772443 RAD 0.00617284 + txt002 + SPHERE CENTER -0.376298 -0.00151881 0.750529 RAD 0.00617284 + txt002 + SPHERE CENTER -0.439178 0.0688765 0.766553 RAD 0.0185185 + txt002 + SPHERE CENTER -0.426942 0.0903221 0.766429 RAD 0.00617284 + txt002 + SPHERE CENTER -0.416328 0.0699989 0.757266 RAD 0.00617284 + txt002 + SPHERE CENTER -0.435083 0.0806307 0.745229 RAD 0.00617284 + txt002 + SPHERE CENTER -0.449792 0.0891998 0.775717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.457933 0.0795084 0.754517 RAD 0.00617284 + txt002 + SPHERE CENTER -0.462029 0.0677542 0.775841 RAD 0.00617284 + txt002 + SPHERE CENTER -0.431037 0.078568 0.787754 RAD 0.00617284 + txt002 + SPHERE CENTER -0.443274 0.0571224 0.787878 RAD 0.00617284 + txt002 + SPHERE CENTER -0.420423 0.0582447 0.77859 RAD 0.00617284 + txt002 + SPHERE CENTER -0.512079 -0.00628079 0.769837 RAD 0.0185185 + txt002 + SPHERE CENTER -0.523883 -0.000557006 0.790755 RAD 0.00617284 + txt002 + SPHERE CENTER -0.49924 -0.00208214 0.790506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.51057 0.0165974 0.779001 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536722 -0.00475566 0.770086 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523409 0.0123987 0.758332 RAD 0.00617284 + txt002 + SPHERE CENTER -0.524918 -0.0104794 0.749168 RAD 0.00617284 + txt002 + SPHERE CENTER -0.525392 -0.0234352 0.781591 RAD 0.00617284 + txt002 + SPHERE CENTER -0.513588 -0.029159 0.760673 RAD 0.00617284 + txt002 + SPHERE CENTER -0.500749 -0.0249603 0.781342 RAD 0.00617284 + txt002 + SPHERE CENTER -0.504176 0.0574471 0.732914 RAD 0.0185185 + txt002 + SPHERE CENTER -0.508666 0.0817008 0.734036 RAD 0.00617284 + txt002 + SPHERE CENTER -0.488971 0.0722467 0.745541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.489545 0.0732807 0.720878 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523872 0.0669012 0.72141 RAD 0.00617284 + txt002 + SPHERE CENTER -0.504751 0.058481 0.708251 RAD 0.00617284 + txt002 + SPHERE CENTER -0.519382 0.0426474 0.720288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523298 0.0658672 0.746073 RAD 0.00617284 + txt002 + SPHERE CENTER -0.518808 0.0416134 0.744951 RAD 0.00617284 + txt002 + SPHERE CENTER -0.503602 0.0564131 0.757577 RAD 0.00617284 + txt002 + SPHERE CENTER -0.516134 -0.00557859 0.695877 RAD 0.0185185 + txt002 + SPHERE CENTER -0.540463 -0.00154892 0.697123 RAD 0.00617284 + txt002 + SPHERE CENTER -0.52751 -0.00538221 0.717791 RAD 0.00617284 + txt002 + SPHERE CENTER -0.524673 0.0156462 0.705165 RAD 0.00617284 + txt002 + SPHERE CENTER -0.529087 -0.00174531 0.675209 RAD 0.00617284 + txt002 + SPHERE CENTER -0.513298 0.0154498 0.683251 RAD 0.00617284 + txt002 + SPHERE CENTER -0.504759 -0.00577498 0.673964 RAD 0.00617284 + txt002 + SPHERE CENTER -0.531924 -0.0227737 0.687835 RAD 0.00617284 + txt002 + SPHERE CENTER -0.507596 -0.0268034 0.68659 RAD 0.00617284 + txt002 + SPHERE CENTER -0.518971 -0.026607 0.708504 RAD 0.00617284 + txt002 + SPHERE CENTER -0.459039 -0.0578769 0.766439 RAD 0.0185185 + txt002 + SPHERE CENTER -0.451803 -0.0707378 0.786236 RAD 0.00617284 + txt002 + SPHERE CENTER -0.435761 -0.0561039 0.774481 RAD 0.00617284 + txt002 + SPHERE CENTER -0.454158 -0.0461991 0.787639 RAD 0.00617284 + txt002 + SPHERE CENTER -0.475081 -0.0725109 0.778193 RAD 0.00617284 + txt002 + SPHERE CENTER -0.477435 -0.0479721 0.779597 RAD 0.00617284 + txt002 + SPHERE CENTER -0.482316 -0.05965 0.758396 RAD 0.00617284 + txt002 + SPHERE CENTER -0.456685 -0.0824157 0.765035 RAD 0.00617284 + txt002 + SPHERE CENTER -0.46392 -0.0695548 0.745238 RAD 0.00617284 + txt002 + SPHERE CENTER -0.440643 -0.0677817 0.753281 RAD 0.00617284 + txt002 + SPHERE CENTER -0.463094 -0.0571747 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER -0.459563 -0.081612 0.692603 RAD 0.00617284 + txt002 + SPHERE CENTER -0.442243 -0.0665888 0.701767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.463589 -0.0696122 0.713804 RAD 0.00617284 + txt002 + SPHERE CENTER -0.480415 -0.0721979 0.683315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.48444 -0.0601982 0.704516 RAD 0.00617284 + txt002 + SPHERE CENTER -0.483946 -0.0477607 0.683192 RAD 0.00617284 + txt002 + SPHERE CENTER -0.459069 -0.0691745 0.671279 RAD 0.00617284 + txt002 + SPHERE CENTER -0.4626 -0.0447373 0.671155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.441749 -0.0541513 0.680442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.398096 -0.0457452 0.726118 RAD 0.0185185 + txt002 + SPHERE CENTER -0.373728 -0.0495643 0.724997 RAD 0.00617284 + txt002 + SPHERE CENTER -0.383722 -0.030137 0.713492 RAD 0.00617284 + txt002 + SPHERE CENTER -0.382672 -0.0306825 0.738155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.388102 -0.0651725 0.737623 RAD 0.00617284 + txt002 + SPHERE CENTER -0.397047 -0.0462908 0.750781 RAD 0.00617284 + txt002 + SPHERE CENTER -0.41247 -0.0613535 0.738744 RAD 0.00617284 + txt002 + SPHERE CENTER -0.389151 -0.064627 0.71296 RAD 0.00617284 + txt002 + SPHERE CENTER -0.41352 -0.060808 0.714081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399146 -0.0451997 0.701455 RAD 0.00617284 + txt002 + SPHERE CENTER -0.4293 -0.115031 0.544331 RAD 0.0555556 + txt002 + SPHERE CENTER -0.424299 -0.178985 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.412497 -0.190929 0.599471 RAD 0.00617284 + txt002 + SPHERE CENTER -0.400273 -0.174844 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.417001 -0.16674 0.601529 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436523 -0.195071 0.595564 RAD 0.00617284 + txt002 + SPHERE CENTER -0.441027 -0.170881 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.448325 -0.183127 0.577461 RAD 0.00617284 + txt002 + SPHERE CENTER -0.419795 -0.203175 0.57931 RAD 0.00617284 + txt002 + SPHERE CENTER -0.431597 -0.191231 0.561208 RAD 0.00617284 + txt002 + SPHERE CENTER -0.407571 -0.18709 0.565115 RAD 0.00617284 + txt002 + SPHERE CENTER -0.367336 -0.131634 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.343834 -0.12515 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.353814 -0.122476 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.360946 -0.107784 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.357357 -0.134308 0.603794 RAD 0.00617284 + txt002 + SPHERE CENTER -0.374468 -0.116942 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.380859 -0.140792 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.350225 -0.149 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.373727 -0.155484 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.360204 -0.146326 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.4293 -0.115031 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.41922 -0.10495 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40545 -0.10864 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.42291 -0.0911807 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.44307 -0.111341 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.44676 -0.0975713 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.45315 -0.121421 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.425611 -0.128801 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.435691 -0.138881 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.411841 -0.13249 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.486264 -0.162382 0.544331 RAD 0.0185185 + txt002 + SPHERE CENTER -0.502603 -0.174264 0.558526 RAD 0.00617284 + txt002 + SPHERE CENTER -0.479659 -0.170327 0.566757 RAD 0.00617284 + txt002 + SPHERE CENTER -0.495376 -0.15142 0.564491 RAD 0.00617284 + txt002 + SPHERE CENTER -0.509207 -0.166319 0.536101 RAD 0.00617284 + txt002 + SPHERE CENTER -0.501981 -0.143475 0.542066 RAD 0.00617284 + txt002 + SPHERE CENTER -0.492868 -0.154437 0.521905 RAD 0.00617284 + txt002 + SPHERE CENTER -0.49349 -0.185226 0.538366 RAD 0.00617284 + txt002 + SPHERE CENTER -0.477151 -0.173345 0.524171 RAD 0.00617284 + txt002 + SPHERE CENTER -0.470546 -0.18129 0.546597 RAD 0.00617284 + txt002 + SPHERE CENTER -0.491265 -0.0984274 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.501491 -0.082906 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.477742 -0.0892696 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.484874 -0.0745774 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.515014 -0.0920638 0.579103 RAD 0.00617284 + txt002 + SPHERE CENTER -0.498397 -0.0837352 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.504787 -0.107585 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.507882 -0.106756 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.497655 -0.122277 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.484132 -0.11312 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.491265 -0.0984274 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.508376 -0.0810612 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.498397 -0.0837352 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.484874 -0.0745774 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.501244 -0.0957534 0.484868 RAD 0.00617284 + txt002 + SPHERE CENTER -0.477742 -0.0892696 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.484132 -0.11312 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.514767 -0.104911 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.497655 -0.122277 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.504787 -0.107585 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.424299 -0.178985 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.411775 -0.200165 0.505236 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399922 -0.179342 0.511201 RAD 0.00617284 + txt002 + SPHERE CENTER -0.415187 -0.189948 0.527454 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436152 -0.199808 0.501329 RAD 0.00617284 + txt002 + SPHERE CENTER -0.439564 -0.189591 0.523547 RAD 0.00617284 + txt002 + SPHERE CENTER -0.448677 -0.178629 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.420888 -0.189202 0.485076 RAD 0.00617284 + txt002 + SPHERE CENTER -0.433412 -0.168023 0.487134 RAD 0.00617284 + txt002 + SPHERE CENTER -0.409035 -0.168379 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.4293 -0.115031 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER -0.439381 -0.10495 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.45315 -0.10864 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.435691 -0.0911807 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.415531 -0.111341 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.411841 -0.0975713 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40545 -0.121421 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.43299 -0.128801 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.42291 -0.138881 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.44676 -0.13249 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.367336 -0.131634 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.350719 -0.123305 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.374468 -0.116942 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.360946 -0.107784 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.343587 -0.137998 0.509559 RAD 0.00617284 + txt002 + SPHERE CENTER -0.353814 -0.122476 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.360204 -0.146326 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.357109 -0.147155 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.373727 -0.155484 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.380859 -0.140792 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.248762 -0.0483751 0.655442 RAD 0.0555556 + txt002 + SPHERE CENTER -0.183785 -0.0599222 0.689081 RAD 0.0185185 + txt002 + SPHERE CENTER -0.160406 -0.0522053 0.690965 RAD 0.00617284 + txt002 + SPHERE CENTER -0.171954 -0.0513956 0.669156 RAD 0.00617284 + txt002 + SPHERE CENTER -0.178533 -0.0358698 0.687193 RAD 0.00617284 + txt002 + SPHERE CENTER -0.172236 -0.0607319 0.71089 RAD 0.00617284 + txt002 + SPHERE CENTER -0.190363 -0.0443964 0.707118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.195615 -0.0684488 0.709006 RAD 0.00617284 + txt002 + SPHERE CENTER -0.165658 -0.0762577 0.692853 RAD 0.00617284 + txt002 + SPHERE CENTER -0.189036 -0.0839747 0.690969 RAD 0.00617284 + txt002 + SPHERE CENTER -0.177206 -0.075448 0.671044 RAD 0.00617284 + txt002 + SPHERE CENTER -0.187119 -0.0172857 0.6286 RAD 0.0185185 + txt002 + SPHERE CENTER -0.176731 -0.00705049 0.608675 RAD 0.00617284 + txt002 + SPHERE CENTER -0.192673 -0.025725 0.60607 RAD 0.00617284 + txt002 + SPHERE CENTER -0.200733 -0.00352517 0.613272 RAD 0.00617284 + txt002 + SPHERE CENTER -0.171177 0.00138875 0.631205 RAD 0.00617284 + txt002 + SPHERE CENTER -0.195179 0.00491406 0.635801 RAD 0.00617284 + txt002 + SPHERE CENTER -0.181564 -0.00884647 0.65113 RAD 0.00617284 + txt002 + SPHERE CENTER -0.163117 -0.020811 0.624003 RAD 0.00617284 + txt002 + SPHERE CENTER -0.173504 -0.0310463 0.643928 RAD 0.00617284 + txt002 + SPHERE CENTER -0.179058 -0.0394855 0.621398 RAD 0.00617284 + txt002 + SPHERE CENTER -0.215921 0.00673113 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER -0.20044 0.0258737 0.690591 RAD 0.00617284 + txt002 + SPHERE CENTER -0.196602 0.00551963 0.677151 RAD 0.00617284 + txt002 + SPHERE CENTER -0.215612 0.0203763 0.671903 RAD 0.00617284 + txt002 + SPHERE CENTER -0.21976 0.0270852 0.705919 RAD 0.00617284 + txt002 + SPHERE CENTER -0.234932 0.0215878 0.687231 RAD 0.00617284 + txt002 + SPHERE CENTER -0.235241 0.00794264 0.707807 RAD 0.00617284 + txt002 + SPHERE CENTER -0.200749 0.0122285 0.711167 RAD 0.00617284 + txt002 + SPHERE CENTER -0.21623 -0.00691403 0.713055 RAD 0.00617284 + txt002 + SPHERE CENTER -0.196911 -0.00812553 0.697727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.245428 -0.0910116 0.715923 RAD 0.0185185 + txt002 + SPHERE CENTER -0.234308 -0.0942304 0.737733 RAD 0.00617284 + txt002 + SPHERE CENTER -0.221514 -0.0854464 0.718528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.238704 -0.0714204 0.729364 RAD 0.00617284 + txt002 + SPHERE CENTER -0.258223 -0.0997955 0.735128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.262619 -0.0769856 0.726759 RAD 0.00617284 + txt002 + SPHERE CENTER -0.269343 -0.0965768 0.713318 RAD 0.00617284 + txt002 + SPHERE CENTER -0.241032 -0.113822 0.724292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.252152 -0.110603 0.702483 RAD 0.00617284 + txt002 + SPHERE CENTER -0.228237 -0.105038 0.705088 RAD 0.00617284 + txt002 + SPHERE CENTER -0.277564 -0.0243582 0.719322 RAD 0.0185185 + txt002 + SPHERE CENTER -0.275459 -0.0076281 0.737359 RAD 0.00617284 + txt002 + SPHERE CENTER -0.255218 -0.0167139 0.726523 RAD 0.00617284 + txt002 + SPHERE CENTER -0.270078 -0.00142185 0.714074 RAD 0.00617284 + txt002 + SPHERE CENTER -0.297806 -0.0152725 0.730157 RAD 0.00617284 + txt002 + SPHERE CENTER -0.292425 -0.00906621 0.706872 RAD 0.00617284 + txt002 + SPHERE CENTER -0.299911 -0.0320026 0.71212 RAD 0.00617284 + txt002 + SPHERE CENTER -0.282946 -0.0305645 0.742607 RAD 0.00617284 + txt002 + SPHERE CENTER -0.285051 -0.0472946 0.72457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.262704 -0.0396503 0.731771 RAD 0.00617284 + txt002 + SPHERE CENTER -0.310405 -0.0794645 0.682285 RAD 0.0185185 + txt002 + SPHERE CENTER -0.324811 -0.0817333 0.702209 RAD 0.00617284 + txt002 + SPHERE CENTER -0.300317 -0.0800146 0.704814 RAD 0.00617284 + txt002 + SPHERE CENTER -0.313378 -0.0603366 0.697613 RAD 0.00617284 + txt002 + SPHERE CENTER -0.334899 -0.0811832 0.67968 RAD 0.00617284 + txt002 + SPHERE CENTER -0.323466 -0.0597864 0.675083 RAD 0.00617284 + txt002 + SPHERE CENTER -0.320493 -0.0789143 0.659755 RAD 0.00617284 + txt002 + SPHERE CENTER -0.321838 -0.100861 0.686881 RAD 0.00617284 + txt002 + SPHERE CENTER -0.307433 -0.0985923 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER -0.297345 -0.0991425 0.689486 RAD 0.00617284 + txt002 + SPHERE CENTER -0.216626 -0.115028 0.652044 RAD 0.0185185 + txt002 + SPHERE CENTER -0.195663 -0.127519 0.655816 RAD 0.00617284 + txt002 + SPHERE CENTER -0.194866 -0.104303 0.647447 RAD 0.00617284 + txt002 + SPHERE CENTER -0.201738 -0.108803 0.670732 RAD 0.00617284 + txt002 + SPHERE CENTER -0.217423 -0.138245 0.660413 RAD 0.00617284 + txt002 + SPHERE CENTER -0.223497 -0.119529 0.675329 RAD 0.00617284 + txt002 + SPHERE CENTER -0.238386 -0.125754 0.656641 RAD 0.00617284 + txt002 + SPHERE CENTER -0.210551 -0.133744 0.637128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.231514 -0.121254 0.633356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.209754 -0.110528 0.628759 RAD 0.00617284 + txt002 + SPHERE CENTER -0.281603 -0.103481 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.291073 -0.126206 0.620293 RAD 0.00617284 + txt002 + SPHERE CENTER -0.271345 -0.119897 0.633733 RAD 0.00617284 + txt002 + SPHERE CENTER -0.293457 -0.110246 0.638981 RAD 0.00617284 + txt002 + SPHERE CENTER -0.301332 -0.10979 0.604965 RAD 0.00617284 + txt002 + SPHERE CENTER -0.303716 -0.0938302 0.623653 RAD 0.00617284 + txt002 + SPHERE CENTER -0.291862 -0.0870656 0.603077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.279219 -0.119442 0.599717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.269749 -0.0967168 0.597829 RAD 0.00617284 + txt002 + SPHERE CENTER -0.25949 -0.113132 0.613157 RAD 0.00617284 + txt002 + SPHERE CENTER -0.21996 -0.0723919 0.591563 RAD 0.0185185 + txt002 + SPHERE CENTER -0.20388 -0.0673141 0.573526 RAD 0.00617284 + txt002 + SPHERE CENTER -0.216456 -0.0490355 0.584361 RAD 0.00617284 + txt002 + SPHERE CENTER -0.198742 -0.0609052 0.596811 RAD 0.00617284 + txt002 + SPHERE CENTER -0.207384 -0.0906706 0.580727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.202246 -0.0842617 0.604012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.223463 -0.0957484 0.598764 RAD 0.00617284 + txt002 + SPHERE CENTER -0.225098 -0.0788008 0.568278 RAD 0.00617284 + txt002 + SPHERE CENTER -0.241177 -0.0838786 0.586315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.237674 -0.0605222 0.579113 RAD 0.00617284 + txt002 + SPHERE CENTER -0.471405 0.471405 1.11022e-16 RAD 0.166667 + txt002 + SPHERE CENTER -0.508983 0.690426 8.51251e-17 RAD 0.0555556 + txt002 + SPHERE CENTER -0.484794 0.755941 -0.0246914 RAD 0.0185185 + txt002 + SPHERE CENTER -0.47411 0.767658 -0.0436186 RAD 0.00617284 + txt002 + SPHERE CENTER -0.467528 0.744501 -0.0381316 RAD 0.00617284 + txt002 + SPHERE CENTER -0.489758 0.749038 -0.0478724 RAD 0.00617284 + txt002 + SPHERE CENTER -0.491377 0.779098 -0.0301783 RAD 0.00617284 + txt002 + SPHERE CENTER -0.507025 0.760478 -0.0344321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.502061 0.767382 -0.0112511 RAD 0.00617284 + txt002 + SPHERE CENTER -0.469146 0.774562 -0.0204376 RAD 0.00617284 + txt002 + SPHERE CENTER -0.47983 0.762845 -0.00151032 RAD 0.00617284 + txt002 + SPHERE CENTER -0.462564 0.751405 -0.0149506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436283 0.7029 -0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER -0.418941 0.714226 -0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER -0.43889 0.704751 -0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.44101 0.724842 -0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.416335 0.712374 0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER -0.438403 0.722991 0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER -0.433677 0.701048 0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER -0.414215 0.692283 -0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER -0.431557 0.680957 0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434163 0.682808 -0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER -0.478434 0.695668 -0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.481931 0.703418 -0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER -0.500827 0.694124 -0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER -0.491475 0.716184 -0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER -0.459538 0.704962 -0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER -0.469082 0.717727 -0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.456041 0.697211 -0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER -0.46889 0.682902 -0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.465393 0.675152 -0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER -0.487786 0.673608 -0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER -0.557494 0.743468 -0.0178949 RAD 0.0185185 + txt002 + SPHERE CENTER -0.560084 0.767402 -0.0233819 RAD 0.00617284 + txt002 + SPHERE CENTER -0.543179 0.760285 -0.00685171 RAD 0.00617284 + txt002 + SPHERE CENTER -0.53997 0.755145 -0.0307879 RAD 0.00617284 + txt002 + SPHERE CENTER -0.574398 0.750585 -0.0344251 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554284 0.738328 -0.0418311 RAD 0.00617284 + txt002 + SPHERE CENTER -0.571808 0.726651 -0.0289382 RAD 0.00617284 + txt002 + SPHERE CENTER -0.577608 0.755725 -0.0104889 RAD 0.00617284 + txt002 + SPHERE CENTER -0.575017 0.731791 -0.00500196 RAD 0.00617284 + txt002 + SPHERE CENTER -0.560703 0.748608 0.00604126 RAD 0.00617284 + txt002 + SPHERE CENTER -0.551134 0.683194 -0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER -0.573364 0.687731 -0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.571303 0.682033 -0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER -0.56324 0.703871 -0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER -0.553195 0.688893 -0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER -0.543071 0.705033 -0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER -0.530964 0.684356 -0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.561258 0.667055 -0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539027 0.662518 -0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.559196 0.661356 -0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER -0.581682 0.677953 0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER -0.601808 0.682851 0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER -0.579842 0.680568 0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.58454 0.700216 0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.603648 0.680237 -0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER -0.58638 0.697602 -0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER -0.583522 0.675339 -0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER -0.59895 0.660588 0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER -0.578824 0.65569 -0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.576984 0.658304 0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER -0.515343 0.7507 0.0425863 RAD 0.0185185 + txt002 + SPHERE CENTER -0.506594 0.773394 0.0468401 RAD 0.00617284 + txt002 + SPHERE CENTER -0.491321 0.755462 0.0394341 RAD 0.00617284 + txt002 + SPHERE CENTER -0.507924 0.764807 0.0237283 RAD 0.00617284 + txt002 + SPHERE CENTER -0.530616 0.768632 0.0499923 RAD 0.00617284 + txt002 + SPHERE CENTER -0.531946 0.760045 0.0268805 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539365 0.745938 0.0457385 RAD 0.00617284 + txt002 + SPHERE CENTER -0.514012 0.759287 0.065698 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522762 0.736593 0.0614442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.49874 0.741355 0.058292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539531 0.685185 0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.538818 0.693658 0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER -0.517905 0.691194 0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER -0.534075 0.708875 0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER -0.560445 0.687649 0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555702 0.702866 0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.561158 0.679176 0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER -0.544274 0.669969 0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.544988 0.661495 0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523361 0.667505 0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER -0.466832 0.697658 0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER -0.447385 0.709346 0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.447429 0.703286 0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER -0.46231 0.721188 0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER -0.466788 0.703718 0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER -0.481713 0.71556 0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER -0.486235 0.692031 0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.451907 0.685816 0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.471354 0.674129 0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.451951 0.679757 0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER -0.335322 0.607487 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.283164 0.659645 0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER -0.269894 0.672915 0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER -0.275822 0.649528 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.293281 0.666987 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.277236 0.683032 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.300624 0.677104 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.290507 0.669762 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.259777 0.665573 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.273047 0.652302 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.265705 0.642185 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.286452 0.603979 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.279361 0.614273 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.303327 0.613293 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.288206 0.628413 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.262487 0.604959 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.271332 0.619099 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.269578 0.594664 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.277607 0.589839 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.284698 0.579544 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.301572 0.588858 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.33883 0.656357 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.328536 0.663448 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.314396 0.654603 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.329516 0.639482 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.35297 0.665202 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.353951 0.641237 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.363265 0.658111 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.33785 0.680322 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.348145 0.673232 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.32371 0.671477 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.332034 0.663153 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.321274 0.684748 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.308341 0.666888 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.326131 0.678752 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.344967 0.681014 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.349824 0.675018 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.355727 0.659419 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.327177 0.669149 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.337937 0.647554 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.314244 0.651289 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.3877 0.659866 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.391875 0.684201 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37258 0.674986 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37258 0.674986 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.406996 0.669081 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.3877 0.659866 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40282 0.644745 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.406996 0.669081 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40282 0.644745 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.3877 0.659866 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.384191 0.610996 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.389739 0.622198 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.366159 0.617804 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.378964 0.63493 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.407771 0.61539 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396997 0.628121 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.402224 0.604188 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.394966 0.598265 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.389418 0.587062 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.371386 0.593871 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.279656 0.610775 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.258061 0.621535 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.264057 0.616678 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.275921 0.634468 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.27366 0.615632 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.29152 0.628565 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.295255 0.604872 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.261795 0.597842 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.28339 0.587082 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.267791 0.592985 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.331813 0.558618 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.320611 0.55307 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.30788 0.563845 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.325005 0.57665 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.344544 0.547843 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.348938 0.571423 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.355747 0.553391 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.327419 0.535038 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.338621 0.540585 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.314688 0.545813 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.282943 0.555109 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.258608 0.550934 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.267823 0.570229 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.267823 0.570229 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.273728 0.535813 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.282943 0.555109 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.298064 0.539989 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.273728 0.535813 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.298064 0.539989 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.282943 0.555109 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.335322 0.607487 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.313405 0.629404 -0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.316595 0.626214 -0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.318408 0.606941 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.335868 0.624401 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.311592 0.648676 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.330864 0.646863 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.308402 0.651867 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.294133 0.631217 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.290942 0.634407 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.295946 0.611945 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.331813 0.558618 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.319608 0.539107 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.307378 0.556863 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.322499 0.541743 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.344043 0.540862 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.346933 0.543497 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.356248 0.560372 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.328923 0.555982 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.341128 0.575492 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.316693 0.573738 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.384191 0.610996 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.403702 0.623201 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.401066 0.62031 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.385946 0.635431 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.386827 0.613886 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.369071 0.626116 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.367317 0.601681 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.401947 0.598766 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.382437 0.586561 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399312 0.595876 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.316914 0.678274 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.305407 0.69384 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.296616 0.671002 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.317721 0.674446 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.325704 0.701111 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.338018 0.681717 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.337211 0.685545 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.3046 0.697667 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.316107 0.682101 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.295809 0.67483 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.3877 0.659866 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.391875 0.684201 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37258 0.674986 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37258 0.674986 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.406996 0.669081 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.3877 0.659866 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40282 0.644745 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.406996 0.669081 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40282 0.644745 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.3877 0.659866 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.33883 0.656357 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.329538 0.677411 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.314897 0.661584 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.332022 0.674389 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.353472 0.672184 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.355956 0.669162 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.362764 0.65113 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.336346 0.659378 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.345639 0.638325 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.321705 0.643552 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.264535 0.625895 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.248969 0.637402 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.268363 0.625088 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.271807 0.646193 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.245142 0.638209 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.267979 0.647 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.260708 0.626702 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.241698 0.617105 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.257264 0.605598 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.261092 0.604791 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.286452 0.603979 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.265398 0.613271 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.26842 0.610787 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.281225 0.627912 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.283431 0.606463 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.299257 0.621104 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.304484 0.59717 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.270625 0.589337 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.291679 0.580045 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.273647 0.586853 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.282943 0.555109 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.258608 0.550934 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.267823 0.570229 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.267823 0.570229 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.273728 0.535813 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.282943 0.555109 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.298064 0.539989 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.273728 0.535813 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.298064 0.539989 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.282943 0.555109 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645066 0.554344 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.681385 0.616373 -0.129006 RAD 0.0185185 + txt002 + SPHERE CENTER -0.678928 0.639472 -0.137375 RAD 0.00617284 + txt002 + SPHERE CENTER -0.661636 0.629767 -0.122663 RAD 0.00617284 + txt002 + SPHERE CENTER -0.664108 0.621631 -0.145845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.698678 0.626079 -0.143718 RAD 0.00617284 + txt002 + SPHERE CENTER -0.683858 0.608237 -0.152187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.701135 0.602979 -0.135349 RAD 0.00617284 + txt002 + SPHERE CENTER -0.696205 0.634214 -0.120537 RAD 0.00617284 + txt002 + SPHERE CENTER -0.698662 0.611115 -0.112168 RAD 0.00617284 + txt002 + SPHERE CENTER -0.678912 0.624508 -0.105825 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649723 0.609912 -0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER -0.640648 0.631982 -0.0560094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.625749 0.614812 -0.0656463 RAD 0.00617284 + txt002 + SPHERE CENTER -0.64267 0.62585 -0.0798417 RAD 0.00617284 + txt002 + SPHERE CENTER -0.664623 0.627081 -0.0527151 RAD 0.00617284 + txt002 + SPHERE CENTER -0.666645 0.620949 -0.0765474 RAD 0.00617284 + txt002 + SPHERE CENTER -0.673698 0.605012 -0.0590577 RAD 0.00617284 + txt002 + SPHERE CENTER -0.647702 0.616044 -0.0385197 RAD 0.00617284 + txt002 + SPHERE CENTER -0.656777 0.593974 -0.0448623 RAD 0.00617284 + txt002 + SPHERE CENTER -0.632802 0.598874 -0.0481565 RAD 0.00617284 + txt002 + SPHERE CENTER -0.607573 0.617144 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.595495 0.63057 -0.139672 RAD 0.00617284 + txt002 + SPHERE CENTER -0.594239 0.605919 -0.140323 RAD 0.00617284 + txt002 + SPHERE CENTER -0.615286 0.617371 -0.146288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.608828 0.641795 -0.122182 RAD 0.00617284 + txt002 + SPHERE CENTER -0.628619 0.628595 -0.128798 RAD 0.00617284 + txt002 + SPHERE CENTER -0.620906 0.628369 -0.105343 RAD 0.00617284 + txt002 + SPHERE CENTER -0.587782 0.630343 -0.116217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.59986 0.616917 -0.0993785 RAD 0.00617284 + txt002 + SPHERE CENTER -0.586526 0.605692 -0.116868 RAD 0.00617284 + txt002 + SPHERE CENTER -0.676727 0.560805 -0.177765 RAD 0.0185185 + txt002 + SPHERE CENTER -0.689897 0.57563 -0.192477 RAD 0.00617284 + txt002 + SPHERE CENTER -0.693998 0.575587 -0.168128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.673115 0.585222 -0.177114 RAD 0.00617284 + txt002 + SPHERE CENTER -0.672626 0.560848 -0.202114 RAD 0.00617284 + txt002 + SPHERE CENTER -0.655844 0.57044 -0.186751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.659456 0.546023 -0.187402 RAD 0.00617284 + txt002 + SPHERE CENTER -0.693509 0.551213 -0.193128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.680339 0.536388 -0.178416 RAD 0.00617284 + txt002 + SPHERE CENTER -0.69761 0.55117 -0.16878 RAD 0.00617284 + txt002 + SPHERE CENTER -0.602915 0.561576 -0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER -0.602201 0.570049 -0.194773 RAD 0.00617284 + txt002 + SPHERE CENTER -0.623084 0.560414 -0.185788 RAD 0.00617284 + txt002 + SPHERE CENTER -0.615021 0.582252 -0.177557 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582032 0.571211 -0.180578 RAD 0.00617284 + txt002 + SPHERE CENTER -0.594852 0.583414 -0.163362 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582745 0.562738 -0.157397 RAD 0.00617284 + txt002 + SPHERE CENTER -0.590095 0.549372 -0.188808 RAD 0.00617284 + txt002 + SPHERE CENTER -0.590808 0.540899 -0.165627 RAD 0.00617284 + txt002 + SPHERE CENTER -0.610978 0.539737 -0.179823 RAD 0.00617284 + txt002 + SPHERE CENTER -0.640408 0.498776 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.627785 0.478525 -0.166213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.615951 0.497935 -0.156576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.630799 0.484234 -0.142381 RAD 0.00617284 + txt002 + SPHERE CENTER -0.652241 0.479365 -0.169507 RAD 0.00617284 + txt002 + SPHERE CENTER -0.655255 0.485075 -0.145675 RAD 0.00617284 + txt002 + SPHERE CENTER -0.664864 0.499616 -0.163165 RAD 0.00617284 + txt002 + SPHERE CENTER -0.637394 0.493066 -0.183703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.650016 0.513317 -0.17736 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62556 0.512476 -0.174066 RAD 0.00617284 + txt002 + SPHERE CENTER -0.718878 0.553573 -0.117284 RAD 0.0185185 + txt002 + SPHERE CENTER -0.73992 0.563328 -0.108814 RAD 0.00617284 + txt002 + SPHERE CENTER -0.720935 0.559693 -0.0934517 RAD 0.00617284 + txt002 + SPHERE CENTER -0.719679 0.577348 -0.110668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.737863 0.557208 -0.132647 RAD 0.00617284 + txt002 + SPHERE CENTER -0.717623 0.571228 -0.1345 RAD 0.00617284 + txt002 + SPHERE CENTER -0.716821 0.547453 -0.141116 RAD 0.00617284 + txt002 + SPHERE CENTER -0.739118 0.539553 -0.115431 RAD 0.00617284 + txt002 + SPHERE CENTER -0.718076 0.529798 -0.1239 RAD 0.00617284 + txt002 + SPHERE CENTER -0.720133 0.535918 -0.100068 RAD 0.00617284 + txt002 + SPHERE CENTER -0.682558 0.491544 -0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.688647 0.474542 -0.0825505 RAD 0.00617284 + txt002 + SPHERE CENTER -0.666351 0.485132 -0.0818993 RAD 0.00617284 + txt002 + SPHERE CENTER -0.686417 0.498226 -0.0759343 RAD 0.00617284 + txt002 + SPHERE CENTER -0.704854 0.480953 -0.10004 RAD 0.00617284 + txt002 + SPHERE CENTER -0.702624 0.504637 -0.093424 RAD 0.00617284 + txt002 + SPHERE CENTER -0.698765 0.497955 -0.116879 RAD 0.00617284 + txt002 + SPHERE CENTER -0.684788 0.46786 -0.106005 RAD 0.00617284 + txt002 + SPHERE CENTER -0.678699 0.484862 -0.122844 RAD 0.00617284 + txt002 + SPHERE CENTER -0.662492 0.47845 -0.105354 RAD 0.00617284 + txt002 + SPHERE CENTER -0.687216 0.547112 -0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER -0.690713 0.554862 -0.0274488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.667813 0.552739 -0.0364345 RAD 0.00617284 + txt002 + SPHERE CENTER -0.682694 0.570641 -0.0446649 RAD 0.00617284 + txt002 + SPHERE CENTER -0.710116 0.549235 -0.0416443 RAD 0.00617284 + txt002 + SPHERE CENTER -0.702097 0.565014 -0.0588603 RAD 0.00617284 + txt002 + SPHERE CENTER -0.706619 0.541484 -0.0648253 RAD 0.00617284 + txt002 + SPHERE CENTER -0.695235 0.531333 -0.0334138 RAD 0.00617284 + txt002 + SPHERE CENTER -0.691738 0.523582 -0.0565949 RAD 0.00617284 + txt002 + SPHERE CENTER -0.672335 0.52921 -0.0423994 RAD 0.00617284 + txt002 + SPHERE CENTER -0.471405 0.471405 -0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER -0.501645 0.501645 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.499795 0.519956 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.493653 0.523893 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.479397 0.509638 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.507788 0.497708 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.48739 0.48739 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.509638 0.479397 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522043 0.511963 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523893 0.493653 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.515901 0.515901 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542955 0.490576 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.559233 0.507719 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539759 0.502501 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536564 0.514426 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.562428 0.495794 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539759 0.502501 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.54615 0.478651 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.565623 0.483869 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.549345 0.466726 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.54615 0.478651 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.490576 0.542955 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.483869 0.565623 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.466726 0.549345 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.478651 0.54615 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.507719 0.559233 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.502501 0.539759 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.514426 0.536564 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.495794 0.562428 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.502501 0.539759 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.478651 0.54615 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.430095 0.482473 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.430434 0.489762 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.449569 0.477255 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.445366 0.500519 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.41096 0.49498 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.425893 0.505737 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.410622 0.487691 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.415162 0.471716 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.414824 0.464428 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434297 0.45921 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.419026 0.523783 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.404771 0.538038 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.410297 0.515053 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.427756 0.532513 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.4135 0.546768 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436486 0.541242 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.427756 0.532513 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396041 0.529309 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.410297 0.515053 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.401567 0.506323 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399854 0.452233 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.377186 0.45894 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396659 0.464158 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.393464 0.476083 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.380381 0.447015 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396659 0.464158 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40305 0.440308 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.383576 0.43509 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.406245 0.428383 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40305 0.440308 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.482473 0.430095 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.48121 0.407271 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.464428 0.414824 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.487691 0.410622 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.499256 0.422542 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.505737 0.425893 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.500519 0.445366 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.475992 0.426744 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.477255 0.449569 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.45921 0.434297 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.452233 0.399854 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.43509 0.383576 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.428383 0.406245 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.440308 0.40305 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.45894 0.377186 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.464158 0.396659 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.476083 0.393464 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.447015 0.380381 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.464158 0.396659 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.440308 0.40305 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523783 0.419026 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.538038 0.404771 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.515053 0.410297 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.532513 0.427756 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.546768 0.4135 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.541242 0.436486 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.532513 0.427756 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.529309 0.396041 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.515053 0.410297 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.506323 0.401567 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.607487 0.335322 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.659645 0.283164 -0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER -0.672915 0.269894 -0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649528 0.275822 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.666987 0.293281 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.683032 0.277236 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.677104 0.300624 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.669762 0.290507 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.665573 0.259777 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.652302 0.273047 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.642185 0.265705 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.603979 0.286452 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.592776 0.280905 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.580045 0.291679 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.59717 0.304484 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.61671 0.275678 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.621104 0.299257 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.627912 0.281225 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.599585 0.262872 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.610787 0.26842 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.586853 0.273647 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.656357 0.33883 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.661904 0.350033 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.638325 0.345639 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.65113 0.362764 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.679937 0.343224 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.669162 0.355956 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.674389 0.332022 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.667131 0.326099 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.661584 0.314897 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643552 0.321705 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.663153 0.332034 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.685865 0.340177 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.679339 0.33606 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.669651 0.355123 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.669679 0.336151 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.653465 0.351097 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.646968 0.328008 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.679367 0.317089 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.656656 0.308945 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.672841 0.312971 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.659866 0.3877 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.664041 0.412036 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.644745 0.40282 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.644745 0.40282 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.679161 0.396915 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.659866 0.3877 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.674986 0.37258 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.679161 0.396915 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.674986 0.37258 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.659866 0.3877 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.610996 0.384191 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.600701 0.391282 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.586561 0.382437 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.601681 0.367317 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.625136 0.393037 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.626116 0.369071 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.635431 0.385946 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.610016 0.408157 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62031 0.401066 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.595876 0.399312 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.610775 0.279656 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.602632 0.256944 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.587686 0.273158 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.606749 0.26347 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62572 0.263442 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.629838 0.269968 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.633864 0.286153 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.606658 0.27313 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.614801 0.295841 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.591712 0.289344 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.558618 0.331813 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.551527 0.342108 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.575492 0.341128 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.560372 0.356248 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.534652 0.332793 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.543497 0.346933 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.541743 0.322499 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.549772 0.317673 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.556863 0.307378 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.573738 0.316693 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555109 0.282943 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.530773 0.278768 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539989 0.298064 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539989 0.298064 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.545894 0.263648 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555109 0.282943 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.570229 0.267823 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.545894 0.263648 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.570229 0.267823 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555109 0.282943 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645066 0.554344 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.668521 0.610229 0.153697 RAD 0.0185185 + txt002 + SPHERE CENTER -0.663938 0.633406 0.160875 RAD 0.00617284 + txt002 + SPHERE CENTER -0.64522 0.617928 0.156428 RAD 0.00617284 + txt002 + SPHERE CENTER -0.65892 0.626429 0.137727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.687239 0.625707 0.158144 RAD 0.00617284 + txt002 + SPHERE CENTER -0.682221 0.61873 0.134996 RAD 0.00617284 + txt002 + SPHERE CENTER -0.691822 0.602531 0.150967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.673539 0.617206 0.176845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.678123 0.59403 0.169668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.654822 0.601728 0.172398 RAD 0.00617284 + txt002 + SPHERE CENTER -0.598918 0.585648 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.580238 0.601562 0.162601 RAD 0.00617284 + txt002 + SPHERE CENTER -0.581665 0.587563 0.142311 RAD 0.00617284 + txt002 + SPHERE CENTER -0.59781 0.605914 0.14581 RAD 0.00617284 + txt002 + SPHERE CENTER -0.597491 0.599646 0.18016 RAD 0.00617284 + txt002 + SPHERE CENTER -0.615063 0.603999 0.163369 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616171 0.583732 0.177429 RAD 0.00617284 + txt002 + SPHERE CENTER -0.581346 0.581295 0.176661 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600026 0.565381 0.173931 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582773 0.567297 0.156372 RAD 0.00617284 + txt002 + SPHERE CENTER -0.619787 0.622977 0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.608008 0.63767 0.0834188 RAD 0.00617284 + txt002 + SPHERE CENTER -0.601637 0.613891 0.0853287 RAD 0.00617284 + txt002 + SPHERE CENTER -0.623239 0.620102 0.0751099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.626157 0.646756 0.0974792 RAD 0.00617284 + txt002 + SPHERE CENTER -0.641389 0.629188 0.0891702 RAD 0.00617284 + txt002 + SPHERE CENTER -0.637936 0.632063 0.113449 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604555 0.640545 0.107698 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616334 0.625852 0.123668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.598184 0.616766 0.109608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.714669 0.578925 0.104938 RAD 0.0185185 + txt002 + SPHERE CENTER -0.729812 0.597914 0.109385 RAD 0.00617284 + txt002 + SPHERE CENTER -0.711617 0.592661 0.125228 RAD 0.00617284 + txt002 + SPHERE CENTER -0.70632 0.602084 0.103028 RAD 0.00617284 + txt002 + SPHERE CENTER -0.732864 0.584178 0.0890951 RAD 0.00617284 + txt002 + SPHERE CENTER -0.709372 0.588348 0.0827387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.71772 0.565189 0.0846485 RAD 0.00617284 + txt002 + SPHERE CENTER -0.738161 0.574755 0.111295 RAD 0.00617284 + txt002 + SPHERE CENTER -0.723017 0.555767 0.106848 RAD 0.00617284 + txt002 + SPHERE CENTER -0.719965 0.569503 0.127138 RAD 0.00617284 + txt002 + SPHERE CENTER -0.665934 0.591673 0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER -0.658095 0.605761 0.0319289 RAD 0.00617284 + txt002 + SPHERE CENTER -0.647455 0.607672 0.0541285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643855 0.58746 0.0404111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.676573 0.589763 0.0284303 RAD 0.00617284 + txt002 + SPHERE CENTER -0.662334 0.571461 0.0369125 RAD 0.00617284 + txt002 + SPHERE CENTER -0.684413 0.575674 0.0471312 RAD 0.00617284 + txt002 + SPHERE CENTER -0.680174 0.609975 0.0421477 RAD 0.00617284 + txt002 + SPHERE CENTER -0.688013 0.595887 0.0608487 RAD 0.00617284 + txt002 + SPHERE CENTER -0.669535 0.611885 0.0643473 RAD 0.00617284 + txt002 + SPHERE CENTER -0.691213 0.52304 0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER -0.712906 0.511567 0.0596212 RAD 0.00617284 + txt002 + SPHERE CENTER -0.699372 0.507717 0.079911 RAD 0.00617284 + txt002 + SPHERE CENTER -0.710453 0.529503 0.0764123 RAD 0.00617284 + txt002 + SPHERE CENTER -0.704747 0.526889 0.0420622 RAD 0.00617284 + txt002 + SPHERE CENTER -0.702295 0.544826 0.0588533 RAD 0.00617284 + txt002 + SPHERE CENTER -0.683054 0.538362 0.044793 RAD 0.00617284 + txt002 + SPHERE CENTER -0.693665 0.505104 0.0455609 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671972 0.516576 0.0482916 RAD 0.00617284 + txt002 + SPHERE CENTER -0.680131 0.501254 0.0658506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.6938 0.541596 0.165419 RAD 0.0185185 + txt002 + SPHERE CENTER -0.70016 0.547376 0.188567 RAD 0.00617284 + txt002 + SPHERE CENTER -0.676324 0.546319 0.182211 RAD 0.00617284 + txt002 + SPHERE CENTER -0.690564 0.564621 0.173728 RAD 0.00617284 + txt002 + SPHERE CENTER -0.717636 0.542652 0.171776 RAD 0.00617284 + txt002 + SPHERE CENTER -0.70804 0.559898 0.156937 RAD 0.00617284 + txt002 + SPHERE CENTER -0.711276 0.536873 0.148628 RAD 0.00617284 + txt002 + SPHERE CENTER -0.703396 0.524351 0.180258 RAD 0.00617284 + txt002 + SPHERE CENTER -0.697037 0.518571 0.157111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.679561 0.523294 0.173902 RAD 0.00617284 + txt002 + SPHERE CENTER -0.670344 0.48571 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.67091 0.466887 0.138803 RAD 0.00617284 + txt002 + SPHERE CENTER -0.650637 0.480853 0.136894 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671107 0.490138 0.147112 RAD 0.00617284 + txt002 + SPHERE CENTER -0.690617 0.471745 0.124743 RAD 0.00617284 + txt002 + SPHERE CENTER -0.690815 0.494995 0.133052 RAD 0.00617284 + txt002 + SPHERE CENTER -0.690052 0.490567 0.108773 RAD 0.00617284 + txt002 + SPHERE CENTER -0.670147 0.46246 0.114524 RAD 0.00617284 + txt002 + SPHERE CENTER -0.669581 0.481283 0.0985541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649874 0.476425 0.112614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624197 0.517014 0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER -0.60809 0.516313 0.190293 RAD 0.00617284 + txt002 + SPHERE CENTER -0.60089 0.524375 0.168094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616221 0.538029 0.181811 RAD 0.00617284 + txt002 + SPHERE CENTER -0.631397 0.508952 0.193792 RAD 0.00617284 + txt002 + SPHERE CENTER -0.639529 0.530668 0.18531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.647504 0.509653 0.175091 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616065 0.495298 0.180075 RAD 0.00617284 + txt002 + SPHERE CENTER -0.632172 0.495999 0.161374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.608865 0.50336 0.157875 RAD 0.00617284 + txt002 + SPHERE CENTER -0.607487 0.335322 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.629404 0.313405 0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.626214 0.316595 0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.606941 0.318408 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624401 0.335868 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.648676 0.311592 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.646863 0.330864 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.651867 0.308402 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.631217 0.294133 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.634407 0.290942 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.611945 0.295946 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.558618 0.331813 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.537564 0.341105 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.540585 0.338621 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.553391 0.355747 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555596 0.334297 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.571423 0.348938 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.57665 0.325005 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542791 0.317172 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.563845 0.30788 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.545813 0.314688 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.610996 0.384191 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.601704 0.405245 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.587062 0.389418 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604188 0.402224 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.625637 0.400018 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.628121 0.396997 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.63493 0.378964 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.608512 0.387213 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.617804 0.366159 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593871 0.371386 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.678274 0.316914 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.697473 0.31938 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.674538 0.318074 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.681812 0.338182 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.701209 0.31822 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.685547 0.337022 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.682009 0.315754 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.693935 0.298112 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.674736 0.295646 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671 0.296805 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.659866 0.3877 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.664041 0.412036 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.644745 0.40282 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.644745 0.40282 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.679161 0.396915 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.659866 0.3877 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.674986 0.37258 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.679161 0.396915 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.674986 0.37258 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.659866 0.3877 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.656357 0.33883 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.675867 0.351035 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.673232 0.348145 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.658111 0.363265 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.658993 0.341721 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.641237 0.353951 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.639482 0.329516 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.674113 0.3266 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.654603 0.314396 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671477 0.32371 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.625895 0.264535 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.623429 0.245336 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604627 0.260997 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624736 0.268271 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.644697 0.248874 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.646004 0.271809 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.647163 0.268073 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624589 0.2416 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.627055 0.2608 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.605787 0.257262 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.603979 0.286452 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.591774 0.266942 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.579544 0.284698 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.594664 0.269578 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616209 0.268696 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.619099 0.271332 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.628413 0.288206 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.601088 0.283817 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.613293 0.303327 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.588858 0.301572 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555109 0.282943 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.530773 0.278768 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539989 0.298064 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539989 0.298064 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.545894 0.263648 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555109 0.282943 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.570229 0.267823 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.545894 0.263648 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.570229 0.267823 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555109 0.282943 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.471405 0.471405 0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER -0.441164 0.501645 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.424703 0.518106 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.420089 0.505261 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.437548 0.522721 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.445778 0.51449 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.458623 0.519105 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.462239 0.498029 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.428319 0.497031 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.44478 0.48057 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.423704 0.484186 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399854 0.490576 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.382226 0.502679 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399854 0.490576 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.405389 0.511231 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.382226 0.502679 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.405389 0.511231 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399854 0.490576 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.376691 0.482024 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.39432 0.469922 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.39432 0.469922 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.452233 0.542955 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.44013 0.560583 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.431578 0.53742 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.452233 0.542955 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.460785 0.566118 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.472887 0.548489 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.472887 0.548489 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.44013 0.560583 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.452233 0.542955 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.431578 0.53742 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.512714 0.482473 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.51514 0.495905 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.492654 0.48988 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.506323 0.506323 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.5352 0.488498 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.526383 0.498917 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.532774 0.475067 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.521531 0.472055 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.519105 0.458623 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.499045 0.46603 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523783 0.523783 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.527958 0.548119 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.508662 0.538903 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.508662 0.538903 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.543078 0.532998 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523783 0.523783 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.538903 0.508662 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.543078 0.532998 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.538903 0.508662 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523783 0.523783 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542955 0.452233 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.564273 0.4539 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542955 0.452233 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.548489 0.472887 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.564273 0.4539 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.548489 0.472887 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542955 0.452233 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.558738 0.433245 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.53742 0.431578 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.53742 0.431578 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.460336 0.430095 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.446904 0.427669 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436486 0.436486 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.45293 0.450155 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.470754 0.421278 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.47678 0.443764 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.484186 0.423704 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.454311 0.407609 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.467742 0.410035 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.443892 0.416426 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.490576 0.399854 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.488909 0.378536 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.469922 0.39432 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.490576 0.399854 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.509564 0.384071 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.511231 0.405389 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.511231 0.405389 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.488909 0.378536 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.490576 0.399854 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.469922 0.39432 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.419026 0.419026 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.39469 0.414851 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.403906 0.434147 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.403906 0.434147 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.409811 0.399731 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.419026 0.419026 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434147 0.403906 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.409811 0.399731 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434147 0.403906 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.419026 0.419026 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643951 -0.172546 1.11022e-16 RAD 0.166667 + txt002 + SPHERE CENTER -0.835815 -0.157543 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.871646 -0.122136 0.165419 RAD 0.0185185 + txt002 + SPHERE CENTER -0.871334 -0.102403 0.180258 RAD 0.00617284 + txt002 + SPHERE CENTER -0.850164 -0.113406 0.173902 RAD 0.00617284 + txt002 + SPHERE CENTER -0.862937 -0.100577 0.157111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.892817 -0.111133 0.171776 RAD 0.00617284 + txt002 + SPHERE CENTER -0.884419 -0.109307 0.148628 RAD 0.00617284 + txt002 + SPHERE CENTER -0.893129 -0.130866 0.156937 RAD 0.00617284 + txt002 + SPHERE CENTER -0.880044 -0.123961 0.188567 RAD 0.00617284 + txt002 + SPHERE CENTER -0.880356 -0.143694 0.173728 RAD 0.00617284 + txt002 + SPHERE CENTER -0.858873 -0.134964 0.182211 RAD 0.00617284 + txt002 + SPHERE CENTER -0.799077 -0.135649 0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER -0.781177 -0.120908 0.180075 RAD 0.00617284 + txt002 + SPHERE CENTER -0.778973 -0.13149 0.157875 RAD 0.00617284 + txt002 + SPHERE CENTER -0.795477 -0.113462 0.161374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.801282 -0.125067 0.193792 RAD 0.00617284 + txt002 + SPHERE CENTER -0.815582 -0.11762 0.175091 RAD 0.00617284 + txt002 + SPHERE CENTER -0.819182 -0.139808 0.18531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.784778 -0.143095 0.190293 RAD 0.00617284 + txt002 + SPHERE CENTER -0.802678 -0.157836 0.181811 RAD 0.00617284 + txt002 + SPHERE CENTER -0.782573 -0.153678 0.168094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.82339 -0.0854653 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.811594 -0.0654286 0.114524 RAD 0.00617284 + txt002 + SPHERE CENTER -0.80102 -0.0876595 0.112614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.820516 -0.0820122 0.0985541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.833964 -0.0632344 0.124743 RAD 0.00617284 + txt002 + SPHERE CENTER -0.842886 -0.079818 0.108773 RAD 0.00617284 + txt002 + SPHERE CENTER -0.845761 -0.083271 0.133052 RAD 0.00617284 + txt002 + SPHERE CENTER -0.814468 -0.0688817 0.138803 RAD 0.00617284 + txt002 + SPHERE CENTER -0.826265 -0.0889183 0.147112 RAD 0.00617284 + txt002 + SPHERE CENTER -0.803895 -0.0911125 0.136894 RAD 0.00617284 + txt002 + SPHERE CENTER -0.908384 -0.14403 0.104938 RAD 0.0185185 + txt002 + SPHERE CENTER -0.926643 -0.128672 0.111295 RAD 0.00617284 + txt002 + SPHERE CENTER -0.90826 -0.133221 0.127138 RAD 0.00617284 + txt002 + SPHERE CENTER -0.904034 -0.1198 0.106848 RAD 0.00617284 + txt002 + SPHERE CENTER -0.926768 -0.139481 0.0890951 RAD 0.00617284 + txt002 + SPHERE CENTER -0.904159 -0.130608 0.0846485 RAD 0.00617284 + txt002 + SPHERE CENTER -0.908508 -0.154838 0.0827387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.930993 -0.152902 0.109385 RAD 0.00617284 + txt002 + SPHERE CENTER -0.912733 -0.16826 0.103028 RAD 0.00617284 + txt002 + SPHERE CENTER -0.912609 -0.157451 0.125228 RAD 0.00617284 + txt002 + SPHERE CENTER -0.860128 -0.107359 0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER -0.853284 -0.0905999 0.0455609 RAD 0.00617284 + txt002 + SPHERE CENTER -0.839638 -0.0940331 0.0658506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.840233 -0.111382 0.0482916 RAD 0.00617284 + txt002 + SPHERE CENTER -0.873773 -0.103926 0.0420622 RAD 0.00617284 + txt002 + SPHERE CENTER -0.860723 -0.124708 0.044793 RAD 0.00617284 + txt002 + SPHERE CENTER -0.880618 -0.120685 0.0588533 RAD 0.00617284 + txt002 + SPHERE CENTER -0.873178 -0.086577 0.0596212 RAD 0.00617284 + txt002 + SPHERE CENTER -0.880022 -0.103336 0.0764123 RAD 0.00617284 + txt002 + SPHERE CENTER -0.859532 -0.0900102 0.079911 RAD 0.00617284 + txt002 + SPHERE CENTER -0.872552 -0.179437 0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER -0.894035 -0.188167 0.0421477 RAD 0.00617284 + txt002 + SPHERE CENTER -0.885777 -0.195141 0.0643473 RAD 0.00617284 + txt002 + SPHERE CENTER -0.89378 -0.172046 0.0608487 RAD 0.00617284 + txt002 + SPHERE CENTER -0.880811 -0.172463 0.0284303 RAD 0.00617284 + txt002 + SPHERE CENTER -0.880556 -0.156342 0.0471312 RAD 0.00617284 + txt002 + SPHERE CENTER -0.859328 -0.163733 0.0369125 RAD 0.00617284 + txt002 + SPHERE CENTER -0.872807 -0.195558 0.0319289 RAD 0.00617284 + txt002 + SPHERE CENTER -0.851325 -0.186828 0.0404111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.864549 -0.202532 0.0541285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.884071 -0.194213 0.153697 RAD 0.0185185 + txt002 + SPHERE CENTER -0.891905 -0.197746 0.176845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.867957 -0.193701 0.172398 RAD 0.00617284 + txt002 + SPHERE CENTER -0.884286 -0.175383 0.169668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.908019 -0.198259 0.158144 RAD 0.00617284 + txt002 + SPHERE CENTER -0.900401 -0.175896 0.150967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.900186 -0.194726 0.134996 RAD 0.00617284 + txt002 + SPHERE CENTER -0.89169 -0.216576 0.160875 RAD 0.00617284 + txt002 + SPHERE CENTER -0.883856 -0.213043 0.137727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.867741 -0.212531 0.156428 RAD 0.00617284 + txt002 + SPHERE CENTER -0.84824 -0.229621 0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.843832 -0.25245 0.107698 RAD 0.00617284 + txt002 + SPHERE CENTER -0.826426 -0.235043 0.109608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.846687 -0.233837 0.123668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.865646 -0.247028 0.0974792 RAD 0.00617284 + txt002 + SPHERE CENTER -0.868501 -0.228415 0.113449 RAD 0.00617284 + txt002 + SPHERE CENTER -0.870053 -0.224198 0.0891702 RAD 0.00617284 + txt002 + SPHERE CENTER -0.845385 -0.248234 0.0834188 RAD 0.00617284 + txt002 + SPHERE CENTER -0.849792 -0.225404 0.0751099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.827978 -0.230827 0.0853287 RAD 0.00617284 + txt002 + SPHERE CENTER -0.811502 -0.207727 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.794108 -0.212743 0.176661 RAD 0.00617284 + txt002 + SPHERE CENTER -0.788345 -0.199907 0.156372 RAD 0.00617284 + txt002 + SPHERE CENTER -0.802328 -0.189621 0.173931 RAD 0.00617284 + txt002 + SPHERE CENTER -0.817265 -0.220563 0.18016 RAD 0.00617284 + txt002 + SPHERE CENTER -0.825486 -0.197441 0.177429 RAD 0.00617284 + txt002 + SPHERE CENTER -0.83466 -0.215547 0.163369 RAD 0.00617284 + txt002 + SPHERE CENTER -0.803282 -0.230849 0.162601 RAD 0.00617284 + txt002 + SPHERE CENTER -0.820676 -0.225832 0.14581 RAD 0.00617284 + txt002 + SPHERE CENTER -0.797518 -0.218012 0.142311 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643951 -0.172546 0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER -0.61371 -0.142305 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.597249 -0.125845 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.592635 -0.138689 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.610094 -0.12123 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.618324 -0.12946 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.631169 -0.124846 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.634785 -0.145921 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600865 -0.14692 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.617326 -0.163381 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.596251 -0.159765 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.5724 -0.153374 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.554772 -0.141271 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.5724 -0.153374 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.577935 -0.13272 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554772 -0.141271 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.577935 -0.13272 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.5724 -0.153374 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.549237 -0.161926 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.566866 -0.174029 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.566866 -0.174029 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624779 -0.100996 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.612676 -0.0833673 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604124 -0.10653 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624779 -0.100996 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.633331 -0.0778329 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645433 -0.0954616 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645433 -0.0954616 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.612676 -0.0833673 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624779 -0.100996 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604124 -0.10653 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.68526 -0.161477 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.687686 -0.148046 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.6652 -0.154071 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.678869 -0.137627 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.707746 -0.155452 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.698929 -0.145033 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.70532 -0.168883 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.694077 -0.171896 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.691651 -0.185327 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671591 -0.177921 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.696329 -0.120168 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.700504 -0.095832 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.681209 -0.105047 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.681209 -0.105047 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.715624 -0.110952 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.696329 -0.120168 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.711449 -0.135288 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.715624 -0.110952 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.711449 -0.135288 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.696329 -0.120168 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.715501 -0.191718 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.736819 -0.190051 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.715501 -0.191718 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.721035 -0.171063 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.736819 -0.190051 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.721035 -0.171063 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.715501 -0.191718 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.731284 -0.210706 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.709966 -0.212373 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.709966 -0.212373 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.632882 -0.213855 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.61945 -0.216282 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.609032 -0.207465 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.625476 -0.193796 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.6433 -0.222672 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649326 -0.200186 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.656732 -0.220246 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.626857 -0.236341 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.640288 -0.233915 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616438 -0.227525 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.663122 -0.244096 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.661455 -0.265414 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.642468 -0.249631 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.663122 -0.244096 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.68211 -0.25988 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.683777 -0.238562 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.683777 -0.238562 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.661455 -0.265414 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.663122 -0.244096 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.642468 -0.249631 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.591572 -0.224924 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.567237 -0.2291 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.576452 -0.209804 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.576452 -0.209804 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582357 -0.24422 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.591572 -0.224924 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.606693 -0.240045 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582357 -0.24422 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.606693 -0.240045 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.591572 -0.224924 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.69376 0.0133465 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.674309 0.0838533 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.66171 0.103063 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.653258 0.0800983 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.673446 0.0876683 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.682761 0.106818 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.694497 0.0914233 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.69536 0.0876083 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.662574 0.0992478 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.675172 0.0800382 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.654121 0.0762832 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62221 0.0325183 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.604582 0.0446211 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62221 0.0325183 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.627745 0.053173 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604582 0.0446211 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.627745 0.053173 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62221 0.0325183 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.599047 0.0239663 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616676 0.0118635 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616676 0.0118635 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.666287 0.0539145 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.662466 0.0547519 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.660752 0.0332597 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.682791 0.0439578 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.668 0.0754066 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.688325 0.0646126 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671821 0.0745692 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645962 0.0647085 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649783 0.0638711 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.644249 0.0432164 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.745859 0.0646815 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.750021 0.0887955 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.729506 0.078459 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.732161 0.0813312 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.766375 0.075018 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.748514 0.0675537 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.762212 0.050904 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.763719 0.0721458 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.759557 0.0480318 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.743204 0.0618093 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.737837 0.0347427 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.747099 0.0542122 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.743371 0.0553974 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.7241 0.0550267 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.741565 0.0335575 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.718566 0.0343719 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.732303 0.014088 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.760836 0.0339282 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.751574 0.0144587 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.757108 0.0351134 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.76531 -0.0058253 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.786629 -0.00415829 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.76531 -0.0058253 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.770845 0.0148294 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.786629 -0.00415829 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.770845 0.0148294 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.76531 -0.0058253 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.781094 -0.024813 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.759776 -0.02648 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.759776 -0.02648 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.701782 0.0432853 0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.693716 0.0608821 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.677932 0.0496759 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.694884 0.0652402 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.717566 0.0544915 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.718734 0.0588496 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.725632 0.0368947 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.700615 0.0389272 0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.708681 0.0213304 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.684831 0.027721 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.721234 -0.0272215 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.720593 -0.0310802 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.7 -0.0246945 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.718114 -0.00820099 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.741827 -0.0336072 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.739347 -0.010728 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.742467 -0.0297485 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.723713 -0.0501007 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.724354 -0.046242 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.70312 -0.043715 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649684 -0.00804971 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.628657 -0.00328338 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.630031 0.000378614 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.642244 0.0152909 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.648309 -0.0117117 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.661896 0.00686255 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.669336 -0.016478 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.636097 -0.026624 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.657124 -0.0313903 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.637471 -0.022962 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.835815 -0.157543 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.899353 -0.119969 -0.117284 RAD 0.0185185 + txt002 + SPHERE CENTER -0.909872 -0.0977075 -0.115431 RAD 0.00617284 + txt002 + SPHERE CENTER -0.891613 -0.104052 -0.100068 RAD 0.00617284 + txt002 + SPHERE CENTER -0.886771 -0.0997803 -0.1239 RAD 0.00617284 + txt002 + SPHERE CENTER -0.917612 -0.113625 -0.132647 RAD 0.00617284 + txt002 + SPHERE CENTER -0.894512 -0.115698 -0.141116 RAD 0.00617284 + txt002 + SPHERE CENTER -0.907093 -0.135886 -0.1345 RAD 0.00617284 + txt002 + SPHERE CENTER -0.922453 -0.117896 -0.108814 RAD 0.00617284 + txt002 + SPHERE CENTER -0.911935 -0.140158 -0.110668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.904194 -0.124241 -0.0934517 RAD 0.00617284 + txt002 + SPHERE CENTER -0.868703 -0.130205 -0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER -0.867758 -0.11253 -0.0334138 RAD 0.00617284 + txt002 + SPHERE CENTER -0.846864 -0.122142 -0.0423994 RAD 0.00617284 + txt002 + SPHERE CENTER -0.860854 -0.107566 -0.0565949 RAD 0.00617284 + txt002 + SPHERE CENTER -0.889596 -0.120593 -0.0416443 RAD 0.00617284 + txt002 + SPHERE CENTER -0.882692 -0.115629 -0.0648253 RAD 0.00617284 + txt002 + SPHERE CENTER -0.890541 -0.138267 -0.0588603 RAD 0.00617284 + txt002 + SPHERE CENTER -0.875606 -0.135168 -0.0274488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.876551 -0.152843 -0.0446649 RAD 0.00617284 + txt002 + SPHERE CENTER -0.854713 -0.14478 -0.0364345 RAD 0.00617284 + txt002 + SPHERE CENTER -0.836885 -0.0844101 -0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.826973 -0.0627848 -0.106005 RAD 0.00617284 + txt002 + SPHERE CENTER -0.81296 -0.083104 -0.105354 RAD 0.00617284 + txt002 + SPHERE CENTER -0.830202 -0.0805529 -0.122844 RAD 0.00617284 + txt002 + SPHERE CENTER -0.850898 -0.0640908 -0.10004 RAD 0.00617284 + txt002 + SPHERE CENTER -0.854126 -0.0818589 -0.116879 RAD 0.00617284 + txt002 + SPHERE CENTER -0.860809 -0.0857161 -0.093424 RAD 0.00617284 + txt002 + SPHERE CENTER -0.833656 -0.0666419 -0.0825505 RAD 0.00617284 + txt002 + SPHERE CENTER -0.843568 -0.0882673 -0.0759343 RAD 0.00617284 + txt002 + SPHERE CENTER -0.819643 -0.0869612 -0.0818993 RAD 0.00617284 + txt002 + SPHERE CENTER -0.866465 -0.147308 -0.177765 RAD 0.0185185 + txt002 + SPHERE CENTER -0.876203 -0.130609 -0.193128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.879733 -0.128522 -0.16878 RAD 0.00617284 + txt002 + SPHERE CENTER -0.857385 -0.124356 -0.178416 RAD 0.00617284 + txt002 + SPHERE CENTER -0.862935 -0.149395 -0.202114 RAD 0.00617284 + txt002 + SPHERE CENTER -0.844117 -0.143141 -0.187402 RAD 0.00617284 + txt002 + SPHERE CENTER -0.853198 -0.166093 -0.186751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.885283 -0.153561 -0.192477 RAD 0.00617284 + txt002 + SPHERE CENTER -0.875546 -0.170259 -0.177114 RAD 0.00617284 + txt002 + SPHERE CENTER -0.888813 -0.151474 -0.168128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.803997 -0.111748 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.798532 -0.108311 -0.183703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.797989 -0.131037 -0.174066 RAD 0.00617284 + txt002 + SPHERE CENTER -0.819589 -0.119537 -0.17736 RAD 0.00617284 + txt002 + SPHERE CENTER -0.80454 -0.0890219 -0.169507 RAD 0.00617284 + txt002 + SPHERE CENTER -0.825597 -0.100248 -0.163165 RAD 0.00617284 + txt002 + SPHERE CENTER -0.810005 -0.0924597 -0.145675 RAD 0.00617284 + txt002 + SPHERE CENTER -0.78294 -0.100522 -0.166213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.788405 -0.10396 -0.142381 RAD 0.00617284 + txt002 + SPHERE CENTER -0.782397 -0.123249 -0.156576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.802927 -0.184881 -0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER -0.785723 -0.180723 -0.188808 RAD 0.00617284 + txt002 + SPHERE CENTER -0.798991 -0.161937 -0.179823 RAD 0.00617284 + txt002 + SPHERE CENTER -0.782104 -0.173028 -0.165627 RAD 0.00617284 + txt002 + SPHERE CENTER -0.78966 -0.203667 -0.180578 RAD 0.00617284 + txt002 + SPHERE CENTER -0.786041 -0.195972 -0.157397 RAD 0.00617284 + txt002 + SPHERE CENTER -0.806864 -0.207825 -0.163362 RAD 0.00617284 + txt002 + SPHERE CENTER -0.806546 -0.192576 -0.194773 RAD 0.00617284 + txt002 + SPHERE CENTER -0.82375 -0.196734 -0.177557 RAD 0.00617284 + txt002 + SPHERE CENTER -0.819813 -0.17379 -0.185788 RAD 0.00617284 + txt002 + SPHERE CENTER -0.898283 -0.193102 -0.129006 RAD 0.0185185 + txt002 + SPHERE CENTER -0.920038 -0.201143 -0.120537 RAD 0.00617284 + txt002 + SPHERE CENTER -0.900209 -0.201384 -0.105825 RAD 0.00617284 + txt002 + SPHERE CENTER -0.910616 -0.17991 -0.112168 RAD 0.00617284 + txt002 + SPHERE CENTER -0.918112 -0.192861 -0.143718 RAD 0.00617284 + txt002 + SPHERE CENTER -0.90869 -0.171628 -0.135349 RAD 0.00617284 + txt002 + SPHERE CENTER -0.896357 -0.18482 -0.152187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.907705 -0.214335 -0.137375 RAD 0.00617284 + txt002 + SPHERE CENTER -0.88595 -0.206294 -0.145845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.887876 -0.214576 -0.122663 RAD 0.00617284 + txt002 + SPHERE CENTER -0.834745 -0.230676 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.824206 -0.252002 -0.116217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.810793 -0.231282 -0.116868 RAD 0.00617284 + txt002 + SPHERE CENTER -0.827952 -0.234336 -0.0993785 RAD 0.00617284 + txt002 + SPHERE CENTER -0.848158 -0.251396 -0.122182 RAD 0.00617284 + txt002 + SPHERE CENTER -0.851905 -0.23373 -0.105343 RAD 0.00617284 + txt002 + SPHERE CENTER -0.858698 -0.23007 -0.128798 RAD 0.00617284 + txt002 + SPHERE CENTER -0.830999 -0.248342 -0.139672 RAD 0.00617284 + txt002 + SPHERE CENTER -0.841538 -0.227016 -0.146288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.817586 -0.227621 -0.140323 RAD 0.00617284 + txt002 + SPHERE CENTER -0.867633 -0.203337 -0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER -0.868948 -0.209658 -0.0385197 RAD 0.00617284 + txt002 + SPHERE CENTER -0.84746 -0.202239 -0.0481565 RAD 0.00617284 + txt002 + SPHERE CENTER -0.865773 -0.186008 -0.0448623 RAD 0.00617284 + txt002 + SPHERE CENTER -0.889121 -0.210757 -0.0527151 RAD 0.00617284 + txt002 + SPHERE CENTER -0.885946 -0.187106 -0.0590577 RAD 0.00617284 + txt002 + SPHERE CENTER -0.887806 -0.204436 -0.0765474 RAD 0.00617284 + txt002 + SPHERE CENTER -0.870808 -0.226988 -0.0560094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.869493 -0.220667 -0.0798417 RAD 0.00617284 + txt002 + SPHERE CENTER -0.84932 -0.219569 -0.0656463 RAD 0.00617284 + txt002 + SPHERE CENTER -0.69376 0.0133465 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.668775 0.0631985 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.661946 0.0667914 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.65711 0.0452771 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.680354 0.0511945 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.673611 0.0847128 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.692019 0.069116 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.680439 0.08112 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.650366 0.0787954 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.657195 0.0752026 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.64553 0.0572811 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62221 0.0325183 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.604582 0.0446211 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62221 0.0325183 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.627745 0.053173 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604582 0.0446211 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.627745 0.053173 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62221 0.0325183 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.599047 0.0239663 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616676 0.0118635 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616676 0.0118635 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649684 -0.00804971 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.634953 -0.000226782 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.655218 0.012605 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.635947 0.0122343 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.629419 -0.0208815 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.630413 -0.00842045 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.644149 -0.0287044 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.64869 -0.0205108 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.66342 -0.0283337 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.668955 -0.00767898 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.740325 0.0440268 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.746894 0.0650768 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.739183 0.0653796 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.723153 0.0607735 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.748035 0.0437239 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.724295 0.0394207 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.741466 0.0226739 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.764065 0.04833 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.757496 0.02728 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.756355 0.0486329 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.721234 -0.0272215 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.732368 -0.0484665 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.715699 -0.0478762 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.737738 -0.0371781 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.737902 -0.0278118 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.743272 -0.0165234 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.726768 -0.00656677 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.715864 -0.0385099 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.70473 -0.0172649 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.699195 -0.0379196 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.76531 -0.0058253 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.786629 -0.00415829 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.76531 -0.0058253 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.770845 0.0148294 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.786629 -0.00415829 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.770845 0.0148294 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.76531 -0.0058253 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.781094 -0.024813 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.759776 -0.02648 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.759776 -0.02648 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.712851 0.0845947 -0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER -0.706291 0.107813 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.689001 0.0909853 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.701434 0.0896851 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.730141 0.101422 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.725284 0.0832945 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.736701 0.0782041 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.717709 0.102723 -0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER -0.724268 0.0795043 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.700418 0.0858949 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.737837 0.0347427 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.740802 0.0511556 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.718185 0.043171 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.730397 0.0580833 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.760455 0.0427273 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.750049 0.0496549 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.757489 0.0263144 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.748242 0.027815 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.745277 0.0114021 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.725625 0.0198304 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.666287 0.0539145 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.650692 0.0721382 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645053 0.0564414 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.663167 0.072935 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671925 0.0696112 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.6844 0.070408 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.68752 0.0513875 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.653812 0.0531177 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.669407 0.034894 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.648173 0.0374209 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643951 -0.172546 -0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER -0.674191 -0.142305 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.672341 -0.123995 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.666199 -0.120057 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.651943 -0.134313 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.680334 -0.146243 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.659936 -0.156561 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.682184 -0.164554 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.69459 -0.131987 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.696439 -0.150298 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.688447 -0.12805 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.715501 -0.153374 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.731779 -0.136231 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.712305 -0.141449 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.70911 -0.129524 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.734974 -0.148156 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.712305 -0.141449 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.718696 -0.165299 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.738169 -0.160081 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.721891 -0.177224 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.718696 -0.165299 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.663122 -0.100996 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.656415 -0.0783272 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.639272 -0.0946054 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.651197 -0.0978007 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.680265 -0.0847178 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.675047 -0.104191 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.686972 -0.107387 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.66834 -0.0815225 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.675047 -0.104191 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.651197 -0.0978007 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.602641 -0.161477 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.60298 -0.154189 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.622115 -0.166695 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.617912 -0.143431 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.583506 -0.148971 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.598439 -0.138214 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.583168 -0.156259 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.587708 -0.172234 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.58737 -0.179523 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.606843 -0.184741 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.591572 -0.120168 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.577317 -0.105912 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582843 -0.128897 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600302 -0.111438 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.586046 -0.0971825 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.609032 -0.102708 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600302 -0.111438 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.568587 -0.114642 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582843 -0.128897 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.574113 -0.137627 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.5724 -0.191718 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.549732 -0.185011 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.569205 -0.179793 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.56601 -0.167868 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.552927 -0.196936 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.569205 -0.179793 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.575596 -0.203643 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.556122 -0.208861 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.578791 -0.215568 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.575596 -0.203643 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.655019 -0.213855 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.653756 -0.23668 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.636974 -0.229127 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.660237 -0.233329 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671802 -0.221409 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.678283 -0.218058 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.673065 -0.198584 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.648538 -0.217207 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649801 -0.194382 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.631756 -0.209653 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624779 -0.244096 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.607636 -0.260374 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600929 -0.237705 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.612854 -0.240901 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.631486 -0.266765 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.636704 -0.247291 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.648629 -0.250487 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.619561 -0.26357 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.636704 -0.247291 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.612854 -0.240901 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.696329 -0.224924 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.710584 -0.23918 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.687599 -0.233654 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.705059 -0.216195 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.719314 -0.23045 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.713788 -0.207465 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.705059 -0.216195 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.701855 -0.24791 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.687599 -0.233654 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.678869 -0.242384 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.786005 -0.343435 8.51251e-17 RAD 0.0555556 + txt002 + SPHERE CENTER -0.82165 -0.392454 0.0425863 RAD 0.0185185 + txt002 + SPHERE CENTER -0.824791 -0.400556 0.065698 RAD 0.00617284 + txt002 + SPHERE CENTER -0.802599 -0.392663 0.058292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.821021 -0.376528 0.0614442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.843843 -0.400347 0.0499923 RAD 0.00617284 + txt002 + SPHERE CENTER -0.840073 -0.376319 0.0457385 RAD 0.00617284 + txt002 + SPHERE CENTER -0.840701 -0.392245 0.0268805 RAD 0.00617284 + txt002 + SPHERE CENTER -0.82542 -0.416482 0.0468401 RAD 0.00617284 + txt002 + SPHERE CENTER -0.822279 -0.40838 0.0237283 RAD 0.00617284 + txt002 + SPHERE CENTER -0.803228 -0.408589 0.0394341 RAD 0.00617284 + txt002 + SPHERE CENTER -0.753118 -0.370774 0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER -0.734271 -0.367981 0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.731279 -0.362711 0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER -0.745269 -0.348136 0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.756109 -0.376044 0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER -0.767107 -0.356199 0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.774956 -0.378837 0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER -0.74212 -0.390619 0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.760966 -0.393412 0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER -0.739128 -0.385349 0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER -0.80984 -0.323622 0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.80634 -0.308073 0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.786996 -0.316395 0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER -0.802721 -0.300378 0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER -0.829184 -0.315299 0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER -0.825565 -0.307605 0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER -0.832685 -0.330849 0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.813459 -0.331317 0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER -0.81696 -0.346866 0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER -0.794116 -0.339639 0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER -0.854538 -0.365116 -0.0178949 RAD 0.0185185 + txt002 + SPHERE CENTER -0.878086 -0.365674 -0.0104889 RAD 0.00617284 + txt002 + SPHERE CENTER -0.859887 -0.367962 0.00604126 RAD 0.00617284 + txt002 + SPHERE CENTER -0.863875 -0.346241 -0.00500196 RAD 0.00617284 + txt002 + SPHERE CENTER -0.872736 -0.362827 -0.0344251 RAD 0.00617284 + txt002 + SPHERE CENTER -0.858526 -0.343394 -0.0289382 RAD 0.00617284 + txt002 + SPHERE CENTER -0.849188 -0.362269 -0.0418311 RAD 0.00617284 + txt002 + SPHERE CENTER -0.868748 -0.384548 -0.0233819 RAD 0.00617284 + txt002 + SPHERE CENTER -0.8452 -0.38399 -0.0307879 RAD 0.00617284 + txt002 + SPHERE CENTER -0.85055 -0.386837 -0.00685171 RAD 0.00617284 + txt002 + SPHERE CENTER -0.842728 -0.296284 0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER -0.848999 -0.272611 0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER -0.828835 -0.281616 0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER -0.829121 -0.278432 -0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.862893 -0.287278 -0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER -0.843015 -0.293099 -0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER -0.856621 -0.310951 -0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER -0.862606 -0.290462 0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER -0.856335 -0.314135 0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.842441 -0.299468 0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.818893 -0.316097 -0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER -0.819591 -0.297057 -0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.814956 -0.293153 -0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER -0.79807 -0.304244 -0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.823527 -0.320001 -0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER -0.802007 -0.327188 -0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.822829 -0.339041 -0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER -0.840413 -0.30891 -0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.839716 -0.32795 -0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER -0.835779 -0.305006 -0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER -0.797815 -0.412267 -0.0246914 RAD 0.0185185 + txt002 + SPHERE CENTER -0.793573 -0.436217 -0.0204376 RAD 0.00617284 + txt002 + SPHERE CENTER -0.776294 -0.419454 -0.0149506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.796968 -0.420728 -0.00151032 RAD 0.00617284 + txt002 + SPHERE CENTER -0.815094 -0.42903 -0.0301783 RAD 0.00617284 + txt002 + SPHERE CENTER -0.818489 -0.413542 -0.0112511 RAD 0.00617284 + txt002 + SPHERE CENTER -0.819335 -0.405081 -0.0344321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.79442 -0.427756 -0.0436186 RAD 0.00617284 + txt002 + SPHERE CENTER -0.798662 -0.403807 -0.0478724 RAD 0.00617284 + txt002 + SPHERE CENTER -0.777141 -0.410993 -0.0381316 RAD 0.00617284 + txt002 + SPHERE CENTER -0.76217 -0.363249 -0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.747522 -0.356966 -0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.759239 -0.339469 -0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER -0.740618 -0.352002 -0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER -0.750453 -0.380746 -0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER -0.743549 -0.375782 -0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER -0.765101 -0.387029 -0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.769074 -0.368213 -0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER -0.783722 -0.374496 -0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER -0.780791 -0.350716 -0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER -0.729282 -0.390587 -0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER -0.704862 -0.392427 -0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER -0.717401 -0.374248 -0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER -0.714218 -0.373948 0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.716744 -0.408767 0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER -0.726099 -0.390287 0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER -0.741164 -0.406927 0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER -0.719927 -0.409067 -0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER -0.744347 -0.407227 -0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.732465 -0.390887 -0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.594141 -0.358439 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.542042 -0.409774 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.517869 -0.413579 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.528508 -0.393219 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.525596 -0.395831 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.531404 -0.430134 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539131 -0.412386 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555577 -0.426328 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.534315 -0.427522 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.558488 -0.423716 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.544953 -0.407161 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522591 -0.339267 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.504962 -0.327164 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522591 -0.339267 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.528125 -0.318612 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.504962 -0.327164 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.528125 -0.318612 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522591 -0.339267 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.499428 -0.347819 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.517056 -0.359921 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.517056 -0.359921 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.550064 -0.379835 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.529037 -0.375068 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.530412 -0.371406 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542624 -0.356494 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.548689 -0.383497 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.562276 -0.364922 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.569716 -0.388263 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536477 -0.398409 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.557504 -0.403175 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.537852 -0.394747 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.613592 -0.428945 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.612625 -0.451897 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593593 -0.436515 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.614807 -0.432663 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.632624 -0.444328 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.634806 -0.425094 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.633591 -0.421376 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.61141 -0.448179 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.612377 -0.425227 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.592379 -0.432797 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.621614 -0.399007 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.620974 -0.402865 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600381 -0.39648 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.618494 -0.379986 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.642207 -0.405392 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.639728 -0.382513 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.642848 -0.401533 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624094 -0.421886 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624734 -0.418027 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.603501 -0.4155 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.665691 -0.37761 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.687009 -0.375943 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.665691 -0.37761 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671225 -0.356956 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.687009 -0.375943 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671225 -0.356956 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.665691 -0.37761 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.681475 -0.396598 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.660156 -0.398265 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.660156 -0.398265 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.586119 -0.388377 -0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.570335 -0.399584 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.562269 -0.381987 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.569167 -0.403942 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.594185 -0.405974 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593017 -0.410332 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.609969 -0.394768 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.587286 -0.384019 -0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.60307 -0.372813 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.57922 -0.366422 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.638217 -0.337042 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.64748 -0.317573 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643752 -0.316388 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624481 -0.316758 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.641945 -0.338228 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.618946 -0.337413 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.632683 -0.357697 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.661216 -0.337857 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.651954 -0.357326 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.657489 -0.336672 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.566667 -0.317871 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.562847 -0.317033 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.561133 -0.338525 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.583171 -0.327827 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.568381 -0.296378 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.588706 -0.307172 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.572202 -0.297216 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.546343 -0.307077 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.550163 -0.307914 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.544629 -0.328569 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.594141 -0.358439 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.547576 -0.389119 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.525642 -0.386849 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.528407 -0.379645 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.538964 -0.366733 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.544812 -0.396323 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.558134 -0.376207 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.566746 -0.398593 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.534255 -0.409235 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.556189 -0.411505 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.537019 -0.402031 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522591 -0.339267 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.504962 -0.327164 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522591 -0.339267 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.528125 -0.318612 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.504962 -0.327164 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.528125 -0.318612 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522591 -0.339267 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.499428 -0.347819 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.517056 -0.359921 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.517056 -0.359921 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.566667 -0.317871 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.551072 -0.299647 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.545434 -0.315344 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.563547 -0.29885 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.572306 -0.302174 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.584781 -0.301377 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.587901 -0.320398 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554192 -0.318667 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.569787 -0.336891 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.548554 -0.334364 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.619127 -0.408291 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.617918 -0.415912 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.597788 -0.406911 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616439 -0.39183 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.639257 -0.417292 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.637778 -0.39321 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.640465 -0.409671 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.620605 -0.432372 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.621814 -0.424751 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600475 -0.423371 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.638217 -0.337042 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.641183 -0.320629 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.618565 -0.328614 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.630777 -0.313702 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.660835 -0.329058 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.65043 -0.32213 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.65787 -0.345471 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.648623 -0.34397 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645657 -0.360383 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.626005 -0.351955 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.665691 -0.37761 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.687009 -0.375943 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.665691 -0.37761 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671225 -0.356956 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.687009 -0.375943 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671225 -0.356956 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.665691 -0.37761 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.681475 -0.396598 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.660156 -0.398265 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.660156 -0.398265 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.57505 -0.429687 0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER -0.55776 -0.446515 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.5512 -0.423296 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.562617 -0.428387 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.58161 -0.452905 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.586467 -0.434777 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.5989 -0.436077 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.570193 -0.447815 0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER -0.587483 -0.430987 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.563633 -0.424596 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.621614 -0.399007 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.632748 -0.420252 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.61608 -0.419661 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.638118 -0.408963 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.638282 -0.399597 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643653 -0.388308 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.627149 -0.378352 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616244 -0.410295 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.60511 -0.38905 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.599576 -0.409705 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.550064 -0.379835 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.535334 -0.372012 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555599 -0.35918 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536327 -0.359551 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.529799 -0.392667 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.530793 -0.380205 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.54453 -0.400489 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.549071 -0.392296 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.563801 -0.400119 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.569335 -0.379464 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0996195 -0.371785 0.544331 RAD 0.166667 + txt002 + SPHERE CENTER 0.220501 -0.393621 0.729516 RAD 0.0555556 + txt002 + SPHERE CENTER 0.279642 -0.368601 0.766439 RAD 0.0185185 + txt002 + SPHERE CENTER 0.299716 -0.354293 0.765035 RAD 0.00617284 + txt002 + SPHERE CENTER 0.292196 -0.366989 0.745238 RAD 0.00617284 + txt002 + SPHERE CENTER 0.279022 -0.347717 0.753281 RAD 0.00617284 + txt002 + SPHERE CENTER 0.287162 -0.355904 0.786236 RAD 0.00617284 + txt002 + SPHERE CENTER 0.266468 -0.349329 0.774481 RAD 0.00617284 + txt002 + SPHERE CENTER 0.267088 -0.370213 0.787639 RAD 0.00617284 + txt002 + SPHERE CENTER 0.300337 -0.375177 0.778193 RAD 0.00617284 + txt002 + SPHERE CENTER 0.280263 -0.389485 0.779597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.292817 -0.387873 0.758396 RAD 0.00617284 + txt002 + SPHERE CENTER 0.281062 -0.372464 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.289441 -0.362978 0.671279 RAD 0.00617284 + txt002 + SPHERE CENTER 0.270044 -0.378255 0.671155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.267771 -0.35549 0.680442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.30046 -0.357187 0.692603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.278789 -0.349699 0.701767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29208 -0.366673 0.713804 RAD 0.00617284 + txt002 + SPHERE CENTER 0.302733 -0.379952 0.683315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.294353 -0.389438 0.704516 RAD 0.00617284 + txt002 + SPHERE CENTER 0.283335 -0.395229 0.683192 RAD 0.00617284 + txt002 + SPHERE CENTER 0.238665 -0.321889 0.726118 RAD 0.0185185 + txt002 + SPHERE CENTER 0.250544 -0.304702 0.71296 RAD 0.00617284 + txt002 + SPHERE CENTER 0.259421 -0.327715 0.714081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.238717 -0.32307 0.701455 RAD 0.00617284 + txt002 + SPHERE CENTER 0.229788 -0.298875 0.724997 RAD 0.00617284 + txt002 + SPHERE CENTER 0.21796 -0.317244 0.713492 RAD 0.00617284 + txt002 + SPHERE CENTER 0.217908 -0.316063 0.738155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.250492 -0.30352 0.737623 RAD 0.00617284 + txt002 + SPHERE CENTER 0.238612 -0.320707 0.750781 RAD 0.00617284 + txt002 + SPHERE CENTER 0.259369 -0.326533 0.738744 RAD 0.00617284 + txt002 + SPHERE CENTER 0.219082 -0.389758 0.803476 RAD 0.0185185 + txt002 + SPHERE CENTER 0.228779 -0.378635 0.823273 RAD 0.00617284 + txt002 + SPHERE CENTER 0.24293 -0.383364 0.8036 RAD 0.00617284 + txt002 + SPHERE CENTER 0.225483 -0.365937 0.802355 RAD 0.00617284 + txt002 + SPHERE CENTER 0.20493 -0.385029 0.823149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.201634 -0.372331 0.802231 RAD 0.00617284 + txt002 + SPHERE CENTER 0.195233 -0.396152 0.803352 RAD 0.00617284 + txt002 + SPHERE CENTER 0.222377 -0.402455 0.824394 RAD 0.00617284 + txt002 + SPHERE CENTER 0.21268 -0.413578 0.804597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236529 -0.407185 0.804721 RAD 0.00617284 + txt002 + SPHERE CENTER 0.178104 -0.343046 0.763155 RAD 0.0185185 + txt002 + SPHERE CENTER 0.177083 -0.319723 0.771198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.198298 -0.332294 0.772443 RAD 0.00617284 + txt002 + SPHERE CENTER 0.189464 -0.325124 0.750529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.156889 -0.330475 0.76191 RAD 0.00617284 + txt002 + SPHERE CENTER 0.16927 -0.335876 0.741241 RAD 0.00617284 + txt002 + SPHERE CENTER 0.157909 -0.353797 0.753867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.165722 -0.337645 0.783824 RAD 0.00617284 + txt002 + SPHERE CENTER 0.166743 -0.360967 0.775781 RAD 0.00617284 + txt002 + SPHERE CENTER 0.186938 -0.350216 0.785069 RAD 0.00617284 + txt002 + SPHERE CENTER 0.15994 -0.414778 0.766553 RAD 0.0185185 + txt002 + SPHERE CENTER 0.147477 -0.412573 0.787754 RAD 0.00617284 + txt002 + SPHERE CENTER 0.172167 -0.412448 0.787878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.15977 -0.39322 0.77859 RAD 0.00617284 + txt002 + SPHERE CENTER 0.13525 -0.414903 0.766429 RAD 0.00617284 + txt002 + SPHERE CENTER 0.147543 -0.39555 0.757266 RAD 0.00617284 + txt002 + SPHERE CENTER 0.147713 -0.417108 0.745229 RAD 0.00617284 + txt002 + SPHERE CENTER 0.147647 -0.434131 0.775717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.16011 -0.436336 0.754517 RAD 0.00617284 + txt002 + SPHERE CENTER 0.172338 -0.434006 0.775841 RAD 0.00617284 + txt002 + SPHERE CENTER 0.261479 -0.440333 0.769837 RAD 0.0185185 + txt002 + SPHERE CENTER 0.282991 -0.443285 0.781591 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282046 -0.4302 0.760673 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271991 -0.421181 0.781342 RAD 0.00617284 + txt002 + SPHERE CENTER 0.262424 -0.453417 0.790755 RAD 0.00617284 + txt002 + SPHERE CENTER 0.251423 -0.431313 0.790506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.240911 -0.450466 0.779001 RAD 0.00617284 + txt002 + SPHERE CENTER 0.27248 -0.462437 0.770086 RAD 0.00617284 + txt002 + SPHERE CENTER 0.250967 -0.459485 0.758332 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271534 -0.449353 0.749168 RAD 0.00617284 + txt002 + SPHERE CENTER 0.202338 -0.465353 0.732914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.204606 -0.486123 0.746073 RAD 0.00617284 + txt002 + SPHERE CENTER 0.223366 -0.470107 0.744951 RAD 0.00617284 + txt002 + SPHERE CENTER 0.202946 -0.464339 0.757577 RAD 0.00617284 + txt002 + SPHERE CENTER 0.183578 -0.481368 0.734036 RAD 0.00617284 + txt002 + SPHERE CENTER 0.181918 -0.459584 0.745541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.18131 -0.460599 0.720878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.203998 -0.487137 0.72141 RAD 0.00617284 + txt002 + SPHERE CENTER 0.201729 -0.466367 0.708251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.222757 -0.471122 0.720288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.262898 -0.444196 0.695877 RAD 0.0185185 + txt002 + SPHERE CENTER 0.285685 -0.449273 0.687835 RAD 0.00617284 + txt002 + SPHERE CENTER 0.27701 -0.426189 0.68659 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282528 -0.436139 0.708504 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271573 -0.46728 0.697123 RAD 0.00617284 + txt002 + SPHERE CENTER 0.268416 -0.454146 0.717791 RAD 0.00617284 + txt002 + SPHERE CENTER 0.248787 -0.462204 0.705165 RAD 0.00617284 + txt002 + SPHERE CENTER 0.266055 -0.45733 0.675209 RAD 0.00617284 + txt002 + SPHERE CENTER 0.243269 -0.452254 0.683251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.257381 -0.434246 0.673964 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31427 -0.31427 0.544331 RAD 0.0555556 + txt002 + SPHERE CENTER 0.367156 -0.277961 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.374298 -0.269898 0.485076 RAD 0.00617284 + txt002 + SPHERE CENTER 0.362218 -0.291334 0.487134 RAD 0.00617284 + txt002 + SPHERE CENTER 0.350338 -0.270045 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.379235 -0.256525 0.505236 RAD 0.00617284 + txt002 + SPHERE CENTER 0.355276 -0.256671 0.511201 RAD 0.00617284 + txt002 + SPHERE CENTER 0.372093 -0.264588 0.527454 RAD 0.00617284 + txt002 + SPHERE CENTER 0.391115 -0.277815 0.501329 RAD 0.00617284 + txt002 + SPHERE CENTER 0.383973 -0.285878 0.523547 RAD 0.00617284 + txt002 + SPHERE CENTER 0.379036 -0.299251 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31427 -0.31427 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.304189 -0.304189 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29042 -0.307879 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307879 -0.29042 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.328039 -0.31058 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.331729 -0.29681 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.33812 -0.32066 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31058 -0.328039 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32066 -0.33812 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29681 -0.331729 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.297666 -0.252306 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.305995 -0.235688 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.321516 -0.245915 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.312359 -0.259438 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282145 -0.242079 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.288509 -0.265828 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273816 -0.258696 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.291303 -0.228556 0.509559 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282974 -0.245173 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.306824 -0.238783 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367156 -0.277961 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.385852 -0.261966 0.57931 RAD 0.00617284 + txt002 + SPHERE CENTER 0.38141 -0.278159 0.561208 RAD 0.00617284 + txt002 + SPHERE CENTER 0.36581 -0.259422 0.565115 RAD 0.00617284 + txt002 + SPHERE CENTER 0.371598 -0.261768 0.599471 RAD 0.00617284 + txt002 + SPHERE CENTER 0.351556 -0.259225 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.352901 -0.277764 0.601529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.387198 -0.280504 0.595564 RAD 0.00617284 + txt002 + SPHERE CENTER 0.368501 -0.2965 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.382755 -0.296698 0.577461 RAD 0.00617284 + txt002 + SPHERE CENTER 0.297666 -0.252306 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.30415 -0.228803 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.321516 -0.245915 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.306824 -0.238783 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.2803 -0.235194 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282974 -0.245173 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273816 -0.258696 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.294992 -0.242326 0.603794 RAD 0.00617284 + txt002 + SPHERE CENTER 0.288509 -0.265828 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.312359 -0.259438 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31427 -0.31427 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.32435 -0.304189 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.33812 -0.307879 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32066 -0.29042 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3005 -0.31058 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29681 -0.29681 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29042 -0.32066 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.317959 -0.328039 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307879 -0.33812 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.331729 -0.331729 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.383759 -0.339925 0.544331 RAD 0.0185185 + txt002 + SPHERE CENTER 0.407156 -0.334762 0.538366 RAD 0.00617284 + txt002 + SPHERE CENTER 0.388696 -0.326552 0.524171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.392275 -0.31686 0.546597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.402218 -0.348135 0.558526 RAD 0.00617284 + txt002 + SPHERE CENTER 0.387337 -0.330233 0.566757 RAD 0.00617284 + txt002 + SPHERE CENTER 0.378821 -0.353299 0.564491 RAD 0.00617284 + txt002 + SPHERE CENTER 0.39864 -0.357827 0.536101 RAD 0.00617284 + txt002 + SPHERE CENTER 0.375243 -0.362991 0.542066 RAD 0.00617284 + txt002 + SPHERE CENTER 0.380181 -0.349618 0.521905 RAD 0.00617284 + txt002 + SPHERE CENTER 0.330873 -0.376234 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.346394 -0.386461 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.354723 -0.369843 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.340031 -0.362711 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.322544 -0.392851 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.316181 -0.369102 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307023 -0.382624 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337237 -0.399983 0.579103 RAD 0.00617284 + txt002 + SPHERE CENTER 0.321715 -0.389757 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.345565 -0.383366 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.330873 -0.376234 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.348239 -0.393346 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.354723 -0.369843 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.345565 -0.383366 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.324389 -0.399736 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.321715 -0.389757 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307023 -0.382624 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.333547 -0.386213 0.484868 RAD 0.00617284 + txt002 + SPHERE CENTER 0.316181 -0.369102 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.340031 -0.362711 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.166275 -0.191247 0.655442 RAD 0.0555556 + txt002 + SPHERE CENTER 0.20793 -0.130089 0.652044 RAD 0.0185185 + txt002 + SPHERE CENTER 0.221102 -0.115471 0.637128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.220766 -0.13987 0.633356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.200597 -0.126388 0.628759 RAD 0.00617284 + txt002 + SPHERE CENTER 0.208266 -0.10569 0.655816 RAD 0.00617284 + txt002 + SPHERE CENTER 0.187762 -0.116607 0.647447 RAD 0.00617284 + txt002 + SPHERE CENTER 0.195095 -0.120308 0.670732 RAD 0.00617284 + txt002 + SPHERE CENTER 0.228435 -0.119172 0.660413 RAD 0.00617284 + txt002 + SPHERE CENTER 0.215264 -0.13379 0.675329 RAD 0.00617284 + txt002 + SPHERE CENTER 0.228099 -0.143571 0.656641 RAD 0.00617284 + txt002 + SPHERE CENTER 0.230419 -0.192135 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.243049 -0.18209 0.599717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.218634 -0.185251 0.597829 RAD 0.00617284 + txt002 + SPHERE CENTER 0.227721 -0.168159 0.613157 RAD 0.00617284 + txt002 + SPHERE CENTER 0.254834 -0.188974 0.620293 RAD 0.00617284 + txt002 + SPHERE CENTER 0.239506 -0.175043 0.633733 RAD 0.00617284 + txt002 + SPHERE CENTER 0.242204 -0.199019 0.638981 RAD 0.00617284 + txt002 + SPHERE CENTER 0.245747 -0.206066 0.604965 RAD 0.00617284 + txt002 + SPHERE CENTER 0.233117 -0.216111 0.623653 RAD 0.00617284 + txt002 + SPHERE CENTER 0.221332 -0.209227 0.603077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.172673 -0.154295 0.591563 RAD 0.0185185 + txt002 + SPHERE CENTER 0.180792 -0.15554 0.568278 RAD 0.00617284 + txt002 + SPHERE CENTER 0.19323 -0.166926 0.586315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.171251 -0.17557 0.579113 RAD 0.00617284 + txt002 + SPHERE CENTER 0.160236 -0.142909 0.573526 RAD 0.00617284 + txt002 + SPHERE CENTER 0.150694 -0.162939 0.584361 RAD 0.00617284 + txt002 + SPHERE CENTER 0.152117 -0.141663 0.596811 RAD 0.00617284 + txt002 + SPHERE CENTER 0.182215 -0.134265 0.580727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.174096 -0.133019 0.604012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.194652 -0.145651 0.598764 RAD 0.00617284 + txt002 + SPHERE CENTER 0.143787 -0.129201 0.689081 RAD 0.0185185 + txt002 + SPHERE CENTER 0.14887 -0.105335 0.692853 RAD 0.00617284 + txt002 + SPHERE CENTER 0.167242 -0.121723 0.690969 RAD 0.00617284 + txt002 + SPHERE CENTER 0.153943 -0.115741 0.671044 RAD 0.00617284 + txt002 + SPHERE CENTER 0.125414 -0.112813 0.690965 RAD 0.00617284 + txt002 + SPHERE CENTER 0.130487 -0.123219 0.669156 RAD 0.00617284 + txt002 + SPHERE CENTER 0.120331 -0.136679 0.687193 RAD 0.00617284 + txt002 + SPHERE CENTER 0.138714 -0.118795 0.71089 RAD 0.00617284 + txt002 + SPHERE CENTER 0.13363 -0.142661 0.707118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.157086 -0.135183 0.709006 RAD 0.00617284 + txt002 + SPHERE CENTER 0.108529 -0.153407 0.6286 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0995811 -0.130858 0.624003 RAD 0.00617284 + txt002 + SPHERE CENTER 0.113639 -0.134736 0.643928 RAD 0.00617284 + txt002 + SPHERE CENTER 0.123725 -0.135326 0.621398 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0944715 -0.149528 0.608675 RAD 0.00617284 + txt002 + SPHERE CENTER 0.118615 -0.153997 0.60607 RAD 0.00617284 + txt002 + SPHERE CENTER 0.10342 -0.172078 0.613272 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0843858 -0.148938 0.631205 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0933338 -0.171487 0.635801 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0984435 -0.152816 0.65113 RAD 0.00617284 + txt002 + SPHERE CENTER 0.102131 -0.190359 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0897843 -0.179968 0.711167 RAD 0.00617284 + txt002 + SPHERE CENTER 0.114103 -0.183804 0.713055 RAD 0.00617284 + txt002 + SPHERE CENTER 0.105492 -0.166467 0.697727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0778128 -0.186523 0.690591 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0935207 -0.173022 0.677151 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0901597 -0.196914 0.671903 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0864233 -0.20386 0.705919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0987702 -0.214251 0.687231 RAD 0.00617284 + txt002 + SPHERE CENTER 0.110742 -0.207696 0.707807 RAD 0.00617284 + txt002 + SPHERE CENTER 0.201532 -0.167041 0.715923 RAD 0.0185185 + txt002 + SPHERE CENTER 0.219088 -0.151829 0.724292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.221861 -0.163068 0.702483 RAD 0.00617284 + txt002 + SPHERE CENTER 0.205084 -0.14514 0.705088 RAD 0.00617284 + txt002 + SPHERE CENTER 0.19876 -0.155801 0.737733 RAD 0.00617284 + txt002 + SPHERE CENTER 0.184756 -0.149113 0.718528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.181204 -0.171014 0.729364 RAD 0.00617284 + txt002 + SPHERE CENTER 0.215537 -0.173729 0.735128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.197981 -0.188942 0.726759 RAD 0.00617284 + txt002 + SPHERE CENTER 0.218309 -0.184969 0.713318 RAD 0.00617284 + txt002 + SPHERE CENTER 0.159877 -0.228199 0.719322 RAD 0.0185185 + txt002 + SPHERE CENTER 0.167942 -0.229756 0.742607 RAD 0.00617284 + txt002 + SPHERE CENTER 0.183484 -0.223214 0.72457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.16569 -0.207683 0.731771 RAD 0.00617284 + txt002 + SPHERE CENTER 0.144336 -0.234741 0.737359 RAD 0.00617284 + txt002 + SPHERE CENTER 0.142084 -0.212668 0.726523 RAD 0.00617284 + txt002 + SPHERE CENTER 0.13627 -0.233184 0.714074 RAD 0.00617284 + txt002 + SPHERE CENTER 0.162129 -0.250271 0.730157 RAD 0.00617284 + txt002 + SPHERE CENTER 0.154064 -0.248714 0.706872 RAD 0.00617284 + txt002 + SPHERE CENTER 0.177671 -0.243729 0.71212 RAD 0.00617284 + txt002 + SPHERE CENTER 0.224021 -0.229087 0.682285 RAD 0.0185185 + txt002 + SPHERE CENTER 0.248268 -0.22829 0.686881 RAD 0.00617284 + txt002 + SPHERE CENTER 0.2391 -0.216949 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER 0.234532 -0.207937 0.689486 RAD 0.00617284 + txt002 + SPHERE CENTER 0.233189 -0.240428 0.702209 RAD 0.00617284 + txt002 + SPHERE CENTER 0.219453 -0.220075 0.704814 RAD 0.00617284 + txt002 + SPHERE CENTER 0.208942 -0.241225 0.697613 RAD 0.00617284 + txt002 + SPHERE CENTER 0.237756 -0.249439 0.67968 RAD 0.00617284 + txt002 + SPHERE CENTER 0.213509 -0.250236 0.675083 RAD 0.00617284 + txt002 + SPHERE CENTER 0.228589 -0.238098 0.659755 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0058509 -0.451136 0.729516 RAD 0.0555556 + txt002 + SPHERE CENTER 0.0051487 -0.447081 0.803476 RAD 0.0185185 + txt002 + SPHERE CENTER 0.01504 -0.435909 0.823149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0289993 -0.440694 0.803352 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0115452 -0.423265 0.802231 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00881065 -0.442297 0.823273 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0123054 -0.429652 0.802355 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0187019 -0.453468 0.8036 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00864346 -0.459725 0.824394 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0012478 -0.470897 0.804721 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0226028 -0.46451 0.804597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0688765 -0.439178 0.766553 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0903221 -0.426942 0.766429 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0806307 -0.435083 0.745229 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0699989 -0.416328 0.757266 RAD 0.00617284 + txt002 + SPHERE CENTER 0.078568 -0.431037 0.787754 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0582447 -0.420423 0.77859 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0571224 -0.443274 0.787878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0891998 -0.449792 0.775717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0677542 -0.462029 0.775841 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0795084 -0.457933 0.754517 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0172804 -0.386138 0.763155 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0293677 -0.364644 0.76191 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0401449 -0.385352 0.753867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0213457 -0.375512 0.741241 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0065032 -0.36543 0.771198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00151881 -0.376298 0.750529 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00558411 -0.386924 0.772443 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0253024 -0.37527 0.783824 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0132151 -0.396764 0.785069 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0360796 -0.395978 0.775781 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0578769 -0.459039 0.766439 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0707378 -0.451803 0.786236 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0461991 -0.454158 0.787639 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0561039 -0.435761 0.774481 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0824157 -0.456685 0.765035 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0677817 -0.440643 0.753281 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0695548 -0.46392 0.745238 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0725109 -0.475081 0.778193 RAD 0.00617284 + txt002 + SPHERE CENTER -0.05965 -0.482316 0.758396 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0479721 -0.477435 0.779597 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0457452 -0.398096 0.726118 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0495643 -0.373728 0.724997 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0306825 -0.382672 0.738155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.030137 -0.383722 0.713492 RAD 0.00617284 + txt002 + SPHERE CENTER -0.064627 -0.389151 0.71296 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0451997 -0.399146 0.701455 RAD 0.00617284 + txt002 + SPHERE CENTER -0.060808 -0.41352 0.714081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0651725 -0.388102 0.737623 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0613535 -0.41247 0.738744 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0462908 -0.397047 0.750781 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0571747 -0.463094 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER -0.081612 -0.459563 0.692603 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0696122 -0.463589 0.713804 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0665888 -0.442243 0.701767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0691745 -0.459069 0.671279 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0541513 -0.441749 0.680442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0447373 -0.4626 0.671155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0721979 -0.480415 0.683315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0477607 -0.483946 0.683192 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0601982 -0.48444 0.704516 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00628079 -0.512079 0.769837 RAD 0.0185185 + txt002 + SPHERE CENTER -0.000557006 -0.523883 0.790755 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0165974 -0.51057 0.779001 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00208214 -0.49924 0.790506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0234352 -0.525392 0.781591 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0249603 -0.500749 0.781342 RAD 0.00617284 + txt002 + SPHERE CENTER -0.029159 -0.513588 0.760673 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00475566 -0.536722 0.770086 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0104794 -0.524918 0.749168 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0123987 -0.523409 0.758332 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00557859 -0.516134 0.695877 RAD 0.0185185 + txt002 + SPHERE CENTER -0.00154892 -0.540463 0.697123 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0156462 -0.524673 0.705165 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00538221 -0.52751 0.717791 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0227737 -0.531924 0.687835 RAD 0.00617284 + txt002 + SPHERE CENTER -0.026607 -0.518971 0.708504 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0268034 -0.507596 0.68659 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00174531 -0.529087 0.675209 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00577498 -0.504759 0.673964 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0154498 -0.513298 0.683251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0574471 -0.504176 0.732914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0817008 -0.508666 0.734036 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0732807 -0.489545 0.720878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0722467 -0.488971 0.745541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0658672 -0.523298 0.746073 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0564131 -0.503602 0.757577 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0416134 -0.518808 0.744951 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0669012 -0.523872 0.72141 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0426474 -0.519382 0.720288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.058481 -0.504751 0.708251 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0483751 -0.248762 0.655442 RAD 0.0555556 + txt002 + SPHERE CENTER -0.0599222 -0.183785 0.689081 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0522053 -0.160406 0.690965 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0358698 -0.178533 0.687193 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0513956 -0.171954 0.669156 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0762577 -0.165658 0.692853 RAD 0.00617284 + txt002 + SPHERE CENTER -0.075448 -0.177206 0.671044 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0839747 -0.189036 0.690969 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0607319 -0.172236 0.71089 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0684488 -0.195615 0.709006 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0443964 -0.190363 0.707118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00673113 -0.215921 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0258737 -0.20044 0.690591 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0203763 -0.215612 0.671903 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00551963 -0.196602 0.677151 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0122285 -0.200749 0.711167 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00812553 -0.196911 0.697727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00691403 -0.21623 0.713055 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0270852 -0.21976 0.705919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00794264 -0.235241 0.707807 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0215878 -0.234932 0.687231 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0172857 -0.187119 0.6286 RAD 0.0185185 + txt002 + SPHERE CENTER -0.00705049 -0.176731 0.608675 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00352517 -0.200733 0.613272 RAD 0.00617284 + txt002 + SPHERE CENTER -0.025725 -0.192673 0.60607 RAD 0.00617284 + txt002 + SPHERE CENTER -0.020811 -0.163117 0.624003 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0394855 -0.179058 0.621398 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0310463 -0.173504 0.643928 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00138875 -0.171177 0.631205 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00884647 -0.181564 0.65113 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00491406 -0.195179 0.635801 RAD 0.00617284 + txt002 + SPHERE CENTER -0.115028 -0.216626 0.652044 RAD 0.0185185 + txt002 + SPHERE CENTER -0.127519 -0.195663 0.655816 RAD 0.00617284 + txt002 + SPHERE CENTER -0.108803 -0.201738 0.670732 RAD 0.00617284 + txt002 + SPHERE CENTER -0.104303 -0.194866 0.647447 RAD 0.00617284 + txt002 + SPHERE CENTER -0.133744 -0.210551 0.637128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.110528 -0.209754 0.628759 RAD 0.00617284 + txt002 + SPHERE CENTER -0.121254 -0.231514 0.633356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.138245 -0.217423 0.660413 RAD 0.00617284 + txt002 + SPHERE CENTER -0.125754 -0.238386 0.656641 RAD 0.00617284 + txt002 + SPHERE CENTER -0.119529 -0.223497 0.675329 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0723919 -0.21996 0.591563 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0673141 -0.20388 0.573526 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0609052 -0.198742 0.596811 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0490355 -0.216456 0.584361 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0788008 -0.225098 0.568278 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0605222 -0.237674 0.579113 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0838786 -0.241177 0.586315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0906706 -0.207384 0.580727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0957484 -0.223463 0.598764 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0842617 -0.202246 0.604012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.103481 -0.281603 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.126206 -0.291073 0.620293 RAD 0.00617284 + txt002 + SPHERE CENTER -0.110246 -0.293457 0.638981 RAD 0.00617284 + txt002 + SPHERE CENTER -0.119897 -0.271345 0.633733 RAD 0.00617284 + txt002 + SPHERE CENTER -0.119442 -0.279219 0.599717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.113132 -0.25949 0.613157 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0967168 -0.269749 0.597829 RAD 0.00617284 + txt002 + SPHERE CENTER -0.10979 -0.301332 0.604965 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0870656 -0.291862 0.603077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0938302 -0.303716 0.623653 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0910116 -0.245428 0.715923 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0942304 -0.234308 0.737733 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0714204 -0.238704 0.729364 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0854464 -0.221514 0.718528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.113822 -0.241032 0.724292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.105038 -0.228237 0.705088 RAD 0.00617284 + txt002 + SPHERE CENTER -0.110603 -0.252152 0.702483 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0997955 -0.258223 0.735128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0965768 -0.269343 0.713318 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0769856 -0.262619 0.726759 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0794645 -0.310405 0.682285 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0817333 -0.324811 0.702209 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0603366 -0.313378 0.697613 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0800146 -0.300317 0.704814 RAD 0.00617284 + txt002 + SPHERE CENTER -0.100861 -0.321838 0.686881 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0991425 -0.297345 0.689486 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0985923 -0.307433 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0811832 -0.334899 0.67968 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0789143 -0.320493 0.659755 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0597864 -0.323466 0.675083 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0243582 -0.277564 0.719322 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0076281 -0.275459 0.737359 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00142185 -0.270078 0.714074 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0167139 -0.255218 0.726523 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0305645 -0.282946 0.742607 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0396503 -0.262704 0.731771 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0472946 -0.285051 0.72457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0152725 -0.297806 0.730157 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0320026 -0.299911 0.71212 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00906621 -0.292425 0.706872 RAD 0.00617284 + txt002 + SPHERE CENTER -0.115031 -0.4293 0.544331 RAD 0.0555556 + txt002 + SPHERE CENTER -0.178985 -0.424299 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.190929 -0.412497 0.599471 RAD 0.00617284 + txt002 + SPHERE CENTER -0.16674 -0.417001 0.601529 RAD 0.00617284 + txt002 + SPHERE CENTER -0.174844 -0.400273 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.203175 -0.419795 0.57931 RAD 0.00617284 + txt002 + SPHERE CENTER -0.18709 -0.407571 0.565115 RAD 0.00617284 + txt002 + SPHERE CENTER -0.191231 -0.431597 0.561208 RAD 0.00617284 + txt002 + SPHERE CENTER -0.195071 -0.436523 0.595564 RAD 0.00617284 + txt002 + SPHERE CENTER -0.183127 -0.448325 0.577461 RAD 0.00617284 + txt002 + SPHERE CENTER -0.170881 -0.441027 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.115031 -0.4293 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.10495 -0.41922 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0911807 -0.42291 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.10864 -0.40545 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.128801 -0.425611 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.13249 -0.411841 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.138881 -0.435691 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.111341 -0.44307 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.121421 -0.45315 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0975713 -0.44676 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.131634 -0.367336 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.12515 -0.343834 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.107784 -0.360946 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.122476 -0.353814 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.149 -0.350225 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.146326 -0.360204 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.155484 -0.373727 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.134308 -0.357357 0.603794 RAD 0.00617284 + txt002 + SPHERE CENTER -0.140792 -0.380859 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.116942 -0.374468 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.178985 -0.424299 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.200165 -0.411775 0.505236 RAD 0.00617284 + txt002 + SPHERE CENTER -0.189948 -0.415187 0.527454 RAD 0.00617284 + txt002 + SPHERE CENTER -0.179342 -0.399922 0.511201 RAD 0.00617284 + txt002 + SPHERE CENTER -0.189202 -0.420888 0.485076 RAD 0.00617284 + txt002 + SPHERE CENTER -0.168379 -0.409035 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.168023 -0.433412 0.487134 RAD 0.00617284 + txt002 + SPHERE CENTER -0.199808 -0.436152 0.501329 RAD 0.00617284 + txt002 + SPHERE CENTER -0.178629 -0.448677 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.189591 -0.439564 0.523547 RAD 0.00617284 + txt002 + SPHERE CENTER -0.131634 -0.367336 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.123305 -0.350719 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.107784 -0.360946 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.116942 -0.374468 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.147155 -0.357109 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.140792 -0.380859 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.155484 -0.373727 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.137998 -0.343587 0.509559 RAD 0.00617284 + txt002 + SPHERE CENTER -0.146326 -0.360204 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.122476 -0.353814 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.115031 -0.4293 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER -0.125111 -0.41922 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.138881 -0.42291 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.121421 -0.40545 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.101261 -0.425611 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0975713 -0.411841 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0911807 -0.435691 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.11872 -0.44307 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.10864 -0.45315 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.13249 -0.44676 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.162382 -0.486264 0.544331 RAD 0.0185185 + txt002 + SPHERE CENTER -0.174264 -0.502603 0.558526 RAD 0.00617284 + txt002 + SPHERE CENTER -0.15142 -0.495376 0.564491 RAD 0.00617284 + txt002 + SPHERE CENTER -0.170327 -0.479659 0.566757 RAD 0.00617284 + txt002 + SPHERE CENTER -0.185226 -0.49349 0.538366 RAD 0.00617284 + txt002 + SPHERE CENTER -0.18129 -0.470546 0.546597 RAD 0.00617284 + txt002 + SPHERE CENTER -0.173345 -0.477151 0.524171 RAD 0.00617284 + txt002 + SPHERE CENTER -0.166319 -0.509207 0.536101 RAD 0.00617284 + txt002 + SPHERE CENTER -0.154437 -0.492868 0.521905 RAD 0.00617284 + txt002 + SPHERE CENTER -0.143475 -0.501981 0.542066 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0984274 -0.491265 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0810612 -0.508376 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0745774 -0.484874 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0837352 -0.498397 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.104911 -0.514767 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.107585 -0.504787 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.122277 -0.497655 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0957534 -0.501244 0.484868 RAD 0.00617284 + txt002 + SPHERE CENTER -0.11312 -0.484132 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0892696 -0.477742 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0984274 -0.491265 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.082906 -0.501491 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0745774 -0.484874 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0892696 -0.477742 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.106756 -0.507882 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.11312 -0.484132 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.122277 -0.497655 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0920638 -0.515014 0.579103 RAD 0.00617284 + txt002 + SPHERE CENTER -0.107585 -0.504787 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0837352 -0.498397 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.153845 -0.574159 0.618405 RAD 0.0555556 + txt002 + SPHERE CENTER 0.202534 -0.612768 0.658726 RAD 0.0185185 + txt002 + SPHERE CENTER 0.225282 -0.612732 0.668328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.22113 -0.60221 0.64638 RAD 0.00617284 + txt002 + SPHERE CENTER 0.212428 -0.591695 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER 0.206686 -0.62329 0.680674 RAD 0.00617284 + txt002 + SPHERE CENTER 0.193832 -0.602253 0.679302 RAD 0.00617284 + txt002 + SPHERE CENTER 0.183939 -0.623325 0.671072 RAD 0.00617284 + txt002 + SPHERE CENTER 0.215388 -0.633805 0.660098 RAD 0.00617284 + txt002 + SPHERE CENTER 0.192641 -0.63384 0.650495 RAD 0.00617284 + txt002 + SPHERE CENTER 0.211236 -0.623283 0.63815 RAD 0.00617284 + txt002 + SPHERE CENTER 0.225396 -0.554987 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.243024 -0.542885 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.225396 -0.554987 0.593714 RAD 0.00617284 + txt002 + SPHERE CENTER 0.219861 -0.534333 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.243024 -0.542885 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.219861 -0.534333 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.225396 -0.554987 0.643096 RAD 0.00617284 + txt002 + SPHERE CENTER 0.248559 -0.563539 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.23093 -0.575642 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.23093 -0.575642 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.184086 -0.543919 0.678886 RAD 0.0185185 + txt002 + SPHERE CENTER 0.200547 -0.527458 0.687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.205161 -0.540303 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.187702 -0.522843 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.179472 -0.531074 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.166627 -0.526459 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER 0.163011 -0.547535 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER 0.196931 -0.548533 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.18047 -0.564994 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER 0.201546 -0.561378 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER 0.130984 -0.631939 0.658726 RAD 0.0185185 + txt002 + SPHERE CENTER 0.132649 -0.643128 0.680674 RAD 0.00617284 + txt002 + SPHERE CENTER 0.152367 -0.631785 0.671072 RAD 0.00617284 + txt002 + SPHERE CENTER 0.133263 -0.618482 0.679302 RAD 0.00617284 + txt002 + SPHERE CENTER 0.111266 -0.643283 0.668328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.11188 -0.618637 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER 0.109601 -0.632094 0.64638 RAD 0.00617284 + txt002 + SPHERE CENTER 0.130371 -0.656585 0.660098 RAD 0.00617284 + txt002 + SPHERE CENTER 0.128706 -0.645397 0.63815 RAD 0.00617284 + txt002 + SPHERE CENTER 0.150088 -0.645242 0.650495 RAD 0.00617284 + txt002 + SPHERE CENTER 0.112536 -0.56309 0.678886 RAD 0.0185185 + txt002 + SPHERE CENTER 0.11011 -0.549659 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.132596 -0.555684 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER 0.118927 -0.53924 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER 0.09005 -0.557065 0.687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0988668 -0.546646 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0924762 -0.570497 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.103719 -0.573509 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.106145 -0.58694 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER 0.126205 -0.579534 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0822954 -0.593331 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0609772 -0.591664 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0822954 -0.593331 0.643096 RAD 0.00617284 + txt002 + SPHERE CENTER 0.076761 -0.572676 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0609772 -0.591664 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.076761 -0.572676 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0822954 -0.593331 0.593714 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0665116 -0.612319 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0878298 -0.613986 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0878298 -0.613986 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.172294 -0.643008 0.598245 RAD 0.0185185 + txt002 + SPHERE CENTER 0.189742 -0.660425 0.599616 RAD 0.00617284 + txt002 + SPHERE CENTER 0.196144 -0.636618 0.598245 RAD 0.00617284 + txt002 + SPHERE CENTER 0.185725 -0.645434 0.618821 RAD 0.00617284 + txt002 + SPHERE CENTER 0.165892 -0.666816 0.599616 RAD 0.00617284 + txt002 + SPHERE CENTER 0.161875 -0.651825 0.618821 RAD 0.00617284 + txt002 + SPHERE CENTER 0.148444 -0.649399 0.598245 RAD 0.00617284 + txt002 + SPHERE CENTER 0.17631 -0.657999 0.57904 RAD 0.00617284 + txt002 + SPHERE CENTER 0.158862 -0.640582 0.577669 RAD 0.00617284 + txt002 + SPHERE CENTER 0.182712 -0.634191 0.577669 RAD 0.00617284 + txt002 + SPHERE CENTER 0.123605 -0.6044 0.557924 RAD 0.0185185 + txt002 + SPHERE CENTER 0.107144 -0.620861 0.549693 RAD 0.00617284 + txt002 + SPHERE CENTER 0.119989 -0.625475 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER 0.102529 -0.608016 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER 0.11076 -0.599785 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER 0.106145 -0.58694 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER 0.127221 -0.583324 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.128219 -0.617245 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER 0.14468 -0.600784 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.141064 -0.621859 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER 0.195155 -0.585228 0.557924 RAD 0.0185185 + txt002 + SPHERE CENTER 0.203972 -0.574809 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER 0.181486 -0.568784 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.201546 -0.561378 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER 0.217641 -0.591253 0.549693 RAD 0.00617284 + txt002 + SPHERE CENTER 0.215215 -0.577822 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER 0.208824 -0.601672 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER 0.197581 -0.598659 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER 0.188764 -0.609078 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER 0.175095 -0.592634 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0329639 -0.552323 0.43322 RAD 0.0555556 + txt002 + SPHERE CENTER 0.0248832 -0.625877 0.436618 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0316054 -0.646362 0.448652 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0478 -0.627981 0.445566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0287309 -0.625173 0.460998 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00868865 -0.644258 0.439705 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00581415 -0.623069 0.45205 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00196644 -0.623773 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0277577 -0.647066 0.424272 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0210355 -0.62658 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0439523 -0.628685 0.421186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0822954 -0.593331 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.105299 -0.593994 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER 0.100664 -0.582384 0.457911 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0926585 -0.572783 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0869303 -0.604941 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0742898 -0.58373 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0639267 -0.604278 0.482603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0949359 -0.614541 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0719323 -0.613879 0.46131 RAD 0.00617284 + txt002 + SPHERE CENTER 0.090301 -0.602932 0.448964 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0138144 -0.584567 0.497099 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0177119 -0.584898 0.521479 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0364224 -0.580268 0.506047 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0185345 -0.56353 0.509133 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00489609 -0.589197 0.512531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00407348 -0.567829 0.500186 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00879364 -0.588867 0.488152 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0129918 -0.605935 0.509445 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00909422 -0.605605 0.485065 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0317022 -0.601305 0.494013 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0244483 -0.584869 0.399581 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0473753 -0.5935 0.402668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0308315 -0.595617 0.420874 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0399691 -0.57344 0.415013 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0409921 -0.582752 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0335859 -0.562692 0.39372 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0180651 -0.574121 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0318545 -0.604929 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00892756 -0.596298 0.384149 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0153107 -0.607046 0.405442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0355172 -0.54356 0.460062 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0495897 -0.530389 0.475494 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0261165 -0.53532 0.481355 RAD 0.00617284 + txt002 + SPHERE CENTER -0.031221 -0.519442 0.463149 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0589904 -0.538628 0.454201 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0406217 -0.527681 0.441856 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0449178 -0.551799 0.438769 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0538859 -0.554507 0.472408 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0398133 -0.567678 0.456976 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0304127 -0.559438 0.478269 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0163676 -0.511316 0.396183 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0212225 -0.48882 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00896145 -0.491256 0.408529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00194055 -0.497372 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0286287 -0.50888 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00546563 -0.517432 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0237738 -0.531375 0.383837 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0395307 -0.502764 0.396183 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0346758 -0.525259 0.40513 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0272696 -0.505199 0.417476 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0440327 -0.593633 0.372739 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0604766 -0.607302 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0678827 -0.587242 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0604766 -0.607302 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0366265 -0.613693 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0366265 -0.613693 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0201827 -0.600023 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0440327 -0.593633 0.348047 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0275889 -0.579964 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0514389 -0.573573 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0521134 -0.520079 0.369341 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0542684 -0.523344 0.344961 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0591566 -0.541988 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0358996 -0.534291 0.357307 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0472252 -0.501435 0.353908 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0288565 -0.512382 0.366254 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0450702 -0.49817 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0704822 -0.509132 0.356995 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0683272 -0.505868 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0753703 -0.527777 0.372427 RAD 0.00617284 + txt002 + SPHERE CENTER 0.101445 -0.561087 0.406378 RAD 0.0185185 + txt002 + SPHERE CENTER 0.118381 -0.551884 0.390945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0944221 -0.550745 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.103361 -0.536664 0.403291 RAD 0.00617284 + txt002 + SPHERE CENTER 0.125404 -0.562225 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.110383 -0.547006 0.424584 RAD 0.00617284 + txt002 + SPHERE CENTER 0.108468 -0.571428 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER 0.116465 -0.576307 0.394032 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0995293 -0.58551 0.409464 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0925065 -0.575168 0.388171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.247614 -0.494808 0.43322 RAD 0.0555556 + txt002 + SPHERE CENTER 0.313607 -0.494287 0.399581 RAD 0.0185185 + txt002 + SPHERE CENTER 0.326876 -0.484182 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.302705 -0.488171 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.310432 -0.470513 0.39372 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337778 -0.490299 0.402668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.321334 -0.476629 0.415013 RAD 0.00617284 + txt002 + SPHERE CENTER 0.324509 -0.500404 0.420874 RAD 0.00617284 + txt002 + SPHERE CENTER 0.330051 -0.507957 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.316783 -0.518062 0.405442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.305881 -0.511946 0.384149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.269833 -0.434629 0.396183 RAD 0.0185185 + txt002 + SPHERE CENTER 0.279233 -0.426389 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER 0.286276 -0.448298 0.383837 RAD 0.00617284 + txt002 + SPHERE CENTER 0.263449 -0.445377 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER 0.262789 -0.41272 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.247006 -0.431707 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.253389 -0.420959 0.408529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.285616 -0.415641 0.396183 RAD 0.00617284 + txt002 + SPHERE CENTER 0.276216 -0.42388 0.417476 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29266 -0.43755 0.40513 RAD 0.00617284 + txt002 + SPHERE CENTER 0.302539 -0.452978 0.460062 RAD 0.0185185 + txt002 + SPHERE CENTER 0.320401 -0.436971 0.454201 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3148 -0.455413 0.438769 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29902 -0.436675 0.441856 RAD 0.00617284 + txt002 + SPHERE CENTER 0.30814 -0.434535 0.475494 RAD 0.00617284 + txt002 + SPHERE CENTER 0.286759 -0.434239 0.463149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.290278 -0.450543 0.481355 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32392 -0.453274 0.472408 RAD 0.00617284 + txt002 + SPHERE CENTER 0.306057 -0.469281 0.478269 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318318 -0.471717 0.456976 RAD 0.00617284 + txt002 + SPHERE CENTER 0.291389 -0.554467 0.436618 RAD 0.0185185 + txt002 + SPHERE CENTER 0.314604 -0.562288 0.439705 RAD 0.00617284 + txt002 + SPHERE CENTER 0.310183 -0.541186 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER 0.306499 -0.542501 0.45205 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29581 -0.575569 0.448652 RAD 0.00617284 + txt002 + SPHERE CENTER 0.287705 -0.555781 0.460998 RAD 0.00617284 + txt002 + SPHERE CENTER 0.272595 -0.567748 0.445566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.299494 -0.574255 0.424272 RAD 0.00617284 + txt002 + SPHERE CENTER 0.276279 -0.566433 0.421186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.295073 -0.553152 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.28032 -0.513157 0.497099 RAD 0.0185185 + txt002 + SPHERE CENTER 0.298839 -0.507811 0.512531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.302049 -0.505577 0.488152 RAD 0.00617284 + txt002 + SPHERE CENTER 0.287442 -0.489718 0.500186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.27711 -0.515392 0.521479 RAD 0.00617284 + txt002 + SPHERE CENTER 0.265714 -0.497299 0.509133 RAD 0.00617284 + txt002 + SPHERE CENTER 0.258591 -0.520738 0.506047 RAD 0.00617284 + txt002 + SPHERE CENTER 0.291716 -0.531251 0.509445 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273198 -0.536597 0.494013 RAD 0.00617284 + txt002 + SPHERE CENTER 0.294927 -0.529016 0.485065 RAD 0.00617284 + txt002 + SPHERE CENTER 0.225396 -0.554987 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.227186 -0.567359 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.246777 -0.555283 0.482603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.227528 -0.54267 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.205805 -0.567063 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER 0.206147 -0.542374 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER 0.204014 -0.554691 0.457911 RAD 0.00617284 + txt002 + SPHERE CENTER 0.225054 -0.579676 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.223263 -0.567305 0.448964 RAD 0.00617284 + txt002 + SPHERE CENTER 0.244644 -0.567601 0.46131 RAD 0.00617284 + txt002 + SPHERE CENTER 0.258683 -0.536117 0.372739 RAD 0.0185185 + txt002 + SPHERE CENTER 0.275127 -0.549787 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282533 -0.529727 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER 0.275127 -0.549787 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.251277 -0.556177 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.251277 -0.556177 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.234833 -0.542508 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER 0.258683 -0.536117 0.348047 RAD 0.00617284 + txt002 + SPHERE CENTER 0.242239 -0.522448 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.266089 -0.516058 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.19269 -0.536638 0.406378 RAD 0.0185185 + txt002 + SPHERE CENTER 0.17251 -0.549603 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.191778 -0.549105 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER 0.177908 -0.528912 0.424584 RAD 0.00617284 + txt002 + SPHERE CENTER 0.173421 -0.537136 0.390945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.178819 -0.516445 0.403291 RAD 0.00617284 + txt002 + SPHERE CENTER 0.193601 -0.524171 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.187292 -0.557329 0.394032 RAD 0.00617284 + txt002 + SPHERE CENTER 0.207471 -0.544363 0.388171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.20656 -0.556831 0.409464 RAD 0.00617284 + txt002 + SPHERE CENTER 0.214908 -0.476459 0.369341 RAD 0.0185185 + txt002 + SPHERE CENTER 0.209819 -0.457868 0.353908 RAD 0.00617284 + txt002 + SPHERE CENTER 0.210053 -0.453963 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.2312 -0.458164 0.366254 RAD 0.00617284 + txt002 + SPHERE CENTER 0.214674 -0.480363 0.344961 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236055 -0.480659 0.357307 RAD 0.00617284 + txt002 + SPHERE CENTER 0.219763 -0.498954 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.193527 -0.476163 0.356995 RAD 0.00617284 + txt002 + SPHERE CENTER 0.198616 -0.494753 0.372427 RAD 0.00617284 + txt002 + SPHERE CENTER 0.193761 -0.472258 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.172546 -0.643951 1.11022e-16 RAD 0.166667 + txt002 + SPHERE CENTER -0.157543 -0.835815 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.122136 -0.871646 0.165419 RAD 0.0185185 + txt002 + SPHERE CENTER -0.102403 -0.871334 0.180258 RAD 0.00617284 + txt002 + SPHERE CENTER -0.100577 -0.862937 0.157111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.113406 -0.850164 0.173902 RAD 0.00617284 + txt002 + SPHERE CENTER -0.123961 -0.880044 0.188567 RAD 0.00617284 + txt002 + SPHERE CENTER -0.134964 -0.858873 0.182211 RAD 0.00617284 + txt002 + SPHERE CENTER -0.143694 -0.880356 0.173728 RAD 0.00617284 + txt002 + SPHERE CENTER -0.111133 -0.892817 0.171776 RAD 0.00617284 + txt002 + SPHERE CENTER -0.130866 -0.893129 0.156937 RAD 0.00617284 + txt002 + SPHERE CENTER -0.109307 -0.884419 0.148628 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0854653 -0.82339 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0654286 -0.811594 0.114524 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0820122 -0.820516 0.0985541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0876595 -0.80102 0.112614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0688817 -0.814468 0.138803 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0911125 -0.803895 0.136894 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0889183 -0.826265 0.147112 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0632344 -0.833964 0.124743 RAD 0.00617284 + txt002 + SPHERE CENTER -0.083271 -0.845761 0.133052 RAD 0.00617284 + txt002 + SPHERE CENTER -0.079818 -0.842886 0.108773 RAD 0.00617284 + txt002 + SPHERE CENTER -0.135649 -0.799077 0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER -0.120908 -0.781177 0.180075 RAD 0.00617284 + txt002 + SPHERE CENTER -0.113462 -0.795477 0.161374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.13149 -0.778973 0.157875 RAD 0.00617284 + txt002 + SPHERE CENTER -0.143095 -0.784778 0.190293 RAD 0.00617284 + txt002 + SPHERE CENTER -0.153678 -0.782573 0.168094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.157836 -0.802678 0.181811 RAD 0.00617284 + txt002 + SPHERE CENTER -0.125067 -0.801282 0.193792 RAD 0.00617284 + txt002 + SPHERE CENTER -0.139808 -0.819182 0.18531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.11762 -0.815582 0.175091 RAD 0.00617284 + txt002 + SPHERE CENTER -0.194213 -0.884071 0.153697 RAD 0.0185185 + txt002 + SPHERE CENTER -0.197746 -0.891905 0.176845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.175383 -0.884286 0.169668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.193701 -0.867957 0.172398 RAD 0.00617284 + txt002 + SPHERE CENTER -0.216576 -0.89169 0.160875 RAD 0.00617284 + txt002 + SPHERE CENTER -0.212531 -0.867741 0.156428 RAD 0.00617284 + txt002 + SPHERE CENTER -0.213043 -0.883856 0.137727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.198259 -0.908019 0.158144 RAD 0.00617284 + txt002 + SPHERE CENTER -0.194726 -0.900186 0.134996 RAD 0.00617284 + txt002 + SPHERE CENTER -0.175896 -0.900401 0.150967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.207727 -0.811502 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.212743 -0.794108 0.176661 RAD 0.00617284 + txt002 + SPHERE CENTER -0.189621 -0.802328 0.173931 RAD 0.00617284 + txt002 + SPHERE CENTER -0.199907 -0.788345 0.156372 RAD 0.00617284 + txt002 + SPHERE CENTER -0.230849 -0.803282 0.162601 RAD 0.00617284 + txt002 + SPHERE CENTER -0.218012 -0.797518 0.142311 RAD 0.00617284 + txt002 + SPHERE CENTER -0.225832 -0.820676 0.14581 RAD 0.00617284 + txt002 + SPHERE CENTER -0.220563 -0.817265 0.18016 RAD 0.00617284 + txt002 + SPHERE CENTER -0.215547 -0.83466 0.163369 RAD 0.00617284 + txt002 + SPHERE CENTER -0.197441 -0.825486 0.177429 RAD 0.00617284 + txt002 + SPHERE CENTER -0.229621 -0.84824 0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.25245 -0.843832 0.107698 RAD 0.00617284 + txt002 + SPHERE CENTER -0.233837 -0.846687 0.123668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.235043 -0.826426 0.109608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.248234 -0.845385 0.0834188 RAD 0.00617284 + txt002 + SPHERE CENTER -0.230827 -0.827978 0.0853287 RAD 0.00617284 + txt002 + SPHERE CENTER -0.225404 -0.849792 0.0751099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.247028 -0.865646 0.0974792 RAD 0.00617284 + txt002 + SPHERE CENTER -0.224198 -0.870053 0.0891702 RAD 0.00617284 + txt002 + SPHERE CENTER -0.228415 -0.868501 0.113449 RAD 0.00617284 + txt002 + SPHERE CENTER -0.14403 -0.908384 0.104938 RAD 0.0185185 + txt002 + SPHERE CENTER -0.128672 -0.926643 0.111295 RAD 0.00617284 + txt002 + SPHERE CENTER -0.1198 -0.904034 0.106848 RAD 0.00617284 + txt002 + SPHERE CENTER -0.133221 -0.90826 0.127138 RAD 0.00617284 + txt002 + SPHERE CENTER -0.152902 -0.930993 0.109385 RAD 0.00617284 + txt002 + SPHERE CENTER -0.157451 -0.912609 0.125228 RAD 0.00617284 + txt002 + SPHERE CENTER -0.16826 -0.912733 0.103028 RAD 0.00617284 + txt002 + SPHERE CENTER -0.139481 -0.926768 0.0890951 RAD 0.00617284 + txt002 + SPHERE CENTER -0.154838 -0.908508 0.0827387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.130608 -0.904159 0.0846485 RAD 0.00617284 + txt002 + SPHERE CENTER -0.179437 -0.872552 0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER -0.188167 -0.894035 0.0421477 RAD 0.00617284 + txt002 + SPHERE CENTER -0.172046 -0.89378 0.0608487 RAD 0.00617284 + txt002 + SPHERE CENTER -0.195141 -0.885777 0.0643473 RAD 0.00617284 + txt002 + SPHERE CENTER -0.195558 -0.872807 0.0319289 RAD 0.00617284 + txt002 + SPHERE CENTER -0.202532 -0.864549 0.0541285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.186828 -0.851325 0.0404111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.172463 -0.880811 0.0284303 RAD 0.00617284 + txt002 + SPHERE CENTER -0.163733 -0.859328 0.0369125 RAD 0.00617284 + txt002 + SPHERE CENTER -0.156342 -0.880556 0.0471312 RAD 0.00617284 + txt002 + SPHERE CENTER -0.107359 -0.860128 0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0905999 -0.853284 0.0455609 RAD 0.00617284 + txt002 + SPHERE CENTER -0.111382 -0.840233 0.0482916 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0940331 -0.839638 0.0658506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.086577 -0.873178 0.0596212 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0900102 -0.859532 0.079911 RAD 0.00617284 + txt002 + SPHERE CENTER -0.103336 -0.880022 0.0764123 RAD 0.00617284 + txt002 + SPHERE CENTER -0.103926 -0.873773 0.0420622 RAD 0.00617284 + txt002 + SPHERE CENTER -0.120685 -0.880618 0.0588533 RAD 0.00617284 + txt002 + SPHERE CENTER -0.124708 -0.860723 0.044793 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0133465 -0.69376 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.0838533 -0.674309 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.103063 -0.66171 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0876683 -0.673446 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0800983 -0.653258 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0992478 -0.662574 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0762832 -0.654121 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0800382 -0.675172 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.106818 -0.682761 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0876083 -0.69536 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0914233 -0.694497 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0539145 -0.666287 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0547519 -0.662466 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0439578 -0.682791 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0332597 -0.660752 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0647085 -0.645962 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0432164 -0.644249 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0638711 -0.649783 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0754066 -0.668 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0745692 -0.671821 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0646126 -0.688325 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0325183 -0.62221 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0446211 -0.604582 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.053173 -0.627745 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0325183 -0.62221 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0239663 -0.599047 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0118635 -0.616676 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0118635 -0.616676 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0446211 -0.604582 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0325183 -0.62221 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.053173 -0.627745 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0432853 -0.701782 0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0608821 -0.693716 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0652402 -0.694884 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0496759 -0.677932 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0389272 -0.700615 0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.027721 -0.684831 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0213304 -0.708681 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0544915 -0.717566 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0368947 -0.725632 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0588496 -0.718734 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00804971 -0.649684 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.00328338 -0.628657 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0152909 -0.642244 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.000378614 -0.630031 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.026624 -0.636097 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.022962 -0.637471 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0313903 -0.657124 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0117117 -0.648309 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.016478 -0.669336 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00686255 -0.661896 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0272215 -0.721234 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0310802 -0.720593 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00820099 -0.718114 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0246945 -0.7 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0501007 -0.723713 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.043715 -0.70312 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.046242 -0.724354 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0336072 -0.741827 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0297485 -0.742467 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.010728 -0.739347 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0646815 -0.745859 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0887955 -0.750021 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0813312 -0.732161 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.078459 -0.729506 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0721458 -0.763719 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0618093 -0.743204 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0480318 -0.759557 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.075018 -0.766375 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.050904 -0.762212 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0675537 -0.748514 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0058253 -0.76531 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.00415829 -0.786629 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0148294 -0.770845 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0058253 -0.76531 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.024813 -0.781094 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.02648 -0.759776 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.02648 -0.759776 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00415829 -0.786629 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0058253 -0.76531 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0148294 -0.770845 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0347427 -0.737837 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0542122 -0.747099 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0550267 -0.7241 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0553974 -0.743371 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0339282 -0.760836 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0351134 -0.757108 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0144587 -0.751574 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0335575 -0.741565 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.014088 -0.732303 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0343719 -0.718566 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.172546 -0.643951 0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER -0.142305 -0.61371 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.125845 -0.597249 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.12123 -0.610094 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.138689 -0.592635 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.14692 -0.600865 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.159765 -0.596251 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.163381 -0.617326 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.12946 -0.618324 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.145921 -0.634785 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.124846 -0.631169 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.100996 -0.624779 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0833673 -0.612676 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.100996 -0.624779 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.10653 -0.604124 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0833673 -0.612676 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.10653 -0.604124 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.100996 -0.624779 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0778329 -0.633331 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0954616 -0.645433 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0954616 -0.645433 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.153374 -0.5724 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.141271 -0.554772 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.13272 -0.577935 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.153374 -0.5724 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.161926 -0.549237 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.174029 -0.566866 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.174029 -0.566866 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.141271 -0.554772 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.153374 -0.5724 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.13272 -0.577935 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.213855 -0.632882 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.216282 -0.61945 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.193796 -0.625476 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.207465 -0.609032 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.236341 -0.626857 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.227525 -0.616438 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.233915 -0.640288 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.222672 -0.6433 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.220246 -0.656732 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.200186 -0.649326 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.224924 -0.591572 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.2291 -0.567237 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.209804 -0.576452 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.209804 -0.576452 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.24422 -0.582357 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.224924 -0.591572 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.240045 -0.606693 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.24422 -0.582357 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.240045 -0.606693 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.224924 -0.591572 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.244096 -0.663122 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.265414 -0.661455 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.244096 -0.663122 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.249631 -0.642468 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.265414 -0.661455 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.249631 -0.642468 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.244096 -0.663122 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.25988 -0.68211 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.238562 -0.683777 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.238562 -0.683777 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.161477 -0.68526 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.148046 -0.687686 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.137627 -0.678869 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.154071 -0.6652 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.171896 -0.694077 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.177921 -0.671591 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.185327 -0.691651 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.155452 -0.707746 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.168883 -0.70532 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.145033 -0.698929 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.191718 -0.715501 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.190051 -0.736819 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.171063 -0.721035 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.191718 -0.715501 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.210706 -0.731284 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.212373 -0.709966 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.212373 -0.709966 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.190051 -0.736819 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.191718 -0.715501 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.171063 -0.721035 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.120168 -0.696329 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.095832 -0.700504 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.105047 -0.681209 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.105047 -0.681209 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.110952 -0.715624 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.120168 -0.696329 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.135288 -0.711449 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.110952 -0.715624 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.135288 -0.711449 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.120168 -0.696329 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.343435 -0.786005 8.51251e-17 RAD 0.0555556 + txt002 + SPHERE CENTER -0.392454 -0.82165 0.0425863 RAD 0.0185185 + txt002 + SPHERE CENTER -0.400556 -0.824791 0.065698 RAD 0.00617284 + txt002 + SPHERE CENTER -0.376528 -0.821021 0.0614442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.392663 -0.802599 0.058292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.416482 -0.82542 0.0468401 RAD 0.00617284 + txt002 + SPHERE CENTER -0.408589 -0.803228 0.0394341 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40838 -0.822279 0.0237283 RAD 0.00617284 + txt002 + SPHERE CENTER -0.400347 -0.843843 0.0499923 RAD 0.00617284 + txt002 + SPHERE CENTER -0.392245 -0.840701 0.0268805 RAD 0.00617284 + txt002 + SPHERE CENTER -0.376319 -0.840073 0.0457385 RAD 0.00617284 + txt002 + SPHERE CENTER -0.323622 -0.80984 0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.308073 -0.80634 0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.300378 -0.802721 0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER -0.316395 -0.786996 0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER -0.331317 -0.813459 0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339639 -0.794116 0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER -0.346866 -0.81696 0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER -0.315299 -0.829184 0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER -0.330849 -0.832685 0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.307605 -0.825565 0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER -0.370774 -0.753118 0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER -0.367981 -0.734271 0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.348136 -0.745269 0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.362711 -0.731279 0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER -0.390619 -0.74212 0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.385349 -0.739128 0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER -0.393412 -0.760966 0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER -0.376044 -0.756109 0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER -0.378837 -0.774956 0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER -0.356199 -0.767107 0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.412267 -0.797815 -0.0246914 RAD 0.0185185 + txt002 + SPHERE CENTER -0.436217 -0.793573 -0.0204376 RAD 0.00617284 + txt002 + SPHERE CENTER -0.420728 -0.796968 -0.00151032 RAD 0.00617284 + txt002 + SPHERE CENTER -0.419454 -0.776294 -0.0149506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.427756 -0.79442 -0.0436186 RAD 0.00617284 + txt002 + SPHERE CENTER -0.410993 -0.777141 -0.0381316 RAD 0.00617284 + txt002 + SPHERE CENTER -0.403807 -0.798662 -0.0478724 RAD 0.00617284 + txt002 + SPHERE CENTER -0.42903 -0.815094 -0.0301783 RAD 0.00617284 + txt002 + SPHERE CENTER -0.405081 -0.819335 -0.0344321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.413542 -0.818489 -0.0112511 RAD 0.00617284 + txt002 + SPHERE CENTER -0.390587 -0.729282 -0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER -0.392427 -0.704862 -0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER -0.373948 -0.714218 0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.374248 -0.717401 -0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER -0.409067 -0.719927 -0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER -0.390887 -0.732465 -0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.407227 -0.744347 -0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.408767 -0.716744 0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER -0.406927 -0.741164 0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER -0.390287 -0.726099 0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER -0.363249 -0.76217 -0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.356966 -0.747522 -0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.352002 -0.740618 -0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339469 -0.759239 -0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER -0.368213 -0.769074 -0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER -0.350716 -0.780791 -0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER -0.374496 -0.783722 -0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER -0.380746 -0.750453 -0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER -0.387029 -0.765101 -0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.375782 -0.743549 -0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER -0.365116 -0.854538 -0.0178949 RAD 0.0185185 + txt002 + SPHERE CENTER -0.365674 -0.878086 -0.0104889 RAD 0.00617284 + txt002 + SPHERE CENTER -0.346241 -0.863875 -0.00500196 RAD 0.00617284 + txt002 + SPHERE CENTER -0.367962 -0.859887 0.00604126 RAD 0.00617284 + txt002 + SPHERE CENTER -0.384548 -0.868748 -0.0233819 RAD 0.00617284 + txt002 + SPHERE CENTER -0.386837 -0.85055 -0.00685171 RAD 0.00617284 + txt002 + SPHERE CENTER -0.38399 -0.8452 -0.0307879 RAD 0.00617284 + txt002 + SPHERE CENTER -0.362827 -0.872736 -0.0344251 RAD 0.00617284 + txt002 + SPHERE CENTER -0.362269 -0.849188 -0.0418311 RAD 0.00617284 + txt002 + SPHERE CENTER -0.343394 -0.858526 -0.0289382 RAD 0.00617284 + txt002 + SPHERE CENTER -0.316097 -0.818893 -0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER -0.297057 -0.819591 -0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.304244 -0.79807 -0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.293153 -0.814956 -0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER -0.30891 -0.840413 -0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.305006 -0.835779 -0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER -0.32795 -0.839716 -0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER -0.320001 -0.823527 -0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339041 -0.822829 -0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER -0.327188 -0.802007 -0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.296284 -0.842728 0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER -0.272611 -0.848999 0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER -0.278432 -0.829121 -0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.281616 -0.828835 0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER -0.290462 -0.862606 0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER -0.299468 -0.842441 0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.314135 -0.856335 0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.287278 -0.862893 -0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER -0.310951 -0.856621 -0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER -0.293099 -0.843015 -0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER -0.358439 -0.594141 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.389119 -0.547576 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.386849 -0.525642 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.366733 -0.538964 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.379645 -0.528407 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.409235 -0.534255 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.402031 -0.537019 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.411505 -0.556189 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396323 -0.544812 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.398593 -0.566746 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.376207 -0.558134 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.317871 -0.566667 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.299647 -0.551072 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.29885 -0.563547 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.315344 -0.545434 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.318667 -0.554192 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.334364 -0.548554 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.336891 -0.569787 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.302174 -0.572306 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.320398 -0.587901 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.301377 -0.584781 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339267 -0.522591 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.327164 -0.504962 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.318612 -0.528125 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339267 -0.522591 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.347819 -0.499428 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.359921 -0.517056 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.359921 -0.517056 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.327164 -0.504962 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339267 -0.522591 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.318612 -0.528125 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.429687 -0.57505 0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER -0.446515 -0.55776 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.428387 -0.562617 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.423296 -0.5512 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.447815 -0.570193 0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER -0.424596 -0.563633 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.430987 -0.587483 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.452905 -0.58161 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436077 -0.5989 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434777 -0.586467 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.379835 -0.550064 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.372012 -0.535334 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.359551 -0.536327 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.35918 -0.555599 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.392296 -0.549071 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.379464 -0.569335 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.400119 -0.563801 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.392667 -0.529799 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.400489 -0.54453 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.380205 -0.530793 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399007 -0.621614 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.420252 -0.632748 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.408963 -0.638118 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.419661 -0.61608 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.410295 -0.616244 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.409705 -0.599576 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.38905 -0.60511 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399597 -0.638282 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.378352 -0.627149 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.388308 -0.643653 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.408291 -0.619127 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.415912 -0.617918 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.39183 -0.616439 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.406911 -0.597788 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.432372 -0.620605 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.423371 -0.600475 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.424751 -0.621814 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.417292 -0.639257 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.409671 -0.640465 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.39321 -0.637778 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37761 -0.665691 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.375943 -0.687009 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.356956 -0.671225 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37761 -0.665691 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396598 -0.681475 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.398265 -0.660156 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.398265 -0.660156 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.375943 -0.687009 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37761 -0.665691 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.356956 -0.671225 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.337042 -0.638217 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.320629 -0.641183 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.313702 -0.630777 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.328614 -0.618565 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.34397 -0.648623 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.351955 -0.626005 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.360383 -0.645657 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.329058 -0.660835 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.345471 -0.65787 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.32213 -0.65043 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.358439 -0.594141 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.409774 -0.542042 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.413579 -0.517869 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.395831 -0.525596 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.393219 -0.528508 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.427522 -0.534315 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.407161 -0.544953 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.423716 -0.558488 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.430134 -0.531404 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.426328 -0.555577 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.412386 -0.539131 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.379835 -0.550064 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.375068 -0.529037 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.356494 -0.542624 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.371406 -0.530412 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.398409 -0.536477 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.394747 -0.537852 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.403175 -0.557504 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.383497 -0.548689 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.388263 -0.569716 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.364922 -0.562276 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339267 -0.522591 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.327164 -0.504962 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.318612 -0.528125 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339267 -0.522591 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.347819 -0.499428 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.359921 -0.517056 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.359921 -0.517056 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.327164 -0.504962 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339267 -0.522591 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.318612 -0.528125 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.388377 -0.586119 -0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.399584 -0.570335 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.403942 -0.569167 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.381987 -0.562269 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.384019 -0.587286 -0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.366422 -0.57922 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.372813 -0.60307 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.405974 -0.594185 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.394768 -0.609969 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.410332 -0.593017 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.317871 -0.566667 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.317033 -0.562847 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.327827 -0.583171 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.338525 -0.561133 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.307077 -0.546343 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.328569 -0.544629 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.307914 -0.550163 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.296378 -0.568381 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.297216 -0.572202 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.307172 -0.588706 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.337042 -0.638217 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.317573 -0.64748 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.316758 -0.624481 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.316388 -0.643752 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.337857 -0.661216 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.336672 -0.657489 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.357326 -0.651954 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.338228 -0.641945 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.357697 -0.632683 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.337413 -0.618946 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.428945 -0.613592 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.451897 -0.612625 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.432663 -0.614807 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436515 -0.593593 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.448179 -0.61141 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.432797 -0.592379 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.425227 -0.612377 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.444328 -0.632624 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.421376 -0.633591 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.425094 -0.634806 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37761 -0.665691 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.375943 -0.687009 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.356956 -0.671225 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37761 -0.665691 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396598 -0.681475 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.398265 -0.660156 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.398265 -0.660156 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.375943 -0.687009 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37761 -0.665691 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.356956 -0.671225 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399007 -0.621614 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.402865 -0.620974 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.379986 -0.618494 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.39648 -0.600381 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.421886 -0.624094 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.4155 -0.603501 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.418027 -0.624734 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.405392 -0.642207 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.401533 -0.642848 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.382513 -0.639728 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.157543 -0.835815 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.119969 -0.899353 -0.117284 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0977075 -0.909872 -0.115431 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0997803 -0.886771 -0.1239 RAD 0.00617284 + txt002 + SPHERE CENTER -0.104052 -0.891613 -0.100068 RAD 0.00617284 + txt002 + SPHERE CENTER -0.117896 -0.922453 -0.108814 RAD 0.00617284 + txt002 + SPHERE CENTER -0.124241 -0.904194 -0.0934517 RAD 0.00617284 + txt002 + SPHERE CENTER -0.140158 -0.911935 -0.110668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.113625 -0.917612 -0.132647 RAD 0.00617284 + txt002 + SPHERE CENTER -0.135886 -0.907093 -0.1345 RAD 0.00617284 + txt002 + SPHERE CENTER -0.115698 -0.894512 -0.141116 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0844101 -0.836885 -0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0627848 -0.826973 -0.106005 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0805529 -0.830202 -0.122844 RAD 0.00617284 + txt002 + SPHERE CENTER -0.083104 -0.81296 -0.105354 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0666419 -0.833656 -0.0825505 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0869612 -0.819643 -0.0818993 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0882673 -0.843568 -0.0759343 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0640908 -0.850898 -0.10004 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0857161 -0.860809 -0.093424 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0818589 -0.854126 -0.116879 RAD 0.00617284 + txt002 + SPHERE CENTER -0.130205 -0.868703 -0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER -0.11253 -0.867758 -0.0334138 RAD 0.00617284 + txt002 + SPHERE CENTER -0.107566 -0.860854 -0.0565949 RAD 0.00617284 + txt002 + SPHERE CENTER -0.122142 -0.846864 -0.0423994 RAD 0.00617284 + txt002 + SPHERE CENTER -0.135168 -0.875606 -0.0274488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.14478 -0.854713 -0.0364345 RAD 0.00617284 + txt002 + SPHERE CENTER -0.152843 -0.876551 -0.0446649 RAD 0.00617284 + txt002 + SPHERE CENTER -0.120593 -0.889596 -0.0416443 RAD 0.00617284 + txt002 + SPHERE CENTER -0.138267 -0.890541 -0.0588603 RAD 0.00617284 + txt002 + SPHERE CENTER -0.115629 -0.882692 -0.0648253 RAD 0.00617284 + txt002 + SPHERE CENTER -0.193102 -0.898283 -0.129006 RAD 0.0185185 + txt002 + SPHERE CENTER -0.201143 -0.920038 -0.120537 RAD 0.00617284 + txt002 + SPHERE CENTER -0.17991 -0.910616 -0.112168 RAD 0.00617284 + txt002 + SPHERE CENTER -0.201384 -0.900209 -0.105825 RAD 0.00617284 + txt002 + SPHERE CENTER -0.214335 -0.907705 -0.137375 RAD 0.00617284 + txt002 + SPHERE CENTER -0.214576 -0.887876 -0.122663 RAD 0.00617284 + txt002 + SPHERE CENTER -0.206294 -0.88595 -0.145845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.192861 -0.918112 -0.143718 RAD 0.00617284 + txt002 + SPHERE CENTER -0.18482 -0.896357 -0.152187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.171628 -0.90869 -0.135349 RAD 0.00617284 + txt002 + SPHERE CENTER -0.203337 -0.867633 -0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER -0.209658 -0.868948 -0.0385197 RAD 0.00617284 + txt002 + SPHERE CENTER -0.186008 -0.865773 -0.0448623 RAD 0.00617284 + txt002 + SPHERE CENTER -0.202239 -0.84746 -0.0481565 RAD 0.00617284 + txt002 + SPHERE CENTER -0.226988 -0.870808 -0.0560094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.219569 -0.84932 -0.0656463 RAD 0.00617284 + txt002 + SPHERE CENTER -0.220667 -0.869493 -0.0798417 RAD 0.00617284 + txt002 + SPHERE CENTER -0.210757 -0.889121 -0.0527151 RAD 0.00617284 + txt002 + SPHERE CENTER -0.204436 -0.887806 -0.0765474 RAD 0.00617284 + txt002 + SPHERE CENTER -0.187106 -0.885946 -0.0590577 RAD 0.00617284 + txt002 + SPHERE CENTER -0.230676 -0.834745 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.252002 -0.824206 -0.116217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.234336 -0.827952 -0.0993785 RAD 0.00617284 + txt002 + SPHERE CENTER -0.231282 -0.810793 -0.116868 RAD 0.00617284 + txt002 + SPHERE CENTER -0.248342 -0.830999 -0.139672 RAD 0.00617284 + txt002 + SPHERE CENTER -0.227621 -0.817586 -0.140323 RAD 0.00617284 + txt002 + SPHERE CENTER -0.227016 -0.841538 -0.146288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.251396 -0.848158 -0.122182 RAD 0.00617284 + txt002 + SPHERE CENTER -0.23007 -0.858698 -0.128798 RAD 0.00617284 + txt002 + SPHERE CENTER -0.23373 -0.851905 -0.105343 RAD 0.00617284 + txt002 + SPHERE CENTER -0.147308 -0.866465 -0.177765 RAD 0.0185185 + txt002 + SPHERE CENTER -0.130609 -0.876203 -0.193128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.124356 -0.857385 -0.178416 RAD 0.00617284 + txt002 + SPHERE CENTER -0.128522 -0.879733 -0.16878 RAD 0.00617284 + txt002 + SPHERE CENTER -0.153561 -0.885283 -0.192477 RAD 0.00617284 + txt002 + SPHERE CENTER -0.151474 -0.888813 -0.168128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.170259 -0.875546 -0.177114 RAD 0.00617284 + txt002 + SPHERE CENTER -0.149395 -0.862935 -0.202114 RAD 0.00617284 + txt002 + SPHERE CENTER -0.166093 -0.853198 -0.186751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.143141 -0.844117 -0.187402 RAD 0.00617284 + txt002 + SPHERE CENTER -0.184881 -0.802927 -0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER -0.180723 -0.785723 -0.188808 RAD 0.00617284 + txt002 + SPHERE CENTER -0.173028 -0.782104 -0.165627 RAD 0.00617284 + txt002 + SPHERE CENTER -0.161937 -0.798991 -0.179823 RAD 0.00617284 + txt002 + SPHERE CENTER -0.192576 -0.806546 -0.194773 RAD 0.00617284 + txt002 + SPHERE CENTER -0.17379 -0.819813 -0.185788 RAD 0.00617284 + txt002 + SPHERE CENTER -0.196734 -0.82375 -0.177557 RAD 0.00617284 + txt002 + SPHERE CENTER -0.203667 -0.78966 -0.180578 RAD 0.00617284 + txt002 + SPHERE CENTER -0.207825 -0.806864 -0.163362 RAD 0.00617284 + txt002 + SPHERE CENTER -0.195972 -0.786041 -0.157397 RAD 0.00617284 + txt002 + SPHERE CENTER -0.111748 -0.803997 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.108311 -0.798532 -0.183703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.119537 -0.819589 -0.17736 RAD 0.00617284 + txt002 + SPHERE CENTER -0.131037 -0.797989 -0.174066 RAD 0.00617284 + txt002 + SPHERE CENTER -0.100522 -0.78294 -0.166213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.123249 -0.782397 -0.156576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.10396 -0.788405 -0.142381 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0890219 -0.80454 -0.169507 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0924597 -0.810005 -0.145675 RAD 0.00617284 + txt002 + SPHERE CENTER -0.100248 -0.825597 -0.163165 RAD 0.00617284 + txt002 + SPHERE CENTER -0.172546 -0.643951 -0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER -0.202787 -0.61371 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.200937 -0.595399 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.194794 -0.591462 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.180539 -0.605717 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.208929 -0.617647 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.188531 -0.627965 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.210779 -0.635958 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.223185 -0.603392 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.225035 -0.621702 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.217042 -0.599454 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.244096 -0.624779 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.260374 -0.607636 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.240901 -0.612854 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.237705 -0.600929 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.26357 -0.619561 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.240901 -0.612854 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.247291 -0.636704 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.266765 -0.631486 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.250487 -0.648629 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.247291 -0.636704 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.191718 -0.5724 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.185011 -0.549732 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.167868 -0.56601 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.179793 -0.569205 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.208861 -0.556122 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.203643 -0.575596 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.215568 -0.578791 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.196936 -0.552927 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.203643 -0.575596 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.179793 -0.569205 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.131237 -0.632882 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.131575 -0.625593 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.15071 -0.6381 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.146508 -0.614836 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.112102 -0.620375 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.127034 -0.609618 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.111763 -0.627664 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.116304 -0.643639 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.115965 -0.650927 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.135439 -0.656145 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.120168 -0.591572 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.105912 -0.577317 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.111438 -0.600302 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.128897 -0.582843 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.114642 -0.568587 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.137627 -0.574113 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.128897 -0.582843 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0971825 -0.586046 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.111438 -0.600302 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.102708 -0.609032 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.100996 -0.663122 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0783272 -0.656415 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0978007 -0.651197 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0946054 -0.639272 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0815225 -0.66834 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0978007 -0.651197 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.104191 -0.675047 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0847178 -0.680265 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.107387 -0.686972 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.104191 -0.675047 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.183615 -0.68526 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.182351 -0.708085 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.165569 -0.700531 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.188833 -0.704733 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.200397 -0.692813 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.206879 -0.689462 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.201661 -0.669989 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.177134 -0.688611 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.178397 -0.665787 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.160351 -0.681058 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.153374 -0.715501 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.136231 -0.731779 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.129524 -0.70911 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.141449 -0.712305 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.160081 -0.738169 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.165299 -0.718696 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.177224 -0.721891 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.148156 -0.734974 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.165299 -0.718696 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.141449 -0.712305 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.224924 -0.696329 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.23918 -0.710584 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.216195 -0.705059 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.233654 -0.687599 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.24791 -0.701855 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.242384 -0.678869 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.233654 -0.687599 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.23045 -0.719314 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.216195 -0.705059 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.207465 -0.713788 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0133465 -0.69376 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.0631985 -0.668775 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0667914 -0.661946 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0511945 -0.680354 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0452771 -0.65711 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0787954 -0.650366 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0572811 -0.64553 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0752026 -0.657195 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0847128 -0.673611 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.08112 -0.680439 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.069116 -0.692019 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00804971 -0.649684 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.000226782 -0.634953 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0122343 -0.635947 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.012605 -0.655218 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0205108 -0.64869 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00767898 -0.668955 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0283337 -0.66342 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0208815 -0.629419 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0287044 -0.644149 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00842045 -0.630413 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0325183 -0.62221 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0446211 -0.604582 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.053173 -0.627745 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0325183 -0.62221 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0239663 -0.599047 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0118635 -0.616676 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0118635 -0.616676 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0446211 -0.604582 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0325183 -0.62221 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.053173 -0.627745 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0845947 -0.712851 -0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER 0.107813 -0.706291 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0896851 -0.701434 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0909853 -0.689001 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.102723 -0.717709 -0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0858949 -0.700418 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0795043 -0.724268 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.101422 -0.730141 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0782041 -0.736701 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0832945 -0.725284 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0539145 -0.666287 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0721382 -0.650692 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.072935 -0.663167 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0564414 -0.645053 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0531177 -0.653812 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0374209 -0.648173 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.034894 -0.669407 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0696112 -0.671925 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0513875 -0.68752 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.070408 -0.6844 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0347427 -0.737837 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0511556 -0.740802 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0580833 -0.730397 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.043171 -0.718185 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.027815 -0.748242 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0198304 -0.725625 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0114021 -0.745277 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0427273 -0.760455 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0263144 -0.757489 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0496549 -0.750049 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0440268 -0.740325 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0650768 -0.746894 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0607735 -0.723153 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0653796 -0.739183 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.04833 -0.764065 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0486329 -0.756355 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.02728 -0.757496 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0437239 -0.748035 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0226739 -0.741466 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0394207 -0.724295 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0058253 -0.76531 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.00415829 -0.786629 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0148294 -0.770845 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0058253 -0.76531 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.024813 -0.781094 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.02648 -0.759776 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.02648 -0.759776 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00415829 -0.786629 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0058253 -0.76531 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0148294 -0.770845 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0272215 -0.721234 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0484665 -0.732368 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0371781 -0.737738 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0478762 -0.715699 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0385099 -0.715864 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0379196 -0.699195 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0172649 -0.70473 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0278118 -0.737902 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00656677 -0.726768 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0165234 -0.743272 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.471405 -0.471405 1.11022e-16 RAD 0.166667 + txt002 + SPHERE CENTER 0.690426 -0.508983 1.83812e-16 RAD 0.0555556 + txt002 + SPHERE CENTER 0.755941 -0.484794 -0.0246914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.767658 -0.47411 -0.0436186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.749038 -0.489758 -0.0478724 RAD 0.00617284 + txt002 + SPHERE CENTER 0.744501 -0.467528 -0.0381316 RAD 0.00617284 + txt002 + SPHERE CENTER 0.774562 -0.469146 -0.0204376 RAD 0.00617284 + txt002 + SPHERE CENTER 0.751405 -0.462564 -0.0149506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.762845 -0.47983 -0.00151032 RAD 0.00617284 + txt002 + SPHERE CENTER 0.779098 -0.491377 -0.0301783 RAD 0.00617284 + txt002 + SPHERE CENTER 0.767382 -0.502061 -0.0112511 RAD 0.00617284 + txt002 + SPHERE CENTER 0.760478 -0.507025 -0.0344321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.695668 -0.478434 -0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER 0.703418 -0.481931 -0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER 0.716184 -0.491475 -0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER 0.694124 -0.500827 -0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER 0.682902 -0.46889 -0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.673608 -0.487786 -0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER 0.675152 -0.465393 -0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER 0.704962 -0.459538 -0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER 0.697211 -0.456041 -0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER 0.717727 -0.469082 -0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.7029 -0.436283 -0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER 0.714226 -0.418941 -0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER 0.724842 -0.44101 -0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.704751 -0.43889 -0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.692283 -0.414215 -0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER 0.682808 -0.434163 -0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.680957 -0.431557 0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.712374 -0.416335 0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER 0.701048 -0.433677 0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER 0.722991 -0.438403 0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER 0.7507 -0.515343 0.0425863 RAD 0.0185185 + txt002 + SPHERE CENTER 0.773394 -0.506594 0.0468401 RAD 0.00617284 + txt002 + SPHERE CENTER 0.764807 -0.507924 0.0237283 RAD 0.00617284 + txt002 + SPHERE CENTER 0.755462 -0.491321 0.0394341 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759287 -0.514012 0.065698 RAD 0.00617284 + txt002 + SPHERE CENTER 0.741355 -0.49874 0.058292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.736593 -0.522762 0.0614442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.768632 -0.530616 0.0499923 RAD 0.00617284 + txt002 + SPHERE CENTER 0.745938 -0.539365 0.0457385 RAD 0.00617284 + txt002 + SPHERE CENTER 0.760045 -0.531946 0.0268805 RAD 0.00617284 + txt002 + SPHERE CENTER 0.697658 -0.466832 0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER 0.709346 -0.447385 0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.721188 -0.46231 0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER 0.703286 -0.447429 0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER 0.685816 -0.451907 0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.679757 -0.451951 0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER 0.674129 -0.471354 0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.703718 -0.466788 0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER 0.692031 -0.486235 0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.71556 -0.481713 0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.685185 -0.539531 0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER 0.693658 -0.538818 0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER 0.708875 -0.534075 0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER 0.691194 -0.517905 0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669969 -0.544274 0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.667505 -0.523361 0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER 0.661495 -0.544988 0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER 0.687649 -0.560445 0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER 0.679176 -0.561158 0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER 0.702866 -0.555702 0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.743468 -0.557494 -0.0178949 RAD 0.0185185 + txt002 + SPHERE CENTER 0.767402 -0.560084 -0.0233819 RAD 0.00617284 + txt002 + SPHERE CENTER 0.755145 -0.53997 -0.0307879 RAD 0.00617284 + txt002 + SPHERE CENTER 0.760285 -0.543179 -0.00685171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.755725 -0.577608 -0.0104889 RAD 0.00617284 + txt002 + SPHERE CENTER 0.748608 -0.560703 0.00604126 RAD 0.00617284 + txt002 + SPHERE CENTER 0.731791 -0.575017 -0.00500196 RAD 0.00617284 + txt002 + SPHERE CENTER 0.750585 -0.574398 -0.0344251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.726651 -0.571808 -0.0289382 RAD 0.00617284 + txt002 + SPHERE CENTER 0.738328 -0.554284 -0.0418311 RAD 0.00617284 + txt002 + SPHERE CENTER 0.677953 -0.581682 0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER 0.682851 -0.601808 0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER 0.700216 -0.58454 0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.680568 -0.579842 0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.660588 -0.59895 0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER 0.658304 -0.576984 0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.65569 -0.578824 -0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.680237 -0.603648 -0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER 0.675339 -0.583522 -0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER 0.697602 -0.58638 -0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER 0.683194 -0.551134 -0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER 0.687731 -0.573364 -0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.703871 -0.56324 -0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER 0.682033 -0.571303 -0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER 0.667055 -0.561258 -0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.661356 -0.559196 -0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER 0.662518 -0.539027 -0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.688893 -0.553195 -0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER 0.684356 -0.530964 -0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.705033 -0.543071 -0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.607487 -0.335322 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.629404 -0.313405 -0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.626214 -0.316595 -0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.624401 -0.335868 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.606941 -0.318408 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.631217 -0.294133 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.611945 -0.295946 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.634407 -0.290942 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.648676 -0.311592 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.651867 -0.308402 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.646863 -0.330864 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.610996 -0.384191 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.623201 -0.403702 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.635431 -0.385946 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.62031 -0.401066 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.598766 -0.401947 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.595876 -0.399312 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.586561 -0.382437 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.613886 -0.386827 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.601681 -0.367317 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.626116 -0.369071 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.558618 -0.331813 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.539107 -0.319608 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.541743 -0.322499 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.556863 -0.307378 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555982 -0.328923 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.573738 -0.316693 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.575492 -0.341128 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.540862 -0.344043 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.560372 -0.356248 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.543497 -0.346933 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.625895 -0.264535 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.637402 -0.248969 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.646193 -0.271807 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.625088 -0.268363 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.617105 -0.241698 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.604791 -0.261092 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.605598 -0.257264 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.638209 -0.245142 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.626702 -0.260708 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.647 -0.267979 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555109 -0.282943 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.550934 -0.258608 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.570229 -0.267823 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.570229 -0.267823 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.535813 -0.273728 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555109 -0.282943 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539989 -0.298064 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.535813 -0.273728 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539989 -0.298064 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555109 -0.282943 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.603979 -0.286452 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.613271 -0.265398 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627912 -0.281225 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.610787 -0.26842 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.589337 -0.270625 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.586853 -0.273647 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.580045 -0.291679 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.606463 -0.283431 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.59717 -0.304484 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.621104 -0.299257 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.678274 -0.316914 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.69384 -0.305407 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.674446 -0.317721 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671002 -0.296616 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.697667 -0.3046 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.67483 -0.295809 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.682101 -0.316107 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.701111 -0.325704 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.685545 -0.337211 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.681717 -0.338018 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.656357 -0.33883 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.677411 -0.329538 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.674389 -0.332022 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.661584 -0.314897 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.659378 -0.336346 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.643552 -0.321705 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.638325 -0.345639 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.672184 -0.353472 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.65113 -0.362764 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669162 -0.355956 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.659866 -0.3877 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.684201 -0.391875 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.674986 -0.37258 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.674986 -0.37258 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669081 -0.406996 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.659866 -0.3877 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.644745 -0.40282 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669081 -0.406996 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.644745 -0.40282 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.659866 -0.3877 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.607487 -0.335322 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.659645 -0.283164 0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER 0.672915 -0.269894 0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER 0.666987 -0.293281 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.649528 -0.275822 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665573 -0.259777 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.642185 -0.265705 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.652302 -0.273047 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.683032 -0.277236 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669762 -0.290507 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.677104 -0.300624 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.656357 -0.33883 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.663448 -0.328536 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.639482 -0.329516 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.654603 -0.314396 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.680322 -0.33785 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671477 -0.32371 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.673232 -0.348145 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665202 -0.35297 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.658111 -0.363265 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.641237 -0.353951 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.603979 -0.286452 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.614273 -0.279361 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.628413 -0.288206 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.613293 -0.303327 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.589839 -0.277607 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.588858 -0.301572 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.579544 -0.284698 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.604959 -0.262487 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.594664 -0.269578 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.619099 -0.271332 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.610775 -0.279656 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.621535 -0.258061 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.634468 -0.275921 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616678 -0.264057 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.597842 -0.261795 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.592985 -0.267791 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.587082 -0.28339 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.615632 -0.27366 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.604872 -0.295255 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.628565 -0.29152 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555109 -0.282943 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.550934 -0.258608 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.570229 -0.267823 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.570229 -0.267823 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.535813 -0.273728 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555109 -0.282943 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539989 -0.298064 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.535813 -0.273728 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539989 -0.298064 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555109 -0.282943 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.558618 -0.331813 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.55307 -0.320611 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.57665 -0.325005 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.563845 -0.30788 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.535038 -0.327419 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.545813 -0.314688 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.540585 -0.338621 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.547843 -0.344544 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.553391 -0.355747 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.571423 -0.348938 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.663153 -0.332034 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.684748 -0.321274 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.678752 -0.326131 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.666888 -0.308341 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669149 -0.327177 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.651289 -0.314244 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.647554 -0.337937 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.681014 -0.344967 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.659419 -0.355727 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.675018 -0.349824 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.610996 -0.384191 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.622198 -0.389739 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.63493 -0.378964 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.617804 -0.366159 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.598265 -0.394966 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.593871 -0.371386 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.587062 -0.389418 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.61539 -0.407771 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.604188 -0.402224 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.628121 -0.396997 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.659866 -0.3877 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.684201 -0.391875 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.674986 -0.37258 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.674986 -0.37258 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669081 -0.406996 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.659866 -0.3877 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.644745 -0.40282 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669081 -0.406996 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.644745 -0.40282 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.659866 -0.3877 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.554344 -0.645066 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.610229 -0.668521 0.153697 RAD 0.0185185 + txt002 + SPHERE CENTER 0.633406 -0.663938 0.160875 RAD 0.00617284 + txt002 + SPHERE CENTER 0.626429 -0.65892 0.137727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.617928 -0.64522 0.156428 RAD 0.00617284 + txt002 + SPHERE CENTER 0.617206 -0.673539 0.176845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.601728 -0.654822 0.172398 RAD 0.00617284 + txt002 + SPHERE CENTER 0.59403 -0.678123 0.169668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.625707 -0.687239 0.158144 RAD 0.00617284 + txt002 + SPHERE CENTER 0.602531 -0.691822 0.150967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.61873 -0.682221 0.134996 RAD 0.00617284 + txt002 + SPHERE CENTER 0.622977 -0.619787 0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.63767 -0.608008 0.0834188 RAD 0.00617284 + txt002 + SPHERE CENTER 0.620102 -0.623239 0.0751099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.613891 -0.601637 0.0853287 RAD 0.00617284 + txt002 + SPHERE CENTER 0.640545 -0.604555 0.107698 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616766 -0.598184 0.109608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.625852 -0.616334 0.123668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.646756 -0.626157 0.0974792 RAD 0.00617284 + txt002 + SPHERE CENTER 0.632063 -0.637936 0.113449 RAD 0.00617284 + txt002 + SPHERE CENTER 0.629188 -0.641389 0.0891702 RAD 0.00617284 + txt002 + SPHERE CENTER 0.585648 -0.598918 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.601562 -0.580238 0.162601 RAD 0.00617284 + txt002 + SPHERE CENTER 0.605914 -0.59781 0.14581 RAD 0.00617284 + txt002 + SPHERE CENTER 0.587563 -0.581665 0.142311 RAD 0.00617284 + txt002 + SPHERE CENTER 0.581295 -0.581346 0.176661 RAD 0.00617284 + txt002 + SPHERE CENTER 0.567297 -0.582773 0.156372 RAD 0.00617284 + txt002 + SPHERE CENTER 0.565381 -0.600026 0.173931 RAD 0.00617284 + txt002 + SPHERE CENTER 0.599646 -0.597491 0.18016 RAD 0.00617284 + txt002 + SPHERE CENTER 0.583732 -0.616171 0.177429 RAD 0.00617284 + txt002 + SPHERE CENTER 0.603999 -0.615063 0.163369 RAD 0.00617284 + txt002 + SPHERE CENTER 0.541596 -0.6938 0.165419 RAD 0.0185185 + txt002 + SPHERE CENTER 0.547376 -0.70016 0.188567 RAD 0.00617284 + txt002 + SPHERE CENTER 0.564621 -0.690564 0.173728 RAD 0.00617284 + txt002 + SPHERE CENTER 0.546319 -0.676324 0.182211 RAD 0.00617284 + txt002 + SPHERE CENTER 0.524351 -0.703396 0.180258 RAD 0.00617284 + txt002 + SPHERE CENTER 0.523294 -0.679561 0.173902 RAD 0.00617284 + txt002 + SPHERE CENTER 0.518571 -0.697037 0.157111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.542652 -0.717636 0.171776 RAD 0.00617284 + txt002 + SPHERE CENTER 0.536873 -0.711276 0.148628 RAD 0.00617284 + txt002 + SPHERE CENTER 0.559898 -0.70804 0.156937 RAD 0.00617284 + txt002 + SPHERE CENTER 0.517014 -0.624197 0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER 0.516313 -0.60809 0.190293 RAD 0.00617284 + txt002 + SPHERE CENTER 0.538029 -0.616221 0.181811 RAD 0.00617284 + txt002 + SPHERE CENTER 0.524375 -0.60089 0.168094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.495298 -0.616065 0.180075 RAD 0.00617284 + txt002 + SPHERE CENTER 0.50336 -0.608865 0.157875 RAD 0.00617284 + txt002 + SPHERE CENTER 0.495999 -0.632172 0.161374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.508952 -0.631397 0.193792 RAD 0.00617284 + txt002 + SPHERE CENTER 0.509653 -0.647504 0.175091 RAD 0.00617284 + txt002 + SPHERE CENTER 0.530668 -0.639529 0.18531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.48571 -0.670344 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.466887 -0.67091 0.138803 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490138 -0.671107 0.147112 RAD 0.00617284 + txt002 + SPHERE CENTER 0.480853 -0.650637 0.136894 RAD 0.00617284 + txt002 + SPHERE CENTER 0.46246 -0.670147 0.114524 RAD 0.00617284 + txt002 + SPHERE CENTER 0.476425 -0.649874 0.112614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.481283 -0.669581 0.0985541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.471745 -0.690617 0.124743 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490567 -0.690052 0.108773 RAD 0.00617284 + txt002 + SPHERE CENTER 0.494995 -0.690815 0.133052 RAD 0.00617284 + txt002 + SPHERE CENTER 0.578925 -0.714669 0.104938 RAD 0.0185185 + txt002 + SPHERE CENTER 0.597914 -0.729812 0.109385 RAD 0.00617284 + txt002 + SPHERE CENTER 0.602084 -0.70632 0.103028 RAD 0.00617284 + txt002 + SPHERE CENTER 0.592661 -0.711617 0.125228 RAD 0.00617284 + txt002 + SPHERE CENTER 0.574755 -0.738161 0.111295 RAD 0.00617284 + txt002 + SPHERE CENTER 0.569503 -0.719965 0.127138 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555767 -0.723017 0.106848 RAD 0.00617284 + txt002 + SPHERE CENTER 0.584178 -0.732864 0.0890951 RAD 0.00617284 + txt002 + SPHERE CENTER 0.565189 -0.71772 0.0846485 RAD 0.00617284 + txt002 + SPHERE CENTER 0.588348 -0.709372 0.0827387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.52304 -0.691213 0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.511567 -0.712906 0.0596212 RAD 0.00617284 + txt002 + SPHERE CENTER 0.529503 -0.710453 0.0764123 RAD 0.00617284 + txt002 + SPHERE CENTER 0.507717 -0.699372 0.079911 RAD 0.00617284 + txt002 + SPHERE CENTER 0.505104 -0.693665 0.0455609 RAD 0.00617284 + txt002 + SPHERE CENTER 0.501254 -0.680131 0.0658506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.516576 -0.671972 0.0482916 RAD 0.00617284 + txt002 + SPHERE CENTER 0.526889 -0.704747 0.0420622 RAD 0.00617284 + txt002 + SPHERE CENTER 0.538362 -0.683054 0.044793 RAD 0.00617284 + txt002 + SPHERE CENTER 0.544826 -0.702295 0.0588533 RAD 0.00617284 + txt002 + SPHERE CENTER 0.591673 -0.665934 0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER 0.605761 -0.658095 0.0319289 RAD 0.00617284 + txt002 + SPHERE CENTER 0.58746 -0.643855 0.0404111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.607672 -0.647455 0.0541285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.609975 -0.680174 0.0421477 RAD 0.00617284 + txt002 + SPHERE CENTER 0.611885 -0.669535 0.0643473 RAD 0.00617284 + txt002 + SPHERE CENTER 0.595887 -0.688013 0.0608487 RAD 0.00617284 + txt002 + SPHERE CENTER 0.589763 -0.676573 0.0284303 RAD 0.00617284 + txt002 + SPHERE CENTER 0.575674 -0.684413 0.0471312 RAD 0.00617284 + txt002 + SPHERE CENTER 0.571461 -0.662334 0.0369125 RAD 0.00617284 + txt002 + SPHERE CENTER 0.471405 -0.471405 0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER 0.501645 -0.441164 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.518106 -0.424703 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522721 -0.437548 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.505261 -0.420089 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.497031 -0.428319 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.484186 -0.423704 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.48057 -0.44478 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.51449 -0.445778 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.498029 -0.462239 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.519105 -0.458623 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.542955 -0.452233 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.560583 -0.44013 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.542955 -0.452233 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.53742 -0.431578 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.560583 -0.44013 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.53742 -0.431578 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.542955 -0.452233 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.566118 -0.460785 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.548489 -0.472887 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.548489 -0.472887 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490576 -0.399854 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.502679 -0.382226 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.511231 -0.405389 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490576 -0.399854 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.482024 -0.376691 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.469922 -0.39432 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.469922 -0.39432 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.502679 -0.382226 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490576 -0.399854 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.511231 -0.405389 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.430095 -0.460336 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.427669 -0.446904 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.450155 -0.45293 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436486 -0.436486 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.407609 -0.454311 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.416426 -0.443892 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.410035 -0.467742 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.421278 -0.470754 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.423704 -0.484186 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.443764 -0.47678 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.419026 -0.419026 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.414851 -0.39469 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.434147 -0.403906 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.434147 -0.403906 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399731 -0.409811 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.419026 -0.419026 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.403906 -0.434147 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399731 -0.409811 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.403906 -0.434147 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.419026 -0.419026 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399854 -0.490576 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.378536 -0.488909 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399854 -0.490576 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.39432 -0.469922 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.378536 -0.488909 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.39432 -0.469922 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399854 -0.490576 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.384071 -0.509564 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.405389 -0.511231 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.405389 -0.511231 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.482473 -0.512714 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.495905 -0.51514 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.506323 -0.506323 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.48988 -0.492654 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472055 -0.521531 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.46603 -0.499045 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.458623 -0.519105 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.488498 -0.5352 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.475067 -0.532774 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.498917 -0.526383 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.452233 -0.542955 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.4539 -0.564273 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472887 -0.548489 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.452233 -0.542955 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.433245 -0.558738 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.431578 -0.53742 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.431578 -0.53742 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4539 -0.564273 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.452233 -0.542955 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472887 -0.548489 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.523783 -0.523783 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.548119 -0.527958 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.538903 -0.508662 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.538903 -0.508662 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.532998 -0.543078 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.523783 -0.523783 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.508662 -0.538903 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.532998 -0.543078 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.508662 -0.538903 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.523783 -0.523783 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.335322 -0.607487 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.313405 -0.629404 0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.316595 -0.626214 0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.335868 -0.624401 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318408 -0.606941 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.294133 -0.631217 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.295946 -0.611945 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.290942 -0.634407 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.311592 -0.648676 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.308402 -0.651867 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.330864 -0.646863 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.384191 -0.610996 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.405245 -0.601704 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.402224 -0.604188 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.389418 -0.587062 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.387213 -0.608512 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.371386 -0.593871 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.366159 -0.617804 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.400018 -0.625637 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.378964 -0.63493 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396997 -0.628121 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.331813 -0.558618 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.341105 -0.537564 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.355747 -0.553391 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.338621 -0.540585 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.317172 -0.542791 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.314688 -0.545813 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.30788 -0.563845 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.334297 -0.555596 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.325005 -0.57665 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.348938 -0.571423 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.264535 -0.625895 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.245336 -0.623429 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.268271 -0.624736 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.260997 -0.604627 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.2416 -0.624589 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.257262 -0.605787 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.2608 -0.627055 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.248874 -0.644697 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.268073 -0.647163 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271809 -0.646004 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282943 -0.555109 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.278768 -0.530773 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.298064 -0.539989 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.298064 -0.539989 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.263648 -0.545894 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282943 -0.555109 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.267823 -0.570229 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.263648 -0.545894 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.267823 -0.570229 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282943 -0.555109 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.286452 -0.603979 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.266942 -0.591774 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.269578 -0.594664 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.284698 -0.579544 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.283817 -0.601088 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.301572 -0.588858 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.303327 -0.613293 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.268696 -0.616209 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.288206 -0.628413 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271332 -0.619099 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.316914 -0.678274 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.31938 -0.697473 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.338182 -0.681812 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318074 -0.674538 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.298112 -0.693935 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.296805 -0.671 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.295646 -0.674736 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31822 -0.701209 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.315754 -0.682009 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337022 -0.685547 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.33883 -0.656357 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.351035 -0.675867 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.363265 -0.658111 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.348145 -0.673232 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3266 -0.674113 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32371 -0.671477 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.314396 -0.654603 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.341721 -0.658993 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.329516 -0.639482 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.353951 -0.641237 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3877 -0.659866 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.412036 -0.664041 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40282 -0.644745 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40282 -0.644745 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396915 -0.679161 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3877 -0.659866 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37258 -0.674986 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396915 -0.679161 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37258 -0.674986 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3877 -0.659866 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.554344 -0.645066 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.616373 -0.681385 -0.129006 RAD 0.0185185 + txt002 + SPHERE CENTER 0.639472 -0.678928 -0.137375 RAD 0.00617284 + txt002 + SPHERE CENTER 0.621631 -0.664108 -0.145845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.629767 -0.661636 -0.122663 RAD 0.00617284 + txt002 + SPHERE CENTER 0.634214 -0.696205 -0.120537 RAD 0.00617284 + txt002 + SPHERE CENTER 0.624508 -0.678912 -0.105825 RAD 0.00617284 + txt002 + SPHERE CENTER 0.611115 -0.698662 -0.112168 RAD 0.00617284 + txt002 + SPHERE CENTER 0.626079 -0.698678 -0.143718 RAD 0.00617284 + txt002 + SPHERE CENTER 0.602979 -0.701135 -0.135349 RAD 0.00617284 + txt002 + SPHERE CENTER 0.608237 -0.683858 -0.152187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.617144 -0.607573 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.63057 -0.595495 -0.139672 RAD 0.00617284 + txt002 + SPHERE CENTER 0.617371 -0.615286 -0.146288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.605919 -0.594239 -0.140323 RAD 0.00617284 + txt002 + SPHERE CENTER 0.630343 -0.587782 -0.116217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.605692 -0.586526 -0.116868 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616917 -0.59986 -0.0993785 RAD 0.00617284 + txt002 + SPHERE CENTER 0.641795 -0.608828 -0.122182 RAD 0.00617284 + txt002 + SPHERE CENTER 0.628369 -0.620906 -0.105343 RAD 0.00617284 + txt002 + SPHERE CENTER 0.628595 -0.628619 -0.128798 RAD 0.00617284 + txt002 + SPHERE CENTER 0.609912 -0.649723 -0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.631982 -0.640648 -0.0560094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.62585 -0.64267 -0.0798417 RAD 0.00617284 + txt002 + SPHERE CENTER 0.614812 -0.625749 -0.0656463 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616044 -0.647702 -0.0385197 RAD 0.00617284 + txt002 + SPHERE CENTER 0.598874 -0.632802 -0.0481565 RAD 0.00617284 + txt002 + SPHERE CENTER 0.593974 -0.656777 -0.0448623 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627081 -0.664623 -0.0527151 RAD 0.00617284 + txt002 + SPHERE CENTER 0.605012 -0.673698 -0.0590577 RAD 0.00617284 + txt002 + SPHERE CENTER 0.620949 -0.666645 -0.0765474 RAD 0.00617284 + txt002 + SPHERE CENTER 0.553573 -0.718878 -0.117284 RAD 0.0185185 + txt002 + SPHERE CENTER 0.563328 -0.73992 -0.108814 RAD 0.00617284 + txt002 + SPHERE CENTER 0.577348 -0.719679 -0.110668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.559693 -0.720935 -0.0934517 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539553 -0.739118 -0.115431 RAD 0.00617284 + txt002 + SPHERE CENTER 0.535918 -0.720133 -0.100068 RAD 0.00617284 + txt002 + SPHERE CENTER 0.529798 -0.718076 -0.1239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.557208 -0.737863 -0.132647 RAD 0.00617284 + txt002 + SPHERE CENTER 0.547453 -0.716821 -0.141116 RAD 0.00617284 + txt002 + SPHERE CENTER 0.571228 -0.717623 -0.1345 RAD 0.00617284 + txt002 + SPHERE CENTER 0.547112 -0.687216 -0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER 0.554862 -0.690713 -0.0274488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.570641 -0.682694 -0.0446649 RAD 0.00617284 + txt002 + SPHERE CENTER 0.552739 -0.667813 -0.0364345 RAD 0.00617284 + txt002 + SPHERE CENTER 0.531333 -0.695235 -0.0334138 RAD 0.00617284 + txt002 + SPHERE CENTER 0.52921 -0.672335 -0.0423994 RAD 0.00617284 + txt002 + SPHERE CENTER 0.523582 -0.691738 -0.0565949 RAD 0.00617284 + txt002 + SPHERE CENTER 0.549235 -0.710116 -0.0416443 RAD 0.00617284 + txt002 + SPHERE CENTER 0.541484 -0.706619 -0.0648253 RAD 0.00617284 + txt002 + SPHERE CENTER 0.565014 -0.702097 -0.0588603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.491544 -0.682558 -0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.474542 -0.688647 -0.0825505 RAD 0.00617284 + txt002 + SPHERE CENTER 0.498226 -0.686417 -0.0759343 RAD 0.00617284 + txt002 + SPHERE CENTER 0.485132 -0.666351 -0.0818993 RAD 0.00617284 + txt002 + SPHERE CENTER 0.46786 -0.684788 -0.106005 RAD 0.00617284 + txt002 + SPHERE CENTER 0.47845 -0.662492 -0.105354 RAD 0.00617284 + txt002 + SPHERE CENTER 0.484862 -0.678699 -0.122844 RAD 0.00617284 + txt002 + SPHERE CENTER 0.480953 -0.704854 -0.10004 RAD 0.00617284 + txt002 + SPHERE CENTER 0.497955 -0.698765 -0.116879 RAD 0.00617284 + txt002 + SPHERE CENTER 0.504637 -0.702624 -0.093424 RAD 0.00617284 + txt002 + SPHERE CENTER 0.560805 -0.676727 -0.177765 RAD 0.0185185 + txt002 + SPHERE CENTER 0.57563 -0.689897 -0.192477 RAD 0.00617284 + txt002 + SPHERE CENTER 0.585222 -0.673115 -0.177114 RAD 0.00617284 + txt002 + SPHERE CENTER 0.575587 -0.693998 -0.168128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.551213 -0.693509 -0.193128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.55117 -0.69761 -0.16878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.536388 -0.680339 -0.178416 RAD 0.00617284 + txt002 + SPHERE CENTER 0.560848 -0.672626 -0.202114 RAD 0.00617284 + txt002 + SPHERE CENTER 0.546023 -0.659456 -0.187402 RAD 0.00617284 + txt002 + SPHERE CENTER 0.57044 -0.655844 -0.186751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.498776 -0.640408 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.478525 -0.627785 -0.166213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.484234 -0.630799 -0.142381 RAD 0.00617284 + txt002 + SPHERE CENTER 0.497935 -0.615951 -0.156576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.493066 -0.637394 -0.183703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.512476 -0.62556 -0.174066 RAD 0.00617284 + txt002 + SPHERE CENTER 0.513317 -0.650016 -0.17736 RAD 0.00617284 + txt002 + SPHERE CENTER 0.479365 -0.652241 -0.169507 RAD 0.00617284 + txt002 + SPHERE CENTER 0.499616 -0.664864 -0.163165 RAD 0.00617284 + txt002 + SPHERE CENTER 0.485075 -0.655255 -0.145675 RAD 0.00617284 + txt002 + SPHERE CENTER 0.561576 -0.602915 -0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER 0.570049 -0.602201 -0.194773 RAD 0.00617284 + txt002 + SPHERE CENTER 0.582252 -0.615021 -0.177557 RAD 0.00617284 + txt002 + SPHERE CENTER 0.560414 -0.623084 -0.185788 RAD 0.00617284 + txt002 + SPHERE CENTER 0.549372 -0.590095 -0.188808 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539737 -0.610978 -0.179823 RAD 0.00617284 + txt002 + SPHERE CENTER 0.540899 -0.590808 -0.165627 RAD 0.00617284 + txt002 + SPHERE CENTER 0.571211 -0.582032 -0.180578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.562738 -0.582745 -0.157397 RAD 0.00617284 + txt002 + SPHERE CENTER 0.583414 -0.594852 -0.163362 RAD 0.00617284 + txt002 + SPHERE CENTER 0.335322 -0.607487 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.283164 -0.659645 -0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER 0.269894 -0.672915 -0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER 0.293281 -0.666987 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.275822 -0.649528 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.259777 -0.665573 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.265705 -0.642185 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273047 -0.652302 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.277236 -0.683032 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.290507 -0.669762 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.300624 -0.677104 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.33883 -0.656357 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.350033 -0.661904 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.362764 -0.65113 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.345639 -0.638325 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.326099 -0.667131 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.321705 -0.643552 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.314897 -0.661584 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.343224 -0.679937 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.332022 -0.674389 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.355956 -0.669162 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.286452 -0.603979 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.280905 -0.592776 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.304484 -0.59717 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.291679 -0.580045 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.262872 -0.599585 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273647 -0.586853 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.26842 -0.610787 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.275678 -0.61671 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.281225 -0.627912 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.299257 -0.621104 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.279656 -0.610775 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.256944 -0.602632 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.26347 -0.606749 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273158 -0.587686 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.27313 -0.606658 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.289344 -0.591712 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.295841 -0.614801 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.263442 -0.62572 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.286153 -0.633864 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.269968 -0.629838 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282943 -0.555109 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.278768 -0.530773 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.298064 -0.539989 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.298064 -0.539989 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.263648 -0.545894 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282943 -0.555109 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.267823 -0.570229 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.263648 -0.545894 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.267823 -0.570229 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282943 -0.555109 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.331813 -0.558618 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.342108 -0.551527 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356248 -0.560372 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.341128 -0.575492 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.317673 -0.549772 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.316693 -0.573738 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307378 -0.556863 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.332793 -0.534652 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.322499 -0.541743 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.346933 -0.543497 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.332034 -0.663153 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.340177 -0.685865 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.355123 -0.669651 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.33606 -0.679339 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.317089 -0.679367 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.312971 -0.672841 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.308945 -0.656656 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.336151 -0.669679 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.328008 -0.646968 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.351097 -0.653465 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.384191 -0.610996 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.391282 -0.600701 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367317 -0.601681 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.382437 -0.586561 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.408157 -0.610016 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399312 -0.595876 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.401066 -0.62031 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.393037 -0.625136 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.385946 -0.635431 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.369071 -0.626116 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3877 -0.659866 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.412036 -0.664041 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40282 -0.644745 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40282 -0.644745 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396915 -0.679161 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3877 -0.659866 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37258 -0.674986 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396915 -0.679161 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37258 -0.674986 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3877 -0.659866 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.471405 -0.471405 -0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER 0.441164 -0.441164 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.443014 -0.422853 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.449156 -0.418916 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.463412 -0.433171 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.435021 -0.445101 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.455419 -0.455419 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.433171 -0.463412 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.420766 -0.430846 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.418916 -0.449156 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.426908 -0.426908 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399854 -0.452233 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.383576 -0.43509 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40305 -0.440308 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.406245 -0.428383 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.380381 -0.447015 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40305 -0.440308 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396659 -0.464158 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.377186 -0.45894 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.393464 -0.476083 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396659 -0.464158 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.452233 -0.399854 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.45894 -0.377186 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.476083 -0.393464 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.464158 -0.396659 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.43509 -0.383576 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.440308 -0.40305 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.428383 -0.406245 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.447015 -0.380381 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.440308 -0.40305 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.464158 -0.396659 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.512714 -0.460336 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.512375 -0.453047 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.493241 -0.465554 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.497443 -0.44229 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.531849 -0.447829 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.516916 -0.437072 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.532187 -0.455118 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.527647 -0.471093 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.527985 -0.478381 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.508512 -0.483599 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.523783 -0.419026 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.538038 -0.404771 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.532513 -0.427756 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.515053 -0.410297 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.529309 -0.396041 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.506323 -0.401567 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.515053 -0.410297 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.546768 -0.4135 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.532513 -0.427756 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.541242 -0.436486 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.542955 -0.490576 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.565623 -0.483869 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.54615 -0.478651 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.549345 -0.466726 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.562428 -0.495794 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.54615 -0.478651 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539759 -0.502501 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.559233 -0.507719 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.536564 -0.514426 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539759 -0.502501 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.460336 -0.512714 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.461599 -0.535539 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.478381 -0.527985 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.455118 -0.532187 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.443553 -0.520267 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.437072 -0.516916 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.44229 -0.497443 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.466817 -0.516065 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.465554 -0.493241 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.483599 -0.508512 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490576 -0.542955 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.507719 -0.559233 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.514426 -0.536564 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.502501 -0.539759 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.483869 -0.565623 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.478651 -0.54615 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.466726 -0.549345 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.495794 -0.562428 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.478651 -0.54615 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.502501 -0.539759 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.419026 -0.523783 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.404771 -0.538038 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.427756 -0.532513 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.410297 -0.515053 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396041 -0.529309 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.401567 -0.506323 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.410297 -0.515053 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4135 -0.546768 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.427756 -0.532513 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436486 -0.541242 -0.222222 RAD 0.00617284 + txt002 + +END_SCENE diff --git a/examples/parallel_for/tachyon/android/jni/Android.mk b/examples/parallel_for/tachyon/android/jni/Android.mk new file mode 100644 index 0000000000..660c0d4b1e --- /dev/null +++ b/examples/parallel_for/tachyon/android/jni/Android.mk @@ -0,0 +1,90 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# The source code contained or described herein and all documents related +# to the source code ("Material") are owned by Intel Corporation or its +# suppliers or licensors. Title to the Material remains with Intel +# Corporation or its suppliers and licensors. The Material is protected +# by worldwide copyright laws and treaty provisions. No part of the +# Material may be used, copied, reproduced, modified, published, uploaded, +# posted, transmitted, distributed, or disclosed in any way without +# Intel's prior express written permission. +# +# No license under any patent, copyright, trade secret or other +# intellectual property right is granted to or conferred upon you by +# disclosure or delivery of the Materials, either expressly, by +# implication, inducement, estoppel or otherwise. Any license under such +# intellectual property rights must be express and approved by Intel in +# writing. + + +# The original source for this example is +# Copyright (c) 1994-2008 John E. Stone +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS +# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. + +LOCAL_PATH := $(realpath $(call my-dir)/..) + +ifneq (,$(wildcard Android.mk)) + $(error ndk-build should be run one level up from jni folder) +endif + +#Relative paths +TBB_PATH := ../../../.. +SRC_PATH := $(TBB_PATH)/examples/parallel_for/tachyon/src + +#Absolute paths +TBB_FULL_PATH := $(realpath $(TBB_PATH)) +TBB_COMMON_FULL_PATH := $(realpath $(TBB_PATH))/examples/common + +#The path is setup for binary package +ifeq (x86,$(TARGET_ARCH_ABI)) +TBB_LIBRARY_ARCH_PATH:= +else +TBB_LIBRARY_ARCH_PATH:=/$(TARGET_ARCH_ABI) +endif +#Override if needed +TBB_LIBRARY_FULL_PATH ?= $(TBB_FULL_PATH)/lib/android$(TBB_LIBRARY_ARCH_PATH) + +ifeq (,$(wildcard $(TBB_LIBRARY_FULL_PATH)/libtbb.so)) + $(info Skipping $(TARGET_ARCH_ABI) target. $(TBB_LIBRARY_FULL_PATH)/libtbb.so library not found. Copy $(TARGET_ARCH_ABI) version of library to $(TBB_LIBRARY_FULL_PATH) folder to enable its build.) +else + +include $(CLEAR_VARS) +LOCAL_MODULE := jni-engine +LOCAL_SRC_FILES := jni/jni-engine.cpp $(TBB_PATH)/examples/common/gui/convideo.cpp $(SRC_PATH)/trace.tbb.cpp $(SRC_PATH)/pthread.cpp $(SRC_PATH)/tachyon_video.cpp $(SRC_PATH)/api.cpp $(SRC_PATH)/apigeom.cpp $(SRC_PATH)/apitrigeom.cpp $(SRC_PATH)/bndbox.cpp $(SRC_PATH)/box.cpp $(SRC_PATH)/camera.cpp $(SRC_PATH)/coordsys.cpp $(SRC_PATH)/cylinder.cpp $(SRC_PATH)/extvol.cpp $(SRC_PATH)/global.cpp $(SRC_PATH)/grid.cpp $(SRC_PATH)/imageio.cpp $(SRC_PATH)/imap.cpp $(SRC_PATH)/intersect.cpp $(SRC_PATH)/jpeg.cpp $(SRC_PATH)/light.cpp $(SRC_PATH)/objbound.cpp $(SRC_PATH)/parse.cpp $(SRC_PATH)/plane.cpp $(SRC_PATH)/ppm.cpp $(SRC_PATH)/quadric.cpp $(SRC_PATH)/render.cpp $(SRC_PATH)/ring.cpp $(SRC_PATH)/shade.cpp $(SRC_PATH)/sphere.cpp $(SRC_PATH)/texture.cpp $(SRC_PATH)/tgafile.cpp $(SRC_PATH)/trace_rest.cpp $(SRC_PATH)/triangle.cpp $(SRC_PATH)/ui.cpp $(SRC_PATH)/util.cpp $(SRC_PATH)/vector.cpp $(SRC_PATH)/vol.cpp +# Add -DMARK_RENDERING_AREA=1 to see graphical threads work +# Add -DTBB_USE_GCC_BUILTINS to use gcc atomics +LOCAL_CFLAGS += -std=c++11 -fexceptions -Wdeprecated-declarations -I$(TBB_FULL_PATH)/include -I$(TBB_COMMON_FULL_PATH) -I$(realpath $(SRC_PATH)) +LOCAL_LDLIBS := -lm -llog -ljnigraphics -L./ -L$(TBB_LIBRARY_FULL_PATH) +LOCAL_SHARED_LIBRARIES += libtbb +include $(BUILD_SHARED_LIBRARY) + +LOCAL_PATH := $(TBB_LIBRARY_FULL_PATH) +include $(CLEAR_VARS) +LOCAL_MODULE := libtbb +LOCAL_SRC_FILES := libtbb.so +include $(PREBUILT_SHARED_LIBRARY) + +endif diff --git a/examples/parallel_for/tachyon/android/jni/Application.mk b/examples/parallel_for/tachyon/android/jni/Application.mk new file mode 100644 index 0000000000..0e24355d86 --- /dev/null +++ b/examples/parallel_for/tachyon/android/jni/Application.mk @@ -0,0 +1,23 @@ +# Copyright 2005-2015 Intel Corporation. All Rights Reserved. +# +# The source code contained or described herein and all documents related +# to the source code ("Material") are owned by Intel Corporation or its +# suppliers or licensors. Title to the Material remains with Intel +# Corporation or its suppliers and licensors. The Material is protected +# by worldwide copyright laws and treaty provisions. No part of the +# Material may be used, copied, reproduced, modified, published, uploaded, +# posted, transmitted, distributed, or disclosed in any way without +# Intel's prior express written permission. +# +# No license under any patent, copyright, trade secret or other +# intellectual property right is granted to or conferred upon you by +# disclosure or delivery of the Materials, either expressly, by +# implication, inducement, estoppel or otherwise. Any license under such +# intellectual property rights must be express and approved by Intel in +# writing. + +APP_ABI:= all +APP_STL:=gnustl_shared +APP_GNUSTL_FORCE_CPP_FEATURES := exceptions rtti +APP_PLATFORM:=android-15 +NDK_TOOLCHAIN_VERSION:=4.6 diff --git a/examples/parallel_for/tachyon/android/jni/jni-engine.cpp b/examples/parallel_for/tachyon/android/jni/jni-engine.cpp new file mode 100644 index 0000000000..8a5df560a3 --- /dev/null +++ b/examples/parallel_for/tachyon/android/jni/jni-engine.cpp @@ -0,0 +1,279 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + The source code contained or described herein and all documents related + to the source code ("Material") are owned by Intel Corporation or its + suppliers or licensors. Title to the Material remains with Intel + Corporation or its suppliers and licensors. The Material is protected + by worldwide copyright laws and treaty provisions. No part of the + Material may be used, copied, reproduced, modified, published, uploaded, + posted, transmitted, distributed, or disclosed in any way without + Intel's prior express written permission. + + No license under any patent, copyright, trade secret or other + intellectual property right is granted to or conferred upon you by + disclosure or delivery of the Materials, either expressly, by + implication, inducement, estoppel or otherwise. Any license under such + intellectual property rights must be express and approved by Intel in + writing. +*/ + +/* + The original source for this example is + Copyright (c) 1994-2008 John E. Stone + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + */ + +#include +#include +#include +#include + +#include "utility/utility.h" +#include "tachyon_video.h" +#include "tbb/tick_count.h" +#include "tbb/task_scheduler_init.h" + +#include +#include +#include + +#include +#define LOG_INFO(...) __android_log_print(ANDROID_LOG_INFO,"tachyon",__VA_ARGS__) +#define LOG_ERROR(...) __android_log_print(ANDROID_LOG_ERROR,"tachyon",__VA_ARGS__) + +#include +#include +#include + +#include "types.h" +#include "api.h" /* The ray tracing library API */ +#include "parse.h" /* Support for my own file format */ +#include "ui.h" +#include "util.h" + +SceneHandle global_scene; +int global_xsize; /* size of graphic image rendered in window (from hres, vres) */ +int global_ysize; +int global_xwinsize; /* size of window (may be larger than above) */ +int global_ywinsize; +bool global_usegraphics; +char* global_window_title; +static long startTime=0; +static volatile long elapsedTime=0; +static volatile bool isCancelled=false; +static volatile bool isPaused=false; + +bool silent_mode = false; /* silent mode */ + +class tachyon_video *video = 0; + +typedef struct { + int foundfilename; /* was a model file name found in the args? */ + char filename[1024]; /* model file to render */ + int useoutfilename; /* command line override of output filename */ + char outfilename[1024]; /* name of output image file */ + int verbosemode; /* verbose flags */ + int antialiasing; /* antialiasing setting */ + int displaymode; /* display mode */ + int boundmode; /* bounding mode */ + int boundthresh; /* bounding threshold */ + int usecamfile; /* use camera file */ + char camfilename[1024]; /* camera filename */ +} argoptions; + +void initoptions(argoptions * opt) { + memset(opt, 0, sizeof(argoptions)); + opt->foundfilename = -1; + opt->useoutfilename = -1; + opt->verbosemode = -1; + opt->antialiasing = -1; + opt->displaymode = -1; + opt->boundmode = -1; + opt->boundthresh = -1; + opt->usecamfile = -1; +} + +int CreateScene(argoptions &opt) { + char *filename; + + global_scene = rt_newscene(); + rt_initialize(); + + //filename = "/mnt/sdcard/tachyon/data.dat"; + filename = opt.filename; + LOG_INFO("CreateScene: data file name is %s", filename); + + LOG_INFO("Readmodel"); + if (readmodel(filename, global_scene) != 0) { + LOG_ERROR("Parser returned a non-zero error code reading %s\n", filename); + LOG_ERROR("Aborting Render...\n"); + rt_finalize(); + return -1; + } + LOG_INFO("Readmodel done"); + + scenedef *scene = (scenedef *) global_scene; + + //scene->hres and scene->yres are taken from display properties in *initBitmap() function + scene->hres = global_xwinsize = global_xsize; + scene->vres = global_ywinsize = global_ysize; + LOG_INFO("CreateScene: global_xsize=%d global_ysize=%d", global_xsize, global_ysize); + + return 0; +} + +extern unsigned int * g_pImg; + +void* example_main(void *filename) { + try { + LOG_INFO("initoptions"); + argoptions opt; + initoptions(&opt); + strcpy(opt.filename, (char*) filename); + LOG_INFO("initoptions done"); + + LOG_INFO("CreateScene"); + if ((CreateScene(opt) != 0)) + return NULL; + LOG_INFO("CreateScene done"); + + LOG_INFO("tachyon video"); + tachyon_video tachyon; + LOG_INFO("tachyon video init_console"); + tachyon.init_console(); + LOG_INFO("tachyon video init_window"); + + tachyon.init_window(global_xsize, global_ysize); + LOG_INFO("tachyon video init_window done"); + if( !tachyon.running ) + return NULL; + LOG_INFO("tachyon video done"); + + video = &tachyon; + //Exit from the while via GUI "Exit" menu. + for(;;) { + LOG_INFO("main_loop() start"); + elapsedTime = 0; + startTime=time(NULL); + isCancelled=false; + if (video)video->running = true; + memset(g_pImg, 0, 4 * global_xsize * global_ysize); + tachyon.main_loop(); + elapsedTime = (long)(time(NULL)-startTime); + video->running=false; + //The timer to restart drawing then it is complete. + int timer=5; + do{ + sleep(1); + }while( ( isPaused || !isCancelled && (timer--)>0 ) ); + LOG_INFO("main_loop() done"); + } + return NULL; + } catch (std::exception& e) { + LOG_ERROR("An error occurred. Error text is %s", e.what()); + return NULL; + } +} + +static int fill_rect(void* pixels, int size) { + if( pixels && g_pImg ){ + memcpy(pixels, g_pImg, size); + if (video->running) + elapsedTime=(long)(time(NULL)-startTime); + return 0; + }else{ + return -1; + } +} + +extern "C" JNIEXPORT jlong JNICALL Java_com_intel_tbb_example_tachyon_tachyonView_getElapsedTime( + JNIEnv * env) { + return elapsedTime; +} + +extern "C" JNIEXPORT void JNICALL Java_com_intel_tbb_example_tachyon_tachyonView_initBitmap( + JNIEnv * env, jobject obj, jobject bitmap, jint x_size, jint y_size, + jint number_of_threads, jstring filename) { + LOG_INFO("initBitmap start"); + static pthread_t handle; + char buf[5]; + LOG_INFO("video"); + //TBB_NUM_THREADS is reading somewhere inside C++ common code + if (number_of_threads >= 0 && number_of_threads < 256) { + snprintf(buf, 4, "%d", number_of_threads); + setenv("TBB_NUM_THREADS", buf, 1); + } + LOG_INFO("TBB_NUM_THREADS=%s",getenv ("TBB_NUM_THREADS")); + //Cancel if we are in the middle of the painting + isCancelled = true; + if (video) + video->running = false; + if (!handle) { + LOG_INFO("Starting native thread"); + pthread_attr_t s; + pthread_attr_init(&s); + //adjusting picture to physical resolution + global_xsize = x_size; + global_ysize = y_size; + char const* fn = env->GetStringUTFChars(filename, NULL); + LOG_INFO("fn=%s",fn); + //Starting example_main and returning back to GUI + pthread_create(&handle, NULL, &example_main, (void*) fn); + LOG_INFO("Thread handle is %ld", handle); + } +} + +extern "C" JNIEXPORT jint JNICALL Java_com_intel_tbb_example_tachyon_tachyonView_renderBitmap( + JNIEnv * env, jobject obj, jobject bitmap, jint size) { + AndroidBitmapInfo info; + void* pixels; + int ret; + + //Getting bitmap to fill + if ((ret = AndroidBitmap_getInfo(env, bitmap, &info)) < 0) { + LOG_ERROR("AndroidBitmap_getInfo() returned %d", ret); + return ret; + } + + //Locking bitmap to fill + if ((ret = AndroidBitmap_lockPixels(env, bitmap, &pixels)) < 0) { + LOG_ERROR("AndroidBitmap_lockPixels() returned %d", ret); + } + + //Filling the bitmap + ret = fill_rect(pixels, size); + + //Unlocking the bitmap + AndroidBitmap_unlockPixels(env, bitmap); + return ret; +} + +extern "C" JNIEXPORT void JNICALL Java_com_intel_tbb_example_tachyon_tachyon_setPaused( + JNIEnv * env, jobject obj, jboolean paused) { + if(video)video->pausing = isPaused = paused; + return; +} diff --git a/examples/parallel_for/tachyon/android/project.properties b/examples/parallel_for/tachyon/android/project.properties new file mode 100644 index 0000000000..a3ee5ab64f --- /dev/null +++ b/examples/parallel_for/tachyon/android/project.properties @@ -0,0 +1,14 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system edit +# "ant.properties", and override values to adapt the script to your +# project structure. +# +# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): +#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt + +# Project target. +target=android-17 diff --git a/examples/parallel_for/tachyon/android/res/menu/main_screen_menu.xml b/examples/parallel_for/tachyon/android/res/menu/main_screen_menu.xml new file mode 100644 index 0000000000..8d1d4e4c62 --- /dev/null +++ b/examples/parallel_for/tachyon/android/res/menu/main_screen_menu.xml @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/examples/parallel_for/tachyon/android/res/values/strings.xml b/examples/parallel_for/tachyon/android/res/values/strings.xml new file mode 100644 index 0000000000..f3514bbd6d --- /dev/null +++ b/examples/parallel_for/tachyon/android/res/values/strings.xml @@ -0,0 +1,4 @@ + + + Tachyon demo + diff --git a/examples/parallel_for/tachyon/android/src/com/intel/tbb/example/tachyon/tachyon.java b/examples/parallel_for/tachyon/android/src/com/intel/tbb/example/tachyon/tachyon.java new file mode 100644 index 0000000000..9a3db5255d --- /dev/null +++ b/examples/parallel_for/tachyon/android/src/com/intel/tbb/example/tachyon/tachyon.java @@ -0,0 +1,307 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + The source code contained or described herein and all documents related + to the source code ("Material") are owned by Intel Corporation or its + suppliers or licensors. Title to the Material remains with Intel + Corporation or its suppliers and licensors. The Material is protected + by worldwide copyright laws and treaty provisions. No part of the + Material may be used, copied, reproduced, modified, published, uploaded, + posted, transmitted, distributed, or disclosed in any way without + Intel's prior express written permission. + + No license under any patent, copyright, trade secret or other + intellectual property right is granted to or conferred upon you by + disclosure or delivery of the Materials, either expressly, by + implication, inducement, estoppel or otherwise. Any license under such + intellectual property rights must be express and approved by Intel in + writing. +*/ + +/* + The original source for this example is + Copyright (c) 1994-2008 John E. Stone + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. +*/ + +package com.intel.tbb.example.tachyon; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.Timer; +import java.util.TimerTask; + +import android.app.ActionBar; +import android.app.Activity; +import android.os.Bundle; +import android.os.Environment; +import android.content.Context; +import android.content.res.AssetManager; +import android.util.DisplayMetrics; +import android.util.Log; +import android.view.Gravity; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup.LayoutParams; +import android.widget.LinearLayout; +import android.widget.TextView; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Rect; + +public class tachyon extends Activity { + private tachyonView myView; + private int W; + private int H; + private String fileOnSDcard; + private float currentYMenuPosition=(float) 1e5; + private float previousYMenuPosition=0; + public int number_of_threads=0; + public static TextView txtThreadNumber; + public static TextView txtElapsedTime; + + private static native void setPaused(boolean paused); + + @SuppressWarnings("deprecation") + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + try { + fileOnSDcard = Environment.getExternalStorageDirectory() + .getPath() + "/tachyon/data.dat"; + Log.i("tachyon", "Data file name is " + fileOnSDcard); + File dataFile = new File(fileOnSDcard); + if (dataFile.exists()) { + dataFile.delete(); + } + if (!dataFile.exists()) { + AssetManager assetManager = getAssets(); + InputStream inputFile = assetManager.open("data.dat"); + dataFile.getParentFile().mkdirs(); + dataFile.createNewFile(); + OutputStream outputFile = new FileOutputStream(fileOnSDcard); + byte[] buffer = new byte[10000]; + int bytesRead; + while ((bytesRead = inputFile.read(buffer)) != -1) + outputFile.write(buffer, 0, bytesRead); + inputFile.close(); + inputFile = null; + outputFile.flush(); + outputFile.close(); + outputFile = null; + } + DisplayMetrics displayMetrics = new DisplayMetrics(); + getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); + ActionBar actionBar = getActionBar(); + actionBar.hide(); + + H = displayMetrics.heightPixels; + W = displayMetrics.widthPixels; + Log.i("tachyon", "displayMetrics.heightPixels: " + H); + Log.i("tachyon", "displayMetrics.widthPixels: " + W); + + //uncomment to override scene size + int sceneWidth = 400; + float ratio = W>H?(float)(W)/H:(float)(H)/W; + W = sceneWidth; + H = (int) (W/ratio); + + Log.i("tachyon", "Scene size is " + W + "*" + H ); + + } catch (Exception e) { + Log.e("tachyon", "Exception in file copy: " + e.getMessage()); + } + myView = new tachyonView(this, W, H, fileOnSDcard); + setContentView(myView); + + LinearLayout llThreadNumber = new LinearLayout(this); + txtThreadNumber = new TextView(this); + txtThreadNumber.setText(""); + txtThreadNumber.setTextColor(0xFF00FF00); + txtThreadNumber.setScaleX(1); + txtThreadNumber.setScaleY(1); + txtThreadNumber.setPadding(10, 10, 10, 10); + llThreadNumber.setGravity(Gravity.TOP | Gravity.CENTER); + llThreadNumber.addView(txtThreadNumber); + this.addContentView(llThreadNumber, + new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); + LinearLayout llElapsedTime = new LinearLayout(this); + txtElapsedTime = new TextView(this); + txtElapsedTime.setText(""); + txtElapsedTime.setTextColor(0xFFFF0000); + txtElapsedTime.setScaleX(2); + txtElapsedTime.setScaleY(2); + txtElapsedTime.setPadding(10, 10, 40, 10); + llElapsedTime.setGravity(Gravity.TOP | Gravity.RIGHT); + llElapsedTime.addView(txtElapsedTime); + this.addContentView(llElapsedTime, + new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); + } + + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater inflater = getMenuInflater(); + inflater.inflate(R.menu.main_screen_menu, menu); + return true; + } + + @Override + public boolean onTouchEvent(MotionEvent event) + { + currentYMenuPosition = event.getY(); + if(event.getAction()==MotionEvent.ACTION_UP ){ + ActionBar actionBar = getActionBar(); + if (previousYMenuPosition < currentYMenuPosition){ + actionBar.show(); + }else{ + actionBar.hide(); + } + previousYMenuPosition = currentYMenuPosition; + return true; + } + return super.onTouchEvent(event); + } + + @Override + public void onPause() { + super.onPause(); + Log.i("tachyon", "onPause working" ); + setPaused(true); + } + + @Override + public void onResume() { + super.onResume(); + Log.i("tachyon", "onResume working" ); + setPaused(false); + } + + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.thread0: { + number_of_threads = 0; + break; + } + case R.id.thread1: { + number_of_threads = 1; + break; + } + case R.id.thread2: { + number_of_threads = 2; + break; + } + case R.id.thread4: { + number_of_threads = 4; + break; + } + case R.id.thread8: { + number_of_threads = 8; + break; + } + case R.id.exit: { + Log.i("tachyon", "Exiting..."); + System.exit(0); + } + } + Log.i("tachyon", "Starting in " + number_of_threads + " Thread(s)"); + myView.initNative(number_of_threads); + return true; + } + + static { + System.loadLibrary("gnustl_shared"); + System.loadLibrary("tbb"); + System.loadLibrary("jni-engine"); + } +} + +class tachyonView extends View { + private Bitmap myBitmap; + private Rect targetRect; + private TimerTask myRefreshTask; + private static Timer myRefreshTimer; + private int W; + private int H; + private String filename; + public static String strCntDisplay; + public static String strFpsDisplay; + + private static native int renderBitmap(Bitmap bitmap, int size); + + private static native void initBitmap(Bitmap bitmap, int x_size, + int y_size, int number_of_threads, String fileOnSDcard); + + private static native void pressButton(int x, int y); + + private static native long getElapsedTime(); + + public void initNative(int number_of_threads) { + initBitmap(myBitmap, W, H, number_of_threads, filename); + } + + public tachyonView(Context context, int widthPixels, int heightPixels, String fileOnSDcard) { + super(context); + + //Landscape support only: H must be less than W + //In case application is started on locked phone portrait layout comes + //to the constructor even landscape is set in the manifest + W = widthPixels>heightPixels?widthPixels:heightPixels; + H = widthPixels>heightPixels?heightPixels:widthPixels; + filename=fileOnSDcard; + myBitmap = Bitmap.createBitmap(W, H, Bitmap.Config.ARGB_8888); + targetRect = new Rect(); + initBitmap(myBitmap, W, H, 0, filename); + + } + + @Override + protected void onDraw(Canvas canvas) { + //Write bitmap buffer + if( renderBitmap(myBitmap, 4 * H * W) == 0 ){ + targetRect.right = canvas.getWidth(); + targetRect.bottom = canvas.getHeight(); + //Draw bitmap buffer + canvas.drawBitmap(myBitmap, null, targetRect, null); + tachyon parent = (tachyon)getContext(); + long elapsedTime=getElapsedTime(); + if ( parent.number_of_threads > 0 ){ + parent.getWindow().setTitle(parent.number_of_threads + " Thread(s): " + elapsedTime + " s."); + tachyon.txtThreadNumber.setText(parent.number_of_threads + " thread(s)"); + tachyon.txtElapsedTime.setText(elapsedTime + " secs"); + }else{ + parent.getWindow().setTitle("HW concurrency: " + elapsedTime + " s."); + tachyon.txtThreadNumber.setText("Auto HW concurrency"); + tachyon.txtElapsedTime.setText(elapsedTime + " secs"); + } + } + invalidate(); + return; + } +} diff --git a/examples/parallel_for/tachyon/dat/820spheres.dat b/examples/parallel_for/tachyon/dat/820spheres.dat new file mode 100644 index 0000000000..5d5a4300e0 --- /dev/null +++ b/examples/parallel_for/tachyon/dat/820spheres.dat @@ -0,0 +1,1671 @@ +BEGIN_SCENE + OUTFILE /dev/null + RESOLUTION 512 512 + VERBOSE 0 + +CAMERA + ZOOM 1.0 + ASPECTRATIO 1.0 + ANTIALIASING 0 + RAYDEPTH 12 + CENTER 0.0 0.0 2.0 + VIEWDIR 0 0 -1 + UPDIR 0 1 0 + +END_CAMERA + +LIGHT CENTER 4 3 2 RAD 0.2 COLOR 0.5 0.5 0.5 + +LIGHT CENTER 1 -4 4 RAD 0.2 COLOR 0.5 0.5 0.5 + +LIGHT CENTER -3 1 5 RAD 0.2 COLOR 0.5 0.5 0.5 + +TEXDEF txt001 AMBIENT 0.2 DIFFUSE 0.8 SPECULAR 0 OPACITY 1 + COLOR 1 0.75 0.33 + TEXFUNC 0 + +TEXDEF txt002 AMBIENT 0.1 DIFFUSE 0.9 SPECULAR 0.0 OPACITY 1.0 + COLOR 1.0 1.0 1.0 TEXFUNC 0 + + SPHERE CENTER 0 0 0 RAD 0.5 + txt002 + SPHERE CENTER 0.272166 0.272166 0.544331 RAD 0.166667 + txt002 + SPHERE CENTER 0.420314 0.420314 0.618405 RAD 0.0555556 + txt002 + SPHERE CENTER 0.470715 0.470715 0.598245 RAD 0.0185185 + txt002 + SPHERE CENTER 0.461623 0.409245 0.557924 RAD 0.0185185 + txt002 + SPHERE CENTER 0.409245 0.461623 0.557924 RAD 0.0185185 + txt002 + SPHERE CENTER 0.429405 0.481784 0.658726 RAD 0.0185185 + txt002 + SPHERE CENTER 0.367935 0.472692 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.379004 0.431383 0.678886 RAD 0.0185185 + txt002 + SPHERE CENTER 0.481784 0.429405 0.658726 RAD 0.0185185 + txt002 + SPHERE CENTER 0.431383 0.379004 0.678886 RAD 0.0185185 + txt002 + SPHERE CENTER 0.472692 0.367935 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.461844 0.304709 0.43322 RAD 0.0555556 + txt002 + SPHERE CENTER 0.492085 0.33495 0.372739 RAD 0.0185185 + txt002 + SPHERE CENTER 0.424345 0.305171 0.369341 RAD 0.0185185 + txt002 + SPHERE CENTER 0.435193 0.368397 0.406378 RAD 0.0185185 + txt002 + SPHERE CENTER 0.529584 0.334488 0.436618 RAD 0.0185185 + txt002 + SPHERE CENTER 0.472692 0.367935 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.499343 0.304247 0.497099 RAD 0.0185185 + txt002 + SPHERE CENTER 0.518736 0.271262 0.399581 RAD 0.0185185 + txt002 + SPHERE CENTER 0.488495 0.241021 0.460062 RAD 0.0185185 + txt002 + SPHERE CENTER 0.450996 0.241483 0.396183 RAD 0.0185185 + txt002 + SPHERE CENTER 0.304709 0.461844 0.43322 RAD 0.0555556 + txt002 + SPHERE CENTER 0.33495 0.492085 0.372739 RAD 0.0185185 + txt002 + SPHERE CENTER 0.368397 0.435193 0.406378 RAD 0.0185185 + txt002 + SPHERE CENTER 0.305171 0.424345 0.369341 RAD 0.0185185 + txt002 + SPHERE CENTER 0.271262 0.518736 0.399581 RAD 0.0185185 + txt002 + SPHERE CENTER 0.241483 0.450996 0.396183 RAD 0.0185185 + txt002 + SPHERE CENTER 0.241021 0.488495 0.460062 RAD 0.0185185 + txt002 + SPHERE CENTER 0.334488 0.529584 0.436618 RAD 0.0185185 + txt002 + SPHERE CENTER 0.304247 0.499343 0.497099 RAD 0.0185185 + txt002 + SPHERE CENTER 0.367935 0.472692 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.230635 0.38777 0.729516 RAD 0.0555556 + txt002 + SPHERE CENTER 0.2506 0.446614 0.769837 RAD 0.0185185 + txt002 + SPHERE CENTER 0.301839 0.407906 0.732914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.253236 0.449775 0.695877 RAD 0.0185185 + txt002 + SPHERE CENTER 0.179397 0.426478 0.766439 RAD 0.0185185 + txt002 + SPHERE CENTER 0.182032 0.429639 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.159431 0.367634 0.726118 RAD 0.0185185 + txt002 + SPHERE CENTER 0.227999 0.384609 0.803476 RAD 0.0185185 + txt002 + SPHERE CENTER 0.208034 0.325765 0.763155 RAD 0.0185185 + txt002 + SPHERE CENTER 0.279238 0.345901 0.766553 RAD 0.0185185 + txt002 + SPHERE CENTER 0.115031 0.4293 0.544331 RAD 0.0555556 + txt002 + SPHERE CENTER 0.102505 0.502308 0.544331 RAD 0.0185185 + txt002 + SPHERE CENTER 0.160392 0.474661 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.160392 0.474661 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0571437 0.456947 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.115031 0.4293 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0696698 0.383939 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0571437 0.456947 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0696698 0.383939 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.115031 0.4293 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.082487 0.239622 0.655442 RAD 0.0555556 + txt002 + SPHERE CENTER 0.0438957 0.258053 0.715923 RAD 0.0185185 + txt002 + SPHERE CENTER 0.117687 0.252557 0.719322 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0863845 0.308551 0.682285 RAD 0.0185185 + txt002 + SPHERE CENTER 0.00869528 0.245118 0.652044 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0511841 0.295616 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0472866 0.226687 0.591563 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0399982 0.189123 0.689081 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0785895 0.170692 0.6286 RAD 0.0185185 + txt002 + SPHERE CENTER 0.11379 0.183628 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.38777 0.230635 0.729516 RAD 0.0555556 + txt002 + SPHERE CENTER 0.446614 0.2506 0.769837 RAD 0.0185185 + txt002 + SPHERE CENTER 0.449775 0.253236 0.695877 RAD 0.0185185 + txt002 + SPHERE CENTER 0.407906 0.301839 0.732914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.384609 0.227999 0.803476 RAD 0.0185185 + txt002 + SPHERE CENTER 0.345901 0.279238 0.766553 RAD 0.0185185 + txt002 + SPHERE CENTER 0.325765 0.208034 0.763155 RAD 0.0185185 + txt002 + SPHERE CENTER 0.426478 0.179397 0.766439 RAD 0.0185185 + txt002 + SPHERE CENTER 0.367634 0.159431 0.726118 RAD 0.0185185 + txt002 + SPHERE CENTER 0.429639 0.182032 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.239622 0.082487 0.655442 RAD 0.0555556 + txt002 + SPHERE CENTER 0.258053 0.0438957 0.715923 RAD 0.0185185 + txt002 + SPHERE CENTER 0.308551 0.0863845 0.682285 RAD 0.0185185 + txt002 + SPHERE CENTER 0.252557 0.117687 0.719322 RAD 0.0185185 + txt002 + SPHERE CENTER 0.189123 0.0399982 0.689081 RAD 0.0185185 + txt002 + SPHERE CENTER 0.183628 0.11379 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.170692 0.0785895 0.6286 RAD 0.0185185 + txt002 + SPHERE CENTER 0.245118 0.00869528 0.652044 RAD 0.0185185 + txt002 + SPHERE CENTER 0.226687 0.0472866 0.591563 RAD 0.0185185 + txt002 + SPHERE CENTER 0.295616 0.0511841 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.4293 0.115031 0.544331 RAD 0.0555556 + txt002 + SPHERE CENTER 0.502308 0.102505 0.544331 RAD 0.0185185 + txt002 + SPHERE CENTER 0.474661 0.160392 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.474661 0.160392 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.456947 0.0571437 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.4293 0.115031 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.383939 0.0696698 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.456947 0.0571437 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.383939 0.0696698 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.4293 0.115031 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.643951 0.172546 1.11022e-16 RAD 0.166667 + txt002 + SPHERE CENTER 0.802608 0.281471 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.824035 0.30566 -0.177765 RAD 0.0185185 + txt002 + SPHERE CENTER 0.787796 0.241352 -0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER 0.752156 0.305221 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.838847 0.34578 -0.117284 RAD 0.0185185 + txt002 + SPHERE CENTER 0.766968 0.345341 -0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.817421 0.321591 -0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER 0.874487 0.28191 -0.129006 RAD 0.0185185 + txt002 + SPHERE CENTER 0.853061 0.257721 -0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.838248 0.217602 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.643951 0.172546 -0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER 0.61371 0.202787 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.5724 0.191718 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.624779 0.244096 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.68526 0.183615 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.696329 0.224924 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.715501 0.153374 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.632882 0.131237 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.663122 0.100996 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.591572 0.120168 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.594141 0.358439 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.619127 0.408291 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.665691 0.37761 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.638217 0.337042 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.547576 0.389119 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.566667 0.317871 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.522591 0.339267 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.57505 0.429687 -0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER 0.550064 0.379835 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.621614 0.399007 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.802608 0.281471 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.858698 0.329459 0.104938 RAD 0.0185185 + txt002 + SPHERE CENTER 0.845371 0.280879 0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER 0.798572 0.337088 0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.815936 0.330051 0.165419 RAD 0.0185185 + txt002 + SPHERE CENTER 0.75581 0.33768 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.759846 0.282063 0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER 0.862735 0.273842 0.153697 RAD 0.0185185 + txt002 + SPHERE CENTER 0.806645 0.225855 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.849407 0.225263 0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.594141 0.358439 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.613592 0.428945 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.665691 0.37761 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.621614 0.399007 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.542042 0.409774 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.550064 0.379835 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.522591 0.339267 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.586119 0.388377 0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.566667 0.317871 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.638217 0.337042 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.643951 0.172546 0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER 0.674191 0.202787 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.715501 0.191718 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.663122 0.244096 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.602641 0.183615 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.591572 0.224924 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.5724 0.153374 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.655019 0.131237 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.624779 0.100996 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.696329 0.120168 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.852418 0.0955788 2.30268e-16 RAD 0.0555556 + txt002 + SPHERE CENTER 0.922609 0.11107 -0.0178949 RAD 0.0185185 + txt002 + SPHERE CENTER 0.867231 0.135698 -0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER 0.877966 0.164775 0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER 0.907797 0.0709499 0.0425863 RAD 0.0185185 + txt002 + SPHERE CENTER 0.863153 0.124655 0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER 0.837606 0.0554592 0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER 0.897062 0.0418734 -0.0246914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.826871 0.0263827 -0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER 0.841683 0.0665023 -0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER 0.69376 -0.0133465 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.740325 -0.0440268 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.76531 0.0058253 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.721234 0.0272215 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.668775 -0.0631985 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.649684 0.00804971 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.62221 -0.0325183 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.712851 -0.0845947 0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER 0.666287 -0.0539145 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.737837 -0.0347427 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.69376 -0.0133465 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.745859 -0.0646815 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.76531 0.0058253 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.737837 -0.0347427 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.674309 -0.0838533 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.666287 -0.0539145 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.62221 -0.0325183 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.701782 -0.0432853 -0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.649684 0.00804971 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.721234 0.0272215 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.172546 0.643951 1.11022e-16 RAD 0.166667 + txt002 + SPHERE CENTER 0.281471 0.802608 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.30566 0.824035 -0.177765 RAD 0.0185185 + txt002 + SPHERE CENTER 0.305221 0.752156 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.241352 0.787796 -0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER 0.28191 0.874487 -0.129006 RAD 0.0185185 + txt002 + SPHERE CENTER 0.217602 0.838248 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.257721 0.853061 -0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.34578 0.838847 -0.117284 RAD 0.0185185 + txt002 + SPHERE CENTER 0.321591 0.817421 -0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER 0.345341 0.766968 -0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.358439 0.594141 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.408291 0.619127 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.337042 0.638217 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.37761 0.665691 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.429687 0.57505 -0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER 0.399007 0.621614 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.379835 0.550064 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.389119 0.547576 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.339267 0.522591 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.317871 0.566667 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.172546 0.643951 -0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER 0.142305 0.674191 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.100996 0.663122 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.153374 0.715501 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.213855 0.655019 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.224924 0.696329 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.244096 0.624779 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.161477 0.602641 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.191718 0.5724 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.120168 0.591572 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0955788 0.852418 1.31582e-16 RAD 0.0555556 + txt002 + SPHERE CENTER 0.11107 0.922609 -0.0178949 RAD 0.0185185 + txt002 + SPHERE CENTER 0.164775 0.877966 0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER 0.135698 0.867231 -0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0418734 0.897062 -0.0246914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0665023 0.841683 -0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0263827 0.826871 -0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0709499 0.907797 0.0425863 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0554592 0.837606 0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER 0.124655 0.863153 0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0133465 0.69376 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.0646815 0.745859 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0347427 0.737837 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0058253 0.76531 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0432853 0.701782 -0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0272215 0.721234 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.00804971 0.649684 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0838533 0.674309 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0325183 0.62221 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0539145 0.666287 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0133465 0.69376 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.0440268 0.740325 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0272215 0.721234 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0058253 0.76531 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0845947 0.712851 0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0347427 0.737837 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0539145 0.666287 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0631985 0.668775 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0325183 0.62221 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.00804971 0.649684 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.281471 0.802608 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.329459 0.858698 0.104938 RAD 0.0185185 + txt002 + SPHERE CENTER 0.337088 0.798572 0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.280879 0.845371 0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER 0.273842 0.862735 0.153697 RAD 0.0185185 + txt002 + SPHERE CENTER 0.225263 0.849407 0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.225855 0.806645 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.330051 0.815936 0.165419 RAD 0.0185185 + txt002 + SPHERE CENTER 0.282063 0.759846 0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER 0.33768 0.75581 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.172546 0.643951 0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER 0.202787 0.674191 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.244096 0.663122 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.191718 0.715501 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.131237 0.655019 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.120168 0.696329 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.100996 0.624779 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.183615 0.602641 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.153374 0.5724 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.224924 0.591572 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.358439 0.594141 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.428945 0.613592 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.399007 0.621614 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.37761 0.665691 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.388377 0.586119 0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.337042 0.638217 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.317871 0.566667 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.409774 0.542042 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.339267 0.522591 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.379835 0.550064 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.371785 0.0996195 0.544331 RAD 0.166667 + txt002 + SPHERE CENTER -0.393621 0.220501 0.729516 RAD 0.0555556 + txt002 + SPHERE CENTER -0.368601 0.279642 0.766439 RAD 0.0185185 + txt002 + SPHERE CENTER -0.321889 0.238665 0.726118 RAD 0.0185185 + txt002 + SPHERE CENTER -0.372464 0.281062 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER -0.440333 0.261479 0.769837 RAD 0.0185185 + txt002 + SPHERE CENTER -0.444196 0.262898 0.695877 RAD 0.0185185 + txt002 + SPHERE CENTER -0.465353 0.202338 0.732914 RAD 0.0185185 + txt002 + SPHERE CENTER -0.389758 0.219082 0.803476 RAD 0.0185185 + txt002 + SPHERE CENTER -0.414778 0.15994 0.766553 RAD 0.0185185 + txt002 + SPHERE CENTER -0.343046 0.178104 0.763155 RAD 0.0185185 + txt002 + SPHERE CENTER -0.191247 0.166275 0.655442 RAD 0.0555556 + txt002 + SPHERE CENTER -0.130089 0.20793 0.652044 RAD 0.0185185 + txt002 + SPHERE CENTER -0.154295 0.172673 0.591563 RAD 0.0185185 + txt002 + SPHERE CENTER -0.192135 0.230419 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.167041 0.201532 0.715923 RAD 0.0185185 + txt002 + SPHERE CENTER -0.229087 0.224021 0.682285 RAD 0.0185185 + txt002 + SPHERE CENTER -0.228199 0.159877 0.719322 RAD 0.0185185 + txt002 + SPHERE CENTER -0.129201 0.143787 0.689081 RAD 0.0185185 + txt002 + SPHERE CENTER -0.190359 0.102131 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER -0.153407 0.108529 0.6286 RAD 0.0185185 + txt002 + SPHERE CENTER -0.31427 0.31427 0.544331 RAD 0.0555556 + txt002 + SPHERE CENTER -0.277961 0.367156 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.252306 0.297666 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.31427 0.31427 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER -0.339925 0.383759 0.544331 RAD 0.0185185 + txt002 + SPHERE CENTER -0.376234 0.330873 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.376234 0.330873 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.277961 0.367156 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.31427 0.31427 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.252306 0.297666 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.574159 0.153845 0.618405 RAD 0.0555556 + txt002 + SPHERE CENTER -0.612768 0.202534 0.658726 RAD 0.0185185 + txt002 + SPHERE CENTER -0.543919 0.184086 0.678886 RAD 0.0185185 + txt002 + SPHERE CENTER -0.554987 0.225396 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.643008 0.172294 0.598245 RAD 0.0185185 + txt002 + SPHERE CENTER -0.585228 0.195155 0.557924 RAD 0.0185185 + txt002 + SPHERE CENTER -0.6044 0.123605 0.557924 RAD 0.0185185 + txt002 + SPHERE CENTER -0.631939 0.130984 0.658726 RAD 0.0185185 + txt002 + SPHERE CENTER -0.593331 0.0822954 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.56309 0.112536 0.678886 RAD 0.0185185 + txt002 + SPHERE CENTER -0.494808 0.247614 0.43322 RAD 0.0555556 + txt002 + SPHERE CENTER -0.494287 0.313607 0.399581 RAD 0.0185185 + txt002 + SPHERE CENTER -0.452978 0.302539 0.460062 RAD 0.0185185 + txt002 + SPHERE CENTER -0.434629 0.269833 0.396183 RAD 0.0185185 + txt002 + SPHERE CENTER -0.536117 0.258683 0.372739 RAD 0.0185185 + txt002 + SPHERE CENTER -0.476459 0.214908 0.369341 RAD 0.0185185 + txt002 + SPHERE CENTER -0.536638 0.19269 0.406378 RAD 0.0185185 + txt002 + SPHERE CENTER -0.554467 0.291389 0.436618 RAD 0.0185185 + txt002 + SPHERE CENTER -0.554987 0.225396 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER -0.513157 0.28032 0.497099 RAD 0.0185185 + txt002 + SPHERE CENTER -0.552323 0.0329639 0.43322 RAD 0.0555556 + txt002 + SPHERE CENTER -0.625877 0.0248832 0.436618 RAD 0.0185185 + txt002 + SPHERE CENTER -0.584567 0.0138144 0.497099 RAD 0.0185185 + txt002 + SPHERE CENTER -0.593331 0.0822954 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER -0.593633 0.0440327 0.372739 RAD 0.0185185 + txt002 + SPHERE CENTER -0.561087 0.101445 0.406378 RAD 0.0185185 + txt002 + SPHERE CENTER -0.520079 0.0521134 0.369341 RAD 0.0185185 + txt002 + SPHERE CENTER -0.584869 -0.0244483 0.399581 RAD 0.0185185 + txt002 + SPHERE CENTER -0.511316 -0.0163676 0.396183 RAD 0.0185185 + txt002 + SPHERE CENTER -0.54356 -0.0355172 0.460062 RAD 0.0185185 + txt002 + SPHERE CENTER -0.451136 0.0058509 0.729516 RAD 0.0555556 + txt002 + SPHERE CENTER -0.447081 0.0051487 0.803476 RAD 0.0185185 + txt002 + SPHERE CENTER -0.386138 0.0172804 0.763155 RAD 0.0185185 + txt002 + SPHERE CENTER -0.439178 0.0688765 0.766553 RAD 0.0185185 + txt002 + SPHERE CENTER -0.512079 -0.00628079 0.769837 RAD 0.0185185 + txt002 + SPHERE CENTER -0.504176 0.0574471 0.732914 RAD 0.0185185 + txt002 + SPHERE CENTER -0.516134 -0.00557859 0.695877 RAD 0.0185185 + txt002 + SPHERE CENTER -0.459039 -0.0578769 0.766439 RAD 0.0185185 + txt002 + SPHERE CENTER -0.463094 -0.0571747 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER -0.398096 -0.0457452 0.726118 RAD 0.0185185 + txt002 + SPHERE CENTER -0.4293 -0.115031 0.544331 RAD 0.0555556 + txt002 + SPHERE CENTER -0.424299 -0.178985 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.367336 -0.131634 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.4293 -0.115031 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.486264 -0.162382 0.544331 RAD 0.0185185 + txt002 + SPHERE CENTER -0.491265 -0.0984274 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.491265 -0.0984274 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.424299 -0.178985 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.4293 -0.115031 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER -0.367336 -0.131634 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.248762 -0.0483751 0.655442 RAD 0.0555556 + txt002 + SPHERE CENTER -0.183785 -0.0599222 0.689081 RAD 0.0185185 + txt002 + SPHERE CENTER -0.187119 -0.0172857 0.6286 RAD 0.0185185 + txt002 + SPHERE CENTER -0.215921 0.00673113 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER -0.245428 -0.0910116 0.715923 RAD 0.0185185 + txt002 + SPHERE CENTER -0.277564 -0.0243582 0.719322 RAD 0.0185185 + txt002 + SPHERE CENTER -0.310405 -0.0794645 0.682285 RAD 0.0185185 + txt002 + SPHERE CENTER -0.216626 -0.115028 0.652044 RAD 0.0185185 + txt002 + SPHERE CENTER -0.281603 -0.103481 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.21996 -0.0723919 0.591563 RAD 0.0185185 + txt002 + SPHERE CENTER -0.471405 0.471405 1.11022e-16 RAD 0.166667 + txt002 + SPHERE CENTER -0.508983 0.690426 1.25414e-16 RAD 0.0555556 + txt002 + SPHERE CENTER -0.484794 0.755941 -0.0246914 RAD 0.0185185 + txt002 + SPHERE CENTER -0.436283 0.7029 -0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER -0.478434 0.695668 -0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.557494 0.743468 -0.0178949 RAD 0.0185185 + txt002 + SPHERE CENTER -0.551134 0.683194 -0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER -0.581682 0.677953 0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER -0.515343 0.7507 0.0425863 RAD 0.0185185 + txt002 + SPHERE CENTER -0.539531 0.685185 0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.466832 0.697658 0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER -0.335322 0.607487 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.283164 0.659645 0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER -0.286452 0.603979 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.33883 0.656357 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.332034 0.663153 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.3877 0.659866 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.384191 0.610996 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.279656 0.610775 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.331813 0.558618 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.282943 0.555109 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.335322 0.607487 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.313405 0.629404 -0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.331813 0.558618 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.384191 0.610996 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.316914 0.678274 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.3877 0.659866 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.33883 0.656357 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.264535 0.625895 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.286452 0.603979 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.282943 0.555109 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.645066 0.554344 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.681385 0.616373 -0.129006 RAD 0.0185185 + txt002 + SPHERE CENTER -0.649723 0.609912 -0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER -0.607573 0.617144 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.676727 0.560805 -0.177765 RAD 0.0185185 + txt002 + SPHERE CENTER -0.602915 0.561576 -0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER -0.640408 0.498776 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.718878 0.553573 -0.117284 RAD 0.0185185 + txt002 + SPHERE CENTER -0.682558 0.491544 -0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.687216 0.547112 -0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER -0.471405 0.471405 -0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER -0.501645 0.501645 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.542955 0.490576 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.490576 0.542955 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.430095 0.482473 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.419026 0.523783 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.399854 0.452233 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.482473 0.430095 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.452233 0.399854 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.523783 0.419026 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.607487 0.335322 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.659645 0.283164 -0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER -0.603979 0.286452 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.656357 0.33883 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.663153 0.332034 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.659866 0.3877 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.610996 0.384191 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.610775 0.279656 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.558618 0.331813 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.555109 0.282943 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.645066 0.554344 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.668521 0.610229 0.153697 RAD 0.0185185 + txt002 + SPHERE CENTER -0.598918 0.585648 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.619787 0.622977 0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.714669 0.578925 0.104938 RAD 0.0185185 + txt002 + SPHERE CENTER -0.665934 0.591673 0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER -0.691213 0.52304 0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER -0.6938 0.541596 0.165419 RAD 0.0185185 + txt002 + SPHERE CENTER -0.670344 0.48571 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.624197 0.517014 0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER -0.607487 0.335322 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.629404 0.313405 0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.558618 0.331813 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.610996 0.384191 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.678274 0.316914 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.659866 0.3877 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.656357 0.33883 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.625895 0.264535 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.603979 0.286452 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.555109 0.282943 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.471405 0.471405 0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER -0.441164 0.501645 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.399854 0.490576 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.452233 0.542955 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.512714 0.482473 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.523783 0.523783 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.542955 0.452233 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.460336 0.430095 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.490576 0.399854 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.419026 0.419026 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.643951 -0.172546 1.11022e-16 RAD 0.166667 + txt002 + SPHERE CENTER -0.835815 -0.157543 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.871646 -0.122136 0.165419 RAD 0.0185185 + txt002 + SPHERE CENTER -0.799077 -0.135649 0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER -0.82339 -0.0854653 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.908384 -0.14403 0.104938 RAD 0.0185185 + txt002 + SPHERE CENTER -0.860128 -0.107359 0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER -0.872552 -0.179437 0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER -0.884071 -0.194213 0.153697 RAD 0.0185185 + txt002 + SPHERE CENTER -0.84824 -0.229621 0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.811502 -0.207727 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.643951 -0.172546 0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER -0.61371 -0.142305 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.5724 -0.153374 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.624779 -0.100996 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.68526 -0.161477 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.696329 -0.120168 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.715501 -0.191718 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.632882 -0.213855 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.663122 -0.244096 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.591572 -0.224924 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.69376 0.0133465 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.674309 0.0838533 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.62221 0.0325183 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.666287 0.0539145 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.745859 0.0646815 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.737837 0.0347427 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.76531 -0.0058253 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.701782 0.0432853 0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.721234 -0.0272215 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.649684 -0.00804971 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.835815 -0.157543 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.899353 -0.119969 -0.117284 RAD 0.0185185 + txt002 + SPHERE CENTER -0.868703 -0.130205 -0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER -0.836885 -0.0844101 -0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.866465 -0.147308 -0.177765 RAD 0.0185185 + txt002 + SPHERE CENTER -0.803997 -0.111748 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.802927 -0.184881 -0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER -0.898283 -0.193102 -0.129006 RAD 0.0185185 + txt002 + SPHERE CENTER -0.834745 -0.230676 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.867633 -0.203337 -0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER -0.69376 0.0133465 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.668775 0.0631985 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.62221 0.0325183 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.649684 -0.00804971 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.740325 0.0440268 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.721234 -0.0272215 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.76531 -0.0058253 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.712851 0.0845947 -0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER -0.737837 0.0347427 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.666287 0.0539145 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.643951 -0.172546 -0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER -0.674191 -0.142305 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.715501 -0.153374 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.663122 -0.100996 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.602641 -0.161477 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.591572 -0.120168 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.5724 -0.191718 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.655019 -0.213855 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.624779 -0.244096 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.696329 -0.224924 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.786005 -0.343435 1.25414e-16 RAD 0.0555556 + txt002 + SPHERE CENTER -0.82165 -0.392454 0.0425863 RAD 0.0185185 + txt002 + SPHERE CENTER -0.753118 -0.370774 0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER -0.80984 -0.323622 0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.854538 -0.365116 -0.0178949 RAD 0.0185185 + txt002 + SPHERE CENTER -0.842728 -0.296284 0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER -0.818893 -0.316097 -0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER -0.797815 -0.412267 -0.0246914 RAD 0.0185185 + txt002 + SPHERE CENTER -0.76217 -0.363249 -0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.729282 -0.390587 -0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER -0.594141 -0.358439 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.542042 -0.409774 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.522591 -0.339267 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.550064 -0.379835 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.613592 -0.428945 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.621614 -0.399007 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.665691 -0.37761 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.586119 -0.388377 -0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.638217 -0.337042 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.566667 -0.317871 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.594141 -0.358439 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.547576 -0.389119 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.522591 -0.339267 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.566667 -0.317871 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.619127 -0.408291 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.638217 -0.337042 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.665691 -0.37761 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.57505 -0.429687 0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER -0.621614 -0.399007 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.550064 -0.379835 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0996195 -0.371785 0.544331 RAD 0.166667 + txt002 + SPHERE CENTER 0.220501 -0.393621 0.729516 RAD 0.0555556 + txt002 + SPHERE CENTER 0.279642 -0.368601 0.766439 RAD 0.0185185 + txt002 + SPHERE CENTER 0.281062 -0.372464 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.238665 -0.321889 0.726118 RAD 0.0185185 + txt002 + SPHERE CENTER 0.219082 -0.389758 0.803476 RAD 0.0185185 + txt002 + SPHERE CENTER 0.178104 -0.343046 0.763155 RAD 0.0185185 + txt002 + SPHERE CENTER 0.15994 -0.414778 0.766553 RAD 0.0185185 + txt002 + SPHERE CENTER 0.261479 -0.440333 0.769837 RAD 0.0185185 + txt002 + SPHERE CENTER 0.202338 -0.465353 0.732914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.262898 -0.444196 0.695877 RAD 0.0185185 + txt002 + SPHERE CENTER 0.31427 -0.31427 0.544331 RAD 0.0555556 + txt002 + SPHERE CENTER 0.367156 -0.277961 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.31427 -0.31427 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.297666 -0.252306 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.367156 -0.277961 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.297666 -0.252306 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.31427 -0.31427 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.383759 -0.339925 0.544331 RAD 0.0185185 + txt002 + SPHERE CENTER 0.330873 -0.376234 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.330873 -0.376234 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.166275 -0.191247 0.655442 RAD 0.0555556 + txt002 + SPHERE CENTER 0.20793 -0.130089 0.652044 RAD 0.0185185 + txt002 + SPHERE CENTER 0.230419 -0.192135 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.172673 -0.154295 0.591563 RAD 0.0185185 + txt002 + SPHERE CENTER 0.143787 -0.129201 0.689081 RAD 0.0185185 + txt002 + SPHERE CENTER 0.108529 -0.153407 0.6286 RAD 0.0185185 + txt002 + SPHERE CENTER 0.102131 -0.190359 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.201532 -0.167041 0.715923 RAD 0.0185185 + txt002 + SPHERE CENTER 0.159877 -0.228199 0.719322 RAD 0.0185185 + txt002 + SPHERE CENTER 0.224021 -0.229087 0.682285 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0058509 -0.451136 0.729516 RAD 0.0555556 + txt002 + SPHERE CENTER 0.0051487 -0.447081 0.803476 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0688765 -0.439178 0.766553 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0172804 -0.386138 0.763155 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0578769 -0.459039 0.766439 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0457452 -0.398096 0.726118 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0571747 -0.463094 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER -0.00628079 -0.512079 0.769837 RAD 0.0185185 + txt002 + SPHERE CENTER -0.00557859 -0.516134 0.695877 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0574471 -0.504176 0.732914 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0483751 -0.248762 0.655442 RAD 0.0555556 + txt002 + SPHERE CENTER -0.0599222 -0.183785 0.689081 RAD 0.0185185 + txt002 + SPHERE CENTER 0.00673113 -0.215921 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0172857 -0.187119 0.6286 RAD 0.0185185 + txt002 + SPHERE CENTER -0.115028 -0.216626 0.652044 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0723919 -0.21996 0.591563 RAD 0.0185185 + txt002 + SPHERE CENTER -0.103481 -0.281603 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0910116 -0.245428 0.715923 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0794645 -0.310405 0.682285 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0243582 -0.277564 0.719322 RAD 0.0185185 + txt002 + SPHERE CENTER -0.115031 -0.4293 0.544331 RAD 0.0555556 + txt002 + SPHERE CENTER -0.178985 -0.424299 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.115031 -0.4293 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.131634 -0.367336 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.178985 -0.424299 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.131634 -0.367336 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.115031 -0.4293 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER -0.162382 -0.486264 0.544331 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0984274 -0.491265 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0984274 -0.491265 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.153845 -0.574159 0.618405 RAD 0.0555556 + txt002 + SPHERE CENTER 0.202534 -0.612768 0.658726 RAD 0.0185185 + txt002 + SPHERE CENTER 0.225396 -0.554987 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.184086 -0.543919 0.678886 RAD 0.0185185 + txt002 + SPHERE CENTER 0.130984 -0.631939 0.658726 RAD 0.0185185 + txt002 + SPHERE CENTER 0.112536 -0.56309 0.678886 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0822954 -0.593331 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.172294 -0.643008 0.598245 RAD 0.0185185 + txt002 + SPHERE CENTER 0.123605 -0.6044 0.557924 RAD 0.0185185 + txt002 + SPHERE CENTER 0.195155 -0.585228 0.557924 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0329639 -0.552323 0.43322 RAD 0.0555556 + txt002 + SPHERE CENTER 0.0248832 -0.625877 0.436618 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0822954 -0.593331 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0138144 -0.584567 0.497099 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0244483 -0.584869 0.399581 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0355172 -0.54356 0.460062 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0163676 -0.511316 0.396183 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0440327 -0.593633 0.372739 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0521134 -0.520079 0.369341 RAD 0.0185185 + txt002 + SPHERE CENTER 0.101445 -0.561087 0.406378 RAD 0.0185185 + txt002 + SPHERE CENTER 0.247614 -0.494808 0.43322 RAD 0.0555556 + txt002 + SPHERE CENTER 0.313607 -0.494287 0.399581 RAD 0.0185185 + txt002 + SPHERE CENTER 0.269833 -0.434629 0.396183 RAD 0.0185185 + txt002 + SPHERE CENTER 0.302539 -0.452978 0.460062 RAD 0.0185185 + txt002 + SPHERE CENTER 0.291389 -0.554467 0.436618 RAD 0.0185185 + txt002 + SPHERE CENTER 0.28032 -0.513157 0.497099 RAD 0.0185185 + txt002 + SPHERE CENTER 0.225396 -0.554987 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.258683 -0.536117 0.372739 RAD 0.0185185 + txt002 + SPHERE CENTER 0.19269 -0.536638 0.406378 RAD 0.0185185 + txt002 + SPHERE CENTER 0.214908 -0.476459 0.369341 RAD 0.0185185 + txt002 + SPHERE CENTER -0.172546 -0.643951 1.11022e-16 RAD 0.166667 + txt002 + SPHERE CENTER -0.157543 -0.835815 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.122136 -0.871646 0.165419 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0854653 -0.82339 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.135649 -0.799077 0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER -0.194213 -0.884071 0.153697 RAD 0.0185185 + txt002 + SPHERE CENTER -0.207727 -0.811502 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.229621 -0.84824 0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.14403 -0.908384 0.104938 RAD 0.0185185 + txt002 + SPHERE CENTER -0.179437 -0.872552 0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER -0.107359 -0.860128 0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0133465 -0.69376 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.0838533 -0.674309 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0539145 -0.666287 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0325183 -0.62221 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0432853 -0.701782 0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.00804971 -0.649684 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0272215 -0.721234 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0646815 -0.745859 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0058253 -0.76531 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0347427 -0.737837 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.172546 -0.643951 0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER -0.142305 -0.61371 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.100996 -0.624779 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.153374 -0.5724 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.213855 -0.632882 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.224924 -0.591572 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.244096 -0.663122 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.161477 -0.68526 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.191718 -0.715501 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.120168 -0.696329 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.343435 -0.786005 1.25414e-16 RAD 0.0555556 + txt002 + SPHERE CENTER -0.392454 -0.82165 0.0425863 RAD 0.0185185 + txt002 + SPHERE CENTER -0.323622 -0.80984 0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.370774 -0.753118 0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER -0.412267 -0.797815 -0.0246914 RAD 0.0185185 + txt002 + SPHERE CENTER -0.390587 -0.729282 -0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER -0.363249 -0.76217 -0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.365116 -0.854538 -0.0178949 RAD 0.0185185 + txt002 + SPHERE CENTER -0.316097 -0.818893 -0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER -0.296284 -0.842728 0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER -0.358439 -0.594141 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.389119 -0.547576 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.317871 -0.566667 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.339267 -0.522591 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.429687 -0.57505 0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER -0.379835 -0.550064 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.399007 -0.621614 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.408291 -0.619127 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.37761 -0.665691 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.337042 -0.638217 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.358439 -0.594141 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.409774 -0.542042 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.379835 -0.550064 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.339267 -0.522591 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.388377 -0.586119 -0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.317871 -0.566667 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.337042 -0.638217 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.428945 -0.613592 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.37761 -0.665691 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.399007 -0.621614 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.157543 -0.835815 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.119969 -0.899353 -0.117284 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0844101 -0.836885 -0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.130205 -0.868703 -0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER -0.193102 -0.898283 -0.129006 RAD 0.0185185 + txt002 + SPHERE CENTER -0.203337 -0.867633 -0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER -0.230676 -0.834745 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.147308 -0.866465 -0.177765 RAD 0.0185185 + txt002 + SPHERE CENTER -0.184881 -0.802927 -0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER -0.111748 -0.803997 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.172546 -0.643951 -0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER -0.202787 -0.61371 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.244096 -0.624779 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.191718 -0.5724 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.131237 -0.632882 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.120168 -0.591572 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.100996 -0.663122 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.183615 -0.68526 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.153374 -0.715501 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.224924 -0.696329 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0133465 -0.69376 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.0631985 -0.668775 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.00804971 -0.649684 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0325183 -0.62221 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0845947 -0.712851 -0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0539145 -0.666287 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0347427 -0.737837 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0440268 -0.740325 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0058253 -0.76531 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0272215 -0.721234 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.471405 -0.471405 1.11022e-16 RAD 0.166667 + txt002 + SPHERE CENTER 0.690426 -0.508983 2.241e-16 RAD 0.0555556 + txt002 + SPHERE CENTER 0.755941 -0.484794 -0.0246914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.695668 -0.478434 -0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER 0.7029 -0.436283 -0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER 0.7507 -0.515343 0.0425863 RAD 0.0185185 + txt002 + SPHERE CENTER 0.697658 -0.466832 0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER 0.685185 -0.539531 0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER 0.743468 -0.557494 -0.0178949 RAD 0.0185185 + txt002 + SPHERE CENTER 0.677953 -0.581682 0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER 0.683194 -0.551134 -0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER 0.607487 -0.335322 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.629404 -0.313405 -0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.610996 -0.384191 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.558618 -0.331813 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.625895 -0.264535 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.555109 -0.282943 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.603979 -0.286452 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.678274 -0.316914 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.656357 -0.33883 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.659866 -0.3877 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.607487 -0.335322 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.659645 -0.283164 0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER 0.656357 -0.33883 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.603979 -0.286452 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.610775 -0.279656 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.555109 -0.282943 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.558618 -0.331813 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.663153 -0.332034 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.610996 -0.384191 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.659866 -0.3877 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.554344 -0.645066 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.610229 -0.668521 0.153697 RAD 0.0185185 + txt002 + SPHERE CENTER 0.622977 -0.619787 0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.585648 -0.598918 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.541596 -0.6938 0.165419 RAD 0.0185185 + txt002 + SPHERE CENTER 0.517014 -0.624197 0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER 0.48571 -0.670344 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.578925 -0.714669 0.104938 RAD 0.0185185 + txt002 + SPHERE CENTER 0.52304 -0.691213 0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.591673 -0.665934 0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER 0.471405 -0.471405 0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER 0.501645 -0.441164 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.542955 -0.452233 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.490576 -0.399854 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.430095 -0.460336 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.419026 -0.419026 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.399854 -0.490576 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.482473 -0.512714 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.452233 -0.542955 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.523783 -0.523783 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.335322 -0.607487 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.313405 -0.629404 0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.384191 -0.610996 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.331813 -0.558618 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.264535 -0.625895 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.282943 -0.555109 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.286452 -0.603979 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.316914 -0.678274 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.33883 -0.656357 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.3877 -0.659866 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.554344 -0.645066 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.616373 -0.681385 -0.129006 RAD 0.0185185 + txt002 + SPHERE CENTER 0.617144 -0.607573 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.609912 -0.649723 -0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.553573 -0.718878 -0.117284 RAD 0.0185185 + txt002 + SPHERE CENTER 0.547112 -0.687216 -0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER 0.491544 -0.682558 -0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.560805 -0.676727 -0.177765 RAD 0.0185185 + txt002 + SPHERE CENTER 0.498776 -0.640408 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.561576 -0.602915 -0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER 0.335322 -0.607487 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.283164 -0.659645 -0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER 0.33883 -0.656357 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.286452 -0.603979 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.279656 -0.610775 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.282943 -0.555109 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.331813 -0.558618 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.332034 -0.663153 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.384191 -0.610996 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.3877 -0.659866 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.471405 -0.471405 -0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER 0.441164 -0.441164 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.399854 -0.452233 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.452233 -0.399854 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.512714 -0.460336 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.523783 -0.419026 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.542955 -0.490576 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.460336 -0.512714 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.490576 -0.542955 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.419026 -0.523783 -0.222222 RAD 0.0185185 + txt002 + +END_SCENE diff --git a/examples/parallel_for/tachyon/dat/balls.dat b/examples/parallel_for/tachyon/dat/balls.dat new file mode 100644 index 0000000000..0d4bbb15bb --- /dev/null +++ b/examples/parallel_for/tachyon/dat/balls.dat @@ -0,0 +1,14804 @@ +BEGIN_SCENE + OUTFILE /dev/null + RESOLUTION 512 512 + VERBOSE 0 + +CAMERA + ZOOM 1.20711 +ASPECTRATIO 1.0 + ANTIALIASING 0 + RAYDEPTH 5 + CENTER 2.1 1.3 1.7 + VIEWDIR -0.700389 -0.433574 -0.566982 + UPDIR -0.482085 -0.298433 0.82373 + +END_CAMERA + +BACKGROUND 0.078 0.361 0.753 + +LIGHT CENTER 4 3 2 RAD 0.002 COLOR 0.5 0.5 0.5 + +LIGHT CENTER 1 -4 4 RAD 0.002 COLOR 0.5 0.5 0.5 + +LIGHT CENTER -3 1 5 RAD 0.002 COLOR 0.5 0.5 0.5 + +TEXDEF txt001 AMBIENT 0.2 DIFFUSE 0.8 SPECULAR 0 OPACITY 1 +PHONG PLASTIC 0 PHONG_SIZE 100000 + COLOR 1 0.75 0.33 + TEXFUNC 0 + +TRI + V0 12 12 -0.5 V1 -12 -12 -0.5 V2 12 -12 -0.5 + txt001 +TRI + V0 12 12 -0.5 V1 -12 12 -0.5 V2 -12 -12 -0.5 + txt001 +TEXDEF txt002 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 +PHONG PLASTIC 0.5 PHONG_SIZE 45.2776 + COLOR 1 0.9 0.7 + TEXFUNC 0 + + SPHERE CENTER 0 0 0 RAD 0.5 + txt002 + SPHERE CENTER 0.272166 0.272166 0.544331 RAD 0.166667 + txt002 + SPHERE CENTER 0.420314 0.420314 0.618405 RAD 0.0555556 + txt002 + SPHERE CENTER 0.470715 0.470715 0.598245 RAD 0.0185185 + txt002 + SPHERE CENTER 0.481689 0.481689 0.57904 RAD 0.00617284 + txt002 + SPHERE CENTER 0.475329 0.45787 0.577669 RAD 0.00617284 + txt002 + SPHERE CENTER 0.45787 0.475329 0.577669 RAD 0.00617284 + txt002 + SPHERE CENTER 0.477074 0.494534 0.599616 RAD 0.00617284 + txt002 + SPHERE CENTER 0.453255 0.488174 0.598245 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4661 0.48356 0.618821 RAD 0.00617284 + txt002 + SPHERE CENTER 0.494534 0.477074 0.599616 RAD 0.00617284 + txt002 + SPHERE CENTER 0.48356 0.4661 0.618821 RAD 0.00617284 + txt002 + SPHERE CENTER 0.488174 0.453255 0.598245 RAD 0.00617284 + txt002 + SPHERE CENTER 0.461623 0.409245 0.557924 RAD 0.0185185 + txt002 + SPHERE CENTER 0.47044 0.419664 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER 0.447954 0.425689 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.468014 0.433095 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER 0.484109 0.40322 0.549693 RAD 0.00617284 + txt002 + SPHERE CENTER 0.481683 0.416651 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER 0.475292 0.392801 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER 0.464049 0.395814 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER 0.455233 0.385395 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER 0.441563 0.401839 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.409245 0.461623 0.557924 RAD 0.0185185 + txt002 + SPHERE CENTER 0.419664 0.47044 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER 0.433095 0.468014 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER 0.425689 0.447954 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.395814 0.464049 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER 0.401839 0.441563 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.385395 0.455233 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40322 0.484109 0.549693 RAD 0.00617284 + txt002 + SPHERE CENTER 0.392801 0.475292 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER 0.416651 0.481683 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER 0.429405 0.481784 0.658726 RAD 0.0185185 + txt002 + SPHERE CENTER 0.441197 0.503434 0.660098 RAD 0.00617284 + txt002 + SPHERE CENTER 0.452601 0.483752 0.650495 RAD 0.00617284 + txt002 + SPHERE CENTER 0.434161 0.494577 0.63815 RAD 0.00617284 + txt002 + SPHERE CENTER 0.418001 0.501466 0.668328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.410965 0.492609 0.64638 RAD 0.00617284 + txt002 + SPHERE CENTER 0.406209 0.479816 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436441 0.490641 0.680674 RAD 0.00617284 + txt002 + SPHERE CENTER 0.42465 0.46899 0.679302 RAD 0.00617284 + txt002 + SPHERE CENTER 0.447846 0.470958 0.671072 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367935 0.472692 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.36376 0.497028 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.383056 0.487812 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.383056 0.487812 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.34864 0.481907 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367935 0.472692 0.593714 RAD 0.00617284 + txt002 + SPHERE CENTER 0.352815 0.457572 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.34864 0.481907 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.352815 0.457572 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367935 0.472692 0.643096 RAD 0.00617284 + txt002 + SPHERE CENTER 0.379004 0.431383 0.678886 RAD 0.0185185 + txt002 + SPHERE CENTER 0.376578 0.444814 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399064 0.438789 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER 0.385395 0.455233 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356518 0.437408 0.687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.365335 0.447826 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.358944 0.423976 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.370187 0.420964 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.372614 0.407532 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER 0.392673 0.414939 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER 0.481784 0.429405 0.658726 RAD 0.0185185 + txt002 + SPHERE CENTER 0.503434 0.441197 0.660098 RAD 0.00617284 + txt002 + SPHERE CENTER 0.494577 0.434161 0.63815 RAD 0.00617284 + txt002 + SPHERE CENTER 0.483752 0.452601 0.650495 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490641 0.436441 0.680674 RAD 0.00617284 + txt002 + SPHERE CENTER 0.470958 0.447846 0.671072 RAD 0.00617284 + txt002 + SPHERE CENTER 0.46899 0.42465 0.679302 RAD 0.00617284 + txt002 + SPHERE CENTER 0.501466 0.418001 0.668328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.479816 0.406209 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER 0.492609 0.410965 0.64638 RAD 0.00617284 + txt002 + SPHERE CENTER 0.431383 0.379004 0.678886 RAD 0.0185185 + txt002 + SPHERE CENTER 0.444814 0.376578 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.455233 0.385395 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER 0.438789 0.399064 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER 0.420964 0.370187 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.414939 0.392673 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER 0.407532 0.372614 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER 0.437408 0.356518 0.687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.423976 0.358944 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.447826 0.365335 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472692 0.367935 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.497028 0.36376 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.487812 0.383056 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.487812 0.383056 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.481907 0.34864 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472692 0.367935 0.643096 RAD 0.00617284 + txt002 + SPHERE CENTER 0.457572 0.352815 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.481907 0.34864 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.457572 0.352815 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472692 0.367935 0.593714 RAD 0.00617284 + txt002 + SPHERE CENTER 0.461844 0.304709 0.43322 RAD 0.0555556 + txt002 + SPHERE CENTER 0.492085 0.33495 0.372739 RAD 0.0185185 + txt002 + SPHERE CENTER 0.492085 0.33495 0.348047 RAD 0.00617284 + txt002 + SPHERE CENTER 0.488469 0.313874 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.471009 0.331334 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.495701 0.356025 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.474625 0.352409 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER 0.495701 0.356025 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.51316 0.338566 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.51316 0.338566 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.509544 0.31749 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER 0.424345 0.305171 0.369341 RAD 0.0185185 + txt002 + SPHERE CENTER 0.40568 0.315605 0.356995 RAD 0.00617284 + txt002 + SPHERE CENTER 0.403931 0.312107 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.419383 0.329161 0.372427 RAD 0.00617284 + txt002 + SPHERE CENTER 0.426095 0.30867 0.344961 RAD 0.00617284 + txt002 + SPHERE CENTER 0.439797 0.322225 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.444759 0.298235 0.357307 RAD 0.00617284 + txt002 + SPHERE CENTER 0.410643 0.291616 0.353908 RAD 0.00617284 + txt002 + SPHERE CENTER 0.429307 0.281181 0.366254 RAD 0.00617284 + txt002 + SPHERE CENTER 0.408893 0.288117 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.435193 0.368397 0.406378 RAD 0.0185185 + txt002 + SPHERE CENTER 0.440864 0.389015 0.394032 RAD 0.00617284 + txt002 + SPHERE CENTER 0.457301 0.37895 0.409464 RAD 0.00617284 + txt002 + SPHERE CENTER 0.451857 0.367697 0.388171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.418755 0.378463 0.390945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.429748 0.357145 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.413085 0.357845 0.403291 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4242 0.389715 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.418529 0.369098 0.424584 RAD 0.00617284 + txt002 + SPHERE CENTER 0.440637 0.37965 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER 0.529584 0.334488 0.436618 RAD 0.0185185 + txt002 + SPHERE CENTER 0.546497 0.347572 0.424272 RAD 0.00617284 + txt002 + SPHERE CENTER 0.532117 0.331508 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522481 0.352406 0.421186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.543964 0.350552 0.448652 RAD 0.00617284 + txt002 + SPHERE CENTER 0.519948 0.355387 0.445566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.52705 0.337468 0.460998 RAD 0.00617284 + txt002 + SPHERE CENTER 0.5536 0.329654 0.439705 RAD 0.00617284 + txt002 + SPHERE CENTER 0.536686 0.31657 0.45205 RAD 0.00617284 + txt002 + SPHERE CENTER 0.53922 0.313589 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472692 0.367935 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.48474 0.389488 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.495668 0.369235 0.46131 RAD 0.00617284 + txt002 + SPHERE CENTER 0.477004 0.379669 0.448964 RAD 0.00617284 + txt002 + SPHERE CENTER 0.461764 0.388188 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER 0.454027 0.37837 0.457911 RAD 0.00617284 + txt002 + SPHERE CENTER 0.449715 0.366636 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER 0.480429 0.377754 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.46838 0.356202 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.491357 0.357501 0.482603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.499343 0.304247 0.497099 RAD 0.0185185 + txt002 + SPHERE CENTER 0.518259 0.314219 0.509445 RAD 0.00617284 + txt002 + SPHERE CENTER 0.519922 0.310678 0.485065 RAD 0.00617284 + txt002 + SPHERE CENTER 0.504895 0.328108 0.494013 RAD 0.00617284 + txt002 + SPHERE CENTER 0.49768 0.307788 0.521479 RAD 0.00617284 + txt002 + SPHERE CENTER 0.484316 0.321677 0.506047 RAD 0.00617284 + txt002 + SPHERE CENTER 0.478764 0.297816 0.509133 RAD 0.00617284 + txt002 + SPHERE CENTER 0.512708 0.290358 0.512531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.493791 0.280387 0.500186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.51437 0.286818 0.488152 RAD 0.00617284 + txt002 + SPHERE CENTER 0.518736 0.271262 0.399581 RAD 0.0185185 + txt002 + SPHERE CENTER 0.539811 0.274878 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.520873 0.290418 0.384149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.533373 0.290264 0.405442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.537674 0.255722 0.402668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.531235 0.271108 0.420874 RAD 0.00617284 + txt002 + SPHERE CENTER 0.516598 0.252106 0.415013 RAD 0.00617284 + txt002 + SPHERE CENTER 0.525174 0.255876 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.504099 0.25226 0.39372 RAD 0.00617284 + txt002 + SPHERE CENTER 0.506236 0.271416 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.488495 0.241021 0.460062 RAD 0.0185185 + txt002 + SPHERE CENTER 0.50716 0.230587 0.472408 RAD 0.00617284 + txt002 + SPHERE CENTER 0.51153 0.24936 0.456976 RAD 0.00617284 + txt002 + SPHERE CENTER 0.499694 0.253381 0.478269 RAD 0.00617284 + txt002 + SPHERE CENTER 0.484125 0.222248 0.475494 RAD 0.00617284 + txt002 + SPHERE CENTER 0.476659 0.245042 0.481355 RAD 0.00617284 + txt002 + SPHERE CENTER 0.46546 0.232683 0.463149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.495961 0.218227 0.454201 RAD 0.00617284 + txt002 + SPHERE CENTER 0.477296 0.228661 0.441856 RAD 0.00617284 + txt002 + SPHERE CENTER 0.500331 0.237 0.438769 RAD 0.00617284 + txt002 + SPHERE CENTER 0.450996 0.241483 0.396183 RAD 0.0185185 + txt002 + SPHERE CENTER 0.455172 0.217147 0.396183 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472226 0.232599 0.40513 RAD 0.00617284 + txt002 + SPHERE CENTER 0.45115 0.228983 0.417476 RAD 0.00617284 + txt002 + SPHERE CENTER 0.433942 0.226031 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.429921 0.237867 0.408529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.429767 0.250367 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.455018 0.229647 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER 0.450842 0.253983 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472072 0.245099 0.383837 RAD 0.00617284 + txt002 + SPHERE CENTER 0.304709 0.461844 0.43322 RAD 0.0555556 + txt002 + SPHERE CENTER 0.33495 0.492085 0.372739 RAD 0.0185185 + txt002 + SPHERE CENTER 0.33495 0.492085 0.348047 RAD 0.00617284 + txt002 + SPHERE CENTER 0.331334 0.471009 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.313874 0.488469 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.338566 0.51316 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31749 0.509544 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER 0.338566 0.51316 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356025 0.495701 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356025 0.495701 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.352409 0.474625 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER 0.368397 0.435193 0.406378 RAD 0.0185185 + txt002 + SPHERE CENTER 0.389015 0.440864 0.394032 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367697 0.451857 0.388171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37895 0.457301 0.409464 RAD 0.00617284 + txt002 + SPHERE CENTER 0.389715 0.4242 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37965 0.440637 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER 0.369098 0.418529 0.424584 RAD 0.00617284 + txt002 + SPHERE CENTER 0.378463 0.418755 0.390945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.357845 0.413085 0.403291 RAD 0.00617284 + txt002 + SPHERE CENTER 0.357145 0.429748 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.305171 0.424345 0.369341 RAD 0.0185185 + txt002 + SPHERE CENTER 0.315605 0.40568 0.356995 RAD 0.00617284 + txt002 + SPHERE CENTER 0.329161 0.419383 0.372427 RAD 0.00617284 + txt002 + SPHERE CENTER 0.312107 0.403931 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.291616 0.410643 0.353908 RAD 0.00617284 + txt002 + SPHERE CENTER 0.288117 0.408893 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.281181 0.429307 0.366254 RAD 0.00617284 + txt002 + SPHERE CENTER 0.30867 0.426095 0.344961 RAD 0.00617284 + txt002 + SPHERE CENTER 0.298235 0.444759 0.357307 RAD 0.00617284 + txt002 + SPHERE CENTER 0.322225 0.439797 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271262 0.518736 0.399581 RAD 0.0185185 + txt002 + SPHERE CENTER 0.274878 0.539811 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.290264 0.533373 0.405442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.290418 0.520873 0.384149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.255876 0.525174 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271416 0.506236 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.25226 0.504099 0.39372 RAD 0.00617284 + txt002 + SPHERE CENTER 0.255722 0.537674 0.402668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.252106 0.516598 0.415013 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271108 0.531235 0.420874 RAD 0.00617284 + txt002 + SPHERE CENTER 0.241483 0.450996 0.396183 RAD 0.0185185 + txt002 + SPHERE CENTER 0.217147 0.455172 0.396183 RAD 0.00617284 + txt002 + SPHERE CENTER 0.228983 0.45115 0.417476 RAD 0.00617284 + txt002 + SPHERE CENTER 0.232599 0.472226 0.40513 RAD 0.00617284 + txt002 + SPHERE CENTER 0.229647 0.455018 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER 0.245099 0.472072 0.383837 RAD 0.00617284 + txt002 + SPHERE CENTER 0.253983 0.450842 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER 0.226031 0.433942 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.250367 0.429767 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.237867 0.429921 0.408529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.241021 0.488495 0.460062 RAD 0.0185185 + txt002 + SPHERE CENTER 0.230587 0.50716 0.472408 RAD 0.00617284 + txt002 + SPHERE CENTER 0.253381 0.499694 0.478269 RAD 0.00617284 + txt002 + SPHERE CENTER 0.24936 0.51153 0.456976 RAD 0.00617284 + txt002 + SPHERE CENTER 0.218227 0.495961 0.454201 RAD 0.00617284 + txt002 + SPHERE CENTER 0.237 0.500331 0.438769 RAD 0.00617284 + txt002 + SPHERE CENTER 0.228661 0.477296 0.441856 RAD 0.00617284 + txt002 + SPHERE CENTER 0.222248 0.484125 0.475494 RAD 0.00617284 + txt002 + SPHERE CENTER 0.232683 0.46546 0.463149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.245042 0.476659 0.481355 RAD 0.00617284 + txt002 + SPHERE CENTER 0.334488 0.529584 0.436618 RAD 0.0185185 + txt002 + SPHERE CENTER 0.347572 0.546497 0.424272 RAD 0.00617284 + txt002 + SPHERE CENTER 0.352406 0.522481 0.421186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.331508 0.532117 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.329654 0.5536 0.439705 RAD 0.00617284 + txt002 + SPHERE CENTER 0.313589 0.53922 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31657 0.536686 0.45205 RAD 0.00617284 + txt002 + SPHERE CENTER 0.350552 0.543964 0.448652 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337468 0.52705 0.460998 RAD 0.00617284 + txt002 + SPHERE CENTER 0.355387 0.519948 0.445566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.304247 0.499343 0.497099 RAD 0.0185185 + txt002 + SPHERE CENTER 0.314219 0.518259 0.509445 RAD 0.00617284 + txt002 + SPHERE CENTER 0.328108 0.504895 0.494013 RAD 0.00617284 + txt002 + SPHERE CENTER 0.310678 0.519922 0.485065 RAD 0.00617284 + txt002 + SPHERE CENTER 0.290358 0.512708 0.512531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.286818 0.51437 0.488152 RAD 0.00617284 + txt002 + SPHERE CENTER 0.280387 0.493791 0.500186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307788 0.49768 0.521479 RAD 0.00617284 + txt002 + SPHERE CENTER 0.297816 0.478764 0.509133 RAD 0.00617284 + txt002 + SPHERE CENTER 0.321677 0.484316 0.506047 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367935 0.472692 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.389488 0.48474 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.379669 0.477004 0.448964 RAD 0.00617284 + txt002 + SPHERE CENTER 0.369235 0.495668 0.46131 RAD 0.00617284 + txt002 + SPHERE CENTER 0.377754 0.480429 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.357501 0.491357 0.482603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356202 0.46838 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.388188 0.461764 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER 0.366636 0.449715 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37837 0.454027 0.457911 RAD 0.00617284 + txt002 + SPHERE CENTER 0.230635 0.38777 0.729516 RAD 0.0555556 + txt002 + SPHERE CENTER 0.2506 0.446614 0.769837 RAD 0.0185185 + txt002 + SPHERE CENTER 0.264242 0.467193 0.770086 RAD 0.00617284 + txt002 + SPHERE CENTER 0.272442 0.447086 0.758332 RAD 0.00617284 + txt002 + SPHERE CENTER 0.253384 0.459832 0.749168 RAD 0.00617284 + txt002 + SPHERE CENTER 0.2424 0.46672 0.781591 RAD 0.00617284 + txt002 + SPHERE CENTER 0.231541 0.459359 0.760673 RAD 0.00617284 + txt002 + SPHERE CENTER 0.228758 0.446141 0.781342 RAD 0.00617284 + txt002 + SPHERE CENTER 0.261459 0.453974 0.790755 RAD 0.00617284 + txt002 + SPHERE CENTER 0.247817 0.433396 0.790506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.269659 0.433868 0.779001 RAD 0.00617284 + txt002 + SPHERE CENTER 0.301839 0.407906 0.732914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.319874 0.420236 0.72141 RAD 0.00617284 + txt002 + SPHERE CENTER 0.303021 0.407886 0.708251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.296625 0.428474 0.720288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318692 0.420256 0.746073 RAD 0.00617284 + txt002 + SPHERE CENTER 0.295442 0.428494 0.744951 RAD 0.00617284 + txt002 + SPHERE CENTER 0.300656 0.407926 0.757577 RAD 0.00617284 + txt002 + SPHERE CENTER 0.325088 0.399668 0.734036 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307053 0.387338 0.745541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.308235 0.387318 0.720878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.253236 0.449775 0.695877 RAD 0.0185185 + txt002 + SPHERE CENTER 0.263032 0.459076 0.675209 RAD 0.00617284 + txt002 + SPHERE CENTER 0.270029 0.436804 0.683251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.247378 0.440021 0.673964 RAD 0.00617284 + txt002 + SPHERE CENTER 0.246239 0.472047 0.687835 RAD 0.00617284 + txt002 + SPHERE CENTER 0.230585 0.452992 0.68659 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236443 0.462746 0.708504 RAD 0.00617284 + txt002 + SPHERE CENTER 0.26889 0.468829 0.697123 RAD 0.00617284 + txt002 + SPHERE CENTER 0.259094 0.459528 0.717791 RAD 0.00617284 + txt002 + SPHERE CENTER 0.275887 0.446557 0.705165 RAD 0.00617284 + txt002 + SPHERE CENTER 0.179397 0.426478 0.766439 RAD 0.0185185 + txt002 + SPHERE CENTER 0.174744 0.447688 0.778193 RAD 0.00617284 + txt002 + SPHERE CENTER 0.197172 0.437457 0.779597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.1895 0.447523 0.758396 RAD 0.00617284 + txt002 + SPHERE CENTER 0.156968 0.436708 0.765035 RAD 0.00617284 + txt002 + SPHERE CENTER 0.171724 0.436544 0.745238 RAD 0.00617284 + txt002 + SPHERE CENTER 0.161621 0.415499 0.753281 RAD 0.00617284 + txt002 + SPHERE CENTER 0.164641 0.426642 0.786236 RAD 0.00617284 + txt002 + SPHERE CENTER 0.169293 0.405432 0.774481 RAD 0.00617284 + txt002 + SPHERE CENTER 0.187069 0.416412 0.787639 RAD 0.00617284 + txt002 + SPHERE CENTER 0.182032 0.429639 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.177682 0.45215 0.683315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.190087 0.449636 0.704516 RAD 0.00617284 + txt002 + SPHERE CENTER 0.200611 0.44299 0.683192 RAD 0.00617284 + txt002 + SPHERE CENTER 0.169628 0.432153 0.671279 RAD 0.00617284 + txt002 + SPHERE CENTER 0.192556 0.422992 0.671155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.173978 0.409641 0.680442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.159104 0.438799 0.692603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.163454 0.416288 0.701767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.171508 0.436286 0.713804 RAD 0.00617284 + txt002 + SPHERE CENTER 0.159431 0.367634 0.726118 RAD 0.0185185 + txt002 + SPHERE CENTER 0.13761 0.368692 0.737623 RAD 0.00617284 + txt002 + SPHERE CENTER 0.158434 0.366998 0.750781 RAD 0.00617284 + txt002 + SPHERE CENTER 0.153102 0.387887 0.738744 RAD 0.00617284 + txt002 + SPHERE CENTER 0.138607 0.369329 0.71296 RAD 0.00617284 + txt002 + SPHERE CENTER 0.154099 0.388523 0.714081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.160429 0.36827 0.701455 RAD 0.00617284 + txt002 + SPHERE CENTER 0.14394 0.34844 0.724997 RAD 0.00617284 + txt002 + SPHERE CENTER 0.165761 0.347381 0.713492 RAD 0.00617284 + txt002 + SPHERE CENTER 0.164764 0.346745 0.738155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.227999 0.384609 0.803476 RAD 0.0185185 + txt002 + SPHERE CENTER 0.237348 0.393812 0.824394 RAD 0.00617284 + txt002 + SPHERE CENTER 0.251829 0.390976 0.804597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.234368 0.408432 0.804721 RAD 0.00617284 + txt002 + SPHERE CENTER 0.213518 0.387445 0.823273 RAD 0.00617284 + txt002 + SPHERE CENTER 0.210538 0.402066 0.8036 RAD 0.00617284 + txt002 + SPHERE CENTER 0.204169 0.378242 0.802355 RAD 0.00617284 + txt002 + SPHERE CENTER 0.23098 0.369989 0.823149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.221631 0.360786 0.802231 RAD 0.00617284 + txt002 + SPHERE CENTER 0.245461 0.367152 0.803352 RAD 0.00617284 + txt002 + SPHERE CENTER 0.208034 0.325765 0.763155 RAD 0.0185185 + txt002 + SPHERE CENTER 0.209548 0.312342 0.783824 RAD 0.00617284 + txt002 + SPHERE CENTER 0.229235 0.324887 0.775781 RAD 0.00617284 + txt002 + SPHERE CENTER 0.209827 0.337 0.785069 RAD 0.00617284 + txt002 + SPHERE CENTER 0.188347 0.31322 0.771198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.188626 0.337878 0.772443 RAD 0.00617284 + txt002 + SPHERE CENTER 0.186834 0.326643 0.750529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.207755 0.301107 0.76191 RAD 0.00617284 + txt002 + SPHERE CENTER 0.206242 0.31453 0.741241 RAD 0.00617284 + txt002 + SPHERE CENTER 0.227442 0.313652 0.753867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.279238 0.345901 0.766553 RAD 0.0185185 + txt002 + SPHERE CENTER 0.302145 0.344931 0.775717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.297823 0.356827 0.754517 RAD 0.00617284 + txt002 + SPHERE CENTER 0.289691 0.366251 0.775841 RAD 0.00617284 + txt002 + SPHERE CENTER 0.28356 0.334005 0.787754 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271106 0.355325 0.787878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.260653 0.334975 0.77859 RAD 0.00617284 + txt002 + SPHERE CENTER 0.291692 0.324581 0.766429 RAD 0.00617284 + txt002 + SPHERE CENTER 0.268785 0.325551 0.757266 RAD 0.00617284 + txt002 + SPHERE CENTER 0.28737 0.336477 0.745229 RAD 0.00617284 + txt002 + SPHERE CENTER 0.115031 0.4293 0.544331 RAD 0.0555556 + txt002 + SPHERE CENTER 0.102505 0.502308 0.544331 RAD 0.0185185 + txt002 + SPHERE CENTER 0.110567 0.524146 0.536101 RAD 0.00617284 + txt002 + SPHERE CENTER 0.126738 0.506465 0.542066 RAD 0.00617284 + txt002 + SPHERE CENTER 0.112687 0.504055 0.521905 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0863343 0.519988 0.538366 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0884544 0.499897 0.524171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0782715 0.49815 0.546597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.100385 0.522399 0.558526 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0923218 0.500561 0.566757 RAD 0.00617284 + txt002 + SPHERE CENTER 0.116555 0.504718 0.564491 RAD 0.00617284 + txt002 + SPHERE CENTER 0.160392 0.474661 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.177777 0.492047 0.579103 RAD 0.00617284 + txt002 + SPHERE CENTER 0.176681 0.473492 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.159222 0.490951 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.161488 0.493217 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.142932 0.492121 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.144102 0.475831 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.178947 0.475757 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.161561 0.458371 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.177851 0.457202 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.160392 0.474661 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.167697 0.481967 0.484868 RAD 0.00617284 + txt002 + SPHERE CENTER 0.161561 0.458371 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.144102 0.475831 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.166528 0.498257 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.142932 0.492121 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.159222 0.490951 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.183987 0.480797 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.176681 0.473492 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.177851 0.457202 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0571437 0.456947 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0450372 0.477623 0.501329 RAD 0.00617284 + txt002 + SPHERE CENTER 0.055591 0.475469 0.523547 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0696413 0.47788 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0465898 0.4591 0.485076 RAD 0.00617284 + txt002 + SPHERE CENTER 0.071194 0.459357 0.487134 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0586963 0.438424 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0325396 0.45669 0.505236 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0446461 0.436013 0.511201 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0430934 0.454536 0.527454 RAD 0.00617284 + txt002 + SPHERE CENTER 0.115031 0.4293 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.10495 0.439381 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0911807 0.435691 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.10864 0.45315 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.128801 0.43299 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.13249 0.44676 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.138881 0.42291 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.111341 0.415531 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.121421 0.40545 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0975713 0.411841 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0696698 0.383939 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.052284 0.366554 0.509559 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0708393 0.36765 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0533799 0.385109 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0511144 0.382844 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0522103 0.401399 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0685002 0.400229 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0685739 0.365384 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0859596 0.38277 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0871292 0.36648 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0571437 0.456947 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0493251 0.475575 0.595564 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0725262 0.467381 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.06557 0.479825 0.577461 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0339426 0.465141 0.57931 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0501875 0.46939 0.561208 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0417612 0.446512 0.565115 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0408988 0.452697 0.599471 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0487174 0.434069 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0640999 0.444504 0.601529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0696698 0.383939 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0623642 0.376634 0.603794 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0859596 0.38277 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0685002 0.400229 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0460743 0.377803 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0522103 0.401399 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0533799 0.385109 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0635337 0.360344 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0708393 0.36765 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0871292 0.36648 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.115031 0.4293 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.125111 0.439381 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.138881 0.435691 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.121421 0.45315 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.101261 0.43299 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0975713 0.44676 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0911807 0.42291 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.11872 0.415531 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.10864 0.40545 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.13249 0.411841 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.082487 0.239622 0.655442 RAD 0.0555556 + txt002 + SPHERE CENTER 0.0438957 0.258053 0.715923 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0426858 0.273525 0.735128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.064638 0.265928 0.726759 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0510334 0.281546 0.713318 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0219434 0.26565 0.724292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.030291 0.273671 0.702483 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0231533 0.250178 0.705088 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0355481 0.250032 0.737733 RAD 0.00617284 + txt002 + SPHERE CENTER 0.036758 0.23456 0.718528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0575003 0.242434 0.729364 RAD 0.00617284 + txt002 + SPHERE CENTER 0.117687 0.252557 0.719322 RAD 0.0185185 + txt002 + SPHERE CENTER 0.135677 0.265544 0.730157 RAD 0.00617284 + txt002 + SPHERE CENTER 0.138361 0.25778 0.706872 RAD 0.00617284 + txt002 + SPHERE CENTER 0.12224 0.275732 0.71212 RAD 0.00617284 + txt002 + SPHERE CENTER 0.115003 0.26032 0.742607 RAD 0.00617284 + txt002 + SPHERE CENTER 0.101567 0.270508 0.72457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.097014 0.247334 0.731771 RAD 0.00617284 + txt002 + SPHERE CENTER 0.131123 0.242369 0.737359 RAD 0.00617284 + txt002 + SPHERE CENTER 0.113134 0.229382 0.726523 RAD 0.00617284 + txt002 + SPHERE CENTER 0.133808 0.234605 0.714074 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0863845 0.308551 0.682285 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0971427 0.330622 0.67968 RAD 0.00617284 + txt002 + SPHERE CENTER 0.109956 0.310023 0.675083 RAD 0.00617284 + txt002 + SPHERE CENTER 0.091905 0.317013 0.659755 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0735708 0.329151 0.686881 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0683331 0.315541 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0628126 0.30708 0.689486 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0916222 0.322161 0.702209 RAD 0.00617284 + txt002 + SPHERE CENTER 0.080864 0.30009 0.704814 RAD 0.00617284 + txt002 + SPHERE CENTER 0.104436 0.301561 0.697613 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00869528 0.245118 0.652044 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0110117 0.257416 0.660413 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00823377 0.253319 0.675329 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0102865 0.269325 0.656641 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0105502 0.249215 0.637128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.010748 0.261124 0.633356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00915679 0.236916 0.628759 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0126029 0.233209 0.655816 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00710408 0.22091 0.647447 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00664257 0.229111 0.670732 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0511841 0.295616 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0555846 0.315856 0.604965 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0705987 0.309941 0.623653 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0705297 0.296292 0.603077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.03617 0.301531 0.599717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0511152 0.281968 0.597829 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0317696 0.281291 0.613157 RAD 0.00617284 + txt002 + SPHERE CENTER 0.036239 0.31518 0.620293 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0318385 0.29494 0.633733 RAD 0.00617284 + txt002 + SPHERE CENTER 0.051253 0.309265 0.638981 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0472866 0.226687 0.591563 RAD 0.0185185 + txt002 + SPHERE CENTER 0.025169 0.224935 0.580727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0281502 0.217281 0.604012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0288111 0.241399 0.598764 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0443054 0.234341 0.568278 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0479475 0.250805 0.586315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.066423 0.236092 0.579113 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0436445 0.210223 0.573526 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0657621 0.211974 0.584361 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0466257 0.202569 0.596811 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0399982 0.189123 0.689081 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0335228 0.179527 0.71089 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0567332 0.187058 0.707118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0385291 0.203632 0.709006 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0167878 0.181593 0.692853 RAD 0.00617284 + txt002 + SPHERE CENTER 0.021794 0.205698 0.690969 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0232631 0.191189 0.671044 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0349919 0.165018 0.690965 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0414672 0.174615 0.669156 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0582023 0.172549 0.687193 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0785895 0.170692 0.6286 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0867911 0.147549 0.631205 RAD 0.00617284 + txt002 + SPHERE CENTER 0.101845 0.166573 0.635801 RAD 0.00617284 + txt002 + SPHERE CENTER 0.083121 0.161663 0.65113 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0635354 0.151669 0.624003 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0598652 0.165782 0.643928 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0553337 0.174812 0.621398 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0822597 0.156579 0.608675 RAD 0.00617284 + txt002 + SPHERE CENTER 0.074058 0.179722 0.60607 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0973138 0.175603 0.613272 RAD 0.00617284 + txt002 + SPHERE CENTER 0.11379 0.183628 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.133336 0.176775 0.705919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.136161 0.192663 0.687231 RAD 0.00617284 + txt002 + SPHERE CENTER 0.124499 0.199753 0.707807 RAD 0.00617284 + txt002 + SPHERE CENTER 0.110965 0.167739 0.711167 RAD 0.00617284 + txt002 + SPHERE CENTER 0.102127 0.190718 0.713055 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0914184 0.174592 0.697727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.122627 0.160649 0.690591 RAD 0.00617284 + txt002 + SPHERE CENTER 0.103081 0.167502 0.677151 RAD 0.00617284 + txt002 + SPHERE CENTER 0.125452 0.176537 0.671903 RAD 0.00617284 + txt002 + SPHERE CENTER 0.38777 0.230635 0.729516 RAD 0.0555556 + txt002 + SPHERE CENTER 0.446614 0.2506 0.769837 RAD 0.0185185 + txt002 + SPHERE CENTER 0.467193 0.264242 0.770086 RAD 0.00617284 + txt002 + SPHERE CENTER 0.459832 0.253384 0.749168 RAD 0.00617284 + txt002 + SPHERE CENTER 0.447086 0.272442 0.758332 RAD 0.00617284 + txt002 + SPHERE CENTER 0.453974 0.261459 0.790755 RAD 0.00617284 + txt002 + SPHERE CENTER 0.433868 0.269659 0.779001 RAD 0.00617284 + txt002 + SPHERE CENTER 0.433396 0.247817 0.790506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.46672 0.2424 0.781591 RAD 0.00617284 + txt002 + SPHERE CENTER 0.446141 0.228758 0.781342 RAD 0.00617284 + txt002 + SPHERE CENTER 0.459359 0.231541 0.760673 RAD 0.00617284 + txt002 + SPHERE CENTER 0.449775 0.253236 0.695877 RAD 0.0185185 + txt002 + SPHERE CENTER 0.459076 0.263032 0.675209 RAD 0.00617284 + txt002 + SPHERE CENTER 0.440021 0.247378 0.673964 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436804 0.270029 0.683251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.468829 0.26889 0.697123 RAD 0.00617284 + txt002 + SPHERE CENTER 0.446557 0.275887 0.705165 RAD 0.00617284 + txt002 + SPHERE CENTER 0.459528 0.259094 0.717791 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472047 0.246239 0.687835 RAD 0.00617284 + txt002 + SPHERE CENTER 0.462746 0.236443 0.708504 RAD 0.00617284 + txt002 + SPHERE CENTER 0.452992 0.230585 0.68659 RAD 0.00617284 + txt002 + SPHERE CENTER 0.407906 0.301839 0.732914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.420236 0.319874 0.72141 RAD 0.00617284 + txt002 + SPHERE CENTER 0.428474 0.296625 0.720288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.407886 0.303021 0.708251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399668 0.325088 0.734036 RAD 0.00617284 + txt002 + SPHERE CENTER 0.387318 0.308235 0.720878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.387338 0.307053 0.745541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.420256 0.318692 0.746073 RAD 0.00617284 + txt002 + SPHERE CENTER 0.407926 0.300656 0.757577 RAD 0.00617284 + txt002 + SPHERE CENTER 0.428494 0.295442 0.744951 RAD 0.00617284 + txt002 + SPHERE CENTER 0.384609 0.227999 0.803476 RAD 0.0185185 + txt002 + SPHERE CENTER 0.393812 0.237348 0.824394 RAD 0.00617284 + txt002 + SPHERE CENTER 0.408432 0.234368 0.804721 RAD 0.00617284 + txt002 + SPHERE CENTER 0.390976 0.251829 0.804597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.369989 0.23098 0.823149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367152 0.245461 0.803352 RAD 0.00617284 + txt002 + SPHERE CENTER 0.360786 0.221631 0.802231 RAD 0.00617284 + txt002 + SPHERE CENTER 0.387445 0.213518 0.823273 RAD 0.00617284 + txt002 + SPHERE CENTER 0.378242 0.204169 0.802355 RAD 0.00617284 + txt002 + SPHERE CENTER 0.402066 0.210538 0.8036 RAD 0.00617284 + txt002 + SPHERE CENTER 0.345901 0.279238 0.766553 RAD 0.0185185 + txt002 + SPHERE CENTER 0.344931 0.302145 0.775717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.366251 0.289691 0.775841 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356827 0.297823 0.754517 RAD 0.00617284 + txt002 + SPHERE CENTER 0.324581 0.291692 0.766429 RAD 0.00617284 + txt002 + SPHERE CENTER 0.336477 0.28737 0.745229 RAD 0.00617284 + txt002 + SPHERE CENTER 0.325551 0.268785 0.757266 RAD 0.00617284 + txt002 + SPHERE CENTER 0.334005 0.28356 0.787754 RAD 0.00617284 + txt002 + SPHERE CENTER 0.334975 0.260653 0.77859 RAD 0.00617284 + txt002 + SPHERE CENTER 0.355325 0.271106 0.787878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.325765 0.208034 0.763155 RAD 0.0185185 + txt002 + SPHERE CENTER 0.312342 0.209548 0.783824 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337 0.209827 0.785069 RAD 0.00617284 + txt002 + SPHERE CENTER 0.324887 0.229235 0.775781 RAD 0.00617284 + txt002 + SPHERE CENTER 0.301107 0.207755 0.76191 RAD 0.00617284 + txt002 + SPHERE CENTER 0.313652 0.227442 0.753867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31453 0.206242 0.741241 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31322 0.188347 0.771198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.326643 0.186834 0.750529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337878 0.188626 0.772443 RAD 0.00617284 + txt002 + SPHERE CENTER 0.426478 0.179397 0.766439 RAD 0.0185185 + txt002 + SPHERE CENTER 0.447688 0.174744 0.778193 RAD 0.00617284 + txt002 + SPHERE CENTER 0.447523 0.1895 0.758396 RAD 0.00617284 + txt002 + SPHERE CENTER 0.437457 0.197172 0.779597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.426642 0.164641 0.786236 RAD 0.00617284 + txt002 + SPHERE CENTER 0.416412 0.187069 0.787639 RAD 0.00617284 + txt002 + SPHERE CENTER 0.405432 0.169293 0.774481 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436708 0.156968 0.765035 RAD 0.00617284 + txt002 + SPHERE CENTER 0.415499 0.161621 0.753281 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436544 0.171724 0.745238 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367634 0.159431 0.726118 RAD 0.0185185 + txt002 + SPHERE CENTER 0.368692 0.13761 0.737623 RAD 0.00617284 + txt002 + SPHERE CENTER 0.387887 0.153102 0.738744 RAD 0.00617284 + txt002 + SPHERE CENTER 0.366998 0.158434 0.750781 RAD 0.00617284 + txt002 + SPHERE CENTER 0.34844 0.14394 0.724997 RAD 0.00617284 + txt002 + SPHERE CENTER 0.346745 0.164764 0.738155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.347381 0.165761 0.713492 RAD 0.00617284 + txt002 + SPHERE CENTER 0.369329 0.138607 0.71296 RAD 0.00617284 + txt002 + SPHERE CENTER 0.36827 0.160429 0.701455 RAD 0.00617284 + txt002 + SPHERE CENTER 0.388523 0.154099 0.714081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.429639 0.182032 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.45215 0.177682 0.683315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.44299 0.200611 0.683192 RAD 0.00617284 + txt002 + SPHERE CENTER 0.449636 0.190087 0.704516 RAD 0.00617284 + txt002 + SPHERE CENTER 0.438799 0.159104 0.692603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436286 0.171508 0.713804 RAD 0.00617284 + txt002 + SPHERE CENTER 0.416288 0.163454 0.701767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.432153 0.169628 0.671279 RAD 0.00617284 + txt002 + SPHERE CENTER 0.409641 0.173978 0.680442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.422992 0.192556 0.671155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.239622 0.082487 0.655442 RAD 0.0555556 + txt002 + SPHERE CENTER 0.258053 0.0438957 0.715923 RAD 0.0185185 + txt002 + SPHERE CENTER 0.273525 0.0426858 0.735128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.281546 0.0510334 0.713318 RAD 0.00617284 + txt002 + SPHERE CENTER 0.265928 0.064638 0.726759 RAD 0.00617284 + txt002 + SPHERE CENTER 0.250032 0.0355481 0.737733 RAD 0.00617284 + txt002 + SPHERE CENTER 0.242434 0.0575003 0.729364 RAD 0.00617284 + txt002 + SPHERE CENTER 0.23456 0.036758 0.718528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.26565 0.0219434 0.724292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.250178 0.0231533 0.705088 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273671 0.030291 0.702483 RAD 0.00617284 + txt002 + SPHERE CENTER 0.308551 0.0863845 0.682285 RAD 0.0185185 + txt002 + SPHERE CENTER 0.330622 0.0971427 0.67968 RAD 0.00617284 + txt002 + SPHERE CENTER 0.317013 0.091905 0.659755 RAD 0.00617284 + txt002 + SPHERE CENTER 0.310023 0.109956 0.675083 RAD 0.00617284 + txt002 + SPHERE CENTER 0.322161 0.0916222 0.702209 RAD 0.00617284 + txt002 + SPHERE CENTER 0.301561 0.104436 0.697613 RAD 0.00617284 + txt002 + SPHERE CENTER 0.30009 0.080864 0.704814 RAD 0.00617284 + txt002 + SPHERE CENTER 0.329151 0.0735708 0.686881 RAD 0.00617284 + txt002 + SPHERE CENTER 0.30708 0.0628126 0.689486 RAD 0.00617284 + txt002 + SPHERE CENTER 0.315541 0.0683331 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER 0.252557 0.117687 0.719322 RAD 0.0185185 + txt002 + SPHERE CENTER 0.265544 0.135677 0.730157 RAD 0.00617284 + txt002 + SPHERE CENTER 0.275732 0.12224 0.71212 RAD 0.00617284 + txt002 + SPHERE CENTER 0.25778 0.138361 0.706872 RAD 0.00617284 + txt002 + SPHERE CENTER 0.242369 0.131123 0.737359 RAD 0.00617284 + txt002 + SPHERE CENTER 0.234605 0.133808 0.714074 RAD 0.00617284 + txt002 + SPHERE CENTER 0.229382 0.113134 0.726523 RAD 0.00617284 + txt002 + SPHERE CENTER 0.26032 0.115003 0.742607 RAD 0.00617284 + txt002 + SPHERE CENTER 0.247334 0.097014 0.731771 RAD 0.00617284 + txt002 + SPHERE CENTER 0.270508 0.101567 0.72457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.189123 0.0399982 0.689081 RAD 0.0185185 + txt002 + SPHERE CENTER 0.179527 0.0335228 0.71089 RAD 0.00617284 + txt002 + SPHERE CENTER 0.203632 0.0385291 0.709006 RAD 0.00617284 + txt002 + SPHERE CENTER 0.187058 0.0567332 0.707118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.165018 0.0349919 0.690965 RAD 0.00617284 + txt002 + SPHERE CENTER 0.172549 0.0582023 0.687193 RAD 0.00617284 + txt002 + SPHERE CENTER 0.174615 0.0414672 0.669156 RAD 0.00617284 + txt002 + SPHERE CENTER 0.181593 0.0167878 0.692853 RAD 0.00617284 + txt002 + SPHERE CENTER 0.191189 0.0232631 0.671044 RAD 0.00617284 + txt002 + SPHERE CENTER 0.205698 0.021794 0.690969 RAD 0.00617284 + txt002 + SPHERE CENTER 0.183628 0.11379 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.176775 0.133336 0.705919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.199753 0.124499 0.707807 RAD 0.00617284 + txt002 + SPHERE CENTER 0.192663 0.136161 0.687231 RAD 0.00617284 + txt002 + SPHERE CENTER 0.160649 0.122627 0.690591 RAD 0.00617284 + txt002 + SPHERE CENTER 0.176537 0.125452 0.671903 RAD 0.00617284 + txt002 + SPHERE CENTER 0.167502 0.103081 0.677151 RAD 0.00617284 + txt002 + SPHERE CENTER 0.167739 0.110965 0.711167 RAD 0.00617284 + txt002 + SPHERE CENTER 0.174592 0.0914184 0.697727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.190718 0.102127 0.713055 RAD 0.00617284 + txt002 + SPHERE CENTER 0.170692 0.0785895 0.6286 RAD 0.0185185 + txt002 + SPHERE CENTER 0.147549 0.0867911 0.631205 RAD 0.00617284 + txt002 + SPHERE CENTER 0.161663 0.083121 0.65113 RAD 0.00617284 + txt002 + SPHERE CENTER 0.166573 0.101845 0.635801 RAD 0.00617284 + txt002 + SPHERE CENTER 0.156579 0.0822597 0.608675 RAD 0.00617284 + txt002 + SPHERE CENTER 0.175603 0.0973138 0.613272 RAD 0.00617284 + txt002 + SPHERE CENTER 0.179722 0.074058 0.60607 RAD 0.00617284 + txt002 + SPHERE CENTER 0.151669 0.0635354 0.624003 RAD 0.00617284 + txt002 + SPHERE CENTER 0.174812 0.0553337 0.621398 RAD 0.00617284 + txt002 + SPHERE CENTER 0.165782 0.0598652 0.643928 RAD 0.00617284 + txt002 + SPHERE CENTER 0.245118 0.00869528 0.652044 RAD 0.0185185 + txt002 + SPHERE CENTER 0.257416 -0.0110117 0.660413 RAD 0.00617284 + txt002 + SPHERE CENTER 0.269325 0.0102865 0.656641 RAD 0.00617284 + txt002 + SPHERE CENTER 0.253319 0.00823377 0.675329 RAD 0.00617284 + txt002 + SPHERE CENTER 0.233209 -0.0126029 0.655816 RAD 0.00617284 + txt002 + SPHERE CENTER 0.229111 0.00664257 0.670732 RAD 0.00617284 + txt002 + SPHERE CENTER 0.22091 0.00710408 0.647447 RAD 0.00617284 + txt002 + SPHERE CENTER 0.249215 -0.0105502 0.637128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236916 0.00915679 0.628759 RAD 0.00617284 + txt002 + SPHERE CENTER 0.261124 0.010748 0.633356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.226687 0.0472866 0.591563 RAD 0.0185185 + txt002 + SPHERE CENTER 0.224935 0.025169 0.580727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.241399 0.0288111 0.598764 RAD 0.00617284 + txt002 + SPHERE CENTER 0.217281 0.0281502 0.604012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.210223 0.0436445 0.573526 RAD 0.00617284 + txt002 + SPHERE CENTER 0.202569 0.0466257 0.596811 RAD 0.00617284 + txt002 + SPHERE CENTER 0.211974 0.0657621 0.584361 RAD 0.00617284 + txt002 + SPHERE CENTER 0.234341 0.0443054 0.568278 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236092 0.066423 0.579113 RAD 0.00617284 + txt002 + SPHERE CENTER 0.250805 0.0479475 0.586315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.295616 0.0511841 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.315856 0.0555846 0.604965 RAD 0.00617284 + txt002 + SPHERE CENTER 0.296292 0.0705297 0.603077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.309941 0.0705987 0.623653 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31518 0.036239 0.620293 RAD 0.00617284 + txt002 + SPHERE CENTER 0.309265 0.051253 0.638981 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29494 0.0318385 0.633733 RAD 0.00617284 + txt002 + SPHERE CENTER 0.301531 0.03617 0.599717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.281291 0.0317696 0.613157 RAD 0.00617284 + txt002 + SPHERE CENTER 0.281968 0.0511152 0.597829 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4293 0.115031 0.544331 RAD 0.0555556 + txt002 + SPHERE CENTER 0.502308 0.102505 0.544331 RAD 0.0185185 + txt002 + SPHERE CENTER 0.524146 0.110567 0.536101 RAD 0.00617284 + txt002 + SPHERE CENTER 0.504055 0.112687 0.521905 RAD 0.00617284 + txt002 + SPHERE CENTER 0.506465 0.126738 0.542066 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522399 0.100385 0.558526 RAD 0.00617284 + txt002 + SPHERE CENTER 0.504718 0.116555 0.564491 RAD 0.00617284 + txt002 + SPHERE CENTER 0.500561 0.0923218 0.566757 RAD 0.00617284 + txt002 + SPHERE CENTER 0.519988 0.0863343 0.538366 RAD 0.00617284 + txt002 + SPHERE CENTER 0.49815 0.0782715 0.546597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.499897 0.0884544 0.524171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.474661 0.160392 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.481967 0.167697 0.484868 RAD 0.00617284 + txt002 + SPHERE CENTER 0.475831 0.144102 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.458371 0.161561 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.480797 0.183987 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.457202 0.177851 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.473492 0.176681 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.498257 0.166528 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490951 0.159222 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.492121 0.142932 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.474661 0.160392 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.492047 0.177777 0.579103 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490951 0.159222 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.473492 0.176681 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.475757 0.178947 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.457202 0.177851 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.458371 0.161561 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.493217 0.161488 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.475831 0.144102 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.492121 0.142932 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.456947 0.0571437 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.475575 0.0493251 0.595564 RAD 0.00617284 + txt002 + SPHERE CENTER 0.479825 0.06557 0.577461 RAD 0.00617284 + txt002 + SPHERE CENTER 0.467381 0.0725262 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.452697 0.0408988 0.599471 RAD 0.00617284 + txt002 + SPHERE CENTER 0.444504 0.0640999 0.601529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.434069 0.0487174 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.465141 0.0339426 0.57931 RAD 0.00617284 + txt002 + SPHERE CENTER 0.446512 0.0417612 0.565115 RAD 0.00617284 + txt002 + SPHERE CENTER 0.46939 0.0501875 0.561208 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4293 0.115031 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.439381 0.125111 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.45315 0.121421 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.435691 0.138881 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.415531 0.11872 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.411841 0.13249 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40545 0.10864 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.43299 0.101261 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.42291 0.0911807 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.44676 0.0975713 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.383939 0.0696698 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.376634 0.0623642 0.603794 RAD 0.00617284 + txt002 + SPHERE CENTER 0.400229 0.0685002 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.38277 0.0859596 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.360344 0.0635337 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.36648 0.0871292 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.36765 0.0708393 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.377803 0.0460743 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.385109 0.0533799 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.401399 0.0522103 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.456947 0.0571437 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.477623 0.0450372 0.501329 RAD 0.00617284 + txt002 + SPHERE CENTER 0.47788 0.0696413 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.475469 0.055591 0.523547 RAD 0.00617284 + txt002 + SPHERE CENTER 0.45669 0.0325396 0.505236 RAD 0.00617284 + txt002 + SPHERE CENTER 0.454536 0.0430934 0.527454 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436013 0.0446461 0.511201 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4591 0.0465898 0.485076 RAD 0.00617284 + txt002 + SPHERE CENTER 0.438424 0.0586963 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.459357 0.071194 0.487134 RAD 0.00617284 + txt002 + SPHERE CENTER 0.383939 0.0696698 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.366554 0.052284 0.509559 RAD 0.00617284 + txt002 + SPHERE CENTER 0.385109 0.0533799 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.36765 0.0708393 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.365384 0.0685739 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.36648 0.0871292 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.38277 0.0859596 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.382844 0.0511144 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.400229 0.0685002 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.401399 0.0522103 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4293 0.115031 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.41922 0.125111 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40545 0.121421 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.42291 0.138881 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.44307 0.11872 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.44676 0.13249 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.45315 0.10864 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.425611 0.101261 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.435691 0.0911807 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.411841 0.0975713 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.643951 0.172546 1.11022e-16 RAD 0.166667 + txt002 + SPHERE CENTER 0.802608 0.281471 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.824035 0.30566 -0.177765 RAD 0.0185185 + txt002 + SPHERE CENTER 0.822021 0.302088 -0.202114 RAD 0.00617284 + txt002 + SPHERE CENTER 0.821938 0.282758 -0.186751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.802598 0.298094 -0.187402 RAD 0.00617284 + txt002 + SPHERE CENTER 0.824119 0.32499 -0.193128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.804695 0.320997 -0.178416 RAD 0.00617284 + txt002 + SPHERE CENTER 0.826132 0.328563 -0.16878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.843459 0.309654 -0.192477 RAD 0.00617284 + txt002 + SPHERE CENTER 0.845472 0.313227 -0.168128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.843375 0.290324 -0.177114 RAD 0.00617284 + txt002 + SPHERE CENTER 0.787796 0.241352 -0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER 0.785699 0.218449 -0.180578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.802677 0.22345 -0.163362 RAD 0.00617284 + txt002 + SPHERE CENTER 0.778718 0.223304 -0.157397 RAD 0.00617284 + txt002 + SPHERE CENTER 0.770818 0.236351 -0.188808 RAD 0.00617284 + txt002 + SPHERE CENTER 0.763837 0.241205 -0.165627 RAD 0.00617284 + txt002 + SPHERE CENTER 0.772915 0.259253 -0.179823 RAD 0.00617284 + txt002 + SPHERE CENTER 0.794777 0.236497 -0.194773 RAD 0.00617284 + txt002 + SPHERE CENTER 0.796874 0.2594 -0.185788 RAD 0.00617284 + txt002 + SPHERE CENTER 0.811756 0.241498 -0.177557 RAD 0.00617284 + txt002 + SPHERE CENTER 0.752156 0.305221 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.741263 0.325175 -0.169507 RAD 0.00617284 + txt002 + SPHERE CENTER 0.747715 0.32493 -0.145675 RAD 0.00617284 + txt002 + SPHERE CENTER 0.765112 0.325981 -0.163165 RAD 0.00617284 + txt002 + SPHERE CENTER 0.745704 0.305466 -0.183703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.769553 0.306272 -0.17736 RAD 0.00617284 + txt002 + SPHERE CENTER 0.756597 0.285513 -0.174066 RAD 0.00617284 + txt002 + SPHERE CENTER 0.728307 0.304415 -0.166213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.7392 0.284462 -0.156576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.734759 0.304171 -0.142381 RAD 0.00617284 + txt002 + SPHERE CENTER 0.838847 0.34578 -0.117284 RAD 0.0185185 + txt002 + SPHERE CENTER 0.851488 0.360404 -0.132647 RAD 0.00617284 + txt002 + SPHERE CENTER 0.853509 0.335865 -0.1345 RAD 0.00617284 + txt002 + SPHERE CENTER 0.832518 0.347059 -0.141116 RAD 0.00617284 + txt002 + SPHERE CENTER 0.836826 0.370319 -0.115431 RAD 0.00617284 + txt002 + SPHERE CENTER 0.817857 0.356973 -0.1239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.824185 0.355695 -0.100068 RAD 0.00617284 + txt002 + SPHERE CENTER 0.857816 0.359125 -0.108814 RAD 0.00617284 + txt002 + SPHERE CENTER 0.845176 0.344501 -0.0934517 RAD 0.00617284 + txt002 + SPHERE CENTER 0.859838 0.334587 -0.110668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.766968 0.345341 -0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.768944 0.369945 -0.10004 RAD 0.00617284 + txt002 + SPHERE CENTER 0.788341 0.356172 -0.093424 RAD 0.00617284 + txt002 + SPHERE CENTER 0.780624 0.356171 -0.116879 RAD 0.00617284 + txt002 + SPHERE CENTER 0.747572 0.359113 -0.106005 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759252 0.34534 -0.122844 RAD 0.00617284 + txt002 + SPHERE CENTER 0.745596 0.33451 -0.105354 RAD 0.00617284 + txt002 + SPHERE CENTER 0.755289 0.359115 -0.0825505 RAD 0.00617284 + txt002 + SPHERE CENTER 0.753313 0.334511 -0.0818993 RAD 0.00617284 + txt002 + SPHERE CENTER 0.774685 0.345342 -0.0759343 RAD 0.00617284 + txt002 + SPHERE CENTER 0.817421 0.321591 -0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER 0.83071 0.340361 -0.0416443 RAD 0.00617284 + txt002 + SPHERE CENTER 0.840365 0.325527 -0.0588603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.822249 0.341208 -0.0648253 RAD 0.00617284 + txt002 + SPHERE CENTER 0.807766 0.336425 -0.0334138 RAD 0.00617284 + txt002 + SPHERE CENTER 0.799305 0.337272 -0.0565949 RAD 0.00617284 + txt002 + SPHERE CENTER 0.794477 0.317654 -0.0423994 RAD 0.00617284 + txt002 + SPHERE CENTER 0.825882 0.320744 -0.0274488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.812593 0.301973 -0.0364345 RAD 0.00617284 + txt002 + SPHERE CENTER 0.835537 0.30591 -0.0446649 RAD 0.00617284 + txt002 + SPHERE CENTER 0.874487 0.28191 -0.129006 RAD 0.0185185 + txt002 + SPHERE CENTER 0.891539 0.292033 -0.143718 RAD 0.00617284 + txt002 + SPHERE CENTER 0.868678 0.28812 -0.152187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.872763 0.305711 -0.135349 RAD 0.00617284 + txt002 + SPHERE CENTER 0.897348 0.285824 -0.120537 RAD 0.00617284 + txt002 + SPHERE CENTER 0.878572 0.299501 -0.112168 RAD 0.00617284 + txt002 + SPHERE CENTER 0.880296 0.275701 -0.105825 RAD 0.00617284 + txt002 + SPHERE CENTER 0.893263 0.268233 -0.137375 RAD 0.00617284 + txt002 + SPHERE CENTER 0.876212 0.25811 -0.122663 RAD 0.00617284 + txt002 + SPHERE CENTER 0.870402 0.264319 -0.145845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.853061 0.257721 -0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.87538 0.26204 -0.0527151 RAD 0.00617284 + txt002 + SPHERE CENTER 0.87108 0.266856 -0.0765474 RAD 0.00617284 + txt002 + SPHERE CENTER 0.860805 0.280934 -0.0590577 RAD 0.00617284 + txt002 + SPHERE CENTER 0.857361 0.252905 -0.0385197 RAD 0.00617284 + txt002 + SPHERE CENTER 0.842785 0.271799 -0.0448623 RAD 0.00617284 + txt002 + SPHERE CENTER 0.835041 0.248586 -0.0481565 RAD 0.00617284 + txt002 + SPHERE CENTER 0.867636 0.238827 -0.0560094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.845317 0.234508 -0.0656463 RAD 0.00617284 + txt002 + SPHERE CENTER 0.863337 0.243643 -0.0798417 RAD 0.00617284 + txt002 + SPHERE CENTER 0.838248 0.217602 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.860225 0.206363 -0.122182 RAD 0.00617284 + txt002 + SPHERE CENTER 0.858689 0.230102 -0.128798 RAD 0.00617284 + txt002 + SPHERE CENTER 0.854636 0.223536 -0.105343 RAD 0.00617284 + txt002 + SPHERE CENTER 0.839784 0.193863 -0.116217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.834196 0.211035 -0.0993785 RAD 0.00617284 + txt002 + SPHERE CENTER 0.817808 0.205101 -0.116868 RAD 0.00617284 + txt002 + SPHERE CENTER 0.843837 0.200429 -0.139672 RAD 0.00617284 + txt002 + SPHERE CENTER 0.821861 0.211667 -0.140323 RAD 0.00617284 + txt002 + SPHERE CENTER 0.842301 0.224168 -0.146288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.643951 0.172546 -0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER 0.61371 0.202787 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.61556 0.221097 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.621702 0.225035 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.635958 0.210779 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.607567 0.198849 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627965 0.188531 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.605717 0.180539 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.593312 0.213105 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.591462 0.194794 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.599454 0.217042 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.5724 0.191718 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.556122 0.208861 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.575596 0.203643 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.578791 0.215568 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.552927 0.196936 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.575596 0.203643 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.569205 0.179793 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.549732 0.185011 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.56601 0.167868 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.569205 0.179793 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.624779 0.244096 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.631486 0.266765 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.648629 0.250487 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.636704 0.247291 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.607636 0.260374 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.612854 0.240901 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.600929 0.237705 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.619561 0.26357 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.612854 0.240901 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.636704 0.247291 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.68526 0.183615 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.684921 0.190903 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665787 0.178397 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669989 0.201661 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.704395 0.196121 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.689462 0.206879 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.704733 0.188833 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.700193 0.172858 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.700531 0.165569 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.681058 0.160351 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.696329 0.224924 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.710584 0.23918 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.705059 0.216195 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.687599 0.233654 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.701855 0.24791 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.678869 0.242384 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.687599 0.233654 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.719314 0.23045 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.705059 0.216195 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.713788 0.207465 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.715501 0.153374 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.738169 0.160081 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.718696 0.165299 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.721891 0.177224 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.734974 0.148156 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.718696 0.165299 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.712305 0.141449 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.731779 0.136231 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.70911 0.129524 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.712305 0.141449 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.632882 0.131237 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.634145 0.108412 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.650927 0.115965 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627664 0.111763 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616099 0.123683 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.609618 0.127034 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.614836 0.146508 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.639363 0.127886 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.6381 0.15071 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.656145 0.135439 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.663122 0.100996 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.680265 0.0847178 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.686972 0.107387 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.675047 0.104191 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.656415 0.0783272 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.651197 0.0978007 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.639272 0.0946054 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.66834 0.0815225 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.651197 0.0978007 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.675047 0.104191 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.591572 0.120168 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.577317 0.105912 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.600302 0.111438 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.582843 0.128897 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.568587 0.114642 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.574113 0.137627 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.582843 0.128897 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.586046 0.0971825 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.600302 0.111438 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.609032 0.102708 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.594141 0.358439 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.619127 0.408291 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.625955 0.411883 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.630791 0.390369 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.607547 0.396287 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.61429 0.429805 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.595882 0.414208 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.607462 0.426212 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.637535 0.423887 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.630706 0.420295 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.642371 0.402373 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665691 0.37761 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.68332 0.389713 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665691 0.37761 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.660156 0.398265 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.68332 0.389713 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.660156 0.398265 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665691 0.37761 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.688854 0.369058 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671225 0.356956 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671225 0.356956 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.638217 0.337042 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.652948 0.344865 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.632683 0.357697 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.651954 0.357326 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.658482 0.324211 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.657489 0.336672 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.643752 0.316388 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.639211 0.324581 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.624481 0.316758 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.618946 0.337413 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.547576 0.389119 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.541008 0.410169 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.548718 0.410472 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.564748 0.405866 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539866 0.388816 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.563607 0.384513 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.546435 0.367766 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.523836 0.393422 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.530405 0.372372 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.531546 0.393725 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.566667 0.317871 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.555534 0.296626 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.572202 0.297216 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.550163 0.307914 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.549999 0.31728 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.544629 0.328569 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.561133 0.338525 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.572037 0.306582 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.583171 0.327827 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.588706 0.307172 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522591 0.339267 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.501272 0.340934 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522591 0.339267 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.517056 0.359921 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.501272 0.340934 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.517056 0.359921 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522591 0.339267 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.506807 0.320279 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.528125 0.318612 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.528125 0.318612 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.57505 0.429687 -0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER 0.58161 0.452905 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.5989 0.436077 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.586467 0.434777 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.55776 0.446515 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.562617 0.428387 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.5512 0.423296 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.570193 0.447815 -0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER 0.563633 0.424596 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.587483 0.430987 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.550064 0.379835 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.547099 0.396248 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.569716 0.388263 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.557504 0.403175 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.527447 0.387819 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.537852 0.394747 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.530412 0.371406 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539659 0.372907 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.542624 0.356494 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.562276 0.364922 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.621614 0.399007 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.637209 0.41723 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.642848 0.401533 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.624734 0.418027 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.615976 0.414703 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.603501 0.4155 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.600381 0.39648 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.634089 0.39821 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.618494 0.379986 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.639728 0.382513 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.802608 0.281471 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.858698 0.329459 0.104938 RAD 0.0185185 + txt002 + SPHERE CENTER 0.872345 0.34259 0.0890951 RAD 0.00617284 + txt002 + SPHERE CENTER 0.86421 0.32016 0.0827387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.848329 0.338969 0.0846485 RAD 0.00617284 + txt002 + SPHERE CENTER 0.866833 0.351888 0.111295 RAD 0.00617284 + txt002 + SPHERE CENTER 0.842817 0.348268 0.106848 RAD 0.00617284 + txt002 + SPHERE CENTER 0.853186 0.338757 0.127138 RAD 0.00617284 + txt002 + SPHERE CENTER 0.882715 0.333079 0.109385 RAD 0.00617284 + txt002 + SPHERE CENTER 0.869068 0.319948 0.125228 RAD 0.00617284 + txt002 + SPHERE CENTER 0.87458 0.310649 0.103028 RAD 0.00617284 + txt002 + SPHERE CENTER 0.845371 0.280879 0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER 0.849036 0.291048 0.0284303 RAD 0.00617284 + txt002 + SPHERE CENTER 0.826067 0.287867 0.0369125 RAD 0.00617284 + txt002 + SPHERE CENTER 0.840755 0.304882 0.0471312 RAD 0.00617284 + txt002 + SPHERE CENTER 0.868341 0.28406 0.0421477 RAD 0.00617284 + txt002 + SPHERE CENTER 0.86006 0.297894 0.0608487 RAD 0.00617284 + txt002 + SPHERE CENTER 0.864676 0.273891 0.0643473 RAD 0.00617284 + txt002 + SPHERE CENTER 0.853652 0.267046 0.0319289 RAD 0.00617284 + txt002 + SPHERE CENTER 0.849987 0.256877 0.0541285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.830683 0.263865 0.0404111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.798572 0.337088 0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.808673 0.346884 0.0420622 RAD 0.00617284 + txt002 + SPHERE CENTER 0.82298 0.335792 0.0588533 RAD 0.00617284 + txt002 + SPHERE CENTER 0.807762 0.322361 0.044793 RAD 0.00617284 + txt002 + SPHERE CENTER 0.784265 0.34818 0.0455609 RAD 0.00617284 + txt002 + SPHERE CENTER 0.783355 0.323657 0.0482916 RAD 0.00617284 + txt002 + SPHERE CENTER 0.774164 0.338384 0.0658506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.799483 0.361611 0.0596212 RAD 0.00617284 + txt002 + SPHERE CENTER 0.789382 0.351815 0.079911 RAD 0.00617284 + txt002 + SPHERE CENTER 0.81379 0.350519 0.0764123 RAD 0.00617284 + txt002 + SPHERE CENTER 0.815936 0.330051 0.165419 RAD 0.0185185 + txt002 + SPHERE CENTER 0.828769 0.350165 0.171776 RAD 0.00617284 + txt002 + SPHERE CENTER 0.838905 0.333232 0.156937 RAD 0.00617284 + txt002 + SPHERE CENTER 0.820583 0.347547 0.148628 RAD 0.00617284 + txt002 + SPHERE CENTER 0.805799 0.346984 0.180258 RAD 0.00617284 + txt002 + SPHERE CENTER 0.797614 0.344366 0.157111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.792966 0.32687 0.173902 RAD 0.00617284 + txt002 + SPHERE CENTER 0.824121 0.332668 0.188567 RAD 0.00617284 + txt002 + SPHERE CENTER 0.811288 0.312554 0.182211 RAD 0.00617284 + txt002 + SPHERE CENTER 0.834258 0.315735 0.173728 RAD 0.00617284 + txt002 + SPHERE CENTER 0.75581 0.33768 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.753851 0.362219 0.124743 RAD 0.00617284 + txt002 + SPHERE CENTER 0.774086 0.350765 0.133052 RAD 0.00617284 + txt002 + SPHERE CENTER 0.76987 0.352319 0.108773 RAD 0.00617284 + txt002 + SPHERE CENTER 0.735575 0.349134 0.114524 RAD 0.00617284 + txt002 + SPHERE CENTER 0.751594 0.339233 0.0985541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.737534 0.324595 0.112614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.739791 0.347581 0.138803 RAD 0.00617284 + txt002 + SPHERE CENTER 0.74175 0.323042 0.136894 RAD 0.00617284 + txt002 + SPHERE CENTER 0.760026 0.336127 0.147112 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759846 0.282063 0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER 0.756464 0.29233 0.193792 RAD 0.00617284 + txt002 + SPHERE CENTER 0.779336 0.288514 0.18531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.765125 0.305929 0.175091 RAD 0.00617284 + txt002 + SPHERE CENTER 0.736973 0.285879 0.180075 RAD 0.00617284 + txt002 + SPHERE CENTER 0.745634 0.299478 0.161374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.740355 0.275612 0.157875 RAD 0.00617284 + txt002 + SPHERE CENTER 0.751185 0.268464 0.190293 RAD 0.00617284 + txt002 + SPHERE CENTER 0.754567 0.258198 0.168094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.774058 0.264649 0.181811 RAD 0.00617284 + txt002 + SPHERE CENTER 0.862735 0.273842 0.153697 RAD 0.0185185 + txt002 + SPHERE CENTER 0.885497 0.282313 0.158144 RAD 0.00617284 + txt002 + SPHERE CENTER 0.876946 0.281455 0.134996 RAD 0.00617284 + txt002 + SPHERE CENTER 0.867718 0.29787 0.150967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.871286 0.274699 0.176845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.853506 0.290257 0.169668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.848523 0.266228 0.172398 RAD 0.00617284 + txt002 + SPHERE CENTER 0.880514 0.258284 0.160875 RAD 0.00617284 + txt002 + SPHERE CENTER 0.857752 0.249813 0.156428 RAD 0.00617284 + txt002 + SPHERE CENTER 0.871963 0.257427 0.137727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.806645 0.225855 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.818054 0.21762 0.18016 RAD 0.00617284 + txt002 + SPHERE CENTER 0.83061 0.230661 0.163369 RAD 0.00617284 + txt002 + SPHERE CENTER 0.813612 0.241754 0.177429 RAD 0.00617284 + txt002 + SPHERE CENTER 0.794089 0.212813 0.176661 RAD 0.00617284 + txt002 + SPHERE CENTER 0.789647 0.236948 0.173931 RAD 0.00617284 + txt002 + SPHERE CENTER 0.78268 0.221048 0.156372 RAD 0.00617284 + txt002 + SPHERE CENTER 0.811087 0.20172 0.162601 RAD 0.00617284 + txt002 + SPHERE CENTER 0.799677 0.209955 0.142311 RAD 0.00617284 + txt002 + SPHERE CENTER 0.823642 0.214761 0.14581 RAD 0.00617284 + txt002 + SPHERE CENTER 0.849407 0.225263 0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.873186 0.21889 0.0974792 RAD 0.00617284 + txt002 + SPHERE CENTER 0.865588 0.240865 0.0891702 RAD 0.00617284 + txt002 + SPHERE CENTER 0.866351 0.236437 0.113449 RAD 0.00617284 + txt002 + SPHERE CENTER 0.857005 0.203288 0.107698 RAD 0.00617284 + txt002 + SPHERE CENTER 0.850171 0.220835 0.123668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.833227 0.20966 0.109608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.856242 0.207715 0.0834188 RAD 0.00617284 + txt002 + SPHERE CENTER 0.832464 0.214088 0.0853287 RAD 0.00617284 + txt002 + SPHERE CENTER 0.848644 0.22969 0.0751099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.594141 0.358439 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.613592 0.428945 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.626191 0.448155 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.634643 0.42519 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.614455 0.43276 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.60514 0.45191 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.593404 0.436515 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.592541 0.4327 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.625328 0.44434 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.612729 0.42513 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.63378 0.421375 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665691 0.37761 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.68332 0.389713 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665691 0.37761 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.660156 0.398265 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.68332 0.389713 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.660156 0.398265 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665691 0.37761 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.688854 0.369058 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671225 0.356956 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671225 0.356956 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.621614 0.399007 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.625435 0.399844 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627149 0.378352 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.60511 0.38905 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.619901 0.420499 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.599576 0.409705 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.61608 0.419661 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.641939 0.409801 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.638118 0.408963 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.643653 0.388308 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.542042 0.409774 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.53788 0.433888 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.558395 0.423551 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.55574 0.426423 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.521526 0.42011 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539387 0.412646 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.525689 0.395996 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.524182 0.417238 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.528344 0.393124 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.544697 0.406901 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.550064 0.379835 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.540802 0.399304 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.54453 0.400489 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.563801 0.400119 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.546337 0.37865 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.569335 0.379464 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555599 0.35918 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.527065 0.37902 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.536327 0.359551 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.530793 0.380205 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522591 0.339267 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.501272 0.340934 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522591 0.339267 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.517056 0.359921 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.501272 0.340934 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.517056 0.359921 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522591 0.339267 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.506807 0.320279 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.528125 0.318612 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.528125 0.318612 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.586119 0.388377 0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.594185 0.405974 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.609969 0.394768 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.593017 0.410332 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.570335 0.399584 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.569167 0.403942 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.562269 0.381987 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.587286 0.384019 0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.57922 0.366422 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.60307 0.372813 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.566667 0.317871 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.567308 0.314012 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.587901 0.320398 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.569787 0.336891 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.546074 0.311485 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.548554 0.334364 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.545434 0.315344 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.564188 0.294991 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.563547 0.29885 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.584781 0.301377 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.638217 0.337042 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.659244 0.341809 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.65787 0.345471 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.645657 0.360383 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.639592 0.33338 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.626005 0.351955 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.618565 0.328614 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.651804 0.318468 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.630777 0.313702 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.65043 0.32213 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.643951 0.172546 0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER 0.674191 0.202787 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.690652 0.219248 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.695267 0.206403 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.677807 0.223862 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669577 0.215632 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.656732 0.220246 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.653116 0.199171 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.687036 0.198172 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.670575 0.181711 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.691651 0.185327 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.715501 0.191718 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.733129 0.203821 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.715501 0.191718 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.709966 0.212373 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.733129 0.203821 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.709966 0.212373 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.715501 0.191718 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.738664 0.183166 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.721035 0.171063 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.721035 0.171063 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.663122 0.244096 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.675225 0.261725 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.683777 0.238562 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.663122 0.244096 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.65457 0.267259 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.642468 0.249631 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.642468 0.249631 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.675225 0.261725 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.663122 0.244096 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.683777 0.238562 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.602641 0.183615 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.600215 0.197046 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.622701 0.191021 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.609032 0.207465 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.580155 0.18964 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.588972 0.200059 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.582581 0.176209 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.593824 0.173196 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.596251 0.159765 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.61631 0.167171 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.591572 0.224924 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.587397 0.24926 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.606693 0.240045 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.606693 0.240045 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.572277 0.23414 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.591572 0.224924 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.576452 0.209804 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.572277 0.23414 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.576452 0.209804 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.591572 0.224924 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.5724 0.153374 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.551082 0.155041 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.5724 0.153374 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.566866 0.174029 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.551082 0.155041 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.566866 0.174029 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.5724 0.153374 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.556617 0.134387 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.577935 0.13272 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.577935 0.13272 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.655019 0.131237 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.668451 0.12881 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.678869 0.137627 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.662426 0.151296 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.644601 0.12242 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.638576 0.144906 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.631169 0.124846 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.661044 0.108751 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.647613 0.111177 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671463 0.117567 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.624779 0.100996 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.626446 0.0796777 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.645433 0.0954616 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.624779 0.100996 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.605791 0.0852121 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.604124 0.10653 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.604124 0.10653 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.626446 0.0796777 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.624779 0.100996 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.645433 0.0954616 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.696329 0.120168 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.720665 0.115992 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.711449 0.135288 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.711449 0.135288 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.705544 0.100872 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.696329 0.120168 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.681209 0.105047 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.705544 0.100872 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.681209 0.105047 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.696329 0.120168 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.852418 0.0955788 1.89979e-16 RAD 0.0555556 + txt002 + SPHERE CENTER 0.922609 0.11107 -0.0178949 RAD 0.0185185 + txt002 + SPHERE CENTER 0.937225 0.122151 -0.0344251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.916553 0.11086 -0.0418311 RAD 0.00617284 + txt002 + SPHERE CENTER 0.915202 0.131874 -0.0289382 RAD 0.00617284 + txt002 + SPHERE CENTER 0.943281 0.12236 -0.0104889 RAD 0.00617284 + txt002 + SPHERE CENTER 0.921258 0.132084 -0.00500196 RAD 0.00617284 + txt002 + SPHERE CENTER 0.928665 0.111279 0.00604126 RAD 0.00617284 + txt002 + SPHERE CENTER 0.944632 0.101346 -0.0233819 RAD 0.00617284 + txt002 + SPHERE CENTER 0.930016 0.0902645 -0.00685171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.92396 0.090055 -0.0307879 RAD 0.00617284 + txt002 + SPHERE CENTER 0.867231 0.135698 -0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER 0.873196 0.134634 -0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER 0.882112 0.117797 -0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.858152 0.11765 -0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.858315 0.152536 -0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.843271 0.135552 -0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.852349 0.1536 -0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER 0.882275 0.152682 -0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.876309 0.153747 -0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER 0.89119 0.135845 -0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER 0.877966 0.164775 0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER 0.890926 0.182656 -0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER 0.897331 0.159019 -0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER 0.876622 0.167676 -0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER 0.871561 0.188412 0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER 0.857256 0.173431 -0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.8586 0.17053 0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.89227 0.179755 0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER 0.87931 0.161874 0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.898675 0.156118 0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.907797 0.0709499 0.0425863 RAD 0.0185185 + txt002 + SPHERE CENTER 0.930963 0.0752104 0.0499923 RAD 0.00617284 + txt002 + SPHERE CENTER 0.924191 0.0806562 0.0268805 RAD 0.00617284 + txt002 + SPHERE CENTER 0.915684 0.0941344 0.0457385 RAD 0.00617284 + txt002 + SPHERE CENTER 0.914568 0.0655041 0.065698 RAD 0.00617284 + txt002 + SPHERE CENTER 0.899289 0.0844281 0.0614442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.891402 0.0612436 0.058292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.923076 0.0520258 0.0468401 RAD 0.00617284 + txt002 + SPHERE CENTER 0.89991 0.0477654 0.0394341 RAD 0.00617284 + txt002 + SPHERE CENTER 0.916304 0.0574717 0.0237283 RAD 0.00617284 + txt002 + SPHERE CENTER 0.863153 0.124655 0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER 0.875744 0.141535 0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER 0.88655 0.129819 0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.868763 0.146389 0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER 0.852347 0.136371 0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.845366 0.141225 0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER 0.839756 0.119492 0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER 0.870135 0.119801 0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER 0.857544 0.102922 0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER 0.880941 0.108085 0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER 0.837606 0.0554592 0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER 0.842832 0.0523913 0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER 0.86055 0.0593957 0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.842434 0.0750766 0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.819888 0.0484547 0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.81949 0.07114 0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.814662 0.0515226 0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER 0.838004 0.0327739 0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.832778 0.0358417 0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER 0.855722 0.0397783 0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER 0.897062 0.0418734 -0.0246914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.920407 0.0359958 -0.0301783 RAD 0.00617284 + txt002 + SPHERE CENTER 0.912106 0.0588574 -0.0344321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.915603 0.0511067 -0.0112511 RAD 0.00617284 + txt002 + SPHERE CENTER 0.905363 0.0190117 -0.0204376 RAD 0.00617284 + txt002 + SPHERE CENTER 0.900559 0.0341227 -0.00151032 RAD 0.00617284 + txt002 + SPHERE CENTER 0.882018 0.0248894 -0.0149506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.901866 0.0267625 -0.0436186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.878521 0.0326401 -0.0381316 RAD 0.00617284 + txt002 + SPHERE CENTER 0.893565 0.0496241 -0.0478724 RAD 0.00617284 + txt002 + SPHERE CENTER 0.826871 0.0263827 -0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER 0.825102 0.00436945 0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER 0.84533 0.018173 0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER 0.823964 0.025051 0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER 0.806642 0.0125791 -0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER 0.805505 0.0332607 0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.808411 0.0345923 -0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.828008 0.00570109 -0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER 0.829777 0.0277143 -0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.848237 0.0195047 -0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.841683 0.0665023 -0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER 0.840284 0.0454909 -0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER 0.856111 0.0473735 -0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.831823 0.0463379 -0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER 0.825856 0.0646197 -0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.817395 0.0654667 -0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER 0.827255 0.0856311 -0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER 0.850144 0.0656554 -0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER 0.851543 0.0866667 -0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER 0.865971 0.0675379 -0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER 0.69376 -0.0133465 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.740325 -0.0440268 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.762259 -0.0417568 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759495 -0.0345526 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.748937 -0.0216407 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.743089 -0.051231 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.729767 -0.0311149 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.721155 -0.053501 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.753646 -0.0641429 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.731712 -0.0664129 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.750882 -0.0569387 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.76531 0.0058253 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.782939 0.0179281 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.76531 0.0058253 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759776 0.02648 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.782939 0.0179281 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759776 0.02648 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.76531 0.0058253 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.788473 -0.00272662 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.770845 -0.0148294 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.770845 -0.0148294 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.721234 0.0272215 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.736829 0.0454452 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.742467 0.0297485 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.724354 0.046242 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.715595 0.0429182 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.70312 0.043715 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.7 0.0246945 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.733709 0.0264247 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.718114 0.00820099 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.739347 0.010728 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.668775 -0.0631985 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.669983 -0.0708196 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.690113 -0.0618185 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671462 -0.0467378 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.648644 -0.0721997 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.650123 -0.0481178 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.647436 -0.0645786 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.667296 -0.0872804 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.666087 -0.0796593 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.687426 -0.0782793 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.649684 0.00804971 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.646718 0.0244627 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669336 0.016478 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.657124 0.0313903 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627066 0.0160343 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.637471 0.022962 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.630031 -0.000378614 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.639278 0.00112207 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.642244 -0.0152909 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.661896 -0.00686255 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.62221 -0.0325183 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.600892 -0.0308513 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.62221 -0.0325183 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616676 -0.0118635 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.600892 -0.0308513 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616676 -0.0118635 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.62221 -0.0325183 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.606426 -0.051506 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627745 -0.053173 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627745 -0.053173 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.712851 -0.0845947 0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER 0.730141 -0.101422 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.736701 -0.0782041 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.725284 -0.0832945 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.706291 -0.107813 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.701434 -0.0896851 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.689001 -0.0909853 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.717709 -0.102723 0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER 0.700418 -0.0858949 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.724268 -0.0795043 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.666287 -0.0539145 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.655153 -0.0751594 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671821 -0.0745692 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.649783 -0.0638711 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.649619 -0.0545047 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.644249 -0.0432164 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.660752 -0.0332597 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671657 -0.0652028 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.682791 -0.0439578 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.688325 -0.0646126 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.737837 -0.0347427 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.752567 -0.0269197 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.732303 -0.014088 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.751574 -0.0144587 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.758102 -0.0475745 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.757108 -0.0351134 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.743371 -0.0553974 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.73883 -0.0472037 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.7241 -0.0550267 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.718566 -0.0343719 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.69376 -0.0133465 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.745859 -0.0646815 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.770032 -0.0684873 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759394 -0.0481266 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.762305 -0.0507391 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.756497 -0.0850422 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.74877 -0.067294 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.732325 -0.0812364 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.753586 -0.0824297 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.729413 -0.0786239 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.742948 -0.062069 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.76531 0.0058253 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.782939 0.0179281 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.76531 0.0058253 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759776 0.02648 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.782939 0.0179281 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759776 0.02648 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.76531 0.0058253 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.788473 -0.00272662 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.770845 -0.0148294 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.770845 -0.0148294 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.737837 -0.0347427 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.758864 -0.0299763 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.757489 -0.0263144 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.745277 -0.0114021 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.739212 -0.0384047 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.725625 -0.0198304 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.718185 -0.043171 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.751424 -0.0533169 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.730397 -0.0580833 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.750049 -0.0496549 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.674309 -0.0838533 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.675276 -0.106805 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.694308 -0.091423 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.673094 -0.0875713 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.655278 -0.0992356 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.653095 -0.0800016 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.65431 -0.0762835 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.676491 -0.103087 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.675524 -0.0801352 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.695522 -0.0877049 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.666287 -0.0539145 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.666927 -0.0577732 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.68752 -0.0513875 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669407 -0.034894 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.645694 -0.0603001 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.648173 -0.0374209 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.645053 -0.0564414 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.663807 -0.0767937 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.663167 -0.072935 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.6844 -0.070408 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.62221 -0.0325183 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.600892 -0.0308513 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.62221 -0.0325183 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616676 -0.0118635 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.600892 -0.0308513 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616676 -0.0118635 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.62221 -0.0325183 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.606426 -0.051506 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627745 -0.053173 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627745 -0.053173 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.701782 -0.0432853 -0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.717566 -0.0544915 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.725632 -0.0368947 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.718734 -0.0588496 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.693716 -0.0608821 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.694884 -0.0652402 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.677932 -0.0496759 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.700615 -0.0389272 -0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.684831 -0.027721 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.708681 -0.0213304 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.649684 0.00804971 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.640422 0.0275193 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.644149 0.0287044 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.66342 0.0283337 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.645956 0.00686453 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.668955 0.00767898 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.655218 -0.012605 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.626685 0.00723527 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.635947 -0.0122343 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.630413 0.00842045 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.721234 0.0272215 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.725055 0.0280589 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.726768 0.00656677 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.70473 0.0172649 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.71952 0.0487136 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.699195 0.0379196 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.715699 0.0478762 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.741558 0.0380155 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.737738 0.0371781 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.743272 0.0165234 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.172546 0.643951 1.11022e-16 RAD 0.166667 + txt002 + SPHERE CENTER 0.281471 0.802608 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.30566 0.824035 -0.177765 RAD 0.0185185 + txt002 + SPHERE CENTER 0.302088 0.822021 -0.202114 RAD 0.00617284 + txt002 + SPHERE CENTER 0.298094 0.802598 -0.187402 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282758 0.821938 -0.186751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.309654 0.843459 -0.192477 RAD 0.00617284 + txt002 + SPHERE CENTER 0.290324 0.843375 -0.177114 RAD 0.00617284 + txt002 + SPHERE CENTER 0.313227 0.845472 -0.168128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32499 0.824119 -0.193128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.328563 0.826132 -0.16878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.320997 0.804695 -0.178416 RAD 0.00617284 + txt002 + SPHERE CENTER 0.305221 0.752156 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.325175 0.741263 -0.169507 RAD 0.00617284 + txt002 + SPHERE CENTER 0.325981 0.765112 -0.163165 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32493 0.747715 -0.145675 RAD 0.00617284 + txt002 + SPHERE CENTER 0.304415 0.728307 -0.166213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.304171 0.734759 -0.142381 RAD 0.00617284 + txt002 + SPHERE CENTER 0.284462 0.7392 -0.156576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.305466 0.745704 -0.183703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.285513 0.756597 -0.174066 RAD 0.00617284 + txt002 + SPHERE CENTER 0.306272 0.769553 -0.17736 RAD 0.00617284 + txt002 + SPHERE CENTER 0.241352 0.787796 -0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER 0.218449 0.785699 -0.180578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.223304 0.778718 -0.157397 RAD 0.00617284 + txt002 + SPHERE CENTER 0.22345 0.802677 -0.163362 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236497 0.794777 -0.194773 RAD 0.00617284 + txt002 + SPHERE CENTER 0.241498 0.811756 -0.177557 RAD 0.00617284 + txt002 + SPHERE CENTER 0.2594 0.796874 -0.185788 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236351 0.770818 -0.188808 RAD 0.00617284 + txt002 + SPHERE CENTER 0.259253 0.772915 -0.179823 RAD 0.00617284 + txt002 + SPHERE CENTER 0.241205 0.763837 -0.165627 RAD 0.00617284 + txt002 + SPHERE CENTER 0.28191 0.874487 -0.129006 RAD 0.0185185 + txt002 + SPHERE CENTER 0.292033 0.891539 -0.143718 RAD 0.00617284 + txt002 + SPHERE CENTER 0.305711 0.872763 -0.135349 RAD 0.00617284 + txt002 + SPHERE CENTER 0.28812 0.868678 -0.152187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.268233 0.893263 -0.137375 RAD 0.00617284 + txt002 + SPHERE CENTER 0.264319 0.870402 -0.145845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.25811 0.876212 -0.122663 RAD 0.00617284 + txt002 + SPHERE CENTER 0.285824 0.897348 -0.120537 RAD 0.00617284 + txt002 + SPHERE CENTER 0.275701 0.880296 -0.105825 RAD 0.00617284 + txt002 + SPHERE CENTER 0.299501 0.878572 -0.112168 RAD 0.00617284 + txt002 + SPHERE CENTER 0.217602 0.838248 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.206363 0.860225 -0.122182 RAD 0.00617284 + txt002 + SPHERE CENTER 0.223536 0.854636 -0.105343 RAD 0.00617284 + txt002 + SPHERE CENTER 0.230102 0.858689 -0.128798 RAD 0.00617284 + txt002 + SPHERE CENTER 0.200429 0.843837 -0.139672 RAD 0.00617284 + txt002 + SPHERE CENTER 0.224168 0.842301 -0.146288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.211667 0.821861 -0.140323 RAD 0.00617284 + txt002 + SPHERE CENTER 0.193863 0.839784 -0.116217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.205101 0.817808 -0.116868 RAD 0.00617284 + txt002 + SPHERE CENTER 0.211035 0.834196 -0.0993785 RAD 0.00617284 + txt002 + SPHERE CENTER 0.257721 0.853061 -0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.26204 0.87538 -0.0527151 RAD 0.00617284 + txt002 + SPHERE CENTER 0.280934 0.860805 -0.0590577 RAD 0.00617284 + txt002 + SPHERE CENTER 0.266856 0.87108 -0.0765474 RAD 0.00617284 + txt002 + SPHERE CENTER 0.238827 0.867636 -0.0560094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.243643 0.863337 -0.0798417 RAD 0.00617284 + txt002 + SPHERE CENTER 0.234508 0.845317 -0.0656463 RAD 0.00617284 + txt002 + SPHERE CENTER 0.252905 0.857361 -0.0385197 RAD 0.00617284 + txt002 + SPHERE CENTER 0.248586 0.835041 -0.0481565 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271799 0.842785 -0.0448623 RAD 0.00617284 + txt002 + SPHERE CENTER 0.34578 0.838847 -0.117284 RAD 0.0185185 + txt002 + SPHERE CENTER 0.360404 0.851488 -0.132647 RAD 0.00617284 + txt002 + SPHERE CENTER 0.347059 0.832518 -0.141116 RAD 0.00617284 + txt002 + SPHERE CENTER 0.335865 0.853509 -0.1345 RAD 0.00617284 + txt002 + SPHERE CENTER 0.359125 0.857816 -0.108814 RAD 0.00617284 + txt002 + SPHERE CENTER 0.334587 0.859838 -0.110668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.344501 0.845176 -0.0934517 RAD 0.00617284 + txt002 + SPHERE CENTER 0.370319 0.836826 -0.115431 RAD 0.00617284 + txt002 + SPHERE CENTER 0.355695 0.824185 -0.100068 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356973 0.817857 -0.1239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.321591 0.817421 -0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER 0.340361 0.83071 -0.0416443 RAD 0.00617284 + txt002 + SPHERE CENTER 0.341208 0.822249 -0.0648253 RAD 0.00617284 + txt002 + SPHERE CENTER 0.325527 0.840365 -0.0588603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.320744 0.825882 -0.0274488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.30591 0.835537 -0.0446649 RAD 0.00617284 + txt002 + SPHERE CENTER 0.301973 0.812593 -0.0364345 RAD 0.00617284 + txt002 + SPHERE CENTER 0.336425 0.807766 -0.0334138 RAD 0.00617284 + txt002 + SPHERE CENTER 0.317654 0.794477 -0.0423994 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337272 0.799305 -0.0565949 RAD 0.00617284 + txt002 + SPHERE CENTER 0.345341 0.766968 -0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.369945 0.768944 -0.10004 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356171 0.780624 -0.116879 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356172 0.788341 -0.093424 RAD 0.00617284 + txt002 + SPHERE CENTER 0.359115 0.755289 -0.0825505 RAD 0.00617284 + txt002 + SPHERE CENTER 0.345342 0.774685 -0.0759343 RAD 0.00617284 + txt002 + SPHERE CENTER 0.334511 0.753313 -0.0818993 RAD 0.00617284 + txt002 + SPHERE CENTER 0.359113 0.747572 -0.106005 RAD 0.00617284 + txt002 + SPHERE CENTER 0.33451 0.745596 -0.105354 RAD 0.00617284 + txt002 + SPHERE CENTER 0.34534 0.759252 -0.122844 RAD 0.00617284 + txt002 + SPHERE CENTER 0.358439 0.594141 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.408291 0.619127 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.411883 0.625955 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396287 0.607547 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.390369 0.630791 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.423887 0.637535 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.402373 0.642371 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.420295 0.630706 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.429805 0.61429 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.426212 0.607462 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.414208 0.595882 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337042 0.638217 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.344865 0.652948 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.357326 0.651954 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.357697 0.632683 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.324581 0.639211 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337413 0.618946 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.316758 0.624481 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.324211 0.658482 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.316388 0.643752 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.336672 0.657489 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37761 0.665691 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.389713 0.68332 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.398265 0.660156 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37761 0.665691 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.369058 0.688854 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356956 0.671225 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356956 0.671225 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.389713 0.68332 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37761 0.665691 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.398265 0.660156 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.429687 0.57505 -0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER 0.452905 0.58161 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.434777 0.586467 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436077 0.5989 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.447815 0.570193 -0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER 0.430987 0.587483 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.424596 0.563633 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.446515 0.55776 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.423296 0.5512 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.428387 0.562617 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399007 0.621614 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.41723 0.637209 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.418027 0.624734 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.401533 0.642848 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.39821 0.634089 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.382513 0.639728 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.379986 0.618494 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.414703 0.615976 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.39648 0.600381 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4155 0.603501 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.379835 0.550064 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.396248 0.547099 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.403175 0.557504 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.388263 0.569716 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.372907 0.539659 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.364922 0.562276 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356494 0.542624 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.387819 0.527447 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.371406 0.530412 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.394747 0.537852 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.389119 0.547576 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.410169 0.541008 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.405866 0.564748 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.410472 0.548718 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.393422 0.523836 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.393725 0.531546 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.372372 0.530405 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.388816 0.539866 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367766 0.546435 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.384513 0.563607 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.339267 0.522591 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.340934 0.501272 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.359921 0.517056 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.339267 0.522591 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.320279 0.506807 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318612 0.528125 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318612 0.528125 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.340934 0.501272 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.339267 0.522591 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.359921 0.517056 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.317871 0.566667 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.296626 0.555534 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307914 0.550163 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.297216 0.572202 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.306582 0.572037 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307172 0.588706 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.327827 0.583171 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31728 0.549999 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.338525 0.561133 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.328569 0.544629 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.172546 0.643951 -0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER 0.142305 0.674191 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.144155 0.692502 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.150298 0.696439 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.164554 0.682184 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.136163 0.670254 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.156561 0.659936 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.134313 0.651943 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.121907 0.684509 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.120057 0.666199 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.12805 0.688447 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.100996 0.663122 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0847178 0.680265 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.104191 0.675047 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.107387 0.686972 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0815225 0.66834 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.104191 0.675047 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0978007 0.651197 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0783272 0.656415 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0946054 0.639272 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0978007 0.651197 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.153374 0.715501 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.160081 0.738169 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.177224 0.721891 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.165299 0.718696 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.136231 0.731779 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.141449 0.712305 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.129524 0.70911 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.148156 0.734974 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.141449 0.712305 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.165299 0.718696 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.213855 0.655019 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.213517 0.662308 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.194382 0.649801 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.198584 0.673065 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.23299 0.667526 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.218058 0.678283 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.233329 0.660237 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.228788 0.644262 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.229127 0.636974 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.209653 0.631756 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.224924 0.696329 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.23918 0.710584 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.233654 0.687599 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.216195 0.705059 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.23045 0.719314 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.207465 0.713788 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.216195 0.705059 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.24791 0.701855 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.233654 0.687599 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.242384 0.678869 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.244096 0.624779 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.266765 0.631486 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.247291 0.636704 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.250487 0.648629 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.26357 0.619561 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.247291 0.636704 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.240901 0.612854 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.260374 0.607636 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.237705 0.600929 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.240901 0.612854 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.161477 0.602641 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.162741 0.579817 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.179523 0.58737 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.156259 0.583168 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.144695 0.595088 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.138214 0.598439 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.143431 0.617912 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.167958 0.59929 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.166695 0.622115 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.184741 0.606843 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.191718 0.5724 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.208861 0.556122 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.215568 0.578791 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.203643 0.575596 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.185011 0.549732 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.179793 0.569205 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.167868 0.56601 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.196936 0.552927 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.179793 0.569205 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.203643 0.575596 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.120168 0.591572 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.105912 0.577317 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.128897 0.582843 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.111438 0.600302 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0971825 0.586046 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.102708 0.609032 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.111438 0.600302 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.114642 0.568587 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.128897 0.582843 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.137627 0.574113 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0955788 0.852418 9.1293e-17 RAD 0.0555556 + txt002 + SPHERE CENTER 0.11107 0.922609 -0.0178949 RAD 0.0185185 + txt002 + SPHERE CENTER 0.122151 0.937225 -0.0344251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.131874 0.915202 -0.0289382 RAD 0.00617284 + txt002 + SPHERE CENTER 0.11086 0.916553 -0.0418311 RAD 0.00617284 + txt002 + SPHERE CENTER 0.101346 0.944632 -0.0233819 RAD 0.00617284 + txt002 + SPHERE CENTER 0.090055 0.92396 -0.0307879 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0902645 0.930016 -0.00685171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.12236 0.943281 -0.0104889 RAD 0.00617284 + txt002 + SPHERE CENTER 0.111279 0.928665 0.00604126 RAD 0.00617284 + txt002 + SPHERE CENTER 0.132084 0.921258 -0.00500196 RAD 0.00617284 + txt002 + SPHERE CENTER 0.164775 0.877966 0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER 0.182656 0.890926 -0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER 0.167676 0.876622 -0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER 0.159019 0.897331 -0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER 0.179755 0.89227 0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER 0.156118 0.898675 0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.161874 0.87931 0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.188412 0.871561 0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER 0.17053 0.8586 0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.173431 0.857256 -0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.135698 0.867231 -0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER 0.134634 0.873196 -0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER 0.11765 0.858152 -0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.117797 0.882112 -0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.152682 0.882275 -0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.135845 0.89119 -0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER 0.153747 0.876309 -0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER 0.152536 0.858315 -0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.1536 0.852349 -0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER 0.135552 0.843271 -0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0418734 0.897062 -0.0246914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0359958 0.920407 -0.0301783 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0511067 0.915603 -0.0112511 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0588574 0.912106 -0.0344321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0267625 0.901866 -0.0436186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0496241 0.893565 -0.0478724 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0326401 0.878521 -0.0381316 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0190117 0.905363 -0.0204376 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0248894 0.882018 -0.0149506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0341227 0.900559 -0.00151032 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0665023 0.841683 -0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0454909 0.840284 -0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0463379 0.831823 -0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0473735 0.856111 -0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0656554 0.850144 -0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0675379 0.865971 -0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0866667 0.851543 -0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0646197 0.825856 -0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0856311 0.827255 -0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0654667 0.817395 -0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0263827 0.826871 -0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER 0.00436945 0.825102 0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER 0.025051 0.823964 0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER 0.018173 0.84533 0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00570109 0.828008 -0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0195047 0.848237 -0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0277143 0.829777 -0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0125791 0.806642 -0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0345923 0.808411 -0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0332607 0.805505 0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0709499 0.907797 0.0425863 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0752104 0.930963 0.0499923 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0941344 0.915684 0.0457385 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0806562 0.924191 0.0268805 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0520258 0.923076 0.0468401 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0574717 0.916304 0.0237283 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0477654 0.89991 0.0394341 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0655041 0.914568 0.065698 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0612436 0.891402 0.058292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0844281 0.899289 0.0614442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0554592 0.837606 0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0523913 0.842832 0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0750766 0.842434 0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0593957 0.86055 0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0327739 0.838004 0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0397783 0.855722 0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0358417 0.832778 0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0484547 0.819888 0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0515226 0.814662 0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER 0.07114 0.81949 0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.124655 0.863153 0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER 0.141535 0.875744 0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER 0.146389 0.868763 0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER 0.129819 0.88655 0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.119801 0.870135 0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER 0.108085 0.880941 0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER 0.102922 0.857544 0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER 0.136371 0.852347 0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.119492 0.839756 0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER 0.141225 0.845366 0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0133465 0.69376 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.0646815 0.745859 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0684873 0.770032 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0507391 0.762305 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0481266 0.759394 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0824297 0.753586 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.062069 0.742948 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0786239 0.729413 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0850422 0.756497 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0812364 0.732325 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.067294 0.74877 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0347427 0.737837 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0299763 0.758864 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0114021 0.745277 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0263144 0.757489 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0533169 0.751424 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0496549 0.750049 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0580833 0.730397 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0384047 0.739212 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.043171 0.718185 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0198304 0.725625 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0058253 0.76531 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0179281 0.782939 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.02648 0.759776 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0058253 0.76531 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00272662 0.788473 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0148294 0.770845 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0148294 0.770845 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0179281 0.782939 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0058253 0.76531 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.02648 0.759776 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0432853 0.701782 -0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0544915 0.717566 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0588496 0.718734 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0368947 0.725632 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0389272 0.700615 -0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0213304 0.708681 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.027721 0.684831 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0608821 0.693716 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0496759 0.677932 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0652402 0.694884 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0272215 0.721234 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0280589 0.725055 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0172649 0.70473 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00656677 0.726768 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0380155 0.741558 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0165234 0.743272 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0371781 0.737738 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0487136 0.71952 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0478762 0.715699 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0379196 0.699195 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00804971 0.649684 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0275193 0.640422 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0283337 0.66342 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0287044 0.644149 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00723527 0.626685 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00842045 0.630413 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0122343 0.635947 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00686453 0.645956 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.012605 0.655218 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00767898 0.668955 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0838533 0.674309 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.106805 0.675276 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0875713 0.673094 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.091423 0.694308 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.103087 0.676491 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0877049 0.695522 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0801352 0.675524 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0992356 0.655278 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0762835 0.65431 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0800016 0.653095 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0325183 0.62221 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0308513 0.600892 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0118635 0.616676 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0325183 0.62221 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.051506 0.606426 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.053173 0.627745 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.053173 0.627745 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0308513 0.600892 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0325183 0.62221 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0118635 0.616676 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0539145 0.666287 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0577732 0.666927 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.034894 0.669407 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0513875 0.68752 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0767937 0.663807 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.070408 0.6844 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.072935 0.663167 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0603001 0.645694 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0564414 0.645053 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0374209 0.648173 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0133465 0.69376 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.0440268 0.740325 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0417568 0.762259 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0216407 0.748937 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0345526 0.759495 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0641429 0.753646 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0569387 0.750882 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0664129 0.731712 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.051231 0.743089 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.053501 0.721155 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0311149 0.729767 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0272215 0.721234 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0454452 0.736829 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.046242 0.724354 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0297485 0.742467 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0264247 0.733709 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.010728 0.739347 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00820099 0.718114 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0429182 0.715595 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0246945 0.7 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.043715 0.70312 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0058253 0.76531 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0179281 0.782939 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.02648 0.759776 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0058253 0.76531 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00272662 0.788473 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0148294 0.770845 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0148294 0.770845 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0179281 0.782939 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0058253 0.76531 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.02648 0.759776 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0845947 0.712851 0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER -0.101422 0.730141 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0832945 0.725284 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0782041 0.736701 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.102723 0.717709 0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0795043 0.724268 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0858949 0.700418 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.107813 0.706291 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0909853 0.689001 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0896851 0.701434 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0347427 0.737837 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0269197 0.752567 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0144587 0.751574 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.014088 0.732303 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0472037 0.73883 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0343719 0.718566 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0550267 0.7241 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0475745 0.758102 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0553974 0.743371 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0351134 0.757108 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0539145 0.666287 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0751594 0.655153 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0638711 0.649783 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0745692 0.671821 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0652028 0.671657 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0646126 0.688325 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0439578 0.682791 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0545047 0.649619 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0332597 0.660752 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0432164 0.644249 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0631985 0.668775 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0708196 0.669983 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0467378 0.671462 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0618185 0.690113 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0872804 0.667296 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0782793 0.687426 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0796593 0.666087 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0721997 0.648644 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0645786 0.647436 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0481178 0.650123 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0325183 0.62221 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0308513 0.600892 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0118635 0.616676 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0325183 0.62221 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.051506 0.606426 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.053173 0.627745 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.053173 0.627745 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0308513 0.600892 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0325183 0.62221 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0118635 0.616676 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00804971 0.649684 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0244627 0.646718 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0313903 0.657124 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.016478 0.669336 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00112207 0.639278 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00686255 0.661896 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0152909 0.642244 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0160343 0.627066 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.000378614 0.630031 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.022962 0.637471 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.281471 0.802608 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.329459 0.858698 0.104938 RAD 0.0185185 + txt002 + SPHERE CENTER 0.34259 0.872345 0.0890951 RAD 0.00617284 + txt002 + SPHERE CENTER 0.338969 0.848329 0.0846485 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32016 0.86421 0.0827387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.333079 0.882715 0.109385 RAD 0.00617284 + txt002 + SPHERE CENTER 0.310649 0.87458 0.103028 RAD 0.00617284 + txt002 + SPHERE CENTER 0.319948 0.869068 0.125228 RAD 0.00617284 + txt002 + SPHERE CENTER 0.351888 0.866833 0.111295 RAD 0.00617284 + txt002 + SPHERE CENTER 0.338757 0.853186 0.127138 RAD 0.00617284 + txt002 + SPHERE CENTER 0.348268 0.842817 0.106848 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337088 0.798572 0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.346884 0.808673 0.0420622 RAD 0.00617284 + txt002 + SPHERE CENTER 0.322361 0.807762 0.044793 RAD 0.00617284 + txt002 + SPHERE CENTER 0.335792 0.82298 0.0588533 RAD 0.00617284 + txt002 + SPHERE CENTER 0.361611 0.799483 0.0596212 RAD 0.00617284 + txt002 + SPHERE CENTER 0.350519 0.81379 0.0764123 RAD 0.00617284 + txt002 + SPHERE CENTER 0.351815 0.789382 0.079911 RAD 0.00617284 + txt002 + SPHERE CENTER 0.34818 0.784265 0.0455609 RAD 0.00617284 + txt002 + SPHERE CENTER 0.338384 0.774164 0.0658506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.323657 0.783355 0.0482916 RAD 0.00617284 + txt002 + SPHERE CENTER 0.280879 0.845371 0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER 0.291048 0.849036 0.0284303 RAD 0.00617284 + txt002 + SPHERE CENTER 0.304882 0.840755 0.0471312 RAD 0.00617284 + txt002 + SPHERE CENTER 0.287867 0.826067 0.0369125 RAD 0.00617284 + txt002 + SPHERE CENTER 0.267046 0.853652 0.0319289 RAD 0.00617284 + txt002 + SPHERE CENTER 0.263865 0.830683 0.0404111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.256877 0.849987 0.0541285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.28406 0.868341 0.0421477 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273891 0.864676 0.0643473 RAD 0.00617284 + txt002 + SPHERE CENTER 0.297894 0.86006 0.0608487 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273842 0.862735 0.153697 RAD 0.0185185 + txt002 + SPHERE CENTER 0.282313 0.885497 0.158144 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29787 0.867718 0.150967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.281455 0.876946 0.134996 RAD 0.00617284 + txt002 + SPHERE CENTER 0.258284 0.880514 0.160875 RAD 0.00617284 + txt002 + SPHERE CENTER 0.257427 0.871963 0.137727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.249813 0.857752 0.156428 RAD 0.00617284 + txt002 + SPHERE CENTER 0.274699 0.871286 0.176845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.266228 0.848523 0.172398 RAD 0.00617284 + txt002 + SPHERE CENTER 0.290257 0.853506 0.169668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.225263 0.849407 0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.21889 0.873186 0.0974792 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236437 0.866351 0.113449 RAD 0.00617284 + txt002 + SPHERE CENTER 0.240865 0.865588 0.0891702 RAD 0.00617284 + txt002 + SPHERE CENTER 0.207715 0.856242 0.0834188 RAD 0.00617284 + txt002 + SPHERE CENTER 0.22969 0.848644 0.0751099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.214088 0.832464 0.0853287 RAD 0.00617284 + txt002 + SPHERE CENTER 0.203288 0.857005 0.107698 RAD 0.00617284 + txt002 + SPHERE CENTER 0.20966 0.833227 0.109608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.220835 0.850171 0.123668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.225855 0.806645 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.21762 0.818054 0.18016 RAD 0.00617284 + txt002 + SPHERE CENTER 0.241754 0.813612 0.177429 RAD 0.00617284 + txt002 + SPHERE CENTER 0.230661 0.83061 0.163369 RAD 0.00617284 + txt002 + SPHERE CENTER 0.20172 0.811087 0.162601 RAD 0.00617284 + txt002 + SPHERE CENTER 0.214761 0.823642 0.14581 RAD 0.00617284 + txt002 + SPHERE CENTER 0.209955 0.799677 0.142311 RAD 0.00617284 + txt002 + SPHERE CENTER 0.212813 0.794089 0.176661 RAD 0.00617284 + txt002 + SPHERE CENTER 0.221048 0.78268 0.156372 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236948 0.789647 0.173931 RAD 0.00617284 + txt002 + SPHERE CENTER 0.330051 0.815936 0.165419 RAD 0.0185185 + txt002 + SPHERE CENTER 0.350165 0.828769 0.171776 RAD 0.00617284 + txt002 + SPHERE CENTER 0.347547 0.820583 0.148628 RAD 0.00617284 + txt002 + SPHERE CENTER 0.333232 0.838905 0.156937 RAD 0.00617284 + txt002 + SPHERE CENTER 0.332668 0.824121 0.188567 RAD 0.00617284 + txt002 + SPHERE CENTER 0.315735 0.834258 0.173728 RAD 0.00617284 + txt002 + SPHERE CENTER 0.312554 0.811288 0.182211 RAD 0.00617284 + txt002 + SPHERE CENTER 0.346984 0.805799 0.180258 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32687 0.792966 0.173902 RAD 0.00617284 + txt002 + SPHERE CENTER 0.344366 0.797614 0.157111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282063 0.759846 0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER 0.29233 0.756464 0.193792 RAD 0.00617284 + txt002 + SPHERE CENTER 0.305929 0.765125 0.175091 RAD 0.00617284 + txt002 + SPHERE CENTER 0.288514 0.779336 0.18531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.268464 0.751185 0.190293 RAD 0.00617284 + txt002 + SPHERE CENTER 0.264649 0.774058 0.181811 RAD 0.00617284 + txt002 + SPHERE CENTER 0.258198 0.754567 0.168094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.285879 0.736973 0.180075 RAD 0.00617284 + txt002 + SPHERE CENTER 0.275612 0.740355 0.157875 RAD 0.00617284 + txt002 + SPHERE CENTER 0.299478 0.745634 0.161374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.33768 0.75581 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.362219 0.753851 0.124743 RAD 0.00617284 + txt002 + SPHERE CENTER 0.352319 0.76987 0.108773 RAD 0.00617284 + txt002 + SPHERE CENTER 0.350765 0.774086 0.133052 RAD 0.00617284 + txt002 + SPHERE CENTER 0.347581 0.739791 0.138803 RAD 0.00617284 + txt002 + SPHERE CENTER 0.336127 0.760026 0.147112 RAD 0.00617284 + txt002 + SPHERE CENTER 0.323042 0.74175 0.136894 RAD 0.00617284 + txt002 + SPHERE CENTER 0.349134 0.735575 0.114524 RAD 0.00617284 + txt002 + SPHERE CENTER 0.324595 0.737534 0.112614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.339233 0.751594 0.0985541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.172546 0.643951 0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER 0.202787 0.674191 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.219248 0.690652 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.223862 0.677807 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.206403 0.695267 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.198172 0.687036 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.185327 0.691651 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.181711 0.670575 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.215632 0.669577 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.199171 0.653116 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.220246 0.656732 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.244096 0.663122 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.261725 0.675225 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.244096 0.663122 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.238562 0.683777 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.261725 0.675225 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.238562 0.683777 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.244096 0.663122 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.267259 0.65457 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.249631 0.642468 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.249631 0.642468 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.191718 0.715501 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.203821 0.733129 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.212373 0.709966 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.191718 0.715501 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.183166 0.738664 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.171063 0.721035 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.171063 0.721035 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.203821 0.733129 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.191718 0.715501 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.212373 0.709966 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.131237 0.655019 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.12881 0.668451 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.151296 0.662426 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.137627 0.678869 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.108751 0.661044 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.117567 0.671463 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.111177 0.647613 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.12242 0.644601 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.124846 0.631169 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.144906 0.638576 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.120168 0.696329 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.115992 0.720665 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.135288 0.711449 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.135288 0.711449 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.100872 0.705544 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.120168 0.696329 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.105047 0.681209 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.100872 0.705544 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.105047 0.681209 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.120168 0.696329 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.100996 0.624779 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0796777 0.626446 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.100996 0.624779 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0954616 0.645433 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0796777 0.626446 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0954616 0.645433 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.100996 0.624779 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0852121 0.605791 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.10653 0.604124 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.10653 0.604124 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.183615 0.602641 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.197046 0.600215 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.207465 0.609032 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.191021 0.622701 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.173196 0.593824 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.167171 0.61631 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.159765 0.596251 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.18964 0.580155 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.176209 0.582581 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.200059 0.588972 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.153374 0.5724 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.155041 0.551082 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.174029 0.566866 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.153374 0.5724 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.134387 0.556617 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.13272 0.577935 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.13272 0.577935 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.155041 0.551082 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.153374 0.5724 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.174029 0.566866 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.224924 0.591572 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.24926 0.587397 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.240045 0.606693 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.240045 0.606693 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.23414 0.572277 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.224924 0.591572 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.209804 0.576452 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.23414 0.572277 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.209804 0.576452 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.224924 0.591572 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.358439 0.594141 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.428945 0.613592 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.448155 0.626191 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.43276 0.614455 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.42519 0.634643 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.44434 0.625328 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.421375 0.63378 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.42513 0.612729 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.45191 0.60514 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4327 0.592541 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436515 0.593404 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399007 0.621614 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.399844 0.625435 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.38905 0.60511 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.378352 0.627149 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.409801 0.641939 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.388308 0.643653 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.408963 0.638118 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.420499 0.619901 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.419661 0.61608 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.409705 0.599576 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37761 0.665691 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.389713 0.68332 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.398265 0.660156 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37761 0.665691 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.369058 0.688854 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356956 0.671225 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356956 0.671225 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.389713 0.68332 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37761 0.665691 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.398265 0.660156 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.388377 0.586119 0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.405974 0.594185 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.410332 0.593017 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.394768 0.609969 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.384019 0.587286 0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.372813 0.60307 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.366422 0.57922 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399584 0.570335 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.381987 0.562269 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.403942 0.569167 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337042 0.638217 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.341809 0.659244 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.360383 0.645657 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.345471 0.65787 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318468 0.651804 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32213 0.65043 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.313702 0.630777 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.33338 0.639592 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.328614 0.618565 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.351955 0.626005 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.317871 0.566667 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.314012 0.567308 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.336891 0.569787 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.320398 0.587901 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.294991 0.564188 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.301377 0.584781 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29885 0.563547 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.311485 0.546074 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.315344 0.545434 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.334364 0.548554 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.409774 0.542042 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.433888 0.53788 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.426423 0.55574 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.423551 0.558395 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.417238 0.524182 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.406901 0.544697 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.393124 0.528344 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.42011 0.521526 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.395996 0.525689 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.412646 0.539387 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.339267 0.522591 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.340934 0.501272 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.359921 0.517056 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.339267 0.522591 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.320279 0.506807 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318612 0.528125 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318612 0.528125 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.340934 0.501272 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.339267 0.522591 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.359921 0.517056 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.379835 0.550064 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.399304 0.540802 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.400119 0.563801 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.400489 0.54453 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37902 0.527065 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.380205 0.530793 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.359551 0.536327 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37865 0.546337 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.35918 0.555599 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.379464 0.569335 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.371785 0.0996195 0.544331 RAD 0.166667 + txt002 + SPHERE CENTER -0.393621 0.220501 0.729516 RAD 0.0555556 + txt002 + SPHERE CENTER -0.368601 0.279642 0.766439 RAD 0.0185185 + txt002 + SPHERE CENTER -0.354293 0.299716 0.765035 RAD 0.00617284 + txt002 + SPHERE CENTER -0.347717 0.279022 0.753281 RAD 0.00617284 + txt002 + SPHERE CENTER -0.366989 0.292196 0.745238 RAD 0.00617284 + txt002 + SPHERE CENTER -0.375177 0.300337 0.778193 RAD 0.00617284 + txt002 + SPHERE CENTER -0.387873 0.292817 0.758396 RAD 0.00617284 + txt002 + SPHERE CENTER -0.389485 0.280263 0.779597 RAD 0.00617284 + txt002 + SPHERE CENTER -0.355904 0.287162 0.786236 RAD 0.00617284 + txt002 + SPHERE CENTER -0.370213 0.267088 0.787639 RAD 0.00617284 + txt002 + SPHERE CENTER -0.349329 0.266468 0.774481 RAD 0.00617284 + txt002 + SPHERE CENTER -0.321889 0.238665 0.726118 RAD 0.0185185 + txt002 + SPHERE CENTER -0.304702 0.250544 0.71296 RAD 0.00617284 + txt002 + SPHERE CENTER -0.32307 0.238717 0.701455 RAD 0.00617284 + txt002 + SPHERE CENTER -0.327715 0.259421 0.714081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.30352 0.250492 0.737623 RAD 0.00617284 + txt002 + SPHERE CENTER -0.326533 0.259369 0.738744 RAD 0.00617284 + txt002 + SPHERE CENTER -0.320707 0.238612 0.750781 RAD 0.00617284 + txt002 + SPHERE CENTER -0.298875 0.229788 0.724997 RAD 0.00617284 + txt002 + SPHERE CENTER -0.316063 0.217908 0.738155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.317244 0.21796 0.713492 RAD 0.00617284 + txt002 + SPHERE CENTER -0.372464 0.281062 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER -0.362978 0.289441 0.671279 RAD 0.00617284 + txt002 + SPHERE CENTER -0.35549 0.267771 0.680442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.378255 0.270044 0.671155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.379952 0.302733 0.683315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.395229 0.283335 0.683192 RAD 0.00617284 + txt002 + SPHERE CENTER -0.389438 0.294353 0.704516 RAD 0.00617284 + txt002 + SPHERE CENTER -0.357187 0.30046 0.692603 RAD 0.00617284 + txt002 + SPHERE CENTER -0.366673 0.29208 0.713804 RAD 0.00617284 + txt002 + SPHERE CENTER -0.349699 0.278789 0.701767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.440333 0.261479 0.769837 RAD 0.0185185 + txt002 + SPHERE CENTER -0.443285 0.282991 0.781591 RAD 0.00617284 + txt002 + SPHERE CENTER -0.421181 0.271991 0.781342 RAD 0.00617284 + txt002 + SPHERE CENTER -0.4302 0.282046 0.760673 RAD 0.00617284 + txt002 + SPHERE CENTER -0.462437 0.27248 0.770086 RAD 0.00617284 + txt002 + SPHERE CENTER -0.449353 0.271534 0.749168 RAD 0.00617284 + txt002 + SPHERE CENTER -0.459485 0.250967 0.758332 RAD 0.00617284 + txt002 + SPHERE CENTER -0.453417 0.262424 0.790755 RAD 0.00617284 + txt002 + SPHERE CENTER -0.450466 0.240911 0.779001 RAD 0.00617284 + txt002 + SPHERE CENTER -0.431313 0.251423 0.790506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.444196 0.262898 0.695877 RAD 0.0185185 + txt002 + SPHERE CENTER -0.449273 0.285685 0.687835 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436139 0.282528 0.708504 RAD 0.00617284 + txt002 + SPHERE CENTER -0.426189 0.27701 0.68659 RAD 0.00617284 + txt002 + SPHERE CENTER -0.45733 0.266055 0.675209 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434246 0.257381 0.673964 RAD 0.00617284 + txt002 + SPHERE CENTER -0.452254 0.243269 0.683251 RAD 0.00617284 + txt002 + SPHERE CENTER -0.46728 0.271573 0.697123 RAD 0.00617284 + txt002 + SPHERE CENTER -0.462204 0.248787 0.705165 RAD 0.00617284 + txt002 + SPHERE CENTER -0.454146 0.268416 0.717791 RAD 0.00617284 + txt002 + SPHERE CENTER -0.465353 0.202338 0.732914 RAD 0.0185185 + txt002 + SPHERE CENTER -0.486123 0.204606 0.746073 RAD 0.00617284 + txt002 + SPHERE CENTER -0.464339 0.202946 0.757577 RAD 0.00617284 + txt002 + SPHERE CENTER -0.470107 0.223366 0.744951 RAD 0.00617284 + txt002 + SPHERE CENTER -0.487137 0.203998 0.72141 RAD 0.00617284 + txt002 + SPHERE CENTER -0.471122 0.222757 0.720288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.466367 0.201729 0.708251 RAD 0.00617284 + txt002 + SPHERE CENTER -0.481368 0.183578 0.734036 RAD 0.00617284 + txt002 + SPHERE CENTER -0.460599 0.18131 0.720878 RAD 0.00617284 + txt002 + SPHERE CENTER -0.459584 0.181918 0.745541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.389758 0.219082 0.803476 RAD 0.0185185 + txt002 + SPHERE CENTER -0.378635 0.228779 0.823273 RAD 0.00617284 + txt002 + SPHERE CENTER -0.365937 0.225483 0.802355 RAD 0.00617284 + txt002 + SPHERE CENTER -0.383364 0.24293 0.8036 RAD 0.00617284 + txt002 + SPHERE CENTER -0.402455 0.222377 0.824394 RAD 0.00617284 + txt002 + SPHERE CENTER -0.407185 0.236529 0.804721 RAD 0.00617284 + txt002 + SPHERE CENTER -0.413578 0.21268 0.804597 RAD 0.00617284 + txt002 + SPHERE CENTER -0.385029 0.20493 0.823149 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396152 0.195233 0.803352 RAD 0.00617284 + txt002 + SPHERE CENTER -0.372331 0.201634 0.802231 RAD 0.00617284 + txt002 + SPHERE CENTER -0.414778 0.15994 0.766553 RAD 0.0185185 + txt002 + SPHERE CENTER -0.412573 0.147477 0.787754 RAD 0.00617284 + txt002 + SPHERE CENTER -0.39322 0.15977 0.77859 RAD 0.00617284 + txt002 + SPHERE CENTER -0.412448 0.172167 0.787878 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434131 0.147647 0.775717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434006 0.172338 0.775841 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436336 0.16011 0.754517 RAD 0.00617284 + txt002 + SPHERE CENTER -0.414903 0.13525 0.766429 RAD 0.00617284 + txt002 + SPHERE CENTER -0.417108 0.147713 0.745229 RAD 0.00617284 + txt002 + SPHERE CENTER -0.39555 0.147543 0.757266 RAD 0.00617284 + txt002 + SPHERE CENTER -0.343046 0.178104 0.763155 RAD 0.0185185 + txt002 + SPHERE CENTER -0.319723 0.177083 0.771198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.325124 0.189464 0.750529 RAD 0.00617284 + txt002 + SPHERE CENTER -0.332294 0.198298 0.772443 RAD 0.00617284 + txt002 + SPHERE CENTER -0.337645 0.165722 0.783824 RAD 0.00617284 + txt002 + SPHERE CENTER -0.350216 0.186938 0.785069 RAD 0.00617284 + txt002 + SPHERE CENTER -0.360967 0.166743 0.775781 RAD 0.00617284 + txt002 + SPHERE CENTER -0.330475 0.156889 0.76191 RAD 0.00617284 + txt002 + SPHERE CENTER -0.353797 0.157909 0.753867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.335876 0.16927 0.741241 RAD 0.00617284 + txt002 + SPHERE CENTER -0.191247 0.166275 0.655442 RAD 0.0555556 + txt002 + SPHERE CENTER -0.130089 0.20793 0.652044 RAD 0.0185185 + txt002 + SPHERE CENTER -0.115471 0.221102 0.637128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.126388 0.200597 0.628759 RAD 0.00617284 + txt002 + SPHERE CENTER -0.13987 0.220766 0.633356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.119172 0.228435 0.660413 RAD 0.00617284 + txt002 + SPHERE CENTER -0.143571 0.228099 0.656641 RAD 0.00617284 + txt002 + SPHERE CENTER -0.13379 0.215264 0.675329 RAD 0.00617284 + txt002 + SPHERE CENTER -0.10569 0.208266 0.655816 RAD 0.00617284 + txt002 + SPHERE CENTER -0.120308 0.195095 0.670732 RAD 0.00617284 + txt002 + SPHERE CENTER -0.116607 0.187762 0.647447 RAD 0.00617284 + txt002 + SPHERE CENTER -0.154295 0.172673 0.591563 RAD 0.0185185 + txt002 + SPHERE CENTER -0.15554 0.180792 0.568278 RAD 0.00617284 + txt002 + SPHERE CENTER -0.17557 0.171251 0.579113 RAD 0.00617284 + txt002 + SPHERE CENTER -0.166926 0.19323 0.586315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.134265 0.182215 0.580727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.145651 0.194652 0.598764 RAD 0.00617284 + txt002 + SPHERE CENTER -0.133019 0.174096 0.604012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.142909 0.160236 0.573526 RAD 0.00617284 + txt002 + SPHERE CENTER -0.141663 0.152117 0.596811 RAD 0.00617284 + txt002 + SPHERE CENTER -0.162939 0.150694 0.584361 RAD 0.00617284 + txt002 + SPHERE CENTER -0.192135 0.230419 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.18209 0.243049 0.599717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.168159 0.227721 0.613157 RAD 0.00617284 + txt002 + SPHERE CENTER -0.185251 0.218634 0.597829 RAD 0.00617284 + txt002 + SPHERE CENTER -0.206066 0.245747 0.604965 RAD 0.00617284 + txt002 + SPHERE CENTER -0.209227 0.221332 0.603077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.216111 0.233117 0.623653 RAD 0.00617284 + txt002 + SPHERE CENTER -0.188974 0.254834 0.620293 RAD 0.00617284 + txt002 + SPHERE CENTER -0.199019 0.242204 0.638981 RAD 0.00617284 + txt002 + SPHERE CENTER -0.175043 0.239506 0.633733 RAD 0.00617284 + txt002 + SPHERE CENTER -0.167041 0.201532 0.715923 RAD 0.0185185 + txt002 + SPHERE CENTER -0.151829 0.219088 0.724292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.14514 0.205084 0.705088 RAD 0.00617284 + txt002 + SPHERE CENTER -0.163068 0.221861 0.702483 RAD 0.00617284 + txt002 + SPHERE CENTER -0.173729 0.215537 0.735128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.184969 0.218309 0.713318 RAD 0.00617284 + txt002 + SPHERE CENTER -0.188942 0.197981 0.726759 RAD 0.00617284 + txt002 + SPHERE CENTER -0.155801 0.19876 0.737733 RAD 0.00617284 + txt002 + SPHERE CENTER -0.171014 0.181204 0.729364 RAD 0.00617284 + txt002 + SPHERE CENTER -0.149113 0.184756 0.718528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.229087 0.224021 0.682285 RAD 0.0185185 + txt002 + SPHERE CENTER -0.22829 0.248268 0.686881 RAD 0.00617284 + txt002 + SPHERE CENTER -0.207937 0.234532 0.689486 RAD 0.00617284 + txt002 + SPHERE CENTER -0.216949 0.2391 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER -0.249439 0.237756 0.67968 RAD 0.00617284 + txt002 + SPHERE CENTER -0.238098 0.228589 0.659755 RAD 0.00617284 + txt002 + SPHERE CENTER -0.250236 0.213509 0.675083 RAD 0.00617284 + txt002 + SPHERE CENTER -0.240428 0.233189 0.702209 RAD 0.00617284 + txt002 + SPHERE CENTER -0.241225 0.208942 0.697613 RAD 0.00617284 + txt002 + SPHERE CENTER -0.220075 0.219453 0.704814 RAD 0.00617284 + txt002 + SPHERE CENTER -0.228199 0.159877 0.719322 RAD 0.0185185 + txt002 + SPHERE CENTER -0.229756 0.167942 0.742607 RAD 0.00617284 + txt002 + SPHERE CENTER -0.207683 0.16569 0.731771 RAD 0.00617284 + txt002 + SPHERE CENTER -0.223214 0.183484 0.72457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.250271 0.162129 0.730157 RAD 0.00617284 + txt002 + SPHERE CENTER -0.243729 0.177671 0.71212 RAD 0.00617284 + txt002 + SPHERE CENTER -0.248714 0.154064 0.706872 RAD 0.00617284 + txt002 + SPHERE CENTER -0.234741 0.144336 0.737359 RAD 0.00617284 + txt002 + SPHERE CENTER -0.233184 0.13627 0.714074 RAD 0.00617284 + txt002 + SPHERE CENTER -0.212668 0.142084 0.726523 RAD 0.00617284 + txt002 + SPHERE CENTER -0.129201 0.143787 0.689081 RAD 0.0185185 + txt002 + SPHERE CENTER -0.105335 0.14887 0.692853 RAD 0.00617284 + txt002 + SPHERE CENTER -0.115741 0.153943 0.671044 RAD 0.00617284 + txt002 + SPHERE CENTER -0.121723 0.167242 0.690969 RAD 0.00617284 + txt002 + SPHERE CENTER -0.118795 0.138714 0.71089 RAD 0.00617284 + txt002 + SPHERE CENTER -0.135183 0.157086 0.709006 RAD 0.00617284 + txt002 + SPHERE CENTER -0.142661 0.13363 0.707118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.112813 0.125414 0.690965 RAD 0.00617284 + txt002 + SPHERE CENTER -0.136679 0.120331 0.687193 RAD 0.00617284 + txt002 + SPHERE CENTER -0.123219 0.130487 0.669156 RAD 0.00617284 + txt002 + SPHERE CENTER -0.190359 0.102131 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER -0.179968 0.0897843 0.711167 RAD 0.00617284 + txt002 + SPHERE CENTER -0.166467 0.105492 0.697727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.183804 0.114103 0.713055 RAD 0.00617284 + txt002 + SPHERE CENTER -0.20386 0.0864233 0.705919 RAD 0.00617284 + txt002 + SPHERE CENTER -0.207696 0.110742 0.707807 RAD 0.00617284 + txt002 + SPHERE CENTER -0.214251 0.0987702 0.687231 RAD 0.00617284 + txt002 + SPHERE CENTER -0.186523 0.0778128 0.690591 RAD 0.00617284 + txt002 + SPHERE CENTER -0.196914 0.0901597 0.671903 RAD 0.00617284 + txt002 + SPHERE CENTER -0.173022 0.0935207 0.677151 RAD 0.00617284 + txt002 + SPHERE CENTER -0.153407 0.108529 0.6286 RAD 0.0185185 + txt002 + SPHERE CENTER -0.130858 0.0995811 0.624003 RAD 0.00617284 + txt002 + SPHERE CENTER -0.135326 0.123725 0.621398 RAD 0.00617284 + txt002 + SPHERE CENTER -0.134736 0.113639 0.643928 RAD 0.00617284 + txt002 + SPHERE CENTER -0.148938 0.0843858 0.631205 RAD 0.00617284 + txt002 + SPHERE CENTER -0.152816 0.0984435 0.65113 RAD 0.00617284 + txt002 + SPHERE CENTER -0.171487 0.0933338 0.635801 RAD 0.00617284 + txt002 + SPHERE CENTER -0.149528 0.0944715 0.608675 RAD 0.00617284 + txt002 + SPHERE CENTER -0.172078 0.10342 0.613272 RAD 0.00617284 + txt002 + SPHERE CENTER -0.153997 0.118615 0.60607 RAD 0.00617284 + txt002 + SPHERE CENTER -0.31427 0.31427 0.544331 RAD 0.0555556 + txt002 + SPHERE CENTER -0.277961 0.367156 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.269898 0.374298 0.485076 RAD 0.00617284 + txt002 + SPHERE CENTER -0.270045 0.350338 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.291334 0.362218 0.487134 RAD 0.00617284 + txt002 + SPHERE CENTER -0.277815 0.391115 0.501329 RAD 0.00617284 + txt002 + SPHERE CENTER -0.299251 0.379036 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.285878 0.383973 0.523547 RAD 0.00617284 + txt002 + SPHERE CENTER -0.256525 0.379235 0.505236 RAD 0.00617284 + txt002 + SPHERE CENTER -0.264588 0.372093 0.527454 RAD 0.00617284 + txt002 + SPHERE CENTER -0.256671 0.355276 0.511201 RAD 0.00617284 + txt002 + SPHERE CENTER -0.252306 0.297666 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.235688 0.305995 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.259438 0.312359 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.245915 0.321516 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.228556 0.291303 0.509559 RAD 0.00617284 + txt002 + SPHERE CENTER -0.238783 0.306824 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.245173 0.282974 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.242079 0.282145 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.258696 0.273816 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.265828 0.288509 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.31427 0.31427 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER -0.32435 0.32435 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.33812 0.32066 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.32066 0.33812 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.3005 0.317959 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.29681 0.331729 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.29042 0.307879 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.317959 0.3005 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.307879 0.29042 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.331729 0.29681 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339925 0.383759 0.544331 RAD 0.0185185 + txt002 + SPHERE CENTER -0.334762 0.407156 0.538366 RAD 0.00617284 + txt002 + SPHERE CENTER -0.31686 0.392275 0.546597 RAD 0.00617284 + txt002 + SPHERE CENTER -0.326552 0.388696 0.524171 RAD 0.00617284 + txt002 + SPHERE CENTER -0.357827 0.39864 0.536101 RAD 0.00617284 + txt002 + SPHERE CENTER -0.349618 0.380181 0.521905 RAD 0.00617284 + txt002 + SPHERE CENTER -0.362991 0.375243 0.542066 RAD 0.00617284 + txt002 + SPHERE CENTER -0.348135 0.402218 0.558526 RAD 0.00617284 + txt002 + SPHERE CENTER -0.353299 0.378821 0.564491 RAD 0.00617284 + txt002 + SPHERE CENTER -0.330233 0.387337 0.566757 RAD 0.00617284 + txt002 + SPHERE CENTER -0.376234 0.330873 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.393346 0.348239 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.383366 0.345565 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.369843 0.354723 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.386213 0.333547 0.484868 RAD 0.00617284 + txt002 + SPHERE CENTER -0.362711 0.340031 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.369102 0.316181 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399736 0.324389 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.382624 0.307023 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.389757 0.321715 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.376234 0.330873 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.386461 0.346394 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.362711 0.340031 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.369843 0.354723 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399983 0.337237 0.579103 RAD 0.00617284 + txt002 + SPHERE CENTER -0.383366 0.345565 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.389757 0.321715 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.392851 0.322544 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.382624 0.307023 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.369102 0.316181 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.277961 0.367156 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.261966 0.385852 0.57931 RAD 0.00617284 + txt002 + SPHERE CENTER -0.259422 0.36581 0.565115 RAD 0.00617284 + txt002 + SPHERE CENTER -0.278159 0.38141 0.561208 RAD 0.00617284 + txt002 + SPHERE CENTER -0.280504 0.387198 0.595564 RAD 0.00617284 + txt002 + SPHERE CENTER -0.296698 0.382755 0.577461 RAD 0.00617284 + txt002 + SPHERE CENTER -0.2965 0.368501 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.261768 0.371598 0.599471 RAD 0.00617284 + txt002 + SPHERE CENTER -0.277764 0.352901 0.601529 RAD 0.00617284 + txt002 + SPHERE CENTER -0.259225 0.351556 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.31427 0.31427 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.304189 0.32435 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.29042 0.32066 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.307879 0.33812 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.328039 0.317959 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.331729 0.331729 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.33812 0.307879 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.31058 0.3005 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.32066 0.29042 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.29681 0.29681 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.252306 0.297666 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.228803 0.30415 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.238783 0.306824 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.245915 0.321516 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.242326 0.294992 0.603794 RAD 0.00617284 + txt002 + SPHERE CENTER -0.259438 0.312359 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.265828 0.288509 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.235194 0.2803 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.258696 0.273816 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.245173 0.282974 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.574159 0.153845 0.618405 RAD 0.0555556 + txt002 + SPHERE CENTER -0.612768 0.202534 0.658726 RAD 0.0185185 + txt002 + SPHERE CENTER -0.612732 0.225282 0.668328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.591695 0.212428 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER -0.60221 0.22113 0.64638 RAD 0.00617284 + txt002 + SPHERE CENTER -0.633805 0.215388 0.660098 RAD 0.00617284 + txt002 + SPHERE CENTER -0.623283 0.211236 0.63815 RAD 0.00617284 + txt002 + SPHERE CENTER -0.63384 0.192641 0.650495 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62329 0.206686 0.680674 RAD 0.00617284 + txt002 + SPHERE CENTER -0.623325 0.183939 0.671072 RAD 0.00617284 + txt002 + SPHERE CENTER -0.602253 0.193832 0.679302 RAD 0.00617284 + txt002 + SPHERE CENTER -0.543919 0.184086 0.678886 RAD 0.0185185 + txt002 + SPHERE CENTER -0.527458 0.200547 0.687117 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522843 0.187702 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.540303 0.205161 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.548533 0.196931 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.561378 0.201546 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER -0.564994 0.18047 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER -0.531074 0.179472 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.547535 0.163011 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER -0.526459 0.166627 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554987 0.225396 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.542885 0.243024 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER -0.534333 0.219861 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554987 0.225396 0.593714 RAD 0.00617284 + txt002 + SPHERE CENTER -0.563539 0.248559 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.575642 0.23093 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER -0.575642 0.23093 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542885 0.243024 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554987 0.225396 0.643096 RAD 0.00617284 + txt002 + SPHERE CENTER -0.534333 0.219861 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643008 0.172294 0.598245 RAD 0.0185185 + txt002 + SPHERE CENTER -0.660425 0.189742 0.599616 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645434 0.185725 0.618821 RAD 0.00617284 + txt002 + SPHERE CENTER -0.636618 0.196144 0.598245 RAD 0.00617284 + txt002 + SPHERE CENTER -0.657999 0.17631 0.57904 RAD 0.00617284 + txt002 + SPHERE CENTER -0.634191 0.182712 0.577669 RAD 0.00617284 + txt002 + SPHERE CENTER -0.640582 0.158862 0.577669 RAD 0.00617284 + txt002 + SPHERE CENTER -0.666816 0.165892 0.599616 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649399 0.148444 0.598245 RAD 0.00617284 + txt002 + SPHERE CENTER -0.651825 0.161875 0.618821 RAD 0.00617284 + txt002 + SPHERE CENTER -0.585228 0.195155 0.557924 RAD 0.0185185 + txt002 + SPHERE CENTER -0.574809 0.203972 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER -0.561378 0.201546 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER -0.568784 0.181486 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER -0.598659 0.197581 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER -0.592634 0.175095 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER -0.609078 0.188764 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER -0.591253 0.217641 0.549693 RAD 0.00617284 + txt002 + SPHERE CENTER -0.601672 0.208824 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER -0.577822 0.215215 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER -0.6044 0.123605 0.557924 RAD 0.0185185 + txt002 + SPHERE CENTER -0.620861 0.107144 0.549693 RAD 0.00617284 + txt002 + SPHERE CENTER -0.608016 0.102529 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER -0.625475 0.119989 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER -0.617245 0.128219 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER -0.621859 0.141064 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600784 0.14468 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER -0.599785 0.11076 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER -0.583324 0.127221 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER -0.58694 0.106145 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER -0.631939 0.130984 0.658726 RAD 0.0185185 + txt002 + SPHERE CENTER -0.643128 0.132649 0.680674 RAD 0.00617284 + txt002 + SPHERE CENTER -0.618482 0.133263 0.679302 RAD 0.00617284 + txt002 + SPHERE CENTER -0.631785 0.152367 0.671072 RAD 0.00617284 + txt002 + SPHERE CENTER -0.656585 0.130371 0.660098 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645242 0.150088 0.650495 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645397 0.128706 0.63815 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643283 0.111266 0.668328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.632094 0.109601 0.64638 RAD 0.00617284 + txt002 + SPHERE CENTER -0.618637 0.11188 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593331 0.0822954 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.591664 0.0609772 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.572676 0.076761 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593331 0.0822954 0.643096 RAD 0.00617284 + txt002 + SPHERE CENTER -0.612319 0.0665116 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.613986 0.0878298 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.613986 0.0878298 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER -0.591664 0.0609772 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593331 0.0822954 0.593714 RAD 0.00617284 + txt002 + SPHERE CENTER -0.572676 0.076761 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER -0.56309 0.112536 0.678886 RAD 0.0185185 + txt002 + SPHERE CENTER -0.549659 0.11011 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.53924 0.118927 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555684 0.132596 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER -0.573509 0.103719 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.579534 0.126205 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER -0.58694 0.106145 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER -0.557065 0.09005 0.687117 RAD 0.00617284 + txt002 + SPHERE CENTER -0.570497 0.0924762 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.546646 0.0988668 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.494808 0.247614 0.43322 RAD 0.0555556 + txt002 + SPHERE CENTER -0.494287 0.313607 0.399581 RAD 0.0185185 + txt002 + SPHERE CENTER -0.484182 0.326876 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.470513 0.310432 0.39372 RAD 0.00617284 + txt002 + SPHERE CENTER -0.488171 0.302705 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.507957 0.330051 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.511946 0.305881 0.384149 RAD 0.00617284 + txt002 + SPHERE CENTER -0.518062 0.316783 0.405442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.490299 0.337778 0.402668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.500404 0.324509 0.420874 RAD 0.00617284 + txt002 + SPHERE CENTER -0.476629 0.321334 0.415013 RAD 0.00617284 + txt002 + SPHERE CENTER -0.452978 0.302539 0.460062 RAD 0.0185185 + txt002 + SPHERE CENTER -0.436971 0.320401 0.454201 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436675 0.29902 0.441856 RAD 0.00617284 + txt002 + SPHERE CENTER -0.455413 0.3148 0.438769 RAD 0.00617284 + txt002 + SPHERE CENTER -0.453274 0.32392 0.472408 RAD 0.00617284 + txt002 + SPHERE CENTER -0.471717 0.318318 0.456976 RAD 0.00617284 + txt002 + SPHERE CENTER -0.469281 0.306057 0.478269 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434535 0.30814 0.475494 RAD 0.00617284 + txt002 + SPHERE CENTER -0.450543 0.290278 0.481355 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434239 0.286759 0.463149 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434629 0.269833 0.396183 RAD 0.0185185 + txt002 + SPHERE CENTER -0.426389 0.279233 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER -0.445377 0.263449 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER -0.448298 0.286276 0.383837 RAD 0.00617284 + txt002 + SPHERE CENTER -0.415641 0.285616 0.396183 RAD 0.00617284 + txt002 + SPHERE CENTER -0.43755 0.29266 0.40513 RAD 0.00617284 + txt002 + SPHERE CENTER -0.42388 0.276216 0.417476 RAD 0.00617284 + txt002 + SPHERE CENTER -0.41272 0.262789 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.420959 0.253389 0.408529 RAD 0.00617284 + txt002 + SPHERE CENTER -0.431707 0.247006 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536117 0.258683 0.372739 RAD 0.0185185 + txt002 + SPHERE CENTER -0.549787 0.275127 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.549787 0.275127 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER -0.529727 0.282533 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536117 0.258683 0.348047 RAD 0.00617284 + txt002 + SPHERE CENTER -0.516058 0.266089 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522448 0.242239 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.556177 0.251277 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542508 0.234833 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER -0.556177 0.251277 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER -0.476459 0.214908 0.369341 RAD 0.0185185 + txt002 + SPHERE CENTER -0.457868 0.209819 0.353908 RAD 0.00617284 + txt002 + SPHERE CENTER -0.458164 0.2312 0.366254 RAD 0.00617284 + txt002 + SPHERE CENTER -0.453963 0.210053 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.476163 0.193527 0.356995 RAD 0.00617284 + txt002 + SPHERE CENTER -0.472258 0.193761 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.494753 0.198616 0.372427 RAD 0.00617284 + txt002 + SPHERE CENTER -0.480363 0.214674 0.344961 RAD 0.00617284 + txt002 + SPHERE CENTER -0.498954 0.219763 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.480659 0.236055 0.357307 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536638 0.19269 0.406378 RAD 0.0185185 + txt002 + SPHERE CENTER -0.549603 0.17251 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER -0.528912 0.177908 0.424584 RAD 0.00617284 + txt002 + SPHERE CENTER -0.549105 0.191778 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER -0.557329 0.187292 0.394032 RAD 0.00617284 + txt002 + SPHERE CENTER -0.556831 0.20656 0.409464 RAD 0.00617284 + txt002 + SPHERE CENTER -0.544363 0.207471 0.388171 RAD 0.00617284 + txt002 + SPHERE CENTER -0.537136 0.173421 0.390945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.524171 0.193601 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER -0.516445 0.178819 0.403291 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554467 0.291389 0.436618 RAD 0.0185185 + txt002 + SPHERE CENTER -0.562288 0.314604 0.439705 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542501 0.306499 0.45205 RAD 0.00617284 + txt002 + SPHERE CENTER -0.541186 0.310183 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER -0.574255 0.299494 0.424272 RAD 0.00617284 + txt002 + SPHERE CENTER -0.553152 0.295073 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER -0.566433 0.276279 0.421186 RAD 0.00617284 + txt002 + SPHERE CENTER -0.575569 0.29581 0.448652 RAD 0.00617284 + txt002 + SPHERE CENTER -0.567748 0.272595 0.445566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555781 0.287705 0.460998 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554987 0.225396 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER -0.567359 0.227186 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.54267 0.227528 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555283 0.246777 0.482603 RAD 0.00617284 + txt002 + SPHERE CENTER -0.579676 0.225054 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.567601 0.244644 0.46131 RAD 0.00617284 + txt002 + SPHERE CENTER -0.567305 0.223263 0.448964 RAD 0.00617284 + txt002 + SPHERE CENTER -0.567063 0.205805 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554691 0.204014 0.457911 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542374 0.206147 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER -0.513157 0.28032 0.497099 RAD 0.0185185 + txt002 + SPHERE CENTER -0.507811 0.298839 0.512531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.489718 0.287442 0.500186 RAD 0.00617284 + txt002 + SPHERE CENTER -0.505577 0.302049 0.488152 RAD 0.00617284 + txt002 + SPHERE CENTER -0.531251 0.291716 0.509445 RAD 0.00617284 + txt002 + SPHERE CENTER -0.529016 0.294927 0.485065 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536597 0.273198 0.494013 RAD 0.00617284 + txt002 + SPHERE CENTER -0.515392 0.27711 0.521479 RAD 0.00617284 + txt002 + SPHERE CENTER -0.520738 0.258591 0.506047 RAD 0.00617284 + txt002 + SPHERE CENTER -0.497299 0.265714 0.509133 RAD 0.00617284 + txt002 + SPHERE CENTER -0.552323 0.0329639 0.43322 RAD 0.0555556 + txt002 + SPHERE CENTER -0.625877 0.0248832 0.436618 RAD 0.0185185 + txt002 + SPHERE CENTER -0.646362 0.0316054 0.448652 RAD 0.00617284 + txt002 + SPHERE CENTER -0.625173 0.0287309 0.460998 RAD 0.00617284 + txt002 + SPHERE CENTER -0.627981 0.0478 0.445566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.647066 0.0277577 0.424272 RAD 0.00617284 + txt002 + SPHERE CENTER -0.628685 0.0439523 0.421186 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62658 0.0210355 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER -0.644258 0.00868865 0.439705 RAD 0.00617284 + txt002 + SPHERE CENTER -0.623773 0.00196644 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER -0.623069 0.00581415 0.45205 RAD 0.00617284 + txt002 + SPHERE CENTER -0.584567 0.0138144 0.497099 RAD 0.0185185 + txt002 + SPHERE CENTER -0.584898 0.0177119 0.521479 RAD 0.00617284 + txt002 + SPHERE CENTER -0.56353 0.0185345 0.509133 RAD 0.00617284 + txt002 + SPHERE CENTER -0.580268 0.0364224 0.506047 RAD 0.00617284 + txt002 + SPHERE CENTER -0.605935 0.0129918 0.509445 RAD 0.00617284 + txt002 + SPHERE CENTER -0.601305 0.0317022 0.494013 RAD 0.00617284 + txt002 + SPHERE CENTER -0.605605 0.00909422 0.485065 RAD 0.00617284 + txt002 + SPHERE CENTER -0.589197 -0.00489609 0.512531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.588867 -0.00879364 0.488152 RAD 0.00617284 + txt002 + SPHERE CENTER -0.567829 -0.00407348 0.500186 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593331 0.0822954 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER -0.593994 0.105299 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER -0.572783 0.0926585 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582384 0.100664 0.457911 RAD 0.00617284 + txt002 + SPHERE CENTER -0.614541 0.0949359 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.602932 0.090301 0.448964 RAD 0.00617284 + txt002 + SPHERE CENTER -0.613879 0.0719323 0.46131 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604941 0.0869303 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604278 0.0639267 0.482603 RAD 0.00617284 + txt002 + SPHERE CENTER -0.58373 0.0742898 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593633 0.0440327 0.372739 RAD 0.0185185 + txt002 + SPHERE CENTER -0.607302 0.0604766 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.607302 0.0604766 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER -0.587242 0.0678827 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593633 0.0440327 0.348047 RAD 0.00617284 + txt002 + SPHERE CENTER -0.573573 0.0514389 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.579964 0.0275889 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.613693 0.0366265 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600023 0.0201827 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER -0.613693 0.0366265 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER -0.561087 0.101445 0.406378 RAD 0.0185185 + txt002 + SPHERE CENTER -0.551884 0.118381 0.390945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536664 0.103361 0.403291 RAD 0.00617284 + txt002 + SPHERE CENTER -0.550745 0.0944221 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER -0.576307 0.116465 0.394032 RAD 0.00617284 + txt002 + SPHERE CENTER -0.575168 0.0925065 0.388171 RAD 0.00617284 + txt002 + SPHERE CENTER -0.58551 0.0995293 0.409464 RAD 0.00617284 + txt002 + SPHERE CENTER -0.562225 0.125404 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER -0.571428 0.108468 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER -0.547006 0.110383 0.424584 RAD 0.00617284 + txt002 + SPHERE CENTER -0.520079 0.0521134 0.369341 RAD 0.0185185 + txt002 + SPHERE CENTER -0.523344 0.0542684 0.344961 RAD 0.00617284 + txt002 + SPHERE CENTER -0.534291 0.0358996 0.357307 RAD 0.00617284 + txt002 + SPHERE CENTER -0.541988 0.0591566 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.509132 0.0704822 0.356995 RAD 0.00617284 + txt002 + SPHERE CENTER -0.527777 0.0753703 0.372427 RAD 0.00617284 + txt002 + SPHERE CENTER -0.505868 0.0683272 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.501435 0.0472252 0.353908 RAD 0.00617284 + txt002 + SPHERE CENTER -0.49817 0.0450702 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.512382 0.0288565 0.366254 RAD 0.00617284 + txt002 + SPHERE CENTER -0.584869 -0.0244483 0.399581 RAD 0.0185185 + txt002 + SPHERE CENTER -0.5935 -0.0473753 0.402668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.57344 -0.0399691 0.415013 RAD 0.00617284 + txt002 + SPHERE CENTER -0.595617 -0.0308315 0.420874 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604929 -0.0318545 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.607046 -0.0153107 0.405442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.596298 -0.00892756 0.384149 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582752 -0.0409921 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.574121 -0.0180651 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.562692 -0.0335859 0.39372 RAD 0.00617284 + txt002 + SPHERE CENTER -0.511316 -0.0163676 0.396183 RAD 0.0185185 + txt002 + SPHERE CENTER -0.48882 -0.0212225 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.497372 0.00194055 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.491256 -0.00896145 0.408529 RAD 0.00617284 + txt002 + SPHERE CENTER -0.502764 -0.0395307 0.396183 RAD 0.00617284 + txt002 + SPHERE CENTER -0.505199 -0.0272696 0.417476 RAD 0.00617284 + txt002 + SPHERE CENTER -0.525259 -0.0346758 0.40513 RAD 0.00617284 + txt002 + SPHERE CENTER -0.50888 -0.0286287 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER -0.531375 -0.0237738 0.383837 RAD 0.00617284 + txt002 + SPHERE CENTER -0.517432 -0.00546563 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER -0.54356 -0.0355172 0.460062 RAD 0.0185185 + txt002 + SPHERE CENTER -0.530389 -0.0495897 0.475494 RAD 0.00617284 + txt002 + SPHERE CENTER -0.519442 -0.031221 0.463149 RAD 0.00617284 + txt002 + SPHERE CENTER -0.53532 -0.0261165 0.481355 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554507 -0.0538859 0.472408 RAD 0.00617284 + txt002 + SPHERE CENTER -0.559438 -0.0304127 0.478269 RAD 0.00617284 + txt002 + SPHERE CENTER -0.567678 -0.0398133 0.456976 RAD 0.00617284 + txt002 + SPHERE CENTER -0.538628 -0.0589904 0.454201 RAD 0.00617284 + txt002 + SPHERE CENTER -0.551799 -0.0449178 0.438769 RAD 0.00617284 + txt002 + SPHERE CENTER -0.527681 -0.0406217 0.441856 RAD 0.00617284 + txt002 + SPHERE CENTER -0.451136 0.0058509 0.729516 RAD 0.0555556 + txt002 + SPHERE CENTER -0.447081 0.0051487 0.803476 RAD 0.0185185 + txt002 + SPHERE CENTER -0.435909 0.01504 0.823149 RAD 0.00617284 + txt002 + SPHERE CENTER -0.423265 0.0115452 0.802231 RAD 0.00617284 + txt002 + SPHERE CENTER -0.440694 0.0289993 0.803352 RAD 0.00617284 + txt002 + SPHERE CENTER -0.459725 0.00864346 0.824394 RAD 0.00617284 + txt002 + SPHERE CENTER -0.46451 0.0226028 0.804597 RAD 0.00617284 + txt002 + SPHERE CENTER -0.470897 -0.0012478 0.804721 RAD 0.00617284 + txt002 + SPHERE CENTER -0.442297 -0.00881065 0.823273 RAD 0.00617284 + txt002 + SPHERE CENTER -0.453468 -0.0187019 0.8036 RAD 0.00617284 + txt002 + SPHERE CENTER -0.429652 -0.0123054 0.802355 RAD 0.00617284 + txt002 + SPHERE CENTER -0.386138 0.0172804 0.763155 RAD 0.0185185 + txt002 + SPHERE CENTER -0.364644 0.0293677 0.76191 RAD 0.00617284 + txt002 + SPHERE CENTER -0.375512 0.0213457 0.741241 RAD 0.00617284 + txt002 + SPHERE CENTER -0.385352 0.0401449 0.753867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37527 0.0253024 0.783824 RAD 0.00617284 + txt002 + SPHERE CENTER -0.395978 0.0360796 0.775781 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396764 0.0132151 0.785069 RAD 0.00617284 + txt002 + SPHERE CENTER -0.36543 0.0065032 0.771198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.386924 -0.00558411 0.772443 RAD 0.00617284 + txt002 + SPHERE CENTER -0.376298 -0.00151881 0.750529 RAD 0.00617284 + txt002 + SPHERE CENTER -0.439178 0.0688765 0.766553 RAD 0.0185185 + txt002 + SPHERE CENTER -0.426942 0.0903221 0.766429 RAD 0.00617284 + txt002 + SPHERE CENTER -0.416328 0.0699989 0.757266 RAD 0.00617284 + txt002 + SPHERE CENTER -0.435083 0.0806307 0.745229 RAD 0.00617284 + txt002 + SPHERE CENTER -0.449792 0.0891998 0.775717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.457933 0.0795084 0.754517 RAD 0.00617284 + txt002 + SPHERE CENTER -0.462029 0.0677542 0.775841 RAD 0.00617284 + txt002 + SPHERE CENTER -0.431037 0.078568 0.787754 RAD 0.00617284 + txt002 + SPHERE CENTER -0.443274 0.0571224 0.787878 RAD 0.00617284 + txt002 + SPHERE CENTER -0.420423 0.0582447 0.77859 RAD 0.00617284 + txt002 + SPHERE CENTER -0.512079 -0.00628079 0.769837 RAD 0.0185185 + txt002 + SPHERE CENTER -0.523883 -0.000557006 0.790755 RAD 0.00617284 + txt002 + SPHERE CENTER -0.49924 -0.00208214 0.790506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.51057 0.0165974 0.779001 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536722 -0.00475566 0.770086 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523409 0.0123987 0.758332 RAD 0.00617284 + txt002 + SPHERE CENTER -0.524918 -0.0104794 0.749168 RAD 0.00617284 + txt002 + SPHERE CENTER -0.525392 -0.0234352 0.781591 RAD 0.00617284 + txt002 + SPHERE CENTER -0.513588 -0.029159 0.760673 RAD 0.00617284 + txt002 + SPHERE CENTER -0.500749 -0.0249603 0.781342 RAD 0.00617284 + txt002 + SPHERE CENTER -0.504176 0.0574471 0.732914 RAD 0.0185185 + txt002 + SPHERE CENTER -0.508666 0.0817008 0.734036 RAD 0.00617284 + txt002 + SPHERE CENTER -0.488971 0.0722467 0.745541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.489545 0.0732807 0.720878 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523872 0.0669012 0.72141 RAD 0.00617284 + txt002 + SPHERE CENTER -0.504751 0.058481 0.708251 RAD 0.00617284 + txt002 + SPHERE CENTER -0.519382 0.0426474 0.720288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523298 0.0658672 0.746073 RAD 0.00617284 + txt002 + SPHERE CENTER -0.518808 0.0416134 0.744951 RAD 0.00617284 + txt002 + SPHERE CENTER -0.503602 0.0564131 0.757577 RAD 0.00617284 + txt002 + SPHERE CENTER -0.516134 -0.00557859 0.695877 RAD 0.0185185 + txt002 + SPHERE CENTER -0.540463 -0.00154892 0.697123 RAD 0.00617284 + txt002 + SPHERE CENTER -0.52751 -0.00538221 0.717791 RAD 0.00617284 + txt002 + SPHERE CENTER -0.524673 0.0156462 0.705165 RAD 0.00617284 + txt002 + SPHERE CENTER -0.529087 -0.00174531 0.675209 RAD 0.00617284 + txt002 + SPHERE CENTER -0.513298 0.0154498 0.683251 RAD 0.00617284 + txt002 + SPHERE CENTER -0.504759 -0.00577498 0.673964 RAD 0.00617284 + txt002 + SPHERE CENTER -0.531924 -0.0227737 0.687835 RAD 0.00617284 + txt002 + SPHERE CENTER -0.507596 -0.0268034 0.68659 RAD 0.00617284 + txt002 + SPHERE CENTER -0.518971 -0.026607 0.708504 RAD 0.00617284 + txt002 + SPHERE CENTER -0.459039 -0.0578769 0.766439 RAD 0.0185185 + txt002 + SPHERE CENTER -0.451803 -0.0707378 0.786236 RAD 0.00617284 + txt002 + SPHERE CENTER -0.435761 -0.0561039 0.774481 RAD 0.00617284 + txt002 + SPHERE CENTER -0.454158 -0.0461991 0.787639 RAD 0.00617284 + txt002 + SPHERE CENTER -0.475081 -0.0725109 0.778193 RAD 0.00617284 + txt002 + SPHERE CENTER -0.477435 -0.0479721 0.779597 RAD 0.00617284 + txt002 + SPHERE CENTER -0.482316 -0.05965 0.758396 RAD 0.00617284 + txt002 + SPHERE CENTER -0.456685 -0.0824157 0.765035 RAD 0.00617284 + txt002 + SPHERE CENTER -0.46392 -0.0695548 0.745238 RAD 0.00617284 + txt002 + SPHERE CENTER -0.440643 -0.0677817 0.753281 RAD 0.00617284 + txt002 + SPHERE CENTER -0.463094 -0.0571747 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER -0.459563 -0.081612 0.692603 RAD 0.00617284 + txt002 + SPHERE CENTER -0.442243 -0.0665888 0.701767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.463589 -0.0696122 0.713804 RAD 0.00617284 + txt002 + SPHERE CENTER -0.480415 -0.0721979 0.683315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.48444 -0.0601982 0.704516 RAD 0.00617284 + txt002 + SPHERE CENTER -0.483946 -0.0477607 0.683192 RAD 0.00617284 + txt002 + SPHERE CENTER -0.459069 -0.0691745 0.671279 RAD 0.00617284 + txt002 + SPHERE CENTER -0.4626 -0.0447373 0.671155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.441749 -0.0541513 0.680442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.398096 -0.0457452 0.726118 RAD 0.0185185 + txt002 + SPHERE CENTER -0.373728 -0.0495643 0.724997 RAD 0.00617284 + txt002 + SPHERE CENTER -0.383722 -0.030137 0.713492 RAD 0.00617284 + txt002 + SPHERE CENTER -0.382672 -0.0306825 0.738155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.388102 -0.0651725 0.737623 RAD 0.00617284 + txt002 + SPHERE CENTER -0.397047 -0.0462908 0.750781 RAD 0.00617284 + txt002 + SPHERE CENTER -0.41247 -0.0613535 0.738744 RAD 0.00617284 + txt002 + SPHERE CENTER -0.389151 -0.064627 0.71296 RAD 0.00617284 + txt002 + SPHERE CENTER -0.41352 -0.060808 0.714081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399146 -0.0451997 0.701455 RAD 0.00617284 + txt002 + SPHERE CENTER -0.4293 -0.115031 0.544331 RAD 0.0555556 + txt002 + SPHERE CENTER -0.424299 -0.178985 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.412497 -0.190929 0.599471 RAD 0.00617284 + txt002 + SPHERE CENTER -0.400273 -0.174844 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.417001 -0.16674 0.601529 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436523 -0.195071 0.595564 RAD 0.00617284 + txt002 + SPHERE CENTER -0.441027 -0.170881 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.448325 -0.183127 0.577461 RAD 0.00617284 + txt002 + SPHERE CENTER -0.419795 -0.203175 0.57931 RAD 0.00617284 + txt002 + SPHERE CENTER -0.431597 -0.191231 0.561208 RAD 0.00617284 + txt002 + SPHERE CENTER -0.407571 -0.18709 0.565115 RAD 0.00617284 + txt002 + SPHERE CENTER -0.367336 -0.131634 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.343834 -0.12515 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.353814 -0.122476 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.360946 -0.107784 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.357357 -0.134308 0.603794 RAD 0.00617284 + txt002 + SPHERE CENTER -0.374468 -0.116942 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.380859 -0.140792 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.350225 -0.149 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.373727 -0.155484 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.360204 -0.146326 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.4293 -0.115031 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.41922 -0.10495 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40545 -0.10864 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.42291 -0.0911807 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.44307 -0.111341 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.44676 -0.0975713 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.45315 -0.121421 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.425611 -0.128801 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.435691 -0.138881 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.411841 -0.13249 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.486264 -0.162382 0.544331 RAD 0.0185185 + txt002 + SPHERE CENTER -0.502603 -0.174264 0.558526 RAD 0.00617284 + txt002 + SPHERE CENTER -0.479659 -0.170327 0.566757 RAD 0.00617284 + txt002 + SPHERE CENTER -0.495376 -0.15142 0.564491 RAD 0.00617284 + txt002 + SPHERE CENTER -0.509207 -0.166319 0.536101 RAD 0.00617284 + txt002 + SPHERE CENTER -0.501981 -0.143475 0.542066 RAD 0.00617284 + txt002 + SPHERE CENTER -0.492868 -0.154437 0.521905 RAD 0.00617284 + txt002 + SPHERE CENTER -0.49349 -0.185226 0.538366 RAD 0.00617284 + txt002 + SPHERE CENTER -0.477151 -0.173345 0.524171 RAD 0.00617284 + txt002 + SPHERE CENTER -0.470546 -0.18129 0.546597 RAD 0.00617284 + txt002 + SPHERE CENTER -0.491265 -0.0984274 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.501491 -0.082906 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.477742 -0.0892696 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.484874 -0.0745774 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.515014 -0.0920638 0.579103 RAD 0.00617284 + txt002 + SPHERE CENTER -0.498397 -0.0837352 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.504787 -0.107585 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.507882 -0.106756 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.497655 -0.122277 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.484132 -0.11312 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.491265 -0.0984274 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.508376 -0.0810612 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.498397 -0.0837352 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.484874 -0.0745774 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.501244 -0.0957534 0.484868 RAD 0.00617284 + txt002 + SPHERE CENTER -0.477742 -0.0892696 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.484132 -0.11312 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.514767 -0.104911 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.497655 -0.122277 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.504787 -0.107585 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.424299 -0.178985 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.411775 -0.200165 0.505236 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399922 -0.179342 0.511201 RAD 0.00617284 + txt002 + SPHERE CENTER -0.415187 -0.189948 0.527454 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436152 -0.199808 0.501329 RAD 0.00617284 + txt002 + SPHERE CENTER -0.439564 -0.189591 0.523547 RAD 0.00617284 + txt002 + SPHERE CENTER -0.448677 -0.178629 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.420888 -0.189202 0.485076 RAD 0.00617284 + txt002 + SPHERE CENTER -0.433412 -0.168023 0.487134 RAD 0.00617284 + txt002 + SPHERE CENTER -0.409035 -0.168379 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.4293 -0.115031 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER -0.439381 -0.10495 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.45315 -0.10864 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.435691 -0.0911807 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.415531 -0.111341 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.411841 -0.0975713 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40545 -0.121421 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.43299 -0.128801 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.42291 -0.138881 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.44676 -0.13249 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.367336 -0.131634 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.350719 -0.123305 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.374468 -0.116942 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.360946 -0.107784 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.343587 -0.137998 0.509559 RAD 0.00617284 + txt002 + SPHERE CENTER -0.353814 -0.122476 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.360204 -0.146326 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.357109 -0.147155 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.373727 -0.155484 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.380859 -0.140792 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.248762 -0.0483751 0.655442 RAD 0.0555556 + txt002 + SPHERE CENTER -0.183785 -0.0599222 0.689081 RAD 0.0185185 + txt002 + SPHERE CENTER -0.160406 -0.0522053 0.690965 RAD 0.00617284 + txt002 + SPHERE CENTER -0.171954 -0.0513956 0.669156 RAD 0.00617284 + txt002 + SPHERE CENTER -0.178533 -0.0358698 0.687193 RAD 0.00617284 + txt002 + SPHERE CENTER -0.172236 -0.0607319 0.71089 RAD 0.00617284 + txt002 + SPHERE CENTER -0.190363 -0.0443964 0.707118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.195615 -0.0684488 0.709006 RAD 0.00617284 + txt002 + SPHERE CENTER -0.165658 -0.0762577 0.692853 RAD 0.00617284 + txt002 + SPHERE CENTER -0.189036 -0.0839747 0.690969 RAD 0.00617284 + txt002 + SPHERE CENTER -0.177206 -0.075448 0.671044 RAD 0.00617284 + txt002 + SPHERE CENTER -0.187119 -0.0172857 0.6286 RAD 0.0185185 + txt002 + SPHERE CENTER -0.176731 -0.00705049 0.608675 RAD 0.00617284 + txt002 + SPHERE CENTER -0.192673 -0.025725 0.60607 RAD 0.00617284 + txt002 + SPHERE CENTER -0.200733 -0.00352517 0.613272 RAD 0.00617284 + txt002 + SPHERE CENTER -0.171177 0.00138875 0.631205 RAD 0.00617284 + txt002 + SPHERE CENTER -0.195179 0.00491406 0.635801 RAD 0.00617284 + txt002 + SPHERE CENTER -0.181564 -0.00884647 0.65113 RAD 0.00617284 + txt002 + SPHERE CENTER -0.163117 -0.020811 0.624003 RAD 0.00617284 + txt002 + SPHERE CENTER -0.173504 -0.0310463 0.643928 RAD 0.00617284 + txt002 + SPHERE CENTER -0.179058 -0.0394855 0.621398 RAD 0.00617284 + txt002 + SPHERE CENTER -0.215921 0.00673113 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER -0.20044 0.0258737 0.690591 RAD 0.00617284 + txt002 + SPHERE CENTER -0.196602 0.00551963 0.677151 RAD 0.00617284 + txt002 + SPHERE CENTER -0.215612 0.0203763 0.671903 RAD 0.00617284 + txt002 + SPHERE CENTER -0.21976 0.0270852 0.705919 RAD 0.00617284 + txt002 + SPHERE CENTER -0.234932 0.0215878 0.687231 RAD 0.00617284 + txt002 + SPHERE CENTER -0.235241 0.00794264 0.707807 RAD 0.00617284 + txt002 + SPHERE CENTER -0.200749 0.0122285 0.711167 RAD 0.00617284 + txt002 + SPHERE CENTER -0.21623 -0.00691403 0.713055 RAD 0.00617284 + txt002 + SPHERE CENTER -0.196911 -0.00812553 0.697727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.245428 -0.0910116 0.715923 RAD 0.0185185 + txt002 + SPHERE CENTER -0.234308 -0.0942304 0.737733 RAD 0.00617284 + txt002 + SPHERE CENTER -0.221514 -0.0854464 0.718528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.238704 -0.0714204 0.729364 RAD 0.00617284 + txt002 + SPHERE CENTER -0.258223 -0.0997955 0.735128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.262619 -0.0769856 0.726759 RAD 0.00617284 + txt002 + SPHERE CENTER -0.269343 -0.0965768 0.713318 RAD 0.00617284 + txt002 + SPHERE CENTER -0.241032 -0.113822 0.724292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.252152 -0.110603 0.702483 RAD 0.00617284 + txt002 + SPHERE CENTER -0.228237 -0.105038 0.705088 RAD 0.00617284 + txt002 + SPHERE CENTER -0.277564 -0.0243582 0.719322 RAD 0.0185185 + txt002 + SPHERE CENTER -0.275459 -0.0076281 0.737359 RAD 0.00617284 + txt002 + SPHERE CENTER -0.255218 -0.0167139 0.726523 RAD 0.00617284 + txt002 + SPHERE CENTER -0.270078 -0.00142185 0.714074 RAD 0.00617284 + txt002 + SPHERE CENTER -0.297806 -0.0152725 0.730157 RAD 0.00617284 + txt002 + SPHERE CENTER -0.292425 -0.00906621 0.706872 RAD 0.00617284 + txt002 + SPHERE CENTER -0.299911 -0.0320026 0.71212 RAD 0.00617284 + txt002 + SPHERE CENTER -0.282946 -0.0305645 0.742607 RAD 0.00617284 + txt002 + SPHERE CENTER -0.285051 -0.0472946 0.72457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.262704 -0.0396503 0.731771 RAD 0.00617284 + txt002 + SPHERE CENTER -0.310405 -0.0794645 0.682285 RAD 0.0185185 + txt002 + SPHERE CENTER -0.324811 -0.0817333 0.702209 RAD 0.00617284 + txt002 + SPHERE CENTER -0.300317 -0.0800146 0.704814 RAD 0.00617284 + txt002 + SPHERE CENTER -0.313378 -0.0603366 0.697613 RAD 0.00617284 + txt002 + SPHERE CENTER -0.334899 -0.0811832 0.67968 RAD 0.00617284 + txt002 + SPHERE CENTER -0.323466 -0.0597864 0.675083 RAD 0.00617284 + txt002 + SPHERE CENTER -0.320493 -0.0789143 0.659755 RAD 0.00617284 + txt002 + SPHERE CENTER -0.321838 -0.100861 0.686881 RAD 0.00617284 + txt002 + SPHERE CENTER -0.307433 -0.0985923 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER -0.297345 -0.0991425 0.689486 RAD 0.00617284 + txt002 + SPHERE CENTER -0.216626 -0.115028 0.652044 RAD 0.0185185 + txt002 + SPHERE CENTER -0.195663 -0.127519 0.655816 RAD 0.00617284 + txt002 + SPHERE CENTER -0.194866 -0.104303 0.647447 RAD 0.00617284 + txt002 + SPHERE CENTER -0.201738 -0.108803 0.670732 RAD 0.00617284 + txt002 + SPHERE CENTER -0.217423 -0.138245 0.660413 RAD 0.00617284 + txt002 + SPHERE CENTER -0.223497 -0.119529 0.675329 RAD 0.00617284 + txt002 + SPHERE CENTER -0.238386 -0.125754 0.656641 RAD 0.00617284 + txt002 + SPHERE CENTER -0.210551 -0.133744 0.637128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.231514 -0.121254 0.633356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.209754 -0.110528 0.628759 RAD 0.00617284 + txt002 + SPHERE CENTER -0.281603 -0.103481 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.291073 -0.126206 0.620293 RAD 0.00617284 + txt002 + SPHERE CENTER -0.271345 -0.119897 0.633733 RAD 0.00617284 + txt002 + SPHERE CENTER -0.293457 -0.110246 0.638981 RAD 0.00617284 + txt002 + SPHERE CENTER -0.301332 -0.10979 0.604965 RAD 0.00617284 + txt002 + SPHERE CENTER -0.303716 -0.0938302 0.623653 RAD 0.00617284 + txt002 + SPHERE CENTER -0.291862 -0.0870656 0.603077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.279219 -0.119442 0.599717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.269749 -0.0967168 0.597829 RAD 0.00617284 + txt002 + SPHERE CENTER -0.25949 -0.113132 0.613157 RAD 0.00617284 + txt002 + SPHERE CENTER -0.21996 -0.0723919 0.591563 RAD 0.0185185 + txt002 + SPHERE CENTER -0.20388 -0.0673141 0.573526 RAD 0.00617284 + txt002 + SPHERE CENTER -0.216456 -0.0490355 0.584361 RAD 0.00617284 + txt002 + SPHERE CENTER -0.198742 -0.0609052 0.596811 RAD 0.00617284 + txt002 + SPHERE CENTER -0.207384 -0.0906706 0.580727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.202246 -0.0842617 0.604012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.223463 -0.0957484 0.598764 RAD 0.00617284 + txt002 + SPHERE CENTER -0.225098 -0.0788008 0.568278 RAD 0.00617284 + txt002 + SPHERE CENTER -0.241177 -0.0838786 0.586315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.237674 -0.0605222 0.579113 RAD 0.00617284 + txt002 + SPHERE CENTER -0.471405 0.471405 1.11022e-16 RAD 0.166667 + txt002 + SPHERE CENTER -0.508983 0.690426 8.51251e-17 RAD 0.0555556 + txt002 + SPHERE CENTER -0.484794 0.755941 -0.0246914 RAD 0.0185185 + txt002 + SPHERE CENTER -0.47411 0.767658 -0.0436186 RAD 0.00617284 + txt002 + SPHERE CENTER -0.467528 0.744501 -0.0381316 RAD 0.00617284 + txt002 + SPHERE CENTER -0.489758 0.749038 -0.0478724 RAD 0.00617284 + txt002 + SPHERE CENTER -0.491377 0.779098 -0.0301783 RAD 0.00617284 + txt002 + SPHERE CENTER -0.507025 0.760478 -0.0344321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.502061 0.767382 -0.0112511 RAD 0.00617284 + txt002 + SPHERE CENTER -0.469146 0.774562 -0.0204376 RAD 0.00617284 + txt002 + SPHERE CENTER -0.47983 0.762845 -0.00151032 RAD 0.00617284 + txt002 + SPHERE CENTER -0.462564 0.751405 -0.0149506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436283 0.7029 -0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER -0.418941 0.714226 -0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER -0.43889 0.704751 -0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.44101 0.724842 -0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.416335 0.712374 0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER -0.438403 0.722991 0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER -0.433677 0.701048 0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER -0.414215 0.692283 -0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER -0.431557 0.680957 0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434163 0.682808 -0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER -0.478434 0.695668 -0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.481931 0.703418 -0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER -0.500827 0.694124 -0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER -0.491475 0.716184 -0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER -0.459538 0.704962 -0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER -0.469082 0.717727 -0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.456041 0.697211 -0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER -0.46889 0.682902 -0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.465393 0.675152 -0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER -0.487786 0.673608 -0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER -0.557494 0.743468 -0.0178949 RAD 0.0185185 + txt002 + SPHERE CENTER -0.560084 0.767402 -0.0233819 RAD 0.00617284 + txt002 + SPHERE CENTER -0.543179 0.760285 -0.00685171 RAD 0.00617284 + txt002 + SPHERE CENTER -0.53997 0.755145 -0.0307879 RAD 0.00617284 + txt002 + SPHERE CENTER -0.574398 0.750585 -0.0344251 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554284 0.738328 -0.0418311 RAD 0.00617284 + txt002 + SPHERE CENTER -0.571808 0.726651 -0.0289382 RAD 0.00617284 + txt002 + SPHERE CENTER -0.577608 0.755725 -0.0104889 RAD 0.00617284 + txt002 + SPHERE CENTER -0.575017 0.731791 -0.00500196 RAD 0.00617284 + txt002 + SPHERE CENTER -0.560703 0.748608 0.00604126 RAD 0.00617284 + txt002 + SPHERE CENTER -0.551134 0.683194 -0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER -0.573364 0.687731 -0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.571303 0.682033 -0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER -0.56324 0.703871 -0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER -0.553195 0.688893 -0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER -0.543071 0.705033 -0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER -0.530964 0.684356 -0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.561258 0.667055 -0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539027 0.662518 -0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.559196 0.661356 -0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER -0.581682 0.677953 0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER -0.601808 0.682851 0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER -0.579842 0.680568 0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.58454 0.700216 0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.603648 0.680237 -0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER -0.58638 0.697602 -0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER -0.583522 0.675339 -0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER -0.59895 0.660588 0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER -0.578824 0.65569 -0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.576984 0.658304 0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER -0.515343 0.7507 0.0425863 RAD 0.0185185 + txt002 + SPHERE CENTER -0.506594 0.773394 0.0468401 RAD 0.00617284 + txt002 + SPHERE CENTER -0.491321 0.755462 0.0394341 RAD 0.00617284 + txt002 + SPHERE CENTER -0.507924 0.764807 0.0237283 RAD 0.00617284 + txt002 + SPHERE CENTER -0.530616 0.768632 0.0499923 RAD 0.00617284 + txt002 + SPHERE CENTER -0.531946 0.760045 0.0268805 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539365 0.745938 0.0457385 RAD 0.00617284 + txt002 + SPHERE CENTER -0.514012 0.759287 0.065698 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522762 0.736593 0.0614442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.49874 0.741355 0.058292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539531 0.685185 0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.538818 0.693658 0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER -0.517905 0.691194 0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER -0.534075 0.708875 0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER -0.560445 0.687649 0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555702 0.702866 0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.561158 0.679176 0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER -0.544274 0.669969 0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.544988 0.661495 0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523361 0.667505 0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER -0.466832 0.697658 0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER -0.447385 0.709346 0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.447429 0.703286 0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER -0.46231 0.721188 0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER -0.466788 0.703718 0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER -0.481713 0.71556 0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER -0.486235 0.692031 0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.451907 0.685816 0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.471354 0.674129 0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.451951 0.679757 0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER -0.335322 0.607487 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.283164 0.659645 0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER -0.269894 0.672915 0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER -0.275822 0.649528 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.293281 0.666987 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.277236 0.683032 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.300624 0.677104 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.290507 0.669762 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.259777 0.665573 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.273047 0.652302 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.265705 0.642185 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.286452 0.603979 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.279361 0.614273 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.303327 0.613293 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.288206 0.628413 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.262487 0.604959 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.271332 0.619099 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.269578 0.594664 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.277607 0.589839 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.284698 0.579544 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.301572 0.588858 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.33883 0.656357 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.328536 0.663448 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.314396 0.654603 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.329516 0.639482 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.35297 0.665202 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.353951 0.641237 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.363265 0.658111 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.33785 0.680322 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.348145 0.673232 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.32371 0.671477 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.332034 0.663153 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.321274 0.684748 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.308341 0.666888 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.326131 0.678752 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.344967 0.681014 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.349824 0.675018 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.355727 0.659419 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.327177 0.669149 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.337937 0.647554 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.314244 0.651289 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.3877 0.659866 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.391875 0.684201 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37258 0.674986 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37258 0.674986 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.406996 0.669081 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.3877 0.659866 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40282 0.644745 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.406996 0.669081 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40282 0.644745 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.3877 0.659866 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.384191 0.610996 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.389739 0.622198 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.366159 0.617804 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.378964 0.63493 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.407771 0.61539 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396997 0.628121 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.402224 0.604188 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.394966 0.598265 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.389418 0.587062 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.371386 0.593871 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.279656 0.610775 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.258061 0.621535 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.264057 0.616678 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.275921 0.634468 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.27366 0.615632 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.29152 0.628565 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.295255 0.604872 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.261795 0.597842 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.28339 0.587082 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.267791 0.592985 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.331813 0.558618 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.320611 0.55307 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.30788 0.563845 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.325005 0.57665 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.344544 0.547843 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.348938 0.571423 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.355747 0.553391 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.327419 0.535038 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.338621 0.540585 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.314688 0.545813 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.282943 0.555109 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.258608 0.550934 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.267823 0.570229 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.267823 0.570229 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.273728 0.535813 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.282943 0.555109 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.298064 0.539989 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.273728 0.535813 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.298064 0.539989 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.282943 0.555109 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.335322 0.607487 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.313405 0.629404 -0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.316595 0.626214 -0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.318408 0.606941 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.335868 0.624401 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.311592 0.648676 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.330864 0.646863 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.308402 0.651867 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.294133 0.631217 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.290942 0.634407 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.295946 0.611945 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.331813 0.558618 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.319608 0.539107 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.307378 0.556863 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.322499 0.541743 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.344043 0.540862 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.346933 0.543497 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.356248 0.560372 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.328923 0.555982 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.341128 0.575492 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.316693 0.573738 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.384191 0.610996 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.403702 0.623201 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.401066 0.62031 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.385946 0.635431 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.386827 0.613886 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.369071 0.626116 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.367317 0.601681 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.401947 0.598766 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.382437 0.586561 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399312 0.595876 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.316914 0.678274 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.305407 0.69384 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.296616 0.671002 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.317721 0.674446 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.325704 0.701111 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.338018 0.681717 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.337211 0.685545 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.3046 0.697667 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.316107 0.682101 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.295809 0.67483 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.3877 0.659866 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.391875 0.684201 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37258 0.674986 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37258 0.674986 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.406996 0.669081 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.3877 0.659866 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40282 0.644745 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.406996 0.669081 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40282 0.644745 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.3877 0.659866 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.33883 0.656357 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.329538 0.677411 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.314897 0.661584 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.332022 0.674389 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.353472 0.672184 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.355956 0.669162 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.362764 0.65113 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.336346 0.659378 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.345639 0.638325 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.321705 0.643552 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.264535 0.625895 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.248969 0.637402 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.268363 0.625088 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.271807 0.646193 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.245142 0.638209 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.267979 0.647 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.260708 0.626702 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.241698 0.617105 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.257264 0.605598 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.261092 0.604791 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.286452 0.603979 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.265398 0.613271 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.26842 0.610787 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.281225 0.627912 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.283431 0.606463 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.299257 0.621104 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.304484 0.59717 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.270625 0.589337 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.291679 0.580045 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.273647 0.586853 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.282943 0.555109 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.258608 0.550934 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.267823 0.570229 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.267823 0.570229 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.273728 0.535813 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.282943 0.555109 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.298064 0.539989 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.273728 0.535813 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.298064 0.539989 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.282943 0.555109 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645066 0.554344 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.681385 0.616373 -0.129006 RAD 0.0185185 + txt002 + SPHERE CENTER -0.678928 0.639472 -0.137375 RAD 0.00617284 + txt002 + SPHERE CENTER -0.661636 0.629767 -0.122663 RAD 0.00617284 + txt002 + SPHERE CENTER -0.664108 0.621631 -0.145845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.698678 0.626079 -0.143718 RAD 0.00617284 + txt002 + SPHERE CENTER -0.683858 0.608237 -0.152187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.701135 0.602979 -0.135349 RAD 0.00617284 + txt002 + SPHERE CENTER -0.696205 0.634214 -0.120537 RAD 0.00617284 + txt002 + SPHERE CENTER -0.698662 0.611115 -0.112168 RAD 0.00617284 + txt002 + SPHERE CENTER -0.678912 0.624508 -0.105825 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649723 0.609912 -0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER -0.640648 0.631982 -0.0560094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.625749 0.614812 -0.0656463 RAD 0.00617284 + txt002 + SPHERE CENTER -0.64267 0.62585 -0.0798417 RAD 0.00617284 + txt002 + SPHERE CENTER -0.664623 0.627081 -0.0527151 RAD 0.00617284 + txt002 + SPHERE CENTER -0.666645 0.620949 -0.0765474 RAD 0.00617284 + txt002 + SPHERE CENTER -0.673698 0.605012 -0.0590577 RAD 0.00617284 + txt002 + SPHERE CENTER -0.647702 0.616044 -0.0385197 RAD 0.00617284 + txt002 + SPHERE CENTER -0.656777 0.593974 -0.0448623 RAD 0.00617284 + txt002 + SPHERE CENTER -0.632802 0.598874 -0.0481565 RAD 0.00617284 + txt002 + SPHERE CENTER -0.607573 0.617144 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.595495 0.63057 -0.139672 RAD 0.00617284 + txt002 + SPHERE CENTER -0.594239 0.605919 -0.140323 RAD 0.00617284 + txt002 + SPHERE CENTER -0.615286 0.617371 -0.146288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.608828 0.641795 -0.122182 RAD 0.00617284 + txt002 + SPHERE CENTER -0.628619 0.628595 -0.128798 RAD 0.00617284 + txt002 + SPHERE CENTER -0.620906 0.628369 -0.105343 RAD 0.00617284 + txt002 + SPHERE CENTER -0.587782 0.630343 -0.116217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.59986 0.616917 -0.0993785 RAD 0.00617284 + txt002 + SPHERE CENTER -0.586526 0.605692 -0.116868 RAD 0.00617284 + txt002 + SPHERE CENTER -0.676727 0.560805 -0.177765 RAD 0.0185185 + txt002 + SPHERE CENTER -0.689897 0.57563 -0.192477 RAD 0.00617284 + txt002 + SPHERE CENTER -0.693998 0.575587 -0.168128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.673115 0.585222 -0.177114 RAD 0.00617284 + txt002 + SPHERE CENTER -0.672626 0.560848 -0.202114 RAD 0.00617284 + txt002 + SPHERE CENTER -0.655844 0.57044 -0.186751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.659456 0.546023 -0.187402 RAD 0.00617284 + txt002 + SPHERE CENTER -0.693509 0.551213 -0.193128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.680339 0.536388 -0.178416 RAD 0.00617284 + txt002 + SPHERE CENTER -0.69761 0.55117 -0.16878 RAD 0.00617284 + txt002 + SPHERE CENTER -0.602915 0.561576 -0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER -0.602201 0.570049 -0.194773 RAD 0.00617284 + txt002 + SPHERE CENTER -0.623084 0.560414 -0.185788 RAD 0.00617284 + txt002 + SPHERE CENTER -0.615021 0.582252 -0.177557 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582032 0.571211 -0.180578 RAD 0.00617284 + txt002 + SPHERE CENTER -0.594852 0.583414 -0.163362 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582745 0.562738 -0.157397 RAD 0.00617284 + txt002 + SPHERE CENTER -0.590095 0.549372 -0.188808 RAD 0.00617284 + txt002 + SPHERE CENTER -0.590808 0.540899 -0.165627 RAD 0.00617284 + txt002 + SPHERE CENTER -0.610978 0.539737 -0.179823 RAD 0.00617284 + txt002 + SPHERE CENTER -0.640408 0.498776 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.627785 0.478525 -0.166213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.615951 0.497935 -0.156576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.630799 0.484234 -0.142381 RAD 0.00617284 + txt002 + SPHERE CENTER -0.652241 0.479365 -0.169507 RAD 0.00617284 + txt002 + SPHERE CENTER -0.655255 0.485075 -0.145675 RAD 0.00617284 + txt002 + SPHERE CENTER -0.664864 0.499616 -0.163165 RAD 0.00617284 + txt002 + SPHERE CENTER -0.637394 0.493066 -0.183703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.650016 0.513317 -0.17736 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62556 0.512476 -0.174066 RAD 0.00617284 + txt002 + SPHERE CENTER -0.718878 0.553573 -0.117284 RAD 0.0185185 + txt002 + SPHERE CENTER -0.73992 0.563328 -0.108814 RAD 0.00617284 + txt002 + SPHERE CENTER -0.720935 0.559693 -0.0934517 RAD 0.00617284 + txt002 + SPHERE CENTER -0.719679 0.577348 -0.110668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.737863 0.557208 -0.132647 RAD 0.00617284 + txt002 + SPHERE CENTER -0.717623 0.571228 -0.1345 RAD 0.00617284 + txt002 + SPHERE CENTER -0.716821 0.547453 -0.141116 RAD 0.00617284 + txt002 + SPHERE CENTER -0.739118 0.539553 -0.115431 RAD 0.00617284 + txt002 + SPHERE CENTER -0.718076 0.529798 -0.1239 RAD 0.00617284 + txt002 + SPHERE CENTER -0.720133 0.535918 -0.100068 RAD 0.00617284 + txt002 + SPHERE CENTER -0.682558 0.491544 -0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.688647 0.474542 -0.0825505 RAD 0.00617284 + txt002 + SPHERE CENTER -0.666351 0.485132 -0.0818993 RAD 0.00617284 + txt002 + SPHERE CENTER -0.686417 0.498226 -0.0759343 RAD 0.00617284 + txt002 + SPHERE CENTER -0.704854 0.480953 -0.10004 RAD 0.00617284 + txt002 + SPHERE CENTER -0.702624 0.504637 -0.093424 RAD 0.00617284 + txt002 + SPHERE CENTER -0.698765 0.497955 -0.116879 RAD 0.00617284 + txt002 + SPHERE CENTER -0.684788 0.46786 -0.106005 RAD 0.00617284 + txt002 + SPHERE CENTER -0.678699 0.484862 -0.122844 RAD 0.00617284 + txt002 + SPHERE CENTER -0.662492 0.47845 -0.105354 RAD 0.00617284 + txt002 + SPHERE CENTER -0.687216 0.547112 -0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER -0.690713 0.554862 -0.0274488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.667813 0.552739 -0.0364345 RAD 0.00617284 + txt002 + SPHERE CENTER -0.682694 0.570641 -0.0446649 RAD 0.00617284 + txt002 + SPHERE CENTER -0.710116 0.549235 -0.0416443 RAD 0.00617284 + txt002 + SPHERE CENTER -0.702097 0.565014 -0.0588603 RAD 0.00617284 + txt002 + SPHERE CENTER -0.706619 0.541484 -0.0648253 RAD 0.00617284 + txt002 + SPHERE CENTER -0.695235 0.531333 -0.0334138 RAD 0.00617284 + txt002 + SPHERE CENTER -0.691738 0.523582 -0.0565949 RAD 0.00617284 + txt002 + SPHERE CENTER -0.672335 0.52921 -0.0423994 RAD 0.00617284 + txt002 + SPHERE CENTER -0.471405 0.471405 -0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER -0.501645 0.501645 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.499795 0.519956 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.493653 0.523893 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.479397 0.509638 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.507788 0.497708 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.48739 0.48739 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.509638 0.479397 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522043 0.511963 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523893 0.493653 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.515901 0.515901 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542955 0.490576 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.559233 0.507719 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539759 0.502501 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536564 0.514426 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.562428 0.495794 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539759 0.502501 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.54615 0.478651 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.565623 0.483869 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.549345 0.466726 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.54615 0.478651 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.490576 0.542955 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.483869 0.565623 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.466726 0.549345 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.478651 0.54615 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.507719 0.559233 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.502501 0.539759 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.514426 0.536564 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.495794 0.562428 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.502501 0.539759 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.478651 0.54615 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.430095 0.482473 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.430434 0.489762 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.449569 0.477255 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.445366 0.500519 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.41096 0.49498 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.425893 0.505737 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.410622 0.487691 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.415162 0.471716 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.414824 0.464428 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434297 0.45921 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.419026 0.523783 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.404771 0.538038 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.410297 0.515053 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.427756 0.532513 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.4135 0.546768 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436486 0.541242 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.427756 0.532513 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396041 0.529309 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.410297 0.515053 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.401567 0.506323 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399854 0.452233 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.377186 0.45894 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396659 0.464158 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.393464 0.476083 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.380381 0.447015 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396659 0.464158 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40305 0.440308 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.383576 0.43509 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.406245 0.428383 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40305 0.440308 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.482473 0.430095 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.48121 0.407271 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.464428 0.414824 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.487691 0.410622 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.499256 0.422542 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.505737 0.425893 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.500519 0.445366 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.475992 0.426744 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.477255 0.449569 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.45921 0.434297 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.452233 0.399854 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.43509 0.383576 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.428383 0.406245 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.440308 0.40305 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.45894 0.377186 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.464158 0.396659 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.476083 0.393464 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.447015 0.380381 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.464158 0.396659 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.440308 0.40305 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523783 0.419026 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.538038 0.404771 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.515053 0.410297 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.532513 0.427756 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.546768 0.4135 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.541242 0.436486 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.532513 0.427756 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.529309 0.396041 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.515053 0.410297 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.506323 0.401567 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.607487 0.335322 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.659645 0.283164 -0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER -0.672915 0.269894 -0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649528 0.275822 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.666987 0.293281 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.683032 0.277236 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.677104 0.300624 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.669762 0.290507 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.665573 0.259777 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.652302 0.273047 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.642185 0.265705 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.603979 0.286452 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.592776 0.280905 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.580045 0.291679 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.59717 0.304484 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.61671 0.275678 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.621104 0.299257 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.627912 0.281225 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.599585 0.262872 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.610787 0.26842 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.586853 0.273647 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.656357 0.33883 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.661904 0.350033 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.638325 0.345639 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.65113 0.362764 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.679937 0.343224 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.669162 0.355956 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.674389 0.332022 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.667131 0.326099 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.661584 0.314897 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643552 0.321705 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.663153 0.332034 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.685865 0.340177 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.679339 0.33606 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.669651 0.355123 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.669679 0.336151 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.653465 0.351097 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.646968 0.328008 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.679367 0.317089 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.656656 0.308945 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.672841 0.312971 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.659866 0.3877 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.664041 0.412036 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.644745 0.40282 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.644745 0.40282 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.679161 0.396915 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.659866 0.3877 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.674986 0.37258 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.679161 0.396915 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.674986 0.37258 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.659866 0.3877 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.610996 0.384191 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.600701 0.391282 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.586561 0.382437 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.601681 0.367317 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.625136 0.393037 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.626116 0.369071 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.635431 0.385946 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.610016 0.408157 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62031 0.401066 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.595876 0.399312 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.610775 0.279656 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.602632 0.256944 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.587686 0.273158 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.606749 0.26347 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62572 0.263442 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.629838 0.269968 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.633864 0.286153 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.606658 0.27313 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.614801 0.295841 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.591712 0.289344 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.558618 0.331813 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.551527 0.342108 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.575492 0.341128 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.560372 0.356248 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.534652 0.332793 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.543497 0.346933 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.541743 0.322499 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.549772 0.317673 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.556863 0.307378 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.573738 0.316693 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555109 0.282943 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.530773 0.278768 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539989 0.298064 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539989 0.298064 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.545894 0.263648 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555109 0.282943 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.570229 0.267823 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.545894 0.263648 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.570229 0.267823 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555109 0.282943 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645066 0.554344 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.668521 0.610229 0.153697 RAD 0.0185185 + txt002 + SPHERE CENTER -0.663938 0.633406 0.160875 RAD 0.00617284 + txt002 + SPHERE CENTER -0.64522 0.617928 0.156428 RAD 0.00617284 + txt002 + SPHERE CENTER -0.65892 0.626429 0.137727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.687239 0.625707 0.158144 RAD 0.00617284 + txt002 + SPHERE CENTER -0.682221 0.61873 0.134996 RAD 0.00617284 + txt002 + SPHERE CENTER -0.691822 0.602531 0.150967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.673539 0.617206 0.176845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.678123 0.59403 0.169668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.654822 0.601728 0.172398 RAD 0.00617284 + txt002 + SPHERE CENTER -0.598918 0.585648 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.580238 0.601562 0.162601 RAD 0.00617284 + txt002 + SPHERE CENTER -0.581665 0.587563 0.142311 RAD 0.00617284 + txt002 + SPHERE CENTER -0.59781 0.605914 0.14581 RAD 0.00617284 + txt002 + SPHERE CENTER -0.597491 0.599646 0.18016 RAD 0.00617284 + txt002 + SPHERE CENTER -0.615063 0.603999 0.163369 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616171 0.583732 0.177429 RAD 0.00617284 + txt002 + SPHERE CENTER -0.581346 0.581295 0.176661 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600026 0.565381 0.173931 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582773 0.567297 0.156372 RAD 0.00617284 + txt002 + SPHERE CENTER -0.619787 0.622977 0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.608008 0.63767 0.0834188 RAD 0.00617284 + txt002 + SPHERE CENTER -0.601637 0.613891 0.0853287 RAD 0.00617284 + txt002 + SPHERE CENTER -0.623239 0.620102 0.0751099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.626157 0.646756 0.0974792 RAD 0.00617284 + txt002 + SPHERE CENTER -0.641389 0.629188 0.0891702 RAD 0.00617284 + txt002 + SPHERE CENTER -0.637936 0.632063 0.113449 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604555 0.640545 0.107698 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616334 0.625852 0.123668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.598184 0.616766 0.109608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.714669 0.578925 0.104938 RAD 0.0185185 + txt002 + SPHERE CENTER -0.729812 0.597914 0.109385 RAD 0.00617284 + txt002 + SPHERE CENTER -0.711617 0.592661 0.125228 RAD 0.00617284 + txt002 + SPHERE CENTER -0.70632 0.602084 0.103028 RAD 0.00617284 + txt002 + SPHERE CENTER -0.732864 0.584178 0.0890951 RAD 0.00617284 + txt002 + SPHERE CENTER -0.709372 0.588348 0.0827387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.71772 0.565189 0.0846485 RAD 0.00617284 + txt002 + SPHERE CENTER -0.738161 0.574755 0.111295 RAD 0.00617284 + txt002 + SPHERE CENTER -0.723017 0.555767 0.106848 RAD 0.00617284 + txt002 + SPHERE CENTER -0.719965 0.569503 0.127138 RAD 0.00617284 + txt002 + SPHERE CENTER -0.665934 0.591673 0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER -0.658095 0.605761 0.0319289 RAD 0.00617284 + txt002 + SPHERE CENTER -0.647455 0.607672 0.0541285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643855 0.58746 0.0404111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.676573 0.589763 0.0284303 RAD 0.00617284 + txt002 + SPHERE CENTER -0.662334 0.571461 0.0369125 RAD 0.00617284 + txt002 + SPHERE CENTER -0.684413 0.575674 0.0471312 RAD 0.00617284 + txt002 + SPHERE CENTER -0.680174 0.609975 0.0421477 RAD 0.00617284 + txt002 + SPHERE CENTER -0.688013 0.595887 0.0608487 RAD 0.00617284 + txt002 + SPHERE CENTER -0.669535 0.611885 0.0643473 RAD 0.00617284 + txt002 + SPHERE CENTER -0.691213 0.52304 0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER -0.712906 0.511567 0.0596212 RAD 0.00617284 + txt002 + SPHERE CENTER -0.699372 0.507717 0.079911 RAD 0.00617284 + txt002 + SPHERE CENTER -0.710453 0.529503 0.0764123 RAD 0.00617284 + txt002 + SPHERE CENTER -0.704747 0.526889 0.0420622 RAD 0.00617284 + txt002 + SPHERE CENTER -0.702295 0.544826 0.0588533 RAD 0.00617284 + txt002 + SPHERE CENTER -0.683054 0.538362 0.044793 RAD 0.00617284 + txt002 + SPHERE CENTER -0.693665 0.505104 0.0455609 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671972 0.516576 0.0482916 RAD 0.00617284 + txt002 + SPHERE CENTER -0.680131 0.501254 0.0658506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.6938 0.541596 0.165419 RAD 0.0185185 + txt002 + SPHERE CENTER -0.70016 0.547376 0.188567 RAD 0.00617284 + txt002 + SPHERE CENTER -0.676324 0.546319 0.182211 RAD 0.00617284 + txt002 + SPHERE CENTER -0.690564 0.564621 0.173728 RAD 0.00617284 + txt002 + SPHERE CENTER -0.717636 0.542652 0.171776 RAD 0.00617284 + txt002 + SPHERE CENTER -0.70804 0.559898 0.156937 RAD 0.00617284 + txt002 + SPHERE CENTER -0.711276 0.536873 0.148628 RAD 0.00617284 + txt002 + SPHERE CENTER -0.703396 0.524351 0.180258 RAD 0.00617284 + txt002 + SPHERE CENTER -0.697037 0.518571 0.157111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.679561 0.523294 0.173902 RAD 0.00617284 + txt002 + SPHERE CENTER -0.670344 0.48571 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.67091 0.466887 0.138803 RAD 0.00617284 + txt002 + SPHERE CENTER -0.650637 0.480853 0.136894 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671107 0.490138 0.147112 RAD 0.00617284 + txt002 + SPHERE CENTER -0.690617 0.471745 0.124743 RAD 0.00617284 + txt002 + SPHERE CENTER -0.690815 0.494995 0.133052 RAD 0.00617284 + txt002 + SPHERE CENTER -0.690052 0.490567 0.108773 RAD 0.00617284 + txt002 + SPHERE CENTER -0.670147 0.46246 0.114524 RAD 0.00617284 + txt002 + SPHERE CENTER -0.669581 0.481283 0.0985541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649874 0.476425 0.112614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624197 0.517014 0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER -0.60809 0.516313 0.190293 RAD 0.00617284 + txt002 + SPHERE CENTER -0.60089 0.524375 0.168094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616221 0.538029 0.181811 RAD 0.00617284 + txt002 + SPHERE CENTER -0.631397 0.508952 0.193792 RAD 0.00617284 + txt002 + SPHERE CENTER -0.639529 0.530668 0.18531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.647504 0.509653 0.175091 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616065 0.495298 0.180075 RAD 0.00617284 + txt002 + SPHERE CENTER -0.632172 0.495999 0.161374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.608865 0.50336 0.157875 RAD 0.00617284 + txt002 + SPHERE CENTER -0.607487 0.335322 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.629404 0.313405 0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.626214 0.316595 0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.606941 0.318408 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624401 0.335868 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.648676 0.311592 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.646863 0.330864 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.651867 0.308402 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.631217 0.294133 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.634407 0.290942 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.611945 0.295946 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.558618 0.331813 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.537564 0.341105 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.540585 0.338621 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.553391 0.355747 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555596 0.334297 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.571423 0.348938 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.57665 0.325005 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542791 0.317172 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.563845 0.30788 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.545813 0.314688 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.610996 0.384191 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.601704 0.405245 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.587062 0.389418 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604188 0.402224 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.625637 0.400018 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.628121 0.396997 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.63493 0.378964 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.608512 0.387213 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.617804 0.366159 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593871 0.371386 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.678274 0.316914 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.697473 0.31938 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.674538 0.318074 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.681812 0.338182 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.701209 0.31822 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.685547 0.337022 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.682009 0.315754 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.693935 0.298112 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.674736 0.295646 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671 0.296805 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.659866 0.3877 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.664041 0.412036 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.644745 0.40282 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.644745 0.40282 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.679161 0.396915 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.659866 0.3877 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.674986 0.37258 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.679161 0.396915 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.674986 0.37258 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.659866 0.3877 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.656357 0.33883 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.675867 0.351035 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.673232 0.348145 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.658111 0.363265 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.658993 0.341721 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.641237 0.353951 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.639482 0.329516 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.674113 0.3266 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.654603 0.314396 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671477 0.32371 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.625895 0.264535 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.623429 0.245336 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604627 0.260997 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624736 0.268271 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.644697 0.248874 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.646004 0.271809 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.647163 0.268073 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624589 0.2416 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.627055 0.2608 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.605787 0.257262 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.603979 0.286452 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.591774 0.266942 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.579544 0.284698 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.594664 0.269578 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616209 0.268696 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.619099 0.271332 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.628413 0.288206 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.601088 0.283817 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.613293 0.303327 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.588858 0.301572 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555109 0.282943 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.530773 0.278768 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539989 0.298064 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539989 0.298064 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.545894 0.263648 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555109 0.282943 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.570229 0.267823 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.545894 0.263648 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.570229 0.267823 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555109 0.282943 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.471405 0.471405 0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER -0.441164 0.501645 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.424703 0.518106 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.420089 0.505261 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.437548 0.522721 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.445778 0.51449 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.458623 0.519105 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.462239 0.498029 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.428319 0.497031 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.44478 0.48057 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.423704 0.484186 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399854 0.490576 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.382226 0.502679 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399854 0.490576 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.405389 0.511231 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.382226 0.502679 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.405389 0.511231 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399854 0.490576 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.376691 0.482024 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.39432 0.469922 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.39432 0.469922 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.452233 0.542955 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.44013 0.560583 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.431578 0.53742 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.452233 0.542955 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.460785 0.566118 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.472887 0.548489 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.472887 0.548489 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.44013 0.560583 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.452233 0.542955 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.431578 0.53742 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.512714 0.482473 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.51514 0.495905 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.492654 0.48988 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.506323 0.506323 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.5352 0.488498 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.526383 0.498917 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.532774 0.475067 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.521531 0.472055 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.519105 0.458623 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.499045 0.46603 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523783 0.523783 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.527958 0.548119 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.508662 0.538903 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.508662 0.538903 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.543078 0.532998 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523783 0.523783 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.538903 0.508662 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.543078 0.532998 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.538903 0.508662 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523783 0.523783 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542955 0.452233 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.564273 0.4539 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542955 0.452233 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.548489 0.472887 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.564273 0.4539 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.548489 0.472887 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542955 0.452233 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.558738 0.433245 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.53742 0.431578 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.53742 0.431578 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.460336 0.430095 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.446904 0.427669 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436486 0.436486 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.45293 0.450155 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.470754 0.421278 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.47678 0.443764 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.484186 0.423704 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.454311 0.407609 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.467742 0.410035 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.443892 0.416426 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.490576 0.399854 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.488909 0.378536 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.469922 0.39432 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.490576 0.399854 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.509564 0.384071 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.511231 0.405389 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.511231 0.405389 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.488909 0.378536 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.490576 0.399854 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.469922 0.39432 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.419026 0.419026 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.39469 0.414851 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.403906 0.434147 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.403906 0.434147 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.409811 0.399731 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.419026 0.419026 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434147 0.403906 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.409811 0.399731 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434147 0.403906 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.419026 0.419026 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643951 -0.172546 1.11022e-16 RAD 0.166667 + txt002 + SPHERE CENTER -0.835815 -0.157543 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.871646 -0.122136 0.165419 RAD 0.0185185 + txt002 + SPHERE CENTER -0.871334 -0.102403 0.180258 RAD 0.00617284 + txt002 + SPHERE CENTER -0.850164 -0.113406 0.173902 RAD 0.00617284 + txt002 + SPHERE CENTER -0.862937 -0.100577 0.157111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.892817 -0.111133 0.171776 RAD 0.00617284 + txt002 + SPHERE CENTER -0.884419 -0.109307 0.148628 RAD 0.00617284 + txt002 + SPHERE CENTER -0.893129 -0.130866 0.156937 RAD 0.00617284 + txt002 + SPHERE CENTER -0.880044 -0.123961 0.188567 RAD 0.00617284 + txt002 + SPHERE CENTER -0.880356 -0.143694 0.173728 RAD 0.00617284 + txt002 + SPHERE CENTER -0.858873 -0.134964 0.182211 RAD 0.00617284 + txt002 + SPHERE CENTER -0.799077 -0.135649 0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER -0.781177 -0.120908 0.180075 RAD 0.00617284 + txt002 + SPHERE CENTER -0.778973 -0.13149 0.157875 RAD 0.00617284 + txt002 + SPHERE CENTER -0.795477 -0.113462 0.161374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.801282 -0.125067 0.193792 RAD 0.00617284 + txt002 + SPHERE CENTER -0.815582 -0.11762 0.175091 RAD 0.00617284 + txt002 + SPHERE CENTER -0.819182 -0.139808 0.18531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.784778 -0.143095 0.190293 RAD 0.00617284 + txt002 + SPHERE CENTER -0.802678 -0.157836 0.181811 RAD 0.00617284 + txt002 + SPHERE CENTER -0.782573 -0.153678 0.168094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.82339 -0.0854653 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.811594 -0.0654286 0.114524 RAD 0.00617284 + txt002 + SPHERE CENTER -0.80102 -0.0876595 0.112614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.820516 -0.0820122 0.0985541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.833964 -0.0632344 0.124743 RAD 0.00617284 + txt002 + SPHERE CENTER -0.842886 -0.079818 0.108773 RAD 0.00617284 + txt002 + SPHERE CENTER -0.845761 -0.083271 0.133052 RAD 0.00617284 + txt002 + SPHERE CENTER -0.814468 -0.0688817 0.138803 RAD 0.00617284 + txt002 + SPHERE CENTER -0.826265 -0.0889183 0.147112 RAD 0.00617284 + txt002 + SPHERE CENTER -0.803895 -0.0911125 0.136894 RAD 0.00617284 + txt002 + SPHERE CENTER -0.908384 -0.14403 0.104938 RAD 0.0185185 + txt002 + SPHERE CENTER -0.926643 -0.128672 0.111295 RAD 0.00617284 + txt002 + SPHERE CENTER -0.90826 -0.133221 0.127138 RAD 0.00617284 + txt002 + SPHERE CENTER -0.904034 -0.1198 0.106848 RAD 0.00617284 + txt002 + SPHERE CENTER -0.926768 -0.139481 0.0890951 RAD 0.00617284 + txt002 + SPHERE CENTER -0.904159 -0.130608 0.0846485 RAD 0.00617284 + txt002 + SPHERE CENTER -0.908508 -0.154838 0.0827387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.930993 -0.152902 0.109385 RAD 0.00617284 + txt002 + SPHERE CENTER -0.912733 -0.16826 0.103028 RAD 0.00617284 + txt002 + SPHERE CENTER -0.912609 -0.157451 0.125228 RAD 0.00617284 + txt002 + SPHERE CENTER -0.860128 -0.107359 0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER -0.853284 -0.0905999 0.0455609 RAD 0.00617284 + txt002 + SPHERE CENTER -0.839638 -0.0940331 0.0658506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.840233 -0.111382 0.0482916 RAD 0.00617284 + txt002 + SPHERE CENTER -0.873773 -0.103926 0.0420622 RAD 0.00617284 + txt002 + SPHERE CENTER -0.860723 -0.124708 0.044793 RAD 0.00617284 + txt002 + SPHERE CENTER -0.880618 -0.120685 0.0588533 RAD 0.00617284 + txt002 + SPHERE CENTER -0.873178 -0.086577 0.0596212 RAD 0.00617284 + txt002 + SPHERE CENTER -0.880022 -0.103336 0.0764123 RAD 0.00617284 + txt002 + SPHERE CENTER -0.859532 -0.0900102 0.079911 RAD 0.00617284 + txt002 + SPHERE CENTER -0.872552 -0.179437 0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER -0.894035 -0.188167 0.0421477 RAD 0.00617284 + txt002 + SPHERE CENTER -0.885777 -0.195141 0.0643473 RAD 0.00617284 + txt002 + SPHERE CENTER -0.89378 -0.172046 0.0608487 RAD 0.00617284 + txt002 + SPHERE CENTER -0.880811 -0.172463 0.0284303 RAD 0.00617284 + txt002 + SPHERE CENTER -0.880556 -0.156342 0.0471312 RAD 0.00617284 + txt002 + SPHERE CENTER -0.859328 -0.163733 0.0369125 RAD 0.00617284 + txt002 + SPHERE CENTER -0.872807 -0.195558 0.0319289 RAD 0.00617284 + txt002 + SPHERE CENTER -0.851325 -0.186828 0.0404111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.864549 -0.202532 0.0541285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.884071 -0.194213 0.153697 RAD 0.0185185 + txt002 + SPHERE CENTER -0.891905 -0.197746 0.176845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.867957 -0.193701 0.172398 RAD 0.00617284 + txt002 + SPHERE CENTER -0.884286 -0.175383 0.169668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.908019 -0.198259 0.158144 RAD 0.00617284 + txt002 + SPHERE CENTER -0.900401 -0.175896 0.150967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.900186 -0.194726 0.134996 RAD 0.00617284 + txt002 + SPHERE CENTER -0.89169 -0.216576 0.160875 RAD 0.00617284 + txt002 + SPHERE CENTER -0.883856 -0.213043 0.137727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.867741 -0.212531 0.156428 RAD 0.00617284 + txt002 + SPHERE CENTER -0.84824 -0.229621 0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.843832 -0.25245 0.107698 RAD 0.00617284 + txt002 + SPHERE CENTER -0.826426 -0.235043 0.109608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.846687 -0.233837 0.123668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.865646 -0.247028 0.0974792 RAD 0.00617284 + txt002 + SPHERE CENTER -0.868501 -0.228415 0.113449 RAD 0.00617284 + txt002 + SPHERE CENTER -0.870053 -0.224198 0.0891702 RAD 0.00617284 + txt002 + SPHERE CENTER -0.845385 -0.248234 0.0834188 RAD 0.00617284 + txt002 + SPHERE CENTER -0.849792 -0.225404 0.0751099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.827978 -0.230827 0.0853287 RAD 0.00617284 + txt002 + SPHERE CENTER -0.811502 -0.207727 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.794108 -0.212743 0.176661 RAD 0.00617284 + txt002 + SPHERE CENTER -0.788345 -0.199907 0.156372 RAD 0.00617284 + txt002 + SPHERE CENTER -0.802328 -0.189621 0.173931 RAD 0.00617284 + txt002 + SPHERE CENTER -0.817265 -0.220563 0.18016 RAD 0.00617284 + txt002 + SPHERE CENTER -0.825486 -0.197441 0.177429 RAD 0.00617284 + txt002 + SPHERE CENTER -0.83466 -0.215547 0.163369 RAD 0.00617284 + txt002 + SPHERE CENTER -0.803282 -0.230849 0.162601 RAD 0.00617284 + txt002 + SPHERE CENTER -0.820676 -0.225832 0.14581 RAD 0.00617284 + txt002 + SPHERE CENTER -0.797518 -0.218012 0.142311 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643951 -0.172546 0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER -0.61371 -0.142305 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.597249 -0.125845 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.592635 -0.138689 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.610094 -0.12123 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.618324 -0.12946 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.631169 -0.124846 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.634785 -0.145921 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600865 -0.14692 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.617326 -0.163381 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.596251 -0.159765 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.5724 -0.153374 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.554772 -0.141271 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.5724 -0.153374 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.577935 -0.13272 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554772 -0.141271 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.577935 -0.13272 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.5724 -0.153374 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.549237 -0.161926 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.566866 -0.174029 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.566866 -0.174029 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624779 -0.100996 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.612676 -0.0833673 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604124 -0.10653 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624779 -0.100996 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.633331 -0.0778329 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645433 -0.0954616 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645433 -0.0954616 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.612676 -0.0833673 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624779 -0.100996 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604124 -0.10653 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.68526 -0.161477 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.687686 -0.148046 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.6652 -0.154071 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.678869 -0.137627 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.707746 -0.155452 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.698929 -0.145033 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.70532 -0.168883 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.694077 -0.171896 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.691651 -0.185327 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671591 -0.177921 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.696329 -0.120168 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.700504 -0.095832 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.681209 -0.105047 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.681209 -0.105047 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.715624 -0.110952 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.696329 -0.120168 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.711449 -0.135288 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.715624 -0.110952 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.711449 -0.135288 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.696329 -0.120168 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.715501 -0.191718 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.736819 -0.190051 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.715501 -0.191718 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.721035 -0.171063 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.736819 -0.190051 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.721035 -0.171063 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.715501 -0.191718 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.731284 -0.210706 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.709966 -0.212373 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.709966 -0.212373 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.632882 -0.213855 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.61945 -0.216282 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.609032 -0.207465 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.625476 -0.193796 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.6433 -0.222672 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649326 -0.200186 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.656732 -0.220246 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.626857 -0.236341 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.640288 -0.233915 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616438 -0.227525 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.663122 -0.244096 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.661455 -0.265414 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.642468 -0.249631 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.663122 -0.244096 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.68211 -0.25988 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.683777 -0.238562 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.683777 -0.238562 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.661455 -0.265414 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.663122 -0.244096 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.642468 -0.249631 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.591572 -0.224924 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.567237 -0.2291 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.576452 -0.209804 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.576452 -0.209804 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582357 -0.24422 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.591572 -0.224924 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.606693 -0.240045 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582357 -0.24422 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.606693 -0.240045 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.591572 -0.224924 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.69376 0.0133465 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.674309 0.0838533 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.66171 0.103063 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.653258 0.0800983 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.673446 0.0876683 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.682761 0.106818 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.694497 0.0914233 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.69536 0.0876083 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.662574 0.0992478 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.675172 0.0800382 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.654121 0.0762832 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62221 0.0325183 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.604582 0.0446211 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62221 0.0325183 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.627745 0.053173 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604582 0.0446211 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.627745 0.053173 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62221 0.0325183 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.599047 0.0239663 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616676 0.0118635 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616676 0.0118635 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.666287 0.0539145 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.662466 0.0547519 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.660752 0.0332597 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.682791 0.0439578 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.668 0.0754066 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.688325 0.0646126 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671821 0.0745692 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645962 0.0647085 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649783 0.0638711 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.644249 0.0432164 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.745859 0.0646815 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.750021 0.0887955 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.729506 0.078459 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.732161 0.0813312 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.766375 0.075018 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.748514 0.0675537 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.762212 0.050904 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.763719 0.0721458 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.759557 0.0480318 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.743204 0.0618093 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.737837 0.0347427 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.747099 0.0542122 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.743371 0.0553974 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.7241 0.0550267 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.741565 0.0335575 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.718566 0.0343719 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.732303 0.014088 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.760836 0.0339282 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.751574 0.0144587 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.757108 0.0351134 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.76531 -0.0058253 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.786629 -0.00415829 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.76531 -0.0058253 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.770845 0.0148294 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.786629 -0.00415829 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.770845 0.0148294 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.76531 -0.0058253 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.781094 -0.024813 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.759776 -0.02648 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.759776 -0.02648 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.701782 0.0432853 0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.693716 0.0608821 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.677932 0.0496759 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.694884 0.0652402 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.717566 0.0544915 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.718734 0.0588496 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.725632 0.0368947 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.700615 0.0389272 0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.708681 0.0213304 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.684831 0.027721 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.721234 -0.0272215 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.720593 -0.0310802 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.7 -0.0246945 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.718114 -0.00820099 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.741827 -0.0336072 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.739347 -0.010728 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.742467 -0.0297485 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.723713 -0.0501007 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.724354 -0.046242 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.70312 -0.043715 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649684 -0.00804971 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.628657 -0.00328338 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.630031 0.000378614 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.642244 0.0152909 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.648309 -0.0117117 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.661896 0.00686255 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.669336 -0.016478 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.636097 -0.026624 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.657124 -0.0313903 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.637471 -0.022962 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.835815 -0.157543 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.899353 -0.119969 -0.117284 RAD 0.0185185 + txt002 + SPHERE CENTER -0.909872 -0.0977075 -0.115431 RAD 0.00617284 + txt002 + SPHERE CENTER -0.891613 -0.104052 -0.100068 RAD 0.00617284 + txt002 + SPHERE CENTER -0.886771 -0.0997803 -0.1239 RAD 0.00617284 + txt002 + SPHERE CENTER -0.917612 -0.113625 -0.132647 RAD 0.00617284 + txt002 + SPHERE CENTER -0.894512 -0.115698 -0.141116 RAD 0.00617284 + txt002 + SPHERE CENTER -0.907093 -0.135886 -0.1345 RAD 0.00617284 + txt002 + SPHERE CENTER -0.922453 -0.117896 -0.108814 RAD 0.00617284 + txt002 + SPHERE CENTER -0.911935 -0.140158 -0.110668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.904194 -0.124241 -0.0934517 RAD 0.00617284 + txt002 + SPHERE CENTER -0.868703 -0.130205 -0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER -0.867758 -0.11253 -0.0334138 RAD 0.00617284 + txt002 + SPHERE CENTER -0.846864 -0.122142 -0.0423994 RAD 0.00617284 + txt002 + SPHERE CENTER -0.860854 -0.107566 -0.0565949 RAD 0.00617284 + txt002 + SPHERE CENTER -0.889596 -0.120593 -0.0416443 RAD 0.00617284 + txt002 + SPHERE CENTER -0.882692 -0.115629 -0.0648253 RAD 0.00617284 + txt002 + SPHERE CENTER -0.890541 -0.138267 -0.0588603 RAD 0.00617284 + txt002 + SPHERE CENTER -0.875606 -0.135168 -0.0274488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.876551 -0.152843 -0.0446649 RAD 0.00617284 + txt002 + SPHERE CENTER -0.854713 -0.14478 -0.0364345 RAD 0.00617284 + txt002 + SPHERE CENTER -0.836885 -0.0844101 -0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.826973 -0.0627848 -0.106005 RAD 0.00617284 + txt002 + SPHERE CENTER -0.81296 -0.083104 -0.105354 RAD 0.00617284 + txt002 + SPHERE CENTER -0.830202 -0.0805529 -0.122844 RAD 0.00617284 + txt002 + SPHERE CENTER -0.850898 -0.0640908 -0.10004 RAD 0.00617284 + txt002 + SPHERE CENTER -0.854126 -0.0818589 -0.116879 RAD 0.00617284 + txt002 + SPHERE CENTER -0.860809 -0.0857161 -0.093424 RAD 0.00617284 + txt002 + SPHERE CENTER -0.833656 -0.0666419 -0.0825505 RAD 0.00617284 + txt002 + SPHERE CENTER -0.843568 -0.0882673 -0.0759343 RAD 0.00617284 + txt002 + SPHERE CENTER -0.819643 -0.0869612 -0.0818993 RAD 0.00617284 + txt002 + SPHERE CENTER -0.866465 -0.147308 -0.177765 RAD 0.0185185 + txt002 + SPHERE CENTER -0.876203 -0.130609 -0.193128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.879733 -0.128522 -0.16878 RAD 0.00617284 + txt002 + SPHERE CENTER -0.857385 -0.124356 -0.178416 RAD 0.00617284 + txt002 + SPHERE CENTER -0.862935 -0.149395 -0.202114 RAD 0.00617284 + txt002 + SPHERE CENTER -0.844117 -0.143141 -0.187402 RAD 0.00617284 + txt002 + SPHERE CENTER -0.853198 -0.166093 -0.186751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.885283 -0.153561 -0.192477 RAD 0.00617284 + txt002 + SPHERE CENTER -0.875546 -0.170259 -0.177114 RAD 0.00617284 + txt002 + SPHERE CENTER -0.888813 -0.151474 -0.168128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.803997 -0.111748 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.798532 -0.108311 -0.183703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.797989 -0.131037 -0.174066 RAD 0.00617284 + txt002 + SPHERE CENTER -0.819589 -0.119537 -0.17736 RAD 0.00617284 + txt002 + SPHERE CENTER -0.80454 -0.0890219 -0.169507 RAD 0.00617284 + txt002 + SPHERE CENTER -0.825597 -0.100248 -0.163165 RAD 0.00617284 + txt002 + SPHERE CENTER -0.810005 -0.0924597 -0.145675 RAD 0.00617284 + txt002 + SPHERE CENTER -0.78294 -0.100522 -0.166213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.788405 -0.10396 -0.142381 RAD 0.00617284 + txt002 + SPHERE CENTER -0.782397 -0.123249 -0.156576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.802927 -0.184881 -0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER -0.785723 -0.180723 -0.188808 RAD 0.00617284 + txt002 + SPHERE CENTER -0.798991 -0.161937 -0.179823 RAD 0.00617284 + txt002 + SPHERE CENTER -0.782104 -0.173028 -0.165627 RAD 0.00617284 + txt002 + SPHERE CENTER -0.78966 -0.203667 -0.180578 RAD 0.00617284 + txt002 + SPHERE CENTER -0.786041 -0.195972 -0.157397 RAD 0.00617284 + txt002 + SPHERE CENTER -0.806864 -0.207825 -0.163362 RAD 0.00617284 + txt002 + SPHERE CENTER -0.806546 -0.192576 -0.194773 RAD 0.00617284 + txt002 + SPHERE CENTER -0.82375 -0.196734 -0.177557 RAD 0.00617284 + txt002 + SPHERE CENTER -0.819813 -0.17379 -0.185788 RAD 0.00617284 + txt002 + SPHERE CENTER -0.898283 -0.193102 -0.129006 RAD 0.0185185 + txt002 + SPHERE CENTER -0.920038 -0.201143 -0.120537 RAD 0.00617284 + txt002 + SPHERE CENTER -0.900209 -0.201384 -0.105825 RAD 0.00617284 + txt002 + SPHERE CENTER -0.910616 -0.17991 -0.112168 RAD 0.00617284 + txt002 + SPHERE CENTER -0.918112 -0.192861 -0.143718 RAD 0.00617284 + txt002 + SPHERE CENTER -0.90869 -0.171628 -0.135349 RAD 0.00617284 + txt002 + SPHERE CENTER -0.896357 -0.18482 -0.152187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.907705 -0.214335 -0.137375 RAD 0.00617284 + txt002 + SPHERE CENTER -0.88595 -0.206294 -0.145845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.887876 -0.214576 -0.122663 RAD 0.00617284 + txt002 + SPHERE CENTER -0.834745 -0.230676 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.824206 -0.252002 -0.116217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.810793 -0.231282 -0.116868 RAD 0.00617284 + txt002 + SPHERE CENTER -0.827952 -0.234336 -0.0993785 RAD 0.00617284 + txt002 + SPHERE CENTER -0.848158 -0.251396 -0.122182 RAD 0.00617284 + txt002 + SPHERE CENTER -0.851905 -0.23373 -0.105343 RAD 0.00617284 + txt002 + SPHERE CENTER -0.858698 -0.23007 -0.128798 RAD 0.00617284 + txt002 + SPHERE CENTER -0.830999 -0.248342 -0.139672 RAD 0.00617284 + txt002 + SPHERE CENTER -0.841538 -0.227016 -0.146288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.817586 -0.227621 -0.140323 RAD 0.00617284 + txt002 + SPHERE CENTER -0.867633 -0.203337 -0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER -0.868948 -0.209658 -0.0385197 RAD 0.00617284 + txt002 + SPHERE CENTER -0.84746 -0.202239 -0.0481565 RAD 0.00617284 + txt002 + SPHERE CENTER -0.865773 -0.186008 -0.0448623 RAD 0.00617284 + txt002 + SPHERE CENTER -0.889121 -0.210757 -0.0527151 RAD 0.00617284 + txt002 + SPHERE CENTER -0.885946 -0.187106 -0.0590577 RAD 0.00617284 + txt002 + SPHERE CENTER -0.887806 -0.204436 -0.0765474 RAD 0.00617284 + txt002 + SPHERE CENTER -0.870808 -0.226988 -0.0560094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.869493 -0.220667 -0.0798417 RAD 0.00617284 + txt002 + SPHERE CENTER -0.84932 -0.219569 -0.0656463 RAD 0.00617284 + txt002 + SPHERE CENTER -0.69376 0.0133465 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.668775 0.0631985 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.661946 0.0667914 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.65711 0.0452771 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.680354 0.0511945 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.673611 0.0847128 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.692019 0.069116 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.680439 0.08112 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.650366 0.0787954 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.657195 0.0752026 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.64553 0.0572811 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62221 0.0325183 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.604582 0.0446211 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62221 0.0325183 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.627745 0.053173 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604582 0.0446211 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.627745 0.053173 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62221 0.0325183 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.599047 0.0239663 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616676 0.0118635 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616676 0.0118635 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649684 -0.00804971 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.634953 -0.000226782 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.655218 0.012605 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.635947 0.0122343 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.629419 -0.0208815 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.630413 -0.00842045 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.644149 -0.0287044 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.64869 -0.0205108 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.66342 -0.0283337 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.668955 -0.00767898 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.740325 0.0440268 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.746894 0.0650768 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.739183 0.0653796 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.723153 0.0607735 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.748035 0.0437239 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.724295 0.0394207 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.741466 0.0226739 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.764065 0.04833 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.757496 0.02728 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.756355 0.0486329 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.721234 -0.0272215 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.732368 -0.0484665 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.715699 -0.0478762 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.737738 -0.0371781 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.737902 -0.0278118 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.743272 -0.0165234 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.726768 -0.00656677 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.715864 -0.0385099 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.70473 -0.0172649 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.699195 -0.0379196 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.76531 -0.0058253 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.786629 -0.00415829 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.76531 -0.0058253 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.770845 0.0148294 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.786629 -0.00415829 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.770845 0.0148294 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.76531 -0.0058253 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.781094 -0.024813 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.759776 -0.02648 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.759776 -0.02648 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.712851 0.0845947 -0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER -0.706291 0.107813 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.689001 0.0909853 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.701434 0.0896851 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.730141 0.101422 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.725284 0.0832945 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.736701 0.0782041 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.717709 0.102723 -0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER -0.724268 0.0795043 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.700418 0.0858949 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.737837 0.0347427 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.740802 0.0511556 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.718185 0.043171 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.730397 0.0580833 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.760455 0.0427273 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.750049 0.0496549 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.757489 0.0263144 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.748242 0.027815 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.745277 0.0114021 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.725625 0.0198304 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.666287 0.0539145 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.650692 0.0721382 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645053 0.0564414 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.663167 0.072935 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671925 0.0696112 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.6844 0.070408 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.68752 0.0513875 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.653812 0.0531177 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.669407 0.034894 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.648173 0.0374209 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643951 -0.172546 -0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER -0.674191 -0.142305 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.672341 -0.123995 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.666199 -0.120057 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.651943 -0.134313 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.680334 -0.146243 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.659936 -0.156561 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.682184 -0.164554 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.69459 -0.131987 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.696439 -0.150298 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.688447 -0.12805 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.715501 -0.153374 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.731779 -0.136231 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.712305 -0.141449 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.70911 -0.129524 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.734974 -0.148156 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.712305 -0.141449 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.718696 -0.165299 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.738169 -0.160081 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.721891 -0.177224 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.718696 -0.165299 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.663122 -0.100996 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.656415 -0.0783272 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.639272 -0.0946054 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.651197 -0.0978007 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.680265 -0.0847178 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.675047 -0.104191 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.686972 -0.107387 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.66834 -0.0815225 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.675047 -0.104191 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.651197 -0.0978007 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.602641 -0.161477 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.60298 -0.154189 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.622115 -0.166695 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.617912 -0.143431 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.583506 -0.148971 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.598439 -0.138214 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.583168 -0.156259 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.587708 -0.172234 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.58737 -0.179523 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.606843 -0.184741 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.591572 -0.120168 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.577317 -0.105912 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582843 -0.128897 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600302 -0.111438 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.586046 -0.0971825 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.609032 -0.102708 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600302 -0.111438 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.568587 -0.114642 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582843 -0.128897 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.574113 -0.137627 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.5724 -0.191718 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.549732 -0.185011 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.569205 -0.179793 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.56601 -0.167868 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.552927 -0.196936 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.569205 -0.179793 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.575596 -0.203643 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.556122 -0.208861 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.578791 -0.215568 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.575596 -0.203643 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.655019 -0.213855 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.653756 -0.23668 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.636974 -0.229127 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.660237 -0.233329 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671802 -0.221409 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.678283 -0.218058 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.673065 -0.198584 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.648538 -0.217207 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649801 -0.194382 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.631756 -0.209653 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624779 -0.244096 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.607636 -0.260374 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600929 -0.237705 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.612854 -0.240901 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.631486 -0.266765 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.636704 -0.247291 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.648629 -0.250487 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.619561 -0.26357 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.636704 -0.247291 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.612854 -0.240901 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.696329 -0.224924 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.710584 -0.23918 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.687599 -0.233654 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.705059 -0.216195 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.719314 -0.23045 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.713788 -0.207465 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.705059 -0.216195 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.701855 -0.24791 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.687599 -0.233654 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.678869 -0.242384 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.786005 -0.343435 8.51251e-17 RAD 0.0555556 + txt002 + SPHERE CENTER -0.82165 -0.392454 0.0425863 RAD 0.0185185 + txt002 + SPHERE CENTER -0.824791 -0.400556 0.065698 RAD 0.00617284 + txt002 + SPHERE CENTER -0.802599 -0.392663 0.058292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.821021 -0.376528 0.0614442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.843843 -0.400347 0.0499923 RAD 0.00617284 + txt002 + SPHERE CENTER -0.840073 -0.376319 0.0457385 RAD 0.00617284 + txt002 + SPHERE CENTER -0.840701 -0.392245 0.0268805 RAD 0.00617284 + txt002 + SPHERE CENTER -0.82542 -0.416482 0.0468401 RAD 0.00617284 + txt002 + SPHERE CENTER -0.822279 -0.40838 0.0237283 RAD 0.00617284 + txt002 + SPHERE CENTER -0.803228 -0.408589 0.0394341 RAD 0.00617284 + txt002 + SPHERE CENTER -0.753118 -0.370774 0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER -0.734271 -0.367981 0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.731279 -0.362711 0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER -0.745269 -0.348136 0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.756109 -0.376044 0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER -0.767107 -0.356199 0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.774956 -0.378837 0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER -0.74212 -0.390619 0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.760966 -0.393412 0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER -0.739128 -0.385349 0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER -0.80984 -0.323622 0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.80634 -0.308073 0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.786996 -0.316395 0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER -0.802721 -0.300378 0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER -0.829184 -0.315299 0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER -0.825565 -0.307605 0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER -0.832685 -0.330849 0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.813459 -0.331317 0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER -0.81696 -0.346866 0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER -0.794116 -0.339639 0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER -0.854538 -0.365116 -0.0178949 RAD 0.0185185 + txt002 + SPHERE CENTER -0.878086 -0.365674 -0.0104889 RAD 0.00617284 + txt002 + SPHERE CENTER -0.859887 -0.367962 0.00604126 RAD 0.00617284 + txt002 + SPHERE CENTER -0.863875 -0.346241 -0.00500196 RAD 0.00617284 + txt002 + SPHERE CENTER -0.872736 -0.362827 -0.0344251 RAD 0.00617284 + txt002 + SPHERE CENTER -0.858526 -0.343394 -0.0289382 RAD 0.00617284 + txt002 + SPHERE CENTER -0.849188 -0.362269 -0.0418311 RAD 0.00617284 + txt002 + SPHERE CENTER -0.868748 -0.384548 -0.0233819 RAD 0.00617284 + txt002 + SPHERE CENTER -0.8452 -0.38399 -0.0307879 RAD 0.00617284 + txt002 + SPHERE CENTER -0.85055 -0.386837 -0.00685171 RAD 0.00617284 + txt002 + SPHERE CENTER -0.842728 -0.296284 0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER -0.848999 -0.272611 0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER -0.828835 -0.281616 0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER -0.829121 -0.278432 -0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.862893 -0.287278 -0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER -0.843015 -0.293099 -0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER -0.856621 -0.310951 -0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER -0.862606 -0.290462 0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER -0.856335 -0.314135 0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.842441 -0.299468 0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.818893 -0.316097 -0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER -0.819591 -0.297057 -0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.814956 -0.293153 -0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER -0.79807 -0.304244 -0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.823527 -0.320001 -0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER -0.802007 -0.327188 -0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.822829 -0.339041 -0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER -0.840413 -0.30891 -0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.839716 -0.32795 -0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER -0.835779 -0.305006 -0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER -0.797815 -0.412267 -0.0246914 RAD 0.0185185 + txt002 + SPHERE CENTER -0.793573 -0.436217 -0.0204376 RAD 0.00617284 + txt002 + SPHERE CENTER -0.776294 -0.419454 -0.0149506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.796968 -0.420728 -0.00151032 RAD 0.00617284 + txt002 + SPHERE CENTER -0.815094 -0.42903 -0.0301783 RAD 0.00617284 + txt002 + SPHERE CENTER -0.818489 -0.413542 -0.0112511 RAD 0.00617284 + txt002 + SPHERE CENTER -0.819335 -0.405081 -0.0344321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.79442 -0.427756 -0.0436186 RAD 0.00617284 + txt002 + SPHERE CENTER -0.798662 -0.403807 -0.0478724 RAD 0.00617284 + txt002 + SPHERE CENTER -0.777141 -0.410993 -0.0381316 RAD 0.00617284 + txt002 + SPHERE CENTER -0.76217 -0.363249 -0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.747522 -0.356966 -0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.759239 -0.339469 -0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER -0.740618 -0.352002 -0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER -0.750453 -0.380746 -0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER -0.743549 -0.375782 -0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER -0.765101 -0.387029 -0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.769074 -0.368213 -0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER -0.783722 -0.374496 -0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER -0.780791 -0.350716 -0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER -0.729282 -0.390587 -0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER -0.704862 -0.392427 -0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER -0.717401 -0.374248 -0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER -0.714218 -0.373948 0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.716744 -0.408767 0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER -0.726099 -0.390287 0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER -0.741164 -0.406927 0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER -0.719927 -0.409067 -0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER -0.744347 -0.407227 -0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.732465 -0.390887 -0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.594141 -0.358439 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.542042 -0.409774 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.517869 -0.413579 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.528508 -0.393219 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.525596 -0.395831 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.531404 -0.430134 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539131 -0.412386 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555577 -0.426328 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.534315 -0.427522 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.558488 -0.423716 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.544953 -0.407161 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522591 -0.339267 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.504962 -0.327164 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522591 -0.339267 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.528125 -0.318612 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.504962 -0.327164 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.528125 -0.318612 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522591 -0.339267 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.499428 -0.347819 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.517056 -0.359921 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.517056 -0.359921 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.550064 -0.379835 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.529037 -0.375068 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.530412 -0.371406 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542624 -0.356494 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.548689 -0.383497 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.562276 -0.364922 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.569716 -0.388263 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536477 -0.398409 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.557504 -0.403175 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.537852 -0.394747 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.613592 -0.428945 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.612625 -0.451897 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593593 -0.436515 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.614807 -0.432663 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.632624 -0.444328 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.634806 -0.425094 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.633591 -0.421376 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.61141 -0.448179 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.612377 -0.425227 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.592379 -0.432797 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.621614 -0.399007 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.620974 -0.402865 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600381 -0.39648 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.618494 -0.379986 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.642207 -0.405392 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.639728 -0.382513 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.642848 -0.401533 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624094 -0.421886 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624734 -0.418027 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.603501 -0.4155 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.665691 -0.37761 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.687009 -0.375943 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.665691 -0.37761 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671225 -0.356956 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.687009 -0.375943 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671225 -0.356956 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.665691 -0.37761 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.681475 -0.396598 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.660156 -0.398265 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.660156 -0.398265 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.586119 -0.388377 -0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.570335 -0.399584 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.562269 -0.381987 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.569167 -0.403942 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.594185 -0.405974 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593017 -0.410332 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.609969 -0.394768 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.587286 -0.384019 -0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.60307 -0.372813 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.57922 -0.366422 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.638217 -0.337042 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.64748 -0.317573 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643752 -0.316388 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624481 -0.316758 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.641945 -0.338228 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.618946 -0.337413 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.632683 -0.357697 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.661216 -0.337857 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.651954 -0.357326 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.657489 -0.336672 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.566667 -0.317871 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.562847 -0.317033 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.561133 -0.338525 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.583171 -0.327827 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.568381 -0.296378 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.588706 -0.307172 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.572202 -0.297216 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.546343 -0.307077 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.550163 -0.307914 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.544629 -0.328569 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.594141 -0.358439 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.547576 -0.389119 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.525642 -0.386849 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.528407 -0.379645 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.538964 -0.366733 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.544812 -0.396323 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.558134 -0.376207 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.566746 -0.398593 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.534255 -0.409235 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.556189 -0.411505 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.537019 -0.402031 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522591 -0.339267 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.504962 -0.327164 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522591 -0.339267 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.528125 -0.318612 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.504962 -0.327164 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.528125 -0.318612 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522591 -0.339267 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.499428 -0.347819 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.517056 -0.359921 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.517056 -0.359921 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.566667 -0.317871 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.551072 -0.299647 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.545434 -0.315344 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.563547 -0.29885 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.572306 -0.302174 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.584781 -0.301377 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.587901 -0.320398 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554192 -0.318667 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.569787 -0.336891 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.548554 -0.334364 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.619127 -0.408291 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.617918 -0.415912 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.597788 -0.406911 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616439 -0.39183 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.639257 -0.417292 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.637778 -0.39321 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.640465 -0.409671 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.620605 -0.432372 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.621814 -0.424751 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600475 -0.423371 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.638217 -0.337042 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.641183 -0.320629 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.618565 -0.328614 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.630777 -0.313702 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.660835 -0.329058 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.65043 -0.32213 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.65787 -0.345471 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.648623 -0.34397 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645657 -0.360383 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.626005 -0.351955 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.665691 -0.37761 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.687009 -0.375943 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.665691 -0.37761 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671225 -0.356956 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.687009 -0.375943 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671225 -0.356956 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.665691 -0.37761 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.681475 -0.396598 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.660156 -0.398265 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.660156 -0.398265 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.57505 -0.429687 0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER -0.55776 -0.446515 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.5512 -0.423296 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.562617 -0.428387 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.58161 -0.452905 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.586467 -0.434777 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.5989 -0.436077 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.570193 -0.447815 0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER -0.587483 -0.430987 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.563633 -0.424596 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.621614 -0.399007 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.632748 -0.420252 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.61608 -0.419661 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.638118 -0.408963 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.638282 -0.399597 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643653 -0.388308 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.627149 -0.378352 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616244 -0.410295 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.60511 -0.38905 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.599576 -0.409705 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.550064 -0.379835 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.535334 -0.372012 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555599 -0.35918 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536327 -0.359551 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.529799 -0.392667 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.530793 -0.380205 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.54453 -0.400489 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.549071 -0.392296 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.563801 -0.400119 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.569335 -0.379464 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0996195 -0.371785 0.544331 RAD 0.166667 + txt002 + SPHERE CENTER 0.220501 -0.393621 0.729516 RAD 0.0555556 + txt002 + SPHERE CENTER 0.279642 -0.368601 0.766439 RAD 0.0185185 + txt002 + SPHERE CENTER 0.299716 -0.354293 0.765035 RAD 0.00617284 + txt002 + SPHERE CENTER 0.292196 -0.366989 0.745238 RAD 0.00617284 + txt002 + SPHERE CENTER 0.279022 -0.347717 0.753281 RAD 0.00617284 + txt002 + SPHERE CENTER 0.287162 -0.355904 0.786236 RAD 0.00617284 + txt002 + SPHERE CENTER 0.266468 -0.349329 0.774481 RAD 0.00617284 + txt002 + SPHERE CENTER 0.267088 -0.370213 0.787639 RAD 0.00617284 + txt002 + SPHERE CENTER 0.300337 -0.375177 0.778193 RAD 0.00617284 + txt002 + SPHERE CENTER 0.280263 -0.389485 0.779597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.292817 -0.387873 0.758396 RAD 0.00617284 + txt002 + SPHERE CENTER 0.281062 -0.372464 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.289441 -0.362978 0.671279 RAD 0.00617284 + txt002 + SPHERE CENTER 0.270044 -0.378255 0.671155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.267771 -0.35549 0.680442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.30046 -0.357187 0.692603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.278789 -0.349699 0.701767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29208 -0.366673 0.713804 RAD 0.00617284 + txt002 + SPHERE CENTER 0.302733 -0.379952 0.683315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.294353 -0.389438 0.704516 RAD 0.00617284 + txt002 + SPHERE CENTER 0.283335 -0.395229 0.683192 RAD 0.00617284 + txt002 + SPHERE CENTER 0.238665 -0.321889 0.726118 RAD 0.0185185 + txt002 + SPHERE CENTER 0.250544 -0.304702 0.71296 RAD 0.00617284 + txt002 + SPHERE CENTER 0.259421 -0.327715 0.714081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.238717 -0.32307 0.701455 RAD 0.00617284 + txt002 + SPHERE CENTER 0.229788 -0.298875 0.724997 RAD 0.00617284 + txt002 + SPHERE CENTER 0.21796 -0.317244 0.713492 RAD 0.00617284 + txt002 + SPHERE CENTER 0.217908 -0.316063 0.738155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.250492 -0.30352 0.737623 RAD 0.00617284 + txt002 + SPHERE CENTER 0.238612 -0.320707 0.750781 RAD 0.00617284 + txt002 + SPHERE CENTER 0.259369 -0.326533 0.738744 RAD 0.00617284 + txt002 + SPHERE CENTER 0.219082 -0.389758 0.803476 RAD 0.0185185 + txt002 + SPHERE CENTER 0.228779 -0.378635 0.823273 RAD 0.00617284 + txt002 + SPHERE CENTER 0.24293 -0.383364 0.8036 RAD 0.00617284 + txt002 + SPHERE CENTER 0.225483 -0.365937 0.802355 RAD 0.00617284 + txt002 + SPHERE CENTER 0.20493 -0.385029 0.823149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.201634 -0.372331 0.802231 RAD 0.00617284 + txt002 + SPHERE CENTER 0.195233 -0.396152 0.803352 RAD 0.00617284 + txt002 + SPHERE CENTER 0.222377 -0.402455 0.824394 RAD 0.00617284 + txt002 + SPHERE CENTER 0.21268 -0.413578 0.804597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236529 -0.407185 0.804721 RAD 0.00617284 + txt002 + SPHERE CENTER 0.178104 -0.343046 0.763155 RAD 0.0185185 + txt002 + SPHERE CENTER 0.177083 -0.319723 0.771198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.198298 -0.332294 0.772443 RAD 0.00617284 + txt002 + SPHERE CENTER 0.189464 -0.325124 0.750529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.156889 -0.330475 0.76191 RAD 0.00617284 + txt002 + SPHERE CENTER 0.16927 -0.335876 0.741241 RAD 0.00617284 + txt002 + SPHERE CENTER 0.157909 -0.353797 0.753867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.165722 -0.337645 0.783824 RAD 0.00617284 + txt002 + SPHERE CENTER 0.166743 -0.360967 0.775781 RAD 0.00617284 + txt002 + SPHERE CENTER 0.186938 -0.350216 0.785069 RAD 0.00617284 + txt002 + SPHERE CENTER 0.15994 -0.414778 0.766553 RAD 0.0185185 + txt002 + SPHERE CENTER 0.147477 -0.412573 0.787754 RAD 0.00617284 + txt002 + SPHERE CENTER 0.172167 -0.412448 0.787878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.15977 -0.39322 0.77859 RAD 0.00617284 + txt002 + SPHERE CENTER 0.13525 -0.414903 0.766429 RAD 0.00617284 + txt002 + SPHERE CENTER 0.147543 -0.39555 0.757266 RAD 0.00617284 + txt002 + SPHERE CENTER 0.147713 -0.417108 0.745229 RAD 0.00617284 + txt002 + SPHERE CENTER 0.147647 -0.434131 0.775717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.16011 -0.436336 0.754517 RAD 0.00617284 + txt002 + SPHERE CENTER 0.172338 -0.434006 0.775841 RAD 0.00617284 + txt002 + SPHERE CENTER 0.261479 -0.440333 0.769837 RAD 0.0185185 + txt002 + SPHERE CENTER 0.282991 -0.443285 0.781591 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282046 -0.4302 0.760673 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271991 -0.421181 0.781342 RAD 0.00617284 + txt002 + SPHERE CENTER 0.262424 -0.453417 0.790755 RAD 0.00617284 + txt002 + SPHERE CENTER 0.251423 -0.431313 0.790506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.240911 -0.450466 0.779001 RAD 0.00617284 + txt002 + SPHERE CENTER 0.27248 -0.462437 0.770086 RAD 0.00617284 + txt002 + SPHERE CENTER 0.250967 -0.459485 0.758332 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271534 -0.449353 0.749168 RAD 0.00617284 + txt002 + SPHERE CENTER 0.202338 -0.465353 0.732914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.204606 -0.486123 0.746073 RAD 0.00617284 + txt002 + SPHERE CENTER 0.223366 -0.470107 0.744951 RAD 0.00617284 + txt002 + SPHERE CENTER 0.202946 -0.464339 0.757577 RAD 0.00617284 + txt002 + SPHERE CENTER 0.183578 -0.481368 0.734036 RAD 0.00617284 + txt002 + SPHERE CENTER 0.181918 -0.459584 0.745541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.18131 -0.460599 0.720878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.203998 -0.487137 0.72141 RAD 0.00617284 + txt002 + SPHERE CENTER 0.201729 -0.466367 0.708251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.222757 -0.471122 0.720288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.262898 -0.444196 0.695877 RAD 0.0185185 + txt002 + SPHERE CENTER 0.285685 -0.449273 0.687835 RAD 0.00617284 + txt002 + SPHERE CENTER 0.27701 -0.426189 0.68659 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282528 -0.436139 0.708504 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271573 -0.46728 0.697123 RAD 0.00617284 + txt002 + SPHERE CENTER 0.268416 -0.454146 0.717791 RAD 0.00617284 + txt002 + SPHERE CENTER 0.248787 -0.462204 0.705165 RAD 0.00617284 + txt002 + SPHERE CENTER 0.266055 -0.45733 0.675209 RAD 0.00617284 + txt002 + SPHERE CENTER 0.243269 -0.452254 0.683251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.257381 -0.434246 0.673964 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31427 -0.31427 0.544331 RAD 0.0555556 + txt002 + SPHERE CENTER 0.367156 -0.277961 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.374298 -0.269898 0.485076 RAD 0.00617284 + txt002 + SPHERE CENTER 0.362218 -0.291334 0.487134 RAD 0.00617284 + txt002 + SPHERE CENTER 0.350338 -0.270045 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.379235 -0.256525 0.505236 RAD 0.00617284 + txt002 + SPHERE CENTER 0.355276 -0.256671 0.511201 RAD 0.00617284 + txt002 + SPHERE CENTER 0.372093 -0.264588 0.527454 RAD 0.00617284 + txt002 + SPHERE CENTER 0.391115 -0.277815 0.501329 RAD 0.00617284 + txt002 + SPHERE CENTER 0.383973 -0.285878 0.523547 RAD 0.00617284 + txt002 + SPHERE CENTER 0.379036 -0.299251 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31427 -0.31427 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.304189 -0.304189 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29042 -0.307879 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307879 -0.29042 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.328039 -0.31058 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.331729 -0.29681 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.33812 -0.32066 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31058 -0.328039 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32066 -0.33812 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29681 -0.331729 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.297666 -0.252306 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.305995 -0.235688 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.321516 -0.245915 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.312359 -0.259438 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282145 -0.242079 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.288509 -0.265828 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273816 -0.258696 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.291303 -0.228556 0.509559 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282974 -0.245173 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.306824 -0.238783 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367156 -0.277961 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.385852 -0.261966 0.57931 RAD 0.00617284 + txt002 + SPHERE CENTER 0.38141 -0.278159 0.561208 RAD 0.00617284 + txt002 + SPHERE CENTER 0.36581 -0.259422 0.565115 RAD 0.00617284 + txt002 + SPHERE CENTER 0.371598 -0.261768 0.599471 RAD 0.00617284 + txt002 + SPHERE CENTER 0.351556 -0.259225 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.352901 -0.277764 0.601529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.387198 -0.280504 0.595564 RAD 0.00617284 + txt002 + SPHERE CENTER 0.368501 -0.2965 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.382755 -0.296698 0.577461 RAD 0.00617284 + txt002 + SPHERE CENTER 0.297666 -0.252306 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.30415 -0.228803 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.321516 -0.245915 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.306824 -0.238783 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.2803 -0.235194 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282974 -0.245173 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273816 -0.258696 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.294992 -0.242326 0.603794 RAD 0.00617284 + txt002 + SPHERE CENTER 0.288509 -0.265828 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.312359 -0.259438 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31427 -0.31427 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.32435 -0.304189 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.33812 -0.307879 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32066 -0.29042 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3005 -0.31058 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29681 -0.29681 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29042 -0.32066 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.317959 -0.328039 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307879 -0.33812 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.331729 -0.331729 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.383759 -0.339925 0.544331 RAD 0.0185185 + txt002 + SPHERE CENTER 0.407156 -0.334762 0.538366 RAD 0.00617284 + txt002 + SPHERE CENTER 0.388696 -0.326552 0.524171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.392275 -0.31686 0.546597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.402218 -0.348135 0.558526 RAD 0.00617284 + txt002 + SPHERE CENTER 0.387337 -0.330233 0.566757 RAD 0.00617284 + txt002 + SPHERE CENTER 0.378821 -0.353299 0.564491 RAD 0.00617284 + txt002 + SPHERE CENTER 0.39864 -0.357827 0.536101 RAD 0.00617284 + txt002 + SPHERE CENTER 0.375243 -0.362991 0.542066 RAD 0.00617284 + txt002 + SPHERE CENTER 0.380181 -0.349618 0.521905 RAD 0.00617284 + txt002 + SPHERE CENTER 0.330873 -0.376234 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.346394 -0.386461 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.354723 -0.369843 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.340031 -0.362711 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.322544 -0.392851 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.316181 -0.369102 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307023 -0.382624 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337237 -0.399983 0.579103 RAD 0.00617284 + txt002 + SPHERE CENTER 0.321715 -0.389757 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.345565 -0.383366 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.330873 -0.376234 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.348239 -0.393346 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.354723 -0.369843 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.345565 -0.383366 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.324389 -0.399736 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.321715 -0.389757 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307023 -0.382624 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.333547 -0.386213 0.484868 RAD 0.00617284 + txt002 + SPHERE CENTER 0.316181 -0.369102 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.340031 -0.362711 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.166275 -0.191247 0.655442 RAD 0.0555556 + txt002 + SPHERE CENTER 0.20793 -0.130089 0.652044 RAD 0.0185185 + txt002 + SPHERE CENTER 0.221102 -0.115471 0.637128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.220766 -0.13987 0.633356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.200597 -0.126388 0.628759 RAD 0.00617284 + txt002 + SPHERE CENTER 0.208266 -0.10569 0.655816 RAD 0.00617284 + txt002 + SPHERE CENTER 0.187762 -0.116607 0.647447 RAD 0.00617284 + txt002 + SPHERE CENTER 0.195095 -0.120308 0.670732 RAD 0.00617284 + txt002 + SPHERE CENTER 0.228435 -0.119172 0.660413 RAD 0.00617284 + txt002 + SPHERE CENTER 0.215264 -0.13379 0.675329 RAD 0.00617284 + txt002 + SPHERE CENTER 0.228099 -0.143571 0.656641 RAD 0.00617284 + txt002 + SPHERE CENTER 0.230419 -0.192135 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.243049 -0.18209 0.599717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.218634 -0.185251 0.597829 RAD 0.00617284 + txt002 + SPHERE CENTER 0.227721 -0.168159 0.613157 RAD 0.00617284 + txt002 + SPHERE CENTER 0.254834 -0.188974 0.620293 RAD 0.00617284 + txt002 + SPHERE CENTER 0.239506 -0.175043 0.633733 RAD 0.00617284 + txt002 + SPHERE CENTER 0.242204 -0.199019 0.638981 RAD 0.00617284 + txt002 + SPHERE CENTER 0.245747 -0.206066 0.604965 RAD 0.00617284 + txt002 + SPHERE CENTER 0.233117 -0.216111 0.623653 RAD 0.00617284 + txt002 + SPHERE CENTER 0.221332 -0.209227 0.603077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.172673 -0.154295 0.591563 RAD 0.0185185 + txt002 + SPHERE CENTER 0.180792 -0.15554 0.568278 RAD 0.00617284 + txt002 + SPHERE CENTER 0.19323 -0.166926 0.586315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.171251 -0.17557 0.579113 RAD 0.00617284 + txt002 + SPHERE CENTER 0.160236 -0.142909 0.573526 RAD 0.00617284 + txt002 + SPHERE CENTER 0.150694 -0.162939 0.584361 RAD 0.00617284 + txt002 + SPHERE CENTER 0.152117 -0.141663 0.596811 RAD 0.00617284 + txt002 + SPHERE CENTER 0.182215 -0.134265 0.580727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.174096 -0.133019 0.604012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.194652 -0.145651 0.598764 RAD 0.00617284 + txt002 + SPHERE CENTER 0.143787 -0.129201 0.689081 RAD 0.0185185 + txt002 + SPHERE CENTER 0.14887 -0.105335 0.692853 RAD 0.00617284 + txt002 + SPHERE CENTER 0.167242 -0.121723 0.690969 RAD 0.00617284 + txt002 + SPHERE CENTER 0.153943 -0.115741 0.671044 RAD 0.00617284 + txt002 + SPHERE CENTER 0.125414 -0.112813 0.690965 RAD 0.00617284 + txt002 + SPHERE CENTER 0.130487 -0.123219 0.669156 RAD 0.00617284 + txt002 + SPHERE CENTER 0.120331 -0.136679 0.687193 RAD 0.00617284 + txt002 + SPHERE CENTER 0.138714 -0.118795 0.71089 RAD 0.00617284 + txt002 + SPHERE CENTER 0.13363 -0.142661 0.707118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.157086 -0.135183 0.709006 RAD 0.00617284 + txt002 + SPHERE CENTER 0.108529 -0.153407 0.6286 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0995811 -0.130858 0.624003 RAD 0.00617284 + txt002 + SPHERE CENTER 0.113639 -0.134736 0.643928 RAD 0.00617284 + txt002 + SPHERE CENTER 0.123725 -0.135326 0.621398 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0944715 -0.149528 0.608675 RAD 0.00617284 + txt002 + SPHERE CENTER 0.118615 -0.153997 0.60607 RAD 0.00617284 + txt002 + SPHERE CENTER 0.10342 -0.172078 0.613272 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0843858 -0.148938 0.631205 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0933338 -0.171487 0.635801 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0984435 -0.152816 0.65113 RAD 0.00617284 + txt002 + SPHERE CENTER 0.102131 -0.190359 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0897843 -0.179968 0.711167 RAD 0.00617284 + txt002 + SPHERE CENTER 0.114103 -0.183804 0.713055 RAD 0.00617284 + txt002 + SPHERE CENTER 0.105492 -0.166467 0.697727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0778128 -0.186523 0.690591 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0935207 -0.173022 0.677151 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0901597 -0.196914 0.671903 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0864233 -0.20386 0.705919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0987702 -0.214251 0.687231 RAD 0.00617284 + txt002 + SPHERE CENTER 0.110742 -0.207696 0.707807 RAD 0.00617284 + txt002 + SPHERE CENTER 0.201532 -0.167041 0.715923 RAD 0.0185185 + txt002 + SPHERE CENTER 0.219088 -0.151829 0.724292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.221861 -0.163068 0.702483 RAD 0.00617284 + txt002 + SPHERE CENTER 0.205084 -0.14514 0.705088 RAD 0.00617284 + txt002 + SPHERE CENTER 0.19876 -0.155801 0.737733 RAD 0.00617284 + txt002 + SPHERE CENTER 0.184756 -0.149113 0.718528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.181204 -0.171014 0.729364 RAD 0.00617284 + txt002 + SPHERE CENTER 0.215537 -0.173729 0.735128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.197981 -0.188942 0.726759 RAD 0.00617284 + txt002 + SPHERE CENTER 0.218309 -0.184969 0.713318 RAD 0.00617284 + txt002 + SPHERE CENTER 0.159877 -0.228199 0.719322 RAD 0.0185185 + txt002 + SPHERE CENTER 0.167942 -0.229756 0.742607 RAD 0.00617284 + txt002 + SPHERE CENTER 0.183484 -0.223214 0.72457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.16569 -0.207683 0.731771 RAD 0.00617284 + txt002 + SPHERE CENTER 0.144336 -0.234741 0.737359 RAD 0.00617284 + txt002 + SPHERE CENTER 0.142084 -0.212668 0.726523 RAD 0.00617284 + txt002 + SPHERE CENTER 0.13627 -0.233184 0.714074 RAD 0.00617284 + txt002 + SPHERE CENTER 0.162129 -0.250271 0.730157 RAD 0.00617284 + txt002 + SPHERE CENTER 0.154064 -0.248714 0.706872 RAD 0.00617284 + txt002 + SPHERE CENTER 0.177671 -0.243729 0.71212 RAD 0.00617284 + txt002 + SPHERE CENTER 0.224021 -0.229087 0.682285 RAD 0.0185185 + txt002 + SPHERE CENTER 0.248268 -0.22829 0.686881 RAD 0.00617284 + txt002 + SPHERE CENTER 0.2391 -0.216949 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER 0.234532 -0.207937 0.689486 RAD 0.00617284 + txt002 + SPHERE CENTER 0.233189 -0.240428 0.702209 RAD 0.00617284 + txt002 + SPHERE CENTER 0.219453 -0.220075 0.704814 RAD 0.00617284 + txt002 + SPHERE CENTER 0.208942 -0.241225 0.697613 RAD 0.00617284 + txt002 + SPHERE CENTER 0.237756 -0.249439 0.67968 RAD 0.00617284 + txt002 + SPHERE CENTER 0.213509 -0.250236 0.675083 RAD 0.00617284 + txt002 + SPHERE CENTER 0.228589 -0.238098 0.659755 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0058509 -0.451136 0.729516 RAD 0.0555556 + txt002 + SPHERE CENTER 0.0051487 -0.447081 0.803476 RAD 0.0185185 + txt002 + SPHERE CENTER 0.01504 -0.435909 0.823149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0289993 -0.440694 0.803352 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0115452 -0.423265 0.802231 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00881065 -0.442297 0.823273 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0123054 -0.429652 0.802355 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0187019 -0.453468 0.8036 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00864346 -0.459725 0.824394 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0012478 -0.470897 0.804721 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0226028 -0.46451 0.804597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0688765 -0.439178 0.766553 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0903221 -0.426942 0.766429 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0806307 -0.435083 0.745229 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0699989 -0.416328 0.757266 RAD 0.00617284 + txt002 + SPHERE CENTER 0.078568 -0.431037 0.787754 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0582447 -0.420423 0.77859 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0571224 -0.443274 0.787878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0891998 -0.449792 0.775717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0677542 -0.462029 0.775841 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0795084 -0.457933 0.754517 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0172804 -0.386138 0.763155 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0293677 -0.364644 0.76191 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0401449 -0.385352 0.753867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0213457 -0.375512 0.741241 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0065032 -0.36543 0.771198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00151881 -0.376298 0.750529 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00558411 -0.386924 0.772443 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0253024 -0.37527 0.783824 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0132151 -0.396764 0.785069 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0360796 -0.395978 0.775781 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0578769 -0.459039 0.766439 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0707378 -0.451803 0.786236 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0461991 -0.454158 0.787639 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0561039 -0.435761 0.774481 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0824157 -0.456685 0.765035 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0677817 -0.440643 0.753281 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0695548 -0.46392 0.745238 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0725109 -0.475081 0.778193 RAD 0.00617284 + txt002 + SPHERE CENTER -0.05965 -0.482316 0.758396 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0479721 -0.477435 0.779597 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0457452 -0.398096 0.726118 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0495643 -0.373728 0.724997 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0306825 -0.382672 0.738155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.030137 -0.383722 0.713492 RAD 0.00617284 + txt002 + SPHERE CENTER -0.064627 -0.389151 0.71296 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0451997 -0.399146 0.701455 RAD 0.00617284 + txt002 + SPHERE CENTER -0.060808 -0.41352 0.714081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0651725 -0.388102 0.737623 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0613535 -0.41247 0.738744 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0462908 -0.397047 0.750781 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0571747 -0.463094 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER -0.081612 -0.459563 0.692603 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0696122 -0.463589 0.713804 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0665888 -0.442243 0.701767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0691745 -0.459069 0.671279 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0541513 -0.441749 0.680442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0447373 -0.4626 0.671155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0721979 -0.480415 0.683315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0477607 -0.483946 0.683192 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0601982 -0.48444 0.704516 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00628079 -0.512079 0.769837 RAD 0.0185185 + txt002 + SPHERE CENTER -0.000557006 -0.523883 0.790755 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0165974 -0.51057 0.779001 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00208214 -0.49924 0.790506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0234352 -0.525392 0.781591 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0249603 -0.500749 0.781342 RAD 0.00617284 + txt002 + SPHERE CENTER -0.029159 -0.513588 0.760673 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00475566 -0.536722 0.770086 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0104794 -0.524918 0.749168 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0123987 -0.523409 0.758332 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00557859 -0.516134 0.695877 RAD 0.0185185 + txt002 + SPHERE CENTER -0.00154892 -0.540463 0.697123 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0156462 -0.524673 0.705165 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00538221 -0.52751 0.717791 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0227737 -0.531924 0.687835 RAD 0.00617284 + txt002 + SPHERE CENTER -0.026607 -0.518971 0.708504 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0268034 -0.507596 0.68659 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00174531 -0.529087 0.675209 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00577498 -0.504759 0.673964 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0154498 -0.513298 0.683251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0574471 -0.504176 0.732914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0817008 -0.508666 0.734036 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0732807 -0.489545 0.720878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0722467 -0.488971 0.745541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0658672 -0.523298 0.746073 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0564131 -0.503602 0.757577 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0416134 -0.518808 0.744951 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0669012 -0.523872 0.72141 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0426474 -0.519382 0.720288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.058481 -0.504751 0.708251 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0483751 -0.248762 0.655442 RAD 0.0555556 + txt002 + SPHERE CENTER -0.0599222 -0.183785 0.689081 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0522053 -0.160406 0.690965 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0358698 -0.178533 0.687193 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0513956 -0.171954 0.669156 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0762577 -0.165658 0.692853 RAD 0.00617284 + txt002 + SPHERE CENTER -0.075448 -0.177206 0.671044 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0839747 -0.189036 0.690969 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0607319 -0.172236 0.71089 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0684488 -0.195615 0.709006 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0443964 -0.190363 0.707118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00673113 -0.215921 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0258737 -0.20044 0.690591 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0203763 -0.215612 0.671903 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00551963 -0.196602 0.677151 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0122285 -0.200749 0.711167 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00812553 -0.196911 0.697727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00691403 -0.21623 0.713055 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0270852 -0.21976 0.705919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00794264 -0.235241 0.707807 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0215878 -0.234932 0.687231 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0172857 -0.187119 0.6286 RAD 0.0185185 + txt002 + SPHERE CENTER -0.00705049 -0.176731 0.608675 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00352517 -0.200733 0.613272 RAD 0.00617284 + txt002 + SPHERE CENTER -0.025725 -0.192673 0.60607 RAD 0.00617284 + txt002 + SPHERE CENTER -0.020811 -0.163117 0.624003 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0394855 -0.179058 0.621398 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0310463 -0.173504 0.643928 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00138875 -0.171177 0.631205 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00884647 -0.181564 0.65113 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00491406 -0.195179 0.635801 RAD 0.00617284 + txt002 + SPHERE CENTER -0.115028 -0.216626 0.652044 RAD 0.0185185 + txt002 + SPHERE CENTER -0.127519 -0.195663 0.655816 RAD 0.00617284 + txt002 + SPHERE CENTER -0.108803 -0.201738 0.670732 RAD 0.00617284 + txt002 + SPHERE CENTER -0.104303 -0.194866 0.647447 RAD 0.00617284 + txt002 + SPHERE CENTER -0.133744 -0.210551 0.637128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.110528 -0.209754 0.628759 RAD 0.00617284 + txt002 + SPHERE CENTER -0.121254 -0.231514 0.633356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.138245 -0.217423 0.660413 RAD 0.00617284 + txt002 + SPHERE CENTER -0.125754 -0.238386 0.656641 RAD 0.00617284 + txt002 + SPHERE CENTER -0.119529 -0.223497 0.675329 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0723919 -0.21996 0.591563 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0673141 -0.20388 0.573526 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0609052 -0.198742 0.596811 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0490355 -0.216456 0.584361 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0788008 -0.225098 0.568278 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0605222 -0.237674 0.579113 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0838786 -0.241177 0.586315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0906706 -0.207384 0.580727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0957484 -0.223463 0.598764 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0842617 -0.202246 0.604012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.103481 -0.281603 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.126206 -0.291073 0.620293 RAD 0.00617284 + txt002 + SPHERE CENTER -0.110246 -0.293457 0.638981 RAD 0.00617284 + txt002 + SPHERE CENTER -0.119897 -0.271345 0.633733 RAD 0.00617284 + txt002 + SPHERE CENTER -0.119442 -0.279219 0.599717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.113132 -0.25949 0.613157 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0967168 -0.269749 0.597829 RAD 0.00617284 + txt002 + SPHERE CENTER -0.10979 -0.301332 0.604965 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0870656 -0.291862 0.603077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0938302 -0.303716 0.623653 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0910116 -0.245428 0.715923 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0942304 -0.234308 0.737733 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0714204 -0.238704 0.729364 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0854464 -0.221514 0.718528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.113822 -0.241032 0.724292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.105038 -0.228237 0.705088 RAD 0.00617284 + txt002 + SPHERE CENTER -0.110603 -0.252152 0.702483 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0997955 -0.258223 0.735128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0965768 -0.269343 0.713318 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0769856 -0.262619 0.726759 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0794645 -0.310405 0.682285 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0817333 -0.324811 0.702209 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0603366 -0.313378 0.697613 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0800146 -0.300317 0.704814 RAD 0.00617284 + txt002 + SPHERE CENTER -0.100861 -0.321838 0.686881 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0991425 -0.297345 0.689486 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0985923 -0.307433 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0811832 -0.334899 0.67968 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0789143 -0.320493 0.659755 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0597864 -0.323466 0.675083 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0243582 -0.277564 0.719322 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0076281 -0.275459 0.737359 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00142185 -0.270078 0.714074 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0167139 -0.255218 0.726523 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0305645 -0.282946 0.742607 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0396503 -0.262704 0.731771 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0472946 -0.285051 0.72457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0152725 -0.297806 0.730157 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0320026 -0.299911 0.71212 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00906621 -0.292425 0.706872 RAD 0.00617284 + txt002 + SPHERE CENTER -0.115031 -0.4293 0.544331 RAD 0.0555556 + txt002 + SPHERE CENTER -0.178985 -0.424299 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.190929 -0.412497 0.599471 RAD 0.00617284 + txt002 + SPHERE CENTER -0.16674 -0.417001 0.601529 RAD 0.00617284 + txt002 + SPHERE CENTER -0.174844 -0.400273 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.203175 -0.419795 0.57931 RAD 0.00617284 + txt002 + SPHERE CENTER -0.18709 -0.407571 0.565115 RAD 0.00617284 + txt002 + SPHERE CENTER -0.191231 -0.431597 0.561208 RAD 0.00617284 + txt002 + SPHERE CENTER -0.195071 -0.436523 0.595564 RAD 0.00617284 + txt002 + SPHERE CENTER -0.183127 -0.448325 0.577461 RAD 0.00617284 + txt002 + SPHERE CENTER -0.170881 -0.441027 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.115031 -0.4293 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.10495 -0.41922 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0911807 -0.42291 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.10864 -0.40545 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.128801 -0.425611 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.13249 -0.411841 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.138881 -0.435691 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.111341 -0.44307 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.121421 -0.45315 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0975713 -0.44676 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.131634 -0.367336 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.12515 -0.343834 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.107784 -0.360946 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.122476 -0.353814 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.149 -0.350225 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.146326 -0.360204 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.155484 -0.373727 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.134308 -0.357357 0.603794 RAD 0.00617284 + txt002 + SPHERE CENTER -0.140792 -0.380859 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.116942 -0.374468 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.178985 -0.424299 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.200165 -0.411775 0.505236 RAD 0.00617284 + txt002 + SPHERE CENTER -0.189948 -0.415187 0.527454 RAD 0.00617284 + txt002 + SPHERE CENTER -0.179342 -0.399922 0.511201 RAD 0.00617284 + txt002 + SPHERE CENTER -0.189202 -0.420888 0.485076 RAD 0.00617284 + txt002 + SPHERE CENTER -0.168379 -0.409035 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.168023 -0.433412 0.487134 RAD 0.00617284 + txt002 + SPHERE CENTER -0.199808 -0.436152 0.501329 RAD 0.00617284 + txt002 + SPHERE CENTER -0.178629 -0.448677 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.189591 -0.439564 0.523547 RAD 0.00617284 + txt002 + SPHERE CENTER -0.131634 -0.367336 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.123305 -0.350719 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.107784 -0.360946 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.116942 -0.374468 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.147155 -0.357109 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.140792 -0.380859 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.155484 -0.373727 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.137998 -0.343587 0.509559 RAD 0.00617284 + txt002 + SPHERE CENTER -0.146326 -0.360204 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.122476 -0.353814 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.115031 -0.4293 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER -0.125111 -0.41922 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.138881 -0.42291 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.121421 -0.40545 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.101261 -0.425611 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0975713 -0.411841 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0911807 -0.435691 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.11872 -0.44307 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.10864 -0.45315 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.13249 -0.44676 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.162382 -0.486264 0.544331 RAD 0.0185185 + txt002 + SPHERE CENTER -0.174264 -0.502603 0.558526 RAD 0.00617284 + txt002 + SPHERE CENTER -0.15142 -0.495376 0.564491 RAD 0.00617284 + txt002 + SPHERE CENTER -0.170327 -0.479659 0.566757 RAD 0.00617284 + txt002 + SPHERE CENTER -0.185226 -0.49349 0.538366 RAD 0.00617284 + txt002 + SPHERE CENTER -0.18129 -0.470546 0.546597 RAD 0.00617284 + txt002 + SPHERE CENTER -0.173345 -0.477151 0.524171 RAD 0.00617284 + txt002 + SPHERE CENTER -0.166319 -0.509207 0.536101 RAD 0.00617284 + txt002 + SPHERE CENTER -0.154437 -0.492868 0.521905 RAD 0.00617284 + txt002 + SPHERE CENTER -0.143475 -0.501981 0.542066 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0984274 -0.491265 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0810612 -0.508376 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0745774 -0.484874 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0837352 -0.498397 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.104911 -0.514767 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.107585 -0.504787 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.122277 -0.497655 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0957534 -0.501244 0.484868 RAD 0.00617284 + txt002 + SPHERE CENTER -0.11312 -0.484132 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0892696 -0.477742 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0984274 -0.491265 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.082906 -0.501491 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0745774 -0.484874 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0892696 -0.477742 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.106756 -0.507882 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.11312 -0.484132 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.122277 -0.497655 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0920638 -0.515014 0.579103 RAD 0.00617284 + txt002 + SPHERE CENTER -0.107585 -0.504787 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0837352 -0.498397 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.153845 -0.574159 0.618405 RAD 0.0555556 + txt002 + SPHERE CENTER 0.202534 -0.612768 0.658726 RAD 0.0185185 + txt002 + SPHERE CENTER 0.225282 -0.612732 0.668328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.22113 -0.60221 0.64638 RAD 0.00617284 + txt002 + SPHERE CENTER 0.212428 -0.591695 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER 0.206686 -0.62329 0.680674 RAD 0.00617284 + txt002 + SPHERE CENTER 0.193832 -0.602253 0.679302 RAD 0.00617284 + txt002 + SPHERE CENTER 0.183939 -0.623325 0.671072 RAD 0.00617284 + txt002 + SPHERE CENTER 0.215388 -0.633805 0.660098 RAD 0.00617284 + txt002 + SPHERE CENTER 0.192641 -0.63384 0.650495 RAD 0.00617284 + txt002 + SPHERE CENTER 0.211236 -0.623283 0.63815 RAD 0.00617284 + txt002 + SPHERE CENTER 0.225396 -0.554987 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.243024 -0.542885 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.225396 -0.554987 0.593714 RAD 0.00617284 + txt002 + SPHERE CENTER 0.219861 -0.534333 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.243024 -0.542885 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.219861 -0.534333 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.225396 -0.554987 0.643096 RAD 0.00617284 + txt002 + SPHERE CENTER 0.248559 -0.563539 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.23093 -0.575642 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.23093 -0.575642 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.184086 -0.543919 0.678886 RAD 0.0185185 + txt002 + SPHERE CENTER 0.200547 -0.527458 0.687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.205161 -0.540303 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.187702 -0.522843 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.179472 -0.531074 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.166627 -0.526459 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER 0.163011 -0.547535 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER 0.196931 -0.548533 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.18047 -0.564994 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER 0.201546 -0.561378 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER 0.130984 -0.631939 0.658726 RAD 0.0185185 + txt002 + SPHERE CENTER 0.132649 -0.643128 0.680674 RAD 0.00617284 + txt002 + SPHERE CENTER 0.152367 -0.631785 0.671072 RAD 0.00617284 + txt002 + SPHERE CENTER 0.133263 -0.618482 0.679302 RAD 0.00617284 + txt002 + SPHERE CENTER 0.111266 -0.643283 0.668328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.11188 -0.618637 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER 0.109601 -0.632094 0.64638 RAD 0.00617284 + txt002 + SPHERE CENTER 0.130371 -0.656585 0.660098 RAD 0.00617284 + txt002 + SPHERE CENTER 0.128706 -0.645397 0.63815 RAD 0.00617284 + txt002 + SPHERE CENTER 0.150088 -0.645242 0.650495 RAD 0.00617284 + txt002 + SPHERE CENTER 0.112536 -0.56309 0.678886 RAD 0.0185185 + txt002 + SPHERE CENTER 0.11011 -0.549659 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.132596 -0.555684 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER 0.118927 -0.53924 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER 0.09005 -0.557065 0.687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0988668 -0.546646 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0924762 -0.570497 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.103719 -0.573509 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.106145 -0.58694 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER 0.126205 -0.579534 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0822954 -0.593331 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0609772 -0.591664 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0822954 -0.593331 0.643096 RAD 0.00617284 + txt002 + SPHERE CENTER 0.076761 -0.572676 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0609772 -0.591664 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.076761 -0.572676 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0822954 -0.593331 0.593714 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0665116 -0.612319 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0878298 -0.613986 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0878298 -0.613986 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.172294 -0.643008 0.598245 RAD 0.0185185 + txt002 + SPHERE CENTER 0.189742 -0.660425 0.599616 RAD 0.00617284 + txt002 + SPHERE CENTER 0.196144 -0.636618 0.598245 RAD 0.00617284 + txt002 + SPHERE CENTER 0.185725 -0.645434 0.618821 RAD 0.00617284 + txt002 + SPHERE CENTER 0.165892 -0.666816 0.599616 RAD 0.00617284 + txt002 + SPHERE CENTER 0.161875 -0.651825 0.618821 RAD 0.00617284 + txt002 + SPHERE CENTER 0.148444 -0.649399 0.598245 RAD 0.00617284 + txt002 + SPHERE CENTER 0.17631 -0.657999 0.57904 RAD 0.00617284 + txt002 + SPHERE CENTER 0.158862 -0.640582 0.577669 RAD 0.00617284 + txt002 + SPHERE CENTER 0.182712 -0.634191 0.577669 RAD 0.00617284 + txt002 + SPHERE CENTER 0.123605 -0.6044 0.557924 RAD 0.0185185 + txt002 + SPHERE CENTER 0.107144 -0.620861 0.549693 RAD 0.00617284 + txt002 + SPHERE CENTER 0.119989 -0.625475 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER 0.102529 -0.608016 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER 0.11076 -0.599785 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER 0.106145 -0.58694 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER 0.127221 -0.583324 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.128219 -0.617245 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER 0.14468 -0.600784 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.141064 -0.621859 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER 0.195155 -0.585228 0.557924 RAD 0.0185185 + txt002 + SPHERE CENTER 0.203972 -0.574809 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER 0.181486 -0.568784 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.201546 -0.561378 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER 0.217641 -0.591253 0.549693 RAD 0.00617284 + txt002 + SPHERE CENTER 0.215215 -0.577822 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER 0.208824 -0.601672 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER 0.197581 -0.598659 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER 0.188764 -0.609078 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER 0.175095 -0.592634 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0329639 -0.552323 0.43322 RAD 0.0555556 + txt002 + SPHERE CENTER 0.0248832 -0.625877 0.436618 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0316054 -0.646362 0.448652 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0478 -0.627981 0.445566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0287309 -0.625173 0.460998 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00868865 -0.644258 0.439705 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00581415 -0.623069 0.45205 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00196644 -0.623773 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0277577 -0.647066 0.424272 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0210355 -0.62658 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0439523 -0.628685 0.421186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0822954 -0.593331 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.105299 -0.593994 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER 0.100664 -0.582384 0.457911 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0926585 -0.572783 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0869303 -0.604941 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0742898 -0.58373 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0639267 -0.604278 0.482603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0949359 -0.614541 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0719323 -0.613879 0.46131 RAD 0.00617284 + txt002 + SPHERE CENTER 0.090301 -0.602932 0.448964 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0138144 -0.584567 0.497099 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0177119 -0.584898 0.521479 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0364224 -0.580268 0.506047 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0185345 -0.56353 0.509133 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00489609 -0.589197 0.512531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00407348 -0.567829 0.500186 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00879364 -0.588867 0.488152 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0129918 -0.605935 0.509445 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00909422 -0.605605 0.485065 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0317022 -0.601305 0.494013 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0244483 -0.584869 0.399581 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0473753 -0.5935 0.402668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0308315 -0.595617 0.420874 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0399691 -0.57344 0.415013 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0409921 -0.582752 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0335859 -0.562692 0.39372 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0180651 -0.574121 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0318545 -0.604929 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00892756 -0.596298 0.384149 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0153107 -0.607046 0.405442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0355172 -0.54356 0.460062 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0495897 -0.530389 0.475494 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0261165 -0.53532 0.481355 RAD 0.00617284 + txt002 + SPHERE CENTER -0.031221 -0.519442 0.463149 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0589904 -0.538628 0.454201 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0406217 -0.527681 0.441856 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0449178 -0.551799 0.438769 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0538859 -0.554507 0.472408 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0398133 -0.567678 0.456976 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0304127 -0.559438 0.478269 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0163676 -0.511316 0.396183 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0212225 -0.48882 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00896145 -0.491256 0.408529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00194055 -0.497372 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0286287 -0.50888 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00546563 -0.517432 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0237738 -0.531375 0.383837 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0395307 -0.502764 0.396183 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0346758 -0.525259 0.40513 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0272696 -0.505199 0.417476 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0440327 -0.593633 0.372739 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0604766 -0.607302 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0678827 -0.587242 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0604766 -0.607302 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0366265 -0.613693 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0366265 -0.613693 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0201827 -0.600023 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0440327 -0.593633 0.348047 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0275889 -0.579964 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0514389 -0.573573 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0521134 -0.520079 0.369341 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0542684 -0.523344 0.344961 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0591566 -0.541988 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0358996 -0.534291 0.357307 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0472252 -0.501435 0.353908 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0288565 -0.512382 0.366254 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0450702 -0.49817 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0704822 -0.509132 0.356995 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0683272 -0.505868 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0753703 -0.527777 0.372427 RAD 0.00617284 + txt002 + SPHERE CENTER 0.101445 -0.561087 0.406378 RAD 0.0185185 + txt002 + SPHERE CENTER 0.118381 -0.551884 0.390945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0944221 -0.550745 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.103361 -0.536664 0.403291 RAD 0.00617284 + txt002 + SPHERE CENTER 0.125404 -0.562225 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.110383 -0.547006 0.424584 RAD 0.00617284 + txt002 + SPHERE CENTER 0.108468 -0.571428 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER 0.116465 -0.576307 0.394032 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0995293 -0.58551 0.409464 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0925065 -0.575168 0.388171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.247614 -0.494808 0.43322 RAD 0.0555556 + txt002 + SPHERE CENTER 0.313607 -0.494287 0.399581 RAD 0.0185185 + txt002 + SPHERE CENTER 0.326876 -0.484182 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.302705 -0.488171 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.310432 -0.470513 0.39372 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337778 -0.490299 0.402668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.321334 -0.476629 0.415013 RAD 0.00617284 + txt002 + SPHERE CENTER 0.324509 -0.500404 0.420874 RAD 0.00617284 + txt002 + SPHERE CENTER 0.330051 -0.507957 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.316783 -0.518062 0.405442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.305881 -0.511946 0.384149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.269833 -0.434629 0.396183 RAD 0.0185185 + txt002 + SPHERE CENTER 0.279233 -0.426389 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER 0.286276 -0.448298 0.383837 RAD 0.00617284 + txt002 + SPHERE CENTER 0.263449 -0.445377 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER 0.262789 -0.41272 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.247006 -0.431707 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.253389 -0.420959 0.408529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.285616 -0.415641 0.396183 RAD 0.00617284 + txt002 + SPHERE CENTER 0.276216 -0.42388 0.417476 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29266 -0.43755 0.40513 RAD 0.00617284 + txt002 + SPHERE CENTER 0.302539 -0.452978 0.460062 RAD 0.0185185 + txt002 + SPHERE CENTER 0.320401 -0.436971 0.454201 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3148 -0.455413 0.438769 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29902 -0.436675 0.441856 RAD 0.00617284 + txt002 + SPHERE CENTER 0.30814 -0.434535 0.475494 RAD 0.00617284 + txt002 + SPHERE CENTER 0.286759 -0.434239 0.463149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.290278 -0.450543 0.481355 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32392 -0.453274 0.472408 RAD 0.00617284 + txt002 + SPHERE CENTER 0.306057 -0.469281 0.478269 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318318 -0.471717 0.456976 RAD 0.00617284 + txt002 + SPHERE CENTER 0.291389 -0.554467 0.436618 RAD 0.0185185 + txt002 + SPHERE CENTER 0.314604 -0.562288 0.439705 RAD 0.00617284 + txt002 + SPHERE CENTER 0.310183 -0.541186 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER 0.306499 -0.542501 0.45205 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29581 -0.575569 0.448652 RAD 0.00617284 + txt002 + SPHERE CENTER 0.287705 -0.555781 0.460998 RAD 0.00617284 + txt002 + SPHERE CENTER 0.272595 -0.567748 0.445566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.299494 -0.574255 0.424272 RAD 0.00617284 + txt002 + SPHERE CENTER 0.276279 -0.566433 0.421186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.295073 -0.553152 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.28032 -0.513157 0.497099 RAD 0.0185185 + txt002 + SPHERE CENTER 0.298839 -0.507811 0.512531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.302049 -0.505577 0.488152 RAD 0.00617284 + txt002 + SPHERE CENTER 0.287442 -0.489718 0.500186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.27711 -0.515392 0.521479 RAD 0.00617284 + txt002 + SPHERE CENTER 0.265714 -0.497299 0.509133 RAD 0.00617284 + txt002 + SPHERE CENTER 0.258591 -0.520738 0.506047 RAD 0.00617284 + txt002 + SPHERE CENTER 0.291716 -0.531251 0.509445 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273198 -0.536597 0.494013 RAD 0.00617284 + txt002 + SPHERE CENTER 0.294927 -0.529016 0.485065 RAD 0.00617284 + txt002 + SPHERE CENTER 0.225396 -0.554987 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.227186 -0.567359 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.246777 -0.555283 0.482603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.227528 -0.54267 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.205805 -0.567063 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER 0.206147 -0.542374 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER 0.204014 -0.554691 0.457911 RAD 0.00617284 + txt002 + SPHERE CENTER 0.225054 -0.579676 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.223263 -0.567305 0.448964 RAD 0.00617284 + txt002 + SPHERE CENTER 0.244644 -0.567601 0.46131 RAD 0.00617284 + txt002 + SPHERE CENTER 0.258683 -0.536117 0.372739 RAD 0.0185185 + txt002 + SPHERE CENTER 0.275127 -0.549787 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282533 -0.529727 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER 0.275127 -0.549787 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.251277 -0.556177 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.251277 -0.556177 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.234833 -0.542508 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER 0.258683 -0.536117 0.348047 RAD 0.00617284 + txt002 + SPHERE CENTER 0.242239 -0.522448 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.266089 -0.516058 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.19269 -0.536638 0.406378 RAD 0.0185185 + txt002 + SPHERE CENTER 0.17251 -0.549603 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.191778 -0.549105 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER 0.177908 -0.528912 0.424584 RAD 0.00617284 + txt002 + SPHERE CENTER 0.173421 -0.537136 0.390945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.178819 -0.516445 0.403291 RAD 0.00617284 + txt002 + SPHERE CENTER 0.193601 -0.524171 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.187292 -0.557329 0.394032 RAD 0.00617284 + txt002 + SPHERE CENTER 0.207471 -0.544363 0.388171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.20656 -0.556831 0.409464 RAD 0.00617284 + txt002 + SPHERE CENTER 0.214908 -0.476459 0.369341 RAD 0.0185185 + txt002 + SPHERE CENTER 0.209819 -0.457868 0.353908 RAD 0.00617284 + txt002 + SPHERE CENTER 0.210053 -0.453963 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.2312 -0.458164 0.366254 RAD 0.00617284 + txt002 + SPHERE CENTER 0.214674 -0.480363 0.344961 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236055 -0.480659 0.357307 RAD 0.00617284 + txt002 + SPHERE CENTER 0.219763 -0.498954 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.193527 -0.476163 0.356995 RAD 0.00617284 + txt002 + SPHERE CENTER 0.198616 -0.494753 0.372427 RAD 0.00617284 + txt002 + SPHERE CENTER 0.193761 -0.472258 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.172546 -0.643951 1.11022e-16 RAD 0.166667 + txt002 + SPHERE CENTER -0.157543 -0.835815 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.122136 -0.871646 0.165419 RAD 0.0185185 + txt002 + SPHERE CENTER -0.102403 -0.871334 0.180258 RAD 0.00617284 + txt002 + SPHERE CENTER -0.100577 -0.862937 0.157111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.113406 -0.850164 0.173902 RAD 0.00617284 + txt002 + SPHERE CENTER -0.123961 -0.880044 0.188567 RAD 0.00617284 + txt002 + SPHERE CENTER -0.134964 -0.858873 0.182211 RAD 0.00617284 + txt002 + SPHERE CENTER -0.143694 -0.880356 0.173728 RAD 0.00617284 + txt002 + SPHERE CENTER -0.111133 -0.892817 0.171776 RAD 0.00617284 + txt002 + SPHERE CENTER -0.130866 -0.893129 0.156937 RAD 0.00617284 + txt002 + SPHERE CENTER -0.109307 -0.884419 0.148628 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0854653 -0.82339 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0654286 -0.811594 0.114524 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0820122 -0.820516 0.0985541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0876595 -0.80102 0.112614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0688817 -0.814468 0.138803 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0911125 -0.803895 0.136894 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0889183 -0.826265 0.147112 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0632344 -0.833964 0.124743 RAD 0.00617284 + txt002 + SPHERE CENTER -0.083271 -0.845761 0.133052 RAD 0.00617284 + txt002 + SPHERE CENTER -0.079818 -0.842886 0.108773 RAD 0.00617284 + txt002 + SPHERE CENTER -0.135649 -0.799077 0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER -0.120908 -0.781177 0.180075 RAD 0.00617284 + txt002 + SPHERE CENTER -0.113462 -0.795477 0.161374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.13149 -0.778973 0.157875 RAD 0.00617284 + txt002 + SPHERE CENTER -0.143095 -0.784778 0.190293 RAD 0.00617284 + txt002 + SPHERE CENTER -0.153678 -0.782573 0.168094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.157836 -0.802678 0.181811 RAD 0.00617284 + txt002 + SPHERE CENTER -0.125067 -0.801282 0.193792 RAD 0.00617284 + txt002 + SPHERE CENTER -0.139808 -0.819182 0.18531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.11762 -0.815582 0.175091 RAD 0.00617284 + txt002 + SPHERE CENTER -0.194213 -0.884071 0.153697 RAD 0.0185185 + txt002 + SPHERE CENTER -0.197746 -0.891905 0.176845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.175383 -0.884286 0.169668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.193701 -0.867957 0.172398 RAD 0.00617284 + txt002 + SPHERE CENTER -0.216576 -0.89169 0.160875 RAD 0.00617284 + txt002 + SPHERE CENTER -0.212531 -0.867741 0.156428 RAD 0.00617284 + txt002 + SPHERE CENTER -0.213043 -0.883856 0.137727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.198259 -0.908019 0.158144 RAD 0.00617284 + txt002 + SPHERE CENTER -0.194726 -0.900186 0.134996 RAD 0.00617284 + txt002 + SPHERE CENTER -0.175896 -0.900401 0.150967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.207727 -0.811502 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.212743 -0.794108 0.176661 RAD 0.00617284 + txt002 + SPHERE CENTER -0.189621 -0.802328 0.173931 RAD 0.00617284 + txt002 + SPHERE CENTER -0.199907 -0.788345 0.156372 RAD 0.00617284 + txt002 + SPHERE CENTER -0.230849 -0.803282 0.162601 RAD 0.00617284 + txt002 + SPHERE CENTER -0.218012 -0.797518 0.142311 RAD 0.00617284 + txt002 + SPHERE CENTER -0.225832 -0.820676 0.14581 RAD 0.00617284 + txt002 + SPHERE CENTER -0.220563 -0.817265 0.18016 RAD 0.00617284 + txt002 + SPHERE CENTER -0.215547 -0.83466 0.163369 RAD 0.00617284 + txt002 + SPHERE CENTER -0.197441 -0.825486 0.177429 RAD 0.00617284 + txt002 + SPHERE CENTER -0.229621 -0.84824 0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.25245 -0.843832 0.107698 RAD 0.00617284 + txt002 + SPHERE CENTER -0.233837 -0.846687 0.123668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.235043 -0.826426 0.109608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.248234 -0.845385 0.0834188 RAD 0.00617284 + txt002 + SPHERE CENTER -0.230827 -0.827978 0.0853287 RAD 0.00617284 + txt002 + SPHERE CENTER -0.225404 -0.849792 0.0751099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.247028 -0.865646 0.0974792 RAD 0.00617284 + txt002 + SPHERE CENTER -0.224198 -0.870053 0.0891702 RAD 0.00617284 + txt002 + SPHERE CENTER -0.228415 -0.868501 0.113449 RAD 0.00617284 + txt002 + SPHERE CENTER -0.14403 -0.908384 0.104938 RAD 0.0185185 + txt002 + SPHERE CENTER -0.128672 -0.926643 0.111295 RAD 0.00617284 + txt002 + SPHERE CENTER -0.1198 -0.904034 0.106848 RAD 0.00617284 + txt002 + SPHERE CENTER -0.133221 -0.90826 0.127138 RAD 0.00617284 + txt002 + SPHERE CENTER -0.152902 -0.930993 0.109385 RAD 0.00617284 + txt002 + SPHERE CENTER -0.157451 -0.912609 0.125228 RAD 0.00617284 + txt002 + SPHERE CENTER -0.16826 -0.912733 0.103028 RAD 0.00617284 + txt002 + SPHERE CENTER -0.139481 -0.926768 0.0890951 RAD 0.00617284 + txt002 + SPHERE CENTER -0.154838 -0.908508 0.0827387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.130608 -0.904159 0.0846485 RAD 0.00617284 + txt002 + SPHERE CENTER -0.179437 -0.872552 0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER -0.188167 -0.894035 0.0421477 RAD 0.00617284 + txt002 + SPHERE CENTER -0.172046 -0.89378 0.0608487 RAD 0.00617284 + txt002 + SPHERE CENTER -0.195141 -0.885777 0.0643473 RAD 0.00617284 + txt002 + SPHERE CENTER -0.195558 -0.872807 0.0319289 RAD 0.00617284 + txt002 + SPHERE CENTER -0.202532 -0.864549 0.0541285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.186828 -0.851325 0.0404111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.172463 -0.880811 0.0284303 RAD 0.00617284 + txt002 + SPHERE CENTER -0.163733 -0.859328 0.0369125 RAD 0.00617284 + txt002 + SPHERE CENTER -0.156342 -0.880556 0.0471312 RAD 0.00617284 + txt002 + SPHERE CENTER -0.107359 -0.860128 0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0905999 -0.853284 0.0455609 RAD 0.00617284 + txt002 + SPHERE CENTER -0.111382 -0.840233 0.0482916 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0940331 -0.839638 0.0658506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.086577 -0.873178 0.0596212 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0900102 -0.859532 0.079911 RAD 0.00617284 + txt002 + SPHERE CENTER -0.103336 -0.880022 0.0764123 RAD 0.00617284 + txt002 + SPHERE CENTER -0.103926 -0.873773 0.0420622 RAD 0.00617284 + txt002 + SPHERE CENTER -0.120685 -0.880618 0.0588533 RAD 0.00617284 + txt002 + SPHERE CENTER -0.124708 -0.860723 0.044793 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0133465 -0.69376 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.0838533 -0.674309 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.103063 -0.66171 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0876683 -0.673446 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0800983 -0.653258 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0992478 -0.662574 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0762832 -0.654121 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0800382 -0.675172 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.106818 -0.682761 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0876083 -0.69536 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0914233 -0.694497 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0539145 -0.666287 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0547519 -0.662466 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0439578 -0.682791 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0332597 -0.660752 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0647085 -0.645962 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0432164 -0.644249 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0638711 -0.649783 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0754066 -0.668 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0745692 -0.671821 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0646126 -0.688325 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0325183 -0.62221 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0446211 -0.604582 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.053173 -0.627745 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0325183 -0.62221 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0239663 -0.599047 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0118635 -0.616676 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0118635 -0.616676 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0446211 -0.604582 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0325183 -0.62221 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.053173 -0.627745 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0432853 -0.701782 0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0608821 -0.693716 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0652402 -0.694884 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0496759 -0.677932 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0389272 -0.700615 0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.027721 -0.684831 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0213304 -0.708681 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0544915 -0.717566 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0368947 -0.725632 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0588496 -0.718734 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00804971 -0.649684 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.00328338 -0.628657 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0152909 -0.642244 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.000378614 -0.630031 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.026624 -0.636097 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.022962 -0.637471 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0313903 -0.657124 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0117117 -0.648309 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.016478 -0.669336 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00686255 -0.661896 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0272215 -0.721234 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0310802 -0.720593 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00820099 -0.718114 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0246945 -0.7 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0501007 -0.723713 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.043715 -0.70312 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.046242 -0.724354 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0336072 -0.741827 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0297485 -0.742467 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.010728 -0.739347 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0646815 -0.745859 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0887955 -0.750021 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0813312 -0.732161 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.078459 -0.729506 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0721458 -0.763719 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0618093 -0.743204 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0480318 -0.759557 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.075018 -0.766375 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.050904 -0.762212 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0675537 -0.748514 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0058253 -0.76531 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.00415829 -0.786629 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0148294 -0.770845 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0058253 -0.76531 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.024813 -0.781094 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.02648 -0.759776 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.02648 -0.759776 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00415829 -0.786629 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0058253 -0.76531 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0148294 -0.770845 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0347427 -0.737837 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0542122 -0.747099 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0550267 -0.7241 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0553974 -0.743371 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0339282 -0.760836 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0351134 -0.757108 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0144587 -0.751574 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0335575 -0.741565 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.014088 -0.732303 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0343719 -0.718566 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.172546 -0.643951 0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER -0.142305 -0.61371 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.125845 -0.597249 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.12123 -0.610094 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.138689 -0.592635 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.14692 -0.600865 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.159765 -0.596251 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.163381 -0.617326 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.12946 -0.618324 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.145921 -0.634785 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.124846 -0.631169 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.100996 -0.624779 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0833673 -0.612676 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.100996 -0.624779 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.10653 -0.604124 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0833673 -0.612676 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.10653 -0.604124 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.100996 -0.624779 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0778329 -0.633331 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0954616 -0.645433 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0954616 -0.645433 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.153374 -0.5724 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.141271 -0.554772 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.13272 -0.577935 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.153374 -0.5724 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.161926 -0.549237 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.174029 -0.566866 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.174029 -0.566866 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.141271 -0.554772 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.153374 -0.5724 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.13272 -0.577935 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.213855 -0.632882 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.216282 -0.61945 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.193796 -0.625476 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.207465 -0.609032 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.236341 -0.626857 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.227525 -0.616438 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.233915 -0.640288 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.222672 -0.6433 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.220246 -0.656732 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.200186 -0.649326 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.224924 -0.591572 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.2291 -0.567237 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.209804 -0.576452 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.209804 -0.576452 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.24422 -0.582357 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.224924 -0.591572 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.240045 -0.606693 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.24422 -0.582357 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.240045 -0.606693 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.224924 -0.591572 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.244096 -0.663122 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.265414 -0.661455 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.244096 -0.663122 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.249631 -0.642468 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.265414 -0.661455 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.249631 -0.642468 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.244096 -0.663122 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.25988 -0.68211 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.238562 -0.683777 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.238562 -0.683777 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.161477 -0.68526 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.148046 -0.687686 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.137627 -0.678869 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.154071 -0.6652 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.171896 -0.694077 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.177921 -0.671591 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.185327 -0.691651 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.155452 -0.707746 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.168883 -0.70532 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.145033 -0.698929 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.191718 -0.715501 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.190051 -0.736819 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.171063 -0.721035 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.191718 -0.715501 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.210706 -0.731284 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.212373 -0.709966 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.212373 -0.709966 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.190051 -0.736819 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.191718 -0.715501 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.171063 -0.721035 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.120168 -0.696329 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.095832 -0.700504 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.105047 -0.681209 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.105047 -0.681209 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.110952 -0.715624 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.120168 -0.696329 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.135288 -0.711449 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.110952 -0.715624 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.135288 -0.711449 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.120168 -0.696329 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.343435 -0.786005 8.51251e-17 RAD 0.0555556 + txt002 + SPHERE CENTER -0.392454 -0.82165 0.0425863 RAD 0.0185185 + txt002 + SPHERE CENTER -0.400556 -0.824791 0.065698 RAD 0.00617284 + txt002 + SPHERE CENTER -0.376528 -0.821021 0.0614442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.392663 -0.802599 0.058292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.416482 -0.82542 0.0468401 RAD 0.00617284 + txt002 + SPHERE CENTER -0.408589 -0.803228 0.0394341 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40838 -0.822279 0.0237283 RAD 0.00617284 + txt002 + SPHERE CENTER -0.400347 -0.843843 0.0499923 RAD 0.00617284 + txt002 + SPHERE CENTER -0.392245 -0.840701 0.0268805 RAD 0.00617284 + txt002 + SPHERE CENTER -0.376319 -0.840073 0.0457385 RAD 0.00617284 + txt002 + SPHERE CENTER -0.323622 -0.80984 0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.308073 -0.80634 0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.300378 -0.802721 0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER -0.316395 -0.786996 0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER -0.331317 -0.813459 0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339639 -0.794116 0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER -0.346866 -0.81696 0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER -0.315299 -0.829184 0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER -0.330849 -0.832685 0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.307605 -0.825565 0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER -0.370774 -0.753118 0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER -0.367981 -0.734271 0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.348136 -0.745269 0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.362711 -0.731279 0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER -0.390619 -0.74212 0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.385349 -0.739128 0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER -0.393412 -0.760966 0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER -0.376044 -0.756109 0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER -0.378837 -0.774956 0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER -0.356199 -0.767107 0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.412267 -0.797815 -0.0246914 RAD 0.0185185 + txt002 + SPHERE CENTER -0.436217 -0.793573 -0.0204376 RAD 0.00617284 + txt002 + SPHERE CENTER -0.420728 -0.796968 -0.00151032 RAD 0.00617284 + txt002 + SPHERE CENTER -0.419454 -0.776294 -0.0149506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.427756 -0.79442 -0.0436186 RAD 0.00617284 + txt002 + SPHERE CENTER -0.410993 -0.777141 -0.0381316 RAD 0.00617284 + txt002 + SPHERE CENTER -0.403807 -0.798662 -0.0478724 RAD 0.00617284 + txt002 + SPHERE CENTER -0.42903 -0.815094 -0.0301783 RAD 0.00617284 + txt002 + SPHERE CENTER -0.405081 -0.819335 -0.0344321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.413542 -0.818489 -0.0112511 RAD 0.00617284 + txt002 + SPHERE CENTER -0.390587 -0.729282 -0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER -0.392427 -0.704862 -0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER -0.373948 -0.714218 0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.374248 -0.717401 -0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER -0.409067 -0.719927 -0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER -0.390887 -0.732465 -0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.407227 -0.744347 -0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.408767 -0.716744 0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER -0.406927 -0.741164 0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER -0.390287 -0.726099 0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER -0.363249 -0.76217 -0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.356966 -0.747522 -0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.352002 -0.740618 -0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339469 -0.759239 -0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER -0.368213 -0.769074 -0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER -0.350716 -0.780791 -0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER -0.374496 -0.783722 -0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER -0.380746 -0.750453 -0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER -0.387029 -0.765101 -0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.375782 -0.743549 -0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER -0.365116 -0.854538 -0.0178949 RAD 0.0185185 + txt002 + SPHERE CENTER -0.365674 -0.878086 -0.0104889 RAD 0.00617284 + txt002 + SPHERE CENTER -0.346241 -0.863875 -0.00500196 RAD 0.00617284 + txt002 + SPHERE CENTER -0.367962 -0.859887 0.00604126 RAD 0.00617284 + txt002 + SPHERE CENTER -0.384548 -0.868748 -0.0233819 RAD 0.00617284 + txt002 + SPHERE CENTER -0.386837 -0.85055 -0.00685171 RAD 0.00617284 + txt002 + SPHERE CENTER -0.38399 -0.8452 -0.0307879 RAD 0.00617284 + txt002 + SPHERE CENTER -0.362827 -0.872736 -0.0344251 RAD 0.00617284 + txt002 + SPHERE CENTER -0.362269 -0.849188 -0.0418311 RAD 0.00617284 + txt002 + SPHERE CENTER -0.343394 -0.858526 -0.0289382 RAD 0.00617284 + txt002 + SPHERE CENTER -0.316097 -0.818893 -0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER -0.297057 -0.819591 -0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.304244 -0.79807 -0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.293153 -0.814956 -0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER -0.30891 -0.840413 -0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.305006 -0.835779 -0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER -0.32795 -0.839716 -0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER -0.320001 -0.823527 -0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339041 -0.822829 -0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER -0.327188 -0.802007 -0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.296284 -0.842728 0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER -0.272611 -0.848999 0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER -0.278432 -0.829121 -0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.281616 -0.828835 0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER -0.290462 -0.862606 0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER -0.299468 -0.842441 0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.314135 -0.856335 0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.287278 -0.862893 -0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER -0.310951 -0.856621 -0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER -0.293099 -0.843015 -0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER -0.358439 -0.594141 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.389119 -0.547576 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.386849 -0.525642 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.366733 -0.538964 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.379645 -0.528407 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.409235 -0.534255 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.402031 -0.537019 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.411505 -0.556189 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396323 -0.544812 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.398593 -0.566746 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.376207 -0.558134 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.317871 -0.566667 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.299647 -0.551072 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.29885 -0.563547 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.315344 -0.545434 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.318667 -0.554192 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.334364 -0.548554 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.336891 -0.569787 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.302174 -0.572306 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.320398 -0.587901 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.301377 -0.584781 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339267 -0.522591 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.327164 -0.504962 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.318612 -0.528125 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339267 -0.522591 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.347819 -0.499428 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.359921 -0.517056 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.359921 -0.517056 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.327164 -0.504962 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339267 -0.522591 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.318612 -0.528125 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.429687 -0.57505 0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER -0.446515 -0.55776 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.428387 -0.562617 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.423296 -0.5512 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.447815 -0.570193 0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER -0.424596 -0.563633 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.430987 -0.587483 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.452905 -0.58161 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436077 -0.5989 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434777 -0.586467 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.379835 -0.550064 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.372012 -0.535334 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.359551 -0.536327 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.35918 -0.555599 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.392296 -0.549071 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.379464 -0.569335 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.400119 -0.563801 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.392667 -0.529799 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.400489 -0.54453 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.380205 -0.530793 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399007 -0.621614 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.420252 -0.632748 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.408963 -0.638118 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.419661 -0.61608 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.410295 -0.616244 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.409705 -0.599576 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.38905 -0.60511 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399597 -0.638282 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.378352 -0.627149 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.388308 -0.643653 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.408291 -0.619127 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.415912 -0.617918 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.39183 -0.616439 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.406911 -0.597788 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.432372 -0.620605 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.423371 -0.600475 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.424751 -0.621814 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.417292 -0.639257 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.409671 -0.640465 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.39321 -0.637778 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37761 -0.665691 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.375943 -0.687009 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.356956 -0.671225 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37761 -0.665691 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396598 -0.681475 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.398265 -0.660156 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.398265 -0.660156 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.375943 -0.687009 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37761 -0.665691 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.356956 -0.671225 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.337042 -0.638217 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.320629 -0.641183 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.313702 -0.630777 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.328614 -0.618565 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.34397 -0.648623 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.351955 -0.626005 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.360383 -0.645657 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.329058 -0.660835 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.345471 -0.65787 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.32213 -0.65043 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.358439 -0.594141 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.409774 -0.542042 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.413579 -0.517869 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.395831 -0.525596 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.393219 -0.528508 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.427522 -0.534315 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.407161 -0.544953 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.423716 -0.558488 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.430134 -0.531404 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.426328 -0.555577 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.412386 -0.539131 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.379835 -0.550064 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.375068 -0.529037 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.356494 -0.542624 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.371406 -0.530412 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.398409 -0.536477 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.394747 -0.537852 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.403175 -0.557504 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.383497 -0.548689 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.388263 -0.569716 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.364922 -0.562276 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339267 -0.522591 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.327164 -0.504962 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.318612 -0.528125 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339267 -0.522591 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.347819 -0.499428 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.359921 -0.517056 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.359921 -0.517056 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.327164 -0.504962 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339267 -0.522591 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.318612 -0.528125 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.388377 -0.586119 -0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.399584 -0.570335 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.403942 -0.569167 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.381987 -0.562269 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.384019 -0.587286 -0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.366422 -0.57922 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.372813 -0.60307 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.405974 -0.594185 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.394768 -0.609969 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.410332 -0.593017 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.317871 -0.566667 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.317033 -0.562847 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.327827 -0.583171 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.338525 -0.561133 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.307077 -0.546343 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.328569 -0.544629 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.307914 -0.550163 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.296378 -0.568381 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.297216 -0.572202 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.307172 -0.588706 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.337042 -0.638217 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.317573 -0.64748 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.316758 -0.624481 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.316388 -0.643752 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.337857 -0.661216 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.336672 -0.657489 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.357326 -0.651954 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.338228 -0.641945 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.357697 -0.632683 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.337413 -0.618946 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.428945 -0.613592 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.451897 -0.612625 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.432663 -0.614807 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436515 -0.593593 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.448179 -0.61141 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.432797 -0.592379 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.425227 -0.612377 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.444328 -0.632624 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.421376 -0.633591 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.425094 -0.634806 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37761 -0.665691 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.375943 -0.687009 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.356956 -0.671225 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37761 -0.665691 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396598 -0.681475 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.398265 -0.660156 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.398265 -0.660156 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.375943 -0.687009 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37761 -0.665691 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.356956 -0.671225 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399007 -0.621614 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.402865 -0.620974 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.379986 -0.618494 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.39648 -0.600381 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.421886 -0.624094 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.4155 -0.603501 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.418027 -0.624734 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.405392 -0.642207 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.401533 -0.642848 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.382513 -0.639728 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.157543 -0.835815 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.119969 -0.899353 -0.117284 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0977075 -0.909872 -0.115431 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0997803 -0.886771 -0.1239 RAD 0.00617284 + txt002 + SPHERE CENTER -0.104052 -0.891613 -0.100068 RAD 0.00617284 + txt002 + SPHERE CENTER -0.117896 -0.922453 -0.108814 RAD 0.00617284 + txt002 + SPHERE CENTER -0.124241 -0.904194 -0.0934517 RAD 0.00617284 + txt002 + SPHERE CENTER -0.140158 -0.911935 -0.110668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.113625 -0.917612 -0.132647 RAD 0.00617284 + txt002 + SPHERE CENTER -0.135886 -0.907093 -0.1345 RAD 0.00617284 + txt002 + SPHERE CENTER -0.115698 -0.894512 -0.141116 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0844101 -0.836885 -0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0627848 -0.826973 -0.106005 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0805529 -0.830202 -0.122844 RAD 0.00617284 + txt002 + SPHERE CENTER -0.083104 -0.81296 -0.105354 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0666419 -0.833656 -0.0825505 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0869612 -0.819643 -0.0818993 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0882673 -0.843568 -0.0759343 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0640908 -0.850898 -0.10004 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0857161 -0.860809 -0.093424 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0818589 -0.854126 -0.116879 RAD 0.00617284 + txt002 + SPHERE CENTER -0.130205 -0.868703 -0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER -0.11253 -0.867758 -0.0334138 RAD 0.00617284 + txt002 + SPHERE CENTER -0.107566 -0.860854 -0.0565949 RAD 0.00617284 + txt002 + SPHERE CENTER -0.122142 -0.846864 -0.0423994 RAD 0.00617284 + txt002 + SPHERE CENTER -0.135168 -0.875606 -0.0274488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.14478 -0.854713 -0.0364345 RAD 0.00617284 + txt002 + SPHERE CENTER -0.152843 -0.876551 -0.0446649 RAD 0.00617284 + txt002 + SPHERE CENTER -0.120593 -0.889596 -0.0416443 RAD 0.00617284 + txt002 + SPHERE CENTER -0.138267 -0.890541 -0.0588603 RAD 0.00617284 + txt002 + SPHERE CENTER -0.115629 -0.882692 -0.0648253 RAD 0.00617284 + txt002 + SPHERE CENTER -0.193102 -0.898283 -0.129006 RAD 0.0185185 + txt002 + SPHERE CENTER -0.201143 -0.920038 -0.120537 RAD 0.00617284 + txt002 + SPHERE CENTER -0.17991 -0.910616 -0.112168 RAD 0.00617284 + txt002 + SPHERE CENTER -0.201384 -0.900209 -0.105825 RAD 0.00617284 + txt002 + SPHERE CENTER -0.214335 -0.907705 -0.137375 RAD 0.00617284 + txt002 + SPHERE CENTER -0.214576 -0.887876 -0.122663 RAD 0.00617284 + txt002 + SPHERE CENTER -0.206294 -0.88595 -0.145845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.192861 -0.918112 -0.143718 RAD 0.00617284 + txt002 + SPHERE CENTER -0.18482 -0.896357 -0.152187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.171628 -0.90869 -0.135349 RAD 0.00617284 + txt002 + SPHERE CENTER -0.203337 -0.867633 -0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER -0.209658 -0.868948 -0.0385197 RAD 0.00617284 + txt002 + SPHERE CENTER -0.186008 -0.865773 -0.0448623 RAD 0.00617284 + txt002 + SPHERE CENTER -0.202239 -0.84746 -0.0481565 RAD 0.00617284 + txt002 + SPHERE CENTER -0.226988 -0.870808 -0.0560094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.219569 -0.84932 -0.0656463 RAD 0.00617284 + txt002 + SPHERE CENTER -0.220667 -0.869493 -0.0798417 RAD 0.00617284 + txt002 + SPHERE CENTER -0.210757 -0.889121 -0.0527151 RAD 0.00617284 + txt002 + SPHERE CENTER -0.204436 -0.887806 -0.0765474 RAD 0.00617284 + txt002 + SPHERE CENTER -0.187106 -0.885946 -0.0590577 RAD 0.00617284 + txt002 + SPHERE CENTER -0.230676 -0.834745 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.252002 -0.824206 -0.116217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.234336 -0.827952 -0.0993785 RAD 0.00617284 + txt002 + SPHERE CENTER -0.231282 -0.810793 -0.116868 RAD 0.00617284 + txt002 + SPHERE CENTER -0.248342 -0.830999 -0.139672 RAD 0.00617284 + txt002 + SPHERE CENTER -0.227621 -0.817586 -0.140323 RAD 0.00617284 + txt002 + SPHERE CENTER -0.227016 -0.841538 -0.146288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.251396 -0.848158 -0.122182 RAD 0.00617284 + txt002 + SPHERE CENTER -0.23007 -0.858698 -0.128798 RAD 0.00617284 + txt002 + SPHERE CENTER -0.23373 -0.851905 -0.105343 RAD 0.00617284 + txt002 + SPHERE CENTER -0.147308 -0.866465 -0.177765 RAD 0.0185185 + txt002 + SPHERE CENTER -0.130609 -0.876203 -0.193128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.124356 -0.857385 -0.178416 RAD 0.00617284 + txt002 + SPHERE CENTER -0.128522 -0.879733 -0.16878 RAD 0.00617284 + txt002 + SPHERE CENTER -0.153561 -0.885283 -0.192477 RAD 0.00617284 + txt002 + SPHERE CENTER -0.151474 -0.888813 -0.168128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.170259 -0.875546 -0.177114 RAD 0.00617284 + txt002 + SPHERE CENTER -0.149395 -0.862935 -0.202114 RAD 0.00617284 + txt002 + SPHERE CENTER -0.166093 -0.853198 -0.186751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.143141 -0.844117 -0.187402 RAD 0.00617284 + txt002 + SPHERE CENTER -0.184881 -0.802927 -0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER -0.180723 -0.785723 -0.188808 RAD 0.00617284 + txt002 + SPHERE CENTER -0.173028 -0.782104 -0.165627 RAD 0.00617284 + txt002 + SPHERE CENTER -0.161937 -0.798991 -0.179823 RAD 0.00617284 + txt002 + SPHERE CENTER -0.192576 -0.806546 -0.194773 RAD 0.00617284 + txt002 + SPHERE CENTER -0.17379 -0.819813 -0.185788 RAD 0.00617284 + txt002 + SPHERE CENTER -0.196734 -0.82375 -0.177557 RAD 0.00617284 + txt002 + SPHERE CENTER -0.203667 -0.78966 -0.180578 RAD 0.00617284 + txt002 + SPHERE CENTER -0.207825 -0.806864 -0.163362 RAD 0.00617284 + txt002 + SPHERE CENTER -0.195972 -0.786041 -0.157397 RAD 0.00617284 + txt002 + SPHERE CENTER -0.111748 -0.803997 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.108311 -0.798532 -0.183703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.119537 -0.819589 -0.17736 RAD 0.00617284 + txt002 + SPHERE CENTER -0.131037 -0.797989 -0.174066 RAD 0.00617284 + txt002 + SPHERE CENTER -0.100522 -0.78294 -0.166213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.123249 -0.782397 -0.156576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.10396 -0.788405 -0.142381 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0890219 -0.80454 -0.169507 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0924597 -0.810005 -0.145675 RAD 0.00617284 + txt002 + SPHERE CENTER -0.100248 -0.825597 -0.163165 RAD 0.00617284 + txt002 + SPHERE CENTER -0.172546 -0.643951 -0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER -0.202787 -0.61371 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.200937 -0.595399 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.194794 -0.591462 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.180539 -0.605717 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.208929 -0.617647 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.188531 -0.627965 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.210779 -0.635958 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.223185 -0.603392 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.225035 -0.621702 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.217042 -0.599454 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.244096 -0.624779 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.260374 -0.607636 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.240901 -0.612854 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.237705 -0.600929 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.26357 -0.619561 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.240901 -0.612854 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.247291 -0.636704 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.266765 -0.631486 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.250487 -0.648629 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.247291 -0.636704 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.191718 -0.5724 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.185011 -0.549732 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.167868 -0.56601 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.179793 -0.569205 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.208861 -0.556122 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.203643 -0.575596 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.215568 -0.578791 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.196936 -0.552927 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.203643 -0.575596 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.179793 -0.569205 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.131237 -0.632882 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.131575 -0.625593 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.15071 -0.6381 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.146508 -0.614836 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.112102 -0.620375 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.127034 -0.609618 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.111763 -0.627664 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.116304 -0.643639 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.115965 -0.650927 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.135439 -0.656145 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.120168 -0.591572 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.105912 -0.577317 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.111438 -0.600302 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.128897 -0.582843 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.114642 -0.568587 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.137627 -0.574113 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.128897 -0.582843 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0971825 -0.586046 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.111438 -0.600302 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.102708 -0.609032 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.100996 -0.663122 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0783272 -0.656415 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0978007 -0.651197 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0946054 -0.639272 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0815225 -0.66834 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0978007 -0.651197 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.104191 -0.675047 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0847178 -0.680265 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.107387 -0.686972 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.104191 -0.675047 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.183615 -0.68526 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.182351 -0.708085 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.165569 -0.700531 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.188833 -0.704733 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.200397 -0.692813 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.206879 -0.689462 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.201661 -0.669989 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.177134 -0.688611 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.178397 -0.665787 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.160351 -0.681058 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.153374 -0.715501 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.136231 -0.731779 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.129524 -0.70911 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.141449 -0.712305 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.160081 -0.738169 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.165299 -0.718696 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.177224 -0.721891 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.148156 -0.734974 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.165299 -0.718696 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.141449 -0.712305 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.224924 -0.696329 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.23918 -0.710584 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.216195 -0.705059 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.233654 -0.687599 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.24791 -0.701855 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.242384 -0.678869 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.233654 -0.687599 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.23045 -0.719314 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.216195 -0.705059 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.207465 -0.713788 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0133465 -0.69376 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.0631985 -0.668775 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0667914 -0.661946 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0511945 -0.680354 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0452771 -0.65711 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0787954 -0.650366 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0572811 -0.64553 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0752026 -0.657195 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0847128 -0.673611 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.08112 -0.680439 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.069116 -0.692019 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00804971 -0.649684 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.000226782 -0.634953 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0122343 -0.635947 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.012605 -0.655218 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0205108 -0.64869 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00767898 -0.668955 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0283337 -0.66342 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0208815 -0.629419 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0287044 -0.644149 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00842045 -0.630413 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0325183 -0.62221 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0446211 -0.604582 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.053173 -0.627745 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0325183 -0.62221 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0239663 -0.599047 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0118635 -0.616676 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0118635 -0.616676 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0446211 -0.604582 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0325183 -0.62221 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.053173 -0.627745 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0845947 -0.712851 -0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER 0.107813 -0.706291 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0896851 -0.701434 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0909853 -0.689001 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.102723 -0.717709 -0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0858949 -0.700418 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0795043 -0.724268 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.101422 -0.730141 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0782041 -0.736701 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0832945 -0.725284 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0539145 -0.666287 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0721382 -0.650692 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.072935 -0.663167 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0564414 -0.645053 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0531177 -0.653812 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0374209 -0.648173 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.034894 -0.669407 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0696112 -0.671925 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0513875 -0.68752 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.070408 -0.6844 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0347427 -0.737837 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0511556 -0.740802 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0580833 -0.730397 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.043171 -0.718185 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.027815 -0.748242 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0198304 -0.725625 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0114021 -0.745277 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0427273 -0.760455 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0263144 -0.757489 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0496549 -0.750049 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0440268 -0.740325 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0650768 -0.746894 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0607735 -0.723153 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0653796 -0.739183 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.04833 -0.764065 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0486329 -0.756355 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.02728 -0.757496 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0437239 -0.748035 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0226739 -0.741466 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0394207 -0.724295 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0058253 -0.76531 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.00415829 -0.786629 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0148294 -0.770845 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0058253 -0.76531 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.024813 -0.781094 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.02648 -0.759776 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.02648 -0.759776 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00415829 -0.786629 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0058253 -0.76531 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0148294 -0.770845 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0272215 -0.721234 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0484665 -0.732368 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0371781 -0.737738 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0478762 -0.715699 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0385099 -0.715864 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0379196 -0.699195 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0172649 -0.70473 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0278118 -0.737902 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00656677 -0.726768 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0165234 -0.743272 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.471405 -0.471405 1.11022e-16 RAD 0.166667 + txt002 + SPHERE CENTER 0.690426 -0.508983 1.83812e-16 RAD 0.0555556 + txt002 + SPHERE CENTER 0.755941 -0.484794 -0.0246914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.767658 -0.47411 -0.0436186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.749038 -0.489758 -0.0478724 RAD 0.00617284 + txt002 + SPHERE CENTER 0.744501 -0.467528 -0.0381316 RAD 0.00617284 + txt002 + SPHERE CENTER 0.774562 -0.469146 -0.0204376 RAD 0.00617284 + txt002 + SPHERE CENTER 0.751405 -0.462564 -0.0149506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.762845 -0.47983 -0.00151032 RAD 0.00617284 + txt002 + SPHERE CENTER 0.779098 -0.491377 -0.0301783 RAD 0.00617284 + txt002 + SPHERE CENTER 0.767382 -0.502061 -0.0112511 RAD 0.00617284 + txt002 + SPHERE CENTER 0.760478 -0.507025 -0.0344321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.695668 -0.478434 -0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER 0.703418 -0.481931 -0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER 0.716184 -0.491475 -0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER 0.694124 -0.500827 -0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER 0.682902 -0.46889 -0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.673608 -0.487786 -0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER 0.675152 -0.465393 -0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER 0.704962 -0.459538 -0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER 0.697211 -0.456041 -0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER 0.717727 -0.469082 -0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.7029 -0.436283 -0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER 0.714226 -0.418941 -0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER 0.724842 -0.44101 -0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.704751 -0.43889 -0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.692283 -0.414215 -0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER 0.682808 -0.434163 -0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.680957 -0.431557 0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.712374 -0.416335 0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER 0.701048 -0.433677 0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER 0.722991 -0.438403 0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER 0.7507 -0.515343 0.0425863 RAD 0.0185185 + txt002 + SPHERE CENTER 0.773394 -0.506594 0.0468401 RAD 0.00617284 + txt002 + SPHERE CENTER 0.764807 -0.507924 0.0237283 RAD 0.00617284 + txt002 + SPHERE CENTER 0.755462 -0.491321 0.0394341 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759287 -0.514012 0.065698 RAD 0.00617284 + txt002 + SPHERE CENTER 0.741355 -0.49874 0.058292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.736593 -0.522762 0.0614442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.768632 -0.530616 0.0499923 RAD 0.00617284 + txt002 + SPHERE CENTER 0.745938 -0.539365 0.0457385 RAD 0.00617284 + txt002 + SPHERE CENTER 0.760045 -0.531946 0.0268805 RAD 0.00617284 + txt002 + SPHERE CENTER 0.697658 -0.466832 0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER 0.709346 -0.447385 0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.721188 -0.46231 0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER 0.703286 -0.447429 0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER 0.685816 -0.451907 0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.679757 -0.451951 0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER 0.674129 -0.471354 0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.703718 -0.466788 0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER 0.692031 -0.486235 0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.71556 -0.481713 0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.685185 -0.539531 0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER 0.693658 -0.538818 0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER 0.708875 -0.534075 0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER 0.691194 -0.517905 0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669969 -0.544274 0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.667505 -0.523361 0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER 0.661495 -0.544988 0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER 0.687649 -0.560445 0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER 0.679176 -0.561158 0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER 0.702866 -0.555702 0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.743468 -0.557494 -0.0178949 RAD 0.0185185 + txt002 + SPHERE CENTER 0.767402 -0.560084 -0.0233819 RAD 0.00617284 + txt002 + SPHERE CENTER 0.755145 -0.53997 -0.0307879 RAD 0.00617284 + txt002 + SPHERE CENTER 0.760285 -0.543179 -0.00685171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.755725 -0.577608 -0.0104889 RAD 0.00617284 + txt002 + SPHERE CENTER 0.748608 -0.560703 0.00604126 RAD 0.00617284 + txt002 + SPHERE CENTER 0.731791 -0.575017 -0.00500196 RAD 0.00617284 + txt002 + SPHERE CENTER 0.750585 -0.574398 -0.0344251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.726651 -0.571808 -0.0289382 RAD 0.00617284 + txt002 + SPHERE CENTER 0.738328 -0.554284 -0.0418311 RAD 0.00617284 + txt002 + SPHERE CENTER 0.677953 -0.581682 0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER 0.682851 -0.601808 0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER 0.700216 -0.58454 0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.680568 -0.579842 0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.660588 -0.59895 0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER 0.658304 -0.576984 0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.65569 -0.578824 -0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.680237 -0.603648 -0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER 0.675339 -0.583522 -0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER 0.697602 -0.58638 -0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER 0.683194 -0.551134 -0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER 0.687731 -0.573364 -0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.703871 -0.56324 -0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER 0.682033 -0.571303 -0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER 0.667055 -0.561258 -0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.661356 -0.559196 -0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER 0.662518 -0.539027 -0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.688893 -0.553195 -0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER 0.684356 -0.530964 -0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.705033 -0.543071 -0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.607487 -0.335322 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.629404 -0.313405 -0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.626214 -0.316595 -0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.624401 -0.335868 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.606941 -0.318408 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.631217 -0.294133 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.611945 -0.295946 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.634407 -0.290942 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.648676 -0.311592 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.651867 -0.308402 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.646863 -0.330864 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.610996 -0.384191 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.623201 -0.403702 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.635431 -0.385946 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.62031 -0.401066 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.598766 -0.401947 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.595876 -0.399312 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.586561 -0.382437 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.613886 -0.386827 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.601681 -0.367317 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.626116 -0.369071 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.558618 -0.331813 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.539107 -0.319608 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.541743 -0.322499 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.556863 -0.307378 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555982 -0.328923 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.573738 -0.316693 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.575492 -0.341128 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.540862 -0.344043 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.560372 -0.356248 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.543497 -0.346933 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.625895 -0.264535 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.637402 -0.248969 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.646193 -0.271807 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.625088 -0.268363 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.617105 -0.241698 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.604791 -0.261092 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.605598 -0.257264 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.638209 -0.245142 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.626702 -0.260708 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.647 -0.267979 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555109 -0.282943 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.550934 -0.258608 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.570229 -0.267823 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.570229 -0.267823 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.535813 -0.273728 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555109 -0.282943 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539989 -0.298064 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.535813 -0.273728 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539989 -0.298064 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555109 -0.282943 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.603979 -0.286452 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.613271 -0.265398 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627912 -0.281225 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.610787 -0.26842 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.589337 -0.270625 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.586853 -0.273647 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.580045 -0.291679 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.606463 -0.283431 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.59717 -0.304484 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.621104 -0.299257 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.678274 -0.316914 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.69384 -0.305407 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.674446 -0.317721 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671002 -0.296616 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.697667 -0.3046 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.67483 -0.295809 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.682101 -0.316107 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.701111 -0.325704 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.685545 -0.337211 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.681717 -0.338018 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.656357 -0.33883 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.677411 -0.329538 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.674389 -0.332022 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.661584 -0.314897 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.659378 -0.336346 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.643552 -0.321705 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.638325 -0.345639 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.672184 -0.353472 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.65113 -0.362764 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669162 -0.355956 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.659866 -0.3877 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.684201 -0.391875 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.674986 -0.37258 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.674986 -0.37258 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669081 -0.406996 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.659866 -0.3877 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.644745 -0.40282 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669081 -0.406996 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.644745 -0.40282 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.659866 -0.3877 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.607487 -0.335322 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.659645 -0.283164 0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER 0.672915 -0.269894 0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER 0.666987 -0.293281 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.649528 -0.275822 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665573 -0.259777 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.642185 -0.265705 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.652302 -0.273047 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.683032 -0.277236 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669762 -0.290507 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.677104 -0.300624 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.656357 -0.33883 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.663448 -0.328536 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.639482 -0.329516 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.654603 -0.314396 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.680322 -0.33785 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671477 -0.32371 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.673232 -0.348145 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665202 -0.35297 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.658111 -0.363265 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.641237 -0.353951 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.603979 -0.286452 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.614273 -0.279361 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.628413 -0.288206 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.613293 -0.303327 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.589839 -0.277607 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.588858 -0.301572 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.579544 -0.284698 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.604959 -0.262487 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.594664 -0.269578 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.619099 -0.271332 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.610775 -0.279656 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.621535 -0.258061 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.634468 -0.275921 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616678 -0.264057 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.597842 -0.261795 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.592985 -0.267791 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.587082 -0.28339 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.615632 -0.27366 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.604872 -0.295255 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.628565 -0.29152 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555109 -0.282943 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.550934 -0.258608 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.570229 -0.267823 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.570229 -0.267823 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.535813 -0.273728 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555109 -0.282943 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539989 -0.298064 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.535813 -0.273728 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539989 -0.298064 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555109 -0.282943 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.558618 -0.331813 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.55307 -0.320611 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.57665 -0.325005 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.563845 -0.30788 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.535038 -0.327419 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.545813 -0.314688 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.540585 -0.338621 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.547843 -0.344544 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.553391 -0.355747 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.571423 -0.348938 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.663153 -0.332034 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.684748 -0.321274 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.678752 -0.326131 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.666888 -0.308341 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669149 -0.327177 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.651289 -0.314244 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.647554 -0.337937 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.681014 -0.344967 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.659419 -0.355727 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.675018 -0.349824 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.610996 -0.384191 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.622198 -0.389739 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.63493 -0.378964 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.617804 -0.366159 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.598265 -0.394966 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.593871 -0.371386 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.587062 -0.389418 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.61539 -0.407771 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.604188 -0.402224 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.628121 -0.396997 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.659866 -0.3877 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.684201 -0.391875 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.674986 -0.37258 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.674986 -0.37258 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669081 -0.406996 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.659866 -0.3877 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.644745 -0.40282 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669081 -0.406996 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.644745 -0.40282 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.659866 -0.3877 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.554344 -0.645066 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.610229 -0.668521 0.153697 RAD 0.0185185 + txt002 + SPHERE CENTER 0.633406 -0.663938 0.160875 RAD 0.00617284 + txt002 + SPHERE CENTER 0.626429 -0.65892 0.137727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.617928 -0.64522 0.156428 RAD 0.00617284 + txt002 + SPHERE CENTER 0.617206 -0.673539 0.176845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.601728 -0.654822 0.172398 RAD 0.00617284 + txt002 + SPHERE CENTER 0.59403 -0.678123 0.169668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.625707 -0.687239 0.158144 RAD 0.00617284 + txt002 + SPHERE CENTER 0.602531 -0.691822 0.150967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.61873 -0.682221 0.134996 RAD 0.00617284 + txt002 + SPHERE CENTER 0.622977 -0.619787 0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.63767 -0.608008 0.0834188 RAD 0.00617284 + txt002 + SPHERE CENTER 0.620102 -0.623239 0.0751099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.613891 -0.601637 0.0853287 RAD 0.00617284 + txt002 + SPHERE CENTER 0.640545 -0.604555 0.107698 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616766 -0.598184 0.109608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.625852 -0.616334 0.123668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.646756 -0.626157 0.0974792 RAD 0.00617284 + txt002 + SPHERE CENTER 0.632063 -0.637936 0.113449 RAD 0.00617284 + txt002 + SPHERE CENTER 0.629188 -0.641389 0.0891702 RAD 0.00617284 + txt002 + SPHERE CENTER 0.585648 -0.598918 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.601562 -0.580238 0.162601 RAD 0.00617284 + txt002 + SPHERE CENTER 0.605914 -0.59781 0.14581 RAD 0.00617284 + txt002 + SPHERE CENTER 0.587563 -0.581665 0.142311 RAD 0.00617284 + txt002 + SPHERE CENTER 0.581295 -0.581346 0.176661 RAD 0.00617284 + txt002 + SPHERE CENTER 0.567297 -0.582773 0.156372 RAD 0.00617284 + txt002 + SPHERE CENTER 0.565381 -0.600026 0.173931 RAD 0.00617284 + txt002 + SPHERE CENTER 0.599646 -0.597491 0.18016 RAD 0.00617284 + txt002 + SPHERE CENTER 0.583732 -0.616171 0.177429 RAD 0.00617284 + txt002 + SPHERE CENTER 0.603999 -0.615063 0.163369 RAD 0.00617284 + txt002 + SPHERE CENTER 0.541596 -0.6938 0.165419 RAD 0.0185185 + txt002 + SPHERE CENTER 0.547376 -0.70016 0.188567 RAD 0.00617284 + txt002 + SPHERE CENTER 0.564621 -0.690564 0.173728 RAD 0.00617284 + txt002 + SPHERE CENTER 0.546319 -0.676324 0.182211 RAD 0.00617284 + txt002 + SPHERE CENTER 0.524351 -0.703396 0.180258 RAD 0.00617284 + txt002 + SPHERE CENTER 0.523294 -0.679561 0.173902 RAD 0.00617284 + txt002 + SPHERE CENTER 0.518571 -0.697037 0.157111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.542652 -0.717636 0.171776 RAD 0.00617284 + txt002 + SPHERE CENTER 0.536873 -0.711276 0.148628 RAD 0.00617284 + txt002 + SPHERE CENTER 0.559898 -0.70804 0.156937 RAD 0.00617284 + txt002 + SPHERE CENTER 0.517014 -0.624197 0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER 0.516313 -0.60809 0.190293 RAD 0.00617284 + txt002 + SPHERE CENTER 0.538029 -0.616221 0.181811 RAD 0.00617284 + txt002 + SPHERE CENTER 0.524375 -0.60089 0.168094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.495298 -0.616065 0.180075 RAD 0.00617284 + txt002 + SPHERE CENTER 0.50336 -0.608865 0.157875 RAD 0.00617284 + txt002 + SPHERE CENTER 0.495999 -0.632172 0.161374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.508952 -0.631397 0.193792 RAD 0.00617284 + txt002 + SPHERE CENTER 0.509653 -0.647504 0.175091 RAD 0.00617284 + txt002 + SPHERE CENTER 0.530668 -0.639529 0.18531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.48571 -0.670344 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.466887 -0.67091 0.138803 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490138 -0.671107 0.147112 RAD 0.00617284 + txt002 + SPHERE CENTER 0.480853 -0.650637 0.136894 RAD 0.00617284 + txt002 + SPHERE CENTER 0.46246 -0.670147 0.114524 RAD 0.00617284 + txt002 + SPHERE CENTER 0.476425 -0.649874 0.112614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.481283 -0.669581 0.0985541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.471745 -0.690617 0.124743 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490567 -0.690052 0.108773 RAD 0.00617284 + txt002 + SPHERE CENTER 0.494995 -0.690815 0.133052 RAD 0.00617284 + txt002 + SPHERE CENTER 0.578925 -0.714669 0.104938 RAD 0.0185185 + txt002 + SPHERE CENTER 0.597914 -0.729812 0.109385 RAD 0.00617284 + txt002 + SPHERE CENTER 0.602084 -0.70632 0.103028 RAD 0.00617284 + txt002 + SPHERE CENTER 0.592661 -0.711617 0.125228 RAD 0.00617284 + txt002 + SPHERE CENTER 0.574755 -0.738161 0.111295 RAD 0.00617284 + txt002 + SPHERE CENTER 0.569503 -0.719965 0.127138 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555767 -0.723017 0.106848 RAD 0.00617284 + txt002 + SPHERE CENTER 0.584178 -0.732864 0.0890951 RAD 0.00617284 + txt002 + SPHERE CENTER 0.565189 -0.71772 0.0846485 RAD 0.00617284 + txt002 + SPHERE CENTER 0.588348 -0.709372 0.0827387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.52304 -0.691213 0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.511567 -0.712906 0.0596212 RAD 0.00617284 + txt002 + SPHERE CENTER 0.529503 -0.710453 0.0764123 RAD 0.00617284 + txt002 + SPHERE CENTER 0.507717 -0.699372 0.079911 RAD 0.00617284 + txt002 + SPHERE CENTER 0.505104 -0.693665 0.0455609 RAD 0.00617284 + txt002 + SPHERE CENTER 0.501254 -0.680131 0.0658506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.516576 -0.671972 0.0482916 RAD 0.00617284 + txt002 + SPHERE CENTER 0.526889 -0.704747 0.0420622 RAD 0.00617284 + txt002 + SPHERE CENTER 0.538362 -0.683054 0.044793 RAD 0.00617284 + txt002 + SPHERE CENTER 0.544826 -0.702295 0.0588533 RAD 0.00617284 + txt002 + SPHERE CENTER 0.591673 -0.665934 0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER 0.605761 -0.658095 0.0319289 RAD 0.00617284 + txt002 + SPHERE CENTER 0.58746 -0.643855 0.0404111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.607672 -0.647455 0.0541285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.609975 -0.680174 0.0421477 RAD 0.00617284 + txt002 + SPHERE CENTER 0.611885 -0.669535 0.0643473 RAD 0.00617284 + txt002 + SPHERE CENTER 0.595887 -0.688013 0.0608487 RAD 0.00617284 + txt002 + SPHERE CENTER 0.589763 -0.676573 0.0284303 RAD 0.00617284 + txt002 + SPHERE CENTER 0.575674 -0.684413 0.0471312 RAD 0.00617284 + txt002 + SPHERE CENTER 0.571461 -0.662334 0.0369125 RAD 0.00617284 + txt002 + SPHERE CENTER 0.471405 -0.471405 0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER 0.501645 -0.441164 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.518106 -0.424703 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522721 -0.437548 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.505261 -0.420089 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.497031 -0.428319 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.484186 -0.423704 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.48057 -0.44478 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.51449 -0.445778 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.498029 -0.462239 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.519105 -0.458623 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.542955 -0.452233 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.560583 -0.44013 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.542955 -0.452233 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.53742 -0.431578 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.560583 -0.44013 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.53742 -0.431578 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.542955 -0.452233 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.566118 -0.460785 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.548489 -0.472887 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.548489 -0.472887 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490576 -0.399854 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.502679 -0.382226 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.511231 -0.405389 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490576 -0.399854 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.482024 -0.376691 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.469922 -0.39432 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.469922 -0.39432 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.502679 -0.382226 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490576 -0.399854 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.511231 -0.405389 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.430095 -0.460336 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.427669 -0.446904 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.450155 -0.45293 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436486 -0.436486 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.407609 -0.454311 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.416426 -0.443892 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.410035 -0.467742 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.421278 -0.470754 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.423704 -0.484186 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.443764 -0.47678 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.419026 -0.419026 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.414851 -0.39469 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.434147 -0.403906 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.434147 -0.403906 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399731 -0.409811 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.419026 -0.419026 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.403906 -0.434147 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399731 -0.409811 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.403906 -0.434147 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.419026 -0.419026 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399854 -0.490576 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.378536 -0.488909 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399854 -0.490576 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.39432 -0.469922 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.378536 -0.488909 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.39432 -0.469922 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399854 -0.490576 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.384071 -0.509564 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.405389 -0.511231 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.405389 -0.511231 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.482473 -0.512714 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.495905 -0.51514 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.506323 -0.506323 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.48988 -0.492654 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472055 -0.521531 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.46603 -0.499045 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.458623 -0.519105 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.488498 -0.5352 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.475067 -0.532774 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.498917 -0.526383 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.452233 -0.542955 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.4539 -0.564273 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472887 -0.548489 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.452233 -0.542955 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.433245 -0.558738 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.431578 -0.53742 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.431578 -0.53742 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4539 -0.564273 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.452233 -0.542955 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472887 -0.548489 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.523783 -0.523783 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.548119 -0.527958 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.538903 -0.508662 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.538903 -0.508662 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.532998 -0.543078 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.523783 -0.523783 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.508662 -0.538903 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.532998 -0.543078 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.508662 -0.538903 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.523783 -0.523783 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.335322 -0.607487 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.313405 -0.629404 0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.316595 -0.626214 0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.335868 -0.624401 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318408 -0.606941 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.294133 -0.631217 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.295946 -0.611945 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.290942 -0.634407 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.311592 -0.648676 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.308402 -0.651867 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.330864 -0.646863 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.384191 -0.610996 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.405245 -0.601704 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.402224 -0.604188 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.389418 -0.587062 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.387213 -0.608512 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.371386 -0.593871 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.366159 -0.617804 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.400018 -0.625637 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.378964 -0.63493 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396997 -0.628121 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.331813 -0.558618 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.341105 -0.537564 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.355747 -0.553391 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.338621 -0.540585 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.317172 -0.542791 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.314688 -0.545813 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.30788 -0.563845 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.334297 -0.555596 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.325005 -0.57665 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.348938 -0.571423 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.264535 -0.625895 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.245336 -0.623429 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.268271 -0.624736 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.260997 -0.604627 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.2416 -0.624589 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.257262 -0.605787 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.2608 -0.627055 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.248874 -0.644697 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.268073 -0.647163 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271809 -0.646004 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282943 -0.555109 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.278768 -0.530773 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.298064 -0.539989 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.298064 -0.539989 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.263648 -0.545894 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282943 -0.555109 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.267823 -0.570229 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.263648 -0.545894 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.267823 -0.570229 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282943 -0.555109 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.286452 -0.603979 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.266942 -0.591774 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.269578 -0.594664 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.284698 -0.579544 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.283817 -0.601088 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.301572 -0.588858 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.303327 -0.613293 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.268696 -0.616209 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.288206 -0.628413 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271332 -0.619099 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.316914 -0.678274 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.31938 -0.697473 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.338182 -0.681812 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318074 -0.674538 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.298112 -0.693935 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.296805 -0.671 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.295646 -0.674736 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31822 -0.701209 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.315754 -0.682009 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337022 -0.685547 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.33883 -0.656357 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.351035 -0.675867 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.363265 -0.658111 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.348145 -0.673232 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3266 -0.674113 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32371 -0.671477 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.314396 -0.654603 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.341721 -0.658993 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.329516 -0.639482 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.353951 -0.641237 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3877 -0.659866 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.412036 -0.664041 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40282 -0.644745 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40282 -0.644745 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396915 -0.679161 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3877 -0.659866 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37258 -0.674986 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396915 -0.679161 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37258 -0.674986 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3877 -0.659866 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.554344 -0.645066 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.616373 -0.681385 -0.129006 RAD 0.0185185 + txt002 + SPHERE CENTER 0.639472 -0.678928 -0.137375 RAD 0.00617284 + txt002 + SPHERE CENTER 0.621631 -0.664108 -0.145845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.629767 -0.661636 -0.122663 RAD 0.00617284 + txt002 + SPHERE CENTER 0.634214 -0.696205 -0.120537 RAD 0.00617284 + txt002 + SPHERE CENTER 0.624508 -0.678912 -0.105825 RAD 0.00617284 + txt002 + SPHERE CENTER 0.611115 -0.698662 -0.112168 RAD 0.00617284 + txt002 + SPHERE CENTER 0.626079 -0.698678 -0.143718 RAD 0.00617284 + txt002 + SPHERE CENTER 0.602979 -0.701135 -0.135349 RAD 0.00617284 + txt002 + SPHERE CENTER 0.608237 -0.683858 -0.152187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.617144 -0.607573 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.63057 -0.595495 -0.139672 RAD 0.00617284 + txt002 + SPHERE CENTER 0.617371 -0.615286 -0.146288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.605919 -0.594239 -0.140323 RAD 0.00617284 + txt002 + SPHERE CENTER 0.630343 -0.587782 -0.116217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.605692 -0.586526 -0.116868 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616917 -0.59986 -0.0993785 RAD 0.00617284 + txt002 + SPHERE CENTER 0.641795 -0.608828 -0.122182 RAD 0.00617284 + txt002 + SPHERE CENTER 0.628369 -0.620906 -0.105343 RAD 0.00617284 + txt002 + SPHERE CENTER 0.628595 -0.628619 -0.128798 RAD 0.00617284 + txt002 + SPHERE CENTER 0.609912 -0.649723 -0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.631982 -0.640648 -0.0560094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.62585 -0.64267 -0.0798417 RAD 0.00617284 + txt002 + SPHERE CENTER 0.614812 -0.625749 -0.0656463 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616044 -0.647702 -0.0385197 RAD 0.00617284 + txt002 + SPHERE CENTER 0.598874 -0.632802 -0.0481565 RAD 0.00617284 + txt002 + SPHERE CENTER 0.593974 -0.656777 -0.0448623 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627081 -0.664623 -0.0527151 RAD 0.00617284 + txt002 + SPHERE CENTER 0.605012 -0.673698 -0.0590577 RAD 0.00617284 + txt002 + SPHERE CENTER 0.620949 -0.666645 -0.0765474 RAD 0.00617284 + txt002 + SPHERE CENTER 0.553573 -0.718878 -0.117284 RAD 0.0185185 + txt002 + SPHERE CENTER 0.563328 -0.73992 -0.108814 RAD 0.00617284 + txt002 + SPHERE CENTER 0.577348 -0.719679 -0.110668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.559693 -0.720935 -0.0934517 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539553 -0.739118 -0.115431 RAD 0.00617284 + txt002 + SPHERE CENTER 0.535918 -0.720133 -0.100068 RAD 0.00617284 + txt002 + SPHERE CENTER 0.529798 -0.718076 -0.1239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.557208 -0.737863 -0.132647 RAD 0.00617284 + txt002 + SPHERE CENTER 0.547453 -0.716821 -0.141116 RAD 0.00617284 + txt002 + SPHERE CENTER 0.571228 -0.717623 -0.1345 RAD 0.00617284 + txt002 + SPHERE CENTER 0.547112 -0.687216 -0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER 0.554862 -0.690713 -0.0274488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.570641 -0.682694 -0.0446649 RAD 0.00617284 + txt002 + SPHERE CENTER 0.552739 -0.667813 -0.0364345 RAD 0.00617284 + txt002 + SPHERE CENTER 0.531333 -0.695235 -0.0334138 RAD 0.00617284 + txt002 + SPHERE CENTER 0.52921 -0.672335 -0.0423994 RAD 0.00617284 + txt002 + SPHERE CENTER 0.523582 -0.691738 -0.0565949 RAD 0.00617284 + txt002 + SPHERE CENTER 0.549235 -0.710116 -0.0416443 RAD 0.00617284 + txt002 + SPHERE CENTER 0.541484 -0.706619 -0.0648253 RAD 0.00617284 + txt002 + SPHERE CENTER 0.565014 -0.702097 -0.0588603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.491544 -0.682558 -0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.474542 -0.688647 -0.0825505 RAD 0.00617284 + txt002 + SPHERE CENTER 0.498226 -0.686417 -0.0759343 RAD 0.00617284 + txt002 + SPHERE CENTER 0.485132 -0.666351 -0.0818993 RAD 0.00617284 + txt002 + SPHERE CENTER 0.46786 -0.684788 -0.106005 RAD 0.00617284 + txt002 + SPHERE CENTER 0.47845 -0.662492 -0.105354 RAD 0.00617284 + txt002 + SPHERE CENTER 0.484862 -0.678699 -0.122844 RAD 0.00617284 + txt002 + SPHERE CENTER 0.480953 -0.704854 -0.10004 RAD 0.00617284 + txt002 + SPHERE CENTER 0.497955 -0.698765 -0.116879 RAD 0.00617284 + txt002 + SPHERE CENTER 0.504637 -0.702624 -0.093424 RAD 0.00617284 + txt002 + SPHERE CENTER 0.560805 -0.676727 -0.177765 RAD 0.0185185 + txt002 + SPHERE CENTER 0.57563 -0.689897 -0.192477 RAD 0.00617284 + txt002 + SPHERE CENTER 0.585222 -0.673115 -0.177114 RAD 0.00617284 + txt002 + SPHERE CENTER 0.575587 -0.693998 -0.168128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.551213 -0.693509 -0.193128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.55117 -0.69761 -0.16878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.536388 -0.680339 -0.178416 RAD 0.00617284 + txt002 + SPHERE CENTER 0.560848 -0.672626 -0.202114 RAD 0.00617284 + txt002 + SPHERE CENTER 0.546023 -0.659456 -0.187402 RAD 0.00617284 + txt002 + SPHERE CENTER 0.57044 -0.655844 -0.186751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.498776 -0.640408 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.478525 -0.627785 -0.166213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.484234 -0.630799 -0.142381 RAD 0.00617284 + txt002 + SPHERE CENTER 0.497935 -0.615951 -0.156576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.493066 -0.637394 -0.183703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.512476 -0.62556 -0.174066 RAD 0.00617284 + txt002 + SPHERE CENTER 0.513317 -0.650016 -0.17736 RAD 0.00617284 + txt002 + SPHERE CENTER 0.479365 -0.652241 -0.169507 RAD 0.00617284 + txt002 + SPHERE CENTER 0.499616 -0.664864 -0.163165 RAD 0.00617284 + txt002 + SPHERE CENTER 0.485075 -0.655255 -0.145675 RAD 0.00617284 + txt002 + SPHERE CENTER 0.561576 -0.602915 -0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER 0.570049 -0.602201 -0.194773 RAD 0.00617284 + txt002 + SPHERE CENTER 0.582252 -0.615021 -0.177557 RAD 0.00617284 + txt002 + SPHERE CENTER 0.560414 -0.623084 -0.185788 RAD 0.00617284 + txt002 + SPHERE CENTER 0.549372 -0.590095 -0.188808 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539737 -0.610978 -0.179823 RAD 0.00617284 + txt002 + SPHERE CENTER 0.540899 -0.590808 -0.165627 RAD 0.00617284 + txt002 + SPHERE CENTER 0.571211 -0.582032 -0.180578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.562738 -0.582745 -0.157397 RAD 0.00617284 + txt002 + SPHERE CENTER 0.583414 -0.594852 -0.163362 RAD 0.00617284 + txt002 + SPHERE CENTER 0.335322 -0.607487 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.283164 -0.659645 -0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER 0.269894 -0.672915 -0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER 0.293281 -0.666987 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.275822 -0.649528 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.259777 -0.665573 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.265705 -0.642185 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273047 -0.652302 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.277236 -0.683032 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.290507 -0.669762 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.300624 -0.677104 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.33883 -0.656357 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.350033 -0.661904 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.362764 -0.65113 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.345639 -0.638325 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.326099 -0.667131 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.321705 -0.643552 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.314897 -0.661584 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.343224 -0.679937 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.332022 -0.674389 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.355956 -0.669162 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.286452 -0.603979 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.280905 -0.592776 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.304484 -0.59717 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.291679 -0.580045 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.262872 -0.599585 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273647 -0.586853 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.26842 -0.610787 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.275678 -0.61671 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.281225 -0.627912 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.299257 -0.621104 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.279656 -0.610775 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.256944 -0.602632 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.26347 -0.606749 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273158 -0.587686 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.27313 -0.606658 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.289344 -0.591712 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.295841 -0.614801 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.263442 -0.62572 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.286153 -0.633864 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.269968 -0.629838 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282943 -0.555109 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.278768 -0.530773 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.298064 -0.539989 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.298064 -0.539989 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.263648 -0.545894 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282943 -0.555109 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.267823 -0.570229 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.263648 -0.545894 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.267823 -0.570229 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282943 -0.555109 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.331813 -0.558618 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.342108 -0.551527 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356248 -0.560372 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.341128 -0.575492 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.317673 -0.549772 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.316693 -0.573738 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307378 -0.556863 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.332793 -0.534652 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.322499 -0.541743 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.346933 -0.543497 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.332034 -0.663153 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.340177 -0.685865 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.355123 -0.669651 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.33606 -0.679339 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.317089 -0.679367 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.312971 -0.672841 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.308945 -0.656656 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.336151 -0.669679 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.328008 -0.646968 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.351097 -0.653465 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.384191 -0.610996 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.391282 -0.600701 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367317 -0.601681 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.382437 -0.586561 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.408157 -0.610016 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399312 -0.595876 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.401066 -0.62031 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.393037 -0.625136 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.385946 -0.635431 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.369071 -0.626116 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3877 -0.659866 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.412036 -0.664041 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40282 -0.644745 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40282 -0.644745 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396915 -0.679161 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3877 -0.659866 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37258 -0.674986 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396915 -0.679161 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37258 -0.674986 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3877 -0.659866 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.471405 -0.471405 -0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER 0.441164 -0.441164 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.443014 -0.422853 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.449156 -0.418916 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.463412 -0.433171 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.435021 -0.445101 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.455419 -0.455419 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.433171 -0.463412 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.420766 -0.430846 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.418916 -0.449156 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.426908 -0.426908 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399854 -0.452233 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.383576 -0.43509 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40305 -0.440308 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.406245 -0.428383 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.380381 -0.447015 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40305 -0.440308 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396659 -0.464158 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.377186 -0.45894 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.393464 -0.476083 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396659 -0.464158 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.452233 -0.399854 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.45894 -0.377186 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.476083 -0.393464 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.464158 -0.396659 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.43509 -0.383576 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.440308 -0.40305 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.428383 -0.406245 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.447015 -0.380381 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.440308 -0.40305 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.464158 -0.396659 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.512714 -0.460336 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.512375 -0.453047 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.493241 -0.465554 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.497443 -0.44229 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.531849 -0.447829 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.516916 -0.437072 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.532187 -0.455118 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.527647 -0.471093 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.527985 -0.478381 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.508512 -0.483599 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.523783 -0.419026 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.538038 -0.404771 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.532513 -0.427756 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.515053 -0.410297 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.529309 -0.396041 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.506323 -0.401567 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.515053 -0.410297 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.546768 -0.4135 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.532513 -0.427756 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.541242 -0.436486 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.542955 -0.490576 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.565623 -0.483869 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.54615 -0.478651 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.549345 -0.466726 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.562428 -0.495794 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.54615 -0.478651 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539759 -0.502501 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.559233 -0.507719 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.536564 -0.514426 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539759 -0.502501 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.460336 -0.512714 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.461599 -0.535539 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.478381 -0.527985 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.455118 -0.532187 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.443553 -0.520267 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.437072 -0.516916 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.44229 -0.497443 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.466817 -0.516065 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.465554 -0.493241 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.483599 -0.508512 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490576 -0.542955 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.507719 -0.559233 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.514426 -0.536564 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.502501 -0.539759 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.483869 -0.565623 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.478651 -0.54615 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.466726 -0.549345 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.495794 -0.562428 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.478651 -0.54615 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.502501 -0.539759 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.419026 -0.523783 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.404771 -0.538038 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.427756 -0.532513 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.410297 -0.515053 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396041 -0.529309 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.401567 -0.506323 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.410297 -0.515053 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4135 -0.546768 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.427756 -0.532513 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436486 -0.541242 -0.222222 RAD 0.00617284 + txt002 + +END_SCENE diff --git a/examples/parallel_for/tachyon/dat/balls3.dat b/examples/parallel_for/tachyon/dat/balls3.dat new file mode 100644 index 0000000000..2837425d4d --- /dev/null +++ b/examples/parallel_for/tachyon/dat/balls3.dat @@ -0,0 +1,14804 @@ +BEGIN_SCENE + OUTFILE /dev/null + RESOLUTION 1024 768 + VERBOSE 0 + +CAMERA + ZOOM 1.20711 +ASPECTRATIO 1.0 + ANTIALIASING 0 + RAYDEPTH 5 + CENTER 2.1 1.3 1.7 + VIEWDIR -0.700389 -0.433574 -0.566982 + UPDIR -0.482085 -0.298433 0.82373 + +END_CAMERA + +BACKGROUND 0.078 0.361 0.753 + +LIGHT CENTER 4 3 2 RAD 0.002 COLOR 0.5 0.5 0.5 + +LIGHT CENTER 1 -4 4 RAD 0.002 COLOR 0.5 0.5 0.5 + +LIGHT CENTER -3 1 5 RAD 0.002 COLOR 0.5 0.5 0.5 + +TEXDEF txt001 AMBIENT 0.2 DIFFUSE 0.8 SPECULAR 0 OPACITY 1 +PHONG PLASTIC 0 PHONG_SIZE 100000 + COLOR 1 0.75 0.33 + TEXFUNC 0 + +TRI + V0 12 12 -0.5 V1 -12 -12 -0.5 V2 12 -12 -0.5 + txt001 +TRI + V0 12 12 -0.5 V1 -12 12 -0.5 V2 -12 -12 -0.5 + txt001 +TEXDEF txt002 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 +PHONG PLASTIC 0.5 PHONG_SIZE 45.2776 + COLOR 1 0.9 0.7 + TEXFUNC 0 + + SPHERE CENTER 0 0 0 RAD 0.5 + txt002 + SPHERE CENTER 0.272166 0.272166 0.544331 RAD 0.166667 + txt002 + SPHERE CENTER 0.420314 0.420314 0.618405 RAD 0.0555556 + txt002 + SPHERE CENTER 0.470715 0.470715 0.598245 RAD 0.0185185 + txt002 + SPHERE CENTER 0.481689 0.481689 0.57904 RAD 0.00617284 + txt002 + SPHERE CENTER 0.475329 0.45787 0.577669 RAD 0.00617284 + txt002 + SPHERE CENTER 0.45787 0.475329 0.577669 RAD 0.00617284 + txt002 + SPHERE CENTER 0.477074 0.494534 0.599616 RAD 0.00617284 + txt002 + SPHERE CENTER 0.453255 0.488174 0.598245 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4661 0.48356 0.618821 RAD 0.00617284 + txt002 + SPHERE CENTER 0.494534 0.477074 0.599616 RAD 0.00617284 + txt002 + SPHERE CENTER 0.48356 0.4661 0.618821 RAD 0.00617284 + txt002 + SPHERE CENTER 0.488174 0.453255 0.598245 RAD 0.00617284 + txt002 + SPHERE CENTER 0.461623 0.409245 0.557924 RAD 0.0185185 + txt002 + SPHERE CENTER 0.47044 0.419664 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER 0.447954 0.425689 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.468014 0.433095 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER 0.484109 0.40322 0.549693 RAD 0.00617284 + txt002 + SPHERE CENTER 0.481683 0.416651 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER 0.475292 0.392801 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER 0.464049 0.395814 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER 0.455233 0.385395 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER 0.441563 0.401839 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.409245 0.461623 0.557924 RAD 0.0185185 + txt002 + SPHERE CENTER 0.419664 0.47044 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER 0.433095 0.468014 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER 0.425689 0.447954 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.395814 0.464049 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER 0.401839 0.441563 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.385395 0.455233 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40322 0.484109 0.549693 RAD 0.00617284 + txt002 + SPHERE CENTER 0.392801 0.475292 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER 0.416651 0.481683 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER 0.429405 0.481784 0.658726 RAD 0.0185185 + txt002 + SPHERE CENTER 0.441197 0.503434 0.660098 RAD 0.00617284 + txt002 + SPHERE CENTER 0.452601 0.483752 0.650495 RAD 0.00617284 + txt002 + SPHERE CENTER 0.434161 0.494577 0.63815 RAD 0.00617284 + txt002 + SPHERE CENTER 0.418001 0.501466 0.668328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.410965 0.492609 0.64638 RAD 0.00617284 + txt002 + SPHERE CENTER 0.406209 0.479816 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436441 0.490641 0.680674 RAD 0.00617284 + txt002 + SPHERE CENTER 0.42465 0.46899 0.679302 RAD 0.00617284 + txt002 + SPHERE CENTER 0.447846 0.470958 0.671072 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367935 0.472692 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.36376 0.497028 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.383056 0.487812 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.383056 0.487812 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.34864 0.481907 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367935 0.472692 0.593714 RAD 0.00617284 + txt002 + SPHERE CENTER 0.352815 0.457572 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.34864 0.481907 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.352815 0.457572 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367935 0.472692 0.643096 RAD 0.00617284 + txt002 + SPHERE CENTER 0.379004 0.431383 0.678886 RAD 0.0185185 + txt002 + SPHERE CENTER 0.376578 0.444814 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399064 0.438789 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER 0.385395 0.455233 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356518 0.437408 0.687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.365335 0.447826 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.358944 0.423976 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.370187 0.420964 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.372614 0.407532 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER 0.392673 0.414939 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER 0.481784 0.429405 0.658726 RAD 0.0185185 + txt002 + SPHERE CENTER 0.503434 0.441197 0.660098 RAD 0.00617284 + txt002 + SPHERE CENTER 0.494577 0.434161 0.63815 RAD 0.00617284 + txt002 + SPHERE CENTER 0.483752 0.452601 0.650495 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490641 0.436441 0.680674 RAD 0.00617284 + txt002 + SPHERE CENTER 0.470958 0.447846 0.671072 RAD 0.00617284 + txt002 + SPHERE CENTER 0.46899 0.42465 0.679302 RAD 0.00617284 + txt002 + SPHERE CENTER 0.501466 0.418001 0.668328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.479816 0.406209 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER 0.492609 0.410965 0.64638 RAD 0.00617284 + txt002 + SPHERE CENTER 0.431383 0.379004 0.678886 RAD 0.0185185 + txt002 + SPHERE CENTER 0.444814 0.376578 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.455233 0.385395 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER 0.438789 0.399064 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER 0.420964 0.370187 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.414939 0.392673 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER 0.407532 0.372614 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER 0.437408 0.356518 0.687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.423976 0.358944 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.447826 0.365335 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472692 0.367935 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.497028 0.36376 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.487812 0.383056 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.487812 0.383056 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.481907 0.34864 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472692 0.367935 0.643096 RAD 0.00617284 + txt002 + SPHERE CENTER 0.457572 0.352815 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.481907 0.34864 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.457572 0.352815 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472692 0.367935 0.593714 RAD 0.00617284 + txt002 + SPHERE CENTER 0.461844 0.304709 0.43322 RAD 0.0555556 + txt002 + SPHERE CENTER 0.492085 0.33495 0.372739 RAD 0.0185185 + txt002 + SPHERE CENTER 0.492085 0.33495 0.348047 RAD 0.00617284 + txt002 + SPHERE CENTER 0.488469 0.313874 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.471009 0.331334 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.495701 0.356025 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.474625 0.352409 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER 0.495701 0.356025 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.51316 0.338566 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.51316 0.338566 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.509544 0.31749 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER 0.424345 0.305171 0.369341 RAD 0.0185185 + txt002 + SPHERE CENTER 0.40568 0.315605 0.356995 RAD 0.00617284 + txt002 + SPHERE CENTER 0.403931 0.312107 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.419383 0.329161 0.372427 RAD 0.00617284 + txt002 + SPHERE CENTER 0.426095 0.30867 0.344961 RAD 0.00617284 + txt002 + SPHERE CENTER 0.439797 0.322225 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.444759 0.298235 0.357307 RAD 0.00617284 + txt002 + SPHERE CENTER 0.410643 0.291616 0.353908 RAD 0.00617284 + txt002 + SPHERE CENTER 0.429307 0.281181 0.366254 RAD 0.00617284 + txt002 + SPHERE CENTER 0.408893 0.288117 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.435193 0.368397 0.406378 RAD 0.0185185 + txt002 + SPHERE CENTER 0.440864 0.389015 0.394032 RAD 0.00617284 + txt002 + SPHERE CENTER 0.457301 0.37895 0.409464 RAD 0.00617284 + txt002 + SPHERE CENTER 0.451857 0.367697 0.388171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.418755 0.378463 0.390945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.429748 0.357145 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.413085 0.357845 0.403291 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4242 0.389715 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.418529 0.369098 0.424584 RAD 0.00617284 + txt002 + SPHERE CENTER 0.440637 0.37965 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER 0.529584 0.334488 0.436618 RAD 0.0185185 + txt002 + SPHERE CENTER 0.546497 0.347572 0.424272 RAD 0.00617284 + txt002 + SPHERE CENTER 0.532117 0.331508 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522481 0.352406 0.421186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.543964 0.350552 0.448652 RAD 0.00617284 + txt002 + SPHERE CENTER 0.519948 0.355387 0.445566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.52705 0.337468 0.460998 RAD 0.00617284 + txt002 + SPHERE CENTER 0.5536 0.329654 0.439705 RAD 0.00617284 + txt002 + SPHERE CENTER 0.536686 0.31657 0.45205 RAD 0.00617284 + txt002 + SPHERE CENTER 0.53922 0.313589 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472692 0.367935 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.48474 0.389488 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.495668 0.369235 0.46131 RAD 0.00617284 + txt002 + SPHERE CENTER 0.477004 0.379669 0.448964 RAD 0.00617284 + txt002 + SPHERE CENTER 0.461764 0.388188 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER 0.454027 0.37837 0.457911 RAD 0.00617284 + txt002 + SPHERE CENTER 0.449715 0.366636 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER 0.480429 0.377754 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.46838 0.356202 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.491357 0.357501 0.482603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.499343 0.304247 0.497099 RAD 0.0185185 + txt002 + SPHERE CENTER 0.518259 0.314219 0.509445 RAD 0.00617284 + txt002 + SPHERE CENTER 0.519922 0.310678 0.485065 RAD 0.00617284 + txt002 + SPHERE CENTER 0.504895 0.328108 0.494013 RAD 0.00617284 + txt002 + SPHERE CENTER 0.49768 0.307788 0.521479 RAD 0.00617284 + txt002 + SPHERE CENTER 0.484316 0.321677 0.506047 RAD 0.00617284 + txt002 + SPHERE CENTER 0.478764 0.297816 0.509133 RAD 0.00617284 + txt002 + SPHERE CENTER 0.512708 0.290358 0.512531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.493791 0.280387 0.500186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.51437 0.286818 0.488152 RAD 0.00617284 + txt002 + SPHERE CENTER 0.518736 0.271262 0.399581 RAD 0.0185185 + txt002 + SPHERE CENTER 0.539811 0.274878 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.520873 0.290418 0.384149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.533373 0.290264 0.405442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.537674 0.255722 0.402668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.531235 0.271108 0.420874 RAD 0.00617284 + txt002 + SPHERE CENTER 0.516598 0.252106 0.415013 RAD 0.00617284 + txt002 + SPHERE CENTER 0.525174 0.255876 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.504099 0.25226 0.39372 RAD 0.00617284 + txt002 + SPHERE CENTER 0.506236 0.271416 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.488495 0.241021 0.460062 RAD 0.0185185 + txt002 + SPHERE CENTER 0.50716 0.230587 0.472408 RAD 0.00617284 + txt002 + SPHERE CENTER 0.51153 0.24936 0.456976 RAD 0.00617284 + txt002 + SPHERE CENTER 0.499694 0.253381 0.478269 RAD 0.00617284 + txt002 + SPHERE CENTER 0.484125 0.222248 0.475494 RAD 0.00617284 + txt002 + SPHERE CENTER 0.476659 0.245042 0.481355 RAD 0.00617284 + txt002 + SPHERE CENTER 0.46546 0.232683 0.463149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.495961 0.218227 0.454201 RAD 0.00617284 + txt002 + SPHERE CENTER 0.477296 0.228661 0.441856 RAD 0.00617284 + txt002 + SPHERE CENTER 0.500331 0.237 0.438769 RAD 0.00617284 + txt002 + SPHERE CENTER 0.450996 0.241483 0.396183 RAD 0.0185185 + txt002 + SPHERE CENTER 0.455172 0.217147 0.396183 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472226 0.232599 0.40513 RAD 0.00617284 + txt002 + SPHERE CENTER 0.45115 0.228983 0.417476 RAD 0.00617284 + txt002 + SPHERE CENTER 0.433942 0.226031 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.429921 0.237867 0.408529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.429767 0.250367 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.455018 0.229647 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER 0.450842 0.253983 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472072 0.245099 0.383837 RAD 0.00617284 + txt002 + SPHERE CENTER 0.304709 0.461844 0.43322 RAD 0.0555556 + txt002 + SPHERE CENTER 0.33495 0.492085 0.372739 RAD 0.0185185 + txt002 + SPHERE CENTER 0.33495 0.492085 0.348047 RAD 0.00617284 + txt002 + SPHERE CENTER 0.331334 0.471009 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.313874 0.488469 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.338566 0.51316 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31749 0.509544 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER 0.338566 0.51316 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356025 0.495701 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356025 0.495701 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.352409 0.474625 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER 0.368397 0.435193 0.406378 RAD 0.0185185 + txt002 + SPHERE CENTER 0.389015 0.440864 0.394032 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367697 0.451857 0.388171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37895 0.457301 0.409464 RAD 0.00617284 + txt002 + SPHERE CENTER 0.389715 0.4242 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37965 0.440637 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER 0.369098 0.418529 0.424584 RAD 0.00617284 + txt002 + SPHERE CENTER 0.378463 0.418755 0.390945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.357845 0.413085 0.403291 RAD 0.00617284 + txt002 + SPHERE CENTER 0.357145 0.429748 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.305171 0.424345 0.369341 RAD 0.0185185 + txt002 + SPHERE CENTER 0.315605 0.40568 0.356995 RAD 0.00617284 + txt002 + SPHERE CENTER 0.329161 0.419383 0.372427 RAD 0.00617284 + txt002 + SPHERE CENTER 0.312107 0.403931 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.291616 0.410643 0.353908 RAD 0.00617284 + txt002 + SPHERE CENTER 0.288117 0.408893 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.281181 0.429307 0.366254 RAD 0.00617284 + txt002 + SPHERE CENTER 0.30867 0.426095 0.344961 RAD 0.00617284 + txt002 + SPHERE CENTER 0.298235 0.444759 0.357307 RAD 0.00617284 + txt002 + SPHERE CENTER 0.322225 0.439797 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271262 0.518736 0.399581 RAD 0.0185185 + txt002 + SPHERE CENTER 0.274878 0.539811 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.290264 0.533373 0.405442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.290418 0.520873 0.384149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.255876 0.525174 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271416 0.506236 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.25226 0.504099 0.39372 RAD 0.00617284 + txt002 + SPHERE CENTER 0.255722 0.537674 0.402668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.252106 0.516598 0.415013 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271108 0.531235 0.420874 RAD 0.00617284 + txt002 + SPHERE CENTER 0.241483 0.450996 0.396183 RAD 0.0185185 + txt002 + SPHERE CENTER 0.217147 0.455172 0.396183 RAD 0.00617284 + txt002 + SPHERE CENTER 0.228983 0.45115 0.417476 RAD 0.00617284 + txt002 + SPHERE CENTER 0.232599 0.472226 0.40513 RAD 0.00617284 + txt002 + SPHERE CENTER 0.229647 0.455018 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER 0.245099 0.472072 0.383837 RAD 0.00617284 + txt002 + SPHERE CENTER 0.253983 0.450842 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER 0.226031 0.433942 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.250367 0.429767 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.237867 0.429921 0.408529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.241021 0.488495 0.460062 RAD 0.0185185 + txt002 + SPHERE CENTER 0.230587 0.50716 0.472408 RAD 0.00617284 + txt002 + SPHERE CENTER 0.253381 0.499694 0.478269 RAD 0.00617284 + txt002 + SPHERE CENTER 0.24936 0.51153 0.456976 RAD 0.00617284 + txt002 + SPHERE CENTER 0.218227 0.495961 0.454201 RAD 0.00617284 + txt002 + SPHERE CENTER 0.237 0.500331 0.438769 RAD 0.00617284 + txt002 + SPHERE CENTER 0.228661 0.477296 0.441856 RAD 0.00617284 + txt002 + SPHERE CENTER 0.222248 0.484125 0.475494 RAD 0.00617284 + txt002 + SPHERE CENTER 0.232683 0.46546 0.463149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.245042 0.476659 0.481355 RAD 0.00617284 + txt002 + SPHERE CENTER 0.334488 0.529584 0.436618 RAD 0.0185185 + txt002 + SPHERE CENTER 0.347572 0.546497 0.424272 RAD 0.00617284 + txt002 + SPHERE CENTER 0.352406 0.522481 0.421186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.331508 0.532117 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.329654 0.5536 0.439705 RAD 0.00617284 + txt002 + SPHERE CENTER 0.313589 0.53922 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31657 0.536686 0.45205 RAD 0.00617284 + txt002 + SPHERE CENTER 0.350552 0.543964 0.448652 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337468 0.52705 0.460998 RAD 0.00617284 + txt002 + SPHERE CENTER 0.355387 0.519948 0.445566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.304247 0.499343 0.497099 RAD 0.0185185 + txt002 + SPHERE CENTER 0.314219 0.518259 0.509445 RAD 0.00617284 + txt002 + SPHERE CENTER 0.328108 0.504895 0.494013 RAD 0.00617284 + txt002 + SPHERE CENTER 0.310678 0.519922 0.485065 RAD 0.00617284 + txt002 + SPHERE CENTER 0.290358 0.512708 0.512531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.286818 0.51437 0.488152 RAD 0.00617284 + txt002 + SPHERE CENTER 0.280387 0.493791 0.500186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307788 0.49768 0.521479 RAD 0.00617284 + txt002 + SPHERE CENTER 0.297816 0.478764 0.509133 RAD 0.00617284 + txt002 + SPHERE CENTER 0.321677 0.484316 0.506047 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367935 0.472692 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.389488 0.48474 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.379669 0.477004 0.448964 RAD 0.00617284 + txt002 + SPHERE CENTER 0.369235 0.495668 0.46131 RAD 0.00617284 + txt002 + SPHERE CENTER 0.377754 0.480429 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.357501 0.491357 0.482603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356202 0.46838 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.388188 0.461764 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER 0.366636 0.449715 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37837 0.454027 0.457911 RAD 0.00617284 + txt002 + SPHERE CENTER 0.230635 0.38777 0.729516 RAD 0.0555556 + txt002 + SPHERE CENTER 0.2506 0.446614 0.769837 RAD 0.0185185 + txt002 + SPHERE CENTER 0.264242 0.467193 0.770086 RAD 0.00617284 + txt002 + SPHERE CENTER 0.272442 0.447086 0.758332 RAD 0.00617284 + txt002 + SPHERE CENTER 0.253384 0.459832 0.749168 RAD 0.00617284 + txt002 + SPHERE CENTER 0.2424 0.46672 0.781591 RAD 0.00617284 + txt002 + SPHERE CENTER 0.231541 0.459359 0.760673 RAD 0.00617284 + txt002 + SPHERE CENTER 0.228758 0.446141 0.781342 RAD 0.00617284 + txt002 + SPHERE CENTER 0.261459 0.453974 0.790755 RAD 0.00617284 + txt002 + SPHERE CENTER 0.247817 0.433396 0.790506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.269659 0.433868 0.779001 RAD 0.00617284 + txt002 + SPHERE CENTER 0.301839 0.407906 0.732914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.319874 0.420236 0.72141 RAD 0.00617284 + txt002 + SPHERE CENTER 0.303021 0.407886 0.708251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.296625 0.428474 0.720288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318692 0.420256 0.746073 RAD 0.00617284 + txt002 + SPHERE CENTER 0.295442 0.428494 0.744951 RAD 0.00617284 + txt002 + SPHERE CENTER 0.300656 0.407926 0.757577 RAD 0.00617284 + txt002 + SPHERE CENTER 0.325088 0.399668 0.734036 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307053 0.387338 0.745541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.308235 0.387318 0.720878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.253236 0.449775 0.695877 RAD 0.0185185 + txt002 + SPHERE CENTER 0.263032 0.459076 0.675209 RAD 0.00617284 + txt002 + SPHERE CENTER 0.270029 0.436804 0.683251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.247378 0.440021 0.673964 RAD 0.00617284 + txt002 + SPHERE CENTER 0.246239 0.472047 0.687835 RAD 0.00617284 + txt002 + SPHERE CENTER 0.230585 0.452992 0.68659 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236443 0.462746 0.708504 RAD 0.00617284 + txt002 + SPHERE CENTER 0.26889 0.468829 0.697123 RAD 0.00617284 + txt002 + SPHERE CENTER 0.259094 0.459528 0.717791 RAD 0.00617284 + txt002 + SPHERE CENTER 0.275887 0.446557 0.705165 RAD 0.00617284 + txt002 + SPHERE CENTER 0.179397 0.426478 0.766439 RAD 0.0185185 + txt002 + SPHERE CENTER 0.174744 0.447688 0.778193 RAD 0.00617284 + txt002 + SPHERE CENTER 0.197172 0.437457 0.779597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.1895 0.447523 0.758396 RAD 0.00617284 + txt002 + SPHERE CENTER 0.156968 0.436708 0.765035 RAD 0.00617284 + txt002 + SPHERE CENTER 0.171724 0.436544 0.745238 RAD 0.00617284 + txt002 + SPHERE CENTER 0.161621 0.415499 0.753281 RAD 0.00617284 + txt002 + SPHERE CENTER 0.164641 0.426642 0.786236 RAD 0.00617284 + txt002 + SPHERE CENTER 0.169293 0.405432 0.774481 RAD 0.00617284 + txt002 + SPHERE CENTER 0.187069 0.416412 0.787639 RAD 0.00617284 + txt002 + SPHERE CENTER 0.182032 0.429639 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.177682 0.45215 0.683315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.190087 0.449636 0.704516 RAD 0.00617284 + txt002 + SPHERE CENTER 0.200611 0.44299 0.683192 RAD 0.00617284 + txt002 + SPHERE CENTER 0.169628 0.432153 0.671279 RAD 0.00617284 + txt002 + SPHERE CENTER 0.192556 0.422992 0.671155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.173978 0.409641 0.680442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.159104 0.438799 0.692603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.163454 0.416288 0.701767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.171508 0.436286 0.713804 RAD 0.00617284 + txt002 + SPHERE CENTER 0.159431 0.367634 0.726118 RAD 0.0185185 + txt002 + SPHERE CENTER 0.13761 0.368692 0.737623 RAD 0.00617284 + txt002 + SPHERE CENTER 0.158434 0.366998 0.750781 RAD 0.00617284 + txt002 + SPHERE CENTER 0.153102 0.387887 0.738744 RAD 0.00617284 + txt002 + SPHERE CENTER 0.138607 0.369329 0.71296 RAD 0.00617284 + txt002 + SPHERE CENTER 0.154099 0.388523 0.714081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.160429 0.36827 0.701455 RAD 0.00617284 + txt002 + SPHERE CENTER 0.14394 0.34844 0.724997 RAD 0.00617284 + txt002 + SPHERE CENTER 0.165761 0.347381 0.713492 RAD 0.00617284 + txt002 + SPHERE CENTER 0.164764 0.346745 0.738155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.227999 0.384609 0.803476 RAD 0.0185185 + txt002 + SPHERE CENTER 0.237348 0.393812 0.824394 RAD 0.00617284 + txt002 + SPHERE CENTER 0.251829 0.390976 0.804597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.234368 0.408432 0.804721 RAD 0.00617284 + txt002 + SPHERE CENTER 0.213518 0.387445 0.823273 RAD 0.00617284 + txt002 + SPHERE CENTER 0.210538 0.402066 0.8036 RAD 0.00617284 + txt002 + SPHERE CENTER 0.204169 0.378242 0.802355 RAD 0.00617284 + txt002 + SPHERE CENTER 0.23098 0.369989 0.823149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.221631 0.360786 0.802231 RAD 0.00617284 + txt002 + SPHERE CENTER 0.245461 0.367152 0.803352 RAD 0.00617284 + txt002 + SPHERE CENTER 0.208034 0.325765 0.763155 RAD 0.0185185 + txt002 + SPHERE CENTER 0.209548 0.312342 0.783824 RAD 0.00617284 + txt002 + SPHERE CENTER 0.229235 0.324887 0.775781 RAD 0.00617284 + txt002 + SPHERE CENTER 0.209827 0.337 0.785069 RAD 0.00617284 + txt002 + SPHERE CENTER 0.188347 0.31322 0.771198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.188626 0.337878 0.772443 RAD 0.00617284 + txt002 + SPHERE CENTER 0.186834 0.326643 0.750529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.207755 0.301107 0.76191 RAD 0.00617284 + txt002 + SPHERE CENTER 0.206242 0.31453 0.741241 RAD 0.00617284 + txt002 + SPHERE CENTER 0.227442 0.313652 0.753867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.279238 0.345901 0.766553 RAD 0.0185185 + txt002 + SPHERE CENTER 0.302145 0.344931 0.775717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.297823 0.356827 0.754517 RAD 0.00617284 + txt002 + SPHERE CENTER 0.289691 0.366251 0.775841 RAD 0.00617284 + txt002 + SPHERE CENTER 0.28356 0.334005 0.787754 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271106 0.355325 0.787878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.260653 0.334975 0.77859 RAD 0.00617284 + txt002 + SPHERE CENTER 0.291692 0.324581 0.766429 RAD 0.00617284 + txt002 + SPHERE CENTER 0.268785 0.325551 0.757266 RAD 0.00617284 + txt002 + SPHERE CENTER 0.28737 0.336477 0.745229 RAD 0.00617284 + txt002 + SPHERE CENTER 0.115031 0.4293 0.544331 RAD 0.0555556 + txt002 + SPHERE CENTER 0.102505 0.502308 0.544331 RAD 0.0185185 + txt002 + SPHERE CENTER 0.110567 0.524146 0.536101 RAD 0.00617284 + txt002 + SPHERE CENTER 0.126738 0.506465 0.542066 RAD 0.00617284 + txt002 + SPHERE CENTER 0.112687 0.504055 0.521905 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0863343 0.519988 0.538366 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0884544 0.499897 0.524171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0782715 0.49815 0.546597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.100385 0.522399 0.558526 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0923218 0.500561 0.566757 RAD 0.00617284 + txt002 + SPHERE CENTER 0.116555 0.504718 0.564491 RAD 0.00617284 + txt002 + SPHERE CENTER 0.160392 0.474661 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.177777 0.492047 0.579103 RAD 0.00617284 + txt002 + SPHERE CENTER 0.176681 0.473492 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.159222 0.490951 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.161488 0.493217 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.142932 0.492121 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.144102 0.475831 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.178947 0.475757 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.161561 0.458371 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.177851 0.457202 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.160392 0.474661 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.167697 0.481967 0.484868 RAD 0.00617284 + txt002 + SPHERE CENTER 0.161561 0.458371 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.144102 0.475831 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.166528 0.498257 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.142932 0.492121 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.159222 0.490951 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.183987 0.480797 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.176681 0.473492 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.177851 0.457202 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0571437 0.456947 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0450372 0.477623 0.501329 RAD 0.00617284 + txt002 + SPHERE CENTER 0.055591 0.475469 0.523547 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0696413 0.47788 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0465898 0.4591 0.485076 RAD 0.00617284 + txt002 + SPHERE CENTER 0.071194 0.459357 0.487134 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0586963 0.438424 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0325396 0.45669 0.505236 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0446461 0.436013 0.511201 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0430934 0.454536 0.527454 RAD 0.00617284 + txt002 + SPHERE CENTER 0.115031 0.4293 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.10495 0.439381 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0911807 0.435691 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.10864 0.45315 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.128801 0.43299 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.13249 0.44676 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.138881 0.42291 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.111341 0.415531 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.121421 0.40545 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0975713 0.411841 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0696698 0.383939 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.052284 0.366554 0.509559 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0708393 0.36765 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0533799 0.385109 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0511144 0.382844 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0522103 0.401399 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0685002 0.400229 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0685739 0.365384 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0859596 0.38277 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0871292 0.36648 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0571437 0.456947 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0493251 0.475575 0.595564 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0725262 0.467381 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.06557 0.479825 0.577461 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0339426 0.465141 0.57931 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0501875 0.46939 0.561208 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0417612 0.446512 0.565115 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0408988 0.452697 0.599471 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0487174 0.434069 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0640999 0.444504 0.601529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0696698 0.383939 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0623642 0.376634 0.603794 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0859596 0.38277 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0685002 0.400229 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0460743 0.377803 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0522103 0.401399 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0533799 0.385109 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0635337 0.360344 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0708393 0.36765 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0871292 0.36648 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.115031 0.4293 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.125111 0.439381 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.138881 0.435691 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.121421 0.45315 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.101261 0.43299 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0975713 0.44676 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0911807 0.42291 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.11872 0.415531 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.10864 0.40545 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.13249 0.411841 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.082487 0.239622 0.655442 RAD 0.0555556 + txt002 + SPHERE CENTER 0.0438957 0.258053 0.715923 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0426858 0.273525 0.735128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.064638 0.265928 0.726759 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0510334 0.281546 0.713318 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0219434 0.26565 0.724292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.030291 0.273671 0.702483 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0231533 0.250178 0.705088 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0355481 0.250032 0.737733 RAD 0.00617284 + txt002 + SPHERE CENTER 0.036758 0.23456 0.718528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0575003 0.242434 0.729364 RAD 0.00617284 + txt002 + SPHERE CENTER 0.117687 0.252557 0.719322 RAD 0.0185185 + txt002 + SPHERE CENTER 0.135677 0.265544 0.730157 RAD 0.00617284 + txt002 + SPHERE CENTER 0.138361 0.25778 0.706872 RAD 0.00617284 + txt002 + SPHERE CENTER 0.12224 0.275732 0.71212 RAD 0.00617284 + txt002 + SPHERE CENTER 0.115003 0.26032 0.742607 RAD 0.00617284 + txt002 + SPHERE CENTER 0.101567 0.270508 0.72457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.097014 0.247334 0.731771 RAD 0.00617284 + txt002 + SPHERE CENTER 0.131123 0.242369 0.737359 RAD 0.00617284 + txt002 + SPHERE CENTER 0.113134 0.229382 0.726523 RAD 0.00617284 + txt002 + SPHERE CENTER 0.133808 0.234605 0.714074 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0863845 0.308551 0.682285 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0971427 0.330622 0.67968 RAD 0.00617284 + txt002 + SPHERE CENTER 0.109956 0.310023 0.675083 RAD 0.00617284 + txt002 + SPHERE CENTER 0.091905 0.317013 0.659755 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0735708 0.329151 0.686881 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0683331 0.315541 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0628126 0.30708 0.689486 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0916222 0.322161 0.702209 RAD 0.00617284 + txt002 + SPHERE CENTER 0.080864 0.30009 0.704814 RAD 0.00617284 + txt002 + SPHERE CENTER 0.104436 0.301561 0.697613 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00869528 0.245118 0.652044 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0110117 0.257416 0.660413 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00823377 0.253319 0.675329 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0102865 0.269325 0.656641 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0105502 0.249215 0.637128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.010748 0.261124 0.633356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00915679 0.236916 0.628759 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0126029 0.233209 0.655816 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00710408 0.22091 0.647447 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00664257 0.229111 0.670732 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0511841 0.295616 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0555846 0.315856 0.604965 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0705987 0.309941 0.623653 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0705297 0.296292 0.603077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.03617 0.301531 0.599717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0511152 0.281968 0.597829 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0317696 0.281291 0.613157 RAD 0.00617284 + txt002 + SPHERE CENTER 0.036239 0.31518 0.620293 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0318385 0.29494 0.633733 RAD 0.00617284 + txt002 + SPHERE CENTER 0.051253 0.309265 0.638981 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0472866 0.226687 0.591563 RAD 0.0185185 + txt002 + SPHERE CENTER 0.025169 0.224935 0.580727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0281502 0.217281 0.604012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0288111 0.241399 0.598764 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0443054 0.234341 0.568278 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0479475 0.250805 0.586315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.066423 0.236092 0.579113 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0436445 0.210223 0.573526 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0657621 0.211974 0.584361 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0466257 0.202569 0.596811 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0399982 0.189123 0.689081 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0335228 0.179527 0.71089 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0567332 0.187058 0.707118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0385291 0.203632 0.709006 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0167878 0.181593 0.692853 RAD 0.00617284 + txt002 + SPHERE CENTER 0.021794 0.205698 0.690969 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0232631 0.191189 0.671044 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0349919 0.165018 0.690965 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0414672 0.174615 0.669156 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0582023 0.172549 0.687193 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0785895 0.170692 0.6286 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0867911 0.147549 0.631205 RAD 0.00617284 + txt002 + SPHERE CENTER 0.101845 0.166573 0.635801 RAD 0.00617284 + txt002 + SPHERE CENTER 0.083121 0.161663 0.65113 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0635354 0.151669 0.624003 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0598652 0.165782 0.643928 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0553337 0.174812 0.621398 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0822597 0.156579 0.608675 RAD 0.00617284 + txt002 + SPHERE CENTER 0.074058 0.179722 0.60607 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0973138 0.175603 0.613272 RAD 0.00617284 + txt002 + SPHERE CENTER 0.11379 0.183628 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.133336 0.176775 0.705919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.136161 0.192663 0.687231 RAD 0.00617284 + txt002 + SPHERE CENTER 0.124499 0.199753 0.707807 RAD 0.00617284 + txt002 + SPHERE CENTER 0.110965 0.167739 0.711167 RAD 0.00617284 + txt002 + SPHERE CENTER 0.102127 0.190718 0.713055 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0914184 0.174592 0.697727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.122627 0.160649 0.690591 RAD 0.00617284 + txt002 + SPHERE CENTER 0.103081 0.167502 0.677151 RAD 0.00617284 + txt002 + SPHERE CENTER 0.125452 0.176537 0.671903 RAD 0.00617284 + txt002 + SPHERE CENTER 0.38777 0.230635 0.729516 RAD 0.0555556 + txt002 + SPHERE CENTER 0.446614 0.2506 0.769837 RAD 0.0185185 + txt002 + SPHERE CENTER 0.467193 0.264242 0.770086 RAD 0.00617284 + txt002 + SPHERE CENTER 0.459832 0.253384 0.749168 RAD 0.00617284 + txt002 + SPHERE CENTER 0.447086 0.272442 0.758332 RAD 0.00617284 + txt002 + SPHERE CENTER 0.453974 0.261459 0.790755 RAD 0.00617284 + txt002 + SPHERE CENTER 0.433868 0.269659 0.779001 RAD 0.00617284 + txt002 + SPHERE CENTER 0.433396 0.247817 0.790506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.46672 0.2424 0.781591 RAD 0.00617284 + txt002 + SPHERE CENTER 0.446141 0.228758 0.781342 RAD 0.00617284 + txt002 + SPHERE CENTER 0.459359 0.231541 0.760673 RAD 0.00617284 + txt002 + SPHERE CENTER 0.449775 0.253236 0.695877 RAD 0.0185185 + txt002 + SPHERE CENTER 0.459076 0.263032 0.675209 RAD 0.00617284 + txt002 + SPHERE CENTER 0.440021 0.247378 0.673964 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436804 0.270029 0.683251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.468829 0.26889 0.697123 RAD 0.00617284 + txt002 + SPHERE CENTER 0.446557 0.275887 0.705165 RAD 0.00617284 + txt002 + SPHERE CENTER 0.459528 0.259094 0.717791 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472047 0.246239 0.687835 RAD 0.00617284 + txt002 + SPHERE CENTER 0.462746 0.236443 0.708504 RAD 0.00617284 + txt002 + SPHERE CENTER 0.452992 0.230585 0.68659 RAD 0.00617284 + txt002 + SPHERE CENTER 0.407906 0.301839 0.732914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.420236 0.319874 0.72141 RAD 0.00617284 + txt002 + SPHERE CENTER 0.428474 0.296625 0.720288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.407886 0.303021 0.708251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399668 0.325088 0.734036 RAD 0.00617284 + txt002 + SPHERE CENTER 0.387318 0.308235 0.720878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.387338 0.307053 0.745541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.420256 0.318692 0.746073 RAD 0.00617284 + txt002 + SPHERE CENTER 0.407926 0.300656 0.757577 RAD 0.00617284 + txt002 + SPHERE CENTER 0.428494 0.295442 0.744951 RAD 0.00617284 + txt002 + SPHERE CENTER 0.384609 0.227999 0.803476 RAD 0.0185185 + txt002 + SPHERE CENTER 0.393812 0.237348 0.824394 RAD 0.00617284 + txt002 + SPHERE CENTER 0.408432 0.234368 0.804721 RAD 0.00617284 + txt002 + SPHERE CENTER 0.390976 0.251829 0.804597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.369989 0.23098 0.823149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367152 0.245461 0.803352 RAD 0.00617284 + txt002 + SPHERE CENTER 0.360786 0.221631 0.802231 RAD 0.00617284 + txt002 + SPHERE CENTER 0.387445 0.213518 0.823273 RAD 0.00617284 + txt002 + SPHERE CENTER 0.378242 0.204169 0.802355 RAD 0.00617284 + txt002 + SPHERE CENTER 0.402066 0.210538 0.8036 RAD 0.00617284 + txt002 + SPHERE CENTER 0.345901 0.279238 0.766553 RAD 0.0185185 + txt002 + SPHERE CENTER 0.344931 0.302145 0.775717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.366251 0.289691 0.775841 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356827 0.297823 0.754517 RAD 0.00617284 + txt002 + SPHERE CENTER 0.324581 0.291692 0.766429 RAD 0.00617284 + txt002 + SPHERE CENTER 0.336477 0.28737 0.745229 RAD 0.00617284 + txt002 + SPHERE CENTER 0.325551 0.268785 0.757266 RAD 0.00617284 + txt002 + SPHERE CENTER 0.334005 0.28356 0.787754 RAD 0.00617284 + txt002 + SPHERE CENTER 0.334975 0.260653 0.77859 RAD 0.00617284 + txt002 + SPHERE CENTER 0.355325 0.271106 0.787878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.325765 0.208034 0.763155 RAD 0.0185185 + txt002 + SPHERE CENTER 0.312342 0.209548 0.783824 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337 0.209827 0.785069 RAD 0.00617284 + txt002 + SPHERE CENTER 0.324887 0.229235 0.775781 RAD 0.00617284 + txt002 + SPHERE CENTER 0.301107 0.207755 0.76191 RAD 0.00617284 + txt002 + SPHERE CENTER 0.313652 0.227442 0.753867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31453 0.206242 0.741241 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31322 0.188347 0.771198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.326643 0.186834 0.750529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337878 0.188626 0.772443 RAD 0.00617284 + txt002 + SPHERE CENTER 0.426478 0.179397 0.766439 RAD 0.0185185 + txt002 + SPHERE CENTER 0.447688 0.174744 0.778193 RAD 0.00617284 + txt002 + SPHERE CENTER 0.447523 0.1895 0.758396 RAD 0.00617284 + txt002 + SPHERE CENTER 0.437457 0.197172 0.779597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.426642 0.164641 0.786236 RAD 0.00617284 + txt002 + SPHERE CENTER 0.416412 0.187069 0.787639 RAD 0.00617284 + txt002 + SPHERE CENTER 0.405432 0.169293 0.774481 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436708 0.156968 0.765035 RAD 0.00617284 + txt002 + SPHERE CENTER 0.415499 0.161621 0.753281 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436544 0.171724 0.745238 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367634 0.159431 0.726118 RAD 0.0185185 + txt002 + SPHERE CENTER 0.368692 0.13761 0.737623 RAD 0.00617284 + txt002 + SPHERE CENTER 0.387887 0.153102 0.738744 RAD 0.00617284 + txt002 + SPHERE CENTER 0.366998 0.158434 0.750781 RAD 0.00617284 + txt002 + SPHERE CENTER 0.34844 0.14394 0.724997 RAD 0.00617284 + txt002 + SPHERE CENTER 0.346745 0.164764 0.738155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.347381 0.165761 0.713492 RAD 0.00617284 + txt002 + SPHERE CENTER 0.369329 0.138607 0.71296 RAD 0.00617284 + txt002 + SPHERE CENTER 0.36827 0.160429 0.701455 RAD 0.00617284 + txt002 + SPHERE CENTER 0.388523 0.154099 0.714081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.429639 0.182032 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.45215 0.177682 0.683315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.44299 0.200611 0.683192 RAD 0.00617284 + txt002 + SPHERE CENTER 0.449636 0.190087 0.704516 RAD 0.00617284 + txt002 + SPHERE CENTER 0.438799 0.159104 0.692603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436286 0.171508 0.713804 RAD 0.00617284 + txt002 + SPHERE CENTER 0.416288 0.163454 0.701767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.432153 0.169628 0.671279 RAD 0.00617284 + txt002 + SPHERE CENTER 0.409641 0.173978 0.680442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.422992 0.192556 0.671155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.239622 0.082487 0.655442 RAD 0.0555556 + txt002 + SPHERE CENTER 0.258053 0.0438957 0.715923 RAD 0.0185185 + txt002 + SPHERE CENTER 0.273525 0.0426858 0.735128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.281546 0.0510334 0.713318 RAD 0.00617284 + txt002 + SPHERE CENTER 0.265928 0.064638 0.726759 RAD 0.00617284 + txt002 + SPHERE CENTER 0.250032 0.0355481 0.737733 RAD 0.00617284 + txt002 + SPHERE CENTER 0.242434 0.0575003 0.729364 RAD 0.00617284 + txt002 + SPHERE CENTER 0.23456 0.036758 0.718528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.26565 0.0219434 0.724292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.250178 0.0231533 0.705088 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273671 0.030291 0.702483 RAD 0.00617284 + txt002 + SPHERE CENTER 0.308551 0.0863845 0.682285 RAD 0.0185185 + txt002 + SPHERE CENTER 0.330622 0.0971427 0.67968 RAD 0.00617284 + txt002 + SPHERE CENTER 0.317013 0.091905 0.659755 RAD 0.00617284 + txt002 + SPHERE CENTER 0.310023 0.109956 0.675083 RAD 0.00617284 + txt002 + SPHERE CENTER 0.322161 0.0916222 0.702209 RAD 0.00617284 + txt002 + SPHERE CENTER 0.301561 0.104436 0.697613 RAD 0.00617284 + txt002 + SPHERE CENTER 0.30009 0.080864 0.704814 RAD 0.00617284 + txt002 + SPHERE CENTER 0.329151 0.0735708 0.686881 RAD 0.00617284 + txt002 + SPHERE CENTER 0.30708 0.0628126 0.689486 RAD 0.00617284 + txt002 + SPHERE CENTER 0.315541 0.0683331 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER 0.252557 0.117687 0.719322 RAD 0.0185185 + txt002 + SPHERE CENTER 0.265544 0.135677 0.730157 RAD 0.00617284 + txt002 + SPHERE CENTER 0.275732 0.12224 0.71212 RAD 0.00617284 + txt002 + SPHERE CENTER 0.25778 0.138361 0.706872 RAD 0.00617284 + txt002 + SPHERE CENTER 0.242369 0.131123 0.737359 RAD 0.00617284 + txt002 + SPHERE CENTER 0.234605 0.133808 0.714074 RAD 0.00617284 + txt002 + SPHERE CENTER 0.229382 0.113134 0.726523 RAD 0.00617284 + txt002 + SPHERE CENTER 0.26032 0.115003 0.742607 RAD 0.00617284 + txt002 + SPHERE CENTER 0.247334 0.097014 0.731771 RAD 0.00617284 + txt002 + SPHERE CENTER 0.270508 0.101567 0.72457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.189123 0.0399982 0.689081 RAD 0.0185185 + txt002 + SPHERE CENTER 0.179527 0.0335228 0.71089 RAD 0.00617284 + txt002 + SPHERE CENTER 0.203632 0.0385291 0.709006 RAD 0.00617284 + txt002 + SPHERE CENTER 0.187058 0.0567332 0.707118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.165018 0.0349919 0.690965 RAD 0.00617284 + txt002 + SPHERE CENTER 0.172549 0.0582023 0.687193 RAD 0.00617284 + txt002 + SPHERE CENTER 0.174615 0.0414672 0.669156 RAD 0.00617284 + txt002 + SPHERE CENTER 0.181593 0.0167878 0.692853 RAD 0.00617284 + txt002 + SPHERE CENTER 0.191189 0.0232631 0.671044 RAD 0.00617284 + txt002 + SPHERE CENTER 0.205698 0.021794 0.690969 RAD 0.00617284 + txt002 + SPHERE CENTER 0.183628 0.11379 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.176775 0.133336 0.705919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.199753 0.124499 0.707807 RAD 0.00617284 + txt002 + SPHERE CENTER 0.192663 0.136161 0.687231 RAD 0.00617284 + txt002 + SPHERE CENTER 0.160649 0.122627 0.690591 RAD 0.00617284 + txt002 + SPHERE CENTER 0.176537 0.125452 0.671903 RAD 0.00617284 + txt002 + SPHERE CENTER 0.167502 0.103081 0.677151 RAD 0.00617284 + txt002 + SPHERE CENTER 0.167739 0.110965 0.711167 RAD 0.00617284 + txt002 + SPHERE CENTER 0.174592 0.0914184 0.697727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.190718 0.102127 0.713055 RAD 0.00617284 + txt002 + SPHERE CENTER 0.170692 0.0785895 0.6286 RAD 0.0185185 + txt002 + SPHERE CENTER 0.147549 0.0867911 0.631205 RAD 0.00617284 + txt002 + SPHERE CENTER 0.161663 0.083121 0.65113 RAD 0.00617284 + txt002 + SPHERE CENTER 0.166573 0.101845 0.635801 RAD 0.00617284 + txt002 + SPHERE CENTER 0.156579 0.0822597 0.608675 RAD 0.00617284 + txt002 + SPHERE CENTER 0.175603 0.0973138 0.613272 RAD 0.00617284 + txt002 + SPHERE CENTER 0.179722 0.074058 0.60607 RAD 0.00617284 + txt002 + SPHERE CENTER 0.151669 0.0635354 0.624003 RAD 0.00617284 + txt002 + SPHERE CENTER 0.174812 0.0553337 0.621398 RAD 0.00617284 + txt002 + SPHERE CENTER 0.165782 0.0598652 0.643928 RAD 0.00617284 + txt002 + SPHERE CENTER 0.245118 0.00869528 0.652044 RAD 0.0185185 + txt002 + SPHERE CENTER 0.257416 -0.0110117 0.660413 RAD 0.00617284 + txt002 + SPHERE CENTER 0.269325 0.0102865 0.656641 RAD 0.00617284 + txt002 + SPHERE CENTER 0.253319 0.00823377 0.675329 RAD 0.00617284 + txt002 + SPHERE CENTER 0.233209 -0.0126029 0.655816 RAD 0.00617284 + txt002 + SPHERE CENTER 0.229111 0.00664257 0.670732 RAD 0.00617284 + txt002 + SPHERE CENTER 0.22091 0.00710408 0.647447 RAD 0.00617284 + txt002 + SPHERE CENTER 0.249215 -0.0105502 0.637128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236916 0.00915679 0.628759 RAD 0.00617284 + txt002 + SPHERE CENTER 0.261124 0.010748 0.633356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.226687 0.0472866 0.591563 RAD 0.0185185 + txt002 + SPHERE CENTER 0.224935 0.025169 0.580727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.241399 0.0288111 0.598764 RAD 0.00617284 + txt002 + SPHERE CENTER 0.217281 0.0281502 0.604012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.210223 0.0436445 0.573526 RAD 0.00617284 + txt002 + SPHERE CENTER 0.202569 0.0466257 0.596811 RAD 0.00617284 + txt002 + SPHERE CENTER 0.211974 0.0657621 0.584361 RAD 0.00617284 + txt002 + SPHERE CENTER 0.234341 0.0443054 0.568278 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236092 0.066423 0.579113 RAD 0.00617284 + txt002 + SPHERE CENTER 0.250805 0.0479475 0.586315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.295616 0.0511841 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.315856 0.0555846 0.604965 RAD 0.00617284 + txt002 + SPHERE CENTER 0.296292 0.0705297 0.603077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.309941 0.0705987 0.623653 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31518 0.036239 0.620293 RAD 0.00617284 + txt002 + SPHERE CENTER 0.309265 0.051253 0.638981 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29494 0.0318385 0.633733 RAD 0.00617284 + txt002 + SPHERE CENTER 0.301531 0.03617 0.599717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.281291 0.0317696 0.613157 RAD 0.00617284 + txt002 + SPHERE CENTER 0.281968 0.0511152 0.597829 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4293 0.115031 0.544331 RAD 0.0555556 + txt002 + SPHERE CENTER 0.502308 0.102505 0.544331 RAD 0.0185185 + txt002 + SPHERE CENTER 0.524146 0.110567 0.536101 RAD 0.00617284 + txt002 + SPHERE CENTER 0.504055 0.112687 0.521905 RAD 0.00617284 + txt002 + SPHERE CENTER 0.506465 0.126738 0.542066 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522399 0.100385 0.558526 RAD 0.00617284 + txt002 + SPHERE CENTER 0.504718 0.116555 0.564491 RAD 0.00617284 + txt002 + SPHERE CENTER 0.500561 0.0923218 0.566757 RAD 0.00617284 + txt002 + SPHERE CENTER 0.519988 0.0863343 0.538366 RAD 0.00617284 + txt002 + SPHERE CENTER 0.49815 0.0782715 0.546597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.499897 0.0884544 0.524171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.474661 0.160392 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.481967 0.167697 0.484868 RAD 0.00617284 + txt002 + SPHERE CENTER 0.475831 0.144102 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.458371 0.161561 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.480797 0.183987 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.457202 0.177851 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.473492 0.176681 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.498257 0.166528 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490951 0.159222 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.492121 0.142932 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.474661 0.160392 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.492047 0.177777 0.579103 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490951 0.159222 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.473492 0.176681 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.475757 0.178947 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.457202 0.177851 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.458371 0.161561 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.493217 0.161488 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.475831 0.144102 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.492121 0.142932 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.456947 0.0571437 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.475575 0.0493251 0.595564 RAD 0.00617284 + txt002 + SPHERE CENTER 0.479825 0.06557 0.577461 RAD 0.00617284 + txt002 + SPHERE CENTER 0.467381 0.0725262 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.452697 0.0408988 0.599471 RAD 0.00617284 + txt002 + SPHERE CENTER 0.444504 0.0640999 0.601529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.434069 0.0487174 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.465141 0.0339426 0.57931 RAD 0.00617284 + txt002 + SPHERE CENTER 0.446512 0.0417612 0.565115 RAD 0.00617284 + txt002 + SPHERE CENTER 0.46939 0.0501875 0.561208 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4293 0.115031 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.439381 0.125111 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.45315 0.121421 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.435691 0.138881 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.415531 0.11872 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.411841 0.13249 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40545 0.10864 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.43299 0.101261 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.42291 0.0911807 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.44676 0.0975713 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.383939 0.0696698 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.376634 0.0623642 0.603794 RAD 0.00617284 + txt002 + SPHERE CENTER 0.400229 0.0685002 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.38277 0.0859596 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.360344 0.0635337 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.36648 0.0871292 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.36765 0.0708393 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.377803 0.0460743 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.385109 0.0533799 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.401399 0.0522103 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.456947 0.0571437 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.477623 0.0450372 0.501329 RAD 0.00617284 + txt002 + SPHERE CENTER 0.47788 0.0696413 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.475469 0.055591 0.523547 RAD 0.00617284 + txt002 + SPHERE CENTER 0.45669 0.0325396 0.505236 RAD 0.00617284 + txt002 + SPHERE CENTER 0.454536 0.0430934 0.527454 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436013 0.0446461 0.511201 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4591 0.0465898 0.485076 RAD 0.00617284 + txt002 + SPHERE CENTER 0.438424 0.0586963 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.459357 0.071194 0.487134 RAD 0.00617284 + txt002 + SPHERE CENTER 0.383939 0.0696698 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.366554 0.052284 0.509559 RAD 0.00617284 + txt002 + SPHERE CENTER 0.385109 0.0533799 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.36765 0.0708393 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.365384 0.0685739 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.36648 0.0871292 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.38277 0.0859596 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.382844 0.0511144 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.400229 0.0685002 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.401399 0.0522103 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4293 0.115031 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.41922 0.125111 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40545 0.121421 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.42291 0.138881 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.44307 0.11872 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.44676 0.13249 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.45315 0.10864 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.425611 0.101261 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.435691 0.0911807 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.411841 0.0975713 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.643951 0.172546 1.11022e-16 RAD 0.166667 + txt002 + SPHERE CENTER 0.802608 0.281471 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.824035 0.30566 -0.177765 RAD 0.0185185 + txt002 + SPHERE CENTER 0.822021 0.302088 -0.202114 RAD 0.00617284 + txt002 + SPHERE CENTER 0.821938 0.282758 -0.186751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.802598 0.298094 -0.187402 RAD 0.00617284 + txt002 + SPHERE CENTER 0.824119 0.32499 -0.193128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.804695 0.320997 -0.178416 RAD 0.00617284 + txt002 + SPHERE CENTER 0.826132 0.328563 -0.16878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.843459 0.309654 -0.192477 RAD 0.00617284 + txt002 + SPHERE CENTER 0.845472 0.313227 -0.168128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.843375 0.290324 -0.177114 RAD 0.00617284 + txt002 + SPHERE CENTER 0.787796 0.241352 -0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER 0.785699 0.218449 -0.180578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.802677 0.22345 -0.163362 RAD 0.00617284 + txt002 + SPHERE CENTER 0.778718 0.223304 -0.157397 RAD 0.00617284 + txt002 + SPHERE CENTER 0.770818 0.236351 -0.188808 RAD 0.00617284 + txt002 + SPHERE CENTER 0.763837 0.241205 -0.165627 RAD 0.00617284 + txt002 + SPHERE CENTER 0.772915 0.259253 -0.179823 RAD 0.00617284 + txt002 + SPHERE CENTER 0.794777 0.236497 -0.194773 RAD 0.00617284 + txt002 + SPHERE CENTER 0.796874 0.2594 -0.185788 RAD 0.00617284 + txt002 + SPHERE CENTER 0.811756 0.241498 -0.177557 RAD 0.00617284 + txt002 + SPHERE CENTER 0.752156 0.305221 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.741263 0.325175 -0.169507 RAD 0.00617284 + txt002 + SPHERE CENTER 0.747715 0.32493 -0.145675 RAD 0.00617284 + txt002 + SPHERE CENTER 0.765112 0.325981 -0.163165 RAD 0.00617284 + txt002 + SPHERE CENTER 0.745704 0.305466 -0.183703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.769553 0.306272 -0.17736 RAD 0.00617284 + txt002 + SPHERE CENTER 0.756597 0.285513 -0.174066 RAD 0.00617284 + txt002 + SPHERE CENTER 0.728307 0.304415 -0.166213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.7392 0.284462 -0.156576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.734759 0.304171 -0.142381 RAD 0.00617284 + txt002 + SPHERE CENTER 0.838847 0.34578 -0.117284 RAD 0.0185185 + txt002 + SPHERE CENTER 0.851488 0.360404 -0.132647 RAD 0.00617284 + txt002 + SPHERE CENTER 0.853509 0.335865 -0.1345 RAD 0.00617284 + txt002 + SPHERE CENTER 0.832518 0.347059 -0.141116 RAD 0.00617284 + txt002 + SPHERE CENTER 0.836826 0.370319 -0.115431 RAD 0.00617284 + txt002 + SPHERE CENTER 0.817857 0.356973 -0.1239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.824185 0.355695 -0.100068 RAD 0.00617284 + txt002 + SPHERE CENTER 0.857816 0.359125 -0.108814 RAD 0.00617284 + txt002 + SPHERE CENTER 0.845176 0.344501 -0.0934517 RAD 0.00617284 + txt002 + SPHERE CENTER 0.859838 0.334587 -0.110668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.766968 0.345341 -0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.768944 0.369945 -0.10004 RAD 0.00617284 + txt002 + SPHERE CENTER 0.788341 0.356172 -0.093424 RAD 0.00617284 + txt002 + SPHERE CENTER 0.780624 0.356171 -0.116879 RAD 0.00617284 + txt002 + SPHERE CENTER 0.747572 0.359113 -0.106005 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759252 0.34534 -0.122844 RAD 0.00617284 + txt002 + SPHERE CENTER 0.745596 0.33451 -0.105354 RAD 0.00617284 + txt002 + SPHERE CENTER 0.755289 0.359115 -0.0825505 RAD 0.00617284 + txt002 + SPHERE CENTER 0.753313 0.334511 -0.0818993 RAD 0.00617284 + txt002 + SPHERE CENTER 0.774685 0.345342 -0.0759343 RAD 0.00617284 + txt002 + SPHERE CENTER 0.817421 0.321591 -0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER 0.83071 0.340361 -0.0416443 RAD 0.00617284 + txt002 + SPHERE CENTER 0.840365 0.325527 -0.0588603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.822249 0.341208 -0.0648253 RAD 0.00617284 + txt002 + SPHERE CENTER 0.807766 0.336425 -0.0334138 RAD 0.00617284 + txt002 + SPHERE CENTER 0.799305 0.337272 -0.0565949 RAD 0.00617284 + txt002 + SPHERE CENTER 0.794477 0.317654 -0.0423994 RAD 0.00617284 + txt002 + SPHERE CENTER 0.825882 0.320744 -0.0274488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.812593 0.301973 -0.0364345 RAD 0.00617284 + txt002 + SPHERE CENTER 0.835537 0.30591 -0.0446649 RAD 0.00617284 + txt002 + SPHERE CENTER 0.874487 0.28191 -0.129006 RAD 0.0185185 + txt002 + SPHERE CENTER 0.891539 0.292033 -0.143718 RAD 0.00617284 + txt002 + SPHERE CENTER 0.868678 0.28812 -0.152187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.872763 0.305711 -0.135349 RAD 0.00617284 + txt002 + SPHERE CENTER 0.897348 0.285824 -0.120537 RAD 0.00617284 + txt002 + SPHERE CENTER 0.878572 0.299501 -0.112168 RAD 0.00617284 + txt002 + SPHERE CENTER 0.880296 0.275701 -0.105825 RAD 0.00617284 + txt002 + SPHERE CENTER 0.893263 0.268233 -0.137375 RAD 0.00617284 + txt002 + SPHERE CENTER 0.876212 0.25811 -0.122663 RAD 0.00617284 + txt002 + SPHERE CENTER 0.870402 0.264319 -0.145845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.853061 0.257721 -0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.87538 0.26204 -0.0527151 RAD 0.00617284 + txt002 + SPHERE CENTER 0.87108 0.266856 -0.0765474 RAD 0.00617284 + txt002 + SPHERE CENTER 0.860805 0.280934 -0.0590577 RAD 0.00617284 + txt002 + SPHERE CENTER 0.857361 0.252905 -0.0385197 RAD 0.00617284 + txt002 + SPHERE CENTER 0.842785 0.271799 -0.0448623 RAD 0.00617284 + txt002 + SPHERE CENTER 0.835041 0.248586 -0.0481565 RAD 0.00617284 + txt002 + SPHERE CENTER 0.867636 0.238827 -0.0560094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.845317 0.234508 -0.0656463 RAD 0.00617284 + txt002 + SPHERE CENTER 0.863337 0.243643 -0.0798417 RAD 0.00617284 + txt002 + SPHERE CENTER 0.838248 0.217602 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.860225 0.206363 -0.122182 RAD 0.00617284 + txt002 + SPHERE CENTER 0.858689 0.230102 -0.128798 RAD 0.00617284 + txt002 + SPHERE CENTER 0.854636 0.223536 -0.105343 RAD 0.00617284 + txt002 + SPHERE CENTER 0.839784 0.193863 -0.116217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.834196 0.211035 -0.0993785 RAD 0.00617284 + txt002 + SPHERE CENTER 0.817808 0.205101 -0.116868 RAD 0.00617284 + txt002 + SPHERE CENTER 0.843837 0.200429 -0.139672 RAD 0.00617284 + txt002 + SPHERE CENTER 0.821861 0.211667 -0.140323 RAD 0.00617284 + txt002 + SPHERE CENTER 0.842301 0.224168 -0.146288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.643951 0.172546 -0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER 0.61371 0.202787 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.61556 0.221097 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.621702 0.225035 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.635958 0.210779 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.607567 0.198849 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627965 0.188531 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.605717 0.180539 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.593312 0.213105 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.591462 0.194794 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.599454 0.217042 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.5724 0.191718 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.556122 0.208861 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.575596 0.203643 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.578791 0.215568 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.552927 0.196936 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.575596 0.203643 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.569205 0.179793 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.549732 0.185011 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.56601 0.167868 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.569205 0.179793 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.624779 0.244096 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.631486 0.266765 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.648629 0.250487 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.636704 0.247291 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.607636 0.260374 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.612854 0.240901 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.600929 0.237705 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.619561 0.26357 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.612854 0.240901 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.636704 0.247291 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.68526 0.183615 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.684921 0.190903 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665787 0.178397 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669989 0.201661 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.704395 0.196121 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.689462 0.206879 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.704733 0.188833 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.700193 0.172858 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.700531 0.165569 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.681058 0.160351 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.696329 0.224924 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.710584 0.23918 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.705059 0.216195 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.687599 0.233654 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.701855 0.24791 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.678869 0.242384 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.687599 0.233654 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.719314 0.23045 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.705059 0.216195 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.713788 0.207465 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.715501 0.153374 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.738169 0.160081 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.718696 0.165299 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.721891 0.177224 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.734974 0.148156 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.718696 0.165299 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.712305 0.141449 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.731779 0.136231 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.70911 0.129524 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.712305 0.141449 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.632882 0.131237 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.634145 0.108412 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.650927 0.115965 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627664 0.111763 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616099 0.123683 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.609618 0.127034 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.614836 0.146508 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.639363 0.127886 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.6381 0.15071 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.656145 0.135439 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.663122 0.100996 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.680265 0.0847178 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.686972 0.107387 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.675047 0.104191 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.656415 0.0783272 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.651197 0.0978007 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.639272 0.0946054 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.66834 0.0815225 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.651197 0.0978007 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.675047 0.104191 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.591572 0.120168 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.577317 0.105912 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.600302 0.111438 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.582843 0.128897 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.568587 0.114642 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.574113 0.137627 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.582843 0.128897 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.586046 0.0971825 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.600302 0.111438 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.609032 0.102708 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.594141 0.358439 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.619127 0.408291 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.625955 0.411883 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.630791 0.390369 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.607547 0.396287 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.61429 0.429805 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.595882 0.414208 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.607462 0.426212 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.637535 0.423887 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.630706 0.420295 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.642371 0.402373 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665691 0.37761 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.68332 0.389713 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665691 0.37761 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.660156 0.398265 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.68332 0.389713 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.660156 0.398265 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665691 0.37761 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.688854 0.369058 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671225 0.356956 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671225 0.356956 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.638217 0.337042 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.652948 0.344865 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.632683 0.357697 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.651954 0.357326 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.658482 0.324211 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.657489 0.336672 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.643752 0.316388 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.639211 0.324581 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.624481 0.316758 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.618946 0.337413 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.547576 0.389119 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.541008 0.410169 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.548718 0.410472 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.564748 0.405866 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539866 0.388816 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.563607 0.384513 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.546435 0.367766 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.523836 0.393422 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.530405 0.372372 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.531546 0.393725 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.566667 0.317871 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.555534 0.296626 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.572202 0.297216 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.550163 0.307914 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.549999 0.31728 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.544629 0.328569 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.561133 0.338525 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.572037 0.306582 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.583171 0.327827 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.588706 0.307172 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522591 0.339267 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.501272 0.340934 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522591 0.339267 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.517056 0.359921 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.501272 0.340934 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.517056 0.359921 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522591 0.339267 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.506807 0.320279 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.528125 0.318612 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.528125 0.318612 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.57505 0.429687 -0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER 0.58161 0.452905 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.5989 0.436077 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.586467 0.434777 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.55776 0.446515 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.562617 0.428387 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.5512 0.423296 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.570193 0.447815 -0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER 0.563633 0.424596 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.587483 0.430987 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.550064 0.379835 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.547099 0.396248 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.569716 0.388263 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.557504 0.403175 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.527447 0.387819 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.537852 0.394747 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.530412 0.371406 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539659 0.372907 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.542624 0.356494 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.562276 0.364922 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.621614 0.399007 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.637209 0.41723 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.642848 0.401533 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.624734 0.418027 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.615976 0.414703 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.603501 0.4155 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.600381 0.39648 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.634089 0.39821 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.618494 0.379986 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.639728 0.382513 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.802608 0.281471 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.858698 0.329459 0.104938 RAD 0.0185185 + txt002 + SPHERE CENTER 0.872345 0.34259 0.0890951 RAD 0.00617284 + txt002 + SPHERE CENTER 0.86421 0.32016 0.0827387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.848329 0.338969 0.0846485 RAD 0.00617284 + txt002 + SPHERE CENTER 0.866833 0.351888 0.111295 RAD 0.00617284 + txt002 + SPHERE CENTER 0.842817 0.348268 0.106848 RAD 0.00617284 + txt002 + SPHERE CENTER 0.853186 0.338757 0.127138 RAD 0.00617284 + txt002 + SPHERE CENTER 0.882715 0.333079 0.109385 RAD 0.00617284 + txt002 + SPHERE CENTER 0.869068 0.319948 0.125228 RAD 0.00617284 + txt002 + SPHERE CENTER 0.87458 0.310649 0.103028 RAD 0.00617284 + txt002 + SPHERE CENTER 0.845371 0.280879 0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER 0.849036 0.291048 0.0284303 RAD 0.00617284 + txt002 + SPHERE CENTER 0.826067 0.287867 0.0369125 RAD 0.00617284 + txt002 + SPHERE CENTER 0.840755 0.304882 0.0471312 RAD 0.00617284 + txt002 + SPHERE CENTER 0.868341 0.28406 0.0421477 RAD 0.00617284 + txt002 + SPHERE CENTER 0.86006 0.297894 0.0608487 RAD 0.00617284 + txt002 + SPHERE CENTER 0.864676 0.273891 0.0643473 RAD 0.00617284 + txt002 + SPHERE CENTER 0.853652 0.267046 0.0319289 RAD 0.00617284 + txt002 + SPHERE CENTER 0.849987 0.256877 0.0541285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.830683 0.263865 0.0404111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.798572 0.337088 0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.808673 0.346884 0.0420622 RAD 0.00617284 + txt002 + SPHERE CENTER 0.82298 0.335792 0.0588533 RAD 0.00617284 + txt002 + SPHERE CENTER 0.807762 0.322361 0.044793 RAD 0.00617284 + txt002 + SPHERE CENTER 0.784265 0.34818 0.0455609 RAD 0.00617284 + txt002 + SPHERE CENTER 0.783355 0.323657 0.0482916 RAD 0.00617284 + txt002 + SPHERE CENTER 0.774164 0.338384 0.0658506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.799483 0.361611 0.0596212 RAD 0.00617284 + txt002 + SPHERE CENTER 0.789382 0.351815 0.079911 RAD 0.00617284 + txt002 + SPHERE CENTER 0.81379 0.350519 0.0764123 RAD 0.00617284 + txt002 + SPHERE CENTER 0.815936 0.330051 0.165419 RAD 0.0185185 + txt002 + SPHERE CENTER 0.828769 0.350165 0.171776 RAD 0.00617284 + txt002 + SPHERE CENTER 0.838905 0.333232 0.156937 RAD 0.00617284 + txt002 + SPHERE CENTER 0.820583 0.347547 0.148628 RAD 0.00617284 + txt002 + SPHERE CENTER 0.805799 0.346984 0.180258 RAD 0.00617284 + txt002 + SPHERE CENTER 0.797614 0.344366 0.157111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.792966 0.32687 0.173902 RAD 0.00617284 + txt002 + SPHERE CENTER 0.824121 0.332668 0.188567 RAD 0.00617284 + txt002 + SPHERE CENTER 0.811288 0.312554 0.182211 RAD 0.00617284 + txt002 + SPHERE CENTER 0.834258 0.315735 0.173728 RAD 0.00617284 + txt002 + SPHERE CENTER 0.75581 0.33768 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.753851 0.362219 0.124743 RAD 0.00617284 + txt002 + SPHERE CENTER 0.774086 0.350765 0.133052 RAD 0.00617284 + txt002 + SPHERE CENTER 0.76987 0.352319 0.108773 RAD 0.00617284 + txt002 + SPHERE CENTER 0.735575 0.349134 0.114524 RAD 0.00617284 + txt002 + SPHERE CENTER 0.751594 0.339233 0.0985541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.737534 0.324595 0.112614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.739791 0.347581 0.138803 RAD 0.00617284 + txt002 + SPHERE CENTER 0.74175 0.323042 0.136894 RAD 0.00617284 + txt002 + SPHERE CENTER 0.760026 0.336127 0.147112 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759846 0.282063 0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER 0.756464 0.29233 0.193792 RAD 0.00617284 + txt002 + SPHERE CENTER 0.779336 0.288514 0.18531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.765125 0.305929 0.175091 RAD 0.00617284 + txt002 + SPHERE CENTER 0.736973 0.285879 0.180075 RAD 0.00617284 + txt002 + SPHERE CENTER 0.745634 0.299478 0.161374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.740355 0.275612 0.157875 RAD 0.00617284 + txt002 + SPHERE CENTER 0.751185 0.268464 0.190293 RAD 0.00617284 + txt002 + SPHERE CENTER 0.754567 0.258198 0.168094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.774058 0.264649 0.181811 RAD 0.00617284 + txt002 + SPHERE CENTER 0.862735 0.273842 0.153697 RAD 0.0185185 + txt002 + SPHERE CENTER 0.885497 0.282313 0.158144 RAD 0.00617284 + txt002 + SPHERE CENTER 0.876946 0.281455 0.134996 RAD 0.00617284 + txt002 + SPHERE CENTER 0.867718 0.29787 0.150967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.871286 0.274699 0.176845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.853506 0.290257 0.169668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.848523 0.266228 0.172398 RAD 0.00617284 + txt002 + SPHERE CENTER 0.880514 0.258284 0.160875 RAD 0.00617284 + txt002 + SPHERE CENTER 0.857752 0.249813 0.156428 RAD 0.00617284 + txt002 + SPHERE CENTER 0.871963 0.257427 0.137727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.806645 0.225855 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.818054 0.21762 0.18016 RAD 0.00617284 + txt002 + SPHERE CENTER 0.83061 0.230661 0.163369 RAD 0.00617284 + txt002 + SPHERE CENTER 0.813612 0.241754 0.177429 RAD 0.00617284 + txt002 + SPHERE CENTER 0.794089 0.212813 0.176661 RAD 0.00617284 + txt002 + SPHERE CENTER 0.789647 0.236948 0.173931 RAD 0.00617284 + txt002 + SPHERE CENTER 0.78268 0.221048 0.156372 RAD 0.00617284 + txt002 + SPHERE CENTER 0.811087 0.20172 0.162601 RAD 0.00617284 + txt002 + SPHERE CENTER 0.799677 0.209955 0.142311 RAD 0.00617284 + txt002 + SPHERE CENTER 0.823642 0.214761 0.14581 RAD 0.00617284 + txt002 + SPHERE CENTER 0.849407 0.225263 0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.873186 0.21889 0.0974792 RAD 0.00617284 + txt002 + SPHERE CENTER 0.865588 0.240865 0.0891702 RAD 0.00617284 + txt002 + SPHERE CENTER 0.866351 0.236437 0.113449 RAD 0.00617284 + txt002 + SPHERE CENTER 0.857005 0.203288 0.107698 RAD 0.00617284 + txt002 + SPHERE CENTER 0.850171 0.220835 0.123668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.833227 0.20966 0.109608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.856242 0.207715 0.0834188 RAD 0.00617284 + txt002 + SPHERE CENTER 0.832464 0.214088 0.0853287 RAD 0.00617284 + txt002 + SPHERE CENTER 0.848644 0.22969 0.0751099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.594141 0.358439 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.613592 0.428945 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.626191 0.448155 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.634643 0.42519 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.614455 0.43276 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.60514 0.45191 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.593404 0.436515 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.592541 0.4327 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.625328 0.44434 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.612729 0.42513 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.63378 0.421375 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665691 0.37761 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.68332 0.389713 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665691 0.37761 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.660156 0.398265 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.68332 0.389713 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.660156 0.398265 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665691 0.37761 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.688854 0.369058 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671225 0.356956 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671225 0.356956 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.621614 0.399007 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.625435 0.399844 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627149 0.378352 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.60511 0.38905 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.619901 0.420499 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.599576 0.409705 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.61608 0.419661 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.641939 0.409801 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.638118 0.408963 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.643653 0.388308 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.542042 0.409774 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.53788 0.433888 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.558395 0.423551 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.55574 0.426423 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.521526 0.42011 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539387 0.412646 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.525689 0.395996 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.524182 0.417238 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.528344 0.393124 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.544697 0.406901 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.550064 0.379835 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.540802 0.399304 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.54453 0.400489 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.563801 0.400119 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.546337 0.37865 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.569335 0.379464 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555599 0.35918 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.527065 0.37902 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.536327 0.359551 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.530793 0.380205 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522591 0.339267 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.501272 0.340934 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522591 0.339267 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.517056 0.359921 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.501272 0.340934 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.517056 0.359921 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522591 0.339267 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.506807 0.320279 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.528125 0.318612 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.528125 0.318612 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.586119 0.388377 0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.594185 0.405974 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.609969 0.394768 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.593017 0.410332 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.570335 0.399584 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.569167 0.403942 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.562269 0.381987 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.587286 0.384019 0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.57922 0.366422 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.60307 0.372813 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.566667 0.317871 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.567308 0.314012 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.587901 0.320398 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.569787 0.336891 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.546074 0.311485 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.548554 0.334364 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.545434 0.315344 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.564188 0.294991 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.563547 0.29885 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.584781 0.301377 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.638217 0.337042 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.659244 0.341809 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.65787 0.345471 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.645657 0.360383 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.639592 0.33338 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.626005 0.351955 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.618565 0.328614 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.651804 0.318468 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.630777 0.313702 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.65043 0.32213 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.643951 0.172546 0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER 0.674191 0.202787 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.690652 0.219248 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.695267 0.206403 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.677807 0.223862 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669577 0.215632 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.656732 0.220246 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.653116 0.199171 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.687036 0.198172 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.670575 0.181711 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.691651 0.185327 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.715501 0.191718 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.733129 0.203821 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.715501 0.191718 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.709966 0.212373 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.733129 0.203821 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.709966 0.212373 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.715501 0.191718 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.738664 0.183166 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.721035 0.171063 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.721035 0.171063 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.663122 0.244096 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.675225 0.261725 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.683777 0.238562 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.663122 0.244096 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.65457 0.267259 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.642468 0.249631 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.642468 0.249631 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.675225 0.261725 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.663122 0.244096 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.683777 0.238562 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.602641 0.183615 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.600215 0.197046 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.622701 0.191021 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.609032 0.207465 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.580155 0.18964 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.588972 0.200059 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.582581 0.176209 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.593824 0.173196 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.596251 0.159765 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.61631 0.167171 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.591572 0.224924 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.587397 0.24926 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.606693 0.240045 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.606693 0.240045 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.572277 0.23414 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.591572 0.224924 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.576452 0.209804 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.572277 0.23414 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.576452 0.209804 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.591572 0.224924 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.5724 0.153374 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.551082 0.155041 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.5724 0.153374 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.566866 0.174029 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.551082 0.155041 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.566866 0.174029 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.5724 0.153374 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.556617 0.134387 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.577935 0.13272 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.577935 0.13272 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.655019 0.131237 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.668451 0.12881 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.678869 0.137627 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.662426 0.151296 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.644601 0.12242 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.638576 0.144906 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.631169 0.124846 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.661044 0.108751 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.647613 0.111177 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671463 0.117567 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.624779 0.100996 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.626446 0.0796777 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.645433 0.0954616 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.624779 0.100996 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.605791 0.0852121 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.604124 0.10653 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.604124 0.10653 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.626446 0.0796777 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.624779 0.100996 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.645433 0.0954616 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.696329 0.120168 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.720665 0.115992 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.711449 0.135288 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.711449 0.135288 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.705544 0.100872 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.696329 0.120168 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.681209 0.105047 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.705544 0.100872 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.681209 0.105047 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.696329 0.120168 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.852418 0.0955788 1.89979e-16 RAD 0.0555556 + txt002 + SPHERE CENTER 0.922609 0.11107 -0.0178949 RAD 0.0185185 + txt002 + SPHERE CENTER 0.937225 0.122151 -0.0344251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.916553 0.11086 -0.0418311 RAD 0.00617284 + txt002 + SPHERE CENTER 0.915202 0.131874 -0.0289382 RAD 0.00617284 + txt002 + SPHERE CENTER 0.943281 0.12236 -0.0104889 RAD 0.00617284 + txt002 + SPHERE CENTER 0.921258 0.132084 -0.00500196 RAD 0.00617284 + txt002 + SPHERE CENTER 0.928665 0.111279 0.00604126 RAD 0.00617284 + txt002 + SPHERE CENTER 0.944632 0.101346 -0.0233819 RAD 0.00617284 + txt002 + SPHERE CENTER 0.930016 0.0902645 -0.00685171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.92396 0.090055 -0.0307879 RAD 0.00617284 + txt002 + SPHERE CENTER 0.867231 0.135698 -0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER 0.873196 0.134634 -0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER 0.882112 0.117797 -0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.858152 0.11765 -0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.858315 0.152536 -0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.843271 0.135552 -0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.852349 0.1536 -0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER 0.882275 0.152682 -0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.876309 0.153747 -0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER 0.89119 0.135845 -0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER 0.877966 0.164775 0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER 0.890926 0.182656 -0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER 0.897331 0.159019 -0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER 0.876622 0.167676 -0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER 0.871561 0.188412 0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER 0.857256 0.173431 -0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.8586 0.17053 0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.89227 0.179755 0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER 0.87931 0.161874 0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.898675 0.156118 0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.907797 0.0709499 0.0425863 RAD 0.0185185 + txt002 + SPHERE CENTER 0.930963 0.0752104 0.0499923 RAD 0.00617284 + txt002 + SPHERE CENTER 0.924191 0.0806562 0.0268805 RAD 0.00617284 + txt002 + SPHERE CENTER 0.915684 0.0941344 0.0457385 RAD 0.00617284 + txt002 + SPHERE CENTER 0.914568 0.0655041 0.065698 RAD 0.00617284 + txt002 + SPHERE CENTER 0.899289 0.0844281 0.0614442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.891402 0.0612436 0.058292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.923076 0.0520258 0.0468401 RAD 0.00617284 + txt002 + SPHERE CENTER 0.89991 0.0477654 0.0394341 RAD 0.00617284 + txt002 + SPHERE CENTER 0.916304 0.0574717 0.0237283 RAD 0.00617284 + txt002 + SPHERE CENTER 0.863153 0.124655 0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER 0.875744 0.141535 0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER 0.88655 0.129819 0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.868763 0.146389 0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER 0.852347 0.136371 0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.845366 0.141225 0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER 0.839756 0.119492 0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER 0.870135 0.119801 0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER 0.857544 0.102922 0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER 0.880941 0.108085 0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER 0.837606 0.0554592 0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER 0.842832 0.0523913 0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER 0.86055 0.0593957 0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.842434 0.0750766 0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.819888 0.0484547 0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.81949 0.07114 0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.814662 0.0515226 0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER 0.838004 0.0327739 0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.832778 0.0358417 0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER 0.855722 0.0397783 0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER 0.897062 0.0418734 -0.0246914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.920407 0.0359958 -0.0301783 RAD 0.00617284 + txt002 + SPHERE CENTER 0.912106 0.0588574 -0.0344321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.915603 0.0511067 -0.0112511 RAD 0.00617284 + txt002 + SPHERE CENTER 0.905363 0.0190117 -0.0204376 RAD 0.00617284 + txt002 + SPHERE CENTER 0.900559 0.0341227 -0.00151032 RAD 0.00617284 + txt002 + SPHERE CENTER 0.882018 0.0248894 -0.0149506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.901866 0.0267625 -0.0436186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.878521 0.0326401 -0.0381316 RAD 0.00617284 + txt002 + SPHERE CENTER 0.893565 0.0496241 -0.0478724 RAD 0.00617284 + txt002 + SPHERE CENTER 0.826871 0.0263827 -0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER 0.825102 0.00436945 0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER 0.84533 0.018173 0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER 0.823964 0.025051 0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER 0.806642 0.0125791 -0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER 0.805505 0.0332607 0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.808411 0.0345923 -0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.828008 0.00570109 -0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER 0.829777 0.0277143 -0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.848237 0.0195047 -0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.841683 0.0665023 -0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER 0.840284 0.0454909 -0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER 0.856111 0.0473735 -0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.831823 0.0463379 -0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER 0.825856 0.0646197 -0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.817395 0.0654667 -0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER 0.827255 0.0856311 -0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER 0.850144 0.0656554 -0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER 0.851543 0.0866667 -0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER 0.865971 0.0675379 -0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER 0.69376 -0.0133465 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.740325 -0.0440268 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.762259 -0.0417568 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759495 -0.0345526 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.748937 -0.0216407 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.743089 -0.051231 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.729767 -0.0311149 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.721155 -0.053501 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.753646 -0.0641429 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.731712 -0.0664129 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.750882 -0.0569387 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.76531 0.0058253 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.782939 0.0179281 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.76531 0.0058253 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759776 0.02648 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.782939 0.0179281 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759776 0.02648 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.76531 0.0058253 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.788473 -0.00272662 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.770845 -0.0148294 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.770845 -0.0148294 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.721234 0.0272215 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.736829 0.0454452 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.742467 0.0297485 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.724354 0.046242 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.715595 0.0429182 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.70312 0.043715 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.7 0.0246945 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.733709 0.0264247 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.718114 0.00820099 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.739347 0.010728 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.668775 -0.0631985 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.669983 -0.0708196 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.690113 -0.0618185 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671462 -0.0467378 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.648644 -0.0721997 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.650123 -0.0481178 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.647436 -0.0645786 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.667296 -0.0872804 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.666087 -0.0796593 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.687426 -0.0782793 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.649684 0.00804971 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.646718 0.0244627 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669336 0.016478 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.657124 0.0313903 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627066 0.0160343 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.637471 0.022962 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.630031 -0.000378614 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.639278 0.00112207 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.642244 -0.0152909 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.661896 -0.00686255 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.62221 -0.0325183 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.600892 -0.0308513 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.62221 -0.0325183 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616676 -0.0118635 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.600892 -0.0308513 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616676 -0.0118635 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.62221 -0.0325183 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.606426 -0.051506 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627745 -0.053173 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627745 -0.053173 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.712851 -0.0845947 0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER 0.730141 -0.101422 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.736701 -0.0782041 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.725284 -0.0832945 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.706291 -0.107813 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.701434 -0.0896851 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.689001 -0.0909853 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.717709 -0.102723 0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER 0.700418 -0.0858949 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.724268 -0.0795043 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.666287 -0.0539145 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.655153 -0.0751594 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671821 -0.0745692 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.649783 -0.0638711 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.649619 -0.0545047 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.644249 -0.0432164 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.660752 -0.0332597 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671657 -0.0652028 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.682791 -0.0439578 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.688325 -0.0646126 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.737837 -0.0347427 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.752567 -0.0269197 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.732303 -0.014088 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.751574 -0.0144587 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.758102 -0.0475745 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.757108 -0.0351134 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.743371 -0.0553974 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.73883 -0.0472037 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.7241 -0.0550267 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.718566 -0.0343719 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.69376 -0.0133465 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.745859 -0.0646815 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.770032 -0.0684873 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759394 -0.0481266 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.762305 -0.0507391 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.756497 -0.0850422 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.74877 -0.067294 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.732325 -0.0812364 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.753586 -0.0824297 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.729413 -0.0786239 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.742948 -0.062069 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.76531 0.0058253 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.782939 0.0179281 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.76531 0.0058253 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759776 0.02648 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.782939 0.0179281 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759776 0.02648 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.76531 0.0058253 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.788473 -0.00272662 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.770845 -0.0148294 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.770845 -0.0148294 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.737837 -0.0347427 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.758864 -0.0299763 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.757489 -0.0263144 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.745277 -0.0114021 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.739212 -0.0384047 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.725625 -0.0198304 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.718185 -0.043171 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.751424 -0.0533169 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.730397 -0.0580833 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.750049 -0.0496549 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.674309 -0.0838533 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.675276 -0.106805 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.694308 -0.091423 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.673094 -0.0875713 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.655278 -0.0992356 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.653095 -0.0800016 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.65431 -0.0762835 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.676491 -0.103087 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.675524 -0.0801352 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.695522 -0.0877049 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.666287 -0.0539145 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.666927 -0.0577732 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.68752 -0.0513875 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669407 -0.034894 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.645694 -0.0603001 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.648173 -0.0374209 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.645053 -0.0564414 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.663807 -0.0767937 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.663167 -0.072935 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.6844 -0.070408 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.62221 -0.0325183 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.600892 -0.0308513 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.62221 -0.0325183 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616676 -0.0118635 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.600892 -0.0308513 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616676 -0.0118635 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.62221 -0.0325183 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.606426 -0.051506 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627745 -0.053173 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627745 -0.053173 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.701782 -0.0432853 -0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.717566 -0.0544915 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.725632 -0.0368947 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.718734 -0.0588496 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.693716 -0.0608821 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.694884 -0.0652402 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.677932 -0.0496759 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.700615 -0.0389272 -0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.684831 -0.027721 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.708681 -0.0213304 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.649684 0.00804971 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.640422 0.0275193 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.644149 0.0287044 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.66342 0.0283337 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.645956 0.00686453 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.668955 0.00767898 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.655218 -0.012605 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.626685 0.00723527 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.635947 -0.0122343 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.630413 0.00842045 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.721234 0.0272215 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.725055 0.0280589 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.726768 0.00656677 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.70473 0.0172649 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.71952 0.0487136 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.699195 0.0379196 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.715699 0.0478762 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.741558 0.0380155 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.737738 0.0371781 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.743272 0.0165234 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.172546 0.643951 1.11022e-16 RAD 0.166667 + txt002 + SPHERE CENTER 0.281471 0.802608 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.30566 0.824035 -0.177765 RAD 0.0185185 + txt002 + SPHERE CENTER 0.302088 0.822021 -0.202114 RAD 0.00617284 + txt002 + SPHERE CENTER 0.298094 0.802598 -0.187402 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282758 0.821938 -0.186751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.309654 0.843459 -0.192477 RAD 0.00617284 + txt002 + SPHERE CENTER 0.290324 0.843375 -0.177114 RAD 0.00617284 + txt002 + SPHERE CENTER 0.313227 0.845472 -0.168128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32499 0.824119 -0.193128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.328563 0.826132 -0.16878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.320997 0.804695 -0.178416 RAD 0.00617284 + txt002 + SPHERE CENTER 0.305221 0.752156 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.325175 0.741263 -0.169507 RAD 0.00617284 + txt002 + SPHERE CENTER 0.325981 0.765112 -0.163165 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32493 0.747715 -0.145675 RAD 0.00617284 + txt002 + SPHERE CENTER 0.304415 0.728307 -0.166213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.304171 0.734759 -0.142381 RAD 0.00617284 + txt002 + SPHERE CENTER 0.284462 0.7392 -0.156576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.305466 0.745704 -0.183703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.285513 0.756597 -0.174066 RAD 0.00617284 + txt002 + SPHERE CENTER 0.306272 0.769553 -0.17736 RAD 0.00617284 + txt002 + SPHERE CENTER 0.241352 0.787796 -0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER 0.218449 0.785699 -0.180578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.223304 0.778718 -0.157397 RAD 0.00617284 + txt002 + SPHERE CENTER 0.22345 0.802677 -0.163362 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236497 0.794777 -0.194773 RAD 0.00617284 + txt002 + SPHERE CENTER 0.241498 0.811756 -0.177557 RAD 0.00617284 + txt002 + SPHERE CENTER 0.2594 0.796874 -0.185788 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236351 0.770818 -0.188808 RAD 0.00617284 + txt002 + SPHERE CENTER 0.259253 0.772915 -0.179823 RAD 0.00617284 + txt002 + SPHERE CENTER 0.241205 0.763837 -0.165627 RAD 0.00617284 + txt002 + SPHERE CENTER 0.28191 0.874487 -0.129006 RAD 0.0185185 + txt002 + SPHERE CENTER 0.292033 0.891539 -0.143718 RAD 0.00617284 + txt002 + SPHERE CENTER 0.305711 0.872763 -0.135349 RAD 0.00617284 + txt002 + SPHERE CENTER 0.28812 0.868678 -0.152187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.268233 0.893263 -0.137375 RAD 0.00617284 + txt002 + SPHERE CENTER 0.264319 0.870402 -0.145845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.25811 0.876212 -0.122663 RAD 0.00617284 + txt002 + SPHERE CENTER 0.285824 0.897348 -0.120537 RAD 0.00617284 + txt002 + SPHERE CENTER 0.275701 0.880296 -0.105825 RAD 0.00617284 + txt002 + SPHERE CENTER 0.299501 0.878572 -0.112168 RAD 0.00617284 + txt002 + SPHERE CENTER 0.217602 0.838248 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.206363 0.860225 -0.122182 RAD 0.00617284 + txt002 + SPHERE CENTER 0.223536 0.854636 -0.105343 RAD 0.00617284 + txt002 + SPHERE CENTER 0.230102 0.858689 -0.128798 RAD 0.00617284 + txt002 + SPHERE CENTER 0.200429 0.843837 -0.139672 RAD 0.00617284 + txt002 + SPHERE CENTER 0.224168 0.842301 -0.146288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.211667 0.821861 -0.140323 RAD 0.00617284 + txt002 + SPHERE CENTER 0.193863 0.839784 -0.116217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.205101 0.817808 -0.116868 RAD 0.00617284 + txt002 + SPHERE CENTER 0.211035 0.834196 -0.0993785 RAD 0.00617284 + txt002 + SPHERE CENTER 0.257721 0.853061 -0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.26204 0.87538 -0.0527151 RAD 0.00617284 + txt002 + SPHERE CENTER 0.280934 0.860805 -0.0590577 RAD 0.00617284 + txt002 + SPHERE CENTER 0.266856 0.87108 -0.0765474 RAD 0.00617284 + txt002 + SPHERE CENTER 0.238827 0.867636 -0.0560094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.243643 0.863337 -0.0798417 RAD 0.00617284 + txt002 + SPHERE CENTER 0.234508 0.845317 -0.0656463 RAD 0.00617284 + txt002 + SPHERE CENTER 0.252905 0.857361 -0.0385197 RAD 0.00617284 + txt002 + SPHERE CENTER 0.248586 0.835041 -0.0481565 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271799 0.842785 -0.0448623 RAD 0.00617284 + txt002 + SPHERE CENTER 0.34578 0.838847 -0.117284 RAD 0.0185185 + txt002 + SPHERE CENTER 0.360404 0.851488 -0.132647 RAD 0.00617284 + txt002 + SPHERE CENTER 0.347059 0.832518 -0.141116 RAD 0.00617284 + txt002 + SPHERE CENTER 0.335865 0.853509 -0.1345 RAD 0.00617284 + txt002 + SPHERE CENTER 0.359125 0.857816 -0.108814 RAD 0.00617284 + txt002 + SPHERE CENTER 0.334587 0.859838 -0.110668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.344501 0.845176 -0.0934517 RAD 0.00617284 + txt002 + SPHERE CENTER 0.370319 0.836826 -0.115431 RAD 0.00617284 + txt002 + SPHERE CENTER 0.355695 0.824185 -0.100068 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356973 0.817857 -0.1239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.321591 0.817421 -0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER 0.340361 0.83071 -0.0416443 RAD 0.00617284 + txt002 + SPHERE CENTER 0.341208 0.822249 -0.0648253 RAD 0.00617284 + txt002 + SPHERE CENTER 0.325527 0.840365 -0.0588603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.320744 0.825882 -0.0274488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.30591 0.835537 -0.0446649 RAD 0.00617284 + txt002 + SPHERE CENTER 0.301973 0.812593 -0.0364345 RAD 0.00617284 + txt002 + SPHERE CENTER 0.336425 0.807766 -0.0334138 RAD 0.00617284 + txt002 + SPHERE CENTER 0.317654 0.794477 -0.0423994 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337272 0.799305 -0.0565949 RAD 0.00617284 + txt002 + SPHERE CENTER 0.345341 0.766968 -0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.369945 0.768944 -0.10004 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356171 0.780624 -0.116879 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356172 0.788341 -0.093424 RAD 0.00617284 + txt002 + SPHERE CENTER 0.359115 0.755289 -0.0825505 RAD 0.00617284 + txt002 + SPHERE CENTER 0.345342 0.774685 -0.0759343 RAD 0.00617284 + txt002 + SPHERE CENTER 0.334511 0.753313 -0.0818993 RAD 0.00617284 + txt002 + SPHERE CENTER 0.359113 0.747572 -0.106005 RAD 0.00617284 + txt002 + SPHERE CENTER 0.33451 0.745596 -0.105354 RAD 0.00617284 + txt002 + SPHERE CENTER 0.34534 0.759252 -0.122844 RAD 0.00617284 + txt002 + SPHERE CENTER 0.358439 0.594141 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.408291 0.619127 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.411883 0.625955 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396287 0.607547 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.390369 0.630791 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.423887 0.637535 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.402373 0.642371 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.420295 0.630706 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.429805 0.61429 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.426212 0.607462 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.414208 0.595882 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337042 0.638217 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.344865 0.652948 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.357326 0.651954 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.357697 0.632683 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.324581 0.639211 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337413 0.618946 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.316758 0.624481 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.324211 0.658482 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.316388 0.643752 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.336672 0.657489 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37761 0.665691 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.389713 0.68332 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.398265 0.660156 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37761 0.665691 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.369058 0.688854 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356956 0.671225 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356956 0.671225 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.389713 0.68332 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37761 0.665691 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.398265 0.660156 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.429687 0.57505 -0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER 0.452905 0.58161 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.434777 0.586467 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436077 0.5989 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.447815 0.570193 -0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER 0.430987 0.587483 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.424596 0.563633 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.446515 0.55776 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.423296 0.5512 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.428387 0.562617 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399007 0.621614 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.41723 0.637209 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.418027 0.624734 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.401533 0.642848 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.39821 0.634089 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.382513 0.639728 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.379986 0.618494 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.414703 0.615976 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.39648 0.600381 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4155 0.603501 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.379835 0.550064 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.396248 0.547099 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.403175 0.557504 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.388263 0.569716 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.372907 0.539659 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.364922 0.562276 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356494 0.542624 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.387819 0.527447 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.371406 0.530412 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.394747 0.537852 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.389119 0.547576 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.410169 0.541008 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.405866 0.564748 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.410472 0.548718 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.393422 0.523836 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.393725 0.531546 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.372372 0.530405 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.388816 0.539866 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367766 0.546435 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.384513 0.563607 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.339267 0.522591 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.340934 0.501272 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.359921 0.517056 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.339267 0.522591 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.320279 0.506807 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318612 0.528125 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318612 0.528125 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.340934 0.501272 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.339267 0.522591 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.359921 0.517056 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.317871 0.566667 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.296626 0.555534 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307914 0.550163 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.297216 0.572202 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.306582 0.572037 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307172 0.588706 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.327827 0.583171 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31728 0.549999 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.338525 0.561133 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.328569 0.544629 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.172546 0.643951 -0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER 0.142305 0.674191 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.144155 0.692502 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.150298 0.696439 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.164554 0.682184 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.136163 0.670254 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.156561 0.659936 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.134313 0.651943 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.121907 0.684509 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.120057 0.666199 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.12805 0.688447 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.100996 0.663122 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0847178 0.680265 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.104191 0.675047 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.107387 0.686972 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0815225 0.66834 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.104191 0.675047 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0978007 0.651197 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0783272 0.656415 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0946054 0.639272 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0978007 0.651197 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.153374 0.715501 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.160081 0.738169 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.177224 0.721891 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.165299 0.718696 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.136231 0.731779 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.141449 0.712305 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.129524 0.70911 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.148156 0.734974 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.141449 0.712305 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.165299 0.718696 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.213855 0.655019 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.213517 0.662308 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.194382 0.649801 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.198584 0.673065 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.23299 0.667526 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.218058 0.678283 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.233329 0.660237 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.228788 0.644262 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.229127 0.636974 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.209653 0.631756 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.224924 0.696329 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.23918 0.710584 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.233654 0.687599 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.216195 0.705059 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.23045 0.719314 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.207465 0.713788 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.216195 0.705059 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.24791 0.701855 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.233654 0.687599 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.242384 0.678869 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.244096 0.624779 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.266765 0.631486 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.247291 0.636704 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.250487 0.648629 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.26357 0.619561 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.247291 0.636704 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.240901 0.612854 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.260374 0.607636 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.237705 0.600929 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.240901 0.612854 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.161477 0.602641 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.162741 0.579817 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.179523 0.58737 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.156259 0.583168 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.144695 0.595088 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.138214 0.598439 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.143431 0.617912 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.167958 0.59929 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.166695 0.622115 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.184741 0.606843 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.191718 0.5724 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.208861 0.556122 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.215568 0.578791 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.203643 0.575596 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.185011 0.549732 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.179793 0.569205 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.167868 0.56601 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.196936 0.552927 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.179793 0.569205 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.203643 0.575596 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.120168 0.591572 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.105912 0.577317 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.128897 0.582843 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.111438 0.600302 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0971825 0.586046 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.102708 0.609032 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.111438 0.600302 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.114642 0.568587 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.128897 0.582843 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.137627 0.574113 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0955788 0.852418 9.1293e-17 RAD 0.0555556 + txt002 + SPHERE CENTER 0.11107 0.922609 -0.0178949 RAD 0.0185185 + txt002 + SPHERE CENTER 0.122151 0.937225 -0.0344251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.131874 0.915202 -0.0289382 RAD 0.00617284 + txt002 + SPHERE CENTER 0.11086 0.916553 -0.0418311 RAD 0.00617284 + txt002 + SPHERE CENTER 0.101346 0.944632 -0.0233819 RAD 0.00617284 + txt002 + SPHERE CENTER 0.090055 0.92396 -0.0307879 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0902645 0.930016 -0.00685171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.12236 0.943281 -0.0104889 RAD 0.00617284 + txt002 + SPHERE CENTER 0.111279 0.928665 0.00604126 RAD 0.00617284 + txt002 + SPHERE CENTER 0.132084 0.921258 -0.00500196 RAD 0.00617284 + txt002 + SPHERE CENTER 0.164775 0.877966 0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER 0.182656 0.890926 -0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER 0.167676 0.876622 -0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER 0.159019 0.897331 -0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER 0.179755 0.89227 0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER 0.156118 0.898675 0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.161874 0.87931 0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.188412 0.871561 0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER 0.17053 0.8586 0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.173431 0.857256 -0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.135698 0.867231 -0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER 0.134634 0.873196 -0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER 0.11765 0.858152 -0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.117797 0.882112 -0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.152682 0.882275 -0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.135845 0.89119 -0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER 0.153747 0.876309 -0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER 0.152536 0.858315 -0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.1536 0.852349 -0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER 0.135552 0.843271 -0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0418734 0.897062 -0.0246914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0359958 0.920407 -0.0301783 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0511067 0.915603 -0.0112511 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0588574 0.912106 -0.0344321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0267625 0.901866 -0.0436186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0496241 0.893565 -0.0478724 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0326401 0.878521 -0.0381316 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0190117 0.905363 -0.0204376 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0248894 0.882018 -0.0149506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0341227 0.900559 -0.00151032 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0665023 0.841683 -0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0454909 0.840284 -0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0463379 0.831823 -0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0473735 0.856111 -0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0656554 0.850144 -0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0675379 0.865971 -0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0866667 0.851543 -0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0646197 0.825856 -0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0856311 0.827255 -0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0654667 0.817395 -0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0263827 0.826871 -0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER 0.00436945 0.825102 0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER 0.025051 0.823964 0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER 0.018173 0.84533 0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00570109 0.828008 -0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0195047 0.848237 -0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0277143 0.829777 -0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0125791 0.806642 -0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0345923 0.808411 -0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0332607 0.805505 0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0709499 0.907797 0.0425863 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0752104 0.930963 0.0499923 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0941344 0.915684 0.0457385 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0806562 0.924191 0.0268805 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0520258 0.923076 0.0468401 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0574717 0.916304 0.0237283 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0477654 0.89991 0.0394341 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0655041 0.914568 0.065698 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0612436 0.891402 0.058292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0844281 0.899289 0.0614442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0554592 0.837606 0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0523913 0.842832 0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0750766 0.842434 0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0593957 0.86055 0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0327739 0.838004 0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0397783 0.855722 0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0358417 0.832778 0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0484547 0.819888 0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0515226 0.814662 0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER 0.07114 0.81949 0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.124655 0.863153 0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER 0.141535 0.875744 0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER 0.146389 0.868763 0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER 0.129819 0.88655 0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.119801 0.870135 0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER 0.108085 0.880941 0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER 0.102922 0.857544 0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER 0.136371 0.852347 0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.119492 0.839756 0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER 0.141225 0.845366 0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0133465 0.69376 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.0646815 0.745859 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0684873 0.770032 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0507391 0.762305 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0481266 0.759394 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0824297 0.753586 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.062069 0.742948 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0786239 0.729413 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0850422 0.756497 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0812364 0.732325 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.067294 0.74877 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0347427 0.737837 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0299763 0.758864 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0114021 0.745277 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0263144 0.757489 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0533169 0.751424 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0496549 0.750049 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0580833 0.730397 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0384047 0.739212 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.043171 0.718185 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0198304 0.725625 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0058253 0.76531 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0179281 0.782939 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.02648 0.759776 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0058253 0.76531 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00272662 0.788473 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0148294 0.770845 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0148294 0.770845 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0179281 0.782939 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0058253 0.76531 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.02648 0.759776 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0432853 0.701782 -0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0544915 0.717566 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0588496 0.718734 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0368947 0.725632 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0389272 0.700615 -0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0213304 0.708681 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.027721 0.684831 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0608821 0.693716 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0496759 0.677932 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0652402 0.694884 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0272215 0.721234 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0280589 0.725055 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0172649 0.70473 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00656677 0.726768 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0380155 0.741558 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0165234 0.743272 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0371781 0.737738 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0487136 0.71952 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0478762 0.715699 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0379196 0.699195 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00804971 0.649684 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0275193 0.640422 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0283337 0.66342 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0287044 0.644149 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00723527 0.626685 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00842045 0.630413 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0122343 0.635947 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00686453 0.645956 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.012605 0.655218 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00767898 0.668955 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0838533 0.674309 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.106805 0.675276 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0875713 0.673094 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.091423 0.694308 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.103087 0.676491 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0877049 0.695522 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0801352 0.675524 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0992356 0.655278 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0762835 0.65431 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0800016 0.653095 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0325183 0.62221 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0308513 0.600892 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0118635 0.616676 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0325183 0.62221 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.051506 0.606426 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.053173 0.627745 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.053173 0.627745 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0308513 0.600892 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0325183 0.62221 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0118635 0.616676 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0539145 0.666287 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0577732 0.666927 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.034894 0.669407 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0513875 0.68752 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0767937 0.663807 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.070408 0.6844 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.072935 0.663167 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0603001 0.645694 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0564414 0.645053 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0374209 0.648173 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0133465 0.69376 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.0440268 0.740325 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0417568 0.762259 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0216407 0.748937 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0345526 0.759495 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0641429 0.753646 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0569387 0.750882 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0664129 0.731712 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.051231 0.743089 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.053501 0.721155 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0311149 0.729767 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0272215 0.721234 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0454452 0.736829 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.046242 0.724354 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0297485 0.742467 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0264247 0.733709 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.010728 0.739347 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00820099 0.718114 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0429182 0.715595 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0246945 0.7 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.043715 0.70312 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0058253 0.76531 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0179281 0.782939 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.02648 0.759776 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0058253 0.76531 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00272662 0.788473 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0148294 0.770845 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0148294 0.770845 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0179281 0.782939 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0058253 0.76531 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.02648 0.759776 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0845947 0.712851 0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER -0.101422 0.730141 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0832945 0.725284 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0782041 0.736701 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.102723 0.717709 0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0795043 0.724268 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0858949 0.700418 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.107813 0.706291 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0909853 0.689001 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0896851 0.701434 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0347427 0.737837 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0269197 0.752567 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0144587 0.751574 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.014088 0.732303 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0472037 0.73883 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0343719 0.718566 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0550267 0.7241 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0475745 0.758102 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0553974 0.743371 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0351134 0.757108 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0539145 0.666287 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0751594 0.655153 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0638711 0.649783 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0745692 0.671821 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0652028 0.671657 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0646126 0.688325 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0439578 0.682791 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0545047 0.649619 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0332597 0.660752 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0432164 0.644249 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0631985 0.668775 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0708196 0.669983 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0467378 0.671462 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0618185 0.690113 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0872804 0.667296 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0782793 0.687426 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0796593 0.666087 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0721997 0.648644 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0645786 0.647436 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0481178 0.650123 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0325183 0.62221 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0308513 0.600892 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0118635 0.616676 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0325183 0.62221 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.051506 0.606426 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.053173 0.627745 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.053173 0.627745 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0308513 0.600892 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0325183 0.62221 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0118635 0.616676 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00804971 0.649684 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0244627 0.646718 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0313903 0.657124 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.016478 0.669336 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00112207 0.639278 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00686255 0.661896 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0152909 0.642244 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0160343 0.627066 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.000378614 0.630031 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.022962 0.637471 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.281471 0.802608 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.329459 0.858698 0.104938 RAD 0.0185185 + txt002 + SPHERE CENTER 0.34259 0.872345 0.0890951 RAD 0.00617284 + txt002 + SPHERE CENTER 0.338969 0.848329 0.0846485 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32016 0.86421 0.0827387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.333079 0.882715 0.109385 RAD 0.00617284 + txt002 + SPHERE CENTER 0.310649 0.87458 0.103028 RAD 0.00617284 + txt002 + SPHERE CENTER 0.319948 0.869068 0.125228 RAD 0.00617284 + txt002 + SPHERE CENTER 0.351888 0.866833 0.111295 RAD 0.00617284 + txt002 + SPHERE CENTER 0.338757 0.853186 0.127138 RAD 0.00617284 + txt002 + SPHERE CENTER 0.348268 0.842817 0.106848 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337088 0.798572 0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.346884 0.808673 0.0420622 RAD 0.00617284 + txt002 + SPHERE CENTER 0.322361 0.807762 0.044793 RAD 0.00617284 + txt002 + SPHERE CENTER 0.335792 0.82298 0.0588533 RAD 0.00617284 + txt002 + SPHERE CENTER 0.361611 0.799483 0.0596212 RAD 0.00617284 + txt002 + SPHERE CENTER 0.350519 0.81379 0.0764123 RAD 0.00617284 + txt002 + SPHERE CENTER 0.351815 0.789382 0.079911 RAD 0.00617284 + txt002 + SPHERE CENTER 0.34818 0.784265 0.0455609 RAD 0.00617284 + txt002 + SPHERE CENTER 0.338384 0.774164 0.0658506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.323657 0.783355 0.0482916 RAD 0.00617284 + txt002 + SPHERE CENTER 0.280879 0.845371 0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER 0.291048 0.849036 0.0284303 RAD 0.00617284 + txt002 + SPHERE CENTER 0.304882 0.840755 0.0471312 RAD 0.00617284 + txt002 + SPHERE CENTER 0.287867 0.826067 0.0369125 RAD 0.00617284 + txt002 + SPHERE CENTER 0.267046 0.853652 0.0319289 RAD 0.00617284 + txt002 + SPHERE CENTER 0.263865 0.830683 0.0404111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.256877 0.849987 0.0541285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.28406 0.868341 0.0421477 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273891 0.864676 0.0643473 RAD 0.00617284 + txt002 + SPHERE CENTER 0.297894 0.86006 0.0608487 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273842 0.862735 0.153697 RAD 0.0185185 + txt002 + SPHERE CENTER 0.282313 0.885497 0.158144 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29787 0.867718 0.150967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.281455 0.876946 0.134996 RAD 0.00617284 + txt002 + SPHERE CENTER 0.258284 0.880514 0.160875 RAD 0.00617284 + txt002 + SPHERE CENTER 0.257427 0.871963 0.137727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.249813 0.857752 0.156428 RAD 0.00617284 + txt002 + SPHERE CENTER 0.274699 0.871286 0.176845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.266228 0.848523 0.172398 RAD 0.00617284 + txt002 + SPHERE CENTER 0.290257 0.853506 0.169668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.225263 0.849407 0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.21889 0.873186 0.0974792 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236437 0.866351 0.113449 RAD 0.00617284 + txt002 + SPHERE CENTER 0.240865 0.865588 0.0891702 RAD 0.00617284 + txt002 + SPHERE CENTER 0.207715 0.856242 0.0834188 RAD 0.00617284 + txt002 + SPHERE CENTER 0.22969 0.848644 0.0751099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.214088 0.832464 0.0853287 RAD 0.00617284 + txt002 + SPHERE CENTER 0.203288 0.857005 0.107698 RAD 0.00617284 + txt002 + SPHERE CENTER 0.20966 0.833227 0.109608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.220835 0.850171 0.123668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.225855 0.806645 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.21762 0.818054 0.18016 RAD 0.00617284 + txt002 + SPHERE CENTER 0.241754 0.813612 0.177429 RAD 0.00617284 + txt002 + SPHERE CENTER 0.230661 0.83061 0.163369 RAD 0.00617284 + txt002 + SPHERE CENTER 0.20172 0.811087 0.162601 RAD 0.00617284 + txt002 + SPHERE CENTER 0.214761 0.823642 0.14581 RAD 0.00617284 + txt002 + SPHERE CENTER 0.209955 0.799677 0.142311 RAD 0.00617284 + txt002 + SPHERE CENTER 0.212813 0.794089 0.176661 RAD 0.00617284 + txt002 + SPHERE CENTER 0.221048 0.78268 0.156372 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236948 0.789647 0.173931 RAD 0.00617284 + txt002 + SPHERE CENTER 0.330051 0.815936 0.165419 RAD 0.0185185 + txt002 + SPHERE CENTER 0.350165 0.828769 0.171776 RAD 0.00617284 + txt002 + SPHERE CENTER 0.347547 0.820583 0.148628 RAD 0.00617284 + txt002 + SPHERE CENTER 0.333232 0.838905 0.156937 RAD 0.00617284 + txt002 + SPHERE CENTER 0.332668 0.824121 0.188567 RAD 0.00617284 + txt002 + SPHERE CENTER 0.315735 0.834258 0.173728 RAD 0.00617284 + txt002 + SPHERE CENTER 0.312554 0.811288 0.182211 RAD 0.00617284 + txt002 + SPHERE CENTER 0.346984 0.805799 0.180258 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32687 0.792966 0.173902 RAD 0.00617284 + txt002 + SPHERE CENTER 0.344366 0.797614 0.157111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282063 0.759846 0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER 0.29233 0.756464 0.193792 RAD 0.00617284 + txt002 + SPHERE CENTER 0.305929 0.765125 0.175091 RAD 0.00617284 + txt002 + SPHERE CENTER 0.288514 0.779336 0.18531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.268464 0.751185 0.190293 RAD 0.00617284 + txt002 + SPHERE CENTER 0.264649 0.774058 0.181811 RAD 0.00617284 + txt002 + SPHERE CENTER 0.258198 0.754567 0.168094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.285879 0.736973 0.180075 RAD 0.00617284 + txt002 + SPHERE CENTER 0.275612 0.740355 0.157875 RAD 0.00617284 + txt002 + SPHERE CENTER 0.299478 0.745634 0.161374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.33768 0.75581 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.362219 0.753851 0.124743 RAD 0.00617284 + txt002 + SPHERE CENTER 0.352319 0.76987 0.108773 RAD 0.00617284 + txt002 + SPHERE CENTER 0.350765 0.774086 0.133052 RAD 0.00617284 + txt002 + SPHERE CENTER 0.347581 0.739791 0.138803 RAD 0.00617284 + txt002 + SPHERE CENTER 0.336127 0.760026 0.147112 RAD 0.00617284 + txt002 + SPHERE CENTER 0.323042 0.74175 0.136894 RAD 0.00617284 + txt002 + SPHERE CENTER 0.349134 0.735575 0.114524 RAD 0.00617284 + txt002 + SPHERE CENTER 0.324595 0.737534 0.112614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.339233 0.751594 0.0985541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.172546 0.643951 0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER 0.202787 0.674191 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.219248 0.690652 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.223862 0.677807 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.206403 0.695267 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.198172 0.687036 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.185327 0.691651 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.181711 0.670575 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.215632 0.669577 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.199171 0.653116 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.220246 0.656732 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.244096 0.663122 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.261725 0.675225 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.244096 0.663122 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.238562 0.683777 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.261725 0.675225 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.238562 0.683777 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.244096 0.663122 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.267259 0.65457 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.249631 0.642468 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.249631 0.642468 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.191718 0.715501 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.203821 0.733129 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.212373 0.709966 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.191718 0.715501 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.183166 0.738664 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.171063 0.721035 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.171063 0.721035 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.203821 0.733129 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.191718 0.715501 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.212373 0.709966 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.131237 0.655019 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.12881 0.668451 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.151296 0.662426 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.137627 0.678869 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.108751 0.661044 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.117567 0.671463 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.111177 0.647613 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.12242 0.644601 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.124846 0.631169 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.144906 0.638576 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.120168 0.696329 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.115992 0.720665 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.135288 0.711449 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.135288 0.711449 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.100872 0.705544 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.120168 0.696329 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.105047 0.681209 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.100872 0.705544 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.105047 0.681209 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.120168 0.696329 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.100996 0.624779 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0796777 0.626446 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.100996 0.624779 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0954616 0.645433 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0796777 0.626446 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0954616 0.645433 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.100996 0.624779 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0852121 0.605791 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.10653 0.604124 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.10653 0.604124 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.183615 0.602641 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.197046 0.600215 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.207465 0.609032 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.191021 0.622701 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.173196 0.593824 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.167171 0.61631 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.159765 0.596251 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.18964 0.580155 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.176209 0.582581 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.200059 0.588972 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.153374 0.5724 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.155041 0.551082 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.174029 0.566866 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.153374 0.5724 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.134387 0.556617 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.13272 0.577935 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.13272 0.577935 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.155041 0.551082 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.153374 0.5724 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.174029 0.566866 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.224924 0.591572 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.24926 0.587397 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.240045 0.606693 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.240045 0.606693 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.23414 0.572277 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.224924 0.591572 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.209804 0.576452 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.23414 0.572277 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.209804 0.576452 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.224924 0.591572 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.358439 0.594141 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.428945 0.613592 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.448155 0.626191 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.43276 0.614455 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.42519 0.634643 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.44434 0.625328 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.421375 0.63378 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.42513 0.612729 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.45191 0.60514 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4327 0.592541 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436515 0.593404 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399007 0.621614 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.399844 0.625435 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.38905 0.60511 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.378352 0.627149 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.409801 0.641939 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.388308 0.643653 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.408963 0.638118 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.420499 0.619901 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.419661 0.61608 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.409705 0.599576 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37761 0.665691 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.389713 0.68332 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.398265 0.660156 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37761 0.665691 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.369058 0.688854 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356956 0.671225 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356956 0.671225 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.389713 0.68332 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37761 0.665691 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.398265 0.660156 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.388377 0.586119 0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.405974 0.594185 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.410332 0.593017 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.394768 0.609969 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.384019 0.587286 0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.372813 0.60307 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.366422 0.57922 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399584 0.570335 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.381987 0.562269 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.403942 0.569167 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337042 0.638217 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.341809 0.659244 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.360383 0.645657 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.345471 0.65787 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318468 0.651804 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32213 0.65043 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.313702 0.630777 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.33338 0.639592 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.328614 0.618565 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.351955 0.626005 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.317871 0.566667 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.314012 0.567308 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.336891 0.569787 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.320398 0.587901 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.294991 0.564188 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.301377 0.584781 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29885 0.563547 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.311485 0.546074 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.315344 0.545434 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.334364 0.548554 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.409774 0.542042 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.433888 0.53788 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.426423 0.55574 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.423551 0.558395 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.417238 0.524182 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.406901 0.544697 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.393124 0.528344 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.42011 0.521526 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.395996 0.525689 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.412646 0.539387 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.339267 0.522591 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.340934 0.501272 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.359921 0.517056 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.339267 0.522591 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.320279 0.506807 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318612 0.528125 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318612 0.528125 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.340934 0.501272 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.339267 0.522591 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.359921 0.517056 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.379835 0.550064 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.399304 0.540802 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.400119 0.563801 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.400489 0.54453 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37902 0.527065 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.380205 0.530793 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.359551 0.536327 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37865 0.546337 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.35918 0.555599 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.379464 0.569335 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.371785 0.0996195 0.544331 RAD 0.166667 + txt002 + SPHERE CENTER -0.393621 0.220501 0.729516 RAD 0.0555556 + txt002 + SPHERE CENTER -0.368601 0.279642 0.766439 RAD 0.0185185 + txt002 + SPHERE CENTER -0.354293 0.299716 0.765035 RAD 0.00617284 + txt002 + SPHERE CENTER -0.347717 0.279022 0.753281 RAD 0.00617284 + txt002 + SPHERE CENTER -0.366989 0.292196 0.745238 RAD 0.00617284 + txt002 + SPHERE CENTER -0.375177 0.300337 0.778193 RAD 0.00617284 + txt002 + SPHERE CENTER -0.387873 0.292817 0.758396 RAD 0.00617284 + txt002 + SPHERE CENTER -0.389485 0.280263 0.779597 RAD 0.00617284 + txt002 + SPHERE CENTER -0.355904 0.287162 0.786236 RAD 0.00617284 + txt002 + SPHERE CENTER -0.370213 0.267088 0.787639 RAD 0.00617284 + txt002 + SPHERE CENTER -0.349329 0.266468 0.774481 RAD 0.00617284 + txt002 + SPHERE CENTER -0.321889 0.238665 0.726118 RAD 0.0185185 + txt002 + SPHERE CENTER -0.304702 0.250544 0.71296 RAD 0.00617284 + txt002 + SPHERE CENTER -0.32307 0.238717 0.701455 RAD 0.00617284 + txt002 + SPHERE CENTER -0.327715 0.259421 0.714081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.30352 0.250492 0.737623 RAD 0.00617284 + txt002 + SPHERE CENTER -0.326533 0.259369 0.738744 RAD 0.00617284 + txt002 + SPHERE CENTER -0.320707 0.238612 0.750781 RAD 0.00617284 + txt002 + SPHERE CENTER -0.298875 0.229788 0.724997 RAD 0.00617284 + txt002 + SPHERE CENTER -0.316063 0.217908 0.738155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.317244 0.21796 0.713492 RAD 0.00617284 + txt002 + SPHERE CENTER -0.372464 0.281062 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER -0.362978 0.289441 0.671279 RAD 0.00617284 + txt002 + SPHERE CENTER -0.35549 0.267771 0.680442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.378255 0.270044 0.671155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.379952 0.302733 0.683315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.395229 0.283335 0.683192 RAD 0.00617284 + txt002 + SPHERE CENTER -0.389438 0.294353 0.704516 RAD 0.00617284 + txt002 + SPHERE CENTER -0.357187 0.30046 0.692603 RAD 0.00617284 + txt002 + SPHERE CENTER -0.366673 0.29208 0.713804 RAD 0.00617284 + txt002 + SPHERE CENTER -0.349699 0.278789 0.701767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.440333 0.261479 0.769837 RAD 0.0185185 + txt002 + SPHERE CENTER -0.443285 0.282991 0.781591 RAD 0.00617284 + txt002 + SPHERE CENTER -0.421181 0.271991 0.781342 RAD 0.00617284 + txt002 + SPHERE CENTER -0.4302 0.282046 0.760673 RAD 0.00617284 + txt002 + SPHERE CENTER -0.462437 0.27248 0.770086 RAD 0.00617284 + txt002 + SPHERE CENTER -0.449353 0.271534 0.749168 RAD 0.00617284 + txt002 + SPHERE CENTER -0.459485 0.250967 0.758332 RAD 0.00617284 + txt002 + SPHERE CENTER -0.453417 0.262424 0.790755 RAD 0.00617284 + txt002 + SPHERE CENTER -0.450466 0.240911 0.779001 RAD 0.00617284 + txt002 + SPHERE CENTER -0.431313 0.251423 0.790506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.444196 0.262898 0.695877 RAD 0.0185185 + txt002 + SPHERE CENTER -0.449273 0.285685 0.687835 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436139 0.282528 0.708504 RAD 0.00617284 + txt002 + SPHERE CENTER -0.426189 0.27701 0.68659 RAD 0.00617284 + txt002 + SPHERE CENTER -0.45733 0.266055 0.675209 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434246 0.257381 0.673964 RAD 0.00617284 + txt002 + SPHERE CENTER -0.452254 0.243269 0.683251 RAD 0.00617284 + txt002 + SPHERE CENTER -0.46728 0.271573 0.697123 RAD 0.00617284 + txt002 + SPHERE CENTER -0.462204 0.248787 0.705165 RAD 0.00617284 + txt002 + SPHERE CENTER -0.454146 0.268416 0.717791 RAD 0.00617284 + txt002 + SPHERE CENTER -0.465353 0.202338 0.732914 RAD 0.0185185 + txt002 + SPHERE CENTER -0.486123 0.204606 0.746073 RAD 0.00617284 + txt002 + SPHERE CENTER -0.464339 0.202946 0.757577 RAD 0.00617284 + txt002 + SPHERE CENTER -0.470107 0.223366 0.744951 RAD 0.00617284 + txt002 + SPHERE CENTER -0.487137 0.203998 0.72141 RAD 0.00617284 + txt002 + SPHERE CENTER -0.471122 0.222757 0.720288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.466367 0.201729 0.708251 RAD 0.00617284 + txt002 + SPHERE CENTER -0.481368 0.183578 0.734036 RAD 0.00617284 + txt002 + SPHERE CENTER -0.460599 0.18131 0.720878 RAD 0.00617284 + txt002 + SPHERE CENTER -0.459584 0.181918 0.745541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.389758 0.219082 0.803476 RAD 0.0185185 + txt002 + SPHERE CENTER -0.378635 0.228779 0.823273 RAD 0.00617284 + txt002 + SPHERE CENTER -0.365937 0.225483 0.802355 RAD 0.00617284 + txt002 + SPHERE CENTER -0.383364 0.24293 0.8036 RAD 0.00617284 + txt002 + SPHERE CENTER -0.402455 0.222377 0.824394 RAD 0.00617284 + txt002 + SPHERE CENTER -0.407185 0.236529 0.804721 RAD 0.00617284 + txt002 + SPHERE CENTER -0.413578 0.21268 0.804597 RAD 0.00617284 + txt002 + SPHERE CENTER -0.385029 0.20493 0.823149 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396152 0.195233 0.803352 RAD 0.00617284 + txt002 + SPHERE CENTER -0.372331 0.201634 0.802231 RAD 0.00617284 + txt002 + SPHERE CENTER -0.414778 0.15994 0.766553 RAD 0.0185185 + txt002 + SPHERE CENTER -0.412573 0.147477 0.787754 RAD 0.00617284 + txt002 + SPHERE CENTER -0.39322 0.15977 0.77859 RAD 0.00617284 + txt002 + SPHERE CENTER -0.412448 0.172167 0.787878 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434131 0.147647 0.775717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434006 0.172338 0.775841 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436336 0.16011 0.754517 RAD 0.00617284 + txt002 + SPHERE CENTER -0.414903 0.13525 0.766429 RAD 0.00617284 + txt002 + SPHERE CENTER -0.417108 0.147713 0.745229 RAD 0.00617284 + txt002 + SPHERE CENTER -0.39555 0.147543 0.757266 RAD 0.00617284 + txt002 + SPHERE CENTER -0.343046 0.178104 0.763155 RAD 0.0185185 + txt002 + SPHERE CENTER -0.319723 0.177083 0.771198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.325124 0.189464 0.750529 RAD 0.00617284 + txt002 + SPHERE CENTER -0.332294 0.198298 0.772443 RAD 0.00617284 + txt002 + SPHERE CENTER -0.337645 0.165722 0.783824 RAD 0.00617284 + txt002 + SPHERE CENTER -0.350216 0.186938 0.785069 RAD 0.00617284 + txt002 + SPHERE CENTER -0.360967 0.166743 0.775781 RAD 0.00617284 + txt002 + SPHERE CENTER -0.330475 0.156889 0.76191 RAD 0.00617284 + txt002 + SPHERE CENTER -0.353797 0.157909 0.753867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.335876 0.16927 0.741241 RAD 0.00617284 + txt002 + SPHERE CENTER -0.191247 0.166275 0.655442 RAD 0.0555556 + txt002 + SPHERE CENTER -0.130089 0.20793 0.652044 RAD 0.0185185 + txt002 + SPHERE CENTER -0.115471 0.221102 0.637128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.126388 0.200597 0.628759 RAD 0.00617284 + txt002 + SPHERE CENTER -0.13987 0.220766 0.633356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.119172 0.228435 0.660413 RAD 0.00617284 + txt002 + SPHERE CENTER -0.143571 0.228099 0.656641 RAD 0.00617284 + txt002 + SPHERE CENTER -0.13379 0.215264 0.675329 RAD 0.00617284 + txt002 + SPHERE CENTER -0.10569 0.208266 0.655816 RAD 0.00617284 + txt002 + SPHERE CENTER -0.120308 0.195095 0.670732 RAD 0.00617284 + txt002 + SPHERE CENTER -0.116607 0.187762 0.647447 RAD 0.00617284 + txt002 + SPHERE CENTER -0.154295 0.172673 0.591563 RAD 0.0185185 + txt002 + SPHERE CENTER -0.15554 0.180792 0.568278 RAD 0.00617284 + txt002 + SPHERE CENTER -0.17557 0.171251 0.579113 RAD 0.00617284 + txt002 + SPHERE CENTER -0.166926 0.19323 0.586315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.134265 0.182215 0.580727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.145651 0.194652 0.598764 RAD 0.00617284 + txt002 + SPHERE CENTER -0.133019 0.174096 0.604012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.142909 0.160236 0.573526 RAD 0.00617284 + txt002 + SPHERE CENTER -0.141663 0.152117 0.596811 RAD 0.00617284 + txt002 + SPHERE CENTER -0.162939 0.150694 0.584361 RAD 0.00617284 + txt002 + SPHERE CENTER -0.192135 0.230419 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.18209 0.243049 0.599717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.168159 0.227721 0.613157 RAD 0.00617284 + txt002 + SPHERE CENTER -0.185251 0.218634 0.597829 RAD 0.00617284 + txt002 + SPHERE CENTER -0.206066 0.245747 0.604965 RAD 0.00617284 + txt002 + SPHERE CENTER -0.209227 0.221332 0.603077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.216111 0.233117 0.623653 RAD 0.00617284 + txt002 + SPHERE CENTER -0.188974 0.254834 0.620293 RAD 0.00617284 + txt002 + SPHERE CENTER -0.199019 0.242204 0.638981 RAD 0.00617284 + txt002 + SPHERE CENTER -0.175043 0.239506 0.633733 RAD 0.00617284 + txt002 + SPHERE CENTER -0.167041 0.201532 0.715923 RAD 0.0185185 + txt002 + SPHERE CENTER -0.151829 0.219088 0.724292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.14514 0.205084 0.705088 RAD 0.00617284 + txt002 + SPHERE CENTER -0.163068 0.221861 0.702483 RAD 0.00617284 + txt002 + SPHERE CENTER -0.173729 0.215537 0.735128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.184969 0.218309 0.713318 RAD 0.00617284 + txt002 + SPHERE CENTER -0.188942 0.197981 0.726759 RAD 0.00617284 + txt002 + SPHERE CENTER -0.155801 0.19876 0.737733 RAD 0.00617284 + txt002 + SPHERE CENTER -0.171014 0.181204 0.729364 RAD 0.00617284 + txt002 + SPHERE CENTER -0.149113 0.184756 0.718528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.229087 0.224021 0.682285 RAD 0.0185185 + txt002 + SPHERE CENTER -0.22829 0.248268 0.686881 RAD 0.00617284 + txt002 + SPHERE CENTER -0.207937 0.234532 0.689486 RAD 0.00617284 + txt002 + SPHERE CENTER -0.216949 0.2391 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER -0.249439 0.237756 0.67968 RAD 0.00617284 + txt002 + SPHERE CENTER -0.238098 0.228589 0.659755 RAD 0.00617284 + txt002 + SPHERE CENTER -0.250236 0.213509 0.675083 RAD 0.00617284 + txt002 + SPHERE CENTER -0.240428 0.233189 0.702209 RAD 0.00617284 + txt002 + SPHERE CENTER -0.241225 0.208942 0.697613 RAD 0.00617284 + txt002 + SPHERE CENTER -0.220075 0.219453 0.704814 RAD 0.00617284 + txt002 + SPHERE CENTER -0.228199 0.159877 0.719322 RAD 0.0185185 + txt002 + SPHERE CENTER -0.229756 0.167942 0.742607 RAD 0.00617284 + txt002 + SPHERE CENTER -0.207683 0.16569 0.731771 RAD 0.00617284 + txt002 + SPHERE CENTER -0.223214 0.183484 0.72457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.250271 0.162129 0.730157 RAD 0.00617284 + txt002 + SPHERE CENTER -0.243729 0.177671 0.71212 RAD 0.00617284 + txt002 + SPHERE CENTER -0.248714 0.154064 0.706872 RAD 0.00617284 + txt002 + SPHERE CENTER -0.234741 0.144336 0.737359 RAD 0.00617284 + txt002 + SPHERE CENTER -0.233184 0.13627 0.714074 RAD 0.00617284 + txt002 + SPHERE CENTER -0.212668 0.142084 0.726523 RAD 0.00617284 + txt002 + SPHERE CENTER -0.129201 0.143787 0.689081 RAD 0.0185185 + txt002 + SPHERE CENTER -0.105335 0.14887 0.692853 RAD 0.00617284 + txt002 + SPHERE CENTER -0.115741 0.153943 0.671044 RAD 0.00617284 + txt002 + SPHERE CENTER -0.121723 0.167242 0.690969 RAD 0.00617284 + txt002 + SPHERE CENTER -0.118795 0.138714 0.71089 RAD 0.00617284 + txt002 + SPHERE CENTER -0.135183 0.157086 0.709006 RAD 0.00617284 + txt002 + SPHERE CENTER -0.142661 0.13363 0.707118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.112813 0.125414 0.690965 RAD 0.00617284 + txt002 + SPHERE CENTER -0.136679 0.120331 0.687193 RAD 0.00617284 + txt002 + SPHERE CENTER -0.123219 0.130487 0.669156 RAD 0.00617284 + txt002 + SPHERE CENTER -0.190359 0.102131 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER -0.179968 0.0897843 0.711167 RAD 0.00617284 + txt002 + SPHERE CENTER -0.166467 0.105492 0.697727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.183804 0.114103 0.713055 RAD 0.00617284 + txt002 + SPHERE CENTER -0.20386 0.0864233 0.705919 RAD 0.00617284 + txt002 + SPHERE CENTER -0.207696 0.110742 0.707807 RAD 0.00617284 + txt002 + SPHERE CENTER -0.214251 0.0987702 0.687231 RAD 0.00617284 + txt002 + SPHERE CENTER -0.186523 0.0778128 0.690591 RAD 0.00617284 + txt002 + SPHERE CENTER -0.196914 0.0901597 0.671903 RAD 0.00617284 + txt002 + SPHERE CENTER -0.173022 0.0935207 0.677151 RAD 0.00617284 + txt002 + SPHERE CENTER -0.153407 0.108529 0.6286 RAD 0.0185185 + txt002 + SPHERE CENTER -0.130858 0.0995811 0.624003 RAD 0.00617284 + txt002 + SPHERE CENTER -0.135326 0.123725 0.621398 RAD 0.00617284 + txt002 + SPHERE CENTER -0.134736 0.113639 0.643928 RAD 0.00617284 + txt002 + SPHERE CENTER -0.148938 0.0843858 0.631205 RAD 0.00617284 + txt002 + SPHERE CENTER -0.152816 0.0984435 0.65113 RAD 0.00617284 + txt002 + SPHERE CENTER -0.171487 0.0933338 0.635801 RAD 0.00617284 + txt002 + SPHERE CENTER -0.149528 0.0944715 0.608675 RAD 0.00617284 + txt002 + SPHERE CENTER -0.172078 0.10342 0.613272 RAD 0.00617284 + txt002 + SPHERE CENTER -0.153997 0.118615 0.60607 RAD 0.00617284 + txt002 + SPHERE CENTER -0.31427 0.31427 0.544331 RAD 0.0555556 + txt002 + SPHERE CENTER -0.277961 0.367156 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.269898 0.374298 0.485076 RAD 0.00617284 + txt002 + SPHERE CENTER -0.270045 0.350338 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.291334 0.362218 0.487134 RAD 0.00617284 + txt002 + SPHERE CENTER -0.277815 0.391115 0.501329 RAD 0.00617284 + txt002 + SPHERE CENTER -0.299251 0.379036 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.285878 0.383973 0.523547 RAD 0.00617284 + txt002 + SPHERE CENTER -0.256525 0.379235 0.505236 RAD 0.00617284 + txt002 + SPHERE CENTER -0.264588 0.372093 0.527454 RAD 0.00617284 + txt002 + SPHERE CENTER -0.256671 0.355276 0.511201 RAD 0.00617284 + txt002 + SPHERE CENTER -0.252306 0.297666 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.235688 0.305995 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.259438 0.312359 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.245915 0.321516 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.228556 0.291303 0.509559 RAD 0.00617284 + txt002 + SPHERE CENTER -0.238783 0.306824 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.245173 0.282974 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.242079 0.282145 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.258696 0.273816 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.265828 0.288509 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.31427 0.31427 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER -0.32435 0.32435 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.33812 0.32066 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.32066 0.33812 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.3005 0.317959 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.29681 0.331729 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.29042 0.307879 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.317959 0.3005 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.307879 0.29042 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.331729 0.29681 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339925 0.383759 0.544331 RAD 0.0185185 + txt002 + SPHERE CENTER -0.334762 0.407156 0.538366 RAD 0.00617284 + txt002 + SPHERE CENTER -0.31686 0.392275 0.546597 RAD 0.00617284 + txt002 + SPHERE CENTER -0.326552 0.388696 0.524171 RAD 0.00617284 + txt002 + SPHERE CENTER -0.357827 0.39864 0.536101 RAD 0.00617284 + txt002 + SPHERE CENTER -0.349618 0.380181 0.521905 RAD 0.00617284 + txt002 + SPHERE CENTER -0.362991 0.375243 0.542066 RAD 0.00617284 + txt002 + SPHERE CENTER -0.348135 0.402218 0.558526 RAD 0.00617284 + txt002 + SPHERE CENTER -0.353299 0.378821 0.564491 RAD 0.00617284 + txt002 + SPHERE CENTER -0.330233 0.387337 0.566757 RAD 0.00617284 + txt002 + SPHERE CENTER -0.376234 0.330873 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.393346 0.348239 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.383366 0.345565 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.369843 0.354723 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.386213 0.333547 0.484868 RAD 0.00617284 + txt002 + SPHERE CENTER -0.362711 0.340031 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.369102 0.316181 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399736 0.324389 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.382624 0.307023 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.389757 0.321715 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.376234 0.330873 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.386461 0.346394 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.362711 0.340031 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.369843 0.354723 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399983 0.337237 0.579103 RAD 0.00617284 + txt002 + SPHERE CENTER -0.383366 0.345565 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.389757 0.321715 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.392851 0.322544 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.382624 0.307023 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.369102 0.316181 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.277961 0.367156 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.261966 0.385852 0.57931 RAD 0.00617284 + txt002 + SPHERE CENTER -0.259422 0.36581 0.565115 RAD 0.00617284 + txt002 + SPHERE CENTER -0.278159 0.38141 0.561208 RAD 0.00617284 + txt002 + SPHERE CENTER -0.280504 0.387198 0.595564 RAD 0.00617284 + txt002 + SPHERE CENTER -0.296698 0.382755 0.577461 RAD 0.00617284 + txt002 + SPHERE CENTER -0.2965 0.368501 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.261768 0.371598 0.599471 RAD 0.00617284 + txt002 + SPHERE CENTER -0.277764 0.352901 0.601529 RAD 0.00617284 + txt002 + SPHERE CENTER -0.259225 0.351556 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.31427 0.31427 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.304189 0.32435 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.29042 0.32066 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.307879 0.33812 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.328039 0.317959 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.331729 0.331729 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.33812 0.307879 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.31058 0.3005 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.32066 0.29042 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.29681 0.29681 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.252306 0.297666 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.228803 0.30415 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.238783 0.306824 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.245915 0.321516 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.242326 0.294992 0.603794 RAD 0.00617284 + txt002 + SPHERE CENTER -0.259438 0.312359 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.265828 0.288509 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.235194 0.2803 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.258696 0.273816 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.245173 0.282974 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.574159 0.153845 0.618405 RAD 0.0555556 + txt002 + SPHERE CENTER -0.612768 0.202534 0.658726 RAD 0.0185185 + txt002 + SPHERE CENTER -0.612732 0.225282 0.668328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.591695 0.212428 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER -0.60221 0.22113 0.64638 RAD 0.00617284 + txt002 + SPHERE CENTER -0.633805 0.215388 0.660098 RAD 0.00617284 + txt002 + SPHERE CENTER -0.623283 0.211236 0.63815 RAD 0.00617284 + txt002 + SPHERE CENTER -0.63384 0.192641 0.650495 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62329 0.206686 0.680674 RAD 0.00617284 + txt002 + SPHERE CENTER -0.623325 0.183939 0.671072 RAD 0.00617284 + txt002 + SPHERE CENTER -0.602253 0.193832 0.679302 RAD 0.00617284 + txt002 + SPHERE CENTER -0.543919 0.184086 0.678886 RAD 0.0185185 + txt002 + SPHERE CENTER -0.527458 0.200547 0.687117 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522843 0.187702 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.540303 0.205161 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.548533 0.196931 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.561378 0.201546 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER -0.564994 0.18047 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER -0.531074 0.179472 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.547535 0.163011 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER -0.526459 0.166627 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554987 0.225396 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.542885 0.243024 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER -0.534333 0.219861 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554987 0.225396 0.593714 RAD 0.00617284 + txt002 + SPHERE CENTER -0.563539 0.248559 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.575642 0.23093 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER -0.575642 0.23093 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542885 0.243024 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554987 0.225396 0.643096 RAD 0.00617284 + txt002 + SPHERE CENTER -0.534333 0.219861 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643008 0.172294 0.598245 RAD 0.0185185 + txt002 + SPHERE CENTER -0.660425 0.189742 0.599616 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645434 0.185725 0.618821 RAD 0.00617284 + txt002 + SPHERE CENTER -0.636618 0.196144 0.598245 RAD 0.00617284 + txt002 + SPHERE CENTER -0.657999 0.17631 0.57904 RAD 0.00617284 + txt002 + SPHERE CENTER -0.634191 0.182712 0.577669 RAD 0.00617284 + txt002 + SPHERE CENTER -0.640582 0.158862 0.577669 RAD 0.00617284 + txt002 + SPHERE CENTER -0.666816 0.165892 0.599616 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649399 0.148444 0.598245 RAD 0.00617284 + txt002 + SPHERE CENTER -0.651825 0.161875 0.618821 RAD 0.00617284 + txt002 + SPHERE CENTER -0.585228 0.195155 0.557924 RAD 0.0185185 + txt002 + SPHERE CENTER -0.574809 0.203972 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER -0.561378 0.201546 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER -0.568784 0.181486 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER -0.598659 0.197581 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER -0.592634 0.175095 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER -0.609078 0.188764 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER -0.591253 0.217641 0.549693 RAD 0.00617284 + txt002 + SPHERE CENTER -0.601672 0.208824 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER -0.577822 0.215215 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER -0.6044 0.123605 0.557924 RAD 0.0185185 + txt002 + SPHERE CENTER -0.620861 0.107144 0.549693 RAD 0.00617284 + txt002 + SPHERE CENTER -0.608016 0.102529 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER -0.625475 0.119989 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER -0.617245 0.128219 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER -0.621859 0.141064 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600784 0.14468 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER -0.599785 0.11076 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER -0.583324 0.127221 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER -0.58694 0.106145 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER -0.631939 0.130984 0.658726 RAD 0.0185185 + txt002 + SPHERE CENTER -0.643128 0.132649 0.680674 RAD 0.00617284 + txt002 + SPHERE CENTER -0.618482 0.133263 0.679302 RAD 0.00617284 + txt002 + SPHERE CENTER -0.631785 0.152367 0.671072 RAD 0.00617284 + txt002 + SPHERE CENTER -0.656585 0.130371 0.660098 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645242 0.150088 0.650495 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645397 0.128706 0.63815 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643283 0.111266 0.668328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.632094 0.109601 0.64638 RAD 0.00617284 + txt002 + SPHERE CENTER -0.618637 0.11188 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593331 0.0822954 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.591664 0.0609772 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.572676 0.076761 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593331 0.0822954 0.643096 RAD 0.00617284 + txt002 + SPHERE CENTER -0.612319 0.0665116 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.613986 0.0878298 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.613986 0.0878298 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER -0.591664 0.0609772 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593331 0.0822954 0.593714 RAD 0.00617284 + txt002 + SPHERE CENTER -0.572676 0.076761 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER -0.56309 0.112536 0.678886 RAD 0.0185185 + txt002 + SPHERE CENTER -0.549659 0.11011 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.53924 0.118927 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555684 0.132596 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER -0.573509 0.103719 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.579534 0.126205 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER -0.58694 0.106145 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER -0.557065 0.09005 0.687117 RAD 0.00617284 + txt002 + SPHERE CENTER -0.570497 0.0924762 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.546646 0.0988668 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.494808 0.247614 0.43322 RAD 0.0555556 + txt002 + SPHERE CENTER -0.494287 0.313607 0.399581 RAD 0.0185185 + txt002 + SPHERE CENTER -0.484182 0.326876 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.470513 0.310432 0.39372 RAD 0.00617284 + txt002 + SPHERE CENTER -0.488171 0.302705 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.507957 0.330051 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.511946 0.305881 0.384149 RAD 0.00617284 + txt002 + SPHERE CENTER -0.518062 0.316783 0.405442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.490299 0.337778 0.402668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.500404 0.324509 0.420874 RAD 0.00617284 + txt002 + SPHERE CENTER -0.476629 0.321334 0.415013 RAD 0.00617284 + txt002 + SPHERE CENTER -0.452978 0.302539 0.460062 RAD 0.0185185 + txt002 + SPHERE CENTER -0.436971 0.320401 0.454201 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436675 0.29902 0.441856 RAD 0.00617284 + txt002 + SPHERE CENTER -0.455413 0.3148 0.438769 RAD 0.00617284 + txt002 + SPHERE CENTER -0.453274 0.32392 0.472408 RAD 0.00617284 + txt002 + SPHERE CENTER -0.471717 0.318318 0.456976 RAD 0.00617284 + txt002 + SPHERE CENTER -0.469281 0.306057 0.478269 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434535 0.30814 0.475494 RAD 0.00617284 + txt002 + SPHERE CENTER -0.450543 0.290278 0.481355 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434239 0.286759 0.463149 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434629 0.269833 0.396183 RAD 0.0185185 + txt002 + SPHERE CENTER -0.426389 0.279233 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER -0.445377 0.263449 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER -0.448298 0.286276 0.383837 RAD 0.00617284 + txt002 + SPHERE CENTER -0.415641 0.285616 0.396183 RAD 0.00617284 + txt002 + SPHERE CENTER -0.43755 0.29266 0.40513 RAD 0.00617284 + txt002 + SPHERE CENTER -0.42388 0.276216 0.417476 RAD 0.00617284 + txt002 + SPHERE CENTER -0.41272 0.262789 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.420959 0.253389 0.408529 RAD 0.00617284 + txt002 + SPHERE CENTER -0.431707 0.247006 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536117 0.258683 0.372739 RAD 0.0185185 + txt002 + SPHERE CENTER -0.549787 0.275127 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.549787 0.275127 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER -0.529727 0.282533 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536117 0.258683 0.348047 RAD 0.00617284 + txt002 + SPHERE CENTER -0.516058 0.266089 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522448 0.242239 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.556177 0.251277 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542508 0.234833 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER -0.556177 0.251277 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER -0.476459 0.214908 0.369341 RAD 0.0185185 + txt002 + SPHERE CENTER -0.457868 0.209819 0.353908 RAD 0.00617284 + txt002 + SPHERE CENTER -0.458164 0.2312 0.366254 RAD 0.00617284 + txt002 + SPHERE CENTER -0.453963 0.210053 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.476163 0.193527 0.356995 RAD 0.00617284 + txt002 + SPHERE CENTER -0.472258 0.193761 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.494753 0.198616 0.372427 RAD 0.00617284 + txt002 + SPHERE CENTER -0.480363 0.214674 0.344961 RAD 0.00617284 + txt002 + SPHERE CENTER -0.498954 0.219763 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.480659 0.236055 0.357307 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536638 0.19269 0.406378 RAD 0.0185185 + txt002 + SPHERE CENTER -0.549603 0.17251 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER -0.528912 0.177908 0.424584 RAD 0.00617284 + txt002 + SPHERE CENTER -0.549105 0.191778 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER -0.557329 0.187292 0.394032 RAD 0.00617284 + txt002 + SPHERE CENTER -0.556831 0.20656 0.409464 RAD 0.00617284 + txt002 + SPHERE CENTER -0.544363 0.207471 0.388171 RAD 0.00617284 + txt002 + SPHERE CENTER -0.537136 0.173421 0.390945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.524171 0.193601 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER -0.516445 0.178819 0.403291 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554467 0.291389 0.436618 RAD 0.0185185 + txt002 + SPHERE CENTER -0.562288 0.314604 0.439705 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542501 0.306499 0.45205 RAD 0.00617284 + txt002 + SPHERE CENTER -0.541186 0.310183 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER -0.574255 0.299494 0.424272 RAD 0.00617284 + txt002 + SPHERE CENTER -0.553152 0.295073 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER -0.566433 0.276279 0.421186 RAD 0.00617284 + txt002 + SPHERE CENTER -0.575569 0.29581 0.448652 RAD 0.00617284 + txt002 + SPHERE CENTER -0.567748 0.272595 0.445566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555781 0.287705 0.460998 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554987 0.225396 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER -0.567359 0.227186 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.54267 0.227528 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555283 0.246777 0.482603 RAD 0.00617284 + txt002 + SPHERE CENTER -0.579676 0.225054 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.567601 0.244644 0.46131 RAD 0.00617284 + txt002 + SPHERE CENTER -0.567305 0.223263 0.448964 RAD 0.00617284 + txt002 + SPHERE CENTER -0.567063 0.205805 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554691 0.204014 0.457911 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542374 0.206147 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER -0.513157 0.28032 0.497099 RAD 0.0185185 + txt002 + SPHERE CENTER -0.507811 0.298839 0.512531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.489718 0.287442 0.500186 RAD 0.00617284 + txt002 + SPHERE CENTER -0.505577 0.302049 0.488152 RAD 0.00617284 + txt002 + SPHERE CENTER -0.531251 0.291716 0.509445 RAD 0.00617284 + txt002 + SPHERE CENTER -0.529016 0.294927 0.485065 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536597 0.273198 0.494013 RAD 0.00617284 + txt002 + SPHERE CENTER -0.515392 0.27711 0.521479 RAD 0.00617284 + txt002 + SPHERE CENTER -0.520738 0.258591 0.506047 RAD 0.00617284 + txt002 + SPHERE CENTER -0.497299 0.265714 0.509133 RAD 0.00617284 + txt002 + SPHERE CENTER -0.552323 0.0329639 0.43322 RAD 0.0555556 + txt002 + SPHERE CENTER -0.625877 0.0248832 0.436618 RAD 0.0185185 + txt002 + SPHERE CENTER -0.646362 0.0316054 0.448652 RAD 0.00617284 + txt002 + SPHERE CENTER -0.625173 0.0287309 0.460998 RAD 0.00617284 + txt002 + SPHERE CENTER -0.627981 0.0478 0.445566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.647066 0.0277577 0.424272 RAD 0.00617284 + txt002 + SPHERE CENTER -0.628685 0.0439523 0.421186 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62658 0.0210355 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER -0.644258 0.00868865 0.439705 RAD 0.00617284 + txt002 + SPHERE CENTER -0.623773 0.00196644 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER -0.623069 0.00581415 0.45205 RAD 0.00617284 + txt002 + SPHERE CENTER -0.584567 0.0138144 0.497099 RAD 0.0185185 + txt002 + SPHERE CENTER -0.584898 0.0177119 0.521479 RAD 0.00617284 + txt002 + SPHERE CENTER -0.56353 0.0185345 0.509133 RAD 0.00617284 + txt002 + SPHERE CENTER -0.580268 0.0364224 0.506047 RAD 0.00617284 + txt002 + SPHERE CENTER -0.605935 0.0129918 0.509445 RAD 0.00617284 + txt002 + SPHERE CENTER -0.601305 0.0317022 0.494013 RAD 0.00617284 + txt002 + SPHERE CENTER -0.605605 0.00909422 0.485065 RAD 0.00617284 + txt002 + SPHERE CENTER -0.589197 -0.00489609 0.512531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.588867 -0.00879364 0.488152 RAD 0.00617284 + txt002 + SPHERE CENTER -0.567829 -0.00407348 0.500186 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593331 0.0822954 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER -0.593994 0.105299 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER -0.572783 0.0926585 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582384 0.100664 0.457911 RAD 0.00617284 + txt002 + SPHERE CENTER -0.614541 0.0949359 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.602932 0.090301 0.448964 RAD 0.00617284 + txt002 + SPHERE CENTER -0.613879 0.0719323 0.46131 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604941 0.0869303 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604278 0.0639267 0.482603 RAD 0.00617284 + txt002 + SPHERE CENTER -0.58373 0.0742898 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593633 0.0440327 0.372739 RAD 0.0185185 + txt002 + SPHERE CENTER -0.607302 0.0604766 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.607302 0.0604766 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER -0.587242 0.0678827 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593633 0.0440327 0.348047 RAD 0.00617284 + txt002 + SPHERE CENTER -0.573573 0.0514389 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.579964 0.0275889 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.613693 0.0366265 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600023 0.0201827 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER -0.613693 0.0366265 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER -0.561087 0.101445 0.406378 RAD 0.0185185 + txt002 + SPHERE CENTER -0.551884 0.118381 0.390945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536664 0.103361 0.403291 RAD 0.00617284 + txt002 + SPHERE CENTER -0.550745 0.0944221 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER -0.576307 0.116465 0.394032 RAD 0.00617284 + txt002 + SPHERE CENTER -0.575168 0.0925065 0.388171 RAD 0.00617284 + txt002 + SPHERE CENTER -0.58551 0.0995293 0.409464 RAD 0.00617284 + txt002 + SPHERE CENTER -0.562225 0.125404 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER -0.571428 0.108468 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER -0.547006 0.110383 0.424584 RAD 0.00617284 + txt002 + SPHERE CENTER -0.520079 0.0521134 0.369341 RAD 0.0185185 + txt002 + SPHERE CENTER -0.523344 0.0542684 0.344961 RAD 0.00617284 + txt002 + SPHERE CENTER -0.534291 0.0358996 0.357307 RAD 0.00617284 + txt002 + SPHERE CENTER -0.541988 0.0591566 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER -0.509132 0.0704822 0.356995 RAD 0.00617284 + txt002 + SPHERE CENTER -0.527777 0.0753703 0.372427 RAD 0.00617284 + txt002 + SPHERE CENTER -0.505868 0.0683272 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.501435 0.0472252 0.353908 RAD 0.00617284 + txt002 + SPHERE CENTER -0.49817 0.0450702 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.512382 0.0288565 0.366254 RAD 0.00617284 + txt002 + SPHERE CENTER -0.584869 -0.0244483 0.399581 RAD 0.0185185 + txt002 + SPHERE CENTER -0.5935 -0.0473753 0.402668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.57344 -0.0399691 0.415013 RAD 0.00617284 + txt002 + SPHERE CENTER -0.595617 -0.0308315 0.420874 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604929 -0.0318545 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.607046 -0.0153107 0.405442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.596298 -0.00892756 0.384149 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582752 -0.0409921 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.574121 -0.0180651 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.562692 -0.0335859 0.39372 RAD 0.00617284 + txt002 + SPHERE CENTER -0.511316 -0.0163676 0.396183 RAD 0.0185185 + txt002 + SPHERE CENTER -0.48882 -0.0212225 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.497372 0.00194055 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.491256 -0.00896145 0.408529 RAD 0.00617284 + txt002 + SPHERE CENTER -0.502764 -0.0395307 0.396183 RAD 0.00617284 + txt002 + SPHERE CENTER -0.505199 -0.0272696 0.417476 RAD 0.00617284 + txt002 + SPHERE CENTER -0.525259 -0.0346758 0.40513 RAD 0.00617284 + txt002 + SPHERE CENTER -0.50888 -0.0286287 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER -0.531375 -0.0237738 0.383837 RAD 0.00617284 + txt002 + SPHERE CENTER -0.517432 -0.00546563 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER -0.54356 -0.0355172 0.460062 RAD 0.0185185 + txt002 + SPHERE CENTER -0.530389 -0.0495897 0.475494 RAD 0.00617284 + txt002 + SPHERE CENTER -0.519442 -0.031221 0.463149 RAD 0.00617284 + txt002 + SPHERE CENTER -0.53532 -0.0261165 0.481355 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554507 -0.0538859 0.472408 RAD 0.00617284 + txt002 + SPHERE CENTER -0.559438 -0.0304127 0.478269 RAD 0.00617284 + txt002 + SPHERE CENTER -0.567678 -0.0398133 0.456976 RAD 0.00617284 + txt002 + SPHERE CENTER -0.538628 -0.0589904 0.454201 RAD 0.00617284 + txt002 + SPHERE CENTER -0.551799 -0.0449178 0.438769 RAD 0.00617284 + txt002 + SPHERE CENTER -0.527681 -0.0406217 0.441856 RAD 0.00617284 + txt002 + SPHERE CENTER -0.451136 0.0058509 0.729516 RAD 0.0555556 + txt002 + SPHERE CENTER -0.447081 0.0051487 0.803476 RAD 0.0185185 + txt002 + SPHERE CENTER -0.435909 0.01504 0.823149 RAD 0.00617284 + txt002 + SPHERE CENTER -0.423265 0.0115452 0.802231 RAD 0.00617284 + txt002 + SPHERE CENTER -0.440694 0.0289993 0.803352 RAD 0.00617284 + txt002 + SPHERE CENTER -0.459725 0.00864346 0.824394 RAD 0.00617284 + txt002 + SPHERE CENTER -0.46451 0.0226028 0.804597 RAD 0.00617284 + txt002 + SPHERE CENTER -0.470897 -0.0012478 0.804721 RAD 0.00617284 + txt002 + SPHERE CENTER -0.442297 -0.00881065 0.823273 RAD 0.00617284 + txt002 + SPHERE CENTER -0.453468 -0.0187019 0.8036 RAD 0.00617284 + txt002 + SPHERE CENTER -0.429652 -0.0123054 0.802355 RAD 0.00617284 + txt002 + SPHERE CENTER -0.386138 0.0172804 0.763155 RAD 0.0185185 + txt002 + SPHERE CENTER -0.364644 0.0293677 0.76191 RAD 0.00617284 + txt002 + SPHERE CENTER -0.375512 0.0213457 0.741241 RAD 0.00617284 + txt002 + SPHERE CENTER -0.385352 0.0401449 0.753867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37527 0.0253024 0.783824 RAD 0.00617284 + txt002 + SPHERE CENTER -0.395978 0.0360796 0.775781 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396764 0.0132151 0.785069 RAD 0.00617284 + txt002 + SPHERE CENTER -0.36543 0.0065032 0.771198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.386924 -0.00558411 0.772443 RAD 0.00617284 + txt002 + SPHERE CENTER -0.376298 -0.00151881 0.750529 RAD 0.00617284 + txt002 + SPHERE CENTER -0.439178 0.0688765 0.766553 RAD 0.0185185 + txt002 + SPHERE CENTER -0.426942 0.0903221 0.766429 RAD 0.00617284 + txt002 + SPHERE CENTER -0.416328 0.0699989 0.757266 RAD 0.00617284 + txt002 + SPHERE CENTER -0.435083 0.0806307 0.745229 RAD 0.00617284 + txt002 + SPHERE CENTER -0.449792 0.0891998 0.775717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.457933 0.0795084 0.754517 RAD 0.00617284 + txt002 + SPHERE CENTER -0.462029 0.0677542 0.775841 RAD 0.00617284 + txt002 + SPHERE CENTER -0.431037 0.078568 0.787754 RAD 0.00617284 + txt002 + SPHERE CENTER -0.443274 0.0571224 0.787878 RAD 0.00617284 + txt002 + SPHERE CENTER -0.420423 0.0582447 0.77859 RAD 0.00617284 + txt002 + SPHERE CENTER -0.512079 -0.00628079 0.769837 RAD 0.0185185 + txt002 + SPHERE CENTER -0.523883 -0.000557006 0.790755 RAD 0.00617284 + txt002 + SPHERE CENTER -0.49924 -0.00208214 0.790506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.51057 0.0165974 0.779001 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536722 -0.00475566 0.770086 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523409 0.0123987 0.758332 RAD 0.00617284 + txt002 + SPHERE CENTER -0.524918 -0.0104794 0.749168 RAD 0.00617284 + txt002 + SPHERE CENTER -0.525392 -0.0234352 0.781591 RAD 0.00617284 + txt002 + SPHERE CENTER -0.513588 -0.029159 0.760673 RAD 0.00617284 + txt002 + SPHERE CENTER -0.500749 -0.0249603 0.781342 RAD 0.00617284 + txt002 + SPHERE CENTER -0.504176 0.0574471 0.732914 RAD 0.0185185 + txt002 + SPHERE CENTER -0.508666 0.0817008 0.734036 RAD 0.00617284 + txt002 + SPHERE CENTER -0.488971 0.0722467 0.745541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.489545 0.0732807 0.720878 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523872 0.0669012 0.72141 RAD 0.00617284 + txt002 + SPHERE CENTER -0.504751 0.058481 0.708251 RAD 0.00617284 + txt002 + SPHERE CENTER -0.519382 0.0426474 0.720288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523298 0.0658672 0.746073 RAD 0.00617284 + txt002 + SPHERE CENTER -0.518808 0.0416134 0.744951 RAD 0.00617284 + txt002 + SPHERE CENTER -0.503602 0.0564131 0.757577 RAD 0.00617284 + txt002 + SPHERE CENTER -0.516134 -0.00557859 0.695877 RAD 0.0185185 + txt002 + SPHERE CENTER -0.540463 -0.00154892 0.697123 RAD 0.00617284 + txt002 + SPHERE CENTER -0.52751 -0.00538221 0.717791 RAD 0.00617284 + txt002 + SPHERE CENTER -0.524673 0.0156462 0.705165 RAD 0.00617284 + txt002 + SPHERE CENTER -0.529087 -0.00174531 0.675209 RAD 0.00617284 + txt002 + SPHERE CENTER -0.513298 0.0154498 0.683251 RAD 0.00617284 + txt002 + SPHERE CENTER -0.504759 -0.00577498 0.673964 RAD 0.00617284 + txt002 + SPHERE CENTER -0.531924 -0.0227737 0.687835 RAD 0.00617284 + txt002 + SPHERE CENTER -0.507596 -0.0268034 0.68659 RAD 0.00617284 + txt002 + SPHERE CENTER -0.518971 -0.026607 0.708504 RAD 0.00617284 + txt002 + SPHERE CENTER -0.459039 -0.0578769 0.766439 RAD 0.0185185 + txt002 + SPHERE CENTER -0.451803 -0.0707378 0.786236 RAD 0.00617284 + txt002 + SPHERE CENTER -0.435761 -0.0561039 0.774481 RAD 0.00617284 + txt002 + SPHERE CENTER -0.454158 -0.0461991 0.787639 RAD 0.00617284 + txt002 + SPHERE CENTER -0.475081 -0.0725109 0.778193 RAD 0.00617284 + txt002 + SPHERE CENTER -0.477435 -0.0479721 0.779597 RAD 0.00617284 + txt002 + SPHERE CENTER -0.482316 -0.05965 0.758396 RAD 0.00617284 + txt002 + SPHERE CENTER -0.456685 -0.0824157 0.765035 RAD 0.00617284 + txt002 + SPHERE CENTER -0.46392 -0.0695548 0.745238 RAD 0.00617284 + txt002 + SPHERE CENTER -0.440643 -0.0677817 0.753281 RAD 0.00617284 + txt002 + SPHERE CENTER -0.463094 -0.0571747 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER -0.459563 -0.081612 0.692603 RAD 0.00617284 + txt002 + SPHERE CENTER -0.442243 -0.0665888 0.701767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.463589 -0.0696122 0.713804 RAD 0.00617284 + txt002 + SPHERE CENTER -0.480415 -0.0721979 0.683315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.48444 -0.0601982 0.704516 RAD 0.00617284 + txt002 + SPHERE CENTER -0.483946 -0.0477607 0.683192 RAD 0.00617284 + txt002 + SPHERE CENTER -0.459069 -0.0691745 0.671279 RAD 0.00617284 + txt002 + SPHERE CENTER -0.4626 -0.0447373 0.671155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.441749 -0.0541513 0.680442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.398096 -0.0457452 0.726118 RAD 0.0185185 + txt002 + SPHERE CENTER -0.373728 -0.0495643 0.724997 RAD 0.00617284 + txt002 + SPHERE CENTER -0.383722 -0.030137 0.713492 RAD 0.00617284 + txt002 + SPHERE CENTER -0.382672 -0.0306825 0.738155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.388102 -0.0651725 0.737623 RAD 0.00617284 + txt002 + SPHERE CENTER -0.397047 -0.0462908 0.750781 RAD 0.00617284 + txt002 + SPHERE CENTER -0.41247 -0.0613535 0.738744 RAD 0.00617284 + txt002 + SPHERE CENTER -0.389151 -0.064627 0.71296 RAD 0.00617284 + txt002 + SPHERE CENTER -0.41352 -0.060808 0.714081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399146 -0.0451997 0.701455 RAD 0.00617284 + txt002 + SPHERE CENTER -0.4293 -0.115031 0.544331 RAD 0.0555556 + txt002 + SPHERE CENTER -0.424299 -0.178985 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.412497 -0.190929 0.599471 RAD 0.00617284 + txt002 + SPHERE CENTER -0.400273 -0.174844 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.417001 -0.16674 0.601529 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436523 -0.195071 0.595564 RAD 0.00617284 + txt002 + SPHERE CENTER -0.441027 -0.170881 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.448325 -0.183127 0.577461 RAD 0.00617284 + txt002 + SPHERE CENTER -0.419795 -0.203175 0.57931 RAD 0.00617284 + txt002 + SPHERE CENTER -0.431597 -0.191231 0.561208 RAD 0.00617284 + txt002 + SPHERE CENTER -0.407571 -0.18709 0.565115 RAD 0.00617284 + txt002 + SPHERE CENTER -0.367336 -0.131634 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.343834 -0.12515 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.353814 -0.122476 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.360946 -0.107784 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.357357 -0.134308 0.603794 RAD 0.00617284 + txt002 + SPHERE CENTER -0.374468 -0.116942 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.380859 -0.140792 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.350225 -0.149 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.373727 -0.155484 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.360204 -0.146326 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.4293 -0.115031 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.41922 -0.10495 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40545 -0.10864 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.42291 -0.0911807 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.44307 -0.111341 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.44676 -0.0975713 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.45315 -0.121421 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.425611 -0.128801 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.435691 -0.138881 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.411841 -0.13249 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.486264 -0.162382 0.544331 RAD 0.0185185 + txt002 + SPHERE CENTER -0.502603 -0.174264 0.558526 RAD 0.00617284 + txt002 + SPHERE CENTER -0.479659 -0.170327 0.566757 RAD 0.00617284 + txt002 + SPHERE CENTER -0.495376 -0.15142 0.564491 RAD 0.00617284 + txt002 + SPHERE CENTER -0.509207 -0.166319 0.536101 RAD 0.00617284 + txt002 + SPHERE CENTER -0.501981 -0.143475 0.542066 RAD 0.00617284 + txt002 + SPHERE CENTER -0.492868 -0.154437 0.521905 RAD 0.00617284 + txt002 + SPHERE CENTER -0.49349 -0.185226 0.538366 RAD 0.00617284 + txt002 + SPHERE CENTER -0.477151 -0.173345 0.524171 RAD 0.00617284 + txt002 + SPHERE CENTER -0.470546 -0.18129 0.546597 RAD 0.00617284 + txt002 + SPHERE CENTER -0.491265 -0.0984274 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.501491 -0.082906 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.477742 -0.0892696 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.484874 -0.0745774 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.515014 -0.0920638 0.579103 RAD 0.00617284 + txt002 + SPHERE CENTER -0.498397 -0.0837352 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.504787 -0.107585 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.507882 -0.106756 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.497655 -0.122277 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.484132 -0.11312 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.491265 -0.0984274 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.508376 -0.0810612 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.498397 -0.0837352 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.484874 -0.0745774 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.501244 -0.0957534 0.484868 RAD 0.00617284 + txt002 + SPHERE CENTER -0.477742 -0.0892696 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.484132 -0.11312 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.514767 -0.104911 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.497655 -0.122277 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.504787 -0.107585 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.424299 -0.178985 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.411775 -0.200165 0.505236 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399922 -0.179342 0.511201 RAD 0.00617284 + txt002 + SPHERE CENTER -0.415187 -0.189948 0.527454 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436152 -0.199808 0.501329 RAD 0.00617284 + txt002 + SPHERE CENTER -0.439564 -0.189591 0.523547 RAD 0.00617284 + txt002 + SPHERE CENTER -0.448677 -0.178629 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.420888 -0.189202 0.485076 RAD 0.00617284 + txt002 + SPHERE CENTER -0.433412 -0.168023 0.487134 RAD 0.00617284 + txt002 + SPHERE CENTER -0.409035 -0.168379 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.4293 -0.115031 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER -0.439381 -0.10495 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.45315 -0.10864 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.435691 -0.0911807 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.415531 -0.111341 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.411841 -0.0975713 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40545 -0.121421 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.43299 -0.128801 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.42291 -0.138881 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.44676 -0.13249 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.367336 -0.131634 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.350719 -0.123305 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.374468 -0.116942 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.360946 -0.107784 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.343587 -0.137998 0.509559 RAD 0.00617284 + txt002 + SPHERE CENTER -0.353814 -0.122476 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.360204 -0.146326 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.357109 -0.147155 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.373727 -0.155484 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.380859 -0.140792 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.248762 -0.0483751 0.655442 RAD 0.0555556 + txt002 + SPHERE CENTER -0.183785 -0.0599222 0.689081 RAD 0.0185185 + txt002 + SPHERE CENTER -0.160406 -0.0522053 0.690965 RAD 0.00617284 + txt002 + SPHERE CENTER -0.171954 -0.0513956 0.669156 RAD 0.00617284 + txt002 + SPHERE CENTER -0.178533 -0.0358698 0.687193 RAD 0.00617284 + txt002 + SPHERE CENTER -0.172236 -0.0607319 0.71089 RAD 0.00617284 + txt002 + SPHERE CENTER -0.190363 -0.0443964 0.707118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.195615 -0.0684488 0.709006 RAD 0.00617284 + txt002 + SPHERE CENTER -0.165658 -0.0762577 0.692853 RAD 0.00617284 + txt002 + SPHERE CENTER -0.189036 -0.0839747 0.690969 RAD 0.00617284 + txt002 + SPHERE CENTER -0.177206 -0.075448 0.671044 RAD 0.00617284 + txt002 + SPHERE CENTER -0.187119 -0.0172857 0.6286 RAD 0.0185185 + txt002 + SPHERE CENTER -0.176731 -0.00705049 0.608675 RAD 0.00617284 + txt002 + SPHERE CENTER -0.192673 -0.025725 0.60607 RAD 0.00617284 + txt002 + SPHERE CENTER -0.200733 -0.00352517 0.613272 RAD 0.00617284 + txt002 + SPHERE CENTER -0.171177 0.00138875 0.631205 RAD 0.00617284 + txt002 + SPHERE CENTER -0.195179 0.00491406 0.635801 RAD 0.00617284 + txt002 + SPHERE CENTER -0.181564 -0.00884647 0.65113 RAD 0.00617284 + txt002 + SPHERE CENTER -0.163117 -0.020811 0.624003 RAD 0.00617284 + txt002 + SPHERE CENTER -0.173504 -0.0310463 0.643928 RAD 0.00617284 + txt002 + SPHERE CENTER -0.179058 -0.0394855 0.621398 RAD 0.00617284 + txt002 + SPHERE CENTER -0.215921 0.00673113 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER -0.20044 0.0258737 0.690591 RAD 0.00617284 + txt002 + SPHERE CENTER -0.196602 0.00551963 0.677151 RAD 0.00617284 + txt002 + SPHERE CENTER -0.215612 0.0203763 0.671903 RAD 0.00617284 + txt002 + SPHERE CENTER -0.21976 0.0270852 0.705919 RAD 0.00617284 + txt002 + SPHERE CENTER -0.234932 0.0215878 0.687231 RAD 0.00617284 + txt002 + SPHERE CENTER -0.235241 0.00794264 0.707807 RAD 0.00617284 + txt002 + SPHERE CENTER -0.200749 0.0122285 0.711167 RAD 0.00617284 + txt002 + SPHERE CENTER -0.21623 -0.00691403 0.713055 RAD 0.00617284 + txt002 + SPHERE CENTER -0.196911 -0.00812553 0.697727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.245428 -0.0910116 0.715923 RAD 0.0185185 + txt002 + SPHERE CENTER -0.234308 -0.0942304 0.737733 RAD 0.00617284 + txt002 + SPHERE CENTER -0.221514 -0.0854464 0.718528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.238704 -0.0714204 0.729364 RAD 0.00617284 + txt002 + SPHERE CENTER -0.258223 -0.0997955 0.735128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.262619 -0.0769856 0.726759 RAD 0.00617284 + txt002 + SPHERE CENTER -0.269343 -0.0965768 0.713318 RAD 0.00617284 + txt002 + SPHERE CENTER -0.241032 -0.113822 0.724292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.252152 -0.110603 0.702483 RAD 0.00617284 + txt002 + SPHERE CENTER -0.228237 -0.105038 0.705088 RAD 0.00617284 + txt002 + SPHERE CENTER -0.277564 -0.0243582 0.719322 RAD 0.0185185 + txt002 + SPHERE CENTER -0.275459 -0.0076281 0.737359 RAD 0.00617284 + txt002 + SPHERE CENTER -0.255218 -0.0167139 0.726523 RAD 0.00617284 + txt002 + SPHERE CENTER -0.270078 -0.00142185 0.714074 RAD 0.00617284 + txt002 + SPHERE CENTER -0.297806 -0.0152725 0.730157 RAD 0.00617284 + txt002 + SPHERE CENTER -0.292425 -0.00906621 0.706872 RAD 0.00617284 + txt002 + SPHERE CENTER -0.299911 -0.0320026 0.71212 RAD 0.00617284 + txt002 + SPHERE CENTER -0.282946 -0.0305645 0.742607 RAD 0.00617284 + txt002 + SPHERE CENTER -0.285051 -0.0472946 0.72457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.262704 -0.0396503 0.731771 RAD 0.00617284 + txt002 + SPHERE CENTER -0.310405 -0.0794645 0.682285 RAD 0.0185185 + txt002 + SPHERE CENTER -0.324811 -0.0817333 0.702209 RAD 0.00617284 + txt002 + SPHERE CENTER -0.300317 -0.0800146 0.704814 RAD 0.00617284 + txt002 + SPHERE CENTER -0.313378 -0.0603366 0.697613 RAD 0.00617284 + txt002 + SPHERE CENTER -0.334899 -0.0811832 0.67968 RAD 0.00617284 + txt002 + SPHERE CENTER -0.323466 -0.0597864 0.675083 RAD 0.00617284 + txt002 + SPHERE CENTER -0.320493 -0.0789143 0.659755 RAD 0.00617284 + txt002 + SPHERE CENTER -0.321838 -0.100861 0.686881 RAD 0.00617284 + txt002 + SPHERE CENTER -0.307433 -0.0985923 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER -0.297345 -0.0991425 0.689486 RAD 0.00617284 + txt002 + SPHERE CENTER -0.216626 -0.115028 0.652044 RAD 0.0185185 + txt002 + SPHERE CENTER -0.195663 -0.127519 0.655816 RAD 0.00617284 + txt002 + SPHERE CENTER -0.194866 -0.104303 0.647447 RAD 0.00617284 + txt002 + SPHERE CENTER -0.201738 -0.108803 0.670732 RAD 0.00617284 + txt002 + SPHERE CENTER -0.217423 -0.138245 0.660413 RAD 0.00617284 + txt002 + SPHERE CENTER -0.223497 -0.119529 0.675329 RAD 0.00617284 + txt002 + SPHERE CENTER -0.238386 -0.125754 0.656641 RAD 0.00617284 + txt002 + SPHERE CENTER -0.210551 -0.133744 0.637128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.231514 -0.121254 0.633356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.209754 -0.110528 0.628759 RAD 0.00617284 + txt002 + SPHERE CENTER -0.281603 -0.103481 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.291073 -0.126206 0.620293 RAD 0.00617284 + txt002 + SPHERE CENTER -0.271345 -0.119897 0.633733 RAD 0.00617284 + txt002 + SPHERE CENTER -0.293457 -0.110246 0.638981 RAD 0.00617284 + txt002 + SPHERE CENTER -0.301332 -0.10979 0.604965 RAD 0.00617284 + txt002 + SPHERE CENTER -0.303716 -0.0938302 0.623653 RAD 0.00617284 + txt002 + SPHERE CENTER -0.291862 -0.0870656 0.603077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.279219 -0.119442 0.599717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.269749 -0.0967168 0.597829 RAD 0.00617284 + txt002 + SPHERE CENTER -0.25949 -0.113132 0.613157 RAD 0.00617284 + txt002 + SPHERE CENTER -0.21996 -0.0723919 0.591563 RAD 0.0185185 + txt002 + SPHERE CENTER -0.20388 -0.0673141 0.573526 RAD 0.00617284 + txt002 + SPHERE CENTER -0.216456 -0.0490355 0.584361 RAD 0.00617284 + txt002 + SPHERE CENTER -0.198742 -0.0609052 0.596811 RAD 0.00617284 + txt002 + SPHERE CENTER -0.207384 -0.0906706 0.580727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.202246 -0.0842617 0.604012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.223463 -0.0957484 0.598764 RAD 0.00617284 + txt002 + SPHERE CENTER -0.225098 -0.0788008 0.568278 RAD 0.00617284 + txt002 + SPHERE CENTER -0.241177 -0.0838786 0.586315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.237674 -0.0605222 0.579113 RAD 0.00617284 + txt002 + SPHERE CENTER -0.471405 0.471405 1.11022e-16 RAD 0.166667 + txt002 + SPHERE CENTER -0.508983 0.690426 8.51251e-17 RAD 0.0555556 + txt002 + SPHERE CENTER -0.484794 0.755941 -0.0246914 RAD 0.0185185 + txt002 + SPHERE CENTER -0.47411 0.767658 -0.0436186 RAD 0.00617284 + txt002 + SPHERE CENTER -0.467528 0.744501 -0.0381316 RAD 0.00617284 + txt002 + SPHERE CENTER -0.489758 0.749038 -0.0478724 RAD 0.00617284 + txt002 + SPHERE CENTER -0.491377 0.779098 -0.0301783 RAD 0.00617284 + txt002 + SPHERE CENTER -0.507025 0.760478 -0.0344321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.502061 0.767382 -0.0112511 RAD 0.00617284 + txt002 + SPHERE CENTER -0.469146 0.774562 -0.0204376 RAD 0.00617284 + txt002 + SPHERE CENTER -0.47983 0.762845 -0.00151032 RAD 0.00617284 + txt002 + SPHERE CENTER -0.462564 0.751405 -0.0149506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436283 0.7029 -0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER -0.418941 0.714226 -0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER -0.43889 0.704751 -0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.44101 0.724842 -0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.416335 0.712374 0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER -0.438403 0.722991 0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER -0.433677 0.701048 0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER -0.414215 0.692283 -0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER -0.431557 0.680957 0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434163 0.682808 -0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER -0.478434 0.695668 -0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.481931 0.703418 -0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER -0.500827 0.694124 -0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER -0.491475 0.716184 -0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER -0.459538 0.704962 -0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER -0.469082 0.717727 -0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.456041 0.697211 -0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER -0.46889 0.682902 -0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.465393 0.675152 -0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER -0.487786 0.673608 -0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER -0.557494 0.743468 -0.0178949 RAD 0.0185185 + txt002 + SPHERE CENTER -0.560084 0.767402 -0.0233819 RAD 0.00617284 + txt002 + SPHERE CENTER -0.543179 0.760285 -0.00685171 RAD 0.00617284 + txt002 + SPHERE CENTER -0.53997 0.755145 -0.0307879 RAD 0.00617284 + txt002 + SPHERE CENTER -0.574398 0.750585 -0.0344251 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554284 0.738328 -0.0418311 RAD 0.00617284 + txt002 + SPHERE CENTER -0.571808 0.726651 -0.0289382 RAD 0.00617284 + txt002 + SPHERE CENTER -0.577608 0.755725 -0.0104889 RAD 0.00617284 + txt002 + SPHERE CENTER -0.575017 0.731791 -0.00500196 RAD 0.00617284 + txt002 + SPHERE CENTER -0.560703 0.748608 0.00604126 RAD 0.00617284 + txt002 + SPHERE CENTER -0.551134 0.683194 -0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER -0.573364 0.687731 -0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.571303 0.682033 -0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER -0.56324 0.703871 -0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER -0.553195 0.688893 -0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER -0.543071 0.705033 -0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER -0.530964 0.684356 -0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.561258 0.667055 -0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539027 0.662518 -0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.559196 0.661356 -0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER -0.581682 0.677953 0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER -0.601808 0.682851 0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER -0.579842 0.680568 0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.58454 0.700216 0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.603648 0.680237 -0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER -0.58638 0.697602 -0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER -0.583522 0.675339 -0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER -0.59895 0.660588 0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER -0.578824 0.65569 -0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.576984 0.658304 0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER -0.515343 0.7507 0.0425863 RAD 0.0185185 + txt002 + SPHERE CENTER -0.506594 0.773394 0.0468401 RAD 0.00617284 + txt002 + SPHERE CENTER -0.491321 0.755462 0.0394341 RAD 0.00617284 + txt002 + SPHERE CENTER -0.507924 0.764807 0.0237283 RAD 0.00617284 + txt002 + SPHERE CENTER -0.530616 0.768632 0.0499923 RAD 0.00617284 + txt002 + SPHERE CENTER -0.531946 0.760045 0.0268805 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539365 0.745938 0.0457385 RAD 0.00617284 + txt002 + SPHERE CENTER -0.514012 0.759287 0.065698 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522762 0.736593 0.0614442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.49874 0.741355 0.058292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539531 0.685185 0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.538818 0.693658 0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER -0.517905 0.691194 0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER -0.534075 0.708875 0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER -0.560445 0.687649 0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555702 0.702866 0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.561158 0.679176 0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER -0.544274 0.669969 0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.544988 0.661495 0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523361 0.667505 0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER -0.466832 0.697658 0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER -0.447385 0.709346 0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.447429 0.703286 0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER -0.46231 0.721188 0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER -0.466788 0.703718 0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER -0.481713 0.71556 0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER -0.486235 0.692031 0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.451907 0.685816 0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.471354 0.674129 0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.451951 0.679757 0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER -0.335322 0.607487 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.283164 0.659645 0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER -0.269894 0.672915 0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER -0.275822 0.649528 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.293281 0.666987 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.277236 0.683032 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.300624 0.677104 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.290507 0.669762 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.259777 0.665573 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.273047 0.652302 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.265705 0.642185 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.286452 0.603979 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.279361 0.614273 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.303327 0.613293 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.288206 0.628413 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.262487 0.604959 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.271332 0.619099 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.269578 0.594664 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.277607 0.589839 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.284698 0.579544 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.301572 0.588858 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.33883 0.656357 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.328536 0.663448 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.314396 0.654603 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.329516 0.639482 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.35297 0.665202 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.353951 0.641237 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.363265 0.658111 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.33785 0.680322 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.348145 0.673232 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.32371 0.671477 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.332034 0.663153 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.321274 0.684748 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.308341 0.666888 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.326131 0.678752 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.344967 0.681014 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.349824 0.675018 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.355727 0.659419 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.327177 0.669149 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.337937 0.647554 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.314244 0.651289 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.3877 0.659866 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.391875 0.684201 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37258 0.674986 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37258 0.674986 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.406996 0.669081 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.3877 0.659866 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40282 0.644745 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.406996 0.669081 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40282 0.644745 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.3877 0.659866 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.384191 0.610996 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.389739 0.622198 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.366159 0.617804 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.378964 0.63493 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.407771 0.61539 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396997 0.628121 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.402224 0.604188 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.394966 0.598265 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.389418 0.587062 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.371386 0.593871 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.279656 0.610775 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.258061 0.621535 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.264057 0.616678 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.275921 0.634468 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.27366 0.615632 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.29152 0.628565 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.295255 0.604872 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.261795 0.597842 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.28339 0.587082 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.267791 0.592985 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.331813 0.558618 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.320611 0.55307 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.30788 0.563845 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.325005 0.57665 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.344544 0.547843 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.348938 0.571423 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.355747 0.553391 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.327419 0.535038 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.338621 0.540585 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.314688 0.545813 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.282943 0.555109 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.258608 0.550934 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.267823 0.570229 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.267823 0.570229 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.273728 0.535813 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.282943 0.555109 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.298064 0.539989 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.273728 0.535813 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.298064 0.539989 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.282943 0.555109 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.335322 0.607487 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.313405 0.629404 -0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.316595 0.626214 -0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.318408 0.606941 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.335868 0.624401 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.311592 0.648676 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.330864 0.646863 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.308402 0.651867 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.294133 0.631217 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.290942 0.634407 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.295946 0.611945 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.331813 0.558618 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.319608 0.539107 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.307378 0.556863 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.322499 0.541743 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.344043 0.540862 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.346933 0.543497 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.356248 0.560372 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.328923 0.555982 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.341128 0.575492 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.316693 0.573738 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.384191 0.610996 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.403702 0.623201 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.401066 0.62031 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.385946 0.635431 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.386827 0.613886 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.369071 0.626116 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.367317 0.601681 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.401947 0.598766 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.382437 0.586561 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399312 0.595876 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.316914 0.678274 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.305407 0.69384 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.296616 0.671002 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.317721 0.674446 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.325704 0.701111 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.338018 0.681717 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.337211 0.685545 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.3046 0.697667 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.316107 0.682101 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.295809 0.67483 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.3877 0.659866 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.391875 0.684201 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37258 0.674986 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37258 0.674986 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.406996 0.669081 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.3877 0.659866 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40282 0.644745 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.406996 0.669081 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40282 0.644745 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.3877 0.659866 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.33883 0.656357 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.329538 0.677411 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.314897 0.661584 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.332022 0.674389 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.353472 0.672184 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.355956 0.669162 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.362764 0.65113 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.336346 0.659378 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.345639 0.638325 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.321705 0.643552 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.264535 0.625895 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.248969 0.637402 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.268363 0.625088 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.271807 0.646193 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.245142 0.638209 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.267979 0.647 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.260708 0.626702 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.241698 0.617105 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.257264 0.605598 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.261092 0.604791 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.286452 0.603979 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.265398 0.613271 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.26842 0.610787 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.281225 0.627912 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.283431 0.606463 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.299257 0.621104 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.304484 0.59717 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.270625 0.589337 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.291679 0.580045 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.273647 0.586853 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.282943 0.555109 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.258608 0.550934 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.267823 0.570229 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.267823 0.570229 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.273728 0.535813 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.282943 0.555109 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.298064 0.539989 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.273728 0.535813 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.298064 0.539989 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.282943 0.555109 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645066 0.554344 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.681385 0.616373 -0.129006 RAD 0.0185185 + txt002 + SPHERE CENTER -0.678928 0.639472 -0.137375 RAD 0.00617284 + txt002 + SPHERE CENTER -0.661636 0.629767 -0.122663 RAD 0.00617284 + txt002 + SPHERE CENTER -0.664108 0.621631 -0.145845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.698678 0.626079 -0.143718 RAD 0.00617284 + txt002 + SPHERE CENTER -0.683858 0.608237 -0.152187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.701135 0.602979 -0.135349 RAD 0.00617284 + txt002 + SPHERE CENTER -0.696205 0.634214 -0.120537 RAD 0.00617284 + txt002 + SPHERE CENTER -0.698662 0.611115 -0.112168 RAD 0.00617284 + txt002 + SPHERE CENTER -0.678912 0.624508 -0.105825 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649723 0.609912 -0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER -0.640648 0.631982 -0.0560094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.625749 0.614812 -0.0656463 RAD 0.00617284 + txt002 + SPHERE CENTER -0.64267 0.62585 -0.0798417 RAD 0.00617284 + txt002 + SPHERE CENTER -0.664623 0.627081 -0.0527151 RAD 0.00617284 + txt002 + SPHERE CENTER -0.666645 0.620949 -0.0765474 RAD 0.00617284 + txt002 + SPHERE CENTER -0.673698 0.605012 -0.0590577 RAD 0.00617284 + txt002 + SPHERE CENTER -0.647702 0.616044 -0.0385197 RAD 0.00617284 + txt002 + SPHERE CENTER -0.656777 0.593974 -0.0448623 RAD 0.00617284 + txt002 + SPHERE CENTER -0.632802 0.598874 -0.0481565 RAD 0.00617284 + txt002 + SPHERE CENTER -0.607573 0.617144 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.595495 0.63057 -0.139672 RAD 0.00617284 + txt002 + SPHERE CENTER -0.594239 0.605919 -0.140323 RAD 0.00617284 + txt002 + SPHERE CENTER -0.615286 0.617371 -0.146288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.608828 0.641795 -0.122182 RAD 0.00617284 + txt002 + SPHERE CENTER -0.628619 0.628595 -0.128798 RAD 0.00617284 + txt002 + SPHERE CENTER -0.620906 0.628369 -0.105343 RAD 0.00617284 + txt002 + SPHERE CENTER -0.587782 0.630343 -0.116217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.59986 0.616917 -0.0993785 RAD 0.00617284 + txt002 + SPHERE CENTER -0.586526 0.605692 -0.116868 RAD 0.00617284 + txt002 + SPHERE CENTER -0.676727 0.560805 -0.177765 RAD 0.0185185 + txt002 + SPHERE CENTER -0.689897 0.57563 -0.192477 RAD 0.00617284 + txt002 + SPHERE CENTER -0.693998 0.575587 -0.168128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.673115 0.585222 -0.177114 RAD 0.00617284 + txt002 + SPHERE CENTER -0.672626 0.560848 -0.202114 RAD 0.00617284 + txt002 + SPHERE CENTER -0.655844 0.57044 -0.186751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.659456 0.546023 -0.187402 RAD 0.00617284 + txt002 + SPHERE CENTER -0.693509 0.551213 -0.193128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.680339 0.536388 -0.178416 RAD 0.00617284 + txt002 + SPHERE CENTER -0.69761 0.55117 -0.16878 RAD 0.00617284 + txt002 + SPHERE CENTER -0.602915 0.561576 -0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER -0.602201 0.570049 -0.194773 RAD 0.00617284 + txt002 + SPHERE CENTER -0.623084 0.560414 -0.185788 RAD 0.00617284 + txt002 + SPHERE CENTER -0.615021 0.582252 -0.177557 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582032 0.571211 -0.180578 RAD 0.00617284 + txt002 + SPHERE CENTER -0.594852 0.583414 -0.163362 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582745 0.562738 -0.157397 RAD 0.00617284 + txt002 + SPHERE CENTER -0.590095 0.549372 -0.188808 RAD 0.00617284 + txt002 + SPHERE CENTER -0.590808 0.540899 -0.165627 RAD 0.00617284 + txt002 + SPHERE CENTER -0.610978 0.539737 -0.179823 RAD 0.00617284 + txt002 + SPHERE CENTER -0.640408 0.498776 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.627785 0.478525 -0.166213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.615951 0.497935 -0.156576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.630799 0.484234 -0.142381 RAD 0.00617284 + txt002 + SPHERE CENTER -0.652241 0.479365 -0.169507 RAD 0.00617284 + txt002 + SPHERE CENTER -0.655255 0.485075 -0.145675 RAD 0.00617284 + txt002 + SPHERE CENTER -0.664864 0.499616 -0.163165 RAD 0.00617284 + txt002 + SPHERE CENTER -0.637394 0.493066 -0.183703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.650016 0.513317 -0.17736 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62556 0.512476 -0.174066 RAD 0.00617284 + txt002 + SPHERE CENTER -0.718878 0.553573 -0.117284 RAD 0.0185185 + txt002 + SPHERE CENTER -0.73992 0.563328 -0.108814 RAD 0.00617284 + txt002 + SPHERE CENTER -0.720935 0.559693 -0.0934517 RAD 0.00617284 + txt002 + SPHERE CENTER -0.719679 0.577348 -0.110668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.737863 0.557208 -0.132647 RAD 0.00617284 + txt002 + SPHERE CENTER -0.717623 0.571228 -0.1345 RAD 0.00617284 + txt002 + SPHERE CENTER -0.716821 0.547453 -0.141116 RAD 0.00617284 + txt002 + SPHERE CENTER -0.739118 0.539553 -0.115431 RAD 0.00617284 + txt002 + SPHERE CENTER -0.718076 0.529798 -0.1239 RAD 0.00617284 + txt002 + SPHERE CENTER -0.720133 0.535918 -0.100068 RAD 0.00617284 + txt002 + SPHERE CENTER -0.682558 0.491544 -0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.688647 0.474542 -0.0825505 RAD 0.00617284 + txt002 + SPHERE CENTER -0.666351 0.485132 -0.0818993 RAD 0.00617284 + txt002 + SPHERE CENTER -0.686417 0.498226 -0.0759343 RAD 0.00617284 + txt002 + SPHERE CENTER -0.704854 0.480953 -0.10004 RAD 0.00617284 + txt002 + SPHERE CENTER -0.702624 0.504637 -0.093424 RAD 0.00617284 + txt002 + SPHERE CENTER -0.698765 0.497955 -0.116879 RAD 0.00617284 + txt002 + SPHERE CENTER -0.684788 0.46786 -0.106005 RAD 0.00617284 + txt002 + SPHERE CENTER -0.678699 0.484862 -0.122844 RAD 0.00617284 + txt002 + SPHERE CENTER -0.662492 0.47845 -0.105354 RAD 0.00617284 + txt002 + SPHERE CENTER -0.687216 0.547112 -0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER -0.690713 0.554862 -0.0274488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.667813 0.552739 -0.0364345 RAD 0.00617284 + txt002 + SPHERE CENTER -0.682694 0.570641 -0.0446649 RAD 0.00617284 + txt002 + SPHERE CENTER -0.710116 0.549235 -0.0416443 RAD 0.00617284 + txt002 + SPHERE CENTER -0.702097 0.565014 -0.0588603 RAD 0.00617284 + txt002 + SPHERE CENTER -0.706619 0.541484 -0.0648253 RAD 0.00617284 + txt002 + SPHERE CENTER -0.695235 0.531333 -0.0334138 RAD 0.00617284 + txt002 + SPHERE CENTER -0.691738 0.523582 -0.0565949 RAD 0.00617284 + txt002 + SPHERE CENTER -0.672335 0.52921 -0.0423994 RAD 0.00617284 + txt002 + SPHERE CENTER -0.471405 0.471405 -0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER -0.501645 0.501645 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.499795 0.519956 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.493653 0.523893 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.479397 0.509638 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.507788 0.497708 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.48739 0.48739 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.509638 0.479397 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522043 0.511963 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523893 0.493653 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.515901 0.515901 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542955 0.490576 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.559233 0.507719 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539759 0.502501 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536564 0.514426 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.562428 0.495794 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539759 0.502501 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.54615 0.478651 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.565623 0.483869 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.549345 0.466726 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.54615 0.478651 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.490576 0.542955 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.483869 0.565623 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.466726 0.549345 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.478651 0.54615 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.507719 0.559233 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.502501 0.539759 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.514426 0.536564 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.495794 0.562428 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.502501 0.539759 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.478651 0.54615 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.430095 0.482473 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.430434 0.489762 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.449569 0.477255 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.445366 0.500519 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.41096 0.49498 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.425893 0.505737 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.410622 0.487691 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.415162 0.471716 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.414824 0.464428 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434297 0.45921 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.419026 0.523783 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.404771 0.538038 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.410297 0.515053 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.427756 0.532513 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.4135 0.546768 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436486 0.541242 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.427756 0.532513 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396041 0.529309 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.410297 0.515053 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.401567 0.506323 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399854 0.452233 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.377186 0.45894 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396659 0.464158 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.393464 0.476083 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.380381 0.447015 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396659 0.464158 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40305 0.440308 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.383576 0.43509 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.406245 0.428383 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40305 0.440308 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.482473 0.430095 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.48121 0.407271 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.464428 0.414824 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.487691 0.410622 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.499256 0.422542 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.505737 0.425893 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.500519 0.445366 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.475992 0.426744 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.477255 0.449569 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.45921 0.434297 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.452233 0.399854 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.43509 0.383576 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.428383 0.406245 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.440308 0.40305 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.45894 0.377186 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.464158 0.396659 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.476083 0.393464 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.447015 0.380381 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.464158 0.396659 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.440308 0.40305 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523783 0.419026 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.538038 0.404771 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.515053 0.410297 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.532513 0.427756 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.546768 0.4135 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.541242 0.436486 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.532513 0.427756 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.529309 0.396041 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.515053 0.410297 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.506323 0.401567 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.607487 0.335322 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.659645 0.283164 -0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER -0.672915 0.269894 -0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649528 0.275822 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.666987 0.293281 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.683032 0.277236 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.677104 0.300624 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.669762 0.290507 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.665573 0.259777 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.652302 0.273047 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.642185 0.265705 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.603979 0.286452 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.592776 0.280905 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.580045 0.291679 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.59717 0.304484 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.61671 0.275678 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.621104 0.299257 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.627912 0.281225 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.599585 0.262872 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.610787 0.26842 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.586853 0.273647 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.656357 0.33883 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.661904 0.350033 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.638325 0.345639 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.65113 0.362764 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.679937 0.343224 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.669162 0.355956 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.674389 0.332022 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.667131 0.326099 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.661584 0.314897 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643552 0.321705 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.663153 0.332034 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.685865 0.340177 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.679339 0.33606 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.669651 0.355123 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.669679 0.336151 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.653465 0.351097 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.646968 0.328008 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.679367 0.317089 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.656656 0.308945 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.672841 0.312971 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.659866 0.3877 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.664041 0.412036 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.644745 0.40282 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.644745 0.40282 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.679161 0.396915 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.659866 0.3877 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.674986 0.37258 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.679161 0.396915 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.674986 0.37258 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.659866 0.3877 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.610996 0.384191 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.600701 0.391282 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.586561 0.382437 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.601681 0.367317 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.625136 0.393037 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.626116 0.369071 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.635431 0.385946 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.610016 0.408157 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62031 0.401066 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.595876 0.399312 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.610775 0.279656 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.602632 0.256944 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.587686 0.273158 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.606749 0.26347 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62572 0.263442 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.629838 0.269968 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.633864 0.286153 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.606658 0.27313 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.614801 0.295841 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.591712 0.289344 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.558618 0.331813 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.551527 0.342108 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.575492 0.341128 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.560372 0.356248 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.534652 0.332793 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.543497 0.346933 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.541743 0.322499 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.549772 0.317673 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.556863 0.307378 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.573738 0.316693 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555109 0.282943 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.530773 0.278768 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539989 0.298064 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539989 0.298064 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.545894 0.263648 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555109 0.282943 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.570229 0.267823 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.545894 0.263648 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.570229 0.267823 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555109 0.282943 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645066 0.554344 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.668521 0.610229 0.153697 RAD 0.0185185 + txt002 + SPHERE CENTER -0.663938 0.633406 0.160875 RAD 0.00617284 + txt002 + SPHERE CENTER -0.64522 0.617928 0.156428 RAD 0.00617284 + txt002 + SPHERE CENTER -0.65892 0.626429 0.137727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.687239 0.625707 0.158144 RAD 0.00617284 + txt002 + SPHERE CENTER -0.682221 0.61873 0.134996 RAD 0.00617284 + txt002 + SPHERE CENTER -0.691822 0.602531 0.150967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.673539 0.617206 0.176845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.678123 0.59403 0.169668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.654822 0.601728 0.172398 RAD 0.00617284 + txt002 + SPHERE CENTER -0.598918 0.585648 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.580238 0.601562 0.162601 RAD 0.00617284 + txt002 + SPHERE CENTER -0.581665 0.587563 0.142311 RAD 0.00617284 + txt002 + SPHERE CENTER -0.59781 0.605914 0.14581 RAD 0.00617284 + txt002 + SPHERE CENTER -0.597491 0.599646 0.18016 RAD 0.00617284 + txt002 + SPHERE CENTER -0.615063 0.603999 0.163369 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616171 0.583732 0.177429 RAD 0.00617284 + txt002 + SPHERE CENTER -0.581346 0.581295 0.176661 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600026 0.565381 0.173931 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582773 0.567297 0.156372 RAD 0.00617284 + txt002 + SPHERE CENTER -0.619787 0.622977 0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.608008 0.63767 0.0834188 RAD 0.00617284 + txt002 + SPHERE CENTER -0.601637 0.613891 0.0853287 RAD 0.00617284 + txt002 + SPHERE CENTER -0.623239 0.620102 0.0751099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.626157 0.646756 0.0974792 RAD 0.00617284 + txt002 + SPHERE CENTER -0.641389 0.629188 0.0891702 RAD 0.00617284 + txt002 + SPHERE CENTER -0.637936 0.632063 0.113449 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604555 0.640545 0.107698 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616334 0.625852 0.123668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.598184 0.616766 0.109608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.714669 0.578925 0.104938 RAD 0.0185185 + txt002 + SPHERE CENTER -0.729812 0.597914 0.109385 RAD 0.00617284 + txt002 + SPHERE CENTER -0.711617 0.592661 0.125228 RAD 0.00617284 + txt002 + SPHERE CENTER -0.70632 0.602084 0.103028 RAD 0.00617284 + txt002 + SPHERE CENTER -0.732864 0.584178 0.0890951 RAD 0.00617284 + txt002 + SPHERE CENTER -0.709372 0.588348 0.0827387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.71772 0.565189 0.0846485 RAD 0.00617284 + txt002 + SPHERE CENTER -0.738161 0.574755 0.111295 RAD 0.00617284 + txt002 + SPHERE CENTER -0.723017 0.555767 0.106848 RAD 0.00617284 + txt002 + SPHERE CENTER -0.719965 0.569503 0.127138 RAD 0.00617284 + txt002 + SPHERE CENTER -0.665934 0.591673 0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER -0.658095 0.605761 0.0319289 RAD 0.00617284 + txt002 + SPHERE CENTER -0.647455 0.607672 0.0541285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643855 0.58746 0.0404111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.676573 0.589763 0.0284303 RAD 0.00617284 + txt002 + SPHERE CENTER -0.662334 0.571461 0.0369125 RAD 0.00617284 + txt002 + SPHERE CENTER -0.684413 0.575674 0.0471312 RAD 0.00617284 + txt002 + SPHERE CENTER -0.680174 0.609975 0.0421477 RAD 0.00617284 + txt002 + SPHERE CENTER -0.688013 0.595887 0.0608487 RAD 0.00617284 + txt002 + SPHERE CENTER -0.669535 0.611885 0.0643473 RAD 0.00617284 + txt002 + SPHERE CENTER -0.691213 0.52304 0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER -0.712906 0.511567 0.0596212 RAD 0.00617284 + txt002 + SPHERE CENTER -0.699372 0.507717 0.079911 RAD 0.00617284 + txt002 + SPHERE CENTER -0.710453 0.529503 0.0764123 RAD 0.00617284 + txt002 + SPHERE CENTER -0.704747 0.526889 0.0420622 RAD 0.00617284 + txt002 + SPHERE CENTER -0.702295 0.544826 0.0588533 RAD 0.00617284 + txt002 + SPHERE CENTER -0.683054 0.538362 0.044793 RAD 0.00617284 + txt002 + SPHERE CENTER -0.693665 0.505104 0.0455609 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671972 0.516576 0.0482916 RAD 0.00617284 + txt002 + SPHERE CENTER -0.680131 0.501254 0.0658506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.6938 0.541596 0.165419 RAD 0.0185185 + txt002 + SPHERE CENTER -0.70016 0.547376 0.188567 RAD 0.00617284 + txt002 + SPHERE CENTER -0.676324 0.546319 0.182211 RAD 0.00617284 + txt002 + SPHERE CENTER -0.690564 0.564621 0.173728 RAD 0.00617284 + txt002 + SPHERE CENTER -0.717636 0.542652 0.171776 RAD 0.00617284 + txt002 + SPHERE CENTER -0.70804 0.559898 0.156937 RAD 0.00617284 + txt002 + SPHERE CENTER -0.711276 0.536873 0.148628 RAD 0.00617284 + txt002 + SPHERE CENTER -0.703396 0.524351 0.180258 RAD 0.00617284 + txt002 + SPHERE CENTER -0.697037 0.518571 0.157111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.679561 0.523294 0.173902 RAD 0.00617284 + txt002 + SPHERE CENTER -0.670344 0.48571 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.67091 0.466887 0.138803 RAD 0.00617284 + txt002 + SPHERE CENTER -0.650637 0.480853 0.136894 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671107 0.490138 0.147112 RAD 0.00617284 + txt002 + SPHERE CENTER -0.690617 0.471745 0.124743 RAD 0.00617284 + txt002 + SPHERE CENTER -0.690815 0.494995 0.133052 RAD 0.00617284 + txt002 + SPHERE CENTER -0.690052 0.490567 0.108773 RAD 0.00617284 + txt002 + SPHERE CENTER -0.670147 0.46246 0.114524 RAD 0.00617284 + txt002 + SPHERE CENTER -0.669581 0.481283 0.0985541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649874 0.476425 0.112614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624197 0.517014 0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER -0.60809 0.516313 0.190293 RAD 0.00617284 + txt002 + SPHERE CENTER -0.60089 0.524375 0.168094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616221 0.538029 0.181811 RAD 0.00617284 + txt002 + SPHERE CENTER -0.631397 0.508952 0.193792 RAD 0.00617284 + txt002 + SPHERE CENTER -0.639529 0.530668 0.18531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.647504 0.509653 0.175091 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616065 0.495298 0.180075 RAD 0.00617284 + txt002 + SPHERE CENTER -0.632172 0.495999 0.161374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.608865 0.50336 0.157875 RAD 0.00617284 + txt002 + SPHERE CENTER -0.607487 0.335322 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.629404 0.313405 0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.626214 0.316595 0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.606941 0.318408 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624401 0.335868 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.648676 0.311592 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.646863 0.330864 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.651867 0.308402 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.631217 0.294133 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.634407 0.290942 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.611945 0.295946 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.558618 0.331813 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.537564 0.341105 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.540585 0.338621 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.553391 0.355747 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555596 0.334297 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.571423 0.348938 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.57665 0.325005 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542791 0.317172 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.563845 0.30788 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.545813 0.314688 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.610996 0.384191 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.601704 0.405245 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.587062 0.389418 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604188 0.402224 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.625637 0.400018 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.628121 0.396997 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.63493 0.378964 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.608512 0.387213 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.617804 0.366159 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593871 0.371386 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.678274 0.316914 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.697473 0.31938 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.674538 0.318074 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.681812 0.338182 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.701209 0.31822 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.685547 0.337022 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.682009 0.315754 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.693935 0.298112 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.674736 0.295646 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671 0.296805 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.659866 0.3877 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.664041 0.412036 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.644745 0.40282 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.644745 0.40282 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.679161 0.396915 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.659866 0.3877 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.674986 0.37258 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.679161 0.396915 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.674986 0.37258 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.659866 0.3877 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.656357 0.33883 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.675867 0.351035 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.673232 0.348145 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.658111 0.363265 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.658993 0.341721 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.641237 0.353951 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.639482 0.329516 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.674113 0.3266 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.654603 0.314396 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671477 0.32371 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.625895 0.264535 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.623429 0.245336 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604627 0.260997 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624736 0.268271 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.644697 0.248874 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.646004 0.271809 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.647163 0.268073 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624589 0.2416 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.627055 0.2608 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.605787 0.257262 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.603979 0.286452 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.591774 0.266942 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.579544 0.284698 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.594664 0.269578 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616209 0.268696 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.619099 0.271332 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.628413 0.288206 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.601088 0.283817 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.613293 0.303327 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.588858 0.301572 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555109 0.282943 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.530773 0.278768 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539989 0.298064 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539989 0.298064 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.545894 0.263648 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555109 0.282943 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.570229 0.267823 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.545894 0.263648 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.570229 0.267823 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555109 0.282943 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.471405 0.471405 0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER -0.441164 0.501645 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.424703 0.518106 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.420089 0.505261 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.437548 0.522721 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.445778 0.51449 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.458623 0.519105 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.462239 0.498029 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.428319 0.497031 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.44478 0.48057 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.423704 0.484186 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399854 0.490576 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.382226 0.502679 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399854 0.490576 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.405389 0.511231 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.382226 0.502679 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.405389 0.511231 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399854 0.490576 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.376691 0.482024 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.39432 0.469922 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.39432 0.469922 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.452233 0.542955 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.44013 0.560583 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.431578 0.53742 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.452233 0.542955 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.460785 0.566118 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.472887 0.548489 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.472887 0.548489 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.44013 0.560583 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.452233 0.542955 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.431578 0.53742 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.512714 0.482473 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.51514 0.495905 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.492654 0.48988 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.506323 0.506323 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.5352 0.488498 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.526383 0.498917 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.532774 0.475067 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.521531 0.472055 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.519105 0.458623 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.499045 0.46603 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523783 0.523783 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.527958 0.548119 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.508662 0.538903 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.508662 0.538903 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.543078 0.532998 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523783 0.523783 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.538903 0.508662 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.543078 0.532998 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.538903 0.508662 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.523783 0.523783 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542955 0.452233 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.564273 0.4539 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542955 0.452233 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.548489 0.472887 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.564273 0.4539 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.548489 0.472887 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542955 0.452233 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.558738 0.433245 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.53742 0.431578 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.53742 0.431578 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.460336 0.430095 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.446904 0.427669 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436486 0.436486 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.45293 0.450155 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.470754 0.421278 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.47678 0.443764 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.484186 0.423704 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.454311 0.407609 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.467742 0.410035 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.443892 0.416426 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.490576 0.399854 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.488909 0.378536 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.469922 0.39432 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.490576 0.399854 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.509564 0.384071 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.511231 0.405389 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.511231 0.405389 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.488909 0.378536 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.490576 0.399854 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.469922 0.39432 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.419026 0.419026 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.39469 0.414851 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.403906 0.434147 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.403906 0.434147 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.409811 0.399731 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.419026 0.419026 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434147 0.403906 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.409811 0.399731 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434147 0.403906 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.419026 0.419026 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643951 -0.172546 1.11022e-16 RAD 0.166667 + txt002 + SPHERE CENTER -0.835815 -0.157543 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.871646 -0.122136 0.165419 RAD 0.0185185 + txt002 + SPHERE CENTER -0.871334 -0.102403 0.180258 RAD 0.00617284 + txt002 + SPHERE CENTER -0.850164 -0.113406 0.173902 RAD 0.00617284 + txt002 + SPHERE CENTER -0.862937 -0.100577 0.157111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.892817 -0.111133 0.171776 RAD 0.00617284 + txt002 + SPHERE CENTER -0.884419 -0.109307 0.148628 RAD 0.00617284 + txt002 + SPHERE CENTER -0.893129 -0.130866 0.156937 RAD 0.00617284 + txt002 + SPHERE CENTER -0.880044 -0.123961 0.188567 RAD 0.00617284 + txt002 + SPHERE CENTER -0.880356 -0.143694 0.173728 RAD 0.00617284 + txt002 + SPHERE CENTER -0.858873 -0.134964 0.182211 RAD 0.00617284 + txt002 + SPHERE CENTER -0.799077 -0.135649 0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER -0.781177 -0.120908 0.180075 RAD 0.00617284 + txt002 + SPHERE CENTER -0.778973 -0.13149 0.157875 RAD 0.00617284 + txt002 + SPHERE CENTER -0.795477 -0.113462 0.161374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.801282 -0.125067 0.193792 RAD 0.00617284 + txt002 + SPHERE CENTER -0.815582 -0.11762 0.175091 RAD 0.00617284 + txt002 + SPHERE CENTER -0.819182 -0.139808 0.18531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.784778 -0.143095 0.190293 RAD 0.00617284 + txt002 + SPHERE CENTER -0.802678 -0.157836 0.181811 RAD 0.00617284 + txt002 + SPHERE CENTER -0.782573 -0.153678 0.168094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.82339 -0.0854653 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.811594 -0.0654286 0.114524 RAD 0.00617284 + txt002 + SPHERE CENTER -0.80102 -0.0876595 0.112614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.820516 -0.0820122 0.0985541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.833964 -0.0632344 0.124743 RAD 0.00617284 + txt002 + SPHERE CENTER -0.842886 -0.079818 0.108773 RAD 0.00617284 + txt002 + SPHERE CENTER -0.845761 -0.083271 0.133052 RAD 0.00617284 + txt002 + SPHERE CENTER -0.814468 -0.0688817 0.138803 RAD 0.00617284 + txt002 + SPHERE CENTER -0.826265 -0.0889183 0.147112 RAD 0.00617284 + txt002 + SPHERE CENTER -0.803895 -0.0911125 0.136894 RAD 0.00617284 + txt002 + SPHERE CENTER -0.908384 -0.14403 0.104938 RAD 0.0185185 + txt002 + SPHERE CENTER -0.926643 -0.128672 0.111295 RAD 0.00617284 + txt002 + SPHERE CENTER -0.90826 -0.133221 0.127138 RAD 0.00617284 + txt002 + SPHERE CENTER -0.904034 -0.1198 0.106848 RAD 0.00617284 + txt002 + SPHERE CENTER -0.926768 -0.139481 0.0890951 RAD 0.00617284 + txt002 + SPHERE CENTER -0.904159 -0.130608 0.0846485 RAD 0.00617284 + txt002 + SPHERE CENTER -0.908508 -0.154838 0.0827387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.930993 -0.152902 0.109385 RAD 0.00617284 + txt002 + SPHERE CENTER -0.912733 -0.16826 0.103028 RAD 0.00617284 + txt002 + SPHERE CENTER -0.912609 -0.157451 0.125228 RAD 0.00617284 + txt002 + SPHERE CENTER -0.860128 -0.107359 0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER -0.853284 -0.0905999 0.0455609 RAD 0.00617284 + txt002 + SPHERE CENTER -0.839638 -0.0940331 0.0658506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.840233 -0.111382 0.0482916 RAD 0.00617284 + txt002 + SPHERE CENTER -0.873773 -0.103926 0.0420622 RAD 0.00617284 + txt002 + SPHERE CENTER -0.860723 -0.124708 0.044793 RAD 0.00617284 + txt002 + SPHERE CENTER -0.880618 -0.120685 0.0588533 RAD 0.00617284 + txt002 + SPHERE CENTER -0.873178 -0.086577 0.0596212 RAD 0.00617284 + txt002 + SPHERE CENTER -0.880022 -0.103336 0.0764123 RAD 0.00617284 + txt002 + SPHERE CENTER -0.859532 -0.0900102 0.079911 RAD 0.00617284 + txt002 + SPHERE CENTER -0.872552 -0.179437 0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER -0.894035 -0.188167 0.0421477 RAD 0.00617284 + txt002 + SPHERE CENTER -0.885777 -0.195141 0.0643473 RAD 0.00617284 + txt002 + SPHERE CENTER -0.89378 -0.172046 0.0608487 RAD 0.00617284 + txt002 + SPHERE CENTER -0.880811 -0.172463 0.0284303 RAD 0.00617284 + txt002 + SPHERE CENTER -0.880556 -0.156342 0.0471312 RAD 0.00617284 + txt002 + SPHERE CENTER -0.859328 -0.163733 0.0369125 RAD 0.00617284 + txt002 + SPHERE CENTER -0.872807 -0.195558 0.0319289 RAD 0.00617284 + txt002 + SPHERE CENTER -0.851325 -0.186828 0.0404111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.864549 -0.202532 0.0541285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.884071 -0.194213 0.153697 RAD 0.0185185 + txt002 + SPHERE CENTER -0.891905 -0.197746 0.176845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.867957 -0.193701 0.172398 RAD 0.00617284 + txt002 + SPHERE CENTER -0.884286 -0.175383 0.169668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.908019 -0.198259 0.158144 RAD 0.00617284 + txt002 + SPHERE CENTER -0.900401 -0.175896 0.150967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.900186 -0.194726 0.134996 RAD 0.00617284 + txt002 + SPHERE CENTER -0.89169 -0.216576 0.160875 RAD 0.00617284 + txt002 + SPHERE CENTER -0.883856 -0.213043 0.137727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.867741 -0.212531 0.156428 RAD 0.00617284 + txt002 + SPHERE CENTER -0.84824 -0.229621 0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.843832 -0.25245 0.107698 RAD 0.00617284 + txt002 + SPHERE CENTER -0.826426 -0.235043 0.109608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.846687 -0.233837 0.123668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.865646 -0.247028 0.0974792 RAD 0.00617284 + txt002 + SPHERE CENTER -0.868501 -0.228415 0.113449 RAD 0.00617284 + txt002 + SPHERE CENTER -0.870053 -0.224198 0.0891702 RAD 0.00617284 + txt002 + SPHERE CENTER -0.845385 -0.248234 0.0834188 RAD 0.00617284 + txt002 + SPHERE CENTER -0.849792 -0.225404 0.0751099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.827978 -0.230827 0.0853287 RAD 0.00617284 + txt002 + SPHERE CENTER -0.811502 -0.207727 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.794108 -0.212743 0.176661 RAD 0.00617284 + txt002 + SPHERE CENTER -0.788345 -0.199907 0.156372 RAD 0.00617284 + txt002 + SPHERE CENTER -0.802328 -0.189621 0.173931 RAD 0.00617284 + txt002 + SPHERE CENTER -0.817265 -0.220563 0.18016 RAD 0.00617284 + txt002 + SPHERE CENTER -0.825486 -0.197441 0.177429 RAD 0.00617284 + txt002 + SPHERE CENTER -0.83466 -0.215547 0.163369 RAD 0.00617284 + txt002 + SPHERE CENTER -0.803282 -0.230849 0.162601 RAD 0.00617284 + txt002 + SPHERE CENTER -0.820676 -0.225832 0.14581 RAD 0.00617284 + txt002 + SPHERE CENTER -0.797518 -0.218012 0.142311 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643951 -0.172546 0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER -0.61371 -0.142305 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.597249 -0.125845 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.592635 -0.138689 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.610094 -0.12123 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.618324 -0.12946 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.631169 -0.124846 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.634785 -0.145921 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600865 -0.14692 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.617326 -0.163381 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.596251 -0.159765 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.5724 -0.153374 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.554772 -0.141271 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.5724 -0.153374 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.577935 -0.13272 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554772 -0.141271 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.577935 -0.13272 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.5724 -0.153374 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.549237 -0.161926 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.566866 -0.174029 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.566866 -0.174029 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624779 -0.100996 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.612676 -0.0833673 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604124 -0.10653 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624779 -0.100996 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.633331 -0.0778329 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645433 -0.0954616 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645433 -0.0954616 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.612676 -0.0833673 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624779 -0.100996 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604124 -0.10653 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.68526 -0.161477 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.687686 -0.148046 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.6652 -0.154071 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.678869 -0.137627 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.707746 -0.155452 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.698929 -0.145033 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.70532 -0.168883 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.694077 -0.171896 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.691651 -0.185327 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671591 -0.177921 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.696329 -0.120168 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.700504 -0.095832 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.681209 -0.105047 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.681209 -0.105047 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.715624 -0.110952 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.696329 -0.120168 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.711449 -0.135288 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.715624 -0.110952 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.711449 -0.135288 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.696329 -0.120168 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.715501 -0.191718 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.736819 -0.190051 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.715501 -0.191718 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.721035 -0.171063 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.736819 -0.190051 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.721035 -0.171063 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.715501 -0.191718 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.731284 -0.210706 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.709966 -0.212373 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.709966 -0.212373 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.632882 -0.213855 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.61945 -0.216282 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.609032 -0.207465 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.625476 -0.193796 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.6433 -0.222672 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649326 -0.200186 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.656732 -0.220246 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.626857 -0.236341 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.640288 -0.233915 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616438 -0.227525 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.663122 -0.244096 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.661455 -0.265414 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.642468 -0.249631 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.663122 -0.244096 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.68211 -0.25988 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.683777 -0.238562 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.683777 -0.238562 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.661455 -0.265414 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.663122 -0.244096 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.642468 -0.249631 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.591572 -0.224924 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.567237 -0.2291 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.576452 -0.209804 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.576452 -0.209804 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582357 -0.24422 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.591572 -0.224924 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.606693 -0.240045 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582357 -0.24422 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.606693 -0.240045 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.591572 -0.224924 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.69376 0.0133465 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.674309 0.0838533 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.66171 0.103063 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.653258 0.0800983 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.673446 0.0876683 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.682761 0.106818 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.694497 0.0914233 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.69536 0.0876083 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.662574 0.0992478 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.675172 0.0800382 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.654121 0.0762832 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62221 0.0325183 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.604582 0.0446211 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62221 0.0325183 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.627745 0.053173 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604582 0.0446211 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.627745 0.053173 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62221 0.0325183 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.599047 0.0239663 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616676 0.0118635 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616676 0.0118635 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.666287 0.0539145 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.662466 0.0547519 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.660752 0.0332597 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.682791 0.0439578 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.668 0.0754066 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.688325 0.0646126 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671821 0.0745692 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645962 0.0647085 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649783 0.0638711 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.644249 0.0432164 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.745859 0.0646815 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.750021 0.0887955 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.729506 0.078459 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.732161 0.0813312 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.766375 0.075018 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.748514 0.0675537 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.762212 0.050904 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.763719 0.0721458 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.759557 0.0480318 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.743204 0.0618093 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.737837 0.0347427 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.747099 0.0542122 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.743371 0.0553974 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.7241 0.0550267 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.741565 0.0335575 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.718566 0.0343719 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.732303 0.014088 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.760836 0.0339282 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.751574 0.0144587 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.757108 0.0351134 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.76531 -0.0058253 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.786629 -0.00415829 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.76531 -0.0058253 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.770845 0.0148294 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.786629 -0.00415829 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.770845 0.0148294 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.76531 -0.0058253 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.781094 -0.024813 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.759776 -0.02648 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.759776 -0.02648 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.701782 0.0432853 0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.693716 0.0608821 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.677932 0.0496759 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.694884 0.0652402 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.717566 0.0544915 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.718734 0.0588496 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.725632 0.0368947 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.700615 0.0389272 0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.708681 0.0213304 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.684831 0.027721 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.721234 -0.0272215 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.720593 -0.0310802 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.7 -0.0246945 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.718114 -0.00820099 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.741827 -0.0336072 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.739347 -0.010728 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.742467 -0.0297485 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.723713 -0.0501007 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.724354 -0.046242 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.70312 -0.043715 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649684 -0.00804971 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.628657 -0.00328338 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.630031 0.000378614 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.642244 0.0152909 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.648309 -0.0117117 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.661896 0.00686255 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.669336 -0.016478 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.636097 -0.026624 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.657124 -0.0313903 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.637471 -0.022962 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.835815 -0.157543 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.899353 -0.119969 -0.117284 RAD 0.0185185 + txt002 + SPHERE CENTER -0.909872 -0.0977075 -0.115431 RAD 0.00617284 + txt002 + SPHERE CENTER -0.891613 -0.104052 -0.100068 RAD 0.00617284 + txt002 + SPHERE CENTER -0.886771 -0.0997803 -0.1239 RAD 0.00617284 + txt002 + SPHERE CENTER -0.917612 -0.113625 -0.132647 RAD 0.00617284 + txt002 + SPHERE CENTER -0.894512 -0.115698 -0.141116 RAD 0.00617284 + txt002 + SPHERE CENTER -0.907093 -0.135886 -0.1345 RAD 0.00617284 + txt002 + SPHERE CENTER -0.922453 -0.117896 -0.108814 RAD 0.00617284 + txt002 + SPHERE CENTER -0.911935 -0.140158 -0.110668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.904194 -0.124241 -0.0934517 RAD 0.00617284 + txt002 + SPHERE CENTER -0.868703 -0.130205 -0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER -0.867758 -0.11253 -0.0334138 RAD 0.00617284 + txt002 + SPHERE CENTER -0.846864 -0.122142 -0.0423994 RAD 0.00617284 + txt002 + SPHERE CENTER -0.860854 -0.107566 -0.0565949 RAD 0.00617284 + txt002 + SPHERE CENTER -0.889596 -0.120593 -0.0416443 RAD 0.00617284 + txt002 + SPHERE CENTER -0.882692 -0.115629 -0.0648253 RAD 0.00617284 + txt002 + SPHERE CENTER -0.890541 -0.138267 -0.0588603 RAD 0.00617284 + txt002 + SPHERE CENTER -0.875606 -0.135168 -0.0274488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.876551 -0.152843 -0.0446649 RAD 0.00617284 + txt002 + SPHERE CENTER -0.854713 -0.14478 -0.0364345 RAD 0.00617284 + txt002 + SPHERE CENTER -0.836885 -0.0844101 -0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.826973 -0.0627848 -0.106005 RAD 0.00617284 + txt002 + SPHERE CENTER -0.81296 -0.083104 -0.105354 RAD 0.00617284 + txt002 + SPHERE CENTER -0.830202 -0.0805529 -0.122844 RAD 0.00617284 + txt002 + SPHERE CENTER -0.850898 -0.0640908 -0.10004 RAD 0.00617284 + txt002 + SPHERE CENTER -0.854126 -0.0818589 -0.116879 RAD 0.00617284 + txt002 + SPHERE CENTER -0.860809 -0.0857161 -0.093424 RAD 0.00617284 + txt002 + SPHERE CENTER -0.833656 -0.0666419 -0.0825505 RAD 0.00617284 + txt002 + SPHERE CENTER -0.843568 -0.0882673 -0.0759343 RAD 0.00617284 + txt002 + SPHERE CENTER -0.819643 -0.0869612 -0.0818993 RAD 0.00617284 + txt002 + SPHERE CENTER -0.866465 -0.147308 -0.177765 RAD 0.0185185 + txt002 + SPHERE CENTER -0.876203 -0.130609 -0.193128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.879733 -0.128522 -0.16878 RAD 0.00617284 + txt002 + SPHERE CENTER -0.857385 -0.124356 -0.178416 RAD 0.00617284 + txt002 + SPHERE CENTER -0.862935 -0.149395 -0.202114 RAD 0.00617284 + txt002 + SPHERE CENTER -0.844117 -0.143141 -0.187402 RAD 0.00617284 + txt002 + SPHERE CENTER -0.853198 -0.166093 -0.186751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.885283 -0.153561 -0.192477 RAD 0.00617284 + txt002 + SPHERE CENTER -0.875546 -0.170259 -0.177114 RAD 0.00617284 + txt002 + SPHERE CENTER -0.888813 -0.151474 -0.168128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.803997 -0.111748 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.798532 -0.108311 -0.183703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.797989 -0.131037 -0.174066 RAD 0.00617284 + txt002 + SPHERE CENTER -0.819589 -0.119537 -0.17736 RAD 0.00617284 + txt002 + SPHERE CENTER -0.80454 -0.0890219 -0.169507 RAD 0.00617284 + txt002 + SPHERE CENTER -0.825597 -0.100248 -0.163165 RAD 0.00617284 + txt002 + SPHERE CENTER -0.810005 -0.0924597 -0.145675 RAD 0.00617284 + txt002 + SPHERE CENTER -0.78294 -0.100522 -0.166213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.788405 -0.10396 -0.142381 RAD 0.00617284 + txt002 + SPHERE CENTER -0.782397 -0.123249 -0.156576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.802927 -0.184881 -0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER -0.785723 -0.180723 -0.188808 RAD 0.00617284 + txt002 + SPHERE CENTER -0.798991 -0.161937 -0.179823 RAD 0.00617284 + txt002 + SPHERE CENTER -0.782104 -0.173028 -0.165627 RAD 0.00617284 + txt002 + SPHERE CENTER -0.78966 -0.203667 -0.180578 RAD 0.00617284 + txt002 + SPHERE CENTER -0.786041 -0.195972 -0.157397 RAD 0.00617284 + txt002 + SPHERE CENTER -0.806864 -0.207825 -0.163362 RAD 0.00617284 + txt002 + SPHERE CENTER -0.806546 -0.192576 -0.194773 RAD 0.00617284 + txt002 + SPHERE CENTER -0.82375 -0.196734 -0.177557 RAD 0.00617284 + txt002 + SPHERE CENTER -0.819813 -0.17379 -0.185788 RAD 0.00617284 + txt002 + SPHERE CENTER -0.898283 -0.193102 -0.129006 RAD 0.0185185 + txt002 + SPHERE CENTER -0.920038 -0.201143 -0.120537 RAD 0.00617284 + txt002 + SPHERE CENTER -0.900209 -0.201384 -0.105825 RAD 0.00617284 + txt002 + SPHERE CENTER -0.910616 -0.17991 -0.112168 RAD 0.00617284 + txt002 + SPHERE CENTER -0.918112 -0.192861 -0.143718 RAD 0.00617284 + txt002 + SPHERE CENTER -0.90869 -0.171628 -0.135349 RAD 0.00617284 + txt002 + SPHERE CENTER -0.896357 -0.18482 -0.152187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.907705 -0.214335 -0.137375 RAD 0.00617284 + txt002 + SPHERE CENTER -0.88595 -0.206294 -0.145845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.887876 -0.214576 -0.122663 RAD 0.00617284 + txt002 + SPHERE CENTER -0.834745 -0.230676 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.824206 -0.252002 -0.116217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.810793 -0.231282 -0.116868 RAD 0.00617284 + txt002 + SPHERE CENTER -0.827952 -0.234336 -0.0993785 RAD 0.00617284 + txt002 + SPHERE CENTER -0.848158 -0.251396 -0.122182 RAD 0.00617284 + txt002 + SPHERE CENTER -0.851905 -0.23373 -0.105343 RAD 0.00617284 + txt002 + SPHERE CENTER -0.858698 -0.23007 -0.128798 RAD 0.00617284 + txt002 + SPHERE CENTER -0.830999 -0.248342 -0.139672 RAD 0.00617284 + txt002 + SPHERE CENTER -0.841538 -0.227016 -0.146288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.817586 -0.227621 -0.140323 RAD 0.00617284 + txt002 + SPHERE CENTER -0.867633 -0.203337 -0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER -0.868948 -0.209658 -0.0385197 RAD 0.00617284 + txt002 + SPHERE CENTER -0.84746 -0.202239 -0.0481565 RAD 0.00617284 + txt002 + SPHERE CENTER -0.865773 -0.186008 -0.0448623 RAD 0.00617284 + txt002 + SPHERE CENTER -0.889121 -0.210757 -0.0527151 RAD 0.00617284 + txt002 + SPHERE CENTER -0.885946 -0.187106 -0.0590577 RAD 0.00617284 + txt002 + SPHERE CENTER -0.887806 -0.204436 -0.0765474 RAD 0.00617284 + txt002 + SPHERE CENTER -0.870808 -0.226988 -0.0560094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.869493 -0.220667 -0.0798417 RAD 0.00617284 + txt002 + SPHERE CENTER -0.84932 -0.219569 -0.0656463 RAD 0.00617284 + txt002 + SPHERE CENTER -0.69376 0.0133465 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.668775 0.0631985 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.661946 0.0667914 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.65711 0.0452771 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.680354 0.0511945 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.673611 0.0847128 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.692019 0.069116 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.680439 0.08112 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.650366 0.0787954 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.657195 0.0752026 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.64553 0.0572811 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62221 0.0325183 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.604582 0.0446211 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62221 0.0325183 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.627745 0.053173 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.604582 0.0446211 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.627745 0.053173 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.62221 0.0325183 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.599047 0.0239663 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616676 0.0118635 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616676 0.0118635 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649684 -0.00804971 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.634953 -0.000226782 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.655218 0.012605 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.635947 0.0122343 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.629419 -0.0208815 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.630413 -0.00842045 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.644149 -0.0287044 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.64869 -0.0205108 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.66342 -0.0283337 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.668955 -0.00767898 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.740325 0.0440268 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.746894 0.0650768 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.739183 0.0653796 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.723153 0.0607735 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.748035 0.0437239 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.724295 0.0394207 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.741466 0.0226739 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.764065 0.04833 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.757496 0.02728 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.756355 0.0486329 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.721234 -0.0272215 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.732368 -0.0484665 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.715699 -0.0478762 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.737738 -0.0371781 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.737902 -0.0278118 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.743272 -0.0165234 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.726768 -0.00656677 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.715864 -0.0385099 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.70473 -0.0172649 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.699195 -0.0379196 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.76531 -0.0058253 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.786629 -0.00415829 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.76531 -0.0058253 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.770845 0.0148294 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.786629 -0.00415829 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.770845 0.0148294 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.76531 -0.0058253 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.781094 -0.024813 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.759776 -0.02648 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.759776 -0.02648 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.712851 0.0845947 -0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER -0.706291 0.107813 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.689001 0.0909853 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.701434 0.0896851 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.730141 0.101422 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.725284 0.0832945 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.736701 0.0782041 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.717709 0.102723 -0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER -0.724268 0.0795043 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.700418 0.0858949 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.737837 0.0347427 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.740802 0.0511556 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.718185 0.043171 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.730397 0.0580833 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.760455 0.0427273 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.750049 0.0496549 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.757489 0.0263144 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.748242 0.027815 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.745277 0.0114021 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.725625 0.0198304 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.666287 0.0539145 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.650692 0.0721382 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645053 0.0564414 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.663167 0.072935 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671925 0.0696112 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.6844 0.070408 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.68752 0.0513875 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.653812 0.0531177 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.669407 0.034894 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.648173 0.0374209 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643951 -0.172546 -0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER -0.674191 -0.142305 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.672341 -0.123995 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.666199 -0.120057 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.651943 -0.134313 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.680334 -0.146243 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.659936 -0.156561 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.682184 -0.164554 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.69459 -0.131987 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.696439 -0.150298 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.688447 -0.12805 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.715501 -0.153374 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.731779 -0.136231 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.712305 -0.141449 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.70911 -0.129524 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.734974 -0.148156 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.712305 -0.141449 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.718696 -0.165299 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.738169 -0.160081 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.721891 -0.177224 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.718696 -0.165299 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.663122 -0.100996 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.656415 -0.0783272 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.639272 -0.0946054 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.651197 -0.0978007 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.680265 -0.0847178 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.675047 -0.104191 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.686972 -0.107387 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.66834 -0.0815225 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.675047 -0.104191 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.651197 -0.0978007 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.602641 -0.161477 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.60298 -0.154189 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.622115 -0.166695 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.617912 -0.143431 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.583506 -0.148971 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.598439 -0.138214 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.583168 -0.156259 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.587708 -0.172234 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.58737 -0.179523 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.606843 -0.184741 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.591572 -0.120168 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.577317 -0.105912 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582843 -0.128897 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600302 -0.111438 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.586046 -0.0971825 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.609032 -0.102708 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600302 -0.111438 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.568587 -0.114642 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.582843 -0.128897 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.574113 -0.137627 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.5724 -0.191718 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.549732 -0.185011 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.569205 -0.179793 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.56601 -0.167868 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.552927 -0.196936 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.569205 -0.179793 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.575596 -0.203643 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.556122 -0.208861 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.578791 -0.215568 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.575596 -0.203643 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.655019 -0.213855 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.653756 -0.23668 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.636974 -0.229127 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.660237 -0.233329 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671802 -0.221409 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.678283 -0.218058 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.673065 -0.198584 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.648538 -0.217207 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.649801 -0.194382 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.631756 -0.209653 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624779 -0.244096 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.607636 -0.260374 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600929 -0.237705 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.612854 -0.240901 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.631486 -0.266765 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.636704 -0.247291 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.648629 -0.250487 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.619561 -0.26357 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.636704 -0.247291 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.612854 -0.240901 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.696329 -0.224924 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.710584 -0.23918 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.687599 -0.233654 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.705059 -0.216195 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.719314 -0.23045 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.713788 -0.207465 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.705059 -0.216195 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.701855 -0.24791 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.687599 -0.233654 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.678869 -0.242384 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.786005 -0.343435 8.51251e-17 RAD 0.0555556 + txt002 + SPHERE CENTER -0.82165 -0.392454 0.0425863 RAD 0.0185185 + txt002 + SPHERE CENTER -0.824791 -0.400556 0.065698 RAD 0.00617284 + txt002 + SPHERE CENTER -0.802599 -0.392663 0.058292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.821021 -0.376528 0.0614442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.843843 -0.400347 0.0499923 RAD 0.00617284 + txt002 + SPHERE CENTER -0.840073 -0.376319 0.0457385 RAD 0.00617284 + txt002 + SPHERE CENTER -0.840701 -0.392245 0.0268805 RAD 0.00617284 + txt002 + SPHERE CENTER -0.82542 -0.416482 0.0468401 RAD 0.00617284 + txt002 + SPHERE CENTER -0.822279 -0.40838 0.0237283 RAD 0.00617284 + txt002 + SPHERE CENTER -0.803228 -0.408589 0.0394341 RAD 0.00617284 + txt002 + SPHERE CENTER -0.753118 -0.370774 0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER -0.734271 -0.367981 0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.731279 -0.362711 0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER -0.745269 -0.348136 0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.756109 -0.376044 0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER -0.767107 -0.356199 0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.774956 -0.378837 0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER -0.74212 -0.390619 0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.760966 -0.393412 0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER -0.739128 -0.385349 0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER -0.80984 -0.323622 0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.80634 -0.308073 0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.786996 -0.316395 0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER -0.802721 -0.300378 0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER -0.829184 -0.315299 0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER -0.825565 -0.307605 0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER -0.832685 -0.330849 0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.813459 -0.331317 0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER -0.81696 -0.346866 0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER -0.794116 -0.339639 0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER -0.854538 -0.365116 -0.0178949 RAD 0.0185185 + txt002 + SPHERE CENTER -0.878086 -0.365674 -0.0104889 RAD 0.00617284 + txt002 + SPHERE CENTER -0.859887 -0.367962 0.00604126 RAD 0.00617284 + txt002 + SPHERE CENTER -0.863875 -0.346241 -0.00500196 RAD 0.00617284 + txt002 + SPHERE CENTER -0.872736 -0.362827 -0.0344251 RAD 0.00617284 + txt002 + SPHERE CENTER -0.858526 -0.343394 -0.0289382 RAD 0.00617284 + txt002 + SPHERE CENTER -0.849188 -0.362269 -0.0418311 RAD 0.00617284 + txt002 + SPHERE CENTER -0.868748 -0.384548 -0.0233819 RAD 0.00617284 + txt002 + SPHERE CENTER -0.8452 -0.38399 -0.0307879 RAD 0.00617284 + txt002 + SPHERE CENTER -0.85055 -0.386837 -0.00685171 RAD 0.00617284 + txt002 + SPHERE CENTER -0.842728 -0.296284 0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER -0.848999 -0.272611 0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER -0.828835 -0.281616 0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER -0.829121 -0.278432 -0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.862893 -0.287278 -0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER -0.843015 -0.293099 -0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER -0.856621 -0.310951 -0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER -0.862606 -0.290462 0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER -0.856335 -0.314135 0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.842441 -0.299468 0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.818893 -0.316097 -0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER -0.819591 -0.297057 -0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.814956 -0.293153 -0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER -0.79807 -0.304244 -0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.823527 -0.320001 -0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER -0.802007 -0.327188 -0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.822829 -0.339041 -0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER -0.840413 -0.30891 -0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.839716 -0.32795 -0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER -0.835779 -0.305006 -0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER -0.797815 -0.412267 -0.0246914 RAD 0.0185185 + txt002 + SPHERE CENTER -0.793573 -0.436217 -0.0204376 RAD 0.00617284 + txt002 + SPHERE CENTER -0.776294 -0.419454 -0.0149506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.796968 -0.420728 -0.00151032 RAD 0.00617284 + txt002 + SPHERE CENTER -0.815094 -0.42903 -0.0301783 RAD 0.00617284 + txt002 + SPHERE CENTER -0.818489 -0.413542 -0.0112511 RAD 0.00617284 + txt002 + SPHERE CENTER -0.819335 -0.405081 -0.0344321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.79442 -0.427756 -0.0436186 RAD 0.00617284 + txt002 + SPHERE CENTER -0.798662 -0.403807 -0.0478724 RAD 0.00617284 + txt002 + SPHERE CENTER -0.777141 -0.410993 -0.0381316 RAD 0.00617284 + txt002 + SPHERE CENTER -0.76217 -0.363249 -0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.747522 -0.356966 -0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.759239 -0.339469 -0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER -0.740618 -0.352002 -0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER -0.750453 -0.380746 -0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER -0.743549 -0.375782 -0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER -0.765101 -0.387029 -0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.769074 -0.368213 -0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER -0.783722 -0.374496 -0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER -0.780791 -0.350716 -0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER -0.729282 -0.390587 -0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER -0.704862 -0.392427 -0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER -0.717401 -0.374248 -0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER -0.714218 -0.373948 0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.716744 -0.408767 0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER -0.726099 -0.390287 0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER -0.741164 -0.406927 0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER -0.719927 -0.409067 -0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER -0.744347 -0.407227 -0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.732465 -0.390887 -0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.594141 -0.358439 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.542042 -0.409774 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.517869 -0.413579 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.528508 -0.393219 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.525596 -0.395831 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.531404 -0.430134 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.539131 -0.412386 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555577 -0.426328 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.534315 -0.427522 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.558488 -0.423716 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.544953 -0.407161 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522591 -0.339267 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.504962 -0.327164 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522591 -0.339267 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.528125 -0.318612 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.504962 -0.327164 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.528125 -0.318612 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522591 -0.339267 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.499428 -0.347819 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.517056 -0.359921 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.517056 -0.359921 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.550064 -0.379835 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.529037 -0.375068 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.530412 -0.371406 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.542624 -0.356494 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.548689 -0.383497 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.562276 -0.364922 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.569716 -0.388263 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536477 -0.398409 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.557504 -0.403175 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.537852 -0.394747 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.613592 -0.428945 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.612625 -0.451897 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593593 -0.436515 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.614807 -0.432663 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.632624 -0.444328 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.634806 -0.425094 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.633591 -0.421376 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.61141 -0.448179 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.612377 -0.425227 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.592379 -0.432797 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.621614 -0.399007 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.620974 -0.402865 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600381 -0.39648 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.618494 -0.379986 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.642207 -0.405392 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.639728 -0.382513 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.642848 -0.401533 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624094 -0.421886 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624734 -0.418027 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.603501 -0.4155 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.665691 -0.37761 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.687009 -0.375943 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.665691 -0.37761 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671225 -0.356956 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.687009 -0.375943 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671225 -0.356956 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.665691 -0.37761 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.681475 -0.396598 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.660156 -0.398265 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.660156 -0.398265 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.586119 -0.388377 -0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.570335 -0.399584 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.562269 -0.381987 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.569167 -0.403942 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.594185 -0.405974 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.593017 -0.410332 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.609969 -0.394768 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.587286 -0.384019 -0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.60307 -0.372813 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.57922 -0.366422 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.638217 -0.337042 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.64748 -0.317573 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643752 -0.316388 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.624481 -0.316758 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.641945 -0.338228 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.618946 -0.337413 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.632683 -0.357697 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.661216 -0.337857 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.651954 -0.357326 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.657489 -0.336672 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.566667 -0.317871 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.562847 -0.317033 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.561133 -0.338525 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.583171 -0.327827 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.568381 -0.296378 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.588706 -0.307172 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.572202 -0.297216 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.546343 -0.307077 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.550163 -0.307914 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.544629 -0.328569 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.594141 -0.358439 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.547576 -0.389119 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.525642 -0.386849 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.528407 -0.379645 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.538964 -0.366733 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.544812 -0.396323 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.558134 -0.376207 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.566746 -0.398593 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.534255 -0.409235 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.556189 -0.411505 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.537019 -0.402031 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522591 -0.339267 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.504962 -0.327164 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522591 -0.339267 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.528125 -0.318612 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.504962 -0.327164 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.528125 -0.318612 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.522591 -0.339267 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.499428 -0.347819 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.517056 -0.359921 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.517056 -0.359921 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.566667 -0.317871 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.551072 -0.299647 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.545434 -0.315344 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.563547 -0.29885 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.572306 -0.302174 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.584781 -0.301377 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.587901 -0.320398 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.554192 -0.318667 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.569787 -0.336891 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.548554 -0.334364 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.619127 -0.408291 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.617918 -0.415912 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.597788 -0.406911 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616439 -0.39183 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.639257 -0.417292 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.637778 -0.39321 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.640465 -0.409671 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.620605 -0.432372 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.621814 -0.424751 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.600475 -0.423371 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.638217 -0.337042 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.641183 -0.320629 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.618565 -0.328614 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.630777 -0.313702 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.660835 -0.329058 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.65043 -0.32213 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.65787 -0.345471 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.648623 -0.34397 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.645657 -0.360383 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.626005 -0.351955 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.665691 -0.37761 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.687009 -0.375943 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.665691 -0.37761 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671225 -0.356956 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.687009 -0.375943 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.671225 -0.356956 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.665691 -0.37761 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.681475 -0.396598 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.660156 -0.398265 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.660156 -0.398265 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.57505 -0.429687 0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER -0.55776 -0.446515 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.5512 -0.423296 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.562617 -0.428387 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.58161 -0.452905 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.586467 -0.434777 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.5989 -0.436077 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.570193 -0.447815 0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER -0.587483 -0.430987 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.563633 -0.424596 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.621614 -0.399007 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.632748 -0.420252 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.61608 -0.419661 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.638118 -0.408963 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.638282 -0.399597 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.643653 -0.388308 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.627149 -0.378352 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.616244 -0.410295 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.60511 -0.38905 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.599576 -0.409705 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.550064 -0.379835 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.535334 -0.372012 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.555599 -0.35918 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.536327 -0.359551 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.529799 -0.392667 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.530793 -0.380205 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.54453 -0.400489 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.549071 -0.392296 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.563801 -0.400119 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.569335 -0.379464 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0996195 -0.371785 0.544331 RAD 0.166667 + txt002 + SPHERE CENTER 0.220501 -0.393621 0.729516 RAD 0.0555556 + txt002 + SPHERE CENTER 0.279642 -0.368601 0.766439 RAD 0.0185185 + txt002 + SPHERE CENTER 0.299716 -0.354293 0.765035 RAD 0.00617284 + txt002 + SPHERE CENTER 0.292196 -0.366989 0.745238 RAD 0.00617284 + txt002 + SPHERE CENTER 0.279022 -0.347717 0.753281 RAD 0.00617284 + txt002 + SPHERE CENTER 0.287162 -0.355904 0.786236 RAD 0.00617284 + txt002 + SPHERE CENTER 0.266468 -0.349329 0.774481 RAD 0.00617284 + txt002 + SPHERE CENTER 0.267088 -0.370213 0.787639 RAD 0.00617284 + txt002 + SPHERE CENTER 0.300337 -0.375177 0.778193 RAD 0.00617284 + txt002 + SPHERE CENTER 0.280263 -0.389485 0.779597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.292817 -0.387873 0.758396 RAD 0.00617284 + txt002 + SPHERE CENTER 0.281062 -0.372464 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.289441 -0.362978 0.671279 RAD 0.00617284 + txt002 + SPHERE CENTER 0.270044 -0.378255 0.671155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.267771 -0.35549 0.680442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.30046 -0.357187 0.692603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.278789 -0.349699 0.701767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29208 -0.366673 0.713804 RAD 0.00617284 + txt002 + SPHERE CENTER 0.302733 -0.379952 0.683315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.294353 -0.389438 0.704516 RAD 0.00617284 + txt002 + SPHERE CENTER 0.283335 -0.395229 0.683192 RAD 0.00617284 + txt002 + SPHERE CENTER 0.238665 -0.321889 0.726118 RAD 0.0185185 + txt002 + SPHERE CENTER 0.250544 -0.304702 0.71296 RAD 0.00617284 + txt002 + SPHERE CENTER 0.259421 -0.327715 0.714081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.238717 -0.32307 0.701455 RAD 0.00617284 + txt002 + SPHERE CENTER 0.229788 -0.298875 0.724997 RAD 0.00617284 + txt002 + SPHERE CENTER 0.21796 -0.317244 0.713492 RAD 0.00617284 + txt002 + SPHERE CENTER 0.217908 -0.316063 0.738155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.250492 -0.30352 0.737623 RAD 0.00617284 + txt002 + SPHERE CENTER 0.238612 -0.320707 0.750781 RAD 0.00617284 + txt002 + SPHERE CENTER 0.259369 -0.326533 0.738744 RAD 0.00617284 + txt002 + SPHERE CENTER 0.219082 -0.389758 0.803476 RAD 0.0185185 + txt002 + SPHERE CENTER 0.228779 -0.378635 0.823273 RAD 0.00617284 + txt002 + SPHERE CENTER 0.24293 -0.383364 0.8036 RAD 0.00617284 + txt002 + SPHERE CENTER 0.225483 -0.365937 0.802355 RAD 0.00617284 + txt002 + SPHERE CENTER 0.20493 -0.385029 0.823149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.201634 -0.372331 0.802231 RAD 0.00617284 + txt002 + SPHERE CENTER 0.195233 -0.396152 0.803352 RAD 0.00617284 + txt002 + SPHERE CENTER 0.222377 -0.402455 0.824394 RAD 0.00617284 + txt002 + SPHERE CENTER 0.21268 -0.413578 0.804597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236529 -0.407185 0.804721 RAD 0.00617284 + txt002 + SPHERE CENTER 0.178104 -0.343046 0.763155 RAD 0.0185185 + txt002 + SPHERE CENTER 0.177083 -0.319723 0.771198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.198298 -0.332294 0.772443 RAD 0.00617284 + txt002 + SPHERE CENTER 0.189464 -0.325124 0.750529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.156889 -0.330475 0.76191 RAD 0.00617284 + txt002 + SPHERE CENTER 0.16927 -0.335876 0.741241 RAD 0.00617284 + txt002 + SPHERE CENTER 0.157909 -0.353797 0.753867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.165722 -0.337645 0.783824 RAD 0.00617284 + txt002 + SPHERE CENTER 0.166743 -0.360967 0.775781 RAD 0.00617284 + txt002 + SPHERE CENTER 0.186938 -0.350216 0.785069 RAD 0.00617284 + txt002 + SPHERE CENTER 0.15994 -0.414778 0.766553 RAD 0.0185185 + txt002 + SPHERE CENTER 0.147477 -0.412573 0.787754 RAD 0.00617284 + txt002 + SPHERE CENTER 0.172167 -0.412448 0.787878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.15977 -0.39322 0.77859 RAD 0.00617284 + txt002 + SPHERE CENTER 0.13525 -0.414903 0.766429 RAD 0.00617284 + txt002 + SPHERE CENTER 0.147543 -0.39555 0.757266 RAD 0.00617284 + txt002 + SPHERE CENTER 0.147713 -0.417108 0.745229 RAD 0.00617284 + txt002 + SPHERE CENTER 0.147647 -0.434131 0.775717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.16011 -0.436336 0.754517 RAD 0.00617284 + txt002 + SPHERE CENTER 0.172338 -0.434006 0.775841 RAD 0.00617284 + txt002 + SPHERE CENTER 0.261479 -0.440333 0.769837 RAD 0.0185185 + txt002 + SPHERE CENTER 0.282991 -0.443285 0.781591 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282046 -0.4302 0.760673 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271991 -0.421181 0.781342 RAD 0.00617284 + txt002 + SPHERE CENTER 0.262424 -0.453417 0.790755 RAD 0.00617284 + txt002 + SPHERE CENTER 0.251423 -0.431313 0.790506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.240911 -0.450466 0.779001 RAD 0.00617284 + txt002 + SPHERE CENTER 0.27248 -0.462437 0.770086 RAD 0.00617284 + txt002 + SPHERE CENTER 0.250967 -0.459485 0.758332 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271534 -0.449353 0.749168 RAD 0.00617284 + txt002 + SPHERE CENTER 0.202338 -0.465353 0.732914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.204606 -0.486123 0.746073 RAD 0.00617284 + txt002 + SPHERE CENTER 0.223366 -0.470107 0.744951 RAD 0.00617284 + txt002 + SPHERE CENTER 0.202946 -0.464339 0.757577 RAD 0.00617284 + txt002 + SPHERE CENTER 0.183578 -0.481368 0.734036 RAD 0.00617284 + txt002 + SPHERE CENTER 0.181918 -0.459584 0.745541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.18131 -0.460599 0.720878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.203998 -0.487137 0.72141 RAD 0.00617284 + txt002 + SPHERE CENTER 0.201729 -0.466367 0.708251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.222757 -0.471122 0.720288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.262898 -0.444196 0.695877 RAD 0.0185185 + txt002 + SPHERE CENTER 0.285685 -0.449273 0.687835 RAD 0.00617284 + txt002 + SPHERE CENTER 0.27701 -0.426189 0.68659 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282528 -0.436139 0.708504 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271573 -0.46728 0.697123 RAD 0.00617284 + txt002 + SPHERE CENTER 0.268416 -0.454146 0.717791 RAD 0.00617284 + txt002 + SPHERE CENTER 0.248787 -0.462204 0.705165 RAD 0.00617284 + txt002 + SPHERE CENTER 0.266055 -0.45733 0.675209 RAD 0.00617284 + txt002 + SPHERE CENTER 0.243269 -0.452254 0.683251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.257381 -0.434246 0.673964 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31427 -0.31427 0.544331 RAD 0.0555556 + txt002 + SPHERE CENTER 0.367156 -0.277961 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.374298 -0.269898 0.485076 RAD 0.00617284 + txt002 + SPHERE CENTER 0.362218 -0.291334 0.487134 RAD 0.00617284 + txt002 + SPHERE CENTER 0.350338 -0.270045 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.379235 -0.256525 0.505236 RAD 0.00617284 + txt002 + SPHERE CENTER 0.355276 -0.256671 0.511201 RAD 0.00617284 + txt002 + SPHERE CENTER 0.372093 -0.264588 0.527454 RAD 0.00617284 + txt002 + SPHERE CENTER 0.391115 -0.277815 0.501329 RAD 0.00617284 + txt002 + SPHERE CENTER 0.383973 -0.285878 0.523547 RAD 0.00617284 + txt002 + SPHERE CENTER 0.379036 -0.299251 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31427 -0.31427 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.304189 -0.304189 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29042 -0.307879 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307879 -0.29042 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.328039 -0.31058 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.331729 -0.29681 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.33812 -0.32066 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31058 -0.328039 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32066 -0.33812 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29681 -0.331729 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.297666 -0.252306 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.305995 -0.235688 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.321516 -0.245915 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.312359 -0.259438 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282145 -0.242079 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER 0.288509 -0.265828 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273816 -0.258696 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.291303 -0.228556 0.509559 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282974 -0.245173 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.306824 -0.238783 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367156 -0.277961 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.385852 -0.261966 0.57931 RAD 0.00617284 + txt002 + SPHERE CENTER 0.38141 -0.278159 0.561208 RAD 0.00617284 + txt002 + SPHERE CENTER 0.36581 -0.259422 0.565115 RAD 0.00617284 + txt002 + SPHERE CENTER 0.371598 -0.261768 0.599471 RAD 0.00617284 + txt002 + SPHERE CENTER 0.351556 -0.259225 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.352901 -0.277764 0.601529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.387198 -0.280504 0.595564 RAD 0.00617284 + txt002 + SPHERE CENTER 0.368501 -0.2965 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.382755 -0.296698 0.577461 RAD 0.00617284 + txt002 + SPHERE CENTER 0.297666 -0.252306 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.30415 -0.228803 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.321516 -0.245915 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.306824 -0.238783 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.2803 -0.235194 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282974 -0.245173 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273816 -0.258696 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.294992 -0.242326 0.603794 RAD 0.00617284 + txt002 + SPHERE CENTER 0.288509 -0.265828 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.312359 -0.259438 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31427 -0.31427 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.32435 -0.304189 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.33812 -0.307879 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32066 -0.29042 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3005 -0.31058 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29681 -0.29681 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29042 -0.32066 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.317959 -0.328039 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307879 -0.33812 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.331729 -0.331729 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.383759 -0.339925 0.544331 RAD 0.0185185 + txt002 + SPHERE CENTER 0.407156 -0.334762 0.538366 RAD 0.00617284 + txt002 + SPHERE CENTER 0.388696 -0.326552 0.524171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.392275 -0.31686 0.546597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.402218 -0.348135 0.558526 RAD 0.00617284 + txt002 + SPHERE CENTER 0.387337 -0.330233 0.566757 RAD 0.00617284 + txt002 + SPHERE CENTER 0.378821 -0.353299 0.564491 RAD 0.00617284 + txt002 + SPHERE CENTER 0.39864 -0.357827 0.536101 RAD 0.00617284 + txt002 + SPHERE CENTER 0.375243 -0.362991 0.542066 RAD 0.00617284 + txt002 + SPHERE CENTER 0.380181 -0.349618 0.521905 RAD 0.00617284 + txt002 + SPHERE CENTER 0.330873 -0.376234 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER 0.346394 -0.386461 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.354723 -0.369843 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.340031 -0.362711 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.322544 -0.392851 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER 0.316181 -0.369102 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307023 -0.382624 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337237 -0.399983 0.579103 RAD 0.00617284 + txt002 + SPHERE CENTER 0.321715 -0.389757 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.345565 -0.383366 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.330873 -0.376234 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER 0.348239 -0.393346 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.354723 -0.369843 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.345565 -0.383366 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.324389 -0.399736 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.321715 -0.389757 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307023 -0.382624 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER 0.333547 -0.386213 0.484868 RAD 0.00617284 + txt002 + SPHERE CENTER 0.316181 -0.369102 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.340031 -0.362711 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER 0.166275 -0.191247 0.655442 RAD 0.0555556 + txt002 + SPHERE CENTER 0.20793 -0.130089 0.652044 RAD 0.0185185 + txt002 + SPHERE CENTER 0.221102 -0.115471 0.637128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.220766 -0.13987 0.633356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.200597 -0.126388 0.628759 RAD 0.00617284 + txt002 + SPHERE CENTER 0.208266 -0.10569 0.655816 RAD 0.00617284 + txt002 + SPHERE CENTER 0.187762 -0.116607 0.647447 RAD 0.00617284 + txt002 + SPHERE CENTER 0.195095 -0.120308 0.670732 RAD 0.00617284 + txt002 + SPHERE CENTER 0.228435 -0.119172 0.660413 RAD 0.00617284 + txt002 + SPHERE CENTER 0.215264 -0.13379 0.675329 RAD 0.00617284 + txt002 + SPHERE CENTER 0.228099 -0.143571 0.656641 RAD 0.00617284 + txt002 + SPHERE CENTER 0.230419 -0.192135 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.243049 -0.18209 0.599717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.218634 -0.185251 0.597829 RAD 0.00617284 + txt002 + SPHERE CENTER 0.227721 -0.168159 0.613157 RAD 0.00617284 + txt002 + SPHERE CENTER 0.254834 -0.188974 0.620293 RAD 0.00617284 + txt002 + SPHERE CENTER 0.239506 -0.175043 0.633733 RAD 0.00617284 + txt002 + SPHERE CENTER 0.242204 -0.199019 0.638981 RAD 0.00617284 + txt002 + SPHERE CENTER 0.245747 -0.206066 0.604965 RAD 0.00617284 + txt002 + SPHERE CENTER 0.233117 -0.216111 0.623653 RAD 0.00617284 + txt002 + SPHERE CENTER 0.221332 -0.209227 0.603077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.172673 -0.154295 0.591563 RAD 0.0185185 + txt002 + SPHERE CENTER 0.180792 -0.15554 0.568278 RAD 0.00617284 + txt002 + SPHERE CENTER 0.19323 -0.166926 0.586315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.171251 -0.17557 0.579113 RAD 0.00617284 + txt002 + SPHERE CENTER 0.160236 -0.142909 0.573526 RAD 0.00617284 + txt002 + SPHERE CENTER 0.150694 -0.162939 0.584361 RAD 0.00617284 + txt002 + SPHERE CENTER 0.152117 -0.141663 0.596811 RAD 0.00617284 + txt002 + SPHERE CENTER 0.182215 -0.134265 0.580727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.174096 -0.133019 0.604012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.194652 -0.145651 0.598764 RAD 0.00617284 + txt002 + SPHERE CENTER 0.143787 -0.129201 0.689081 RAD 0.0185185 + txt002 + SPHERE CENTER 0.14887 -0.105335 0.692853 RAD 0.00617284 + txt002 + SPHERE CENTER 0.167242 -0.121723 0.690969 RAD 0.00617284 + txt002 + SPHERE CENTER 0.153943 -0.115741 0.671044 RAD 0.00617284 + txt002 + SPHERE CENTER 0.125414 -0.112813 0.690965 RAD 0.00617284 + txt002 + SPHERE CENTER 0.130487 -0.123219 0.669156 RAD 0.00617284 + txt002 + SPHERE CENTER 0.120331 -0.136679 0.687193 RAD 0.00617284 + txt002 + SPHERE CENTER 0.138714 -0.118795 0.71089 RAD 0.00617284 + txt002 + SPHERE CENTER 0.13363 -0.142661 0.707118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.157086 -0.135183 0.709006 RAD 0.00617284 + txt002 + SPHERE CENTER 0.108529 -0.153407 0.6286 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0995811 -0.130858 0.624003 RAD 0.00617284 + txt002 + SPHERE CENTER 0.113639 -0.134736 0.643928 RAD 0.00617284 + txt002 + SPHERE CENTER 0.123725 -0.135326 0.621398 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0944715 -0.149528 0.608675 RAD 0.00617284 + txt002 + SPHERE CENTER 0.118615 -0.153997 0.60607 RAD 0.00617284 + txt002 + SPHERE CENTER 0.10342 -0.172078 0.613272 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0843858 -0.148938 0.631205 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0933338 -0.171487 0.635801 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0984435 -0.152816 0.65113 RAD 0.00617284 + txt002 + SPHERE CENTER 0.102131 -0.190359 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0897843 -0.179968 0.711167 RAD 0.00617284 + txt002 + SPHERE CENTER 0.114103 -0.183804 0.713055 RAD 0.00617284 + txt002 + SPHERE CENTER 0.105492 -0.166467 0.697727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0778128 -0.186523 0.690591 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0935207 -0.173022 0.677151 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0901597 -0.196914 0.671903 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0864233 -0.20386 0.705919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0987702 -0.214251 0.687231 RAD 0.00617284 + txt002 + SPHERE CENTER 0.110742 -0.207696 0.707807 RAD 0.00617284 + txt002 + SPHERE CENTER 0.201532 -0.167041 0.715923 RAD 0.0185185 + txt002 + SPHERE CENTER 0.219088 -0.151829 0.724292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.221861 -0.163068 0.702483 RAD 0.00617284 + txt002 + SPHERE CENTER 0.205084 -0.14514 0.705088 RAD 0.00617284 + txt002 + SPHERE CENTER 0.19876 -0.155801 0.737733 RAD 0.00617284 + txt002 + SPHERE CENTER 0.184756 -0.149113 0.718528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.181204 -0.171014 0.729364 RAD 0.00617284 + txt002 + SPHERE CENTER 0.215537 -0.173729 0.735128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.197981 -0.188942 0.726759 RAD 0.00617284 + txt002 + SPHERE CENTER 0.218309 -0.184969 0.713318 RAD 0.00617284 + txt002 + SPHERE CENTER 0.159877 -0.228199 0.719322 RAD 0.0185185 + txt002 + SPHERE CENTER 0.167942 -0.229756 0.742607 RAD 0.00617284 + txt002 + SPHERE CENTER 0.183484 -0.223214 0.72457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.16569 -0.207683 0.731771 RAD 0.00617284 + txt002 + SPHERE CENTER 0.144336 -0.234741 0.737359 RAD 0.00617284 + txt002 + SPHERE CENTER 0.142084 -0.212668 0.726523 RAD 0.00617284 + txt002 + SPHERE CENTER 0.13627 -0.233184 0.714074 RAD 0.00617284 + txt002 + SPHERE CENTER 0.162129 -0.250271 0.730157 RAD 0.00617284 + txt002 + SPHERE CENTER 0.154064 -0.248714 0.706872 RAD 0.00617284 + txt002 + SPHERE CENTER 0.177671 -0.243729 0.71212 RAD 0.00617284 + txt002 + SPHERE CENTER 0.224021 -0.229087 0.682285 RAD 0.0185185 + txt002 + SPHERE CENTER 0.248268 -0.22829 0.686881 RAD 0.00617284 + txt002 + SPHERE CENTER 0.2391 -0.216949 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER 0.234532 -0.207937 0.689486 RAD 0.00617284 + txt002 + SPHERE CENTER 0.233189 -0.240428 0.702209 RAD 0.00617284 + txt002 + SPHERE CENTER 0.219453 -0.220075 0.704814 RAD 0.00617284 + txt002 + SPHERE CENTER 0.208942 -0.241225 0.697613 RAD 0.00617284 + txt002 + SPHERE CENTER 0.237756 -0.249439 0.67968 RAD 0.00617284 + txt002 + SPHERE CENTER 0.213509 -0.250236 0.675083 RAD 0.00617284 + txt002 + SPHERE CENTER 0.228589 -0.238098 0.659755 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0058509 -0.451136 0.729516 RAD 0.0555556 + txt002 + SPHERE CENTER 0.0051487 -0.447081 0.803476 RAD 0.0185185 + txt002 + SPHERE CENTER 0.01504 -0.435909 0.823149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0289993 -0.440694 0.803352 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0115452 -0.423265 0.802231 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00881065 -0.442297 0.823273 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0123054 -0.429652 0.802355 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0187019 -0.453468 0.8036 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00864346 -0.459725 0.824394 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0012478 -0.470897 0.804721 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0226028 -0.46451 0.804597 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0688765 -0.439178 0.766553 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0903221 -0.426942 0.766429 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0806307 -0.435083 0.745229 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0699989 -0.416328 0.757266 RAD 0.00617284 + txt002 + SPHERE CENTER 0.078568 -0.431037 0.787754 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0582447 -0.420423 0.77859 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0571224 -0.443274 0.787878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0891998 -0.449792 0.775717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0677542 -0.462029 0.775841 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0795084 -0.457933 0.754517 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0172804 -0.386138 0.763155 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0293677 -0.364644 0.76191 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0401449 -0.385352 0.753867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0213457 -0.375512 0.741241 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0065032 -0.36543 0.771198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00151881 -0.376298 0.750529 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00558411 -0.386924 0.772443 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0253024 -0.37527 0.783824 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0132151 -0.396764 0.785069 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0360796 -0.395978 0.775781 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0578769 -0.459039 0.766439 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0707378 -0.451803 0.786236 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0461991 -0.454158 0.787639 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0561039 -0.435761 0.774481 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0824157 -0.456685 0.765035 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0677817 -0.440643 0.753281 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0695548 -0.46392 0.745238 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0725109 -0.475081 0.778193 RAD 0.00617284 + txt002 + SPHERE CENTER -0.05965 -0.482316 0.758396 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0479721 -0.477435 0.779597 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0457452 -0.398096 0.726118 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0495643 -0.373728 0.724997 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0306825 -0.382672 0.738155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.030137 -0.383722 0.713492 RAD 0.00617284 + txt002 + SPHERE CENTER -0.064627 -0.389151 0.71296 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0451997 -0.399146 0.701455 RAD 0.00617284 + txt002 + SPHERE CENTER -0.060808 -0.41352 0.714081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0651725 -0.388102 0.737623 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0613535 -0.41247 0.738744 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0462908 -0.397047 0.750781 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0571747 -0.463094 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER -0.081612 -0.459563 0.692603 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0696122 -0.463589 0.713804 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0665888 -0.442243 0.701767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0691745 -0.459069 0.671279 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0541513 -0.441749 0.680442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0447373 -0.4626 0.671155 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0721979 -0.480415 0.683315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0477607 -0.483946 0.683192 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0601982 -0.48444 0.704516 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00628079 -0.512079 0.769837 RAD 0.0185185 + txt002 + SPHERE CENTER -0.000557006 -0.523883 0.790755 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0165974 -0.51057 0.779001 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00208214 -0.49924 0.790506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0234352 -0.525392 0.781591 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0249603 -0.500749 0.781342 RAD 0.00617284 + txt002 + SPHERE CENTER -0.029159 -0.513588 0.760673 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00475566 -0.536722 0.770086 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0104794 -0.524918 0.749168 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0123987 -0.523409 0.758332 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00557859 -0.516134 0.695877 RAD 0.0185185 + txt002 + SPHERE CENTER -0.00154892 -0.540463 0.697123 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0156462 -0.524673 0.705165 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00538221 -0.52751 0.717791 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0227737 -0.531924 0.687835 RAD 0.00617284 + txt002 + SPHERE CENTER -0.026607 -0.518971 0.708504 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0268034 -0.507596 0.68659 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00174531 -0.529087 0.675209 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00577498 -0.504759 0.673964 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0154498 -0.513298 0.683251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0574471 -0.504176 0.732914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0817008 -0.508666 0.734036 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0732807 -0.489545 0.720878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0722467 -0.488971 0.745541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0658672 -0.523298 0.746073 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0564131 -0.503602 0.757577 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0416134 -0.518808 0.744951 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0669012 -0.523872 0.72141 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0426474 -0.519382 0.720288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.058481 -0.504751 0.708251 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0483751 -0.248762 0.655442 RAD 0.0555556 + txt002 + SPHERE CENTER -0.0599222 -0.183785 0.689081 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0522053 -0.160406 0.690965 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0358698 -0.178533 0.687193 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0513956 -0.171954 0.669156 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0762577 -0.165658 0.692853 RAD 0.00617284 + txt002 + SPHERE CENTER -0.075448 -0.177206 0.671044 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0839747 -0.189036 0.690969 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0607319 -0.172236 0.71089 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0684488 -0.195615 0.709006 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0443964 -0.190363 0.707118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00673113 -0.215921 0.692479 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0258737 -0.20044 0.690591 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0203763 -0.215612 0.671903 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00551963 -0.196602 0.677151 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0122285 -0.200749 0.711167 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00812553 -0.196911 0.697727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00691403 -0.21623 0.713055 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0270852 -0.21976 0.705919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00794264 -0.235241 0.707807 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0215878 -0.234932 0.687231 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0172857 -0.187119 0.6286 RAD 0.0185185 + txt002 + SPHERE CENTER -0.00705049 -0.176731 0.608675 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00352517 -0.200733 0.613272 RAD 0.00617284 + txt002 + SPHERE CENTER -0.025725 -0.192673 0.60607 RAD 0.00617284 + txt002 + SPHERE CENTER -0.020811 -0.163117 0.624003 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0394855 -0.179058 0.621398 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0310463 -0.173504 0.643928 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00138875 -0.171177 0.631205 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00884647 -0.181564 0.65113 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00491406 -0.195179 0.635801 RAD 0.00617284 + txt002 + SPHERE CENTER -0.115028 -0.216626 0.652044 RAD 0.0185185 + txt002 + SPHERE CENTER -0.127519 -0.195663 0.655816 RAD 0.00617284 + txt002 + SPHERE CENTER -0.108803 -0.201738 0.670732 RAD 0.00617284 + txt002 + SPHERE CENTER -0.104303 -0.194866 0.647447 RAD 0.00617284 + txt002 + SPHERE CENTER -0.133744 -0.210551 0.637128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.110528 -0.209754 0.628759 RAD 0.00617284 + txt002 + SPHERE CENTER -0.121254 -0.231514 0.633356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.138245 -0.217423 0.660413 RAD 0.00617284 + txt002 + SPHERE CENTER -0.125754 -0.238386 0.656641 RAD 0.00617284 + txt002 + SPHERE CENTER -0.119529 -0.223497 0.675329 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0723919 -0.21996 0.591563 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0673141 -0.20388 0.573526 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0609052 -0.198742 0.596811 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0490355 -0.216456 0.584361 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0788008 -0.225098 0.568278 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0605222 -0.237674 0.579113 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0838786 -0.241177 0.586315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0906706 -0.207384 0.580727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0957484 -0.223463 0.598764 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0842617 -0.202246 0.604012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.103481 -0.281603 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.126206 -0.291073 0.620293 RAD 0.00617284 + txt002 + SPHERE CENTER -0.110246 -0.293457 0.638981 RAD 0.00617284 + txt002 + SPHERE CENTER -0.119897 -0.271345 0.633733 RAD 0.00617284 + txt002 + SPHERE CENTER -0.119442 -0.279219 0.599717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.113132 -0.25949 0.613157 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0967168 -0.269749 0.597829 RAD 0.00617284 + txt002 + SPHERE CENTER -0.10979 -0.301332 0.604965 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0870656 -0.291862 0.603077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0938302 -0.303716 0.623653 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0910116 -0.245428 0.715923 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0942304 -0.234308 0.737733 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0714204 -0.238704 0.729364 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0854464 -0.221514 0.718528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.113822 -0.241032 0.724292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.105038 -0.228237 0.705088 RAD 0.00617284 + txt002 + SPHERE CENTER -0.110603 -0.252152 0.702483 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0997955 -0.258223 0.735128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0965768 -0.269343 0.713318 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0769856 -0.262619 0.726759 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0794645 -0.310405 0.682285 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0817333 -0.324811 0.702209 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0603366 -0.313378 0.697613 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0800146 -0.300317 0.704814 RAD 0.00617284 + txt002 + SPHERE CENTER -0.100861 -0.321838 0.686881 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0991425 -0.297345 0.689486 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0985923 -0.307433 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0811832 -0.334899 0.67968 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0789143 -0.320493 0.659755 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0597864 -0.323466 0.675083 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0243582 -0.277564 0.719322 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0076281 -0.275459 0.737359 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00142185 -0.270078 0.714074 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0167139 -0.255218 0.726523 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0305645 -0.282946 0.742607 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0396503 -0.262704 0.731771 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0472946 -0.285051 0.72457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0152725 -0.297806 0.730157 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0320026 -0.299911 0.71212 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00906621 -0.292425 0.706872 RAD 0.00617284 + txt002 + SPHERE CENTER -0.115031 -0.4293 0.544331 RAD 0.0555556 + txt002 + SPHERE CENTER -0.178985 -0.424299 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.190929 -0.412497 0.599471 RAD 0.00617284 + txt002 + SPHERE CENTER -0.16674 -0.417001 0.601529 RAD 0.00617284 + txt002 + SPHERE CENTER -0.174844 -0.400273 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.203175 -0.419795 0.57931 RAD 0.00617284 + txt002 + SPHERE CENTER -0.18709 -0.407571 0.565115 RAD 0.00617284 + txt002 + SPHERE CENTER -0.191231 -0.431597 0.561208 RAD 0.00617284 + txt002 + SPHERE CENTER -0.195071 -0.436523 0.595564 RAD 0.00617284 + txt002 + SPHERE CENTER -0.183127 -0.448325 0.577461 RAD 0.00617284 + txt002 + SPHERE CENTER -0.170881 -0.441027 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.115031 -0.4293 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER -0.10495 -0.41922 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0911807 -0.42291 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.10864 -0.40545 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.128801 -0.425611 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.13249 -0.411841 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.138881 -0.435691 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.111341 -0.44307 0.638566 RAD 0.00617284 + txt002 + SPHERE CENTER -0.121421 -0.45315 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0975713 -0.44676 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER -0.131634 -0.367336 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.12515 -0.343834 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.107784 -0.360946 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.122476 -0.353814 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.149 -0.350225 0.585275 RAD 0.00617284 + txt002 + SPHERE CENTER -0.146326 -0.360204 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.155484 -0.373727 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.134308 -0.357357 0.603794 RAD 0.00617284 + txt002 + SPHERE CENTER -0.140792 -0.380859 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.116942 -0.374468 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.178985 -0.424299 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.200165 -0.411775 0.505236 RAD 0.00617284 + txt002 + SPHERE CENTER -0.189948 -0.415187 0.527454 RAD 0.00617284 + txt002 + SPHERE CENTER -0.179342 -0.399922 0.511201 RAD 0.00617284 + txt002 + SPHERE CENTER -0.189202 -0.420888 0.485076 RAD 0.00617284 + txt002 + SPHERE CENTER -0.168379 -0.409035 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.168023 -0.433412 0.487134 RAD 0.00617284 + txt002 + SPHERE CENTER -0.199808 -0.436152 0.501329 RAD 0.00617284 + txt002 + SPHERE CENTER -0.178629 -0.448677 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.189591 -0.439564 0.523547 RAD 0.00617284 + txt002 + SPHERE CENTER -0.131634 -0.367336 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.123305 -0.350719 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.107784 -0.360946 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.116942 -0.374468 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.147155 -0.357109 0.491041 RAD 0.00617284 + txt002 + SPHERE CENTER -0.140792 -0.380859 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.155484 -0.373727 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.137998 -0.343587 0.509559 RAD 0.00617284 + txt002 + SPHERE CENTER -0.146326 -0.360204 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.122476 -0.353814 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.115031 -0.4293 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER -0.125111 -0.41922 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.138881 -0.42291 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.121421 -0.40545 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.101261 -0.425611 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0975713 -0.411841 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0911807 -0.435691 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.11872 -0.44307 0.450097 RAD 0.00617284 + txt002 + SPHERE CENTER -0.10864 -0.45315 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.13249 -0.44676 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER -0.162382 -0.486264 0.544331 RAD 0.0185185 + txt002 + SPHERE CENTER -0.174264 -0.502603 0.558526 RAD 0.00617284 + txt002 + SPHERE CENTER -0.15142 -0.495376 0.564491 RAD 0.00617284 + txt002 + SPHERE CENTER -0.170327 -0.479659 0.566757 RAD 0.00617284 + txt002 + SPHERE CENTER -0.185226 -0.49349 0.538366 RAD 0.00617284 + txt002 + SPHERE CENTER -0.18129 -0.470546 0.546597 RAD 0.00617284 + txt002 + SPHERE CENTER -0.173345 -0.477151 0.524171 RAD 0.00617284 + txt002 + SPHERE CENTER -0.166319 -0.509207 0.536101 RAD 0.00617284 + txt002 + SPHERE CENTER -0.154437 -0.492868 0.521905 RAD 0.00617284 + txt002 + SPHERE CENTER -0.143475 -0.501981 0.542066 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0984274 -0.491265 0.507294 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0810612 -0.508376 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0745774 -0.484874 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0837352 -0.498397 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.104911 -0.514767 0.503387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.107585 -0.504787 0.525813 RAD 0.00617284 + txt002 + SPHERE CENTER -0.122277 -0.497655 0.507294 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0957534 -0.501244 0.484868 RAD 0.00617284 + txt002 + SPHERE CENTER -0.11312 -0.484132 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0892696 -0.477742 0.488775 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0984274 -0.491265 0.581368 RAD 0.0185185 + txt002 + SPHERE CENTER -0.082906 -0.501491 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0745774 -0.484874 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0892696 -0.477742 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.106756 -0.507882 0.597621 RAD 0.00617284 + txt002 + SPHERE CENTER -0.11312 -0.484132 0.599887 RAD 0.00617284 + txt002 + SPHERE CENTER -0.122277 -0.497655 0.581368 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0920638 -0.515014 0.579103 RAD 0.00617284 + txt002 + SPHERE CENTER -0.107585 -0.504787 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0837352 -0.498397 0.56285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.153845 -0.574159 0.618405 RAD 0.0555556 + txt002 + SPHERE CENTER 0.202534 -0.612768 0.658726 RAD 0.0185185 + txt002 + SPHERE CENTER 0.225282 -0.612732 0.668328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.22113 -0.60221 0.64638 RAD 0.00617284 + txt002 + SPHERE CENTER 0.212428 -0.591695 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER 0.206686 -0.62329 0.680674 RAD 0.00617284 + txt002 + SPHERE CENTER 0.193832 -0.602253 0.679302 RAD 0.00617284 + txt002 + SPHERE CENTER 0.183939 -0.623325 0.671072 RAD 0.00617284 + txt002 + SPHERE CENTER 0.215388 -0.633805 0.660098 RAD 0.00617284 + txt002 + SPHERE CENTER 0.192641 -0.63384 0.650495 RAD 0.00617284 + txt002 + SPHERE CENTER 0.211236 -0.623283 0.63815 RAD 0.00617284 + txt002 + SPHERE CENTER 0.225396 -0.554987 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.243024 -0.542885 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.225396 -0.554987 0.593714 RAD 0.00617284 + txt002 + SPHERE CENTER 0.219861 -0.534333 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.243024 -0.542885 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.219861 -0.534333 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.225396 -0.554987 0.643096 RAD 0.00617284 + txt002 + SPHERE CENTER 0.248559 -0.563539 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.23093 -0.575642 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.23093 -0.575642 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.184086 -0.543919 0.678886 RAD 0.0185185 + txt002 + SPHERE CENTER 0.200547 -0.527458 0.687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.205161 -0.540303 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.187702 -0.522843 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.179472 -0.531074 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.166627 -0.526459 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER 0.163011 -0.547535 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER 0.196931 -0.548533 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.18047 -0.564994 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER 0.201546 -0.561378 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER 0.130984 -0.631939 0.658726 RAD 0.0185185 + txt002 + SPHERE CENTER 0.132649 -0.643128 0.680674 RAD 0.00617284 + txt002 + SPHERE CENTER 0.152367 -0.631785 0.671072 RAD 0.00617284 + txt002 + SPHERE CENTER 0.133263 -0.618482 0.679302 RAD 0.00617284 + txt002 + SPHERE CENTER 0.111266 -0.643283 0.668328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.11188 -0.618637 0.666956 RAD 0.00617284 + txt002 + SPHERE CENTER 0.109601 -0.632094 0.64638 RAD 0.00617284 + txt002 + SPHERE CENTER 0.130371 -0.656585 0.660098 RAD 0.00617284 + txt002 + SPHERE CENTER 0.128706 -0.645397 0.63815 RAD 0.00617284 + txt002 + SPHERE CENTER 0.150088 -0.645242 0.650495 RAD 0.00617284 + txt002 + SPHERE CENTER 0.112536 -0.56309 0.678886 RAD 0.0185185 + txt002 + SPHERE CENTER 0.11011 -0.549659 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.132596 -0.555684 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER 0.118927 -0.53924 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER 0.09005 -0.557065 0.687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0988668 -0.546646 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0924762 -0.570497 0.666541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.103719 -0.573509 0.699462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.106145 -0.58694 0.678886 RAD 0.00617284 + txt002 + SPHERE CENTER 0.126205 -0.579534 0.691232 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0822954 -0.593331 0.618405 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0609772 -0.591664 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0822954 -0.593331 0.643096 RAD 0.00617284 + txt002 + SPHERE CENTER 0.076761 -0.572676 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0609772 -0.591664 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.076761 -0.572676 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0822954 -0.593331 0.593714 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0665116 -0.612319 0.618405 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0878298 -0.613986 0.606059 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0878298 -0.613986 0.630751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.172294 -0.643008 0.598245 RAD 0.0185185 + txt002 + SPHERE CENTER 0.189742 -0.660425 0.599616 RAD 0.00617284 + txt002 + SPHERE CENTER 0.196144 -0.636618 0.598245 RAD 0.00617284 + txt002 + SPHERE CENTER 0.185725 -0.645434 0.618821 RAD 0.00617284 + txt002 + SPHERE CENTER 0.165892 -0.666816 0.599616 RAD 0.00617284 + txt002 + SPHERE CENTER 0.161875 -0.651825 0.618821 RAD 0.00617284 + txt002 + SPHERE CENTER 0.148444 -0.649399 0.598245 RAD 0.00617284 + txt002 + SPHERE CENTER 0.17631 -0.657999 0.57904 RAD 0.00617284 + txt002 + SPHERE CENTER 0.158862 -0.640582 0.577669 RAD 0.00617284 + txt002 + SPHERE CENTER 0.182712 -0.634191 0.577669 RAD 0.00617284 + txt002 + SPHERE CENTER 0.123605 -0.6044 0.557924 RAD 0.0185185 + txt002 + SPHERE CENTER 0.107144 -0.620861 0.549693 RAD 0.00617284 + txt002 + SPHERE CENTER 0.119989 -0.625475 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER 0.102529 -0.608016 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER 0.11076 -0.599785 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER 0.106145 -0.58694 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER 0.127221 -0.583324 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.128219 -0.617245 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER 0.14468 -0.600784 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.141064 -0.621859 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER 0.195155 -0.585228 0.557924 RAD 0.0185185 + txt002 + SPHERE CENTER 0.203972 -0.574809 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER 0.181486 -0.568784 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.201546 -0.561378 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER 0.217641 -0.591253 0.549693 RAD 0.00617284 + txt002 + SPHERE CENTER 0.215215 -0.577822 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER 0.208824 -0.601672 0.57027 RAD 0.00617284 + txt002 + SPHERE CENTER 0.197581 -0.598659 0.537348 RAD 0.00617284 + txt002 + SPHERE CENTER 0.188764 -0.609078 0.557924 RAD 0.00617284 + txt002 + SPHERE CENTER 0.175095 -0.592634 0.545578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0329639 -0.552323 0.43322 RAD 0.0555556 + txt002 + SPHERE CENTER 0.0248832 -0.625877 0.436618 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0316054 -0.646362 0.448652 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0478 -0.627981 0.445566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0287309 -0.625173 0.460998 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00868865 -0.644258 0.439705 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00581415 -0.623069 0.45205 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00196644 -0.623773 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0277577 -0.647066 0.424272 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0210355 -0.62658 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0439523 -0.628685 0.421186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0822954 -0.593331 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.105299 -0.593994 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER 0.100664 -0.582384 0.457911 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0926585 -0.572783 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0869303 -0.604941 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0742898 -0.58373 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0639267 -0.604278 0.482603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0949359 -0.614541 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0719323 -0.613879 0.46131 RAD 0.00617284 + txt002 + SPHERE CENTER 0.090301 -0.602932 0.448964 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0138144 -0.584567 0.497099 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0177119 -0.584898 0.521479 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0364224 -0.580268 0.506047 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0185345 -0.56353 0.509133 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00489609 -0.589197 0.512531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00407348 -0.567829 0.500186 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00879364 -0.588867 0.488152 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0129918 -0.605935 0.509445 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00909422 -0.605605 0.485065 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0317022 -0.601305 0.494013 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0244483 -0.584869 0.399581 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0473753 -0.5935 0.402668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0308315 -0.595617 0.420874 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0399691 -0.57344 0.415013 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0409921 -0.582752 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0335859 -0.562692 0.39372 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0180651 -0.574121 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0318545 -0.604929 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00892756 -0.596298 0.384149 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0153107 -0.607046 0.405442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0355172 -0.54356 0.460062 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0495897 -0.530389 0.475494 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0261165 -0.53532 0.481355 RAD 0.00617284 + txt002 + SPHERE CENTER -0.031221 -0.519442 0.463149 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0589904 -0.538628 0.454201 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0406217 -0.527681 0.441856 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0449178 -0.551799 0.438769 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0538859 -0.554507 0.472408 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0398133 -0.567678 0.456976 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0304127 -0.559438 0.478269 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0163676 -0.511316 0.396183 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0212225 -0.48882 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00896145 -0.491256 0.408529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00194055 -0.497372 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0286287 -0.50888 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00546563 -0.517432 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0237738 -0.531375 0.383837 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0395307 -0.502764 0.396183 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0346758 -0.525259 0.40513 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0272696 -0.505199 0.417476 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0440327 -0.593633 0.372739 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0604766 -0.607302 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0678827 -0.587242 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0604766 -0.607302 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0366265 -0.613693 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0366265 -0.613693 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0201827 -0.600023 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0440327 -0.593633 0.348047 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0275889 -0.579964 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0514389 -0.573573 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0521134 -0.520079 0.369341 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0542684 -0.523344 0.344961 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0591566 -0.541988 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0358996 -0.534291 0.357307 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0472252 -0.501435 0.353908 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0288565 -0.512382 0.366254 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0450702 -0.49817 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0704822 -0.509132 0.356995 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0683272 -0.505868 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0753703 -0.527777 0.372427 RAD 0.00617284 + txt002 + SPHERE CENTER 0.101445 -0.561087 0.406378 RAD 0.0185185 + txt002 + SPHERE CENTER 0.118381 -0.551884 0.390945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0944221 -0.550745 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.103361 -0.536664 0.403291 RAD 0.00617284 + txt002 + SPHERE CENTER 0.125404 -0.562225 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.110383 -0.547006 0.424584 RAD 0.00617284 + txt002 + SPHERE CENTER 0.108468 -0.571428 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER 0.116465 -0.576307 0.394032 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0995293 -0.58551 0.409464 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0925065 -0.575168 0.388171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.247614 -0.494808 0.43322 RAD 0.0555556 + txt002 + SPHERE CENTER 0.313607 -0.494287 0.399581 RAD 0.0185185 + txt002 + SPHERE CENTER 0.326876 -0.484182 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.302705 -0.488171 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.310432 -0.470513 0.39372 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337778 -0.490299 0.402668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.321334 -0.476629 0.415013 RAD 0.00617284 + txt002 + SPHERE CENTER 0.324509 -0.500404 0.420874 RAD 0.00617284 + txt002 + SPHERE CENTER 0.330051 -0.507957 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.316783 -0.518062 0.405442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.305881 -0.511946 0.384149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.269833 -0.434629 0.396183 RAD 0.0185185 + txt002 + SPHERE CENTER 0.279233 -0.426389 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER 0.286276 -0.448298 0.383837 RAD 0.00617284 + txt002 + SPHERE CENTER 0.263449 -0.445377 0.37489 RAD 0.00617284 + txt002 + SPHERE CENTER 0.262789 -0.41272 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.247006 -0.431707 0.387235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.253389 -0.420959 0.408529 RAD 0.00617284 + txt002 + SPHERE CENTER 0.285616 -0.415641 0.396183 RAD 0.00617284 + txt002 + SPHERE CENTER 0.276216 -0.42388 0.417476 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29266 -0.43755 0.40513 RAD 0.00617284 + txt002 + SPHERE CENTER 0.302539 -0.452978 0.460062 RAD 0.0185185 + txt002 + SPHERE CENTER 0.320401 -0.436971 0.454201 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3148 -0.455413 0.438769 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29902 -0.436675 0.441856 RAD 0.00617284 + txt002 + SPHERE CENTER 0.30814 -0.434535 0.475494 RAD 0.00617284 + txt002 + SPHERE CENTER 0.286759 -0.434239 0.463149 RAD 0.00617284 + txt002 + SPHERE CENTER 0.290278 -0.450543 0.481355 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32392 -0.453274 0.472408 RAD 0.00617284 + txt002 + SPHERE CENTER 0.306057 -0.469281 0.478269 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318318 -0.471717 0.456976 RAD 0.00617284 + txt002 + SPHERE CENTER 0.291389 -0.554467 0.436618 RAD 0.0185185 + txt002 + SPHERE CENTER 0.314604 -0.562288 0.439705 RAD 0.00617284 + txt002 + SPHERE CENTER 0.310183 -0.541186 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER 0.306499 -0.542501 0.45205 RAD 0.00617284 + txt002 + SPHERE CENTER 0.29581 -0.575569 0.448652 RAD 0.00617284 + txt002 + SPHERE CENTER 0.287705 -0.555781 0.460998 RAD 0.00617284 + txt002 + SPHERE CENTER 0.272595 -0.567748 0.445566 RAD 0.00617284 + txt002 + SPHERE CENTER 0.299494 -0.574255 0.424272 RAD 0.00617284 + txt002 + SPHERE CENTER 0.276279 -0.566433 0.421186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.295073 -0.553152 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.28032 -0.513157 0.497099 RAD 0.0185185 + txt002 + SPHERE CENTER 0.298839 -0.507811 0.512531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.302049 -0.505577 0.488152 RAD 0.00617284 + txt002 + SPHERE CENTER 0.287442 -0.489718 0.500186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.27711 -0.515392 0.521479 RAD 0.00617284 + txt002 + SPHERE CENTER 0.265714 -0.497299 0.509133 RAD 0.00617284 + txt002 + SPHERE CENTER 0.258591 -0.520738 0.506047 RAD 0.00617284 + txt002 + SPHERE CENTER 0.291716 -0.531251 0.509445 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273198 -0.536597 0.494013 RAD 0.00617284 + txt002 + SPHERE CENTER 0.294927 -0.529016 0.485065 RAD 0.00617284 + txt002 + SPHERE CENTER 0.225396 -0.554987 0.470257 RAD 0.0185185 + txt002 + SPHERE CENTER 0.227186 -0.567359 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.246777 -0.555283 0.482603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.227528 -0.54267 0.49155 RAD 0.00617284 + txt002 + SPHERE CENTER 0.205805 -0.567063 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER 0.206147 -0.542374 0.479204 RAD 0.00617284 + txt002 + SPHERE CENTER 0.204014 -0.554691 0.457911 RAD 0.00617284 + txt002 + SPHERE CENTER 0.225054 -0.579676 0.470257 RAD 0.00617284 + txt002 + SPHERE CENTER 0.223263 -0.567305 0.448964 RAD 0.00617284 + txt002 + SPHERE CENTER 0.244644 -0.567601 0.46131 RAD 0.00617284 + txt002 + SPHERE CENTER 0.258683 -0.536117 0.372739 RAD 0.0185185 + txt002 + SPHERE CENTER 0.275127 -0.549787 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282533 -0.529727 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER 0.275127 -0.549787 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.251277 -0.556177 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.251277 -0.556177 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.234833 -0.542508 0.372739 RAD 0.00617284 + txt002 + SPHERE CENTER 0.258683 -0.536117 0.348047 RAD 0.00617284 + txt002 + SPHERE CENTER 0.242239 -0.522448 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.266089 -0.516058 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.19269 -0.536638 0.406378 RAD 0.0185185 + txt002 + SPHERE CENTER 0.17251 -0.549603 0.412239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.191778 -0.549105 0.427671 RAD 0.00617284 + txt002 + SPHERE CENTER 0.177908 -0.528912 0.424584 RAD 0.00617284 + txt002 + SPHERE CENTER 0.173421 -0.537136 0.390945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.178819 -0.516445 0.403291 RAD 0.00617284 + txt002 + SPHERE CENTER 0.193601 -0.524171 0.385084 RAD 0.00617284 + txt002 + SPHERE CENTER 0.187292 -0.557329 0.394032 RAD 0.00617284 + txt002 + SPHERE CENTER 0.207471 -0.544363 0.388171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.20656 -0.556831 0.409464 RAD 0.00617284 + txt002 + SPHERE CENTER 0.214908 -0.476459 0.369341 RAD 0.0185185 + txt002 + SPHERE CENTER 0.209819 -0.457868 0.353908 RAD 0.00617284 + txt002 + SPHERE CENTER 0.210053 -0.453963 0.378288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.2312 -0.458164 0.366254 RAD 0.00617284 + txt002 + SPHERE CENTER 0.214674 -0.480363 0.344961 RAD 0.00617284 + txt002 + SPHERE CENTER 0.236055 -0.480659 0.357307 RAD 0.00617284 + txt002 + SPHERE CENTER 0.219763 -0.498954 0.360393 RAD 0.00617284 + txt002 + SPHERE CENTER 0.193527 -0.476163 0.356995 RAD 0.00617284 + txt002 + SPHERE CENTER 0.198616 -0.494753 0.372427 RAD 0.00617284 + txt002 + SPHERE CENTER 0.193761 -0.472258 0.381374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.172546 -0.643951 1.11022e-16 RAD 0.166667 + txt002 + SPHERE CENTER -0.157543 -0.835815 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.122136 -0.871646 0.165419 RAD 0.0185185 + txt002 + SPHERE CENTER -0.102403 -0.871334 0.180258 RAD 0.00617284 + txt002 + SPHERE CENTER -0.100577 -0.862937 0.157111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.113406 -0.850164 0.173902 RAD 0.00617284 + txt002 + SPHERE CENTER -0.123961 -0.880044 0.188567 RAD 0.00617284 + txt002 + SPHERE CENTER -0.134964 -0.858873 0.182211 RAD 0.00617284 + txt002 + SPHERE CENTER -0.143694 -0.880356 0.173728 RAD 0.00617284 + txt002 + SPHERE CENTER -0.111133 -0.892817 0.171776 RAD 0.00617284 + txt002 + SPHERE CENTER -0.130866 -0.893129 0.156937 RAD 0.00617284 + txt002 + SPHERE CENTER -0.109307 -0.884419 0.148628 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0854653 -0.82339 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0654286 -0.811594 0.114524 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0820122 -0.820516 0.0985541 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0876595 -0.80102 0.112614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0688817 -0.814468 0.138803 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0911125 -0.803895 0.136894 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0889183 -0.826265 0.147112 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0632344 -0.833964 0.124743 RAD 0.00617284 + txt002 + SPHERE CENTER -0.083271 -0.845761 0.133052 RAD 0.00617284 + txt002 + SPHERE CENTER -0.079818 -0.842886 0.108773 RAD 0.00617284 + txt002 + SPHERE CENTER -0.135649 -0.799077 0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER -0.120908 -0.781177 0.180075 RAD 0.00617284 + txt002 + SPHERE CENTER -0.113462 -0.795477 0.161374 RAD 0.00617284 + txt002 + SPHERE CENTER -0.13149 -0.778973 0.157875 RAD 0.00617284 + txt002 + SPHERE CENTER -0.143095 -0.784778 0.190293 RAD 0.00617284 + txt002 + SPHERE CENTER -0.153678 -0.782573 0.168094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.157836 -0.802678 0.181811 RAD 0.00617284 + txt002 + SPHERE CENTER -0.125067 -0.801282 0.193792 RAD 0.00617284 + txt002 + SPHERE CENTER -0.139808 -0.819182 0.18531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.11762 -0.815582 0.175091 RAD 0.00617284 + txt002 + SPHERE CENTER -0.194213 -0.884071 0.153697 RAD 0.0185185 + txt002 + SPHERE CENTER -0.197746 -0.891905 0.176845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.175383 -0.884286 0.169668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.193701 -0.867957 0.172398 RAD 0.00617284 + txt002 + SPHERE CENTER -0.216576 -0.89169 0.160875 RAD 0.00617284 + txt002 + SPHERE CENTER -0.212531 -0.867741 0.156428 RAD 0.00617284 + txt002 + SPHERE CENTER -0.213043 -0.883856 0.137727 RAD 0.00617284 + txt002 + SPHERE CENTER -0.198259 -0.908019 0.158144 RAD 0.00617284 + txt002 + SPHERE CENTER -0.194726 -0.900186 0.134996 RAD 0.00617284 + txt002 + SPHERE CENTER -0.175896 -0.900401 0.150967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.207727 -0.811502 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.212743 -0.794108 0.176661 RAD 0.00617284 + txt002 + SPHERE CENTER -0.189621 -0.802328 0.173931 RAD 0.00617284 + txt002 + SPHERE CENTER -0.199907 -0.788345 0.156372 RAD 0.00617284 + txt002 + SPHERE CENTER -0.230849 -0.803282 0.162601 RAD 0.00617284 + txt002 + SPHERE CENTER -0.218012 -0.797518 0.142311 RAD 0.00617284 + txt002 + SPHERE CENTER -0.225832 -0.820676 0.14581 RAD 0.00617284 + txt002 + SPHERE CENTER -0.220563 -0.817265 0.18016 RAD 0.00617284 + txt002 + SPHERE CENTER -0.215547 -0.83466 0.163369 RAD 0.00617284 + txt002 + SPHERE CENTER -0.197441 -0.825486 0.177429 RAD 0.00617284 + txt002 + SPHERE CENTER -0.229621 -0.84824 0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.25245 -0.843832 0.107698 RAD 0.00617284 + txt002 + SPHERE CENTER -0.233837 -0.846687 0.123668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.235043 -0.826426 0.109608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.248234 -0.845385 0.0834188 RAD 0.00617284 + txt002 + SPHERE CENTER -0.230827 -0.827978 0.0853287 RAD 0.00617284 + txt002 + SPHERE CENTER -0.225404 -0.849792 0.0751099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.247028 -0.865646 0.0974792 RAD 0.00617284 + txt002 + SPHERE CENTER -0.224198 -0.870053 0.0891702 RAD 0.00617284 + txt002 + SPHERE CENTER -0.228415 -0.868501 0.113449 RAD 0.00617284 + txt002 + SPHERE CENTER -0.14403 -0.908384 0.104938 RAD 0.0185185 + txt002 + SPHERE CENTER -0.128672 -0.926643 0.111295 RAD 0.00617284 + txt002 + SPHERE CENTER -0.1198 -0.904034 0.106848 RAD 0.00617284 + txt002 + SPHERE CENTER -0.133221 -0.90826 0.127138 RAD 0.00617284 + txt002 + SPHERE CENTER -0.152902 -0.930993 0.109385 RAD 0.00617284 + txt002 + SPHERE CENTER -0.157451 -0.912609 0.125228 RAD 0.00617284 + txt002 + SPHERE CENTER -0.16826 -0.912733 0.103028 RAD 0.00617284 + txt002 + SPHERE CENTER -0.139481 -0.926768 0.0890951 RAD 0.00617284 + txt002 + SPHERE CENTER -0.154838 -0.908508 0.0827387 RAD 0.00617284 + txt002 + SPHERE CENTER -0.130608 -0.904159 0.0846485 RAD 0.00617284 + txt002 + SPHERE CENTER -0.179437 -0.872552 0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER -0.188167 -0.894035 0.0421477 RAD 0.00617284 + txt002 + SPHERE CENTER -0.172046 -0.89378 0.0608487 RAD 0.00617284 + txt002 + SPHERE CENTER -0.195141 -0.885777 0.0643473 RAD 0.00617284 + txt002 + SPHERE CENTER -0.195558 -0.872807 0.0319289 RAD 0.00617284 + txt002 + SPHERE CENTER -0.202532 -0.864549 0.0541285 RAD 0.00617284 + txt002 + SPHERE CENTER -0.186828 -0.851325 0.0404111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.172463 -0.880811 0.0284303 RAD 0.00617284 + txt002 + SPHERE CENTER -0.163733 -0.859328 0.0369125 RAD 0.00617284 + txt002 + SPHERE CENTER -0.156342 -0.880556 0.0471312 RAD 0.00617284 + txt002 + SPHERE CENTER -0.107359 -0.860128 0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0905999 -0.853284 0.0455609 RAD 0.00617284 + txt002 + SPHERE CENTER -0.111382 -0.840233 0.0482916 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0940331 -0.839638 0.0658506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.086577 -0.873178 0.0596212 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0900102 -0.859532 0.079911 RAD 0.00617284 + txt002 + SPHERE CENTER -0.103336 -0.880022 0.0764123 RAD 0.00617284 + txt002 + SPHERE CENTER -0.103926 -0.873773 0.0420622 RAD 0.00617284 + txt002 + SPHERE CENTER -0.120685 -0.880618 0.0588533 RAD 0.00617284 + txt002 + SPHERE CENTER -0.124708 -0.860723 0.044793 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0133465 -0.69376 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.0838533 -0.674309 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.103063 -0.66171 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0876683 -0.673446 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0800983 -0.653258 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0992478 -0.662574 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0762832 -0.654121 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0800382 -0.675172 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.106818 -0.682761 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0876083 -0.69536 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0914233 -0.694497 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0539145 -0.666287 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0547519 -0.662466 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0439578 -0.682791 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0332597 -0.660752 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0647085 -0.645962 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0432164 -0.644249 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0638711 -0.649783 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0754066 -0.668 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0745692 -0.671821 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0646126 -0.688325 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0325183 -0.62221 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0446211 -0.604582 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.053173 -0.627745 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0325183 -0.62221 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0239663 -0.599047 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0118635 -0.616676 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0118635 -0.616676 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0446211 -0.604582 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0325183 -0.62221 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.053173 -0.627745 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0432853 -0.701782 0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0608821 -0.693716 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0652402 -0.694884 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0496759 -0.677932 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0389272 -0.700615 0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.027721 -0.684831 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0213304 -0.708681 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0544915 -0.717566 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0368947 -0.725632 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0588496 -0.718734 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00804971 -0.649684 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.00328338 -0.628657 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0152909 -0.642244 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.000378614 -0.630031 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.026624 -0.636097 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.022962 -0.637471 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0313903 -0.657124 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0117117 -0.648309 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.016478 -0.669336 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.00686255 -0.661896 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0272215 -0.721234 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0310802 -0.720593 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00820099 -0.718114 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0246945 -0.7 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0501007 -0.723713 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.043715 -0.70312 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.046242 -0.724354 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0336072 -0.741827 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0297485 -0.742467 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.010728 -0.739347 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0646815 -0.745859 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0887955 -0.750021 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0813312 -0.732161 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.078459 -0.729506 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0721458 -0.763719 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0618093 -0.743204 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0480318 -0.759557 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.075018 -0.766375 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.050904 -0.762212 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0675537 -0.748514 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0058253 -0.76531 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.00415829 -0.786629 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0148294 -0.770845 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0058253 -0.76531 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.024813 -0.781094 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.02648 -0.759776 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.02648 -0.759776 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00415829 -0.786629 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0058253 -0.76531 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0148294 -0.770845 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0347427 -0.737837 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0542122 -0.747099 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0550267 -0.7241 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0553974 -0.743371 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0339282 -0.760836 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0351134 -0.757108 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0144587 -0.751574 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0335575 -0.741565 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.014088 -0.732303 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0343719 -0.718566 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.172546 -0.643951 0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER -0.142305 -0.61371 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.125845 -0.597249 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.12123 -0.610094 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.138689 -0.592635 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.14692 -0.600865 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.159765 -0.596251 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.163381 -0.617326 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.12946 -0.618324 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.145921 -0.634785 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.124846 -0.631169 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.100996 -0.624779 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0833673 -0.612676 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.100996 -0.624779 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.10653 -0.604124 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0833673 -0.612676 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.10653 -0.604124 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.100996 -0.624779 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0778329 -0.633331 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0954616 -0.645433 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0954616 -0.645433 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.153374 -0.5724 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.141271 -0.554772 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.13272 -0.577935 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.153374 -0.5724 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.161926 -0.549237 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.174029 -0.566866 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.174029 -0.566866 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.141271 -0.554772 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.153374 -0.5724 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.13272 -0.577935 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.213855 -0.632882 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.216282 -0.61945 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.193796 -0.625476 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.207465 -0.609032 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.236341 -0.626857 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.227525 -0.616438 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.233915 -0.640288 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.222672 -0.6433 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.220246 -0.656732 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.200186 -0.649326 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.224924 -0.591572 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.2291 -0.567237 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.209804 -0.576452 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.209804 -0.576452 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.24422 -0.582357 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.224924 -0.591572 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.240045 -0.606693 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.24422 -0.582357 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.240045 -0.606693 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.224924 -0.591572 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.244096 -0.663122 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.265414 -0.661455 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.244096 -0.663122 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.249631 -0.642468 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.265414 -0.661455 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.249631 -0.642468 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.244096 -0.663122 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.25988 -0.68211 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.238562 -0.683777 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.238562 -0.683777 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.161477 -0.68526 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.148046 -0.687686 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.137627 -0.678869 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.154071 -0.6652 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.171896 -0.694077 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER -0.177921 -0.671591 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER -0.185327 -0.691651 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.155452 -0.707746 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER -0.168883 -0.70532 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.145033 -0.698929 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.191718 -0.715501 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.190051 -0.736819 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.171063 -0.721035 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.191718 -0.715501 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.210706 -0.731284 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.212373 -0.709966 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.212373 -0.709966 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.190051 -0.736819 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.191718 -0.715501 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.171063 -0.721035 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.120168 -0.696329 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.095832 -0.700504 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.105047 -0.681209 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.105047 -0.681209 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.110952 -0.715624 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.120168 -0.696329 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER -0.135288 -0.711449 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER -0.110952 -0.715624 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.135288 -0.711449 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.120168 -0.696329 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER -0.343435 -0.786005 8.51251e-17 RAD 0.0555556 + txt002 + SPHERE CENTER -0.392454 -0.82165 0.0425863 RAD 0.0185185 + txt002 + SPHERE CENTER -0.400556 -0.824791 0.065698 RAD 0.00617284 + txt002 + SPHERE CENTER -0.376528 -0.821021 0.0614442 RAD 0.00617284 + txt002 + SPHERE CENTER -0.392663 -0.802599 0.058292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.416482 -0.82542 0.0468401 RAD 0.00617284 + txt002 + SPHERE CENTER -0.408589 -0.803228 0.0394341 RAD 0.00617284 + txt002 + SPHERE CENTER -0.40838 -0.822279 0.0237283 RAD 0.00617284 + txt002 + SPHERE CENTER -0.400347 -0.843843 0.0499923 RAD 0.00617284 + txt002 + SPHERE CENTER -0.392245 -0.840701 0.0268805 RAD 0.00617284 + txt002 + SPHERE CENTER -0.376319 -0.840073 0.0457385 RAD 0.00617284 + txt002 + SPHERE CENTER -0.323622 -0.80984 0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.308073 -0.80634 0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.300378 -0.802721 0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER -0.316395 -0.786996 0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER -0.331317 -0.813459 0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339639 -0.794116 0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER -0.346866 -0.81696 0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER -0.315299 -0.829184 0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER -0.330849 -0.832685 0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.307605 -0.825565 0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER -0.370774 -0.753118 0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER -0.367981 -0.734271 0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.348136 -0.745269 0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.362711 -0.731279 0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER -0.390619 -0.74212 0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.385349 -0.739128 0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER -0.393412 -0.760966 0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER -0.376044 -0.756109 0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER -0.378837 -0.774956 0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER -0.356199 -0.767107 0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.412267 -0.797815 -0.0246914 RAD 0.0185185 + txt002 + SPHERE CENTER -0.436217 -0.793573 -0.0204376 RAD 0.00617284 + txt002 + SPHERE CENTER -0.420728 -0.796968 -0.00151032 RAD 0.00617284 + txt002 + SPHERE CENTER -0.419454 -0.776294 -0.0149506 RAD 0.00617284 + txt002 + SPHERE CENTER -0.427756 -0.79442 -0.0436186 RAD 0.00617284 + txt002 + SPHERE CENTER -0.410993 -0.777141 -0.0381316 RAD 0.00617284 + txt002 + SPHERE CENTER -0.403807 -0.798662 -0.0478724 RAD 0.00617284 + txt002 + SPHERE CENTER -0.42903 -0.815094 -0.0301783 RAD 0.00617284 + txt002 + SPHERE CENTER -0.405081 -0.819335 -0.0344321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.413542 -0.818489 -0.0112511 RAD 0.00617284 + txt002 + SPHERE CENTER -0.390587 -0.729282 -0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER -0.392427 -0.704862 -0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER -0.373948 -0.714218 0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.374248 -0.717401 -0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER -0.409067 -0.719927 -0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER -0.390887 -0.732465 -0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.407227 -0.744347 -0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.408767 -0.716744 0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER -0.406927 -0.741164 0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER -0.390287 -0.726099 0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER -0.363249 -0.76217 -0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER -0.356966 -0.747522 -0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER -0.352002 -0.740618 -0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339469 -0.759239 -0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER -0.368213 -0.769074 -0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER -0.350716 -0.780791 -0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER -0.374496 -0.783722 -0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER -0.380746 -0.750453 -0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER -0.387029 -0.765101 -0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.375782 -0.743549 -0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER -0.365116 -0.854538 -0.0178949 RAD 0.0185185 + txt002 + SPHERE CENTER -0.365674 -0.878086 -0.0104889 RAD 0.00617284 + txt002 + SPHERE CENTER -0.346241 -0.863875 -0.00500196 RAD 0.00617284 + txt002 + SPHERE CENTER -0.367962 -0.859887 0.00604126 RAD 0.00617284 + txt002 + SPHERE CENTER -0.384548 -0.868748 -0.0233819 RAD 0.00617284 + txt002 + SPHERE CENTER -0.386837 -0.85055 -0.00685171 RAD 0.00617284 + txt002 + SPHERE CENTER -0.38399 -0.8452 -0.0307879 RAD 0.00617284 + txt002 + SPHERE CENTER -0.362827 -0.872736 -0.0344251 RAD 0.00617284 + txt002 + SPHERE CENTER -0.362269 -0.849188 -0.0418311 RAD 0.00617284 + txt002 + SPHERE CENTER -0.343394 -0.858526 -0.0289382 RAD 0.00617284 + txt002 + SPHERE CENTER -0.316097 -0.818893 -0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER -0.297057 -0.819591 -0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.304244 -0.79807 -0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER -0.293153 -0.814956 -0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER -0.30891 -0.840413 -0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.305006 -0.835779 -0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER -0.32795 -0.839716 -0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER -0.320001 -0.823527 -0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339041 -0.822829 -0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER -0.327188 -0.802007 -0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER -0.296284 -0.842728 0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER -0.272611 -0.848999 0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER -0.278432 -0.829121 -0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.281616 -0.828835 0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER -0.290462 -0.862606 0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER -0.299468 -0.842441 0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.314135 -0.856335 0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.287278 -0.862893 -0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER -0.310951 -0.856621 -0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER -0.293099 -0.843015 -0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER -0.358439 -0.594141 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.389119 -0.547576 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.386849 -0.525642 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.366733 -0.538964 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.379645 -0.528407 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.409235 -0.534255 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.402031 -0.537019 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.411505 -0.556189 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396323 -0.544812 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.398593 -0.566746 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.376207 -0.558134 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.317871 -0.566667 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.299647 -0.551072 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.29885 -0.563547 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.315344 -0.545434 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.318667 -0.554192 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.334364 -0.548554 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.336891 -0.569787 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.302174 -0.572306 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.320398 -0.587901 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.301377 -0.584781 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339267 -0.522591 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.327164 -0.504962 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.318612 -0.528125 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339267 -0.522591 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.347819 -0.499428 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.359921 -0.517056 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.359921 -0.517056 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.327164 -0.504962 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339267 -0.522591 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.318612 -0.528125 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.429687 -0.57505 0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER -0.446515 -0.55776 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.428387 -0.562617 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.423296 -0.5512 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.447815 -0.570193 0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER -0.424596 -0.563633 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.430987 -0.587483 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER -0.452905 -0.58161 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436077 -0.5989 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER -0.434777 -0.586467 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER -0.379835 -0.550064 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.372012 -0.535334 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.359551 -0.536327 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.35918 -0.555599 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.392296 -0.549071 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.379464 -0.569335 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.400119 -0.563801 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.392667 -0.529799 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.400489 -0.54453 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.380205 -0.530793 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399007 -0.621614 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.420252 -0.632748 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER -0.408963 -0.638118 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.419661 -0.61608 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.410295 -0.616244 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER -0.409705 -0.599576 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.38905 -0.60511 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399597 -0.638282 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.378352 -0.627149 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.388308 -0.643653 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.408291 -0.619127 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.415912 -0.617918 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER -0.39183 -0.616439 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.406911 -0.597788 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER -0.432372 -0.620605 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER -0.423371 -0.600475 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER -0.424751 -0.621814 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.417292 -0.639257 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER -0.409671 -0.640465 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER -0.39321 -0.637778 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37761 -0.665691 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.375943 -0.687009 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.356956 -0.671225 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37761 -0.665691 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396598 -0.681475 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.398265 -0.660156 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.398265 -0.660156 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.375943 -0.687009 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37761 -0.665691 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.356956 -0.671225 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.337042 -0.638217 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.320629 -0.641183 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.313702 -0.630777 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.328614 -0.618565 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.34397 -0.648623 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.351955 -0.626005 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.360383 -0.645657 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.329058 -0.660835 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.345471 -0.65787 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.32213 -0.65043 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.358439 -0.594141 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.409774 -0.542042 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.413579 -0.517869 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.395831 -0.525596 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.393219 -0.528508 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.427522 -0.534315 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.407161 -0.544953 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.423716 -0.558488 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.430134 -0.531404 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.426328 -0.555577 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.412386 -0.539131 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.379835 -0.550064 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.375068 -0.529037 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.356494 -0.542624 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.371406 -0.530412 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.398409 -0.536477 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.394747 -0.537852 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.403175 -0.557504 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.383497 -0.548689 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.388263 -0.569716 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.364922 -0.562276 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339267 -0.522591 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.327164 -0.504962 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.318612 -0.528125 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339267 -0.522591 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.347819 -0.499428 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.359921 -0.517056 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.359921 -0.517056 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.327164 -0.504962 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.339267 -0.522591 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.318612 -0.528125 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.388377 -0.586119 -0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.399584 -0.570335 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.403942 -0.569167 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.381987 -0.562269 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.384019 -0.587286 -0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER -0.366422 -0.57922 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.372813 -0.60307 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER -0.405974 -0.594185 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER -0.394768 -0.609969 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER -0.410332 -0.593017 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER -0.317871 -0.566667 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.317033 -0.562847 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.327827 -0.583171 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.338525 -0.561133 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.307077 -0.546343 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.328569 -0.544629 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.307914 -0.550163 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.296378 -0.568381 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.297216 -0.572202 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.307172 -0.588706 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.337042 -0.638217 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.317573 -0.64748 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER -0.316758 -0.624481 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.316388 -0.643752 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.337857 -0.661216 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER -0.336672 -0.657489 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.357326 -0.651954 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER -0.338228 -0.641945 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER -0.357697 -0.632683 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.337413 -0.618946 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.428945 -0.613592 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.451897 -0.612625 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER -0.432663 -0.614807 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER -0.436515 -0.593593 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.448179 -0.61141 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER -0.432797 -0.592379 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER -0.425227 -0.612377 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.444328 -0.632624 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER -0.421376 -0.633591 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER -0.425094 -0.634806 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37761 -0.665691 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.375943 -0.687009 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.356956 -0.671225 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37761 -0.665691 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.396598 -0.681475 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.398265 -0.660156 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.398265 -0.660156 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.375943 -0.687009 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.37761 -0.665691 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER -0.356956 -0.671225 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.399007 -0.621614 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER -0.402865 -0.620974 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER -0.379986 -0.618494 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.39648 -0.600381 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.421886 -0.624094 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER -0.4155 -0.603501 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER -0.418027 -0.624734 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER -0.405392 -0.642207 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.401533 -0.642848 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.382513 -0.639728 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER -0.157543 -0.835815 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER -0.119969 -0.899353 -0.117284 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0977075 -0.909872 -0.115431 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0997803 -0.886771 -0.1239 RAD 0.00617284 + txt002 + SPHERE CENTER -0.104052 -0.891613 -0.100068 RAD 0.00617284 + txt002 + SPHERE CENTER -0.117896 -0.922453 -0.108814 RAD 0.00617284 + txt002 + SPHERE CENTER -0.124241 -0.904194 -0.0934517 RAD 0.00617284 + txt002 + SPHERE CENTER -0.140158 -0.911935 -0.110668 RAD 0.00617284 + txt002 + SPHERE CENTER -0.113625 -0.917612 -0.132647 RAD 0.00617284 + txt002 + SPHERE CENTER -0.135886 -0.907093 -0.1345 RAD 0.00617284 + txt002 + SPHERE CENTER -0.115698 -0.894512 -0.141116 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0844101 -0.836885 -0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0627848 -0.826973 -0.106005 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0805529 -0.830202 -0.122844 RAD 0.00617284 + txt002 + SPHERE CENTER -0.083104 -0.81296 -0.105354 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0666419 -0.833656 -0.0825505 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0869612 -0.819643 -0.0818993 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0882673 -0.843568 -0.0759343 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0640908 -0.850898 -0.10004 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0857161 -0.860809 -0.093424 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0818589 -0.854126 -0.116879 RAD 0.00617284 + txt002 + SPHERE CENTER -0.130205 -0.868703 -0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER -0.11253 -0.867758 -0.0334138 RAD 0.00617284 + txt002 + SPHERE CENTER -0.107566 -0.860854 -0.0565949 RAD 0.00617284 + txt002 + SPHERE CENTER -0.122142 -0.846864 -0.0423994 RAD 0.00617284 + txt002 + SPHERE CENTER -0.135168 -0.875606 -0.0274488 RAD 0.00617284 + txt002 + SPHERE CENTER -0.14478 -0.854713 -0.0364345 RAD 0.00617284 + txt002 + SPHERE CENTER -0.152843 -0.876551 -0.0446649 RAD 0.00617284 + txt002 + SPHERE CENTER -0.120593 -0.889596 -0.0416443 RAD 0.00617284 + txt002 + SPHERE CENTER -0.138267 -0.890541 -0.0588603 RAD 0.00617284 + txt002 + SPHERE CENTER -0.115629 -0.882692 -0.0648253 RAD 0.00617284 + txt002 + SPHERE CENTER -0.193102 -0.898283 -0.129006 RAD 0.0185185 + txt002 + SPHERE CENTER -0.201143 -0.920038 -0.120537 RAD 0.00617284 + txt002 + SPHERE CENTER -0.17991 -0.910616 -0.112168 RAD 0.00617284 + txt002 + SPHERE CENTER -0.201384 -0.900209 -0.105825 RAD 0.00617284 + txt002 + SPHERE CENTER -0.214335 -0.907705 -0.137375 RAD 0.00617284 + txt002 + SPHERE CENTER -0.214576 -0.887876 -0.122663 RAD 0.00617284 + txt002 + SPHERE CENTER -0.206294 -0.88595 -0.145845 RAD 0.00617284 + txt002 + SPHERE CENTER -0.192861 -0.918112 -0.143718 RAD 0.00617284 + txt002 + SPHERE CENTER -0.18482 -0.896357 -0.152187 RAD 0.00617284 + txt002 + SPHERE CENTER -0.171628 -0.90869 -0.135349 RAD 0.00617284 + txt002 + SPHERE CENTER -0.203337 -0.867633 -0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER -0.209658 -0.868948 -0.0385197 RAD 0.00617284 + txt002 + SPHERE CENTER -0.186008 -0.865773 -0.0448623 RAD 0.00617284 + txt002 + SPHERE CENTER -0.202239 -0.84746 -0.0481565 RAD 0.00617284 + txt002 + SPHERE CENTER -0.226988 -0.870808 -0.0560094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.219569 -0.84932 -0.0656463 RAD 0.00617284 + txt002 + SPHERE CENTER -0.220667 -0.869493 -0.0798417 RAD 0.00617284 + txt002 + SPHERE CENTER -0.210757 -0.889121 -0.0527151 RAD 0.00617284 + txt002 + SPHERE CENTER -0.204436 -0.887806 -0.0765474 RAD 0.00617284 + txt002 + SPHERE CENTER -0.187106 -0.885946 -0.0590577 RAD 0.00617284 + txt002 + SPHERE CENTER -0.230676 -0.834745 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER -0.252002 -0.824206 -0.116217 RAD 0.00617284 + txt002 + SPHERE CENTER -0.234336 -0.827952 -0.0993785 RAD 0.00617284 + txt002 + SPHERE CENTER -0.231282 -0.810793 -0.116868 RAD 0.00617284 + txt002 + SPHERE CENTER -0.248342 -0.830999 -0.139672 RAD 0.00617284 + txt002 + SPHERE CENTER -0.227621 -0.817586 -0.140323 RAD 0.00617284 + txt002 + SPHERE CENTER -0.227016 -0.841538 -0.146288 RAD 0.00617284 + txt002 + SPHERE CENTER -0.251396 -0.848158 -0.122182 RAD 0.00617284 + txt002 + SPHERE CENTER -0.23007 -0.858698 -0.128798 RAD 0.00617284 + txt002 + SPHERE CENTER -0.23373 -0.851905 -0.105343 RAD 0.00617284 + txt002 + SPHERE CENTER -0.147308 -0.866465 -0.177765 RAD 0.0185185 + txt002 + SPHERE CENTER -0.130609 -0.876203 -0.193128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.124356 -0.857385 -0.178416 RAD 0.00617284 + txt002 + SPHERE CENTER -0.128522 -0.879733 -0.16878 RAD 0.00617284 + txt002 + SPHERE CENTER -0.153561 -0.885283 -0.192477 RAD 0.00617284 + txt002 + SPHERE CENTER -0.151474 -0.888813 -0.168128 RAD 0.00617284 + txt002 + SPHERE CENTER -0.170259 -0.875546 -0.177114 RAD 0.00617284 + txt002 + SPHERE CENTER -0.149395 -0.862935 -0.202114 RAD 0.00617284 + txt002 + SPHERE CENTER -0.166093 -0.853198 -0.186751 RAD 0.00617284 + txt002 + SPHERE CENTER -0.143141 -0.844117 -0.187402 RAD 0.00617284 + txt002 + SPHERE CENTER -0.184881 -0.802927 -0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER -0.180723 -0.785723 -0.188808 RAD 0.00617284 + txt002 + SPHERE CENTER -0.173028 -0.782104 -0.165627 RAD 0.00617284 + txt002 + SPHERE CENTER -0.161937 -0.798991 -0.179823 RAD 0.00617284 + txt002 + SPHERE CENTER -0.192576 -0.806546 -0.194773 RAD 0.00617284 + txt002 + SPHERE CENTER -0.17379 -0.819813 -0.185788 RAD 0.00617284 + txt002 + SPHERE CENTER -0.196734 -0.82375 -0.177557 RAD 0.00617284 + txt002 + SPHERE CENTER -0.203667 -0.78966 -0.180578 RAD 0.00617284 + txt002 + SPHERE CENTER -0.207825 -0.806864 -0.163362 RAD 0.00617284 + txt002 + SPHERE CENTER -0.195972 -0.786041 -0.157397 RAD 0.00617284 + txt002 + SPHERE CENTER -0.111748 -0.803997 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER -0.108311 -0.798532 -0.183703 RAD 0.00617284 + txt002 + SPHERE CENTER -0.119537 -0.819589 -0.17736 RAD 0.00617284 + txt002 + SPHERE CENTER -0.131037 -0.797989 -0.174066 RAD 0.00617284 + txt002 + SPHERE CENTER -0.100522 -0.78294 -0.166213 RAD 0.00617284 + txt002 + SPHERE CENTER -0.123249 -0.782397 -0.156576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.10396 -0.788405 -0.142381 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0890219 -0.80454 -0.169507 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0924597 -0.810005 -0.145675 RAD 0.00617284 + txt002 + SPHERE CENTER -0.100248 -0.825597 -0.163165 RAD 0.00617284 + txt002 + SPHERE CENTER -0.172546 -0.643951 -0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER -0.202787 -0.61371 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.200937 -0.595399 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.194794 -0.591462 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.180539 -0.605717 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.208929 -0.617647 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.188531 -0.627965 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.210779 -0.635958 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.223185 -0.603392 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.225035 -0.621702 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.217042 -0.599454 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.244096 -0.624779 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.260374 -0.607636 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.240901 -0.612854 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.237705 -0.600929 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.26357 -0.619561 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.240901 -0.612854 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.247291 -0.636704 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.266765 -0.631486 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.250487 -0.648629 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.247291 -0.636704 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.191718 -0.5724 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.185011 -0.549732 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.167868 -0.56601 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.179793 -0.569205 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.208861 -0.556122 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.203643 -0.575596 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.215568 -0.578791 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.196936 -0.552927 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.203643 -0.575596 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.179793 -0.569205 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.131237 -0.632882 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.131575 -0.625593 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.15071 -0.6381 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.146508 -0.614836 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.112102 -0.620375 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.127034 -0.609618 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.111763 -0.627664 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.116304 -0.643639 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.115965 -0.650927 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.135439 -0.656145 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.120168 -0.591572 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.105912 -0.577317 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.111438 -0.600302 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.128897 -0.582843 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.114642 -0.568587 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.137627 -0.574113 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.128897 -0.582843 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0971825 -0.586046 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.111438 -0.600302 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.102708 -0.609032 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.100996 -0.663122 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0783272 -0.656415 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0978007 -0.651197 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0946054 -0.639272 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0815225 -0.66834 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0978007 -0.651197 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.104191 -0.675047 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0847178 -0.680265 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.107387 -0.686972 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.104191 -0.675047 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.183615 -0.68526 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER -0.182351 -0.708085 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER -0.165569 -0.700531 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.188833 -0.704733 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER -0.200397 -0.692813 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER -0.206879 -0.689462 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER -0.201661 -0.669989 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.177134 -0.688611 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER -0.178397 -0.665787 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER -0.160351 -0.681058 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER -0.153374 -0.715501 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.136231 -0.731779 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.129524 -0.70911 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.141449 -0.712305 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.160081 -0.738169 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER -0.165299 -0.718696 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.177224 -0.721891 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.148156 -0.734974 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER -0.165299 -0.718696 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.141449 -0.712305 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.224924 -0.696329 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER -0.23918 -0.710584 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER -0.216195 -0.705059 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.233654 -0.687599 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER -0.24791 -0.701855 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.242384 -0.678869 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER -0.233654 -0.687599 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.23045 -0.719314 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER -0.216195 -0.705059 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER -0.207465 -0.713788 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0133465 -0.69376 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.0631985 -0.668775 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0667914 -0.661946 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0511945 -0.680354 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0452771 -0.65711 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0787954 -0.650366 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0572811 -0.64553 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0752026 -0.657195 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0847128 -0.673611 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.08112 -0.680439 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.069116 -0.692019 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00804971 -0.649684 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.000226782 -0.634953 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0122343 -0.635947 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.012605 -0.655218 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0205108 -0.64869 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00767898 -0.668955 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0283337 -0.66342 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0208815 -0.629419 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0287044 -0.644149 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00842045 -0.630413 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0325183 -0.62221 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0446211 -0.604582 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.053173 -0.627745 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0325183 -0.62221 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0239663 -0.599047 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0118635 -0.616676 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0118635 -0.616676 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0446211 -0.604582 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0325183 -0.62221 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.053173 -0.627745 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0845947 -0.712851 -0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER 0.107813 -0.706291 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0896851 -0.701434 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0909853 -0.689001 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.102723 -0.717709 -0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0858949 -0.700418 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0795043 -0.724268 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.101422 -0.730141 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0782041 -0.736701 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0832945 -0.725284 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0539145 -0.666287 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0721382 -0.650692 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.072935 -0.663167 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0564414 -0.645053 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0531177 -0.653812 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0374209 -0.648173 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.034894 -0.669407 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0696112 -0.671925 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0513875 -0.68752 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.070408 -0.6844 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0347427 -0.737837 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0511556 -0.740802 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0580833 -0.730397 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.043171 -0.718185 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.027815 -0.748242 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0198304 -0.725625 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0114021 -0.745277 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0427273 -0.760455 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0263144 -0.757489 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0496549 -0.750049 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0440268 -0.740325 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.0650768 -0.746894 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0607735 -0.723153 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0653796 -0.739183 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.04833 -0.764065 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0486329 -0.756355 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.02728 -0.757496 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0437239 -0.748035 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0226739 -0.741466 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0394207 -0.724295 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0058253 -0.76531 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER -0.00415829 -0.786629 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0148294 -0.770845 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0058253 -0.76531 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER -0.024813 -0.781094 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER -0.02648 -0.759776 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER -0.02648 -0.759776 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00415829 -0.786629 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0058253 -0.76531 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.0148294 -0.770845 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0272215 -0.721234 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER -0.0484665 -0.732368 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0371781 -0.737738 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0478762 -0.715699 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0385099 -0.715864 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0379196 -0.699195 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0172649 -0.70473 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0278118 -0.737902 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER -0.00656677 -0.726768 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER -0.0165234 -0.743272 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.471405 -0.471405 1.11022e-16 RAD 0.166667 + txt002 + SPHERE CENTER 0.690426 -0.508983 1.83812e-16 RAD 0.0555556 + txt002 + SPHERE CENTER 0.755941 -0.484794 -0.0246914 RAD 0.0185185 + txt002 + SPHERE CENTER 0.767658 -0.47411 -0.0436186 RAD 0.00617284 + txt002 + SPHERE CENTER 0.749038 -0.489758 -0.0478724 RAD 0.00617284 + txt002 + SPHERE CENTER 0.744501 -0.467528 -0.0381316 RAD 0.00617284 + txt002 + SPHERE CENTER 0.774562 -0.469146 -0.0204376 RAD 0.00617284 + txt002 + SPHERE CENTER 0.751405 -0.462564 -0.0149506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.762845 -0.47983 -0.00151032 RAD 0.00617284 + txt002 + SPHERE CENTER 0.779098 -0.491377 -0.0301783 RAD 0.00617284 + txt002 + SPHERE CENTER 0.767382 -0.502061 -0.0112511 RAD 0.00617284 + txt002 + SPHERE CENTER 0.760478 -0.507025 -0.0344321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.695668 -0.478434 -0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER 0.703418 -0.481931 -0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER 0.716184 -0.491475 -0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER 0.694124 -0.500827 -0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER 0.682902 -0.46889 -0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.673608 -0.487786 -0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER 0.675152 -0.465393 -0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER 0.704962 -0.459538 -0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER 0.697211 -0.456041 -0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER 0.717727 -0.469082 -0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.7029 -0.436283 -0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER 0.714226 -0.418941 -0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER 0.724842 -0.44101 -0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.704751 -0.43889 -0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.692283 -0.414215 -0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER 0.682808 -0.434163 -0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.680957 -0.431557 0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.712374 -0.416335 0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER 0.701048 -0.433677 0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER 0.722991 -0.438403 0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER 0.7507 -0.515343 0.0425863 RAD 0.0185185 + txt002 + SPHERE CENTER 0.773394 -0.506594 0.0468401 RAD 0.00617284 + txt002 + SPHERE CENTER 0.764807 -0.507924 0.0237283 RAD 0.00617284 + txt002 + SPHERE CENTER 0.755462 -0.491321 0.0394341 RAD 0.00617284 + txt002 + SPHERE CENTER 0.759287 -0.514012 0.065698 RAD 0.00617284 + txt002 + SPHERE CENTER 0.741355 -0.49874 0.058292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.736593 -0.522762 0.0614442 RAD 0.00617284 + txt002 + SPHERE CENTER 0.768632 -0.530616 0.0499923 RAD 0.00617284 + txt002 + SPHERE CENTER 0.745938 -0.539365 0.0457385 RAD 0.00617284 + txt002 + SPHERE CENTER 0.760045 -0.531946 0.0268805 RAD 0.00617284 + txt002 + SPHERE CENTER 0.697658 -0.466832 0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER 0.709346 -0.447385 0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.721188 -0.46231 0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER 0.703286 -0.447429 0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER 0.685816 -0.451907 0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.679757 -0.451951 0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER 0.674129 -0.471354 0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.703718 -0.466788 0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER 0.692031 -0.486235 0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.71556 -0.481713 0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.685185 -0.539531 0.0672777 RAD 0.0185185 + txt002 + SPHERE CENTER 0.693658 -0.538818 0.0904587 RAD 0.00617284 + txt002 + SPHERE CENTER 0.708875 -0.534075 0.0716007 RAD 0.00617284 + txt002 + SPHERE CENTER 0.691194 -0.517905 0.0775657 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669969 -0.544274 0.0861356 RAD 0.00617284 + txt002 + SPHERE CENTER 0.667505 -0.523361 0.0732426 RAD 0.00617284 + txt002 + SPHERE CENTER 0.661495 -0.544988 0.0629546 RAD 0.00617284 + txt002 + SPHERE CENTER 0.687649 -0.560445 0.0801706 RAD 0.00617284 + txt002 + SPHERE CENTER 0.679176 -0.561158 0.0569896 RAD 0.00617284 + txt002 + SPHERE CENTER 0.702866 -0.555702 0.0613127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.743468 -0.557494 -0.0178949 RAD 0.0185185 + txt002 + SPHERE CENTER 0.767402 -0.560084 -0.0233819 RAD 0.00617284 + txt002 + SPHERE CENTER 0.755145 -0.53997 -0.0307879 RAD 0.00617284 + txt002 + SPHERE CENTER 0.760285 -0.543179 -0.00685171 RAD 0.00617284 + txt002 + SPHERE CENTER 0.755725 -0.577608 -0.0104889 RAD 0.00617284 + txt002 + SPHERE CENTER 0.748608 -0.560703 0.00604126 RAD 0.00617284 + txt002 + SPHERE CENTER 0.731791 -0.575017 -0.00500196 RAD 0.00617284 + txt002 + SPHERE CENTER 0.750585 -0.574398 -0.0344251 RAD 0.00617284 + txt002 + SPHERE CENTER 0.726651 -0.571808 -0.0289382 RAD 0.00617284 + txt002 + SPHERE CENTER 0.738328 -0.554284 -0.0418311 RAD 0.00617284 + txt002 + SPHERE CENTER 0.677953 -0.581682 0.00679642 RAD 0.0185185 + txt002 + SPHERE CENTER 0.682851 -0.601808 0.0202367 RAD 0.00617284 + txt002 + SPHERE CENTER 0.700216 -0.58454 0.0170845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.680568 -0.579842 0.0312799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.660588 -0.59895 0.00994863 RAD 0.00617284 + txt002 + SPHERE CENTER 0.658304 -0.576984 0.0209919 RAD 0.00617284 + txt002 + SPHERE CENTER 0.65569 -0.578824 -0.00349164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.680237 -0.603648 -0.0042468 RAD 0.00617284 + txt002 + SPHERE CENTER 0.675339 -0.583522 -0.0176871 RAD 0.00617284 + txt002 + SPHERE CENTER 0.697602 -0.58638 -0.00739901 RAD 0.00617284 + txt002 + SPHERE CENTER 0.683194 -0.551134 -0.0604812 RAD 0.0185185 + txt002 + SPHERE CENTER 0.687731 -0.573364 -0.070222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.703871 -0.56324 -0.0545162 RAD 0.00617284 + txt002 + SPHERE CENTER 0.682033 -0.571303 -0.0462858 RAD 0.00617284 + txt002 + SPHERE CENTER 0.667055 -0.561258 -0.076187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.661356 -0.559196 -0.0522508 RAD 0.00617284 + txt002 + SPHERE CENTER 0.662518 -0.539027 -0.0664462 RAD 0.00617284 + txt002 + SPHERE CENTER 0.688893 -0.553195 -0.0844174 RAD 0.00617284 + txt002 + SPHERE CENTER 0.684356 -0.530964 -0.0746767 RAD 0.00617284 + txt002 + SPHERE CENTER 0.705033 -0.543071 -0.0687117 RAD 0.00617284 + txt002 + SPHERE CENTER 0.607487 -0.335322 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.629404 -0.313405 -0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.626214 -0.316595 -0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.624401 -0.335868 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.606941 -0.318408 -0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.631217 -0.294133 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.611945 -0.295946 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.634407 -0.290942 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.648676 -0.311592 -0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.651867 -0.308402 -0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.646863 -0.330864 -0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.610996 -0.384191 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.623201 -0.403702 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.635431 -0.385946 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.62031 -0.401066 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.598766 -0.401947 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.595876 -0.399312 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.586561 -0.382437 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.613886 -0.386827 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.601681 -0.367317 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.626116 -0.369071 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.558618 -0.331813 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.539107 -0.319608 -0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.541743 -0.322499 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.556863 -0.307378 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555982 -0.328923 -0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.573738 -0.316693 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.575492 -0.341128 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.540862 -0.344043 -0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.560372 -0.356248 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.543497 -0.346933 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.625895 -0.264535 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.637402 -0.248969 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.646193 -0.271807 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.625088 -0.268363 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.617105 -0.241698 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.604791 -0.261092 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.605598 -0.257264 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.638209 -0.245142 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.626702 -0.260708 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.647 -0.267979 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555109 -0.282943 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.550934 -0.258608 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.570229 -0.267823 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.570229 -0.267823 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.535813 -0.273728 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555109 -0.282943 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539989 -0.298064 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.535813 -0.273728 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539989 -0.298064 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555109 -0.282943 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.603979 -0.286452 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.613271 -0.265398 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627912 -0.281225 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.610787 -0.26842 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.589337 -0.270625 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.586853 -0.273647 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.580045 -0.291679 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.606463 -0.283431 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.59717 -0.304484 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.621104 -0.299257 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.678274 -0.316914 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.69384 -0.305407 -0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.674446 -0.317721 -0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671002 -0.296616 -0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.697667 -0.3046 -0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.67483 -0.295809 -0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.682101 -0.316107 -0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.701111 -0.325704 -0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.685545 -0.337211 -0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.681717 -0.338018 -0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.656357 -0.33883 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.677411 -0.329538 -0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.674389 -0.332022 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.661584 -0.314897 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.659378 -0.336346 -0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.643552 -0.321705 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.638325 -0.345639 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.672184 -0.353472 -0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.65113 -0.362764 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669162 -0.355956 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.659866 -0.3877 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.684201 -0.391875 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.674986 -0.37258 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.674986 -0.37258 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669081 -0.406996 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.659866 -0.3877 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.644745 -0.40282 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669081 -0.406996 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.644745 -0.40282 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.659866 -0.3877 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.607487 -0.335322 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.659645 -0.283164 0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER 0.672915 -0.269894 0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER 0.666987 -0.293281 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.649528 -0.275822 0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665573 -0.259777 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.642185 -0.265705 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.652302 -0.273047 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.683032 -0.277236 0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669762 -0.290507 0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.677104 -0.300624 0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.656357 -0.33883 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.663448 -0.328536 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.639482 -0.329516 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.654603 -0.314396 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.680322 -0.33785 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.671477 -0.32371 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.673232 -0.348145 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.665202 -0.35297 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.658111 -0.363265 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.641237 -0.353951 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.603979 -0.286452 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.614273 -0.279361 0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.628413 -0.288206 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.613293 -0.303327 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.589839 -0.277607 0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.588858 -0.301572 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.579544 -0.284698 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.604959 -0.262487 0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.594664 -0.269578 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.619099 -0.271332 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.610775 -0.279656 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.621535 -0.258061 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.634468 -0.275921 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616678 -0.264057 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.597842 -0.261795 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.592985 -0.267791 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.587082 -0.28339 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.615632 -0.27366 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.604872 -0.295255 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.628565 -0.29152 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555109 -0.282943 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.550934 -0.258608 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.570229 -0.267823 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.570229 -0.267823 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.535813 -0.273728 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555109 -0.282943 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539989 -0.298064 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.535813 -0.273728 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539989 -0.298064 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555109 -0.282943 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.558618 -0.331813 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.55307 -0.320611 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.57665 -0.325005 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.563845 -0.30788 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.535038 -0.327419 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.545813 -0.314688 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.540585 -0.338621 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.547843 -0.344544 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.553391 -0.355747 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.571423 -0.348938 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.663153 -0.332034 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.684748 -0.321274 0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.678752 -0.326131 0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.666888 -0.308341 0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669149 -0.327177 0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.651289 -0.314244 0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.647554 -0.337937 0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.681014 -0.344967 0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.659419 -0.355727 0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.675018 -0.349824 0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.610996 -0.384191 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.622198 -0.389739 0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.63493 -0.378964 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.617804 -0.366159 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.598265 -0.394966 0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.593871 -0.371386 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.587062 -0.389418 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.61539 -0.407771 0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.604188 -0.402224 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.628121 -0.396997 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.659866 -0.3877 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.684201 -0.391875 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.674986 -0.37258 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.674986 -0.37258 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669081 -0.406996 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.659866 -0.3877 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.644745 -0.40282 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.669081 -0.406996 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.644745 -0.40282 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.659866 -0.3877 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.554344 -0.645066 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.610229 -0.668521 0.153697 RAD 0.0185185 + txt002 + SPHERE CENTER 0.633406 -0.663938 0.160875 RAD 0.00617284 + txt002 + SPHERE CENTER 0.626429 -0.65892 0.137727 RAD 0.00617284 + txt002 + SPHERE CENTER 0.617928 -0.64522 0.156428 RAD 0.00617284 + txt002 + SPHERE CENTER 0.617206 -0.673539 0.176845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.601728 -0.654822 0.172398 RAD 0.00617284 + txt002 + SPHERE CENTER 0.59403 -0.678123 0.169668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.625707 -0.687239 0.158144 RAD 0.00617284 + txt002 + SPHERE CENTER 0.602531 -0.691822 0.150967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.61873 -0.682221 0.134996 RAD 0.00617284 + txt002 + SPHERE CENTER 0.622977 -0.619787 0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.63767 -0.608008 0.0834188 RAD 0.00617284 + txt002 + SPHERE CENTER 0.620102 -0.623239 0.0751099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.613891 -0.601637 0.0853287 RAD 0.00617284 + txt002 + SPHERE CENTER 0.640545 -0.604555 0.107698 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616766 -0.598184 0.109608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.625852 -0.616334 0.123668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.646756 -0.626157 0.0974792 RAD 0.00617284 + txt002 + SPHERE CENTER 0.632063 -0.637936 0.113449 RAD 0.00617284 + txt002 + SPHERE CENTER 0.629188 -0.641389 0.0891702 RAD 0.00617284 + txt002 + SPHERE CENTER 0.585648 -0.598918 0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.601562 -0.580238 0.162601 RAD 0.00617284 + txt002 + SPHERE CENTER 0.605914 -0.59781 0.14581 RAD 0.00617284 + txt002 + SPHERE CENTER 0.587563 -0.581665 0.142311 RAD 0.00617284 + txt002 + SPHERE CENTER 0.581295 -0.581346 0.176661 RAD 0.00617284 + txt002 + SPHERE CENTER 0.567297 -0.582773 0.156372 RAD 0.00617284 + txt002 + SPHERE CENTER 0.565381 -0.600026 0.173931 RAD 0.00617284 + txt002 + SPHERE CENTER 0.599646 -0.597491 0.18016 RAD 0.00617284 + txt002 + SPHERE CENTER 0.583732 -0.616171 0.177429 RAD 0.00617284 + txt002 + SPHERE CENTER 0.603999 -0.615063 0.163369 RAD 0.00617284 + txt002 + SPHERE CENTER 0.541596 -0.6938 0.165419 RAD 0.0185185 + txt002 + SPHERE CENTER 0.547376 -0.70016 0.188567 RAD 0.00617284 + txt002 + SPHERE CENTER 0.564621 -0.690564 0.173728 RAD 0.00617284 + txt002 + SPHERE CENTER 0.546319 -0.676324 0.182211 RAD 0.00617284 + txt002 + SPHERE CENTER 0.524351 -0.703396 0.180258 RAD 0.00617284 + txt002 + SPHERE CENTER 0.523294 -0.679561 0.173902 RAD 0.00617284 + txt002 + SPHERE CENTER 0.518571 -0.697037 0.157111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.542652 -0.717636 0.171776 RAD 0.00617284 + txt002 + SPHERE CENTER 0.536873 -0.711276 0.148628 RAD 0.00617284 + txt002 + SPHERE CENTER 0.559898 -0.70804 0.156937 RAD 0.00617284 + txt002 + SPHERE CENTER 0.517014 -0.624197 0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER 0.516313 -0.60809 0.190293 RAD 0.00617284 + txt002 + SPHERE CENTER 0.538029 -0.616221 0.181811 RAD 0.00617284 + txt002 + SPHERE CENTER 0.524375 -0.60089 0.168094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.495298 -0.616065 0.180075 RAD 0.00617284 + txt002 + SPHERE CENTER 0.50336 -0.608865 0.157875 RAD 0.00617284 + txt002 + SPHERE CENTER 0.495999 -0.632172 0.161374 RAD 0.00617284 + txt002 + SPHERE CENTER 0.508952 -0.631397 0.193792 RAD 0.00617284 + txt002 + SPHERE CENTER 0.509653 -0.647504 0.175091 RAD 0.00617284 + txt002 + SPHERE CENTER 0.530668 -0.639529 0.18531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.48571 -0.670344 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.466887 -0.67091 0.138803 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490138 -0.671107 0.147112 RAD 0.00617284 + txt002 + SPHERE CENTER 0.480853 -0.650637 0.136894 RAD 0.00617284 + txt002 + SPHERE CENTER 0.46246 -0.670147 0.114524 RAD 0.00617284 + txt002 + SPHERE CENTER 0.476425 -0.649874 0.112614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.481283 -0.669581 0.0985541 RAD 0.00617284 + txt002 + SPHERE CENTER 0.471745 -0.690617 0.124743 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490567 -0.690052 0.108773 RAD 0.00617284 + txt002 + SPHERE CENTER 0.494995 -0.690815 0.133052 RAD 0.00617284 + txt002 + SPHERE CENTER 0.578925 -0.714669 0.104938 RAD 0.0185185 + txt002 + SPHERE CENTER 0.597914 -0.729812 0.109385 RAD 0.00617284 + txt002 + SPHERE CENTER 0.602084 -0.70632 0.103028 RAD 0.00617284 + txt002 + SPHERE CENTER 0.592661 -0.711617 0.125228 RAD 0.00617284 + txt002 + SPHERE CENTER 0.574755 -0.738161 0.111295 RAD 0.00617284 + txt002 + SPHERE CENTER 0.569503 -0.719965 0.127138 RAD 0.00617284 + txt002 + SPHERE CENTER 0.555767 -0.723017 0.106848 RAD 0.00617284 + txt002 + SPHERE CENTER 0.584178 -0.732864 0.0890951 RAD 0.00617284 + txt002 + SPHERE CENTER 0.565189 -0.71772 0.0846485 RAD 0.00617284 + txt002 + SPHERE CENTER 0.588348 -0.709372 0.0827387 RAD 0.00617284 + txt002 + SPHERE CENTER 0.52304 -0.691213 0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.511567 -0.712906 0.0596212 RAD 0.00617284 + txt002 + SPHERE CENTER 0.529503 -0.710453 0.0764123 RAD 0.00617284 + txt002 + SPHERE CENTER 0.507717 -0.699372 0.079911 RAD 0.00617284 + txt002 + SPHERE CENTER 0.505104 -0.693665 0.0455609 RAD 0.00617284 + txt002 + SPHERE CENTER 0.501254 -0.680131 0.0658506 RAD 0.00617284 + txt002 + SPHERE CENTER 0.516576 -0.671972 0.0482916 RAD 0.00617284 + txt002 + SPHERE CENTER 0.526889 -0.704747 0.0420622 RAD 0.00617284 + txt002 + SPHERE CENTER 0.538362 -0.683054 0.044793 RAD 0.00617284 + txt002 + SPHERE CENTER 0.544826 -0.702295 0.0588533 RAD 0.00617284 + txt002 + SPHERE CENTER 0.591673 -0.665934 0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER 0.605761 -0.658095 0.0319289 RAD 0.00617284 + txt002 + SPHERE CENTER 0.58746 -0.643855 0.0404111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.607672 -0.647455 0.0541285 RAD 0.00617284 + txt002 + SPHERE CENTER 0.609975 -0.680174 0.0421477 RAD 0.00617284 + txt002 + SPHERE CENTER 0.611885 -0.669535 0.0643473 RAD 0.00617284 + txt002 + SPHERE CENTER 0.595887 -0.688013 0.0608487 RAD 0.00617284 + txt002 + SPHERE CENTER 0.589763 -0.676573 0.0284303 RAD 0.00617284 + txt002 + SPHERE CENTER 0.575674 -0.684413 0.0471312 RAD 0.00617284 + txt002 + SPHERE CENTER 0.571461 -0.662334 0.0369125 RAD 0.00617284 + txt002 + SPHERE CENTER 0.471405 -0.471405 0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER 0.501645 -0.441164 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.518106 -0.424703 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.522721 -0.437548 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.505261 -0.420089 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.497031 -0.428319 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.484186 -0.423704 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.48057 -0.44478 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.51449 -0.445778 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.498029 -0.462239 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.519105 -0.458623 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.542955 -0.452233 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.560583 -0.44013 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.542955 -0.452233 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.53742 -0.431578 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.560583 -0.44013 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.53742 -0.431578 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.542955 -0.452233 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.566118 -0.460785 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.548489 -0.472887 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.548489 -0.472887 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490576 -0.399854 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.502679 -0.382226 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.511231 -0.405389 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490576 -0.399854 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.482024 -0.376691 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.469922 -0.39432 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.469922 -0.39432 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.502679 -0.382226 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490576 -0.399854 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.511231 -0.405389 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.430095 -0.460336 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.427669 -0.446904 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.450155 -0.45293 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436486 -0.436486 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.407609 -0.454311 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.416426 -0.443892 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.410035 -0.467742 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.421278 -0.470754 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.423704 -0.484186 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.443764 -0.47678 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.419026 -0.419026 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.414851 -0.39469 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.434147 -0.403906 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.434147 -0.403906 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399731 -0.409811 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.419026 -0.419026 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.403906 -0.434147 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399731 -0.409811 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.403906 -0.434147 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.419026 -0.419026 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399854 -0.490576 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.378536 -0.488909 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399854 -0.490576 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.39432 -0.469922 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.378536 -0.488909 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.39432 -0.469922 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399854 -0.490576 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.384071 -0.509564 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.405389 -0.511231 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.405389 -0.511231 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.482473 -0.512714 0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.495905 -0.51514 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.506323 -0.506323 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.48988 -0.492654 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472055 -0.521531 0.30328 RAD 0.00617284 + txt002 + SPHERE CENTER 0.46603 -0.499045 0.295049 RAD 0.00617284 + txt002 + SPHERE CENTER 0.458623 -0.519105 0.282703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.488498 -0.5352 0.290934 RAD 0.00617284 + txt002 + SPHERE CENTER 0.475067 -0.532774 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.498917 -0.526383 0.270358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.452233 -0.542955 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.4539 -0.564273 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472887 -0.548489 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.452233 -0.542955 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.433245 -0.558738 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.431578 -0.53742 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.431578 -0.53742 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4539 -0.564273 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.452233 -0.542955 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.472887 -0.548489 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.523783 -0.523783 0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.548119 -0.527958 0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.538903 -0.508662 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.538903 -0.508662 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.532998 -0.543078 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.523783 -0.523783 0.246914 RAD 0.00617284 + txt002 + SPHERE CENTER 0.508662 -0.538903 0.234568 RAD 0.00617284 + txt002 + SPHERE CENTER 0.532998 -0.543078 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.508662 -0.538903 0.209877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.523783 -0.523783 0.197531 RAD 0.00617284 + txt002 + SPHERE CENTER 0.335322 -0.607487 0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.313405 -0.629404 0.178389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.316595 -0.626214 0.202664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.335868 -0.624401 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318408 -0.606941 0.187336 RAD 0.00617284 + txt002 + SPHERE CENTER 0.294133 -0.631217 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.295946 -0.611945 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.290942 -0.634407 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.311592 -0.648676 0.193717 RAD 0.00617284 + txt002 + SPHERE CENTER 0.308402 -0.651867 0.169441 RAD 0.00617284 + txt002 + SPHERE CENTER 0.330864 -0.646863 0.178389 RAD 0.00617284 + txt002 + SPHERE CENTER 0.384191 -0.610996 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.405245 -0.601704 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.402224 -0.604188 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.389418 -0.587062 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.387213 -0.608512 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.371386 -0.593871 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.366159 -0.617804 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.400018 -0.625637 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.378964 -0.63493 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396997 -0.628121 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.331813 -0.558618 0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.341105 -0.537564 0.175614 RAD 0.00617284 + txt002 + SPHERE CENTER 0.355747 -0.553391 0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.338621 -0.540585 0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.317172 -0.542791 0.178701 RAD 0.00617284 + txt002 + SPHERE CENTER 0.314688 -0.545813 0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.30788 -0.563845 0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.334297 -0.555596 0.191046 RAD 0.00617284 + txt002 + SPHERE CENTER 0.325005 -0.57665 0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.348938 -0.571423 0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.264535 -0.625895 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.245336 -0.623429 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.268271 -0.624736 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.260997 -0.604627 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.2416 -0.624589 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.257262 -0.605787 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.2608 -0.627055 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.248874 -0.644697 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.268073 -0.647163 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271809 -0.646004 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282943 -0.555109 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.278768 -0.530773 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.298064 -0.539989 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.298064 -0.539989 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.263648 -0.545894 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282943 -0.555109 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.267823 -0.570229 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.263648 -0.545894 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.267823 -0.570229 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282943 -0.555109 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.286452 -0.603979 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.266942 -0.591774 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.269578 -0.594664 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.284698 -0.579544 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.283817 -0.601088 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.301572 -0.588858 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.303327 -0.613293 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.268696 -0.616209 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.288206 -0.628413 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.271332 -0.619099 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.316914 -0.678274 0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.31938 -0.697473 0.138161 RAD 0.00617284 + txt002 + SPHERE CENTER 0.338182 -0.681812 0.134867 RAD 0.00617284 + txt002 + SPHERE CENTER 0.318074 -0.674538 0.147213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.298112 -0.693935 0.126127 RAD 0.00617284 + txt002 + SPHERE CENTER 0.296805 -0.671 0.135179 RAD 0.00617284 + txt002 + SPHERE CENTER 0.295646 -0.674736 0.110799 RAD 0.00617284 + txt002 + SPHERE CENTER 0.31822 -0.701209 0.113782 RAD 0.00617284 + txt002 + SPHERE CENTER 0.315754 -0.682009 0.0984536 RAD 0.00617284 + txt002 + SPHERE CENTER 0.337022 -0.685547 0.110488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.33883 -0.656357 0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.351035 -0.675867 0.0466081 RAD 0.00617284 + txt002 + SPHERE CENTER 0.363265 -0.658111 0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.348145 -0.673232 0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3266 -0.674113 0.0435217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.32371 -0.671477 0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.314396 -0.654603 0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.341721 -0.658993 0.031176 RAD 0.00617284 + txt002 + SPHERE CENTER 0.329516 -0.639482 0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.353951 -0.641237 0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3877 -0.659866 0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.412036 -0.664041 0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40282 -0.644745 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40282 -0.644745 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396915 -0.679161 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3877 -0.659866 0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37258 -0.674986 0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396915 -0.679161 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37258 -0.674986 0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3877 -0.659866 0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.554344 -0.645066 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.616373 -0.681385 -0.129006 RAD 0.0185185 + txt002 + SPHERE CENTER 0.639472 -0.678928 -0.137375 RAD 0.00617284 + txt002 + SPHERE CENTER 0.621631 -0.664108 -0.145845 RAD 0.00617284 + txt002 + SPHERE CENTER 0.629767 -0.661636 -0.122663 RAD 0.00617284 + txt002 + SPHERE CENTER 0.634214 -0.696205 -0.120537 RAD 0.00617284 + txt002 + SPHERE CENTER 0.624508 -0.678912 -0.105825 RAD 0.00617284 + txt002 + SPHERE CENTER 0.611115 -0.698662 -0.112168 RAD 0.00617284 + txt002 + SPHERE CENTER 0.626079 -0.698678 -0.143718 RAD 0.00617284 + txt002 + SPHERE CENTER 0.602979 -0.701135 -0.135349 RAD 0.00617284 + txt002 + SPHERE CENTER 0.608237 -0.683858 -0.152187 RAD 0.00617284 + txt002 + SPHERE CENTER 0.617144 -0.607573 -0.122833 RAD 0.0185185 + txt002 + SPHERE CENTER 0.63057 -0.595495 -0.139672 RAD 0.00617284 + txt002 + SPHERE CENTER 0.617371 -0.615286 -0.146288 RAD 0.00617284 + txt002 + SPHERE CENTER 0.605919 -0.594239 -0.140323 RAD 0.00617284 + txt002 + SPHERE CENTER 0.630343 -0.587782 -0.116217 RAD 0.00617284 + txt002 + SPHERE CENTER 0.605692 -0.586526 -0.116868 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616917 -0.59986 -0.0993785 RAD 0.00617284 + txt002 + SPHERE CENTER 0.641795 -0.608828 -0.122182 RAD 0.00617284 + txt002 + SPHERE CENTER 0.628369 -0.620906 -0.105343 RAD 0.00617284 + txt002 + SPHERE CENTER 0.628595 -0.628619 -0.128798 RAD 0.00617284 + txt002 + SPHERE CENTER 0.609912 -0.649723 -0.062352 RAD 0.0185185 + txt002 + SPHERE CENTER 0.631982 -0.640648 -0.0560094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.62585 -0.64267 -0.0798417 RAD 0.00617284 + txt002 + SPHERE CENTER 0.614812 -0.625749 -0.0656463 RAD 0.00617284 + txt002 + SPHERE CENTER 0.616044 -0.647702 -0.0385197 RAD 0.00617284 + txt002 + SPHERE CENTER 0.598874 -0.632802 -0.0481565 RAD 0.00617284 + txt002 + SPHERE CENTER 0.593974 -0.656777 -0.0448623 RAD 0.00617284 + txt002 + SPHERE CENTER 0.627081 -0.664623 -0.0527151 RAD 0.00617284 + txt002 + SPHERE CENTER 0.605012 -0.673698 -0.0590577 RAD 0.00617284 + txt002 + SPHERE CENTER 0.620949 -0.666645 -0.0765474 RAD 0.00617284 + txt002 + SPHERE CENTER 0.553573 -0.718878 -0.117284 RAD 0.0185185 + txt002 + SPHERE CENTER 0.563328 -0.73992 -0.108814 RAD 0.00617284 + txt002 + SPHERE CENTER 0.577348 -0.719679 -0.110668 RAD 0.00617284 + txt002 + SPHERE CENTER 0.559693 -0.720935 -0.0934517 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539553 -0.739118 -0.115431 RAD 0.00617284 + txt002 + SPHERE CENTER 0.535918 -0.720133 -0.100068 RAD 0.00617284 + txt002 + SPHERE CENTER 0.529798 -0.718076 -0.1239 RAD 0.00617284 + txt002 + SPHERE CENTER 0.557208 -0.737863 -0.132647 RAD 0.00617284 + txt002 + SPHERE CENTER 0.547453 -0.716821 -0.141116 RAD 0.00617284 + txt002 + SPHERE CENTER 0.571228 -0.717623 -0.1345 RAD 0.00617284 + txt002 + SPHERE CENTER 0.547112 -0.687216 -0.0506299 RAD 0.0185185 + txt002 + SPHERE CENTER 0.554862 -0.690713 -0.0274488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.570641 -0.682694 -0.0446649 RAD 0.00617284 + txt002 + SPHERE CENTER 0.552739 -0.667813 -0.0364345 RAD 0.00617284 + txt002 + SPHERE CENTER 0.531333 -0.695235 -0.0334138 RAD 0.00617284 + txt002 + SPHERE CENTER 0.52921 -0.672335 -0.0423994 RAD 0.00617284 + txt002 + SPHERE CENTER 0.523582 -0.691738 -0.0565949 RAD 0.00617284 + txt002 + SPHERE CENTER 0.549235 -0.710116 -0.0416443 RAD 0.00617284 + txt002 + SPHERE CENTER 0.541484 -0.706619 -0.0648253 RAD 0.00617284 + txt002 + SPHERE CENTER 0.565014 -0.702097 -0.0588603 RAD 0.00617284 + txt002 + SPHERE CENTER 0.491544 -0.682558 -0.099389 RAD 0.0185185 + txt002 + SPHERE CENTER 0.474542 -0.688647 -0.0825505 RAD 0.00617284 + txt002 + SPHERE CENTER 0.498226 -0.686417 -0.0759343 RAD 0.00617284 + txt002 + SPHERE CENTER 0.485132 -0.666351 -0.0818993 RAD 0.00617284 + txt002 + SPHERE CENTER 0.46786 -0.684788 -0.106005 RAD 0.00617284 + txt002 + SPHERE CENTER 0.47845 -0.662492 -0.105354 RAD 0.00617284 + txt002 + SPHERE CENTER 0.484862 -0.678699 -0.122844 RAD 0.00617284 + txt002 + SPHERE CENTER 0.480953 -0.704854 -0.10004 RAD 0.00617284 + txt002 + SPHERE CENTER 0.497955 -0.698765 -0.116879 RAD 0.00617284 + txt002 + SPHERE CENTER 0.504637 -0.702624 -0.093424 RAD 0.00617284 + txt002 + SPHERE CENTER 0.560805 -0.676727 -0.177765 RAD 0.0185185 + txt002 + SPHERE CENTER 0.57563 -0.689897 -0.192477 RAD 0.00617284 + txt002 + SPHERE CENTER 0.585222 -0.673115 -0.177114 RAD 0.00617284 + txt002 + SPHERE CENTER 0.575587 -0.693998 -0.168128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.551213 -0.693509 -0.193128 RAD 0.00617284 + txt002 + SPHERE CENTER 0.55117 -0.69761 -0.16878 RAD 0.00617284 + txt002 + SPHERE CENTER 0.536388 -0.680339 -0.178416 RAD 0.00617284 + txt002 + SPHERE CENTER 0.560848 -0.672626 -0.202114 RAD 0.00617284 + txt002 + SPHERE CENTER 0.546023 -0.659456 -0.187402 RAD 0.00617284 + txt002 + SPHERE CENTER 0.57044 -0.655844 -0.186751 RAD 0.00617284 + txt002 + SPHERE CENTER 0.498776 -0.640408 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.478525 -0.627785 -0.166213 RAD 0.00617284 + txt002 + SPHERE CENTER 0.484234 -0.630799 -0.142381 RAD 0.00617284 + txt002 + SPHERE CENTER 0.497935 -0.615951 -0.156576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.493066 -0.637394 -0.183703 RAD 0.00617284 + txt002 + SPHERE CENTER 0.512476 -0.62556 -0.174066 RAD 0.00617284 + txt002 + SPHERE CENTER 0.513317 -0.650016 -0.17736 RAD 0.00617284 + txt002 + SPHERE CENTER 0.479365 -0.652241 -0.169507 RAD 0.00617284 + txt002 + SPHERE CENTER 0.499616 -0.664864 -0.163165 RAD 0.00617284 + txt002 + SPHERE CENTER 0.485075 -0.655255 -0.145675 RAD 0.00617284 + txt002 + SPHERE CENTER 0.561576 -0.602915 -0.171592 RAD 0.0185185 + txt002 + SPHERE CENTER 0.570049 -0.602201 -0.194773 RAD 0.00617284 + txt002 + SPHERE CENTER 0.582252 -0.615021 -0.177557 RAD 0.00617284 + txt002 + SPHERE CENTER 0.560414 -0.623084 -0.185788 RAD 0.00617284 + txt002 + SPHERE CENTER 0.549372 -0.590095 -0.188808 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539737 -0.610978 -0.179823 RAD 0.00617284 + txt002 + SPHERE CENTER 0.540899 -0.590808 -0.165627 RAD 0.00617284 + txt002 + SPHERE CENTER 0.571211 -0.582032 -0.180578 RAD 0.00617284 + txt002 + SPHERE CENTER 0.562738 -0.582745 -0.157397 RAD 0.00617284 + txt002 + SPHERE CENTER 0.583414 -0.594852 -0.163362 RAD 0.00617284 + txt002 + SPHERE CENTER 0.335322 -0.607487 -0.111111 RAD 0.0555556 + txt002 + SPHERE CENTER 0.283164 -0.659645 -0.104315 RAD 0.0185185 + txt002 + SPHERE CENTER 0.269894 -0.672915 -0.0882695 RAD 0.00617284 + txt002 + SPHERE CENTER 0.293281 -0.666987 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.275822 -0.649528 -0.0830215 RAD 0.00617284 + txt002 + SPHERE CENTER 0.259777 -0.665573 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.265705 -0.642185 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273047 -0.652302 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.277236 -0.683032 -0.109563 RAD 0.00617284 + txt002 + SPHERE CENTER 0.290507 -0.669762 -0.125608 RAD 0.00617284 + txt002 + SPHERE CENTER 0.300624 -0.677104 -0.104315 RAD 0.00617284 + txt002 + SPHERE CENTER 0.33883 -0.656357 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.350033 -0.661904 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.362764 -0.65113 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.345639 -0.638325 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.326099 -0.667131 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.321705 -0.643552 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.314897 -0.661584 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.343224 -0.679937 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.332022 -0.674389 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.355956 -0.669162 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.286452 -0.603979 -0.0555556 RAD 0.0185185 + txt002 + SPHERE CENTER 0.280905 -0.592776 -0.0342624 RAD 0.00617284 + txt002 + SPHERE CENTER 0.304484 -0.59717 -0.0401235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.291679 -0.580045 -0.0524691 RAD 0.00617284 + txt002 + SPHERE CENTER 0.262872 -0.599585 -0.0496945 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273647 -0.586853 -0.0679012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.26842 -0.610787 -0.0709877 RAD 0.00617284 + txt002 + SPHERE CENTER 0.275678 -0.61671 -0.0373488 RAD 0.00617284 + txt002 + SPHERE CENTER 0.281225 -0.627912 -0.058642 RAD 0.00617284 + txt002 + SPHERE CENTER 0.299257 -0.621104 -0.0432099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.279656 -0.610775 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.256944 -0.602632 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.26347 -0.606749 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.273158 -0.587686 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.27313 -0.606658 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.289344 -0.591712 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.295841 -0.614801 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.263442 -0.62572 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.286153 -0.633864 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.269968 -0.629838 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282943 -0.555109 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.278768 -0.530773 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.298064 -0.539989 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.298064 -0.539989 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.263648 -0.545894 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282943 -0.555109 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.267823 -0.570229 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.263648 -0.545894 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.267823 -0.570229 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.282943 -0.555109 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.331813 -0.558618 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.342108 -0.551527 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.356248 -0.560372 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.341128 -0.575492 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.317673 -0.549772 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.316693 -0.573738 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.307378 -0.556863 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.332793 -0.534652 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.322499 -0.541743 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.346933 -0.543497 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.332034 -0.663153 -0.15987 RAD 0.0185185 + txt002 + SPHERE CENTER 0.340177 -0.685865 -0.165118 RAD 0.00617284 + txt002 + SPHERE CENTER 0.355123 -0.669651 -0.154009 RAD 0.00617284 + txt002 + SPHERE CENTER 0.33606 -0.679339 -0.141664 RAD 0.00617284 + txt002 + SPHERE CENTER 0.317089 -0.679367 -0.170979 RAD 0.00617284 + txt002 + SPHERE CENTER 0.312971 -0.672841 -0.147525 RAD 0.00617284 + txt002 + SPHERE CENTER 0.308945 -0.656656 -0.165731 RAD 0.00617284 + txt002 + SPHERE CENTER 0.336151 -0.669679 -0.183325 RAD 0.00617284 + txt002 + SPHERE CENTER 0.328008 -0.646968 -0.178077 RAD 0.00617284 + txt002 + SPHERE CENTER 0.351097 -0.653465 -0.172216 RAD 0.00617284 + txt002 + SPHERE CENTER 0.384191 -0.610996 -0.166667 RAD 0.0185185 + txt002 + SPHERE CENTER 0.391282 -0.600701 -0.18796 RAD 0.00617284 + txt002 + SPHERE CENTER 0.367317 -0.601681 -0.182099 RAD 0.00617284 + txt002 + SPHERE CENTER 0.382437 -0.586561 -0.169753 RAD 0.00617284 + txt002 + SPHERE CENTER 0.408157 -0.610016 -0.172528 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399312 -0.595876 -0.154321 RAD 0.00617284 + txt002 + SPHERE CENTER 0.401066 -0.62031 -0.151235 RAD 0.00617284 + txt002 + SPHERE CENTER 0.393037 -0.625136 -0.184873 RAD 0.00617284 + txt002 + SPHERE CENTER 0.385946 -0.635431 -0.16358 RAD 0.00617284 + txt002 + SPHERE CENTER 0.369071 -0.626116 -0.179012 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3877 -0.659866 -0.111111 RAD 0.0185185 + txt002 + SPHERE CENTER 0.412036 -0.664041 -0.111111 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40282 -0.644745 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40282 -0.644745 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396915 -0.679161 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3877 -0.659866 -0.0864198 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37258 -0.674986 -0.0987654 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396915 -0.679161 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.37258 -0.674986 -0.123457 RAD 0.00617284 + txt002 + SPHERE CENTER 0.3877 -0.659866 -0.135802 RAD 0.00617284 + txt002 + SPHERE CENTER 0.471405 -0.471405 -0.222222 RAD 0.0555556 + txt002 + SPHERE CENTER 0.441164 -0.441164 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.443014 -0.422853 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.449156 -0.418916 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.463412 -0.433171 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.435021 -0.445101 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.455419 -0.455419 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.433171 -0.463412 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.420766 -0.430846 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.418916 -0.449156 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.426908 -0.426908 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.399854 -0.452233 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.383576 -0.43509 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40305 -0.440308 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.406245 -0.428383 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.380381 -0.447015 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.40305 -0.440308 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396659 -0.464158 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.377186 -0.45894 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.393464 -0.476083 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396659 -0.464158 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.452233 -0.399854 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.45894 -0.377186 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.476083 -0.393464 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.464158 -0.396659 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.43509 -0.383576 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.440308 -0.40305 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.428383 -0.406245 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.447015 -0.380381 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.440308 -0.40305 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.464158 -0.396659 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.512714 -0.460336 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.512375 -0.453047 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.493241 -0.465554 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.497443 -0.44229 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.531849 -0.447829 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.516916 -0.437072 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.532187 -0.455118 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.527647 -0.471093 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.527985 -0.478381 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.508512 -0.483599 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.523783 -0.419026 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.538038 -0.404771 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.532513 -0.427756 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.515053 -0.410297 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.529309 -0.396041 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.506323 -0.401567 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.515053 -0.410297 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.546768 -0.4135 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.532513 -0.427756 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.541242 -0.436486 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.542955 -0.490576 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.565623 -0.483869 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.54615 -0.478651 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.549345 -0.466726 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.562428 -0.495794 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.54615 -0.478651 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539759 -0.502501 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.559233 -0.507719 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.536564 -0.514426 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.539759 -0.502501 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.460336 -0.512714 -0.282703 RAD 0.0185185 + txt002 + SPHERE CENTER 0.461599 -0.535539 -0.292037 RAD 0.00617284 + txt002 + SPHERE CENTER 0.478381 -0.527985 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.455118 -0.532187 -0.268448 RAD 0.00617284 + txt002 + SPHERE CENTER 0.443553 -0.520267 -0.299164 RAD 0.00617284 + txt002 + SPHERE CENTER 0.437072 -0.516916 -0.275576 RAD 0.00617284 + txt002 + SPHERE CENTER 0.44229 -0.497443 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.466817 -0.516065 -0.306292 RAD 0.00617284 + txt002 + SPHERE CENTER 0.465554 -0.493241 -0.296959 RAD 0.00617284 + txt002 + SPHERE CENTER 0.483599 -0.508512 -0.289831 RAD 0.00617284 + txt002 + SPHERE CENTER 0.490576 -0.542955 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.507719 -0.559233 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.514426 -0.536564 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.502501 -0.539759 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.483869 -0.565623 -0.215094 RAD 0.00617284 + txt002 + SPHERE CENTER 0.478651 -0.54615 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.466726 -0.549345 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.495794 -0.562428 -0.236478 RAD 0.00617284 + txt002 + SPHERE CENTER 0.478651 -0.54615 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.502501 -0.539759 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.419026 -0.523783 -0.222222 RAD 0.0185185 + txt002 + SPHERE CENTER 0.404771 -0.538038 -0.207967 RAD 0.00617284 + txt002 + SPHERE CENTER 0.427756 -0.532513 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.410297 -0.515053 -0.200839 RAD 0.00617284 + txt002 + SPHERE CENTER 0.396041 -0.529309 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.401567 -0.506323 -0.222222 RAD 0.00617284 + txt002 + SPHERE CENTER 0.410297 -0.515053 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.4135 -0.546768 -0.22935 RAD 0.00617284 + txt002 + SPHERE CENTER 0.427756 -0.532513 -0.243606 RAD 0.00617284 + txt002 + SPHERE CENTER 0.436486 -0.541242 -0.222222 RAD 0.00617284 + txt002 + +END_SCENE diff --git a/examples/parallel_for/tachyon/dat/lattice.dat b/examples/parallel_for/tachyon/dat/lattice.dat new file mode 100644 index 0000000000..fc40ed8838 --- /dev/null +++ b/examples/parallel_for/tachyon/dat/lattice.dat @@ -0,0 +1,18012 @@ +BEGIN_SCENE + OUTFILE /dev/null + RESOLUTION 512 512 + VERBOSE 0 + +CAMERA + ZOOM 1.0 + ASPECTRATIO 1.0 + ANTIALIASING 0 + RAYDEPTH 8 + CENTER 0.5625 1 0.9375 + VIEWDIR 0 -0.707107 -0.707107 + UPDIR 0.272166 0.680414 -0.680414 + +END_CAMERA + +LIGHT CENTER 2 0.5 0.5 RAD 0.002 COLOR 0.5 0.5 0.5 + +LIGHT CENTER -1 0.5 0.5 RAD 0.002 COLOR 0.5 0.5 0.5 + +LIGHT CENTER 0.5 2 0.5 RAD 0.002 COLOR 0.5 0.5 0.5 + +LIGHT CENTER 0.5 -1 0.5 RAD 0.002 COLOR 0.5 0.5 0.5 + +LIGHT CENTER 0.5 0.5 2 RAD 0.002 COLOR 0.5 0.5 0.5 + +LIGHT CENTER 0.5 0.5 -1 RAD 0.002 COLOR 0.5 0.5 0.5 + +TEXDEF txt001 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0 0 RAD 0.03125 + txt001 +TEXDEF txt002 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0 0 APEX 0.109531 0 0 RAD 0.0078125 + txt002 +TEXDEF txt003 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.0154687 0 APEX 0 0.109531 0 RAD 0.0078125 + txt003 +TEXDEF txt004 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0 0.0154687 APEX 0 0 0.109531 RAD 0.0078125 + txt004 +TEXDEF txt005 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0 0.125 RAD 0.03125 + txt005 +TEXDEF txt006 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0 0.125 APEX 0.109531 0 0.125 RAD 0.0078125 + txt006 +TEXDEF txt007 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.0154687 0.125 APEX 0 0.109531 0.125 RAD 0.0078125 + txt007 +TEXDEF txt008 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0 0.140469 APEX 0 0 0.234531 RAD 0.0078125 + txt008 +TEXDEF txt009 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0 0.25 RAD 0.03125 + txt009 +TEXDEF txt010 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0 0.25 APEX 0.109531 0 0.25 RAD 0.0078125 + txt010 +TEXDEF txt011 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.0154687 0.25 APEX 0 0.109531 0.25 RAD 0.0078125 + txt011 +TEXDEF txt012 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0 0.265469 APEX 0 0 0.359531 RAD 0.0078125 + txt012 +TEXDEF txt013 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0 0.375 RAD 0.03125 + txt013 +TEXDEF txt014 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0 0.375 APEX 0.109531 0 0.375 RAD 0.0078125 + txt014 +TEXDEF txt015 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.0154687 0.375 APEX 0 0.109531 0.375 RAD 0.0078125 + txt015 +TEXDEF txt016 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0 0.390469 APEX 0 0 0.484531 RAD 0.0078125 + txt016 +TEXDEF txt017 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0 0.5 RAD 0.03125 + txt017 +TEXDEF txt018 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0 0.5 APEX 0.109531 0 0.5 RAD 0.0078125 + txt018 +TEXDEF txt019 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.0154687 0.5 APEX 0 0.109531 0.5 RAD 0.0078125 + txt019 +TEXDEF txt020 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0 0.515469 APEX 0 0 0.609531 RAD 0.0078125 + txt020 +TEXDEF txt021 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0 0.625 RAD 0.03125 + txt021 +TEXDEF txt022 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0 0.625 APEX 0.109531 0 0.625 RAD 0.0078125 + txt022 +TEXDEF txt023 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.0154687 0.625 APEX 0 0.109531 0.625 RAD 0.0078125 + txt023 +TEXDEF txt024 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0 0.640469 APEX 0 0 0.734531 RAD 0.0078125 + txt024 +TEXDEF txt025 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0 0.75 RAD 0.03125 + txt025 +TEXDEF txt026 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0 0.75 APEX 0.109531 0 0.75 RAD 0.0078125 + txt026 +TEXDEF txt027 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.0154687 0.75 APEX 0 0.109531 0.75 RAD 0.0078125 + txt027 +TEXDEF txt028 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0 0.765469 APEX 0 0 0.859531 RAD 0.0078125 + txt028 +TEXDEF txt029 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0 0.875 RAD 0.03125 + txt029 +TEXDEF txt030 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0 0.875 APEX 0.109531 0 0.875 RAD 0.0078125 + txt030 +TEXDEF txt031 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.0154687 0.875 APEX 0 0.109531 0.875 RAD 0.0078125 + txt031 +TEXDEF txt032 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0 0.890469 APEX 0 0 0.984531 RAD 0.0078125 + txt032 +TEXDEF txt033 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0 1 RAD 0.03125 + txt033 +TEXDEF txt034 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0 1 APEX 0.109531 0 1 RAD 0.0078125 + txt034 +TEXDEF txt035 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.0154687 1 APEX 0 0.109531 1 RAD 0.0078125 + txt035 +TEXDEF txt036 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.125 0 RAD 0.03125 + txt036 +TEXDEF txt037 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.125 0 APEX 0.109531 0.125 0 RAD 0.0078125 + txt037 +TEXDEF txt038 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.140469 0 APEX 0 0.234531 0 RAD 0.0078125 + txt038 +TEXDEF txt039 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.125 0.0154687 APEX 0 0.125 0.109531 RAD 0.0078125 + txt039 +TEXDEF txt040 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.125 0.125 RAD 0.03125 + txt040 +TEXDEF txt041 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.125 0.125 APEX 0.109531 0.125 0.125 RAD 0.0078125 + txt041 +TEXDEF txt042 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.140469 0.125 APEX 0 0.234531 0.125 RAD 0.0078125 + txt042 +TEXDEF txt043 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.125 0.140469 APEX 0 0.125 0.234531 RAD 0.0078125 + txt043 +TEXDEF txt044 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.125 0.25 RAD 0.03125 + txt044 +TEXDEF txt045 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.125 0.25 APEX 0.109531 0.125 0.25 RAD 0.0078125 + txt045 +TEXDEF txt046 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.140469 0.25 APEX 0 0.234531 0.25 RAD 0.0078125 + txt046 +TEXDEF txt047 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.125 0.265469 APEX 0 0.125 0.359531 RAD 0.0078125 + txt047 +TEXDEF txt048 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.125 0.375 RAD 0.03125 + txt048 +TEXDEF txt049 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.125 0.375 APEX 0.109531 0.125 0.375 RAD 0.0078125 + txt049 +TEXDEF txt050 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.140469 0.375 APEX 0 0.234531 0.375 RAD 0.0078125 + txt050 +TEXDEF txt051 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.125 0.390469 APEX 0 0.125 0.484531 RAD 0.0078125 + txt051 +TEXDEF txt052 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.125 0.5 RAD 0.03125 + txt052 +TEXDEF txt053 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.125 0.5 APEX 0.109531 0.125 0.5 RAD 0.0078125 + txt053 +TEXDEF txt054 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.140469 0.5 APEX 0 0.234531 0.5 RAD 0.0078125 + txt054 +TEXDEF txt055 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.125 0.515469 APEX 0 0.125 0.609531 RAD 0.0078125 + txt055 +TEXDEF txt056 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.125 0.625 RAD 0.03125 + txt056 +TEXDEF txt057 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.125 0.625 APEX 0.109531 0.125 0.625 RAD 0.0078125 + txt057 +TEXDEF txt058 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.140469 0.625 APEX 0 0.234531 0.625 RAD 0.0078125 + txt058 +TEXDEF txt059 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.125 0.640469 APEX 0 0.125 0.734531 RAD 0.0078125 + txt059 +TEXDEF txt060 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.125 0.75 RAD 0.03125 + txt060 +TEXDEF txt061 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.125 0.75 APEX 0.109531 0.125 0.75 RAD 0.0078125 + txt061 +TEXDEF txt062 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.140469 0.75 APEX 0 0.234531 0.75 RAD 0.0078125 + txt062 +TEXDEF txt063 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.125 0.765469 APEX 0 0.125 0.859531 RAD 0.0078125 + txt063 +TEXDEF txt064 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.125 0.875 RAD 0.03125 + txt064 +TEXDEF txt065 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.125 0.875 APEX 0.109531 0.125 0.875 RAD 0.0078125 + txt065 +TEXDEF txt066 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.140469 0.875 APEX 0 0.234531 0.875 RAD 0.0078125 + txt066 +TEXDEF txt067 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.125 0.890469 APEX 0 0.125 0.984531 RAD 0.0078125 + txt067 +TEXDEF txt068 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.125 1 RAD 0.03125 + txt068 +TEXDEF txt069 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.125 1 APEX 0.109531 0.125 1 RAD 0.0078125 + txt069 +TEXDEF txt070 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.140469 1 APEX 0 0.234531 1 RAD 0.0078125 + txt070 +TEXDEF txt071 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.25 0 RAD 0.03125 + txt071 +TEXDEF txt072 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.25 0 APEX 0.109531 0.25 0 RAD 0.0078125 + txt072 +TEXDEF txt073 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.265469 0 APEX 0 0.359531 0 RAD 0.0078125 + txt073 +TEXDEF txt074 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.25 0.0154687 APEX 0 0.25 0.109531 RAD 0.0078125 + txt074 +TEXDEF txt075 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.25 0.125 RAD 0.03125 + txt075 +TEXDEF txt076 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.25 0.125 APEX 0.109531 0.25 0.125 RAD 0.0078125 + txt076 +TEXDEF txt077 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.265469 0.125 APEX 0 0.359531 0.125 RAD 0.0078125 + txt077 +TEXDEF txt078 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.25 0.140469 APEX 0 0.25 0.234531 RAD 0.0078125 + txt078 +TEXDEF txt079 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.25 0.25 RAD 0.03125 + txt079 +TEXDEF txt080 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.25 0.25 APEX 0.109531 0.25 0.25 RAD 0.0078125 + txt080 +TEXDEF txt081 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.265469 0.25 APEX 0 0.359531 0.25 RAD 0.0078125 + txt081 +TEXDEF txt082 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.25 0.265469 APEX 0 0.25 0.359531 RAD 0.0078125 + txt082 +TEXDEF txt083 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.25 0.375 RAD 0.03125 + txt083 +TEXDEF txt084 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.25 0.375 APEX 0.109531 0.25 0.375 RAD 0.0078125 + txt084 +TEXDEF txt085 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.265469 0.375 APEX 0 0.359531 0.375 RAD 0.0078125 + txt085 +TEXDEF txt086 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.25 0.390469 APEX 0 0.25 0.484531 RAD 0.0078125 + txt086 +TEXDEF txt087 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.25 0.5 RAD 0.03125 + txt087 +TEXDEF txt088 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.25 0.5 APEX 0.109531 0.25 0.5 RAD 0.0078125 + txt088 +TEXDEF txt089 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.265469 0.5 APEX 0 0.359531 0.5 RAD 0.0078125 + txt089 +TEXDEF txt090 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.25 0.515469 APEX 0 0.25 0.609531 RAD 0.0078125 + txt090 +TEXDEF txt091 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.25 0.625 RAD 0.03125 + txt091 +TEXDEF txt092 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.25 0.625 APEX 0.109531 0.25 0.625 RAD 0.0078125 + txt092 +TEXDEF txt093 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.265469 0.625 APEX 0 0.359531 0.625 RAD 0.0078125 + txt093 +TEXDEF txt094 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.25 0.640469 APEX 0 0.25 0.734531 RAD 0.0078125 + txt094 +TEXDEF txt095 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.25 0.75 RAD 0.03125 + txt095 +TEXDEF txt096 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.25 0.75 APEX 0.109531 0.25 0.75 RAD 0.0078125 + txt096 +TEXDEF txt097 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.265469 0.75 APEX 0 0.359531 0.75 RAD 0.0078125 + txt097 +TEXDEF txt098 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.25 0.765469 APEX 0 0.25 0.859531 RAD 0.0078125 + txt098 +TEXDEF txt099 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.25 0.875 RAD 0.03125 + txt099 +TEXDEF txt100 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.25 0.875 APEX 0.109531 0.25 0.875 RAD 0.0078125 + txt100 +TEXDEF txt101 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.265469 0.875 APEX 0 0.359531 0.875 RAD 0.0078125 + txt101 +TEXDEF txt102 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.25 0.890469 APEX 0 0.25 0.984531 RAD 0.0078125 + txt102 +TEXDEF txt103 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.25 1 RAD 0.03125 + txt103 +TEXDEF txt104 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.25 1 APEX 0.109531 0.25 1 RAD 0.0078125 + txt104 +TEXDEF txt105 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.265469 1 APEX 0 0.359531 1 RAD 0.0078125 + txt105 +TEXDEF txt106 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.375 0 RAD 0.03125 + txt106 +TEXDEF txt107 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.375 0 APEX 0.109531 0.375 0 RAD 0.0078125 + txt107 +TEXDEF txt108 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.390469 0 APEX 0 0.484531 0 RAD 0.0078125 + txt108 +TEXDEF txt109 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.375 0.0154687 APEX 0 0.375 0.109531 RAD 0.0078125 + txt109 +TEXDEF txt110 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.375 0.125 RAD 0.03125 + txt110 +TEXDEF txt111 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.375 0.125 APEX 0.109531 0.375 0.125 RAD 0.0078125 + txt111 +TEXDEF txt112 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.390469 0.125 APEX 0 0.484531 0.125 RAD 0.0078125 + txt112 +TEXDEF txt113 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.375 0.140469 APEX 0 0.375 0.234531 RAD 0.0078125 + txt113 +TEXDEF txt114 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.375 0.25 RAD 0.03125 + txt114 +TEXDEF txt115 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.375 0.25 APEX 0.109531 0.375 0.25 RAD 0.0078125 + txt115 +TEXDEF txt116 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.390469 0.25 APEX 0 0.484531 0.25 RAD 0.0078125 + txt116 +TEXDEF txt117 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.375 0.265469 APEX 0 0.375 0.359531 RAD 0.0078125 + txt117 +TEXDEF txt118 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.375 0.375 RAD 0.03125 + txt118 +TEXDEF txt119 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.375 0.375 APEX 0.109531 0.375 0.375 RAD 0.0078125 + txt119 +TEXDEF txt120 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.390469 0.375 APEX 0 0.484531 0.375 RAD 0.0078125 + txt120 +TEXDEF txt121 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.375 0.390469 APEX 0 0.375 0.484531 RAD 0.0078125 + txt121 +TEXDEF txt122 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.375 0.5 RAD 0.03125 + txt122 +TEXDEF txt123 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.375 0.5 APEX 0.109531 0.375 0.5 RAD 0.0078125 + txt123 +TEXDEF txt124 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.390469 0.5 APEX 0 0.484531 0.5 RAD 0.0078125 + txt124 +TEXDEF txt125 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.375 0.515469 APEX 0 0.375 0.609531 RAD 0.0078125 + txt125 +TEXDEF txt126 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.375 0.625 RAD 0.03125 + txt126 +TEXDEF txt127 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.375 0.625 APEX 0.109531 0.375 0.625 RAD 0.0078125 + txt127 +TEXDEF txt128 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.390469 0.625 APEX 0 0.484531 0.625 RAD 0.0078125 + txt128 +TEXDEF txt129 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.375 0.640469 APEX 0 0.375 0.734531 RAD 0.0078125 + txt129 +TEXDEF txt130 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.375 0.75 RAD 0.03125 + txt130 +TEXDEF txt131 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.375 0.75 APEX 0.109531 0.375 0.75 RAD 0.0078125 + txt131 +TEXDEF txt132 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.390469 0.75 APEX 0 0.484531 0.75 RAD 0.0078125 + txt132 +TEXDEF txt133 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.375 0.765469 APEX 0 0.375 0.859531 RAD 0.0078125 + txt133 +TEXDEF txt134 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.375 0.875 RAD 0.03125 + txt134 +TEXDEF txt135 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.375 0.875 APEX 0.109531 0.375 0.875 RAD 0.0078125 + txt135 +TEXDEF txt136 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.390469 0.875 APEX 0 0.484531 0.875 RAD 0.0078125 + txt136 +TEXDEF txt137 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.375 0.890469 APEX 0 0.375 0.984531 RAD 0.0078125 + txt137 +TEXDEF txt138 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.375 1 RAD 0.03125 + txt138 +TEXDEF txt139 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.375 1 APEX 0.109531 0.375 1 RAD 0.0078125 + txt139 +TEXDEF txt140 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.390469 1 APEX 0 0.484531 1 RAD 0.0078125 + txt140 +TEXDEF txt141 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.5 0 RAD 0.03125 + txt141 +TEXDEF txt142 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.5 0 APEX 0.109531 0.5 0 RAD 0.0078125 + txt142 +TEXDEF txt143 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.515469 0 APEX 0 0.609531 0 RAD 0.0078125 + txt143 +TEXDEF txt144 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.5 0.0154687 APEX 0 0.5 0.109531 RAD 0.0078125 + txt144 +TEXDEF txt145 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.5 0.125 RAD 0.03125 + txt145 +TEXDEF txt146 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.5 0.125 APEX 0.109531 0.5 0.125 RAD 0.0078125 + txt146 +TEXDEF txt147 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.515469 0.125 APEX 0 0.609531 0.125 RAD 0.0078125 + txt147 +TEXDEF txt148 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.5 0.140469 APEX 0 0.5 0.234531 RAD 0.0078125 + txt148 +TEXDEF txt149 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.5 0.25 RAD 0.03125 + txt149 +TEXDEF txt150 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.5 0.25 APEX 0.109531 0.5 0.25 RAD 0.0078125 + txt150 +TEXDEF txt151 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.515469 0.25 APEX 0 0.609531 0.25 RAD 0.0078125 + txt151 +TEXDEF txt152 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.5 0.265469 APEX 0 0.5 0.359531 RAD 0.0078125 + txt152 +TEXDEF txt153 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.5 0.375 RAD 0.03125 + txt153 +TEXDEF txt154 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.5 0.375 APEX 0.109531 0.5 0.375 RAD 0.0078125 + txt154 +TEXDEF txt155 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.515469 0.375 APEX 0 0.609531 0.375 RAD 0.0078125 + txt155 +TEXDEF txt156 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.5 0.390469 APEX 0 0.5 0.484531 RAD 0.0078125 + txt156 +TEXDEF txt157 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.5 0.5 RAD 0.03125 + txt157 +TEXDEF txt158 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.5 0.5 APEX 0.109531 0.5 0.5 RAD 0.0078125 + txt158 +TEXDEF txt159 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.515469 0.5 APEX 0 0.609531 0.5 RAD 0.0078125 + txt159 +TEXDEF txt160 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.5 0.515469 APEX 0 0.5 0.609531 RAD 0.0078125 + txt160 +TEXDEF txt161 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.5 0.625 RAD 0.03125 + txt161 +TEXDEF txt162 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.5 0.625 APEX 0.109531 0.5 0.625 RAD 0.0078125 + txt162 +TEXDEF txt163 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.515469 0.625 APEX 0 0.609531 0.625 RAD 0.0078125 + txt163 +TEXDEF txt164 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.5 0.640469 APEX 0 0.5 0.734531 RAD 0.0078125 + txt164 +TEXDEF txt165 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.5 0.75 RAD 0.03125 + txt165 +TEXDEF txt166 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.5 0.75 APEX 0.109531 0.5 0.75 RAD 0.0078125 + txt166 +TEXDEF txt167 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.515469 0.75 APEX 0 0.609531 0.75 RAD 0.0078125 + txt167 +TEXDEF txt168 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.5 0.765469 APEX 0 0.5 0.859531 RAD 0.0078125 + txt168 +TEXDEF txt169 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.5 0.875 RAD 0.03125 + txt169 +TEXDEF txt170 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.5 0.875 APEX 0.109531 0.5 0.875 RAD 0.0078125 + txt170 +TEXDEF txt171 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.515469 0.875 APEX 0 0.609531 0.875 RAD 0.0078125 + txt171 +TEXDEF txt172 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.5 0.890469 APEX 0 0.5 0.984531 RAD 0.0078125 + txt172 +TEXDEF txt173 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.5 1 RAD 0.03125 + txt173 +TEXDEF txt174 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.5 1 APEX 0.109531 0.5 1 RAD 0.0078125 + txt174 +TEXDEF txt175 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.515469 1 APEX 0 0.609531 1 RAD 0.0078125 + txt175 +TEXDEF txt176 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.625 0 RAD 0.03125 + txt176 +TEXDEF txt177 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.625 0 APEX 0.109531 0.625 0 RAD 0.0078125 + txt177 +TEXDEF txt178 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.640469 0 APEX 0 0.734531 0 RAD 0.0078125 + txt178 +TEXDEF txt179 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.625 0.0154687 APEX 0 0.625 0.109531 RAD 0.0078125 + txt179 +TEXDEF txt180 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.625 0.125 RAD 0.03125 + txt180 +TEXDEF txt181 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.625 0.125 APEX 0.109531 0.625 0.125 RAD 0.0078125 + txt181 +TEXDEF txt182 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.640469 0.125 APEX 0 0.734531 0.125 RAD 0.0078125 + txt182 +TEXDEF txt183 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.625 0.140469 APEX 0 0.625 0.234531 RAD 0.0078125 + txt183 +TEXDEF txt184 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.625 0.25 RAD 0.03125 + txt184 +TEXDEF txt185 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.625 0.25 APEX 0.109531 0.625 0.25 RAD 0.0078125 + txt185 +TEXDEF txt186 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.640469 0.25 APEX 0 0.734531 0.25 RAD 0.0078125 + txt186 +TEXDEF txt187 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.625 0.265469 APEX 0 0.625 0.359531 RAD 0.0078125 + txt187 +TEXDEF txt188 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.625 0.375 RAD 0.03125 + txt188 +TEXDEF txt189 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.625 0.375 APEX 0.109531 0.625 0.375 RAD 0.0078125 + txt189 +TEXDEF txt190 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.640469 0.375 APEX 0 0.734531 0.375 RAD 0.0078125 + txt190 +TEXDEF txt191 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.625 0.390469 APEX 0 0.625 0.484531 RAD 0.0078125 + txt191 +TEXDEF txt192 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.625 0.5 RAD 0.03125 + txt192 +TEXDEF txt193 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.625 0.5 APEX 0.109531 0.625 0.5 RAD 0.0078125 + txt193 +TEXDEF txt194 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.640469 0.5 APEX 0 0.734531 0.5 RAD 0.0078125 + txt194 +TEXDEF txt195 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.625 0.515469 APEX 0 0.625 0.609531 RAD 0.0078125 + txt195 +TEXDEF txt196 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.625 0.625 RAD 0.03125 + txt196 +TEXDEF txt197 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.625 0.625 APEX 0.109531 0.625 0.625 RAD 0.0078125 + txt197 +TEXDEF txt198 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.640469 0.625 APEX 0 0.734531 0.625 RAD 0.0078125 + txt198 +TEXDEF txt199 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.625 0.640469 APEX 0 0.625 0.734531 RAD 0.0078125 + txt199 +TEXDEF txt200 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.625 0.75 RAD 0.03125 + txt200 +TEXDEF txt201 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.625 0.75 APEX 0.109531 0.625 0.75 RAD 0.0078125 + txt201 +TEXDEF txt202 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.640469 0.75 APEX 0 0.734531 0.75 RAD 0.0078125 + txt202 +TEXDEF txt203 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.625 0.765469 APEX 0 0.625 0.859531 RAD 0.0078125 + txt203 +TEXDEF txt204 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.625 0.875 RAD 0.03125 + txt204 +TEXDEF txt205 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.625 0.875 APEX 0.109531 0.625 0.875 RAD 0.0078125 + txt205 +TEXDEF txt206 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.640469 0.875 APEX 0 0.734531 0.875 RAD 0.0078125 + txt206 +TEXDEF txt207 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.625 0.890469 APEX 0 0.625 0.984531 RAD 0.0078125 + txt207 +TEXDEF txt208 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.625 1 RAD 0.03125 + txt208 +TEXDEF txt209 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.625 1 APEX 0.109531 0.625 1 RAD 0.0078125 + txt209 +TEXDEF txt210 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.640469 1 APEX 0 0.734531 1 RAD 0.0078125 + txt210 +TEXDEF txt211 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.75 0 RAD 0.03125 + txt211 +TEXDEF txt212 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.75 0 APEX 0.109531 0.75 0 RAD 0.0078125 + txt212 +TEXDEF txt213 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.765469 0 APEX 0 0.859531 0 RAD 0.0078125 + txt213 +TEXDEF txt214 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.75 0.0154687 APEX 0 0.75 0.109531 RAD 0.0078125 + txt214 +TEXDEF txt215 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.75 0.125 RAD 0.03125 + txt215 +TEXDEF txt216 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.75 0.125 APEX 0.109531 0.75 0.125 RAD 0.0078125 + txt216 +TEXDEF txt217 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.765469 0.125 APEX 0 0.859531 0.125 RAD 0.0078125 + txt217 +TEXDEF txt218 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.75 0.140469 APEX 0 0.75 0.234531 RAD 0.0078125 + txt218 +TEXDEF txt219 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.75 0.25 RAD 0.03125 + txt219 +TEXDEF txt220 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.75 0.25 APEX 0.109531 0.75 0.25 RAD 0.0078125 + txt220 +TEXDEF txt221 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.765469 0.25 APEX 0 0.859531 0.25 RAD 0.0078125 + txt221 +TEXDEF txt222 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.75 0.265469 APEX 0 0.75 0.359531 RAD 0.0078125 + txt222 +TEXDEF txt223 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.75 0.375 RAD 0.03125 + txt223 +TEXDEF txt224 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.75 0.375 APEX 0.109531 0.75 0.375 RAD 0.0078125 + txt224 +TEXDEF txt225 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.765469 0.375 APEX 0 0.859531 0.375 RAD 0.0078125 + txt225 +TEXDEF txt226 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.75 0.390469 APEX 0 0.75 0.484531 RAD 0.0078125 + txt226 +TEXDEF txt227 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.75 0.5 RAD 0.03125 + txt227 +TEXDEF txt228 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.75 0.5 APEX 0.109531 0.75 0.5 RAD 0.0078125 + txt228 +TEXDEF txt229 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.765469 0.5 APEX 0 0.859531 0.5 RAD 0.0078125 + txt229 +TEXDEF txt230 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.75 0.515469 APEX 0 0.75 0.609531 RAD 0.0078125 + txt230 +TEXDEF txt231 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.75 0.625 RAD 0.03125 + txt231 +TEXDEF txt232 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.75 0.625 APEX 0.109531 0.75 0.625 RAD 0.0078125 + txt232 +TEXDEF txt233 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.765469 0.625 APEX 0 0.859531 0.625 RAD 0.0078125 + txt233 +TEXDEF txt234 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.75 0.640469 APEX 0 0.75 0.734531 RAD 0.0078125 + txt234 +TEXDEF txt235 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.75 0.75 RAD 0.03125 + txt235 +TEXDEF txt236 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.75 0.75 APEX 0.109531 0.75 0.75 RAD 0.0078125 + txt236 +TEXDEF txt237 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.765469 0.75 APEX 0 0.859531 0.75 RAD 0.0078125 + txt237 +TEXDEF txt238 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.75 0.765469 APEX 0 0.75 0.859531 RAD 0.0078125 + txt238 +TEXDEF txt239 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.75 0.875 RAD 0.03125 + txt239 +TEXDEF txt240 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.75 0.875 APEX 0.109531 0.75 0.875 RAD 0.0078125 + txt240 +TEXDEF txt241 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.765469 0.875 APEX 0 0.859531 0.875 RAD 0.0078125 + txt241 +TEXDEF txt242 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.75 0.890469 APEX 0 0.75 0.984531 RAD 0.0078125 + txt242 +TEXDEF txt243 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.75 1 RAD 0.03125 + txt243 +TEXDEF txt244 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.75 1 APEX 0.109531 0.75 1 RAD 0.0078125 + txt244 +TEXDEF txt245 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.765469 1 APEX 0 0.859531 1 RAD 0.0078125 + txt245 +TEXDEF txt246 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.875 0 RAD 0.03125 + txt246 +TEXDEF txt247 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.875 0 APEX 0.109531 0.875 0 RAD 0.0078125 + txt247 +TEXDEF txt248 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.890469 0 APEX 0 0.984531 0 RAD 0.0078125 + txt248 +TEXDEF txt249 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.875 0.0154687 APEX 0 0.875 0.109531 RAD 0.0078125 + txt249 +TEXDEF txt250 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.875 0.125 RAD 0.03125 + txt250 +TEXDEF txt251 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.875 0.125 APEX 0.109531 0.875 0.125 RAD 0.0078125 + txt251 +TEXDEF txt252 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.890469 0.125 APEX 0 0.984531 0.125 RAD 0.0078125 + txt252 +TEXDEF txt253 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.875 0.140469 APEX 0 0.875 0.234531 RAD 0.0078125 + txt253 +TEXDEF txt254 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.875 0.25 RAD 0.03125 + txt254 +TEXDEF txt255 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.875 0.25 APEX 0.109531 0.875 0.25 RAD 0.0078125 + txt255 +TEXDEF txt256 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.890469 0.25 APEX 0 0.984531 0.25 RAD 0.0078125 + txt256 +TEXDEF txt257 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.875 0.265469 APEX 0 0.875 0.359531 RAD 0.0078125 + txt257 +TEXDEF txt258 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.875 0.375 RAD 0.03125 + txt258 +TEXDEF txt259 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.875 0.375 APEX 0.109531 0.875 0.375 RAD 0.0078125 + txt259 +TEXDEF txt260 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.890469 0.375 APEX 0 0.984531 0.375 RAD 0.0078125 + txt260 +TEXDEF txt261 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.875 0.390469 APEX 0 0.875 0.484531 RAD 0.0078125 + txt261 +TEXDEF txt262 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.875 0.5 RAD 0.03125 + txt262 +TEXDEF txt263 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.875 0.5 APEX 0.109531 0.875 0.5 RAD 0.0078125 + txt263 +TEXDEF txt264 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.890469 0.5 APEX 0 0.984531 0.5 RAD 0.0078125 + txt264 +TEXDEF txt265 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.875 0.515469 APEX 0 0.875 0.609531 RAD 0.0078125 + txt265 +TEXDEF txt266 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.875 0.625 RAD 0.03125 + txt266 +TEXDEF txt267 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.875 0.625 APEX 0.109531 0.875 0.625 RAD 0.0078125 + txt267 +TEXDEF txt268 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.890469 0.625 APEX 0 0.984531 0.625 RAD 0.0078125 + txt268 +TEXDEF txt269 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.875 0.640469 APEX 0 0.875 0.734531 RAD 0.0078125 + txt269 +TEXDEF txt270 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.875 0.75 RAD 0.03125 + txt270 +TEXDEF txt271 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.875 0.75 APEX 0.109531 0.875 0.75 RAD 0.0078125 + txt271 +TEXDEF txt272 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.890469 0.75 APEX 0 0.984531 0.75 RAD 0.0078125 + txt272 +TEXDEF txt273 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.875 0.765469 APEX 0 0.875 0.859531 RAD 0.0078125 + txt273 +TEXDEF txt274 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.875 0.875 RAD 0.03125 + txt274 +TEXDEF txt275 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.875 0.875 APEX 0.109531 0.875 0.875 RAD 0.0078125 + txt275 +TEXDEF txt276 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.890469 0.875 APEX 0 0.984531 0.875 RAD 0.0078125 + txt276 +TEXDEF txt277 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.875 0.890469 APEX 0 0.875 0.984531 RAD 0.0078125 + txt277 +TEXDEF txt278 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 0.875 1 RAD 0.03125 + txt278 +TEXDEF txt279 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 0.875 1 APEX 0.109531 0.875 1 RAD 0.0078125 + txt279 +TEXDEF txt280 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0 0.890469 1 APEX 0 0.984531 1 RAD 0.0078125 + txt280 +TEXDEF txt281 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 1 0 RAD 0.03125 + txt281 +TEXDEF txt282 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 1 0 APEX 0.109531 1 0 RAD 0.0078125 + txt282 +TEXDEF txt283 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 1 0.0154687 APEX 0 1 0.109531 RAD 0.0078125 + txt283 +TEXDEF txt284 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 1 0.125 RAD 0.03125 + txt284 +TEXDEF txt285 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 1 0.125 APEX 0.109531 1 0.125 RAD 0.0078125 + txt285 +TEXDEF txt286 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 1 0.140469 APEX 0 1 0.234531 RAD 0.0078125 + txt286 +TEXDEF txt287 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 1 0.25 RAD 0.03125 + txt287 +TEXDEF txt288 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 1 0.25 APEX 0.109531 1 0.25 RAD 0.0078125 + txt288 +TEXDEF txt289 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 1 0.265469 APEX 0 1 0.359531 RAD 0.0078125 + txt289 +TEXDEF txt290 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 1 0.375 RAD 0.03125 + txt290 +TEXDEF txt291 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 1 0.375 APEX 0.109531 1 0.375 RAD 0.0078125 + txt291 +TEXDEF txt292 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 1 0.390469 APEX 0 1 0.484531 RAD 0.0078125 + txt292 +TEXDEF txt293 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 1 0.5 RAD 0.03125 + txt293 +TEXDEF txt294 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 1 0.5 APEX 0.109531 1 0.5 RAD 0.0078125 + txt294 +TEXDEF txt295 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 1 0.515469 APEX 0 1 0.609531 RAD 0.0078125 + txt295 +TEXDEF txt296 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 1 0.625 RAD 0.03125 + txt296 +TEXDEF txt297 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 1 0.625 APEX 0.109531 1 0.625 RAD 0.0078125 + txt297 +TEXDEF txt298 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 1 0.640469 APEX 0 1 0.734531 RAD 0.0078125 + txt298 +TEXDEF txt299 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 1 0.75 RAD 0.03125 + txt299 +TEXDEF txt300 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 1 0.75 APEX 0.109531 1 0.75 RAD 0.0078125 + txt300 +TEXDEF txt301 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 1 0.765469 APEX 0 1 0.859531 RAD 0.0078125 + txt301 +TEXDEF txt302 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 1 0.875 RAD 0.03125 + txt302 +TEXDEF txt303 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 1 0.875 APEX 0.109531 1 0.875 RAD 0.0078125 + txt303 +TEXDEF txt304 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0 1 0.890469 APEX 0 1 0.984531 RAD 0.0078125 + txt304 +TEXDEF txt305 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0 1 1 RAD 0.03125 + txt305 +TEXDEF txt306 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.0154687 1 1 APEX 0.109531 1 1 RAD 0.0078125 + txt306 +TEXDEF txt307 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0 0 RAD 0.03125 + txt307 +TEXDEF txt308 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0 0 APEX 0.234531 0 0 RAD 0.0078125 + txt308 +TEXDEF txt309 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.0154687 0 APEX 0.125 0.109531 0 RAD 0.0078125 + txt309 +TEXDEF txt310 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0 0.0154687 APEX 0.125 0 0.109531 RAD 0.0078125 + txt310 +TEXDEF txt311 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0 0.125 RAD 0.03125 + txt311 +TEXDEF txt312 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0 0.125 APEX 0.234531 0 0.125 RAD 0.0078125 + txt312 +TEXDEF txt313 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.0154687 0.125 APEX 0.125 0.109531 0.125 RAD 0.0078125 + txt313 +TEXDEF txt314 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0 0.140469 APEX 0.125 0 0.234531 RAD 0.0078125 + txt314 +TEXDEF txt315 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0 0.25 RAD 0.03125 + txt315 +TEXDEF txt316 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0 0.25 APEX 0.234531 0 0.25 RAD 0.0078125 + txt316 +TEXDEF txt317 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.0154687 0.25 APEX 0.125 0.109531 0.25 RAD 0.0078125 + txt317 +TEXDEF txt318 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0 0.265469 APEX 0.125 0 0.359531 RAD 0.0078125 + txt318 +TEXDEF txt319 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0 0.375 RAD 0.03125 + txt319 +TEXDEF txt320 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0 0.375 APEX 0.234531 0 0.375 RAD 0.0078125 + txt320 +TEXDEF txt321 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.0154687 0.375 APEX 0.125 0.109531 0.375 RAD 0.0078125 + txt321 +TEXDEF txt322 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0 0.390469 APEX 0.125 0 0.484531 RAD 0.0078125 + txt322 +TEXDEF txt323 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0 0.5 RAD 0.03125 + txt323 +TEXDEF txt324 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0 0.5 APEX 0.234531 0 0.5 RAD 0.0078125 + txt324 +TEXDEF txt325 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.0154687 0.5 APEX 0.125 0.109531 0.5 RAD 0.0078125 + txt325 +TEXDEF txt326 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0 0.515469 APEX 0.125 0 0.609531 RAD 0.0078125 + txt326 +TEXDEF txt327 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0 0.625 RAD 0.03125 + txt327 +TEXDEF txt328 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0 0.625 APEX 0.234531 0 0.625 RAD 0.0078125 + txt328 +TEXDEF txt329 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.0154687 0.625 APEX 0.125 0.109531 0.625 RAD 0.0078125 + txt329 +TEXDEF txt330 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0 0.640469 APEX 0.125 0 0.734531 RAD 0.0078125 + txt330 +TEXDEF txt331 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0 0.75 RAD 0.03125 + txt331 +TEXDEF txt332 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0 0.75 APEX 0.234531 0 0.75 RAD 0.0078125 + txt332 +TEXDEF txt333 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.0154687 0.75 APEX 0.125 0.109531 0.75 RAD 0.0078125 + txt333 +TEXDEF txt334 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0 0.765469 APEX 0.125 0 0.859531 RAD 0.0078125 + txt334 +TEXDEF txt335 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0 0.875 RAD 0.03125 + txt335 +TEXDEF txt336 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0 0.875 APEX 0.234531 0 0.875 RAD 0.0078125 + txt336 +TEXDEF txt337 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.0154687 0.875 APEX 0.125 0.109531 0.875 RAD 0.0078125 + txt337 +TEXDEF txt338 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0 0.890469 APEX 0.125 0 0.984531 RAD 0.0078125 + txt338 +TEXDEF txt339 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0 1 RAD 0.03125 + txt339 +TEXDEF txt340 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0 1 APEX 0.234531 0 1 RAD 0.0078125 + txt340 +TEXDEF txt341 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.0154687 1 APEX 0.125 0.109531 1 RAD 0.0078125 + txt341 +TEXDEF txt342 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.125 0 RAD 0.03125 + txt342 +TEXDEF txt343 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.125 0 APEX 0.234531 0.125 0 RAD 0.0078125 + txt343 +TEXDEF txt344 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.140469 0 APEX 0.125 0.234531 0 RAD 0.0078125 + txt344 +TEXDEF txt345 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.125 0.0154687 APEX 0.125 0.125 0.109531 RAD 0.0078125 + txt345 +TEXDEF txt346 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.125 0.125 RAD 0.03125 + txt346 +TEXDEF txt347 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.125 0.125 APEX 0.234531 0.125 0.125 RAD 0.0078125 + txt347 +TEXDEF txt348 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.140469 0.125 APEX 0.125 0.234531 0.125 RAD 0.0078125 + txt348 +TEXDEF txt349 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.125 0.140469 APEX 0.125 0.125 0.234531 RAD 0.0078125 + txt349 +TEXDEF txt350 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.125 0.25 RAD 0.03125 + txt350 +TEXDEF txt351 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.125 0.25 APEX 0.234531 0.125 0.25 RAD 0.0078125 + txt351 +TEXDEF txt352 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.140469 0.25 APEX 0.125 0.234531 0.25 RAD 0.0078125 + txt352 +TEXDEF txt353 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.125 0.265469 APEX 0.125 0.125 0.359531 RAD 0.0078125 + txt353 +TEXDEF txt354 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.125 0.375 RAD 0.03125 + txt354 +TEXDEF txt355 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.125 0.375 APEX 0.234531 0.125 0.375 RAD 0.0078125 + txt355 +TEXDEF txt356 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.140469 0.375 APEX 0.125 0.234531 0.375 RAD 0.0078125 + txt356 +TEXDEF txt357 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.125 0.390469 APEX 0.125 0.125 0.484531 RAD 0.0078125 + txt357 +TEXDEF txt358 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.125 0.5 RAD 0.03125 + txt358 +TEXDEF txt359 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.125 0.5 APEX 0.234531 0.125 0.5 RAD 0.0078125 + txt359 +TEXDEF txt360 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.140469 0.5 APEX 0.125 0.234531 0.5 RAD 0.0078125 + txt360 +TEXDEF txt361 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.125 0.515469 APEX 0.125 0.125 0.609531 RAD 0.0078125 + txt361 +TEXDEF txt362 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.125 0.625 RAD 0.03125 + txt362 +TEXDEF txt363 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.125 0.625 APEX 0.234531 0.125 0.625 RAD 0.0078125 + txt363 +TEXDEF txt364 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.140469 0.625 APEX 0.125 0.234531 0.625 RAD 0.0078125 + txt364 +TEXDEF txt365 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.125 0.640469 APEX 0.125 0.125 0.734531 RAD 0.0078125 + txt365 +TEXDEF txt366 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.125 0.75 RAD 0.03125 + txt366 +TEXDEF txt367 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.125 0.75 APEX 0.234531 0.125 0.75 RAD 0.0078125 + txt367 +TEXDEF txt368 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.140469 0.75 APEX 0.125 0.234531 0.75 RAD 0.0078125 + txt368 +TEXDEF txt369 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.125 0.765469 APEX 0.125 0.125 0.859531 RAD 0.0078125 + txt369 +TEXDEF txt370 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.125 0.875 RAD 0.03125 + txt370 +TEXDEF txt371 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.125 0.875 APEX 0.234531 0.125 0.875 RAD 0.0078125 + txt371 +TEXDEF txt372 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.140469 0.875 APEX 0.125 0.234531 0.875 RAD 0.0078125 + txt372 +TEXDEF txt373 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.125 0.890469 APEX 0.125 0.125 0.984531 RAD 0.0078125 + txt373 +TEXDEF txt374 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.125 1 RAD 0.03125 + txt374 +TEXDEF txt375 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.125 1 APEX 0.234531 0.125 1 RAD 0.0078125 + txt375 +TEXDEF txt376 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.140469 1 APEX 0.125 0.234531 1 RAD 0.0078125 + txt376 +TEXDEF txt377 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.25 0 RAD 0.03125 + txt377 +TEXDEF txt378 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.25 0 APEX 0.234531 0.25 0 RAD 0.0078125 + txt378 +TEXDEF txt379 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.265469 0 APEX 0.125 0.359531 0 RAD 0.0078125 + txt379 +TEXDEF txt380 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.25 0.0154687 APEX 0.125 0.25 0.109531 RAD 0.0078125 + txt380 +TEXDEF txt381 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.25 0.125 RAD 0.03125 + txt381 +TEXDEF txt382 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.25 0.125 APEX 0.234531 0.25 0.125 RAD 0.0078125 + txt382 +TEXDEF txt383 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.265469 0.125 APEX 0.125 0.359531 0.125 RAD 0.0078125 + txt383 +TEXDEF txt384 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.25 0.140469 APEX 0.125 0.25 0.234531 RAD 0.0078125 + txt384 +TEXDEF txt385 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.25 0.25 RAD 0.03125 + txt385 +TEXDEF txt386 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.25 0.25 APEX 0.234531 0.25 0.25 RAD 0.0078125 + txt386 +TEXDEF txt387 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.265469 0.25 APEX 0.125 0.359531 0.25 RAD 0.0078125 + txt387 +TEXDEF txt388 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.25 0.265469 APEX 0.125 0.25 0.359531 RAD 0.0078125 + txt388 +TEXDEF txt389 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.25 0.375 RAD 0.03125 + txt389 +TEXDEF txt390 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.25 0.375 APEX 0.234531 0.25 0.375 RAD 0.0078125 + txt390 +TEXDEF txt391 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.265469 0.375 APEX 0.125 0.359531 0.375 RAD 0.0078125 + txt391 +TEXDEF txt392 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.25 0.390469 APEX 0.125 0.25 0.484531 RAD 0.0078125 + txt392 +TEXDEF txt393 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.25 0.5 RAD 0.03125 + txt393 +TEXDEF txt394 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.25 0.5 APEX 0.234531 0.25 0.5 RAD 0.0078125 + txt394 +TEXDEF txt395 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.265469 0.5 APEX 0.125 0.359531 0.5 RAD 0.0078125 + txt395 +TEXDEF txt396 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.25 0.515469 APEX 0.125 0.25 0.609531 RAD 0.0078125 + txt396 +TEXDEF txt397 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.25 0.625 RAD 0.03125 + txt397 +TEXDEF txt398 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.25 0.625 APEX 0.234531 0.25 0.625 RAD 0.0078125 + txt398 +TEXDEF txt399 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.265469 0.625 APEX 0.125 0.359531 0.625 RAD 0.0078125 + txt399 +TEXDEF txt400 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.25 0.640469 APEX 0.125 0.25 0.734531 RAD 0.0078125 + txt400 +TEXDEF txt401 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.25 0.75 RAD 0.03125 + txt401 +TEXDEF txt402 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.25 0.75 APEX 0.234531 0.25 0.75 RAD 0.0078125 + txt402 +TEXDEF txt403 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.265469 0.75 APEX 0.125 0.359531 0.75 RAD 0.0078125 + txt403 +TEXDEF txt404 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.25 0.765469 APEX 0.125 0.25 0.859531 RAD 0.0078125 + txt404 +TEXDEF txt405 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.25 0.875 RAD 0.03125 + txt405 +TEXDEF txt406 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.25 0.875 APEX 0.234531 0.25 0.875 RAD 0.0078125 + txt406 +TEXDEF txt407 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.265469 0.875 APEX 0.125 0.359531 0.875 RAD 0.0078125 + txt407 +TEXDEF txt408 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.25 0.890469 APEX 0.125 0.25 0.984531 RAD 0.0078125 + txt408 +TEXDEF txt409 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.25 1 RAD 0.03125 + txt409 +TEXDEF txt410 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.25 1 APEX 0.234531 0.25 1 RAD 0.0078125 + txt410 +TEXDEF txt411 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.265469 1 APEX 0.125 0.359531 1 RAD 0.0078125 + txt411 +TEXDEF txt412 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.375 0 RAD 0.03125 + txt412 +TEXDEF txt413 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.375 0 APEX 0.234531 0.375 0 RAD 0.0078125 + txt413 +TEXDEF txt414 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.390469 0 APEX 0.125 0.484531 0 RAD 0.0078125 + txt414 +TEXDEF txt415 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.375 0.0154687 APEX 0.125 0.375 0.109531 RAD 0.0078125 + txt415 +TEXDEF txt416 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.375 0.125 RAD 0.03125 + txt416 +TEXDEF txt417 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.375 0.125 APEX 0.234531 0.375 0.125 RAD 0.0078125 + txt417 +TEXDEF txt418 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.390469 0.125 APEX 0.125 0.484531 0.125 RAD 0.0078125 + txt418 +TEXDEF txt419 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.375 0.140469 APEX 0.125 0.375 0.234531 RAD 0.0078125 + txt419 +TEXDEF txt420 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.375 0.25 RAD 0.03125 + txt420 +TEXDEF txt421 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.375 0.25 APEX 0.234531 0.375 0.25 RAD 0.0078125 + txt421 +TEXDEF txt422 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.390469 0.25 APEX 0.125 0.484531 0.25 RAD 0.0078125 + txt422 +TEXDEF txt423 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.375 0.265469 APEX 0.125 0.375 0.359531 RAD 0.0078125 + txt423 +TEXDEF txt424 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.375 0.375 RAD 0.03125 + txt424 +TEXDEF txt425 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.375 0.375 APEX 0.234531 0.375 0.375 RAD 0.0078125 + txt425 +TEXDEF txt426 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.390469 0.375 APEX 0.125 0.484531 0.375 RAD 0.0078125 + txt426 +TEXDEF txt427 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.375 0.390469 APEX 0.125 0.375 0.484531 RAD 0.0078125 + txt427 +TEXDEF txt428 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.375 0.5 RAD 0.03125 + txt428 +TEXDEF txt429 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.375 0.5 APEX 0.234531 0.375 0.5 RAD 0.0078125 + txt429 +TEXDEF txt430 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.390469 0.5 APEX 0.125 0.484531 0.5 RAD 0.0078125 + txt430 +TEXDEF txt431 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.375 0.515469 APEX 0.125 0.375 0.609531 RAD 0.0078125 + txt431 +TEXDEF txt432 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.375 0.625 RAD 0.03125 + txt432 +TEXDEF txt433 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.375 0.625 APEX 0.234531 0.375 0.625 RAD 0.0078125 + txt433 +TEXDEF txt434 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.390469 0.625 APEX 0.125 0.484531 0.625 RAD 0.0078125 + txt434 +TEXDEF txt435 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.375 0.640469 APEX 0.125 0.375 0.734531 RAD 0.0078125 + txt435 +TEXDEF txt436 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.375 0.75 RAD 0.03125 + txt436 +TEXDEF txt437 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.375 0.75 APEX 0.234531 0.375 0.75 RAD 0.0078125 + txt437 +TEXDEF txt438 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.390469 0.75 APEX 0.125 0.484531 0.75 RAD 0.0078125 + txt438 +TEXDEF txt439 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.375 0.765469 APEX 0.125 0.375 0.859531 RAD 0.0078125 + txt439 +TEXDEF txt440 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.375 0.875 RAD 0.03125 + txt440 +TEXDEF txt441 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.375 0.875 APEX 0.234531 0.375 0.875 RAD 0.0078125 + txt441 +TEXDEF txt442 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.390469 0.875 APEX 0.125 0.484531 0.875 RAD 0.0078125 + txt442 +TEXDEF txt443 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.375 0.890469 APEX 0.125 0.375 0.984531 RAD 0.0078125 + txt443 +TEXDEF txt444 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.375 1 RAD 0.03125 + txt444 +TEXDEF txt445 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.375 1 APEX 0.234531 0.375 1 RAD 0.0078125 + txt445 +TEXDEF txt446 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.390469 1 APEX 0.125 0.484531 1 RAD 0.0078125 + txt446 +TEXDEF txt447 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.5 0 RAD 0.03125 + txt447 +TEXDEF txt448 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.5 0 APEX 0.234531 0.5 0 RAD 0.0078125 + txt448 +TEXDEF txt449 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.515469 0 APEX 0.125 0.609531 0 RAD 0.0078125 + txt449 +TEXDEF txt450 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.5 0.0154687 APEX 0.125 0.5 0.109531 RAD 0.0078125 + txt450 +TEXDEF txt451 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.5 0.125 RAD 0.03125 + txt451 +TEXDEF txt452 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.5 0.125 APEX 0.234531 0.5 0.125 RAD 0.0078125 + txt452 +TEXDEF txt453 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.515469 0.125 APEX 0.125 0.609531 0.125 RAD 0.0078125 + txt453 +TEXDEF txt454 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.5 0.140469 APEX 0.125 0.5 0.234531 RAD 0.0078125 + txt454 +TEXDEF txt455 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.5 0.25 RAD 0.03125 + txt455 +TEXDEF txt456 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.5 0.25 APEX 0.234531 0.5 0.25 RAD 0.0078125 + txt456 +TEXDEF txt457 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.515469 0.25 APEX 0.125 0.609531 0.25 RAD 0.0078125 + txt457 +TEXDEF txt458 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.5 0.265469 APEX 0.125 0.5 0.359531 RAD 0.0078125 + txt458 +TEXDEF txt459 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.5 0.375 RAD 0.03125 + txt459 +TEXDEF txt460 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.5 0.375 APEX 0.234531 0.5 0.375 RAD 0.0078125 + txt460 +TEXDEF txt461 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.515469 0.375 APEX 0.125 0.609531 0.375 RAD 0.0078125 + txt461 +TEXDEF txt462 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.5 0.390469 APEX 0.125 0.5 0.484531 RAD 0.0078125 + txt462 +TEXDEF txt463 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.5 0.5 RAD 0.03125 + txt463 +TEXDEF txt464 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.5 0.5 APEX 0.234531 0.5 0.5 RAD 0.0078125 + txt464 +TEXDEF txt465 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.515469 0.5 APEX 0.125 0.609531 0.5 RAD 0.0078125 + txt465 +TEXDEF txt466 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.5 0.515469 APEX 0.125 0.5 0.609531 RAD 0.0078125 + txt466 +TEXDEF txt467 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.5 0.625 RAD 0.03125 + txt467 +TEXDEF txt468 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.5 0.625 APEX 0.234531 0.5 0.625 RAD 0.0078125 + txt468 +TEXDEF txt469 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.515469 0.625 APEX 0.125 0.609531 0.625 RAD 0.0078125 + txt469 +TEXDEF txt470 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.5 0.640469 APEX 0.125 0.5 0.734531 RAD 0.0078125 + txt470 +TEXDEF txt471 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.5 0.75 RAD 0.03125 + txt471 +TEXDEF txt472 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.5 0.75 APEX 0.234531 0.5 0.75 RAD 0.0078125 + txt472 +TEXDEF txt473 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.515469 0.75 APEX 0.125 0.609531 0.75 RAD 0.0078125 + txt473 +TEXDEF txt474 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.5 0.765469 APEX 0.125 0.5 0.859531 RAD 0.0078125 + txt474 +TEXDEF txt475 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.5 0.875 RAD 0.03125 + txt475 +TEXDEF txt476 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.5 0.875 APEX 0.234531 0.5 0.875 RAD 0.0078125 + txt476 +TEXDEF txt477 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.515469 0.875 APEX 0.125 0.609531 0.875 RAD 0.0078125 + txt477 +TEXDEF txt478 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.5 0.890469 APEX 0.125 0.5 0.984531 RAD 0.0078125 + txt478 +TEXDEF txt479 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.5 1 RAD 0.03125 + txt479 +TEXDEF txt480 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.5 1 APEX 0.234531 0.5 1 RAD 0.0078125 + txt480 +TEXDEF txt481 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.515469 1 APEX 0.125 0.609531 1 RAD 0.0078125 + txt481 +TEXDEF txt482 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.625 0 RAD 0.03125 + txt482 +TEXDEF txt483 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.625 0 APEX 0.234531 0.625 0 RAD 0.0078125 + txt483 +TEXDEF txt484 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.640469 0 APEX 0.125 0.734531 0 RAD 0.0078125 + txt484 +TEXDEF txt485 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.625 0.0154687 APEX 0.125 0.625 0.109531 RAD 0.0078125 + txt485 +TEXDEF txt486 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.625 0.125 RAD 0.03125 + txt486 +TEXDEF txt487 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.625 0.125 APEX 0.234531 0.625 0.125 RAD 0.0078125 + txt487 +TEXDEF txt488 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.640469 0.125 APEX 0.125 0.734531 0.125 RAD 0.0078125 + txt488 +TEXDEF txt489 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.625 0.140469 APEX 0.125 0.625 0.234531 RAD 0.0078125 + txt489 +TEXDEF txt490 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.625 0.25 RAD 0.03125 + txt490 +TEXDEF txt491 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.625 0.25 APEX 0.234531 0.625 0.25 RAD 0.0078125 + txt491 +TEXDEF txt492 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.640469 0.25 APEX 0.125 0.734531 0.25 RAD 0.0078125 + txt492 +TEXDEF txt493 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.625 0.265469 APEX 0.125 0.625 0.359531 RAD 0.0078125 + txt493 +TEXDEF txt494 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.625 0.375 RAD 0.03125 + txt494 +TEXDEF txt495 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.625 0.375 APEX 0.234531 0.625 0.375 RAD 0.0078125 + txt495 +TEXDEF txt496 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.640469 0.375 APEX 0.125 0.734531 0.375 RAD 0.0078125 + txt496 +TEXDEF txt497 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.625 0.390469 APEX 0.125 0.625 0.484531 RAD 0.0078125 + txt497 +TEXDEF txt498 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.625 0.5 RAD 0.03125 + txt498 +TEXDEF txt499 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.625 0.5 APEX 0.234531 0.625 0.5 RAD 0.0078125 + txt499 +TEXDEF txt500 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.640469 0.5 APEX 0.125 0.734531 0.5 RAD 0.0078125 + txt500 +TEXDEF txt501 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.625 0.515469 APEX 0.125 0.625 0.609531 RAD 0.0078125 + txt501 +TEXDEF txt502 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.625 0.625 RAD 0.03125 + txt502 +TEXDEF txt503 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.625 0.625 APEX 0.234531 0.625 0.625 RAD 0.0078125 + txt503 +TEXDEF txt504 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.640469 0.625 APEX 0.125 0.734531 0.625 RAD 0.0078125 + txt504 +TEXDEF txt505 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.625 0.640469 APEX 0.125 0.625 0.734531 RAD 0.0078125 + txt505 +TEXDEF txt506 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.625 0.75 RAD 0.03125 + txt506 +TEXDEF txt507 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.625 0.75 APEX 0.234531 0.625 0.75 RAD 0.0078125 + txt507 +TEXDEF txt508 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.640469 0.75 APEX 0.125 0.734531 0.75 RAD 0.0078125 + txt508 +TEXDEF txt509 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.625 0.765469 APEX 0.125 0.625 0.859531 RAD 0.0078125 + txt509 +TEXDEF txt510 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.625 0.875 RAD 0.03125 + txt510 +TEXDEF txt511 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.625 0.875 APEX 0.234531 0.625 0.875 RAD 0.0078125 + txt511 +TEXDEF txt512 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.640469 0.875 APEX 0.125 0.734531 0.875 RAD 0.0078125 + txt512 +TEXDEF txt513 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.625 0.890469 APEX 0.125 0.625 0.984531 RAD 0.0078125 + txt513 +TEXDEF txt514 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.625 1 RAD 0.03125 + txt514 +TEXDEF txt515 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.625 1 APEX 0.234531 0.625 1 RAD 0.0078125 + txt515 +TEXDEF txt516 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.640469 1 APEX 0.125 0.734531 1 RAD 0.0078125 + txt516 +TEXDEF txt517 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.75 0 RAD 0.03125 + txt517 +TEXDEF txt518 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.75 0 APEX 0.234531 0.75 0 RAD 0.0078125 + txt518 +TEXDEF txt519 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.765469 0 APEX 0.125 0.859531 0 RAD 0.0078125 + txt519 +TEXDEF txt520 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.75 0.0154687 APEX 0.125 0.75 0.109531 RAD 0.0078125 + txt520 +TEXDEF txt521 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.75 0.125 RAD 0.03125 + txt521 +TEXDEF txt522 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.75 0.125 APEX 0.234531 0.75 0.125 RAD 0.0078125 + txt522 +TEXDEF txt523 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.765469 0.125 APEX 0.125 0.859531 0.125 RAD 0.0078125 + txt523 +TEXDEF txt524 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.75 0.140469 APEX 0.125 0.75 0.234531 RAD 0.0078125 + txt524 +TEXDEF txt525 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.75 0.25 RAD 0.03125 + txt525 +TEXDEF txt526 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.75 0.25 APEX 0.234531 0.75 0.25 RAD 0.0078125 + txt526 +TEXDEF txt527 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.765469 0.25 APEX 0.125 0.859531 0.25 RAD 0.0078125 + txt527 +TEXDEF txt528 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.75 0.265469 APEX 0.125 0.75 0.359531 RAD 0.0078125 + txt528 +TEXDEF txt529 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.75 0.375 RAD 0.03125 + txt529 +TEXDEF txt530 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.75 0.375 APEX 0.234531 0.75 0.375 RAD 0.0078125 + txt530 +TEXDEF txt531 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.765469 0.375 APEX 0.125 0.859531 0.375 RAD 0.0078125 + txt531 +TEXDEF txt532 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.75 0.390469 APEX 0.125 0.75 0.484531 RAD 0.0078125 + txt532 +TEXDEF txt533 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.75 0.5 RAD 0.03125 + txt533 +TEXDEF txt534 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.75 0.5 APEX 0.234531 0.75 0.5 RAD 0.0078125 + txt534 +TEXDEF txt535 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.765469 0.5 APEX 0.125 0.859531 0.5 RAD 0.0078125 + txt535 +TEXDEF txt536 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.75 0.515469 APEX 0.125 0.75 0.609531 RAD 0.0078125 + txt536 +TEXDEF txt537 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.75 0.625 RAD 0.03125 + txt537 +TEXDEF txt538 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.75 0.625 APEX 0.234531 0.75 0.625 RAD 0.0078125 + txt538 +TEXDEF txt539 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.765469 0.625 APEX 0.125 0.859531 0.625 RAD 0.0078125 + txt539 +TEXDEF txt540 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.75 0.640469 APEX 0.125 0.75 0.734531 RAD 0.0078125 + txt540 +TEXDEF txt541 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.75 0.75 RAD 0.03125 + txt541 +TEXDEF txt542 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.75 0.75 APEX 0.234531 0.75 0.75 RAD 0.0078125 + txt542 +TEXDEF txt543 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.765469 0.75 APEX 0.125 0.859531 0.75 RAD 0.0078125 + txt543 +TEXDEF txt544 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.75 0.765469 APEX 0.125 0.75 0.859531 RAD 0.0078125 + txt544 +TEXDEF txt545 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.75 0.875 RAD 0.03125 + txt545 +TEXDEF txt546 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.75 0.875 APEX 0.234531 0.75 0.875 RAD 0.0078125 + txt546 +TEXDEF txt547 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.765469 0.875 APEX 0.125 0.859531 0.875 RAD 0.0078125 + txt547 +TEXDEF txt548 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.75 0.890469 APEX 0.125 0.75 0.984531 RAD 0.0078125 + txt548 +TEXDEF txt549 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.75 1 RAD 0.03125 + txt549 +TEXDEF txt550 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.75 1 APEX 0.234531 0.75 1 RAD 0.0078125 + txt550 +TEXDEF txt551 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.765469 1 APEX 0.125 0.859531 1 RAD 0.0078125 + txt551 +TEXDEF txt552 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.875 0 RAD 0.03125 + txt552 +TEXDEF txt553 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.875 0 APEX 0.234531 0.875 0 RAD 0.0078125 + txt553 +TEXDEF txt554 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.890469 0 APEX 0.125 0.984531 0 RAD 0.0078125 + txt554 +TEXDEF txt555 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.875 0.0154687 APEX 0.125 0.875 0.109531 RAD 0.0078125 + txt555 +TEXDEF txt556 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.875 0.125 RAD 0.03125 + txt556 +TEXDEF txt557 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.875 0.125 APEX 0.234531 0.875 0.125 RAD 0.0078125 + txt557 +TEXDEF txt558 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.890469 0.125 APEX 0.125 0.984531 0.125 RAD 0.0078125 + txt558 +TEXDEF txt559 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.875 0.140469 APEX 0.125 0.875 0.234531 RAD 0.0078125 + txt559 +TEXDEF txt560 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.875 0.25 RAD 0.03125 + txt560 +TEXDEF txt561 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.875 0.25 APEX 0.234531 0.875 0.25 RAD 0.0078125 + txt561 +TEXDEF txt562 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.890469 0.25 APEX 0.125 0.984531 0.25 RAD 0.0078125 + txt562 +TEXDEF txt563 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.875 0.265469 APEX 0.125 0.875 0.359531 RAD 0.0078125 + txt563 +TEXDEF txt564 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.875 0.375 RAD 0.03125 + txt564 +TEXDEF txt565 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.875 0.375 APEX 0.234531 0.875 0.375 RAD 0.0078125 + txt565 +TEXDEF txt566 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.890469 0.375 APEX 0.125 0.984531 0.375 RAD 0.0078125 + txt566 +TEXDEF txt567 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.875 0.390469 APEX 0.125 0.875 0.484531 RAD 0.0078125 + txt567 +TEXDEF txt568 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.875 0.5 RAD 0.03125 + txt568 +TEXDEF txt569 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.875 0.5 APEX 0.234531 0.875 0.5 RAD 0.0078125 + txt569 +TEXDEF txt570 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.890469 0.5 APEX 0.125 0.984531 0.5 RAD 0.0078125 + txt570 +TEXDEF txt571 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.875 0.515469 APEX 0.125 0.875 0.609531 RAD 0.0078125 + txt571 +TEXDEF txt572 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.875 0.625 RAD 0.03125 + txt572 +TEXDEF txt573 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.875 0.625 APEX 0.234531 0.875 0.625 RAD 0.0078125 + txt573 +TEXDEF txt574 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.890469 0.625 APEX 0.125 0.984531 0.625 RAD 0.0078125 + txt574 +TEXDEF txt575 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.875 0.640469 APEX 0.125 0.875 0.734531 RAD 0.0078125 + txt575 +TEXDEF txt576 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.875 0.75 RAD 0.03125 + txt576 +TEXDEF txt577 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.875 0.75 APEX 0.234531 0.875 0.75 RAD 0.0078125 + txt577 +TEXDEF txt578 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.890469 0.75 APEX 0.125 0.984531 0.75 RAD 0.0078125 + txt578 +TEXDEF txt579 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.875 0.765469 APEX 0.125 0.875 0.859531 RAD 0.0078125 + txt579 +TEXDEF txt580 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.875 0.875 RAD 0.03125 + txt580 +TEXDEF txt581 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.875 0.875 APEX 0.234531 0.875 0.875 RAD 0.0078125 + txt581 +TEXDEF txt582 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.890469 0.875 APEX 0.125 0.984531 0.875 RAD 0.0078125 + txt582 +TEXDEF txt583 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.875 0.890469 APEX 0.125 0.875 0.984531 RAD 0.0078125 + txt583 +TEXDEF txt584 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 0.875 1 RAD 0.03125 + txt584 +TEXDEF txt585 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 0.875 1 APEX 0.234531 0.875 1 RAD 0.0078125 + txt585 +TEXDEF txt586 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 0.890469 1 APEX 0.125 0.984531 1 RAD 0.0078125 + txt586 +TEXDEF txt587 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 1 0 RAD 0.03125 + txt587 +TEXDEF txt588 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 1 0 APEX 0.234531 1 0 RAD 0.0078125 + txt588 +TEXDEF txt589 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 1 0.0154687 APEX 0.125 1 0.109531 RAD 0.0078125 + txt589 +TEXDEF txt590 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 1 0.125 RAD 0.03125 + txt590 +TEXDEF txt591 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 1 0.125 APEX 0.234531 1 0.125 RAD 0.0078125 + txt591 +TEXDEF txt592 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 1 0.140469 APEX 0.125 1 0.234531 RAD 0.0078125 + txt592 +TEXDEF txt593 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 1 0.25 RAD 0.03125 + txt593 +TEXDEF txt594 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 1 0.25 APEX 0.234531 1 0.25 RAD 0.0078125 + txt594 +TEXDEF txt595 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 1 0.265469 APEX 0.125 1 0.359531 RAD 0.0078125 + txt595 +TEXDEF txt596 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 1 0.375 RAD 0.03125 + txt596 +TEXDEF txt597 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 1 0.375 APEX 0.234531 1 0.375 RAD 0.0078125 + txt597 +TEXDEF txt598 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 1 0.390469 APEX 0.125 1 0.484531 RAD 0.0078125 + txt598 +TEXDEF txt599 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 1 0.5 RAD 0.03125 + txt599 +TEXDEF txt600 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 1 0.5 APEX 0.234531 1 0.5 RAD 0.0078125 + txt600 +TEXDEF txt601 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 1 0.515469 APEX 0.125 1 0.609531 RAD 0.0078125 + txt601 +TEXDEF txt602 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 1 0.625 RAD 0.03125 + txt602 +TEXDEF txt603 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 1 0.625 APEX 0.234531 1 0.625 RAD 0.0078125 + txt603 +TEXDEF txt604 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 1 0.640469 APEX 0.125 1 0.734531 RAD 0.0078125 + txt604 +TEXDEF txt605 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 1 0.75 RAD 0.03125 + txt605 +TEXDEF txt606 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 1 0.75 APEX 0.234531 1 0.75 RAD 0.0078125 + txt606 +TEXDEF txt607 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 1 0.765469 APEX 0.125 1 0.859531 RAD 0.0078125 + txt607 +TEXDEF txt608 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 1 0.875 RAD 0.03125 + txt608 +TEXDEF txt609 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 1 0.875 APEX 0.234531 1 0.875 RAD 0.0078125 + txt609 +TEXDEF txt610 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.125 1 0.890469 APEX 0.125 1 0.984531 RAD 0.0078125 + txt610 +TEXDEF txt611 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.125 1 1 RAD 0.03125 + txt611 +TEXDEF txt612 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.140469 1 1 APEX 0.234531 1 1 RAD 0.0078125 + txt612 +TEXDEF txt613 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0 0 RAD 0.03125 + txt613 +TEXDEF txt614 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0 0 APEX 0.359531 0 0 RAD 0.0078125 + txt614 +TEXDEF txt615 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.0154687 0 APEX 0.25 0.109531 0 RAD 0.0078125 + txt615 +TEXDEF txt616 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0 0.0154687 APEX 0.25 0 0.109531 RAD 0.0078125 + txt616 +TEXDEF txt617 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0 0.125 RAD 0.03125 + txt617 +TEXDEF txt618 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0 0.125 APEX 0.359531 0 0.125 RAD 0.0078125 + txt618 +TEXDEF txt619 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.0154687 0.125 APEX 0.25 0.109531 0.125 RAD 0.0078125 + txt619 +TEXDEF txt620 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0 0.140469 APEX 0.25 0 0.234531 RAD 0.0078125 + txt620 +TEXDEF txt621 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0 0.25 RAD 0.03125 + txt621 +TEXDEF txt622 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0 0.25 APEX 0.359531 0 0.25 RAD 0.0078125 + txt622 +TEXDEF txt623 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.0154687 0.25 APEX 0.25 0.109531 0.25 RAD 0.0078125 + txt623 +TEXDEF txt624 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0 0.265469 APEX 0.25 0 0.359531 RAD 0.0078125 + txt624 +TEXDEF txt625 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0 0.375 RAD 0.03125 + txt625 +TEXDEF txt626 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0 0.375 APEX 0.359531 0 0.375 RAD 0.0078125 + txt626 +TEXDEF txt627 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.0154687 0.375 APEX 0.25 0.109531 0.375 RAD 0.0078125 + txt627 +TEXDEF txt628 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0 0.390469 APEX 0.25 0 0.484531 RAD 0.0078125 + txt628 +TEXDEF txt629 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0 0.5 RAD 0.03125 + txt629 +TEXDEF txt630 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0 0.5 APEX 0.359531 0 0.5 RAD 0.0078125 + txt630 +TEXDEF txt631 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.0154687 0.5 APEX 0.25 0.109531 0.5 RAD 0.0078125 + txt631 +TEXDEF txt632 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0 0.515469 APEX 0.25 0 0.609531 RAD 0.0078125 + txt632 +TEXDEF txt633 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0 0.625 RAD 0.03125 + txt633 +TEXDEF txt634 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0 0.625 APEX 0.359531 0 0.625 RAD 0.0078125 + txt634 +TEXDEF txt635 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.0154687 0.625 APEX 0.25 0.109531 0.625 RAD 0.0078125 + txt635 +TEXDEF txt636 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0 0.640469 APEX 0.25 0 0.734531 RAD 0.0078125 + txt636 +TEXDEF txt637 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0 0.75 RAD 0.03125 + txt637 +TEXDEF txt638 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0 0.75 APEX 0.359531 0 0.75 RAD 0.0078125 + txt638 +TEXDEF txt639 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.0154687 0.75 APEX 0.25 0.109531 0.75 RAD 0.0078125 + txt639 +TEXDEF txt640 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0 0.765469 APEX 0.25 0 0.859531 RAD 0.0078125 + txt640 +TEXDEF txt641 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0 0.875 RAD 0.03125 + txt641 +TEXDEF txt642 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0 0.875 APEX 0.359531 0 0.875 RAD 0.0078125 + txt642 +TEXDEF txt643 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.0154687 0.875 APEX 0.25 0.109531 0.875 RAD 0.0078125 + txt643 +TEXDEF txt644 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0 0.890469 APEX 0.25 0 0.984531 RAD 0.0078125 + txt644 +TEXDEF txt645 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0 1 RAD 0.03125 + txt645 +TEXDEF txt646 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0 1 APEX 0.359531 0 1 RAD 0.0078125 + txt646 +TEXDEF txt647 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.0154687 1 APEX 0.25 0.109531 1 RAD 0.0078125 + txt647 +TEXDEF txt648 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.125 0 RAD 0.03125 + txt648 +TEXDEF txt649 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.125 0 APEX 0.359531 0.125 0 RAD 0.0078125 + txt649 +TEXDEF txt650 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.140469 0 APEX 0.25 0.234531 0 RAD 0.0078125 + txt650 +TEXDEF txt651 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.125 0.0154687 APEX 0.25 0.125 0.109531 RAD 0.0078125 + txt651 +TEXDEF txt652 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.125 0.125 RAD 0.03125 + txt652 +TEXDEF txt653 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.125 0.125 APEX 0.359531 0.125 0.125 RAD 0.0078125 + txt653 +TEXDEF txt654 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.140469 0.125 APEX 0.25 0.234531 0.125 RAD 0.0078125 + txt654 +TEXDEF txt655 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.125 0.140469 APEX 0.25 0.125 0.234531 RAD 0.0078125 + txt655 +TEXDEF txt656 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.125 0.25 RAD 0.03125 + txt656 +TEXDEF txt657 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.125 0.25 APEX 0.359531 0.125 0.25 RAD 0.0078125 + txt657 +TEXDEF txt658 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.140469 0.25 APEX 0.25 0.234531 0.25 RAD 0.0078125 + txt658 +TEXDEF txt659 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.125 0.265469 APEX 0.25 0.125 0.359531 RAD 0.0078125 + txt659 +TEXDEF txt660 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.125 0.375 RAD 0.03125 + txt660 +TEXDEF txt661 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.125 0.375 APEX 0.359531 0.125 0.375 RAD 0.0078125 + txt661 +TEXDEF txt662 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.140469 0.375 APEX 0.25 0.234531 0.375 RAD 0.0078125 + txt662 +TEXDEF txt663 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.125 0.390469 APEX 0.25 0.125 0.484531 RAD 0.0078125 + txt663 +TEXDEF txt664 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.125 0.5 RAD 0.03125 + txt664 +TEXDEF txt665 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.125 0.5 APEX 0.359531 0.125 0.5 RAD 0.0078125 + txt665 +TEXDEF txt666 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.140469 0.5 APEX 0.25 0.234531 0.5 RAD 0.0078125 + txt666 +TEXDEF txt667 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.125 0.515469 APEX 0.25 0.125 0.609531 RAD 0.0078125 + txt667 +TEXDEF txt668 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.125 0.625 RAD 0.03125 + txt668 +TEXDEF txt669 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.125 0.625 APEX 0.359531 0.125 0.625 RAD 0.0078125 + txt669 +TEXDEF txt670 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.140469 0.625 APEX 0.25 0.234531 0.625 RAD 0.0078125 + txt670 +TEXDEF txt671 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.125 0.640469 APEX 0.25 0.125 0.734531 RAD 0.0078125 + txt671 +TEXDEF txt672 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.125 0.75 RAD 0.03125 + txt672 +TEXDEF txt673 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.125 0.75 APEX 0.359531 0.125 0.75 RAD 0.0078125 + txt673 +TEXDEF txt674 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.140469 0.75 APEX 0.25 0.234531 0.75 RAD 0.0078125 + txt674 +TEXDEF txt675 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.125 0.765469 APEX 0.25 0.125 0.859531 RAD 0.0078125 + txt675 +TEXDEF txt676 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.125 0.875 RAD 0.03125 + txt676 +TEXDEF txt677 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.125 0.875 APEX 0.359531 0.125 0.875 RAD 0.0078125 + txt677 +TEXDEF txt678 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.140469 0.875 APEX 0.25 0.234531 0.875 RAD 0.0078125 + txt678 +TEXDEF txt679 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.125 0.890469 APEX 0.25 0.125 0.984531 RAD 0.0078125 + txt679 +TEXDEF txt680 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.125 1 RAD 0.03125 + txt680 +TEXDEF txt681 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.125 1 APEX 0.359531 0.125 1 RAD 0.0078125 + txt681 +TEXDEF txt682 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.140469 1 APEX 0.25 0.234531 1 RAD 0.0078125 + txt682 +TEXDEF txt683 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.25 0 RAD 0.03125 + txt683 +TEXDEF txt684 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.25 0 APEX 0.359531 0.25 0 RAD 0.0078125 + txt684 +TEXDEF txt685 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.265469 0 APEX 0.25 0.359531 0 RAD 0.0078125 + txt685 +TEXDEF txt686 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.25 0.0154687 APEX 0.25 0.25 0.109531 RAD 0.0078125 + txt686 +TEXDEF txt687 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.25 0.125 RAD 0.03125 + txt687 +TEXDEF txt688 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.25 0.125 APEX 0.359531 0.25 0.125 RAD 0.0078125 + txt688 +TEXDEF txt689 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.265469 0.125 APEX 0.25 0.359531 0.125 RAD 0.0078125 + txt689 +TEXDEF txt690 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.25 0.140469 APEX 0.25 0.25 0.234531 RAD 0.0078125 + txt690 +TEXDEF txt691 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.25 0.25 RAD 0.03125 + txt691 +TEXDEF txt692 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.25 0.25 APEX 0.359531 0.25 0.25 RAD 0.0078125 + txt692 +TEXDEF txt693 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.265469 0.25 APEX 0.25 0.359531 0.25 RAD 0.0078125 + txt693 +TEXDEF txt694 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.25 0.265469 APEX 0.25 0.25 0.359531 RAD 0.0078125 + txt694 +TEXDEF txt695 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.25 0.375 RAD 0.03125 + txt695 +TEXDEF txt696 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.25 0.375 APEX 0.359531 0.25 0.375 RAD 0.0078125 + txt696 +TEXDEF txt697 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.265469 0.375 APEX 0.25 0.359531 0.375 RAD 0.0078125 + txt697 +TEXDEF txt698 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.25 0.390469 APEX 0.25 0.25 0.484531 RAD 0.0078125 + txt698 +TEXDEF txt699 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.25 0.5 RAD 0.03125 + txt699 +TEXDEF txt700 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.25 0.5 APEX 0.359531 0.25 0.5 RAD 0.0078125 + txt700 +TEXDEF txt701 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.265469 0.5 APEX 0.25 0.359531 0.5 RAD 0.0078125 + txt701 +TEXDEF txt702 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.25 0.515469 APEX 0.25 0.25 0.609531 RAD 0.0078125 + txt702 +TEXDEF txt703 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.25 0.625 RAD 0.03125 + txt703 +TEXDEF txt704 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.25 0.625 APEX 0.359531 0.25 0.625 RAD 0.0078125 + txt704 +TEXDEF txt705 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.265469 0.625 APEX 0.25 0.359531 0.625 RAD 0.0078125 + txt705 +TEXDEF txt706 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.25 0.640469 APEX 0.25 0.25 0.734531 RAD 0.0078125 + txt706 +TEXDEF txt707 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.25 0.75 RAD 0.03125 + txt707 +TEXDEF txt708 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.25 0.75 APEX 0.359531 0.25 0.75 RAD 0.0078125 + txt708 +TEXDEF txt709 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.265469 0.75 APEX 0.25 0.359531 0.75 RAD 0.0078125 + txt709 +TEXDEF txt710 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.25 0.765469 APEX 0.25 0.25 0.859531 RAD 0.0078125 + txt710 +TEXDEF txt711 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.25 0.875 RAD 0.03125 + txt711 +TEXDEF txt712 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.25 0.875 APEX 0.359531 0.25 0.875 RAD 0.0078125 + txt712 +TEXDEF txt713 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.265469 0.875 APEX 0.25 0.359531 0.875 RAD 0.0078125 + txt713 +TEXDEF txt714 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.25 0.890469 APEX 0.25 0.25 0.984531 RAD 0.0078125 + txt714 +TEXDEF txt715 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.25 1 RAD 0.03125 + txt715 +TEXDEF txt716 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.25 1 APEX 0.359531 0.25 1 RAD 0.0078125 + txt716 +TEXDEF txt717 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.265469 1 APEX 0.25 0.359531 1 RAD 0.0078125 + txt717 +TEXDEF txt718 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.375 0 RAD 0.03125 + txt718 +TEXDEF txt719 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.375 0 APEX 0.359531 0.375 0 RAD 0.0078125 + txt719 +TEXDEF txt720 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.390469 0 APEX 0.25 0.484531 0 RAD 0.0078125 + txt720 +TEXDEF txt721 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.375 0.0154687 APEX 0.25 0.375 0.109531 RAD 0.0078125 + txt721 +TEXDEF txt722 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.375 0.125 RAD 0.03125 + txt722 +TEXDEF txt723 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.375 0.125 APEX 0.359531 0.375 0.125 RAD 0.0078125 + txt723 +TEXDEF txt724 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.390469 0.125 APEX 0.25 0.484531 0.125 RAD 0.0078125 + txt724 +TEXDEF txt725 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.375 0.140469 APEX 0.25 0.375 0.234531 RAD 0.0078125 + txt725 +TEXDEF txt726 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.375 0.25 RAD 0.03125 + txt726 +TEXDEF txt727 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.375 0.25 APEX 0.359531 0.375 0.25 RAD 0.0078125 + txt727 +TEXDEF txt728 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.390469 0.25 APEX 0.25 0.484531 0.25 RAD 0.0078125 + txt728 +TEXDEF txt729 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.375 0.265469 APEX 0.25 0.375 0.359531 RAD 0.0078125 + txt729 +TEXDEF txt730 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.375 0.375 RAD 0.03125 + txt730 +TEXDEF txt731 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.375 0.375 APEX 0.359531 0.375 0.375 RAD 0.0078125 + txt731 +TEXDEF txt732 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.390469 0.375 APEX 0.25 0.484531 0.375 RAD 0.0078125 + txt732 +TEXDEF txt733 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.375 0.390469 APEX 0.25 0.375 0.484531 RAD 0.0078125 + txt733 +TEXDEF txt734 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.375 0.5 RAD 0.03125 + txt734 +TEXDEF txt735 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.375 0.5 APEX 0.359531 0.375 0.5 RAD 0.0078125 + txt735 +TEXDEF txt736 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.390469 0.5 APEX 0.25 0.484531 0.5 RAD 0.0078125 + txt736 +TEXDEF txt737 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.375 0.515469 APEX 0.25 0.375 0.609531 RAD 0.0078125 + txt737 +TEXDEF txt738 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.375 0.625 RAD 0.03125 + txt738 +TEXDEF txt739 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.375 0.625 APEX 0.359531 0.375 0.625 RAD 0.0078125 + txt739 +TEXDEF txt740 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.390469 0.625 APEX 0.25 0.484531 0.625 RAD 0.0078125 + txt740 +TEXDEF txt741 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.375 0.640469 APEX 0.25 0.375 0.734531 RAD 0.0078125 + txt741 +TEXDEF txt742 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.375 0.75 RAD 0.03125 + txt742 +TEXDEF txt743 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.375 0.75 APEX 0.359531 0.375 0.75 RAD 0.0078125 + txt743 +TEXDEF txt744 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.390469 0.75 APEX 0.25 0.484531 0.75 RAD 0.0078125 + txt744 +TEXDEF txt745 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.375 0.765469 APEX 0.25 0.375 0.859531 RAD 0.0078125 + txt745 +TEXDEF txt746 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.375 0.875 RAD 0.03125 + txt746 +TEXDEF txt747 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.375 0.875 APEX 0.359531 0.375 0.875 RAD 0.0078125 + txt747 +TEXDEF txt748 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.390469 0.875 APEX 0.25 0.484531 0.875 RAD 0.0078125 + txt748 +TEXDEF txt749 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.375 0.890469 APEX 0.25 0.375 0.984531 RAD 0.0078125 + txt749 +TEXDEF txt750 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.375 1 RAD 0.03125 + txt750 +TEXDEF txt751 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.375 1 APEX 0.359531 0.375 1 RAD 0.0078125 + txt751 +TEXDEF txt752 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.390469 1 APEX 0.25 0.484531 1 RAD 0.0078125 + txt752 +TEXDEF txt753 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.5 0 RAD 0.03125 + txt753 +TEXDEF txt754 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.5 0 APEX 0.359531 0.5 0 RAD 0.0078125 + txt754 +TEXDEF txt755 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.515469 0 APEX 0.25 0.609531 0 RAD 0.0078125 + txt755 +TEXDEF txt756 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.5 0.0154687 APEX 0.25 0.5 0.109531 RAD 0.0078125 + txt756 +TEXDEF txt757 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.5 0.125 RAD 0.03125 + txt757 +TEXDEF txt758 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.5 0.125 APEX 0.359531 0.5 0.125 RAD 0.0078125 + txt758 +TEXDEF txt759 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.515469 0.125 APEX 0.25 0.609531 0.125 RAD 0.0078125 + txt759 +TEXDEF txt760 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.5 0.140469 APEX 0.25 0.5 0.234531 RAD 0.0078125 + txt760 +TEXDEF txt761 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.5 0.25 RAD 0.03125 + txt761 +TEXDEF txt762 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.5 0.25 APEX 0.359531 0.5 0.25 RAD 0.0078125 + txt762 +TEXDEF txt763 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.515469 0.25 APEX 0.25 0.609531 0.25 RAD 0.0078125 + txt763 +TEXDEF txt764 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.5 0.265469 APEX 0.25 0.5 0.359531 RAD 0.0078125 + txt764 +TEXDEF txt765 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.5 0.375 RAD 0.03125 + txt765 +TEXDEF txt766 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.5 0.375 APEX 0.359531 0.5 0.375 RAD 0.0078125 + txt766 +TEXDEF txt767 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.515469 0.375 APEX 0.25 0.609531 0.375 RAD 0.0078125 + txt767 +TEXDEF txt768 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.5 0.390469 APEX 0.25 0.5 0.484531 RAD 0.0078125 + txt768 +TEXDEF txt769 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.5 0.5 RAD 0.03125 + txt769 +TEXDEF txt770 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.5 0.5 APEX 0.359531 0.5 0.5 RAD 0.0078125 + txt770 +TEXDEF txt771 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.515469 0.5 APEX 0.25 0.609531 0.5 RAD 0.0078125 + txt771 +TEXDEF txt772 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.5 0.515469 APEX 0.25 0.5 0.609531 RAD 0.0078125 + txt772 +TEXDEF txt773 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.5 0.625 RAD 0.03125 + txt773 +TEXDEF txt774 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.5 0.625 APEX 0.359531 0.5 0.625 RAD 0.0078125 + txt774 +TEXDEF txt775 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.515469 0.625 APEX 0.25 0.609531 0.625 RAD 0.0078125 + txt775 +TEXDEF txt776 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.5 0.640469 APEX 0.25 0.5 0.734531 RAD 0.0078125 + txt776 +TEXDEF txt777 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.5 0.75 RAD 0.03125 + txt777 +TEXDEF txt778 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.5 0.75 APEX 0.359531 0.5 0.75 RAD 0.0078125 + txt778 +TEXDEF txt779 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.515469 0.75 APEX 0.25 0.609531 0.75 RAD 0.0078125 + txt779 +TEXDEF txt780 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.5 0.765469 APEX 0.25 0.5 0.859531 RAD 0.0078125 + txt780 +TEXDEF txt781 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.5 0.875 RAD 0.03125 + txt781 +TEXDEF txt782 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.5 0.875 APEX 0.359531 0.5 0.875 RAD 0.0078125 + txt782 +TEXDEF txt783 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.515469 0.875 APEX 0.25 0.609531 0.875 RAD 0.0078125 + txt783 +TEXDEF txt784 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.5 0.890469 APEX 0.25 0.5 0.984531 RAD 0.0078125 + txt784 +TEXDEF txt785 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.5 1 RAD 0.03125 + txt785 +TEXDEF txt786 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.5 1 APEX 0.359531 0.5 1 RAD 0.0078125 + txt786 +TEXDEF txt787 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.515469 1 APEX 0.25 0.609531 1 RAD 0.0078125 + txt787 +TEXDEF txt788 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.625 0 RAD 0.03125 + txt788 +TEXDEF txt789 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.625 0 APEX 0.359531 0.625 0 RAD 0.0078125 + txt789 +TEXDEF txt790 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.640469 0 APEX 0.25 0.734531 0 RAD 0.0078125 + txt790 +TEXDEF txt791 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.625 0.0154687 APEX 0.25 0.625 0.109531 RAD 0.0078125 + txt791 +TEXDEF txt792 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.625 0.125 RAD 0.03125 + txt792 +TEXDEF txt793 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.625 0.125 APEX 0.359531 0.625 0.125 RAD 0.0078125 + txt793 +TEXDEF txt794 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.640469 0.125 APEX 0.25 0.734531 0.125 RAD 0.0078125 + txt794 +TEXDEF txt795 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.625 0.140469 APEX 0.25 0.625 0.234531 RAD 0.0078125 + txt795 +TEXDEF txt796 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.625 0.25 RAD 0.03125 + txt796 +TEXDEF txt797 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.625 0.25 APEX 0.359531 0.625 0.25 RAD 0.0078125 + txt797 +TEXDEF txt798 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.640469 0.25 APEX 0.25 0.734531 0.25 RAD 0.0078125 + txt798 +TEXDEF txt799 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.625 0.265469 APEX 0.25 0.625 0.359531 RAD 0.0078125 + txt799 +TEXDEF txt800 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.625 0.375 RAD 0.03125 + txt800 +TEXDEF txt801 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.625 0.375 APEX 0.359531 0.625 0.375 RAD 0.0078125 + txt801 +TEXDEF txt802 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.640469 0.375 APEX 0.25 0.734531 0.375 RAD 0.0078125 + txt802 +TEXDEF txt803 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.625 0.390469 APEX 0.25 0.625 0.484531 RAD 0.0078125 + txt803 +TEXDEF txt804 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.625 0.5 RAD 0.03125 + txt804 +TEXDEF txt805 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.625 0.5 APEX 0.359531 0.625 0.5 RAD 0.0078125 + txt805 +TEXDEF txt806 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.640469 0.5 APEX 0.25 0.734531 0.5 RAD 0.0078125 + txt806 +TEXDEF txt807 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.625 0.515469 APEX 0.25 0.625 0.609531 RAD 0.0078125 + txt807 +TEXDEF txt808 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.625 0.625 RAD 0.03125 + txt808 +TEXDEF txt809 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.625 0.625 APEX 0.359531 0.625 0.625 RAD 0.0078125 + txt809 +TEXDEF txt810 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.640469 0.625 APEX 0.25 0.734531 0.625 RAD 0.0078125 + txt810 +TEXDEF txt811 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.625 0.640469 APEX 0.25 0.625 0.734531 RAD 0.0078125 + txt811 +TEXDEF txt812 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.625 0.75 RAD 0.03125 + txt812 +TEXDEF txt813 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.625 0.75 APEX 0.359531 0.625 0.75 RAD 0.0078125 + txt813 +TEXDEF txt814 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.640469 0.75 APEX 0.25 0.734531 0.75 RAD 0.0078125 + txt814 +TEXDEF txt815 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.625 0.765469 APEX 0.25 0.625 0.859531 RAD 0.0078125 + txt815 +TEXDEF txt816 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.625 0.875 RAD 0.03125 + txt816 +TEXDEF txt817 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.625 0.875 APEX 0.359531 0.625 0.875 RAD 0.0078125 + txt817 +TEXDEF txt818 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.640469 0.875 APEX 0.25 0.734531 0.875 RAD 0.0078125 + txt818 +TEXDEF txt819 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.625 0.890469 APEX 0.25 0.625 0.984531 RAD 0.0078125 + txt819 +TEXDEF txt820 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.625 1 RAD 0.03125 + txt820 +TEXDEF txt821 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.625 1 APEX 0.359531 0.625 1 RAD 0.0078125 + txt821 +TEXDEF txt822 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.640469 1 APEX 0.25 0.734531 1 RAD 0.0078125 + txt822 +TEXDEF txt823 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.75 0 RAD 0.03125 + txt823 +TEXDEF txt824 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.75 0 APEX 0.359531 0.75 0 RAD 0.0078125 + txt824 +TEXDEF txt825 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.765469 0 APEX 0.25 0.859531 0 RAD 0.0078125 + txt825 +TEXDEF txt826 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.75 0.0154687 APEX 0.25 0.75 0.109531 RAD 0.0078125 + txt826 +TEXDEF txt827 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.75 0.125 RAD 0.03125 + txt827 +TEXDEF txt828 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.75 0.125 APEX 0.359531 0.75 0.125 RAD 0.0078125 + txt828 +TEXDEF txt829 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.765469 0.125 APEX 0.25 0.859531 0.125 RAD 0.0078125 + txt829 +TEXDEF txt830 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.75 0.140469 APEX 0.25 0.75 0.234531 RAD 0.0078125 + txt830 +TEXDEF txt831 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.75 0.25 RAD 0.03125 + txt831 +TEXDEF txt832 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.75 0.25 APEX 0.359531 0.75 0.25 RAD 0.0078125 + txt832 +TEXDEF txt833 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.765469 0.25 APEX 0.25 0.859531 0.25 RAD 0.0078125 + txt833 +TEXDEF txt834 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.75 0.265469 APEX 0.25 0.75 0.359531 RAD 0.0078125 + txt834 +TEXDEF txt835 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.75 0.375 RAD 0.03125 + txt835 +TEXDEF txt836 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.75 0.375 APEX 0.359531 0.75 0.375 RAD 0.0078125 + txt836 +TEXDEF txt837 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.765469 0.375 APEX 0.25 0.859531 0.375 RAD 0.0078125 + txt837 +TEXDEF txt838 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.75 0.390469 APEX 0.25 0.75 0.484531 RAD 0.0078125 + txt838 +TEXDEF txt839 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.75 0.5 RAD 0.03125 + txt839 +TEXDEF txt840 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.75 0.5 APEX 0.359531 0.75 0.5 RAD 0.0078125 + txt840 +TEXDEF txt841 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.765469 0.5 APEX 0.25 0.859531 0.5 RAD 0.0078125 + txt841 +TEXDEF txt842 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.75 0.515469 APEX 0.25 0.75 0.609531 RAD 0.0078125 + txt842 +TEXDEF txt843 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.75 0.625 RAD 0.03125 + txt843 +TEXDEF txt844 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.75 0.625 APEX 0.359531 0.75 0.625 RAD 0.0078125 + txt844 +TEXDEF txt845 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.765469 0.625 APEX 0.25 0.859531 0.625 RAD 0.0078125 + txt845 +TEXDEF txt846 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.75 0.640469 APEX 0.25 0.75 0.734531 RAD 0.0078125 + txt846 +TEXDEF txt847 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.75 0.75 RAD 0.03125 + txt847 +TEXDEF txt848 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.75 0.75 APEX 0.359531 0.75 0.75 RAD 0.0078125 + txt848 +TEXDEF txt849 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.765469 0.75 APEX 0.25 0.859531 0.75 RAD 0.0078125 + txt849 +TEXDEF txt850 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.75 0.765469 APEX 0.25 0.75 0.859531 RAD 0.0078125 + txt850 +TEXDEF txt851 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.75 0.875 RAD 0.03125 + txt851 +TEXDEF txt852 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.75 0.875 APEX 0.359531 0.75 0.875 RAD 0.0078125 + txt852 +TEXDEF txt853 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.765469 0.875 APEX 0.25 0.859531 0.875 RAD 0.0078125 + txt853 +TEXDEF txt854 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.75 0.890469 APEX 0.25 0.75 0.984531 RAD 0.0078125 + txt854 +TEXDEF txt855 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.75 1 RAD 0.03125 + txt855 +TEXDEF txt856 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.75 1 APEX 0.359531 0.75 1 RAD 0.0078125 + txt856 +TEXDEF txt857 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.765469 1 APEX 0.25 0.859531 1 RAD 0.0078125 + txt857 +TEXDEF txt858 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.875 0 RAD 0.03125 + txt858 +TEXDEF txt859 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.875 0 APEX 0.359531 0.875 0 RAD 0.0078125 + txt859 +TEXDEF txt860 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.890469 0 APEX 0.25 0.984531 0 RAD 0.0078125 + txt860 +TEXDEF txt861 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.875 0.0154687 APEX 0.25 0.875 0.109531 RAD 0.0078125 + txt861 +TEXDEF txt862 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.875 0.125 RAD 0.03125 + txt862 +TEXDEF txt863 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.875 0.125 APEX 0.359531 0.875 0.125 RAD 0.0078125 + txt863 +TEXDEF txt864 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.890469 0.125 APEX 0.25 0.984531 0.125 RAD 0.0078125 + txt864 +TEXDEF txt865 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.875 0.140469 APEX 0.25 0.875 0.234531 RAD 0.0078125 + txt865 +TEXDEF txt866 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.875 0.25 RAD 0.03125 + txt866 +TEXDEF txt867 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.875 0.25 APEX 0.359531 0.875 0.25 RAD 0.0078125 + txt867 +TEXDEF txt868 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.890469 0.25 APEX 0.25 0.984531 0.25 RAD 0.0078125 + txt868 +TEXDEF txt869 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.875 0.265469 APEX 0.25 0.875 0.359531 RAD 0.0078125 + txt869 +TEXDEF txt870 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.875 0.375 RAD 0.03125 + txt870 +TEXDEF txt871 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.875 0.375 APEX 0.359531 0.875 0.375 RAD 0.0078125 + txt871 +TEXDEF txt872 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.890469 0.375 APEX 0.25 0.984531 0.375 RAD 0.0078125 + txt872 +TEXDEF txt873 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.875 0.390469 APEX 0.25 0.875 0.484531 RAD 0.0078125 + txt873 +TEXDEF txt874 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.875 0.5 RAD 0.03125 + txt874 +TEXDEF txt875 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.875 0.5 APEX 0.359531 0.875 0.5 RAD 0.0078125 + txt875 +TEXDEF txt876 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.890469 0.5 APEX 0.25 0.984531 0.5 RAD 0.0078125 + txt876 +TEXDEF txt877 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.875 0.515469 APEX 0.25 0.875 0.609531 RAD 0.0078125 + txt877 +TEXDEF txt878 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.875 0.625 RAD 0.03125 + txt878 +TEXDEF txt879 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.875 0.625 APEX 0.359531 0.875 0.625 RAD 0.0078125 + txt879 +TEXDEF txt880 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.890469 0.625 APEX 0.25 0.984531 0.625 RAD 0.0078125 + txt880 +TEXDEF txt881 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.875 0.640469 APEX 0.25 0.875 0.734531 RAD 0.0078125 + txt881 +TEXDEF txt882 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.875 0.75 RAD 0.03125 + txt882 +TEXDEF txt883 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.875 0.75 APEX 0.359531 0.875 0.75 RAD 0.0078125 + txt883 +TEXDEF txt884 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.890469 0.75 APEX 0.25 0.984531 0.75 RAD 0.0078125 + txt884 +TEXDEF txt885 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.875 0.765469 APEX 0.25 0.875 0.859531 RAD 0.0078125 + txt885 +TEXDEF txt886 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.875 0.875 RAD 0.03125 + txt886 +TEXDEF txt887 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.875 0.875 APEX 0.359531 0.875 0.875 RAD 0.0078125 + txt887 +TEXDEF txt888 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.890469 0.875 APEX 0.25 0.984531 0.875 RAD 0.0078125 + txt888 +TEXDEF txt889 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.875 0.890469 APEX 0.25 0.875 0.984531 RAD 0.0078125 + txt889 +TEXDEF txt890 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 0.875 1 RAD 0.03125 + txt890 +TEXDEF txt891 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 0.875 1 APEX 0.359531 0.875 1 RAD 0.0078125 + txt891 +TEXDEF txt892 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 0.890469 1 APEX 0.25 0.984531 1 RAD 0.0078125 + txt892 +TEXDEF txt893 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 1 0 RAD 0.03125 + txt893 +TEXDEF txt894 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 1 0 APEX 0.359531 1 0 RAD 0.0078125 + txt894 +TEXDEF txt895 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 1 0.0154687 APEX 0.25 1 0.109531 RAD 0.0078125 + txt895 +TEXDEF txt896 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 1 0.125 RAD 0.03125 + txt896 +TEXDEF txt897 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 1 0.125 APEX 0.359531 1 0.125 RAD 0.0078125 + txt897 +TEXDEF txt898 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 1 0.140469 APEX 0.25 1 0.234531 RAD 0.0078125 + txt898 +TEXDEF txt899 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 1 0.25 RAD 0.03125 + txt899 +TEXDEF txt900 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 1 0.25 APEX 0.359531 1 0.25 RAD 0.0078125 + txt900 +TEXDEF txt901 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 1 0.265469 APEX 0.25 1 0.359531 RAD 0.0078125 + txt901 +TEXDEF txt902 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 1 0.375 RAD 0.03125 + txt902 +TEXDEF txt903 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 1 0.375 APEX 0.359531 1 0.375 RAD 0.0078125 + txt903 +TEXDEF txt904 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 1 0.390469 APEX 0.25 1 0.484531 RAD 0.0078125 + txt904 +TEXDEF txt905 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 1 0.5 RAD 0.03125 + txt905 +TEXDEF txt906 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 1 0.5 APEX 0.359531 1 0.5 RAD 0.0078125 + txt906 +TEXDEF txt907 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 1 0.515469 APEX 0.25 1 0.609531 RAD 0.0078125 + txt907 +TEXDEF txt908 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 1 0.625 RAD 0.03125 + txt908 +TEXDEF txt909 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 1 0.625 APEX 0.359531 1 0.625 RAD 0.0078125 + txt909 +TEXDEF txt910 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 1 0.640469 APEX 0.25 1 0.734531 RAD 0.0078125 + txt910 +TEXDEF txt911 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 1 0.75 RAD 0.03125 + txt911 +TEXDEF txt912 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 1 0.75 APEX 0.359531 1 0.75 RAD 0.0078125 + txt912 +TEXDEF txt913 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 1 0.765469 APEX 0.25 1 0.859531 RAD 0.0078125 + txt913 +TEXDEF txt914 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 1 0.875 RAD 0.03125 + txt914 +TEXDEF txt915 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 1 0.875 APEX 0.359531 1 0.875 RAD 0.0078125 + txt915 +TEXDEF txt916 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.25 1 0.890469 APEX 0.25 1 0.984531 RAD 0.0078125 + txt916 +TEXDEF txt917 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.25 1 1 RAD 0.03125 + txt917 +TEXDEF txt918 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.265469 1 1 APEX 0.359531 1 1 RAD 0.0078125 + txt918 +TEXDEF txt919 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0 0 RAD 0.03125 + txt919 +TEXDEF txt920 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0 0 APEX 0.484531 0 0 RAD 0.0078125 + txt920 +TEXDEF txt921 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.0154687 0 APEX 0.375 0.109531 0 RAD 0.0078125 + txt921 +TEXDEF txt922 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0 0.0154687 APEX 0.375 0 0.109531 RAD 0.0078125 + txt922 +TEXDEF txt923 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0 0.125 RAD 0.03125 + txt923 +TEXDEF txt924 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0 0.125 APEX 0.484531 0 0.125 RAD 0.0078125 + txt924 +TEXDEF txt925 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.0154687 0.125 APEX 0.375 0.109531 0.125 RAD 0.0078125 + txt925 +TEXDEF txt926 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0 0.140469 APEX 0.375 0 0.234531 RAD 0.0078125 + txt926 +TEXDEF txt927 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0 0.25 RAD 0.03125 + txt927 +TEXDEF txt928 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0 0.25 APEX 0.484531 0 0.25 RAD 0.0078125 + txt928 +TEXDEF txt929 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.0154687 0.25 APEX 0.375 0.109531 0.25 RAD 0.0078125 + txt929 +TEXDEF txt930 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0 0.265469 APEX 0.375 0 0.359531 RAD 0.0078125 + txt930 +TEXDEF txt931 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0 0.375 RAD 0.03125 + txt931 +TEXDEF txt932 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0 0.375 APEX 0.484531 0 0.375 RAD 0.0078125 + txt932 +TEXDEF txt933 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.0154687 0.375 APEX 0.375 0.109531 0.375 RAD 0.0078125 + txt933 +TEXDEF txt934 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0 0.390469 APEX 0.375 0 0.484531 RAD 0.0078125 + txt934 +TEXDEF txt935 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0 0.5 RAD 0.03125 + txt935 +TEXDEF txt936 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0 0.5 APEX 0.484531 0 0.5 RAD 0.0078125 + txt936 +TEXDEF txt937 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.0154687 0.5 APEX 0.375 0.109531 0.5 RAD 0.0078125 + txt937 +TEXDEF txt938 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0 0.515469 APEX 0.375 0 0.609531 RAD 0.0078125 + txt938 +TEXDEF txt939 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0 0.625 RAD 0.03125 + txt939 +TEXDEF txt940 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0 0.625 APEX 0.484531 0 0.625 RAD 0.0078125 + txt940 +TEXDEF txt941 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.0154687 0.625 APEX 0.375 0.109531 0.625 RAD 0.0078125 + txt941 +TEXDEF txt942 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0 0.640469 APEX 0.375 0 0.734531 RAD 0.0078125 + txt942 +TEXDEF txt943 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0 0.75 RAD 0.03125 + txt943 +TEXDEF txt944 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0 0.75 APEX 0.484531 0 0.75 RAD 0.0078125 + txt944 +TEXDEF txt945 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.0154687 0.75 APEX 0.375 0.109531 0.75 RAD 0.0078125 + txt945 +TEXDEF txt946 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0 0.765469 APEX 0.375 0 0.859531 RAD 0.0078125 + txt946 +TEXDEF txt947 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0 0.875 RAD 0.03125 + txt947 +TEXDEF txt948 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0 0.875 APEX 0.484531 0 0.875 RAD 0.0078125 + txt948 +TEXDEF txt949 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.0154687 0.875 APEX 0.375 0.109531 0.875 RAD 0.0078125 + txt949 +TEXDEF txt950 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0 0.890469 APEX 0.375 0 0.984531 RAD 0.0078125 + txt950 +TEXDEF txt951 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0 1 RAD 0.03125 + txt951 +TEXDEF txt952 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0 1 APEX 0.484531 0 1 RAD 0.0078125 + txt952 +TEXDEF txt953 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.0154687 1 APEX 0.375 0.109531 1 RAD 0.0078125 + txt953 +TEXDEF txt954 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.125 0 RAD 0.03125 + txt954 +TEXDEF txt955 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.125 0 APEX 0.484531 0.125 0 RAD 0.0078125 + txt955 +TEXDEF txt956 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.140469 0 APEX 0.375 0.234531 0 RAD 0.0078125 + txt956 +TEXDEF txt957 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.125 0.0154687 APEX 0.375 0.125 0.109531 RAD 0.0078125 + txt957 +TEXDEF txt958 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.125 0.125 RAD 0.03125 + txt958 +TEXDEF txt959 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.125 0.125 APEX 0.484531 0.125 0.125 RAD 0.0078125 + txt959 +TEXDEF txt960 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.140469 0.125 APEX 0.375 0.234531 0.125 RAD 0.0078125 + txt960 +TEXDEF txt961 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.125 0.140469 APEX 0.375 0.125 0.234531 RAD 0.0078125 + txt961 +TEXDEF txt962 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.125 0.25 RAD 0.03125 + txt962 +TEXDEF txt963 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.125 0.25 APEX 0.484531 0.125 0.25 RAD 0.0078125 + txt963 +TEXDEF txt964 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.140469 0.25 APEX 0.375 0.234531 0.25 RAD 0.0078125 + txt964 +TEXDEF txt965 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.125 0.265469 APEX 0.375 0.125 0.359531 RAD 0.0078125 + txt965 +TEXDEF txt966 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.125 0.375 RAD 0.03125 + txt966 +TEXDEF txt967 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.125 0.375 APEX 0.484531 0.125 0.375 RAD 0.0078125 + txt967 +TEXDEF txt968 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.140469 0.375 APEX 0.375 0.234531 0.375 RAD 0.0078125 + txt968 +TEXDEF txt969 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.125 0.390469 APEX 0.375 0.125 0.484531 RAD 0.0078125 + txt969 +TEXDEF txt970 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.125 0.5 RAD 0.03125 + txt970 +TEXDEF txt971 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.125 0.5 APEX 0.484531 0.125 0.5 RAD 0.0078125 + txt971 +TEXDEF txt972 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.140469 0.5 APEX 0.375 0.234531 0.5 RAD 0.0078125 + txt972 +TEXDEF txt973 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.125 0.515469 APEX 0.375 0.125 0.609531 RAD 0.0078125 + txt973 +TEXDEF txt974 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.125 0.625 RAD 0.03125 + txt974 +TEXDEF txt975 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.125 0.625 APEX 0.484531 0.125 0.625 RAD 0.0078125 + txt975 +TEXDEF txt976 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.140469 0.625 APEX 0.375 0.234531 0.625 RAD 0.0078125 + txt976 +TEXDEF txt977 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.125 0.640469 APEX 0.375 0.125 0.734531 RAD 0.0078125 + txt977 +TEXDEF txt978 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.125 0.75 RAD 0.03125 + txt978 +TEXDEF txt979 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.125 0.75 APEX 0.484531 0.125 0.75 RAD 0.0078125 + txt979 +TEXDEF txt980 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.140469 0.75 APEX 0.375 0.234531 0.75 RAD 0.0078125 + txt980 +TEXDEF txt981 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.125 0.765469 APEX 0.375 0.125 0.859531 RAD 0.0078125 + txt981 +TEXDEF txt982 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.125 0.875 RAD 0.03125 + txt982 +TEXDEF txt983 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.125 0.875 APEX 0.484531 0.125 0.875 RAD 0.0078125 + txt983 +TEXDEF txt984 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.140469 0.875 APEX 0.375 0.234531 0.875 RAD 0.0078125 + txt984 +TEXDEF txt985 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.125 0.890469 APEX 0.375 0.125 0.984531 RAD 0.0078125 + txt985 +TEXDEF txt986 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.125 1 RAD 0.03125 + txt986 +TEXDEF txt987 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.125 1 APEX 0.484531 0.125 1 RAD 0.0078125 + txt987 +TEXDEF txt988 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.140469 1 APEX 0.375 0.234531 1 RAD 0.0078125 + txt988 +TEXDEF txt989 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.25 0 RAD 0.03125 + txt989 +TEXDEF txt990 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.25 0 APEX 0.484531 0.25 0 RAD 0.0078125 + txt990 +TEXDEF txt991 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.265469 0 APEX 0.375 0.359531 0 RAD 0.0078125 + txt991 +TEXDEF txt992 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.25 0.0154687 APEX 0.375 0.25 0.109531 RAD 0.0078125 + txt992 +TEXDEF txt993 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.25 0.125 RAD 0.03125 + txt993 +TEXDEF txt994 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.25 0.125 APEX 0.484531 0.25 0.125 RAD 0.0078125 + txt994 +TEXDEF txt995 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.265469 0.125 APEX 0.375 0.359531 0.125 RAD 0.0078125 + txt995 +TEXDEF txt996 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.25 0.140469 APEX 0.375 0.25 0.234531 RAD 0.0078125 + txt996 +TEXDEF txt997 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.25 0.25 RAD 0.03125 + txt997 +TEXDEF txt998 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.25 0.25 APEX 0.484531 0.25 0.25 RAD 0.0078125 + txt998 +TEXDEF txt999 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.265469 0.25 APEX 0.375 0.359531 0.25 RAD 0.0078125 + txt999 +TEXDEF txt100 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.25 0.265469 APEX 0.375 0.25 0.359531 RAD 0.0078125 + txt100 +TEXDEF txt100 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.25 0.375 RAD 0.03125 + txt100 +TEXDEF txt100 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.25 0.375 APEX 0.484531 0.25 0.375 RAD 0.0078125 + txt100 +TEXDEF txt100 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.265469 0.375 APEX 0.375 0.359531 0.375 RAD 0.0078125 + txt100 +TEXDEF txt100 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.25 0.390469 APEX 0.375 0.25 0.484531 RAD 0.0078125 + txt100 +TEXDEF txt100 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.25 0.5 RAD 0.03125 + txt100 +TEXDEF txt100 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.25 0.5 APEX 0.484531 0.25 0.5 RAD 0.0078125 + txt100 +TEXDEF txt100 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.265469 0.5 APEX 0.375 0.359531 0.5 RAD 0.0078125 + txt100 +TEXDEF txt100 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.25 0.515469 APEX 0.375 0.25 0.609531 RAD 0.0078125 + txt100 +TEXDEF txt100 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.25 0.625 RAD 0.03125 + txt100 +TEXDEF txt101 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.25 0.625 APEX 0.484531 0.25 0.625 RAD 0.0078125 + txt101 +TEXDEF txt101 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.265469 0.625 APEX 0.375 0.359531 0.625 RAD 0.0078125 + txt101 +TEXDEF txt101 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.25 0.640469 APEX 0.375 0.25 0.734531 RAD 0.0078125 + txt101 +TEXDEF txt101 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.25 0.75 RAD 0.03125 + txt101 +TEXDEF txt101 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.25 0.75 APEX 0.484531 0.25 0.75 RAD 0.0078125 + txt101 +TEXDEF txt101 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.265469 0.75 APEX 0.375 0.359531 0.75 RAD 0.0078125 + txt101 +TEXDEF txt101 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.25 0.765469 APEX 0.375 0.25 0.859531 RAD 0.0078125 + txt101 +TEXDEF txt101 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.25 0.875 RAD 0.03125 + txt101 +TEXDEF txt101 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.25 0.875 APEX 0.484531 0.25 0.875 RAD 0.0078125 + txt101 +TEXDEF txt101 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.265469 0.875 APEX 0.375 0.359531 0.875 RAD 0.0078125 + txt101 +TEXDEF txt102 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.25 0.890469 APEX 0.375 0.25 0.984531 RAD 0.0078125 + txt102 +TEXDEF txt102 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.25 1 RAD 0.03125 + txt102 +TEXDEF txt102 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.25 1 APEX 0.484531 0.25 1 RAD 0.0078125 + txt102 +TEXDEF txt102 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.265469 1 APEX 0.375 0.359531 1 RAD 0.0078125 + txt102 +TEXDEF txt102 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.375 0 RAD 0.03125 + txt102 +TEXDEF txt102 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.375 0 APEX 0.484531 0.375 0 RAD 0.0078125 + txt102 +TEXDEF txt102 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.390469 0 APEX 0.375 0.484531 0 RAD 0.0078125 + txt102 +TEXDEF txt102 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.375 0.0154687 APEX 0.375 0.375 0.109531 RAD 0.0078125 + txt102 +TEXDEF txt102 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.375 0.125 RAD 0.03125 + txt102 +TEXDEF txt102 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.375 0.125 APEX 0.484531 0.375 0.125 RAD 0.0078125 + txt102 +TEXDEF txt103 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.390469 0.125 APEX 0.375 0.484531 0.125 RAD 0.0078125 + txt103 +TEXDEF txt103 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.375 0.140469 APEX 0.375 0.375 0.234531 RAD 0.0078125 + txt103 +TEXDEF txt103 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.375 0.25 RAD 0.03125 + txt103 +TEXDEF txt103 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.375 0.25 APEX 0.484531 0.375 0.25 RAD 0.0078125 + txt103 +TEXDEF txt103 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.390469 0.25 APEX 0.375 0.484531 0.25 RAD 0.0078125 + txt103 +TEXDEF txt103 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.375 0.265469 APEX 0.375 0.375 0.359531 RAD 0.0078125 + txt103 +TEXDEF txt103 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.375 0.375 RAD 0.03125 + txt103 +TEXDEF txt103 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.375 0.375 APEX 0.484531 0.375 0.375 RAD 0.0078125 + txt103 +TEXDEF txt103 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.390469 0.375 APEX 0.375 0.484531 0.375 RAD 0.0078125 + txt103 +TEXDEF txt103 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.375 0.390469 APEX 0.375 0.375 0.484531 RAD 0.0078125 + txt103 +TEXDEF txt104 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.375 0.5 RAD 0.03125 + txt104 +TEXDEF txt104 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.375 0.5 APEX 0.484531 0.375 0.5 RAD 0.0078125 + txt104 +TEXDEF txt104 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.390469 0.5 APEX 0.375 0.484531 0.5 RAD 0.0078125 + txt104 +TEXDEF txt104 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.375 0.515469 APEX 0.375 0.375 0.609531 RAD 0.0078125 + txt104 +TEXDEF txt104 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.375 0.625 RAD 0.03125 + txt104 +TEXDEF txt104 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.375 0.625 APEX 0.484531 0.375 0.625 RAD 0.0078125 + txt104 +TEXDEF txt104 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.390469 0.625 APEX 0.375 0.484531 0.625 RAD 0.0078125 + txt104 +TEXDEF txt104 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.375 0.640469 APEX 0.375 0.375 0.734531 RAD 0.0078125 + txt104 +TEXDEF txt104 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.375 0.75 RAD 0.03125 + txt104 +TEXDEF txt104 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.375 0.75 APEX 0.484531 0.375 0.75 RAD 0.0078125 + txt104 +TEXDEF txt105 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.390469 0.75 APEX 0.375 0.484531 0.75 RAD 0.0078125 + txt105 +TEXDEF txt105 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.375 0.765469 APEX 0.375 0.375 0.859531 RAD 0.0078125 + txt105 +TEXDEF txt105 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.375 0.875 RAD 0.03125 + txt105 +TEXDEF txt105 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.375 0.875 APEX 0.484531 0.375 0.875 RAD 0.0078125 + txt105 +TEXDEF txt105 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.390469 0.875 APEX 0.375 0.484531 0.875 RAD 0.0078125 + txt105 +TEXDEF txt105 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.375 0.890469 APEX 0.375 0.375 0.984531 RAD 0.0078125 + txt105 +TEXDEF txt105 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.375 1 RAD 0.03125 + txt105 +TEXDEF txt105 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.375 1 APEX 0.484531 0.375 1 RAD 0.0078125 + txt105 +TEXDEF txt105 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.390469 1 APEX 0.375 0.484531 1 RAD 0.0078125 + txt105 +TEXDEF txt105 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.5 0 RAD 0.03125 + txt105 +TEXDEF txt106 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.5 0 APEX 0.484531 0.5 0 RAD 0.0078125 + txt106 +TEXDEF txt106 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.515469 0 APEX 0.375 0.609531 0 RAD 0.0078125 + txt106 +TEXDEF txt106 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.5 0.0154687 APEX 0.375 0.5 0.109531 RAD 0.0078125 + txt106 +TEXDEF txt106 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.5 0.125 RAD 0.03125 + txt106 +TEXDEF txt106 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.5 0.125 APEX 0.484531 0.5 0.125 RAD 0.0078125 + txt106 +TEXDEF txt106 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.515469 0.125 APEX 0.375 0.609531 0.125 RAD 0.0078125 + txt106 +TEXDEF txt106 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.5 0.140469 APEX 0.375 0.5 0.234531 RAD 0.0078125 + txt106 +TEXDEF txt106 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.5 0.25 RAD 0.03125 + txt106 +TEXDEF txt106 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.5 0.25 APEX 0.484531 0.5 0.25 RAD 0.0078125 + txt106 +TEXDEF txt106 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.515469 0.25 APEX 0.375 0.609531 0.25 RAD 0.0078125 + txt106 +TEXDEF txt107 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.5 0.265469 APEX 0.375 0.5 0.359531 RAD 0.0078125 + txt107 +TEXDEF txt107 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.5 0.375 RAD 0.03125 + txt107 +TEXDEF txt107 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.5 0.375 APEX 0.484531 0.5 0.375 RAD 0.0078125 + txt107 +TEXDEF txt107 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.515469 0.375 APEX 0.375 0.609531 0.375 RAD 0.0078125 + txt107 +TEXDEF txt107 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.5 0.390469 APEX 0.375 0.5 0.484531 RAD 0.0078125 + txt107 +TEXDEF txt107 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.5 0.5 RAD 0.03125 + txt107 +TEXDEF txt107 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.5 0.5 APEX 0.484531 0.5 0.5 RAD 0.0078125 + txt107 +TEXDEF txt107 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.515469 0.5 APEX 0.375 0.609531 0.5 RAD 0.0078125 + txt107 +TEXDEF txt107 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.5 0.515469 APEX 0.375 0.5 0.609531 RAD 0.0078125 + txt107 +TEXDEF txt107 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.5 0.625 RAD 0.03125 + txt107 +TEXDEF txt108 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.5 0.625 APEX 0.484531 0.5 0.625 RAD 0.0078125 + txt108 +TEXDEF txt108 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.515469 0.625 APEX 0.375 0.609531 0.625 RAD 0.0078125 + txt108 +TEXDEF txt108 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.5 0.640469 APEX 0.375 0.5 0.734531 RAD 0.0078125 + txt108 +TEXDEF txt108 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.5 0.75 RAD 0.03125 + txt108 +TEXDEF txt108 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.5 0.75 APEX 0.484531 0.5 0.75 RAD 0.0078125 + txt108 +TEXDEF txt108 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.515469 0.75 APEX 0.375 0.609531 0.75 RAD 0.0078125 + txt108 +TEXDEF txt108 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.5 0.765469 APEX 0.375 0.5 0.859531 RAD 0.0078125 + txt108 +TEXDEF txt108 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.5 0.875 RAD 0.03125 + txt108 +TEXDEF txt108 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.5 0.875 APEX 0.484531 0.5 0.875 RAD 0.0078125 + txt108 +TEXDEF txt108 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.515469 0.875 APEX 0.375 0.609531 0.875 RAD 0.0078125 + txt108 +TEXDEF txt109 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.5 0.890469 APEX 0.375 0.5 0.984531 RAD 0.0078125 + txt109 +TEXDEF txt109 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.5 1 RAD 0.03125 + txt109 +TEXDEF txt109 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.5 1 APEX 0.484531 0.5 1 RAD 0.0078125 + txt109 +TEXDEF txt109 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.515469 1 APEX 0.375 0.609531 1 RAD 0.0078125 + txt109 +TEXDEF txt109 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.625 0 RAD 0.03125 + txt109 +TEXDEF txt109 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.625 0 APEX 0.484531 0.625 0 RAD 0.0078125 + txt109 +TEXDEF txt109 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.640469 0 APEX 0.375 0.734531 0 RAD 0.0078125 + txt109 +TEXDEF txt109 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.625 0.0154687 APEX 0.375 0.625 0.109531 RAD 0.0078125 + txt109 +TEXDEF txt109 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.625 0.125 RAD 0.03125 + txt109 +TEXDEF txt109 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.625 0.125 APEX 0.484531 0.625 0.125 RAD 0.0078125 + txt109 +TEXDEF txt110 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.640469 0.125 APEX 0.375 0.734531 0.125 RAD 0.0078125 + txt110 +TEXDEF txt110 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.625 0.140469 APEX 0.375 0.625 0.234531 RAD 0.0078125 + txt110 +TEXDEF txt110 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.625 0.25 RAD 0.03125 + txt110 +TEXDEF txt110 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.625 0.25 APEX 0.484531 0.625 0.25 RAD 0.0078125 + txt110 +TEXDEF txt110 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.640469 0.25 APEX 0.375 0.734531 0.25 RAD 0.0078125 + txt110 +TEXDEF txt110 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.625 0.265469 APEX 0.375 0.625 0.359531 RAD 0.0078125 + txt110 +TEXDEF txt110 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.625 0.375 RAD 0.03125 + txt110 +TEXDEF txt110 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.625 0.375 APEX 0.484531 0.625 0.375 RAD 0.0078125 + txt110 +TEXDEF txt110 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.640469 0.375 APEX 0.375 0.734531 0.375 RAD 0.0078125 + txt110 +TEXDEF txt110 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.625 0.390469 APEX 0.375 0.625 0.484531 RAD 0.0078125 + txt110 +TEXDEF txt111 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.625 0.5 RAD 0.03125 + txt111 +TEXDEF txt111 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.625 0.5 APEX 0.484531 0.625 0.5 RAD 0.0078125 + txt111 +TEXDEF txt111 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.640469 0.5 APEX 0.375 0.734531 0.5 RAD 0.0078125 + txt111 +TEXDEF txt111 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.625 0.515469 APEX 0.375 0.625 0.609531 RAD 0.0078125 + txt111 +TEXDEF txt111 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.625 0.625 RAD 0.03125 + txt111 +TEXDEF txt111 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.625 0.625 APEX 0.484531 0.625 0.625 RAD 0.0078125 + txt111 +TEXDEF txt111 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.640469 0.625 APEX 0.375 0.734531 0.625 RAD 0.0078125 + txt111 +TEXDEF txt111 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.625 0.640469 APEX 0.375 0.625 0.734531 RAD 0.0078125 + txt111 +TEXDEF txt111 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.625 0.75 RAD 0.03125 + txt111 +TEXDEF txt111 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.625 0.75 APEX 0.484531 0.625 0.75 RAD 0.0078125 + txt111 +TEXDEF txt112 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.640469 0.75 APEX 0.375 0.734531 0.75 RAD 0.0078125 + txt112 +TEXDEF txt112 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.625 0.765469 APEX 0.375 0.625 0.859531 RAD 0.0078125 + txt112 +TEXDEF txt112 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.625 0.875 RAD 0.03125 + txt112 +TEXDEF txt112 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.625 0.875 APEX 0.484531 0.625 0.875 RAD 0.0078125 + txt112 +TEXDEF txt112 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.640469 0.875 APEX 0.375 0.734531 0.875 RAD 0.0078125 + txt112 +TEXDEF txt112 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.625 0.890469 APEX 0.375 0.625 0.984531 RAD 0.0078125 + txt112 +TEXDEF txt112 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.625 1 RAD 0.03125 + txt112 +TEXDEF txt112 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.625 1 APEX 0.484531 0.625 1 RAD 0.0078125 + txt112 +TEXDEF txt112 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.640469 1 APEX 0.375 0.734531 1 RAD 0.0078125 + txt112 +TEXDEF txt112 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.75 0 RAD 0.03125 + txt112 +TEXDEF txt113 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.75 0 APEX 0.484531 0.75 0 RAD 0.0078125 + txt113 +TEXDEF txt113 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.765469 0 APEX 0.375 0.859531 0 RAD 0.0078125 + txt113 +TEXDEF txt113 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.75 0.0154687 APEX 0.375 0.75 0.109531 RAD 0.0078125 + txt113 +TEXDEF txt113 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.75 0.125 RAD 0.03125 + txt113 +TEXDEF txt113 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.75 0.125 APEX 0.484531 0.75 0.125 RAD 0.0078125 + txt113 +TEXDEF txt113 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.765469 0.125 APEX 0.375 0.859531 0.125 RAD 0.0078125 + txt113 +TEXDEF txt113 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.75 0.140469 APEX 0.375 0.75 0.234531 RAD 0.0078125 + txt113 +TEXDEF txt113 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.75 0.25 RAD 0.03125 + txt113 +TEXDEF txt113 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.75 0.25 APEX 0.484531 0.75 0.25 RAD 0.0078125 + txt113 +TEXDEF txt113 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.765469 0.25 APEX 0.375 0.859531 0.25 RAD 0.0078125 + txt113 +TEXDEF txt114 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.75 0.265469 APEX 0.375 0.75 0.359531 RAD 0.0078125 + txt114 +TEXDEF txt114 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.75 0.375 RAD 0.03125 + txt114 +TEXDEF txt114 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.75 0.375 APEX 0.484531 0.75 0.375 RAD 0.0078125 + txt114 +TEXDEF txt114 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.765469 0.375 APEX 0.375 0.859531 0.375 RAD 0.0078125 + txt114 +TEXDEF txt114 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.75 0.390469 APEX 0.375 0.75 0.484531 RAD 0.0078125 + txt114 +TEXDEF txt114 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.75 0.5 RAD 0.03125 + txt114 +TEXDEF txt114 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.75 0.5 APEX 0.484531 0.75 0.5 RAD 0.0078125 + txt114 +TEXDEF txt114 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.765469 0.5 APEX 0.375 0.859531 0.5 RAD 0.0078125 + txt114 +TEXDEF txt114 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.75 0.515469 APEX 0.375 0.75 0.609531 RAD 0.0078125 + txt114 +TEXDEF txt114 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.75 0.625 RAD 0.03125 + txt114 +TEXDEF txt115 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.75 0.625 APEX 0.484531 0.75 0.625 RAD 0.0078125 + txt115 +TEXDEF txt115 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.765469 0.625 APEX 0.375 0.859531 0.625 RAD 0.0078125 + txt115 +TEXDEF txt115 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.75 0.640469 APEX 0.375 0.75 0.734531 RAD 0.0078125 + txt115 +TEXDEF txt115 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.75 0.75 RAD 0.03125 + txt115 +TEXDEF txt115 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.75 0.75 APEX 0.484531 0.75 0.75 RAD 0.0078125 + txt115 +TEXDEF txt115 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.765469 0.75 APEX 0.375 0.859531 0.75 RAD 0.0078125 + txt115 +TEXDEF txt115 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.75 0.765469 APEX 0.375 0.75 0.859531 RAD 0.0078125 + txt115 +TEXDEF txt115 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.75 0.875 RAD 0.03125 + txt115 +TEXDEF txt115 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.75 0.875 APEX 0.484531 0.75 0.875 RAD 0.0078125 + txt115 +TEXDEF txt115 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.765469 0.875 APEX 0.375 0.859531 0.875 RAD 0.0078125 + txt115 +TEXDEF txt116 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.75 0.890469 APEX 0.375 0.75 0.984531 RAD 0.0078125 + txt116 +TEXDEF txt116 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.75 1 RAD 0.03125 + txt116 +TEXDEF txt116 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.75 1 APEX 0.484531 0.75 1 RAD 0.0078125 + txt116 +TEXDEF txt116 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.765469 1 APEX 0.375 0.859531 1 RAD 0.0078125 + txt116 +TEXDEF txt116 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.875 0 RAD 0.03125 + txt116 +TEXDEF txt116 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.875 0 APEX 0.484531 0.875 0 RAD 0.0078125 + txt116 +TEXDEF txt116 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.890469 0 APEX 0.375 0.984531 0 RAD 0.0078125 + txt116 +TEXDEF txt116 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.875 0.0154687 APEX 0.375 0.875 0.109531 RAD 0.0078125 + txt116 +TEXDEF txt116 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.875 0.125 RAD 0.03125 + txt116 +TEXDEF txt116 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.875 0.125 APEX 0.484531 0.875 0.125 RAD 0.0078125 + txt116 +TEXDEF txt117 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.890469 0.125 APEX 0.375 0.984531 0.125 RAD 0.0078125 + txt117 +TEXDEF txt117 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.875 0.140469 APEX 0.375 0.875 0.234531 RAD 0.0078125 + txt117 +TEXDEF txt117 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.875 0.25 RAD 0.03125 + txt117 +TEXDEF txt117 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.875 0.25 APEX 0.484531 0.875 0.25 RAD 0.0078125 + txt117 +TEXDEF txt117 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.890469 0.25 APEX 0.375 0.984531 0.25 RAD 0.0078125 + txt117 +TEXDEF txt117 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.875 0.265469 APEX 0.375 0.875 0.359531 RAD 0.0078125 + txt117 +TEXDEF txt117 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.875 0.375 RAD 0.03125 + txt117 +TEXDEF txt117 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.875 0.375 APEX 0.484531 0.875 0.375 RAD 0.0078125 + txt117 +TEXDEF txt117 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.890469 0.375 APEX 0.375 0.984531 0.375 RAD 0.0078125 + txt117 +TEXDEF txt117 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.875 0.390469 APEX 0.375 0.875 0.484531 RAD 0.0078125 + txt117 +TEXDEF txt118 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.875 0.5 RAD 0.03125 + txt118 +TEXDEF txt118 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.875 0.5 APEX 0.484531 0.875 0.5 RAD 0.0078125 + txt118 +TEXDEF txt118 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.890469 0.5 APEX 0.375 0.984531 0.5 RAD 0.0078125 + txt118 +TEXDEF txt118 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.875 0.515469 APEX 0.375 0.875 0.609531 RAD 0.0078125 + txt118 +TEXDEF txt118 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.875 0.625 RAD 0.03125 + txt118 +TEXDEF txt118 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.875 0.625 APEX 0.484531 0.875 0.625 RAD 0.0078125 + txt118 +TEXDEF txt118 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.890469 0.625 APEX 0.375 0.984531 0.625 RAD 0.0078125 + txt118 +TEXDEF txt118 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.875 0.640469 APEX 0.375 0.875 0.734531 RAD 0.0078125 + txt118 +TEXDEF txt118 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.875 0.75 RAD 0.03125 + txt118 +TEXDEF txt118 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.875 0.75 APEX 0.484531 0.875 0.75 RAD 0.0078125 + txt118 +TEXDEF txt119 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.890469 0.75 APEX 0.375 0.984531 0.75 RAD 0.0078125 + txt119 +TEXDEF txt119 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.875 0.765469 APEX 0.375 0.875 0.859531 RAD 0.0078125 + txt119 +TEXDEF txt119 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.875 0.875 RAD 0.03125 + txt119 +TEXDEF txt119 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.875 0.875 APEX 0.484531 0.875 0.875 RAD 0.0078125 + txt119 +TEXDEF txt119 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.890469 0.875 APEX 0.375 0.984531 0.875 RAD 0.0078125 + txt119 +TEXDEF txt119 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.875 0.890469 APEX 0.375 0.875 0.984531 RAD 0.0078125 + txt119 +TEXDEF txt119 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 0.875 1 RAD 0.03125 + txt119 +TEXDEF txt119 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 0.875 1 APEX 0.484531 0.875 1 RAD 0.0078125 + txt119 +TEXDEF txt119 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 0.890469 1 APEX 0.375 0.984531 1 RAD 0.0078125 + txt119 +TEXDEF txt119 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 1 0 RAD 0.03125 + txt119 +TEXDEF txt120 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 1 0 APEX 0.484531 1 0 RAD 0.0078125 + txt120 +TEXDEF txt120 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 1 0.0154687 APEX 0.375 1 0.109531 RAD 0.0078125 + txt120 +TEXDEF txt120 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 1 0.125 RAD 0.03125 + txt120 +TEXDEF txt120 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 1 0.125 APEX 0.484531 1 0.125 RAD 0.0078125 + txt120 +TEXDEF txt120 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 1 0.140469 APEX 0.375 1 0.234531 RAD 0.0078125 + txt120 +TEXDEF txt120 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 1 0.25 RAD 0.03125 + txt120 +TEXDEF txt120 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 1 0.25 APEX 0.484531 1 0.25 RAD 0.0078125 + txt120 +TEXDEF txt120 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 1 0.265469 APEX 0.375 1 0.359531 RAD 0.0078125 + txt120 +TEXDEF txt120 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 1 0.375 RAD 0.03125 + txt120 +TEXDEF txt120 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 1 0.375 APEX 0.484531 1 0.375 RAD 0.0078125 + txt120 +TEXDEF txt121 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 1 0.390469 APEX 0.375 1 0.484531 RAD 0.0078125 + txt121 +TEXDEF txt121 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 1 0.5 RAD 0.03125 + txt121 +TEXDEF txt121 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 1 0.5 APEX 0.484531 1 0.5 RAD 0.0078125 + txt121 +TEXDEF txt121 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 1 0.515469 APEX 0.375 1 0.609531 RAD 0.0078125 + txt121 +TEXDEF txt121 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 1 0.625 RAD 0.03125 + txt121 +TEXDEF txt121 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 1 0.625 APEX 0.484531 1 0.625 RAD 0.0078125 + txt121 +TEXDEF txt121 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 1 0.640469 APEX 0.375 1 0.734531 RAD 0.0078125 + txt121 +TEXDEF txt121 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 1 0.75 RAD 0.03125 + txt121 +TEXDEF txt121 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 1 0.75 APEX 0.484531 1 0.75 RAD 0.0078125 + txt121 +TEXDEF txt121 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 1 0.765469 APEX 0.375 1 0.859531 RAD 0.0078125 + txt121 +TEXDEF txt122 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 1 0.875 RAD 0.03125 + txt122 +TEXDEF txt122 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 1 0.875 APEX 0.484531 1 0.875 RAD 0.0078125 + txt122 +TEXDEF txt122 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.375 1 0.890469 APEX 0.375 1 0.984531 RAD 0.0078125 + txt122 +TEXDEF txt122 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.375 1 1 RAD 0.03125 + txt122 +TEXDEF txt122 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.390469 1 1 APEX 0.484531 1 1 RAD 0.0078125 + txt122 +TEXDEF txt122 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0 0 RAD 0.03125 + txt122 +TEXDEF txt122 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0 0 APEX 0.609531 0 0 RAD 0.0078125 + txt122 +TEXDEF txt122 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.0154687 0 APEX 0.5 0.109531 0 RAD 0.0078125 + txt122 +TEXDEF txt122 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0 0.0154687 APEX 0.5 0 0.109531 RAD 0.0078125 + txt122 +TEXDEF txt122 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0 0.125 RAD 0.03125 + txt122 +TEXDEF txt123 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0 0.125 APEX 0.609531 0 0.125 RAD 0.0078125 + txt123 +TEXDEF txt123 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.0154687 0.125 APEX 0.5 0.109531 0.125 RAD 0.0078125 + txt123 +TEXDEF txt123 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0 0.140469 APEX 0.5 0 0.234531 RAD 0.0078125 + txt123 +TEXDEF txt123 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0 0.25 RAD 0.03125 + txt123 +TEXDEF txt123 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0 0.25 APEX 0.609531 0 0.25 RAD 0.0078125 + txt123 +TEXDEF txt123 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.0154687 0.25 APEX 0.5 0.109531 0.25 RAD 0.0078125 + txt123 +TEXDEF txt123 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0 0.265469 APEX 0.5 0 0.359531 RAD 0.0078125 + txt123 +TEXDEF txt123 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0 0.375 RAD 0.03125 + txt123 +TEXDEF txt123 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0 0.375 APEX 0.609531 0 0.375 RAD 0.0078125 + txt123 +TEXDEF txt123 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.0154687 0.375 APEX 0.5 0.109531 0.375 RAD 0.0078125 + txt123 +TEXDEF txt124 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0 0.390469 APEX 0.5 0 0.484531 RAD 0.0078125 + txt124 +TEXDEF txt124 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0 0.5 RAD 0.03125 + txt124 +TEXDEF txt124 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0 0.5 APEX 0.609531 0 0.5 RAD 0.0078125 + txt124 +TEXDEF txt124 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.0154687 0.5 APEX 0.5 0.109531 0.5 RAD 0.0078125 + txt124 +TEXDEF txt124 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0 0.515469 APEX 0.5 0 0.609531 RAD 0.0078125 + txt124 +TEXDEF txt124 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0 0.625 RAD 0.03125 + txt124 +TEXDEF txt124 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0 0.625 APEX 0.609531 0 0.625 RAD 0.0078125 + txt124 +TEXDEF txt124 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.0154687 0.625 APEX 0.5 0.109531 0.625 RAD 0.0078125 + txt124 +TEXDEF txt124 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0 0.640469 APEX 0.5 0 0.734531 RAD 0.0078125 + txt124 +TEXDEF txt124 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0 0.75 RAD 0.03125 + txt124 +TEXDEF txt125 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0 0.75 APEX 0.609531 0 0.75 RAD 0.0078125 + txt125 +TEXDEF txt125 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.0154687 0.75 APEX 0.5 0.109531 0.75 RAD 0.0078125 + txt125 +TEXDEF txt125 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0 0.765469 APEX 0.5 0 0.859531 RAD 0.0078125 + txt125 +TEXDEF txt125 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0 0.875 RAD 0.03125 + txt125 +TEXDEF txt125 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0 0.875 APEX 0.609531 0 0.875 RAD 0.0078125 + txt125 +TEXDEF txt125 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.0154687 0.875 APEX 0.5 0.109531 0.875 RAD 0.0078125 + txt125 +TEXDEF txt125 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0 0.890469 APEX 0.5 0 0.984531 RAD 0.0078125 + txt125 +TEXDEF txt125 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0 1 RAD 0.03125 + txt125 +TEXDEF txt125 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0 1 APEX 0.609531 0 1 RAD 0.0078125 + txt125 +TEXDEF txt125 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.0154687 1 APEX 0.5 0.109531 1 RAD 0.0078125 + txt125 +TEXDEF txt126 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.125 0 RAD 0.03125 + txt126 +TEXDEF txt126 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.125 0 APEX 0.609531 0.125 0 RAD 0.0078125 + txt126 +TEXDEF txt126 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.140469 0 APEX 0.5 0.234531 0 RAD 0.0078125 + txt126 +TEXDEF txt126 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.125 0.0154687 APEX 0.5 0.125 0.109531 RAD 0.0078125 + txt126 +TEXDEF txt126 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.125 0.125 RAD 0.03125 + txt126 +TEXDEF txt126 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.125 0.125 APEX 0.609531 0.125 0.125 RAD 0.0078125 + txt126 +TEXDEF txt126 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.140469 0.125 APEX 0.5 0.234531 0.125 RAD 0.0078125 + txt126 +TEXDEF txt126 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.125 0.140469 APEX 0.5 0.125 0.234531 RAD 0.0078125 + txt126 +TEXDEF txt126 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.125 0.25 RAD 0.03125 + txt126 +TEXDEF txt126 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.125 0.25 APEX 0.609531 0.125 0.25 RAD 0.0078125 + txt126 +TEXDEF txt127 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.140469 0.25 APEX 0.5 0.234531 0.25 RAD 0.0078125 + txt127 +TEXDEF txt127 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.125 0.265469 APEX 0.5 0.125 0.359531 RAD 0.0078125 + txt127 +TEXDEF txt127 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.125 0.375 RAD 0.03125 + txt127 +TEXDEF txt127 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.125 0.375 APEX 0.609531 0.125 0.375 RAD 0.0078125 + txt127 +TEXDEF txt127 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.140469 0.375 APEX 0.5 0.234531 0.375 RAD 0.0078125 + txt127 +TEXDEF txt127 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.125 0.390469 APEX 0.5 0.125 0.484531 RAD 0.0078125 + txt127 +TEXDEF txt127 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.125 0.5 RAD 0.03125 + txt127 +TEXDEF txt127 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.125 0.5 APEX 0.609531 0.125 0.5 RAD 0.0078125 + txt127 +TEXDEF txt127 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.140469 0.5 APEX 0.5 0.234531 0.5 RAD 0.0078125 + txt127 +TEXDEF txt127 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.125 0.515469 APEX 0.5 0.125 0.609531 RAD 0.0078125 + txt127 +TEXDEF txt128 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.125 0.625 RAD 0.03125 + txt128 +TEXDEF txt128 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.125 0.625 APEX 0.609531 0.125 0.625 RAD 0.0078125 + txt128 +TEXDEF txt128 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.140469 0.625 APEX 0.5 0.234531 0.625 RAD 0.0078125 + txt128 +TEXDEF txt128 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.125 0.640469 APEX 0.5 0.125 0.734531 RAD 0.0078125 + txt128 +TEXDEF txt128 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.125 0.75 RAD 0.03125 + txt128 +TEXDEF txt128 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.125 0.75 APEX 0.609531 0.125 0.75 RAD 0.0078125 + txt128 +TEXDEF txt128 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.140469 0.75 APEX 0.5 0.234531 0.75 RAD 0.0078125 + txt128 +TEXDEF txt128 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.125 0.765469 APEX 0.5 0.125 0.859531 RAD 0.0078125 + txt128 +TEXDEF txt128 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.125 0.875 RAD 0.03125 + txt128 +TEXDEF txt128 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.125 0.875 APEX 0.609531 0.125 0.875 RAD 0.0078125 + txt128 +TEXDEF txt129 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.140469 0.875 APEX 0.5 0.234531 0.875 RAD 0.0078125 + txt129 +TEXDEF txt129 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.125 0.890469 APEX 0.5 0.125 0.984531 RAD 0.0078125 + txt129 +TEXDEF txt129 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.125 1 RAD 0.03125 + txt129 +TEXDEF txt129 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.125 1 APEX 0.609531 0.125 1 RAD 0.0078125 + txt129 +TEXDEF txt129 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.140469 1 APEX 0.5 0.234531 1 RAD 0.0078125 + txt129 +TEXDEF txt129 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.25 0 RAD 0.03125 + txt129 +TEXDEF txt129 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.25 0 APEX 0.609531 0.25 0 RAD 0.0078125 + txt129 +TEXDEF txt129 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.265469 0 APEX 0.5 0.359531 0 RAD 0.0078125 + txt129 +TEXDEF txt129 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.25 0.0154687 APEX 0.5 0.25 0.109531 RAD 0.0078125 + txt129 +TEXDEF txt129 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.25 0.125 RAD 0.03125 + txt129 +TEXDEF txt130 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.25 0.125 APEX 0.609531 0.25 0.125 RAD 0.0078125 + txt130 +TEXDEF txt130 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.265469 0.125 APEX 0.5 0.359531 0.125 RAD 0.0078125 + txt130 +TEXDEF txt130 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.25 0.140469 APEX 0.5 0.25 0.234531 RAD 0.0078125 + txt130 +TEXDEF txt130 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.25 0.25 RAD 0.03125 + txt130 +TEXDEF txt130 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.25 0.25 APEX 0.609531 0.25 0.25 RAD 0.0078125 + txt130 +TEXDEF txt130 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.265469 0.25 APEX 0.5 0.359531 0.25 RAD 0.0078125 + txt130 +TEXDEF txt130 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.25 0.265469 APEX 0.5 0.25 0.359531 RAD 0.0078125 + txt130 +TEXDEF txt130 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.25 0.375 RAD 0.03125 + txt130 +TEXDEF txt130 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.25 0.375 APEX 0.609531 0.25 0.375 RAD 0.0078125 + txt130 +TEXDEF txt130 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.265469 0.375 APEX 0.5 0.359531 0.375 RAD 0.0078125 + txt130 +TEXDEF txt131 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.25 0.390469 APEX 0.5 0.25 0.484531 RAD 0.0078125 + txt131 +TEXDEF txt131 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.25 0.5 RAD 0.03125 + txt131 +TEXDEF txt131 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.25 0.5 APEX 0.609531 0.25 0.5 RAD 0.0078125 + txt131 +TEXDEF txt131 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.265469 0.5 APEX 0.5 0.359531 0.5 RAD 0.0078125 + txt131 +TEXDEF txt131 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.25 0.515469 APEX 0.5 0.25 0.609531 RAD 0.0078125 + txt131 +TEXDEF txt131 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.25 0.625 RAD 0.03125 + txt131 +TEXDEF txt131 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.25 0.625 APEX 0.609531 0.25 0.625 RAD 0.0078125 + txt131 +TEXDEF txt131 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.265469 0.625 APEX 0.5 0.359531 0.625 RAD 0.0078125 + txt131 +TEXDEF txt131 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.25 0.640469 APEX 0.5 0.25 0.734531 RAD 0.0078125 + txt131 +TEXDEF txt131 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.25 0.75 RAD 0.03125 + txt131 +TEXDEF txt132 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.25 0.75 APEX 0.609531 0.25 0.75 RAD 0.0078125 + txt132 +TEXDEF txt132 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.265469 0.75 APEX 0.5 0.359531 0.75 RAD 0.0078125 + txt132 +TEXDEF txt132 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.25 0.765469 APEX 0.5 0.25 0.859531 RAD 0.0078125 + txt132 +TEXDEF txt132 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.25 0.875 RAD 0.03125 + txt132 +TEXDEF txt132 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.25 0.875 APEX 0.609531 0.25 0.875 RAD 0.0078125 + txt132 +TEXDEF txt132 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.265469 0.875 APEX 0.5 0.359531 0.875 RAD 0.0078125 + txt132 +TEXDEF txt132 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.25 0.890469 APEX 0.5 0.25 0.984531 RAD 0.0078125 + txt132 +TEXDEF txt132 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.25 1 RAD 0.03125 + txt132 +TEXDEF txt132 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.25 1 APEX 0.609531 0.25 1 RAD 0.0078125 + txt132 +TEXDEF txt132 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.265469 1 APEX 0.5 0.359531 1 RAD 0.0078125 + txt132 +TEXDEF txt133 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.375 0 RAD 0.03125 + txt133 +TEXDEF txt133 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.375 0 APEX 0.609531 0.375 0 RAD 0.0078125 + txt133 +TEXDEF txt133 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.390469 0 APEX 0.5 0.484531 0 RAD 0.0078125 + txt133 +TEXDEF txt133 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.375 0.0154687 APEX 0.5 0.375 0.109531 RAD 0.0078125 + txt133 +TEXDEF txt133 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.375 0.125 RAD 0.03125 + txt133 +TEXDEF txt133 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.375 0.125 APEX 0.609531 0.375 0.125 RAD 0.0078125 + txt133 +TEXDEF txt133 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.390469 0.125 APEX 0.5 0.484531 0.125 RAD 0.0078125 + txt133 +TEXDEF txt133 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.375 0.140469 APEX 0.5 0.375 0.234531 RAD 0.0078125 + txt133 +TEXDEF txt133 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.375 0.25 RAD 0.03125 + txt133 +TEXDEF txt133 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.375 0.25 APEX 0.609531 0.375 0.25 RAD 0.0078125 + txt133 +TEXDEF txt134 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.390469 0.25 APEX 0.5 0.484531 0.25 RAD 0.0078125 + txt134 +TEXDEF txt134 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.375 0.265469 APEX 0.5 0.375 0.359531 RAD 0.0078125 + txt134 +TEXDEF txt134 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.375 0.375 RAD 0.03125 + txt134 +TEXDEF txt134 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.375 0.375 APEX 0.609531 0.375 0.375 RAD 0.0078125 + txt134 +TEXDEF txt134 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.390469 0.375 APEX 0.5 0.484531 0.375 RAD 0.0078125 + txt134 +TEXDEF txt134 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.375 0.390469 APEX 0.5 0.375 0.484531 RAD 0.0078125 + txt134 +TEXDEF txt134 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.375 0.5 RAD 0.03125 + txt134 +TEXDEF txt134 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.375 0.5 APEX 0.609531 0.375 0.5 RAD 0.0078125 + txt134 +TEXDEF txt134 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.390469 0.5 APEX 0.5 0.484531 0.5 RAD 0.0078125 + txt134 +TEXDEF txt134 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.375 0.515469 APEX 0.5 0.375 0.609531 RAD 0.0078125 + txt134 +TEXDEF txt135 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.375 0.625 RAD 0.03125 + txt135 +TEXDEF txt135 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.375 0.625 APEX 0.609531 0.375 0.625 RAD 0.0078125 + txt135 +TEXDEF txt135 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.390469 0.625 APEX 0.5 0.484531 0.625 RAD 0.0078125 + txt135 +TEXDEF txt135 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.375 0.640469 APEX 0.5 0.375 0.734531 RAD 0.0078125 + txt135 +TEXDEF txt135 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.375 0.75 RAD 0.03125 + txt135 +TEXDEF txt135 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.375 0.75 APEX 0.609531 0.375 0.75 RAD 0.0078125 + txt135 +TEXDEF txt135 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.390469 0.75 APEX 0.5 0.484531 0.75 RAD 0.0078125 + txt135 +TEXDEF txt135 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.375 0.765469 APEX 0.5 0.375 0.859531 RAD 0.0078125 + txt135 +TEXDEF txt135 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.375 0.875 RAD 0.03125 + txt135 +TEXDEF txt135 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.375 0.875 APEX 0.609531 0.375 0.875 RAD 0.0078125 + txt135 +TEXDEF txt136 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.390469 0.875 APEX 0.5 0.484531 0.875 RAD 0.0078125 + txt136 +TEXDEF txt136 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.375 0.890469 APEX 0.5 0.375 0.984531 RAD 0.0078125 + txt136 +TEXDEF txt136 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.375 1 RAD 0.03125 + txt136 +TEXDEF txt136 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.375 1 APEX 0.609531 0.375 1 RAD 0.0078125 + txt136 +TEXDEF txt136 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.390469 1 APEX 0.5 0.484531 1 RAD 0.0078125 + txt136 +TEXDEF txt136 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.5 0 RAD 0.03125 + txt136 +TEXDEF txt136 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.5 0 APEX 0.609531 0.5 0 RAD 0.0078125 + txt136 +TEXDEF txt136 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.515469 0 APEX 0.5 0.609531 0 RAD 0.0078125 + txt136 +TEXDEF txt136 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.5 0.0154687 APEX 0.5 0.5 0.109531 RAD 0.0078125 + txt136 +TEXDEF txt136 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.5 0.125 RAD 0.03125 + txt136 +TEXDEF txt137 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.5 0.125 APEX 0.609531 0.5 0.125 RAD 0.0078125 + txt137 +TEXDEF txt137 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.515469 0.125 APEX 0.5 0.609531 0.125 RAD 0.0078125 + txt137 +TEXDEF txt137 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.5 0.140469 APEX 0.5 0.5 0.234531 RAD 0.0078125 + txt137 +TEXDEF txt137 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.5 0.25 RAD 0.03125 + txt137 +TEXDEF txt137 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.5 0.25 APEX 0.609531 0.5 0.25 RAD 0.0078125 + txt137 +TEXDEF txt137 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.515469 0.25 APEX 0.5 0.609531 0.25 RAD 0.0078125 + txt137 +TEXDEF txt137 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.5 0.265469 APEX 0.5 0.5 0.359531 RAD 0.0078125 + txt137 +TEXDEF txt137 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.5 0.375 RAD 0.03125 + txt137 +TEXDEF txt137 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.5 0.375 APEX 0.609531 0.5 0.375 RAD 0.0078125 + txt137 +TEXDEF txt137 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.515469 0.375 APEX 0.5 0.609531 0.375 RAD 0.0078125 + txt137 +TEXDEF txt138 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.5 0.390469 APEX 0.5 0.5 0.484531 RAD 0.0078125 + txt138 +TEXDEF txt138 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.5 0.5 RAD 0.03125 + txt138 +TEXDEF txt138 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.5 0.5 APEX 0.609531 0.5 0.5 RAD 0.0078125 + txt138 +TEXDEF txt138 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.515469 0.5 APEX 0.5 0.609531 0.5 RAD 0.0078125 + txt138 +TEXDEF txt138 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.5 0.515469 APEX 0.5 0.5 0.609531 RAD 0.0078125 + txt138 +TEXDEF txt138 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.5 0.625 RAD 0.03125 + txt138 +TEXDEF txt138 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.5 0.625 APEX 0.609531 0.5 0.625 RAD 0.0078125 + txt138 +TEXDEF txt138 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.515469 0.625 APEX 0.5 0.609531 0.625 RAD 0.0078125 + txt138 +TEXDEF txt138 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.5 0.640469 APEX 0.5 0.5 0.734531 RAD 0.0078125 + txt138 +TEXDEF txt138 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.5 0.75 RAD 0.03125 + txt138 +TEXDEF txt139 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.5 0.75 APEX 0.609531 0.5 0.75 RAD 0.0078125 + txt139 +TEXDEF txt139 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.515469 0.75 APEX 0.5 0.609531 0.75 RAD 0.0078125 + txt139 +TEXDEF txt139 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.5 0.765469 APEX 0.5 0.5 0.859531 RAD 0.0078125 + txt139 +TEXDEF txt139 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.5 0.875 RAD 0.03125 + txt139 +TEXDEF txt139 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.5 0.875 APEX 0.609531 0.5 0.875 RAD 0.0078125 + txt139 +TEXDEF txt139 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.515469 0.875 APEX 0.5 0.609531 0.875 RAD 0.0078125 + txt139 +TEXDEF txt139 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.5 0.890469 APEX 0.5 0.5 0.984531 RAD 0.0078125 + txt139 +TEXDEF txt139 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.5 1 RAD 0.03125 + txt139 +TEXDEF txt139 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.5 1 APEX 0.609531 0.5 1 RAD 0.0078125 + txt139 +TEXDEF txt139 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.515469 1 APEX 0.5 0.609531 1 RAD 0.0078125 + txt139 +TEXDEF txt140 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.625 0 RAD 0.03125 + txt140 +TEXDEF txt140 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.625 0 APEX 0.609531 0.625 0 RAD 0.0078125 + txt140 +TEXDEF txt140 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.640469 0 APEX 0.5 0.734531 0 RAD 0.0078125 + txt140 +TEXDEF txt140 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.625 0.0154687 APEX 0.5 0.625 0.109531 RAD 0.0078125 + txt140 +TEXDEF txt140 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.625 0.125 RAD 0.03125 + txt140 +TEXDEF txt140 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.625 0.125 APEX 0.609531 0.625 0.125 RAD 0.0078125 + txt140 +TEXDEF txt140 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.640469 0.125 APEX 0.5 0.734531 0.125 RAD 0.0078125 + txt140 +TEXDEF txt140 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.625 0.140469 APEX 0.5 0.625 0.234531 RAD 0.0078125 + txt140 +TEXDEF txt140 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.625 0.25 RAD 0.03125 + txt140 +TEXDEF txt140 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.625 0.25 APEX 0.609531 0.625 0.25 RAD 0.0078125 + txt140 +TEXDEF txt141 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.640469 0.25 APEX 0.5 0.734531 0.25 RAD 0.0078125 + txt141 +TEXDEF txt141 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.625 0.265469 APEX 0.5 0.625 0.359531 RAD 0.0078125 + txt141 +TEXDEF txt141 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.625 0.375 RAD 0.03125 + txt141 +TEXDEF txt141 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.625 0.375 APEX 0.609531 0.625 0.375 RAD 0.0078125 + txt141 +TEXDEF txt141 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.640469 0.375 APEX 0.5 0.734531 0.375 RAD 0.0078125 + txt141 +TEXDEF txt141 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.625 0.390469 APEX 0.5 0.625 0.484531 RAD 0.0078125 + txt141 +TEXDEF txt141 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.625 0.5 RAD 0.03125 + txt141 +TEXDEF txt141 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.625 0.5 APEX 0.609531 0.625 0.5 RAD 0.0078125 + txt141 +TEXDEF txt141 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.640469 0.5 APEX 0.5 0.734531 0.5 RAD 0.0078125 + txt141 +TEXDEF txt141 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.625 0.515469 APEX 0.5 0.625 0.609531 RAD 0.0078125 + txt141 +TEXDEF txt142 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.625 0.625 RAD 0.03125 + txt142 +TEXDEF txt142 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.625 0.625 APEX 0.609531 0.625 0.625 RAD 0.0078125 + txt142 +TEXDEF txt142 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.640469 0.625 APEX 0.5 0.734531 0.625 RAD 0.0078125 + txt142 +TEXDEF txt142 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.625 0.640469 APEX 0.5 0.625 0.734531 RAD 0.0078125 + txt142 +TEXDEF txt142 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.625 0.75 RAD 0.03125 + txt142 +TEXDEF txt142 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.625 0.75 APEX 0.609531 0.625 0.75 RAD 0.0078125 + txt142 +TEXDEF txt142 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.640469 0.75 APEX 0.5 0.734531 0.75 RAD 0.0078125 + txt142 +TEXDEF txt142 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.625 0.765469 APEX 0.5 0.625 0.859531 RAD 0.0078125 + txt142 +TEXDEF txt142 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.625 0.875 RAD 0.03125 + txt142 +TEXDEF txt142 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.625 0.875 APEX 0.609531 0.625 0.875 RAD 0.0078125 + txt142 +TEXDEF txt143 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.640469 0.875 APEX 0.5 0.734531 0.875 RAD 0.0078125 + txt143 +TEXDEF txt143 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.625 0.890469 APEX 0.5 0.625 0.984531 RAD 0.0078125 + txt143 +TEXDEF txt143 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.625 1 RAD 0.03125 + txt143 +TEXDEF txt143 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.625 1 APEX 0.609531 0.625 1 RAD 0.0078125 + txt143 +TEXDEF txt143 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.640469 1 APEX 0.5 0.734531 1 RAD 0.0078125 + txt143 +TEXDEF txt143 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.75 0 RAD 0.03125 + txt143 +TEXDEF txt143 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.75 0 APEX 0.609531 0.75 0 RAD 0.0078125 + txt143 +TEXDEF txt143 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.765469 0 APEX 0.5 0.859531 0 RAD 0.0078125 + txt143 +TEXDEF txt143 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.75 0.0154687 APEX 0.5 0.75 0.109531 RAD 0.0078125 + txt143 +TEXDEF txt143 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.75 0.125 RAD 0.03125 + txt143 +TEXDEF txt144 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.75 0.125 APEX 0.609531 0.75 0.125 RAD 0.0078125 + txt144 +TEXDEF txt144 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.765469 0.125 APEX 0.5 0.859531 0.125 RAD 0.0078125 + txt144 +TEXDEF txt144 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.75 0.140469 APEX 0.5 0.75 0.234531 RAD 0.0078125 + txt144 +TEXDEF txt144 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.75 0.25 RAD 0.03125 + txt144 +TEXDEF txt144 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.75 0.25 APEX 0.609531 0.75 0.25 RAD 0.0078125 + txt144 +TEXDEF txt144 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.765469 0.25 APEX 0.5 0.859531 0.25 RAD 0.0078125 + txt144 +TEXDEF txt144 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.75 0.265469 APEX 0.5 0.75 0.359531 RAD 0.0078125 + txt144 +TEXDEF txt144 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.75 0.375 RAD 0.03125 + txt144 +TEXDEF txt144 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.75 0.375 APEX 0.609531 0.75 0.375 RAD 0.0078125 + txt144 +TEXDEF txt144 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.765469 0.375 APEX 0.5 0.859531 0.375 RAD 0.0078125 + txt144 +TEXDEF txt145 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.75 0.390469 APEX 0.5 0.75 0.484531 RAD 0.0078125 + txt145 +TEXDEF txt145 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.75 0.5 RAD 0.03125 + txt145 +TEXDEF txt145 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.75 0.5 APEX 0.609531 0.75 0.5 RAD 0.0078125 + txt145 +TEXDEF txt145 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.765469 0.5 APEX 0.5 0.859531 0.5 RAD 0.0078125 + txt145 +TEXDEF txt145 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.75 0.515469 APEX 0.5 0.75 0.609531 RAD 0.0078125 + txt145 +TEXDEF txt145 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.75 0.625 RAD 0.03125 + txt145 +TEXDEF txt145 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.75 0.625 APEX 0.609531 0.75 0.625 RAD 0.0078125 + txt145 +TEXDEF txt145 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.765469 0.625 APEX 0.5 0.859531 0.625 RAD 0.0078125 + txt145 +TEXDEF txt145 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.75 0.640469 APEX 0.5 0.75 0.734531 RAD 0.0078125 + txt145 +TEXDEF txt145 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.75 0.75 RAD 0.03125 + txt145 +TEXDEF txt146 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.75 0.75 APEX 0.609531 0.75 0.75 RAD 0.0078125 + txt146 +TEXDEF txt146 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.765469 0.75 APEX 0.5 0.859531 0.75 RAD 0.0078125 + txt146 +TEXDEF txt146 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.75 0.765469 APEX 0.5 0.75 0.859531 RAD 0.0078125 + txt146 +TEXDEF txt146 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.75 0.875 RAD 0.03125 + txt146 +TEXDEF txt146 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.75 0.875 APEX 0.609531 0.75 0.875 RAD 0.0078125 + txt146 +TEXDEF txt146 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.765469 0.875 APEX 0.5 0.859531 0.875 RAD 0.0078125 + txt146 +TEXDEF txt146 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.75 0.890469 APEX 0.5 0.75 0.984531 RAD 0.0078125 + txt146 +TEXDEF txt146 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.75 1 RAD 0.03125 + txt146 +TEXDEF txt146 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.75 1 APEX 0.609531 0.75 1 RAD 0.0078125 + txt146 +TEXDEF txt146 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.765469 1 APEX 0.5 0.859531 1 RAD 0.0078125 + txt146 +TEXDEF txt147 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.875 0 RAD 0.03125 + txt147 +TEXDEF txt147 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.875 0 APEX 0.609531 0.875 0 RAD 0.0078125 + txt147 +TEXDEF txt147 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.890469 0 APEX 0.5 0.984531 0 RAD 0.0078125 + txt147 +TEXDEF txt147 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.875 0.0154687 APEX 0.5 0.875 0.109531 RAD 0.0078125 + txt147 +TEXDEF txt147 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.875 0.125 RAD 0.03125 + txt147 +TEXDEF txt147 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.875 0.125 APEX 0.609531 0.875 0.125 RAD 0.0078125 + txt147 +TEXDEF txt147 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.890469 0.125 APEX 0.5 0.984531 0.125 RAD 0.0078125 + txt147 +TEXDEF txt147 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.875 0.140469 APEX 0.5 0.875 0.234531 RAD 0.0078125 + txt147 +TEXDEF txt147 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.875 0.25 RAD 0.03125 + txt147 +TEXDEF txt147 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.875 0.25 APEX 0.609531 0.875 0.25 RAD 0.0078125 + txt147 +TEXDEF txt148 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.890469 0.25 APEX 0.5 0.984531 0.25 RAD 0.0078125 + txt148 +TEXDEF txt148 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.875 0.265469 APEX 0.5 0.875 0.359531 RAD 0.0078125 + txt148 +TEXDEF txt148 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.875 0.375 RAD 0.03125 + txt148 +TEXDEF txt148 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.875 0.375 APEX 0.609531 0.875 0.375 RAD 0.0078125 + txt148 +TEXDEF txt148 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.890469 0.375 APEX 0.5 0.984531 0.375 RAD 0.0078125 + txt148 +TEXDEF txt148 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.875 0.390469 APEX 0.5 0.875 0.484531 RAD 0.0078125 + txt148 +TEXDEF txt148 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.875 0.5 RAD 0.03125 + txt148 +TEXDEF txt148 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.875 0.5 APEX 0.609531 0.875 0.5 RAD 0.0078125 + txt148 +TEXDEF txt148 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.890469 0.5 APEX 0.5 0.984531 0.5 RAD 0.0078125 + txt148 +TEXDEF txt148 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.875 0.515469 APEX 0.5 0.875 0.609531 RAD 0.0078125 + txt148 +TEXDEF txt149 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.875 0.625 RAD 0.03125 + txt149 +TEXDEF txt149 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.875 0.625 APEX 0.609531 0.875 0.625 RAD 0.0078125 + txt149 +TEXDEF txt149 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.890469 0.625 APEX 0.5 0.984531 0.625 RAD 0.0078125 + txt149 +TEXDEF txt149 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.875 0.640469 APEX 0.5 0.875 0.734531 RAD 0.0078125 + txt149 +TEXDEF txt149 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.875 0.75 RAD 0.03125 + txt149 +TEXDEF txt149 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.875 0.75 APEX 0.609531 0.875 0.75 RAD 0.0078125 + txt149 +TEXDEF txt149 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.890469 0.75 APEX 0.5 0.984531 0.75 RAD 0.0078125 + txt149 +TEXDEF txt149 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.875 0.765469 APEX 0.5 0.875 0.859531 RAD 0.0078125 + txt149 +TEXDEF txt149 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.875 0.875 RAD 0.03125 + txt149 +TEXDEF txt149 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.875 0.875 APEX 0.609531 0.875 0.875 RAD 0.0078125 + txt149 +TEXDEF txt150 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.890469 0.875 APEX 0.5 0.984531 0.875 RAD 0.0078125 + txt150 +TEXDEF txt150 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.875 0.890469 APEX 0.5 0.875 0.984531 RAD 0.0078125 + txt150 +TEXDEF txt150 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 0.875 1 RAD 0.03125 + txt150 +TEXDEF txt150 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 0.875 1 APEX 0.609531 0.875 1 RAD 0.0078125 + txt150 +TEXDEF txt150 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 0.890469 1 APEX 0.5 0.984531 1 RAD 0.0078125 + txt150 +TEXDEF txt150 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 1 0 RAD 0.03125 + txt150 +TEXDEF txt150 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 1 0 APEX 0.609531 1 0 RAD 0.0078125 + txt150 +TEXDEF txt150 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 1 0.0154687 APEX 0.5 1 0.109531 RAD 0.0078125 + txt150 +TEXDEF txt150 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 1 0.125 RAD 0.03125 + txt150 +TEXDEF txt150 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 1 0.125 APEX 0.609531 1 0.125 RAD 0.0078125 + txt150 +TEXDEF txt151 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 1 0.140469 APEX 0.5 1 0.234531 RAD 0.0078125 + txt151 +TEXDEF txt151 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 1 0.25 RAD 0.03125 + txt151 +TEXDEF txt151 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 1 0.25 APEX 0.609531 1 0.25 RAD 0.0078125 + txt151 +TEXDEF txt151 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 1 0.265469 APEX 0.5 1 0.359531 RAD 0.0078125 + txt151 +TEXDEF txt151 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 1 0.375 RAD 0.03125 + txt151 +TEXDEF txt151 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 1 0.375 APEX 0.609531 1 0.375 RAD 0.0078125 + txt151 +TEXDEF txt151 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 1 0.390469 APEX 0.5 1 0.484531 RAD 0.0078125 + txt151 +TEXDEF txt151 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 1 0.5 RAD 0.03125 + txt151 +TEXDEF txt151 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 1 0.5 APEX 0.609531 1 0.5 RAD 0.0078125 + txt151 +TEXDEF txt151 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 1 0.515469 APEX 0.5 1 0.609531 RAD 0.0078125 + txt151 +TEXDEF txt152 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 1 0.625 RAD 0.03125 + txt152 +TEXDEF txt152 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 1 0.625 APEX 0.609531 1 0.625 RAD 0.0078125 + txt152 +TEXDEF txt152 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 1 0.640469 APEX 0.5 1 0.734531 RAD 0.0078125 + txt152 +TEXDEF txt152 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 1 0.75 RAD 0.03125 + txt152 +TEXDEF txt152 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 1 0.75 APEX 0.609531 1 0.75 RAD 0.0078125 + txt152 +TEXDEF txt152 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 1 0.765469 APEX 0.5 1 0.859531 RAD 0.0078125 + txt152 +TEXDEF txt152 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 1 0.875 RAD 0.03125 + txt152 +TEXDEF txt152 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 1 0.875 APEX 0.609531 1 0.875 RAD 0.0078125 + txt152 +TEXDEF txt152 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.5 1 0.890469 APEX 0.5 1 0.984531 RAD 0.0078125 + txt152 +TEXDEF txt152 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.5 1 1 RAD 0.03125 + txt152 +TEXDEF txt153 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.515469 1 1 APEX 0.609531 1 1 RAD 0.0078125 + txt153 +TEXDEF txt153 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0 0 RAD 0.03125 + txt153 +TEXDEF txt153 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0 0 APEX 0.734531 0 0 RAD 0.0078125 + txt153 +TEXDEF txt153 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.0154687 0 APEX 0.625 0.109531 0 RAD 0.0078125 + txt153 +TEXDEF txt153 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0 0.0154687 APEX 0.625 0 0.109531 RAD 0.0078125 + txt153 +TEXDEF txt153 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0 0.125 RAD 0.03125 + txt153 +TEXDEF txt153 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0 0.125 APEX 0.734531 0 0.125 RAD 0.0078125 + txt153 +TEXDEF txt153 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.0154687 0.125 APEX 0.625 0.109531 0.125 RAD 0.0078125 + txt153 +TEXDEF txt153 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0 0.140469 APEX 0.625 0 0.234531 RAD 0.0078125 + txt153 +TEXDEF txt153 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0 0.25 RAD 0.03125 + txt153 +TEXDEF txt154 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0 0.25 APEX 0.734531 0 0.25 RAD 0.0078125 + txt154 +TEXDEF txt154 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.0154687 0.25 APEX 0.625 0.109531 0.25 RAD 0.0078125 + txt154 +TEXDEF txt154 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0 0.265469 APEX 0.625 0 0.359531 RAD 0.0078125 + txt154 +TEXDEF txt154 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0 0.375 RAD 0.03125 + txt154 +TEXDEF txt154 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0 0.375 APEX 0.734531 0 0.375 RAD 0.0078125 + txt154 +TEXDEF txt154 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.0154687 0.375 APEX 0.625 0.109531 0.375 RAD 0.0078125 + txt154 +TEXDEF txt154 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0 0.390469 APEX 0.625 0 0.484531 RAD 0.0078125 + txt154 +TEXDEF txt154 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0 0.5 RAD 0.03125 + txt154 +TEXDEF txt154 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0 0.5 APEX 0.734531 0 0.5 RAD 0.0078125 + txt154 +TEXDEF txt154 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.0154687 0.5 APEX 0.625 0.109531 0.5 RAD 0.0078125 + txt154 +TEXDEF txt155 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0 0.515469 APEX 0.625 0 0.609531 RAD 0.0078125 + txt155 +TEXDEF txt155 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0 0.625 RAD 0.03125 + txt155 +TEXDEF txt155 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0 0.625 APEX 0.734531 0 0.625 RAD 0.0078125 + txt155 +TEXDEF txt155 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.0154687 0.625 APEX 0.625 0.109531 0.625 RAD 0.0078125 + txt155 +TEXDEF txt155 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0 0.640469 APEX 0.625 0 0.734531 RAD 0.0078125 + txt155 +TEXDEF txt155 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0 0.75 RAD 0.03125 + txt155 +TEXDEF txt155 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0 0.75 APEX 0.734531 0 0.75 RAD 0.0078125 + txt155 +TEXDEF txt155 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.0154687 0.75 APEX 0.625 0.109531 0.75 RAD 0.0078125 + txt155 +TEXDEF txt155 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0 0.765469 APEX 0.625 0 0.859531 RAD 0.0078125 + txt155 +TEXDEF txt155 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0 0.875 RAD 0.03125 + txt155 +TEXDEF txt156 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0 0.875 APEX 0.734531 0 0.875 RAD 0.0078125 + txt156 +TEXDEF txt156 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.0154687 0.875 APEX 0.625 0.109531 0.875 RAD 0.0078125 + txt156 +TEXDEF txt156 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0 0.890469 APEX 0.625 0 0.984531 RAD 0.0078125 + txt156 +TEXDEF txt156 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0 1 RAD 0.03125 + txt156 +TEXDEF txt156 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0 1 APEX 0.734531 0 1 RAD 0.0078125 + txt156 +TEXDEF txt156 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.0154687 1 APEX 0.625 0.109531 1 RAD 0.0078125 + txt156 +TEXDEF txt156 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.125 0 RAD 0.03125 + txt156 +TEXDEF txt156 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.125 0 APEX 0.734531 0.125 0 RAD 0.0078125 + txt156 +TEXDEF txt156 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.140469 0 APEX 0.625 0.234531 0 RAD 0.0078125 + txt156 +TEXDEF txt156 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.125 0.0154687 APEX 0.625 0.125 0.109531 RAD 0.0078125 + txt156 +TEXDEF txt157 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.125 0.125 RAD 0.03125 + txt157 +TEXDEF txt157 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.125 0.125 APEX 0.734531 0.125 0.125 RAD 0.0078125 + txt157 +TEXDEF txt157 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.140469 0.125 APEX 0.625 0.234531 0.125 RAD 0.0078125 + txt157 +TEXDEF txt157 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.125 0.140469 APEX 0.625 0.125 0.234531 RAD 0.0078125 + txt157 +TEXDEF txt157 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.125 0.25 RAD 0.03125 + txt157 +TEXDEF txt157 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.125 0.25 APEX 0.734531 0.125 0.25 RAD 0.0078125 + txt157 +TEXDEF txt157 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.140469 0.25 APEX 0.625 0.234531 0.25 RAD 0.0078125 + txt157 +TEXDEF txt157 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.125 0.265469 APEX 0.625 0.125 0.359531 RAD 0.0078125 + txt157 +TEXDEF txt157 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.125 0.375 RAD 0.03125 + txt157 +TEXDEF txt157 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.125 0.375 APEX 0.734531 0.125 0.375 RAD 0.0078125 + txt157 +TEXDEF txt158 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.140469 0.375 APEX 0.625 0.234531 0.375 RAD 0.0078125 + txt158 +TEXDEF txt158 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.125 0.390469 APEX 0.625 0.125 0.484531 RAD 0.0078125 + txt158 +TEXDEF txt158 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.125 0.5 RAD 0.03125 + txt158 +TEXDEF txt158 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.125 0.5 APEX 0.734531 0.125 0.5 RAD 0.0078125 + txt158 +TEXDEF txt158 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.140469 0.5 APEX 0.625 0.234531 0.5 RAD 0.0078125 + txt158 +TEXDEF txt158 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.125 0.515469 APEX 0.625 0.125 0.609531 RAD 0.0078125 + txt158 +TEXDEF txt158 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.125 0.625 RAD 0.03125 + txt158 +TEXDEF txt158 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.125 0.625 APEX 0.734531 0.125 0.625 RAD 0.0078125 + txt158 +TEXDEF txt158 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.140469 0.625 APEX 0.625 0.234531 0.625 RAD 0.0078125 + txt158 +TEXDEF txt158 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.125 0.640469 APEX 0.625 0.125 0.734531 RAD 0.0078125 + txt158 +TEXDEF txt159 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.125 0.75 RAD 0.03125 + txt159 +TEXDEF txt159 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.125 0.75 APEX 0.734531 0.125 0.75 RAD 0.0078125 + txt159 +TEXDEF txt159 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.140469 0.75 APEX 0.625 0.234531 0.75 RAD 0.0078125 + txt159 +TEXDEF txt159 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.125 0.765469 APEX 0.625 0.125 0.859531 RAD 0.0078125 + txt159 +TEXDEF txt159 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.125 0.875 RAD 0.03125 + txt159 +TEXDEF txt159 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.125 0.875 APEX 0.734531 0.125 0.875 RAD 0.0078125 + txt159 +TEXDEF txt159 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.140469 0.875 APEX 0.625 0.234531 0.875 RAD 0.0078125 + txt159 +TEXDEF txt159 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.125 0.890469 APEX 0.625 0.125 0.984531 RAD 0.0078125 + txt159 +TEXDEF txt159 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.125 1 RAD 0.03125 + txt159 +TEXDEF txt159 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.125 1 APEX 0.734531 0.125 1 RAD 0.0078125 + txt159 +TEXDEF txt160 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.140469 1 APEX 0.625 0.234531 1 RAD 0.0078125 + txt160 +TEXDEF txt160 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.25 0 RAD 0.03125 + txt160 +TEXDEF txt160 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.25 0 APEX 0.734531 0.25 0 RAD 0.0078125 + txt160 +TEXDEF txt160 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.265469 0 APEX 0.625 0.359531 0 RAD 0.0078125 + txt160 +TEXDEF txt160 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.25 0.0154687 APEX 0.625 0.25 0.109531 RAD 0.0078125 + txt160 +TEXDEF txt160 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.25 0.125 RAD 0.03125 + txt160 +TEXDEF txt160 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.25 0.125 APEX 0.734531 0.25 0.125 RAD 0.0078125 + txt160 +TEXDEF txt160 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.265469 0.125 APEX 0.625 0.359531 0.125 RAD 0.0078125 + txt160 +TEXDEF txt160 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.25 0.140469 APEX 0.625 0.25 0.234531 RAD 0.0078125 + txt160 +TEXDEF txt160 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.25 0.25 RAD 0.03125 + txt160 +TEXDEF txt161 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.25 0.25 APEX 0.734531 0.25 0.25 RAD 0.0078125 + txt161 +TEXDEF txt161 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.265469 0.25 APEX 0.625 0.359531 0.25 RAD 0.0078125 + txt161 +TEXDEF txt161 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.25 0.265469 APEX 0.625 0.25 0.359531 RAD 0.0078125 + txt161 +TEXDEF txt161 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.25 0.375 RAD 0.03125 + txt161 +TEXDEF txt161 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.25 0.375 APEX 0.734531 0.25 0.375 RAD 0.0078125 + txt161 +TEXDEF txt161 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.265469 0.375 APEX 0.625 0.359531 0.375 RAD 0.0078125 + txt161 +TEXDEF txt161 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.25 0.390469 APEX 0.625 0.25 0.484531 RAD 0.0078125 + txt161 +TEXDEF txt161 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.25 0.5 RAD 0.03125 + txt161 +TEXDEF txt161 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.25 0.5 APEX 0.734531 0.25 0.5 RAD 0.0078125 + txt161 +TEXDEF txt161 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.265469 0.5 APEX 0.625 0.359531 0.5 RAD 0.0078125 + txt161 +TEXDEF txt162 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.25 0.515469 APEX 0.625 0.25 0.609531 RAD 0.0078125 + txt162 +TEXDEF txt162 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.25 0.625 RAD 0.03125 + txt162 +TEXDEF txt162 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.25 0.625 APEX 0.734531 0.25 0.625 RAD 0.0078125 + txt162 +TEXDEF txt162 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.265469 0.625 APEX 0.625 0.359531 0.625 RAD 0.0078125 + txt162 +TEXDEF txt162 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.25 0.640469 APEX 0.625 0.25 0.734531 RAD 0.0078125 + txt162 +TEXDEF txt162 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.25 0.75 RAD 0.03125 + txt162 +TEXDEF txt162 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.25 0.75 APEX 0.734531 0.25 0.75 RAD 0.0078125 + txt162 +TEXDEF txt162 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.265469 0.75 APEX 0.625 0.359531 0.75 RAD 0.0078125 + txt162 +TEXDEF txt162 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.25 0.765469 APEX 0.625 0.25 0.859531 RAD 0.0078125 + txt162 +TEXDEF txt162 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.25 0.875 RAD 0.03125 + txt162 +TEXDEF txt163 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.25 0.875 APEX 0.734531 0.25 0.875 RAD 0.0078125 + txt163 +TEXDEF txt163 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.265469 0.875 APEX 0.625 0.359531 0.875 RAD 0.0078125 + txt163 +TEXDEF txt163 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.25 0.890469 APEX 0.625 0.25 0.984531 RAD 0.0078125 + txt163 +TEXDEF txt163 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.25 1 RAD 0.03125 + txt163 +TEXDEF txt163 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.25 1 APEX 0.734531 0.25 1 RAD 0.0078125 + txt163 +TEXDEF txt163 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.265469 1 APEX 0.625 0.359531 1 RAD 0.0078125 + txt163 +TEXDEF txt163 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.375 0 RAD 0.03125 + txt163 +TEXDEF txt163 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.375 0 APEX 0.734531 0.375 0 RAD 0.0078125 + txt163 +TEXDEF txt163 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.390469 0 APEX 0.625 0.484531 0 RAD 0.0078125 + txt163 +TEXDEF txt163 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.375 0.0154687 APEX 0.625 0.375 0.109531 RAD 0.0078125 + txt163 +TEXDEF txt164 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.375 0.125 RAD 0.03125 + txt164 +TEXDEF txt164 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.375 0.125 APEX 0.734531 0.375 0.125 RAD 0.0078125 + txt164 +TEXDEF txt164 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.390469 0.125 APEX 0.625 0.484531 0.125 RAD 0.0078125 + txt164 +TEXDEF txt164 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.375 0.140469 APEX 0.625 0.375 0.234531 RAD 0.0078125 + txt164 +TEXDEF txt164 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.375 0.25 RAD 0.03125 + txt164 +TEXDEF txt164 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.375 0.25 APEX 0.734531 0.375 0.25 RAD 0.0078125 + txt164 +TEXDEF txt164 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.390469 0.25 APEX 0.625 0.484531 0.25 RAD 0.0078125 + txt164 +TEXDEF txt164 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.375 0.265469 APEX 0.625 0.375 0.359531 RAD 0.0078125 + txt164 +TEXDEF txt164 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.375 0.375 RAD 0.03125 + txt164 +TEXDEF txt164 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.375 0.375 APEX 0.734531 0.375 0.375 RAD 0.0078125 + txt164 +TEXDEF txt165 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.390469 0.375 APEX 0.625 0.484531 0.375 RAD 0.0078125 + txt165 +TEXDEF txt165 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.375 0.390469 APEX 0.625 0.375 0.484531 RAD 0.0078125 + txt165 +TEXDEF txt165 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.375 0.5 RAD 0.03125 + txt165 +TEXDEF txt165 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.375 0.5 APEX 0.734531 0.375 0.5 RAD 0.0078125 + txt165 +TEXDEF txt165 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.390469 0.5 APEX 0.625 0.484531 0.5 RAD 0.0078125 + txt165 +TEXDEF txt165 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.375 0.515469 APEX 0.625 0.375 0.609531 RAD 0.0078125 + txt165 +TEXDEF txt165 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.375 0.625 RAD 0.03125 + txt165 +TEXDEF txt165 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.375 0.625 APEX 0.734531 0.375 0.625 RAD 0.0078125 + txt165 +TEXDEF txt165 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.390469 0.625 APEX 0.625 0.484531 0.625 RAD 0.0078125 + txt165 +TEXDEF txt165 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.375 0.640469 APEX 0.625 0.375 0.734531 RAD 0.0078125 + txt165 +TEXDEF txt166 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.375 0.75 RAD 0.03125 + txt166 +TEXDEF txt166 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.375 0.75 APEX 0.734531 0.375 0.75 RAD 0.0078125 + txt166 +TEXDEF txt166 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.390469 0.75 APEX 0.625 0.484531 0.75 RAD 0.0078125 + txt166 +TEXDEF txt166 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.375 0.765469 APEX 0.625 0.375 0.859531 RAD 0.0078125 + txt166 +TEXDEF txt166 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.375 0.875 RAD 0.03125 + txt166 +TEXDEF txt166 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.375 0.875 APEX 0.734531 0.375 0.875 RAD 0.0078125 + txt166 +TEXDEF txt166 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.390469 0.875 APEX 0.625 0.484531 0.875 RAD 0.0078125 + txt166 +TEXDEF txt166 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.375 0.890469 APEX 0.625 0.375 0.984531 RAD 0.0078125 + txt166 +TEXDEF txt166 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.375 1 RAD 0.03125 + txt166 +TEXDEF txt166 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.375 1 APEX 0.734531 0.375 1 RAD 0.0078125 + txt166 +TEXDEF txt167 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.390469 1 APEX 0.625 0.484531 1 RAD 0.0078125 + txt167 +TEXDEF txt167 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.5 0 RAD 0.03125 + txt167 +TEXDEF txt167 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.5 0 APEX 0.734531 0.5 0 RAD 0.0078125 + txt167 +TEXDEF txt167 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.515469 0 APEX 0.625 0.609531 0 RAD 0.0078125 + txt167 +TEXDEF txt167 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.5 0.0154687 APEX 0.625 0.5 0.109531 RAD 0.0078125 + txt167 +TEXDEF txt167 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.5 0.125 RAD 0.03125 + txt167 +TEXDEF txt167 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.5 0.125 APEX 0.734531 0.5 0.125 RAD 0.0078125 + txt167 +TEXDEF txt167 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.515469 0.125 APEX 0.625 0.609531 0.125 RAD 0.0078125 + txt167 +TEXDEF txt167 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.5 0.140469 APEX 0.625 0.5 0.234531 RAD 0.0078125 + txt167 +TEXDEF txt167 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.5 0.25 RAD 0.03125 + txt167 +TEXDEF txt168 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.5 0.25 APEX 0.734531 0.5 0.25 RAD 0.0078125 + txt168 +TEXDEF txt168 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.515469 0.25 APEX 0.625 0.609531 0.25 RAD 0.0078125 + txt168 +TEXDEF txt168 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.5 0.265469 APEX 0.625 0.5 0.359531 RAD 0.0078125 + txt168 +TEXDEF txt168 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.5 0.375 RAD 0.03125 + txt168 +TEXDEF txt168 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.5 0.375 APEX 0.734531 0.5 0.375 RAD 0.0078125 + txt168 +TEXDEF txt168 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.515469 0.375 APEX 0.625 0.609531 0.375 RAD 0.0078125 + txt168 +TEXDEF txt168 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.5 0.390469 APEX 0.625 0.5 0.484531 RAD 0.0078125 + txt168 +TEXDEF txt168 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.5 0.5 RAD 0.03125 + txt168 +TEXDEF txt168 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.5 0.5 APEX 0.734531 0.5 0.5 RAD 0.0078125 + txt168 +TEXDEF txt168 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.515469 0.5 APEX 0.625 0.609531 0.5 RAD 0.0078125 + txt168 +TEXDEF txt169 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.5 0.515469 APEX 0.625 0.5 0.609531 RAD 0.0078125 + txt169 +TEXDEF txt169 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.5 0.625 RAD 0.03125 + txt169 +TEXDEF txt169 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.5 0.625 APEX 0.734531 0.5 0.625 RAD 0.0078125 + txt169 +TEXDEF txt169 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.515469 0.625 APEX 0.625 0.609531 0.625 RAD 0.0078125 + txt169 +TEXDEF txt169 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.5 0.640469 APEX 0.625 0.5 0.734531 RAD 0.0078125 + txt169 +TEXDEF txt169 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.5 0.75 RAD 0.03125 + txt169 +TEXDEF txt169 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.5 0.75 APEX 0.734531 0.5 0.75 RAD 0.0078125 + txt169 +TEXDEF txt169 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.515469 0.75 APEX 0.625 0.609531 0.75 RAD 0.0078125 + txt169 +TEXDEF txt169 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.5 0.765469 APEX 0.625 0.5 0.859531 RAD 0.0078125 + txt169 +TEXDEF txt169 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.5 0.875 RAD 0.03125 + txt169 +TEXDEF txt170 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.5 0.875 APEX 0.734531 0.5 0.875 RAD 0.0078125 + txt170 +TEXDEF txt170 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.515469 0.875 APEX 0.625 0.609531 0.875 RAD 0.0078125 + txt170 +TEXDEF txt170 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.5 0.890469 APEX 0.625 0.5 0.984531 RAD 0.0078125 + txt170 +TEXDEF txt170 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.5 1 RAD 0.03125 + txt170 +TEXDEF txt170 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.5 1 APEX 0.734531 0.5 1 RAD 0.0078125 + txt170 +TEXDEF txt170 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.515469 1 APEX 0.625 0.609531 1 RAD 0.0078125 + txt170 +TEXDEF txt170 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.625 0 RAD 0.03125 + txt170 +TEXDEF txt170 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.625 0 APEX 0.734531 0.625 0 RAD 0.0078125 + txt170 +TEXDEF txt170 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.640469 0 APEX 0.625 0.734531 0 RAD 0.0078125 + txt170 +TEXDEF txt170 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.625 0.0154687 APEX 0.625 0.625 0.109531 RAD 0.0078125 + txt170 +TEXDEF txt171 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.625 0.125 RAD 0.03125 + txt171 +TEXDEF txt171 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.625 0.125 APEX 0.734531 0.625 0.125 RAD 0.0078125 + txt171 +TEXDEF txt171 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.640469 0.125 APEX 0.625 0.734531 0.125 RAD 0.0078125 + txt171 +TEXDEF txt171 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.625 0.140469 APEX 0.625 0.625 0.234531 RAD 0.0078125 + txt171 +TEXDEF txt171 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.625 0.25 RAD 0.03125 + txt171 +TEXDEF txt171 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.625 0.25 APEX 0.734531 0.625 0.25 RAD 0.0078125 + txt171 +TEXDEF txt171 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.640469 0.25 APEX 0.625 0.734531 0.25 RAD 0.0078125 + txt171 +TEXDEF txt171 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.625 0.265469 APEX 0.625 0.625 0.359531 RAD 0.0078125 + txt171 +TEXDEF txt171 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.625 0.375 RAD 0.03125 + txt171 +TEXDEF txt171 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.625 0.375 APEX 0.734531 0.625 0.375 RAD 0.0078125 + txt171 +TEXDEF txt172 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.640469 0.375 APEX 0.625 0.734531 0.375 RAD 0.0078125 + txt172 +TEXDEF txt172 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.625 0.390469 APEX 0.625 0.625 0.484531 RAD 0.0078125 + txt172 +TEXDEF txt172 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.625 0.5 RAD 0.03125 + txt172 +TEXDEF txt172 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.625 0.5 APEX 0.734531 0.625 0.5 RAD 0.0078125 + txt172 +TEXDEF txt172 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.640469 0.5 APEX 0.625 0.734531 0.5 RAD 0.0078125 + txt172 +TEXDEF txt172 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.625 0.515469 APEX 0.625 0.625 0.609531 RAD 0.0078125 + txt172 +TEXDEF txt172 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.625 0.625 RAD 0.03125 + txt172 +TEXDEF txt172 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.625 0.625 APEX 0.734531 0.625 0.625 RAD 0.0078125 + txt172 +TEXDEF txt172 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.640469 0.625 APEX 0.625 0.734531 0.625 RAD 0.0078125 + txt172 +TEXDEF txt172 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.625 0.640469 APEX 0.625 0.625 0.734531 RAD 0.0078125 + txt172 +TEXDEF txt173 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.625 0.75 RAD 0.03125 + txt173 +TEXDEF txt173 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.625 0.75 APEX 0.734531 0.625 0.75 RAD 0.0078125 + txt173 +TEXDEF txt173 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.640469 0.75 APEX 0.625 0.734531 0.75 RAD 0.0078125 + txt173 +TEXDEF txt173 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.625 0.765469 APEX 0.625 0.625 0.859531 RAD 0.0078125 + txt173 +TEXDEF txt173 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.625 0.875 RAD 0.03125 + txt173 +TEXDEF txt173 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.625 0.875 APEX 0.734531 0.625 0.875 RAD 0.0078125 + txt173 +TEXDEF txt173 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.640469 0.875 APEX 0.625 0.734531 0.875 RAD 0.0078125 + txt173 +TEXDEF txt173 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.625 0.890469 APEX 0.625 0.625 0.984531 RAD 0.0078125 + txt173 +TEXDEF txt173 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.625 1 RAD 0.03125 + txt173 +TEXDEF txt173 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.625 1 APEX 0.734531 0.625 1 RAD 0.0078125 + txt173 +TEXDEF txt174 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.640469 1 APEX 0.625 0.734531 1 RAD 0.0078125 + txt174 +TEXDEF txt174 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.75 0 RAD 0.03125 + txt174 +TEXDEF txt174 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.75 0 APEX 0.734531 0.75 0 RAD 0.0078125 + txt174 +TEXDEF txt174 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.765469 0 APEX 0.625 0.859531 0 RAD 0.0078125 + txt174 +TEXDEF txt174 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.75 0.0154687 APEX 0.625 0.75 0.109531 RAD 0.0078125 + txt174 +TEXDEF txt174 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.75 0.125 RAD 0.03125 + txt174 +TEXDEF txt174 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.75 0.125 APEX 0.734531 0.75 0.125 RAD 0.0078125 + txt174 +TEXDEF txt174 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.765469 0.125 APEX 0.625 0.859531 0.125 RAD 0.0078125 + txt174 +TEXDEF txt174 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.75 0.140469 APEX 0.625 0.75 0.234531 RAD 0.0078125 + txt174 +TEXDEF txt174 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.75 0.25 RAD 0.03125 + txt174 +TEXDEF txt175 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.75 0.25 APEX 0.734531 0.75 0.25 RAD 0.0078125 + txt175 +TEXDEF txt175 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.765469 0.25 APEX 0.625 0.859531 0.25 RAD 0.0078125 + txt175 +TEXDEF txt175 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.75 0.265469 APEX 0.625 0.75 0.359531 RAD 0.0078125 + txt175 +TEXDEF txt175 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.75 0.375 RAD 0.03125 + txt175 +TEXDEF txt175 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.75 0.375 APEX 0.734531 0.75 0.375 RAD 0.0078125 + txt175 +TEXDEF txt175 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.765469 0.375 APEX 0.625 0.859531 0.375 RAD 0.0078125 + txt175 +TEXDEF txt175 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.75 0.390469 APEX 0.625 0.75 0.484531 RAD 0.0078125 + txt175 +TEXDEF txt175 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.75 0.5 RAD 0.03125 + txt175 +TEXDEF txt175 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.75 0.5 APEX 0.734531 0.75 0.5 RAD 0.0078125 + txt175 +TEXDEF txt175 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.765469 0.5 APEX 0.625 0.859531 0.5 RAD 0.0078125 + txt175 +TEXDEF txt176 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.75 0.515469 APEX 0.625 0.75 0.609531 RAD 0.0078125 + txt176 +TEXDEF txt176 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.75 0.625 RAD 0.03125 + txt176 +TEXDEF txt176 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.75 0.625 APEX 0.734531 0.75 0.625 RAD 0.0078125 + txt176 +TEXDEF txt176 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.765469 0.625 APEX 0.625 0.859531 0.625 RAD 0.0078125 + txt176 +TEXDEF txt176 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.75 0.640469 APEX 0.625 0.75 0.734531 RAD 0.0078125 + txt176 +TEXDEF txt176 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.75 0.75 RAD 0.03125 + txt176 +TEXDEF txt176 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.75 0.75 APEX 0.734531 0.75 0.75 RAD 0.0078125 + txt176 +TEXDEF txt176 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.765469 0.75 APEX 0.625 0.859531 0.75 RAD 0.0078125 + txt176 +TEXDEF txt176 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.75 0.765469 APEX 0.625 0.75 0.859531 RAD 0.0078125 + txt176 +TEXDEF txt176 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.75 0.875 RAD 0.03125 + txt176 +TEXDEF txt177 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.75 0.875 APEX 0.734531 0.75 0.875 RAD 0.0078125 + txt177 +TEXDEF txt177 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.765469 0.875 APEX 0.625 0.859531 0.875 RAD 0.0078125 + txt177 +TEXDEF txt177 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.75 0.890469 APEX 0.625 0.75 0.984531 RAD 0.0078125 + txt177 +TEXDEF txt177 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.75 1 RAD 0.03125 + txt177 +TEXDEF txt177 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.75 1 APEX 0.734531 0.75 1 RAD 0.0078125 + txt177 +TEXDEF txt177 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.765469 1 APEX 0.625 0.859531 1 RAD 0.0078125 + txt177 +TEXDEF txt177 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.875 0 RAD 0.03125 + txt177 +TEXDEF txt177 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.875 0 APEX 0.734531 0.875 0 RAD 0.0078125 + txt177 +TEXDEF txt177 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.890469 0 APEX 0.625 0.984531 0 RAD 0.0078125 + txt177 +TEXDEF txt177 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.875 0.0154687 APEX 0.625 0.875 0.109531 RAD 0.0078125 + txt177 +TEXDEF txt178 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.875 0.125 RAD 0.03125 + txt178 +TEXDEF txt178 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.875 0.125 APEX 0.734531 0.875 0.125 RAD 0.0078125 + txt178 +TEXDEF txt178 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.890469 0.125 APEX 0.625 0.984531 0.125 RAD 0.0078125 + txt178 +TEXDEF txt178 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.875 0.140469 APEX 0.625 0.875 0.234531 RAD 0.0078125 + txt178 +TEXDEF txt178 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.875 0.25 RAD 0.03125 + txt178 +TEXDEF txt178 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.875 0.25 APEX 0.734531 0.875 0.25 RAD 0.0078125 + txt178 +TEXDEF txt178 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.890469 0.25 APEX 0.625 0.984531 0.25 RAD 0.0078125 + txt178 +TEXDEF txt178 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.875 0.265469 APEX 0.625 0.875 0.359531 RAD 0.0078125 + txt178 +TEXDEF txt178 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.875 0.375 RAD 0.03125 + txt178 +TEXDEF txt178 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.875 0.375 APEX 0.734531 0.875 0.375 RAD 0.0078125 + txt178 +TEXDEF txt179 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.890469 0.375 APEX 0.625 0.984531 0.375 RAD 0.0078125 + txt179 +TEXDEF txt179 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.875 0.390469 APEX 0.625 0.875 0.484531 RAD 0.0078125 + txt179 +TEXDEF txt179 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.875 0.5 RAD 0.03125 + txt179 +TEXDEF txt179 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.875 0.5 APEX 0.734531 0.875 0.5 RAD 0.0078125 + txt179 +TEXDEF txt179 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.890469 0.5 APEX 0.625 0.984531 0.5 RAD 0.0078125 + txt179 +TEXDEF txt179 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.875 0.515469 APEX 0.625 0.875 0.609531 RAD 0.0078125 + txt179 +TEXDEF txt179 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.875 0.625 RAD 0.03125 + txt179 +TEXDEF txt179 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.875 0.625 APEX 0.734531 0.875 0.625 RAD 0.0078125 + txt179 +TEXDEF txt179 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.890469 0.625 APEX 0.625 0.984531 0.625 RAD 0.0078125 + txt179 +TEXDEF txt179 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.875 0.640469 APEX 0.625 0.875 0.734531 RAD 0.0078125 + txt179 +TEXDEF txt180 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.875 0.75 RAD 0.03125 + txt180 +TEXDEF txt180 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.875 0.75 APEX 0.734531 0.875 0.75 RAD 0.0078125 + txt180 +TEXDEF txt180 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.890469 0.75 APEX 0.625 0.984531 0.75 RAD 0.0078125 + txt180 +TEXDEF txt180 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.875 0.765469 APEX 0.625 0.875 0.859531 RAD 0.0078125 + txt180 +TEXDEF txt180 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.875 0.875 RAD 0.03125 + txt180 +TEXDEF txt180 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.875 0.875 APEX 0.734531 0.875 0.875 RAD 0.0078125 + txt180 +TEXDEF txt180 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.890469 0.875 APEX 0.625 0.984531 0.875 RAD 0.0078125 + txt180 +TEXDEF txt180 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.875 0.890469 APEX 0.625 0.875 0.984531 RAD 0.0078125 + txt180 +TEXDEF txt180 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 0.875 1 RAD 0.03125 + txt180 +TEXDEF txt180 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 0.875 1 APEX 0.734531 0.875 1 RAD 0.0078125 + txt180 +TEXDEF txt181 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 0.890469 1 APEX 0.625 0.984531 1 RAD 0.0078125 + txt181 +TEXDEF txt181 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 1 0 RAD 0.03125 + txt181 +TEXDEF txt181 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 1 0 APEX 0.734531 1 0 RAD 0.0078125 + txt181 +TEXDEF txt181 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 1 0.0154687 APEX 0.625 1 0.109531 RAD 0.0078125 + txt181 +TEXDEF txt181 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 1 0.125 RAD 0.03125 + txt181 +TEXDEF txt181 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 1 0.125 APEX 0.734531 1 0.125 RAD 0.0078125 + txt181 +TEXDEF txt181 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 1 0.140469 APEX 0.625 1 0.234531 RAD 0.0078125 + txt181 +TEXDEF txt181 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 1 0.25 RAD 0.03125 + txt181 +TEXDEF txt181 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 1 0.25 APEX 0.734531 1 0.25 RAD 0.0078125 + txt181 +TEXDEF txt181 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 1 0.265469 APEX 0.625 1 0.359531 RAD 0.0078125 + txt181 +TEXDEF txt182 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 1 0.375 RAD 0.03125 + txt182 +TEXDEF txt182 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 1 0.375 APEX 0.734531 1 0.375 RAD 0.0078125 + txt182 +TEXDEF txt182 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 1 0.390469 APEX 0.625 1 0.484531 RAD 0.0078125 + txt182 +TEXDEF txt182 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 1 0.5 RAD 0.03125 + txt182 +TEXDEF txt182 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 1 0.5 APEX 0.734531 1 0.5 RAD 0.0078125 + txt182 +TEXDEF txt182 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 1 0.515469 APEX 0.625 1 0.609531 RAD 0.0078125 + txt182 +TEXDEF txt182 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 1 0.625 RAD 0.03125 + txt182 +TEXDEF txt182 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 1 0.625 APEX 0.734531 1 0.625 RAD 0.0078125 + txt182 +TEXDEF txt182 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 1 0.640469 APEX 0.625 1 0.734531 RAD 0.0078125 + txt182 +TEXDEF txt182 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 1 0.75 RAD 0.03125 + txt182 +TEXDEF txt183 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 1 0.75 APEX 0.734531 1 0.75 RAD 0.0078125 + txt183 +TEXDEF txt183 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 1 0.765469 APEX 0.625 1 0.859531 RAD 0.0078125 + txt183 +TEXDEF txt183 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 1 0.875 RAD 0.03125 + txt183 +TEXDEF txt183 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 1 0.875 APEX 0.734531 1 0.875 RAD 0.0078125 + txt183 +TEXDEF txt183 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.625 1 0.890469 APEX 0.625 1 0.984531 RAD 0.0078125 + txt183 +TEXDEF txt183 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.625 1 1 RAD 0.03125 + txt183 +TEXDEF txt183 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.640469 1 1 APEX 0.734531 1 1 RAD 0.0078125 + txt183 +TEXDEF txt183 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0 0 RAD 0.03125 + txt183 +TEXDEF txt183 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0 0 APEX 0.859531 0 0 RAD 0.0078125 + txt183 +TEXDEF txt183 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.0154687 0 APEX 0.75 0.109531 0 RAD 0.0078125 + txt183 +TEXDEF txt184 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0 0.0154687 APEX 0.75 0 0.109531 RAD 0.0078125 + txt184 +TEXDEF txt184 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0 0.125 RAD 0.03125 + txt184 +TEXDEF txt184 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0 0.125 APEX 0.859531 0 0.125 RAD 0.0078125 + txt184 +TEXDEF txt184 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.0154687 0.125 APEX 0.75 0.109531 0.125 RAD 0.0078125 + txt184 +TEXDEF txt184 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0 0.140469 APEX 0.75 0 0.234531 RAD 0.0078125 + txt184 +TEXDEF txt184 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0 0.25 RAD 0.03125 + txt184 +TEXDEF txt184 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0 0.25 APEX 0.859531 0 0.25 RAD 0.0078125 + txt184 +TEXDEF txt184 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.0154687 0.25 APEX 0.75 0.109531 0.25 RAD 0.0078125 + txt184 +TEXDEF txt184 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0 0.265469 APEX 0.75 0 0.359531 RAD 0.0078125 + txt184 +TEXDEF txt184 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0 0.375 RAD 0.03125 + txt184 +TEXDEF txt185 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0 0.375 APEX 0.859531 0 0.375 RAD 0.0078125 + txt185 +TEXDEF txt185 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.0154687 0.375 APEX 0.75 0.109531 0.375 RAD 0.0078125 + txt185 +TEXDEF txt185 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0 0.390469 APEX 0.75 0 0.484531 RAD 0.0078125 + txt185 +TEXDEF txt185 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0 0.5 RAD 0.03125 + txt185 +TEXDEF txt185 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0 0.5 APEX 0.859531 0 0.5 RAD 0.0078125 + txt185 +TEXDEF txt185 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.0154687 0.5 APEX 0.75 0.109531 0.5 RAD 0.0078125 + txt185 +TEXDEF txt185 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0 0.515469 APEX 0.75 0 0.609531 RAD 0.0078125 + txt185 +TEXDEF txt185 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0 0.625 RAD 0.03125 + txt185 +TEXDEF txt185 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0 0.625 APEX 0.859531 0 0.625 RAD 0.0078125 + txt185 +TEXDEF txt185 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.0154687 0.625 APEX 0.75 0.109531 0.625 RAD 0.0078125 + txt185 +TEXDEF txt186 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0 0.640469 APEX 0.75 0 0.734531 RAD 0.0078125 + txt186 +TEXDEF txt186 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0 0.75 RAD 0.03125 + txt186 +TEXDEF txt186 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0 0.75 APEX 0.859531 0 0.75 RAD 0.0078125 + txt186 +TEXDEF txt186 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.0154687 0.75 APEX 0.75 0.109531 0.75 RAD 0.0078125 + txt186 +TEXDEF txt186 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0 0.765469 APEX 0.75 0 0.859531 RAD 0.0078125 + txt186 +TEXDEF txt186 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0 0.875 RAD 0.03125 + txt186 +TEXDEF txt186 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0 0.875 APEX 0.859531 0 0.875 RAD 0.0078125 + txt186 +TEXDEF txt186 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.0154687 0.875 APEX 0.75 0.109531 0.875 RAD 0.0078125 + txt186 +TEXDEF txt186 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0 0.890469 APEX 0.75 0 0.984531 RAD 0.0078125 + txt186 +TEXDEF txt186 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0 1 RAD 0.03125 + txt186 +TEXDEF txt187 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0 1 APEX 0.859531 0 1 RAD 0.0078125 + txt187 +TEXDEF txt187 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.0154687 1 APEX 0.75 0.109531 1 RAD 0.0078125 + txt187 +TEXDEF txt187 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.125 0 RAD 0.03125 + txt187 +TEXDEF txt187 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.125 0 APEX 0.859531 0.125 0 RAD 0.0078125 + txt187 +TEXDEF txt187 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.140469 0 APEX 0.75 0.234531 0 RAD 0.0078125 + txt187 +TEXDEF txt187 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.125 0.0154687 APEX 0.75 0.125 0.109531 RAD 0.0078125 + txt187 +TEXDEF txt187 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.125 0.125 RAD 0.03125 + txt187 +TEXDEF txt187 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.125 0.125 APEX 0.859531 0.125 0.125 RAD 0.0078125 + txt187 +TEXDEF txt187 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.140469 0.125 APEX 0.75 0.234531 0.125 RAD 0.0078125 + txt187 +TEXDEF txt187 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.125 0.140469 APEX 0.75 0.125 0.234531 RAD 0.0078125 + txt187 +TEXDEF txt188 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.125 0.25 RAD 0.03125 + txt188 +TEXDEF txt188 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.125 0.25 APEX 0.859531 0.125 0.25 RAD 0.0078125 + txt188 +TEXDEF txt188 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.140469 0.25 APEX 0.75 0.234531 0.25 RAD 0.0078125 + txt188 +TEXDEF txt188 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.125 0.265469 APEX 0.75 0.125 0.359531 RAD 0.0078125 + txt188 +TEXDEF txt188 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.125 0.375 RAD 0.03125 + txt188 +TEXDEF txt188 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.125 0.375 APEX 0.859531 0.125 0.375 RAD 0.0078125 + txt188 +TEXDEF txt188 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.140469 0.375 APEX 0.75 0.234531 0.375 RAD 0.0078125 + txt188 +TEXDEF txt188 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.125 0.390469 APEX 0.75 0.125 0.484531 RAD 0.0078125 + txt188 +TEXDEF txt188 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.125 0.5 RAD 0.03125 + txt188 +TEXDEF txt188 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.125 0.5 APEX 0.859531 0.125 0.5 RAD 0.0078125 + txt188 +TEXDEF txt189 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.140469 0.5 APEX 0.75 0.234531 0.5 RAD 0.0078125 + txt189 +TEXDEF txt189 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.125 0.515469 APEX 0.75 0.125 0.609531 RAD 0.0078125 + txt189 +TEXDEF txt189 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.125 0.625 RAD 0.03125 + txt189 +TEXDEF txt189 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.125 0.625 APEX 0.859531 0.125 0.625 RAD 0.0078125 + txt189 +TEXDEF txt189 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.140469 0.625 APEX 0.75 0.234531 0.625 RAD 0.0078125 + txt189 +TEXDEF txt189 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.125 0.640469 APEX 0.75 0.125 0.734531 RAD 0.0078125 + txt189 +TEXDEF txt189 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.125 0.75 RAD 0.03125 + txt189 +TEXDEF txt189 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.125 0.75 APEX 0.859531 0.125 0.75 RAD 0.0078125 + txt189 +TEXDEF txt189 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.140469 0.75 APEX 0.75 0.234531 0.75 RAD 0.0078125 + txt189 +TEXDEF txt189 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.125 0.765469 APEX 0.75 0.125 0.859531 RAD 0.0078125 + txt189 +TEXDEF txt190 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.125 0.875 RAD 0.03125 + txt190 +TEXDEF txt190 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.125 0.875 APEX 0.859531 0.125 0.875 RAD 0.0078125 + txt190 +TEXDEF txt190 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.140469 0.875 APEX 0.75 0.234531 0.875 RAD 0.0078125 + txt190 +TEXDEF txt190 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.125 0.890469 APEX 0.75 0.125 0.984531 RAD 0.0078125 + txt190 +TEXDEF txt190 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.125 1 RAD 0.03125 + txt190 +TEXDEF txt190 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.125 1 APEX 0.859531 0.125 1 RAD 0.0078125 + txt190 +TEXDEF txt190 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.140469 1 APEX 0.75 0.234531 1 RAD 0.0078125 + txt190 +TEXDEF txt190 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.25 0 RAD 0.03125 + txt190 +TEXDEF txt190 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.25 0 APEX 0.859531 0.25 0 RAD 0.0078125 + txt190 +TEXDEF txt190 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.265469 0 APEX 0.75 0.359531 0 RAD 0.0078125 + txt190 +TEXDEF txt191 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.25 0.0154687 APEX 0.75 0.25 0.109531 RAD 0.0078125 + txt191 +TEXDEF txt191 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.25 0.125 RAD 0.03125 + txt191 +TEXDEF txt191 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.25 0.125 APEX 0.859531 0.25 0.125 RAD 0.0078125 + txt191 +TEXDEF txt191 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.265469 0.125 APEX 0.75 0.359531 0.125 RAD 0.0078125 + txt191 +TEXDEF txt191 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.25 0.140469 APEX 0.75 0.25 0.234531 RAD 0.0078125 + txt191 +TEXDEF txt191 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.25 0.25 RAD 0.03125 + txt191 +TEXDEF txt191 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.25 0.25 APEX 0.859531 0.25 0.25 RAD 0.0078125 + txt191 +TEXDEF txt191 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.265469 0.25 APEX 0.75 0.359531 0.25 RAD 0.0078125 + txt191 +TEXDEF txt191 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.25 0.265469 APEX 0.75 0.25 0.359531 RAD 0.0078125 + txt191 +TEXDEF txt191 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.25 0.375 RAD 0.03125 + txt191 +TEXDEF txt192 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.25 0.375 APEX 0.859531 0.25 0.375 RAD 0.0078125 + txt192 +TEXDEF txt192 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.265469 0.375 APEX 0.75 0.359531 0.375 RAD 0.0078125 + txt192 +TEXDEF txt192 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.25 0.390469 APEX 0.75 0.25 0.484531 RAD 0.0078125 + txt192 +TEXDEF txt192 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.25 0.5 RAD 0.03125 + txt192 +TEXDEF txt192 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.25 0.5 APEX 0.859531 0.25 0.5 RAD 0.0078125 + txt192 +TEXDEF txt192 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.265469 0.5 APEX 0.75 0.359531 0.5 RAD 0.0078125 + txt192 +TEXDEF txt192 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.25 0.515469 APEX 0.75 0.25 0.609531 RAD 0.0078125 + txt192 +TEXDEF txt192 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.25 0.625 RAD 0.03125 + txt192 +TEXDEF txt192 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.25 0.625 APEX 0.859531 0.25 0.625 RAD 0.0078125 + txt192 +TEXDEF txt192 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.265469 0.625 APEX 0.75 0.359531 0.625 RAD 0.0078125 + txt192 +TEXDEF txt193 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.25 0.640469 APEX 0.75 0.25 0.734531 RAD 0.0078125 + txt193 +TEXDEF txt193 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.25 0.75 RAD 0.03125 + txt193 +TEXDEF txt193 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.25 0.75 APEX 0.859531 0.25 0.75 RAD 0.0078125 + txt193 +TEXDEF txt193 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.265469 0.75 APEX 0.75 0.359531 0.75 RAD 0.0078125 + txt193 +TEXDEF txt193 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.25 0.765469 APEX 0.75 0.25 0.859531 RAD 0.0078125 + txt193 +TEXDEF txt193 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.25 0.875 RAD 0.03125 + txt193 +TEXDEF txt193 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.25 0.875 APEX 0.859531 0.25 0.875 RAD 0.0078125 + txt193 +TEXDEF txt193 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.265469 0.875 APEX 0.75 0.359531 0.875 RAD 0.0078125 + txt193 +TEXDEF txt193 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.25 0.890469 APEX 0.75 0.25 0.984531 RAD 0.0078125 + txt193 +TEXDEF txt193 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.25 1 RAD 0.03125 + txt193 +TEXDEF txt194 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.25 1 APEX 0.859531 0.25 1 RAD 0.0078125 + txt194 +TEXDEF txt194 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.265469 1 APEX 0.75 0.359531 1 RAD 0.0078125 + txt194 +TEXDEF txt194 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.375 0 RAD 0.03125 + txt194 +TEXDEF txt194 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.375 0 APEX 0.859531 0.375 0 RAD 0.0078125 + txt194 +TEXDEF txt194 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.390469 0 APEX 0.75 0.484531 0 RAD 0.0078125 + txt194 +TEXDEF txt194 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.375 0.0154687 APEX 0.75 0.375 0.109531 RAD 0.0078125 + txt194 +TEXDEF txt194 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.375 0.125 RAD 0.03125 + txt194 +TEXDEF txt194 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.375 0.125 APEX 0.859531 0.375 0.125 RAD 0.0078125 + txt194 +TEXDEF txt194 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.390469 0.125 APEX 0.75 0.484531 0.125 RAD 0.0078125 + txt194 +TEXDEF txt194 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.375 0.140469 APEX 0.75 0.375 0.234531 RAD 0.0078125 + txt194 +TEXDEF txt195 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.375 0.25 RAD 0.03125 + txt195 +TEXDEF txt195 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.375 0.25 APEX 0.859531 0.375 0.25 RAD 0.0078125 + txt195 +TEXDEF txt195 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.390469 0.25 APEX 0.75 0.484531 0.25 RAD 0.0078125 + txt195 +TEXDEF txt195 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.375 0.265469 APEX 0.75 0.375 0.359531 RAD 0.0078125 + txt195 +TEXDEF txt195 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.375 0.375 RAD 0.03125 + txt195 +TEXDEF txt195 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.375 0.375 APEX 0.859531 0.375 0.375 RAD 0.0078125 + txt195 +TEXDEF txt195 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.390469 0.375 APEX 0.75 0.484531 0.375 RAD 0.0078125 + txt195 +TEXDEF txt195 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.375 0.390469 APEX 0.75 0.375 0.484531 RAD 0.0078125 + txt195 +TEXDEF txt195 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.375 0.5 RAD 0.03125 + txt195 +TEXDEF txt195 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.375 0.5 APEX 0.859531 0.375 0.5 RAD 0.0078125 + txt195 +TEXDEF txt196 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.390469 0.5 APEX 0.75 0.484531 0.5 RAD 0.0078125 + txt196 +TEXDEF txt196 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.375 0.515469 APEX 0.75 0.375 0.609531 RAD 0.0078125 + txt196 +TEXDEF txt196 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.375 0.625 RAD 0.03125 + txt196 +TEXDEF txt196 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.375 0.625 APEX 0.859531 0.375 0.625 RAD 0.0078125 + txt196 +TEXDEF txt196 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.390469 0.625 APEX 0.75 0.484531 0.625 RAD 0.0078125 + txt196 +TEXDEF txt196 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.375 0.640469 APEX 0.75 0.375 0.734531 RAD 0.0078125 + txt196 +TEXDEF txt196 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.375 0.75 RAD 0.03125 + txt196 +TEXDEF txt196 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.375 0.75 APEX 0.859531 0.375 0.75 RAD 0.0078125 + txt196 +TEXDEF txt196 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.390469 0.75 APEX 0.75 0.484531 0.75 RAD 0.0078125 + txt196 +TEXDEF txt196 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.375 0.765469 APEX 0.75 0.375 0.859531 RAD 0.0078125 + txt196 +TEXDEF txt197 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.375 0.875 RAD 0.03125 + txt197 +TEXDEF txt197 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.375 0.875 APEX 0.859531 0.375 0.875 RAD 0.0078125 + txt197 +TEXDEF txt197 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.390469 0.875 APEX 0.75 0.484531 0.875 RAD 0.0078125 + txt197 +TEXDEF txt197 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.375 0.890469 APEX 0.75 0.375 0.984531 RAD 0.0078125 + txt197 +TEXDEF txt197 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.375 1 RAD 0.03125 + txt197 +TEXDEF txt197 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.375 1 APEX 0.859531 0.375 1 RAD 0.0078125 + txt197 +TEXDEF txt197 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.390469 1 APEX 0.75 0.484531 1 RAD 0.0078125 + txt197 +TEXDEF txt197 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.5 0 RAD 0.03125 + txt197 +TEXDEF txt197 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.5 0 APEX 0.859531 0.5 0 RAD 0.0078125 + txt197 +TEXDEF txt197 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.515469 0 APEX 0.75 0.609531 0 RAD 0.0078125 + txt197 +TEXDEF txt198 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.5 0.0154687 APEX 0.75 0.5 0.109531 RAD 0.0078125 + txt198 +TEXDEF txt198 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.5 0.125 RAD 0.03125 + txt198 +TEXDEF txt198 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.5 0.125 APEX 0.859531 0.5 0.125 RAD 0.0078125 + txt198 +TEXDEF txt198 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.515469 0.125 APEX 0.75 0.609531 0.125 RAD 0.0078125 + txt198 +TEXDEF txt198 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.5 0.140469 APEX 0.75 0.5 0.234531 RAD 0.0078125 + txt198 +TEXDEF txt198 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.5 0.25 RAD 0.03125 + txt198 +TEXDEF txt198 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.5 0.25 APEX 0.859531 0.5 0.25 RAD 0.0078125 + txt198 +TEXDEF txt198 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.515469 0.25 APEX 0.75 0.609531 0.25 RAD 0.0078125 + txt198 +TEXDEF txt198 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.5 0.265469 APEX 0.75 0.5 0.359531 RAD 0.0078125 + txt198 +TEXDEF txt198 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.5 0.375 RAD 0.03125 + txt198 +TEXDEF txt199 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.5 0.375 APEX 0.859531 0.5 0.375 RAD 0.0078125 + txt199 +TEXDEF txt199 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.515469 0.375 APEX 0.75 0.609531 0.375 RAD 0.0078125 + txt199 +TEXDEF txt199 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.5 0.390469 APEX 0.75 0.5 0.484531 RAD 0.0078125 + txt199 +TEXDEF txt199 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.5 0.5 RAD 0.03125 + txt199 +TEXDEF txt199 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.5 0.5 APEX 0.859531 0.5 0.5 RAD 0.0078125 + txt199 +TEXDEF txt199 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.515469 0.5 APEX 0.75 0.609531 0.5 RAD 0.0078125 + txt199 +TEXDEF txt199 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.5 0.515469 APEX 0.75 0.5 0.609531 RAD 0.0078125 + txt199 +TEXDEF txt199 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.5 0.625 RAD 0.03125 + txt199 +TEXDEF txt199 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.5 0.625 APEX 0.859531 0.5 0.625 RAD 0.0078125 + txt199 +TEXDEF txt199 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.515469 0.625 APEX 0.75 0.609531 0.625 RAD 0.0078125 + txt199 +TEXDEF txt200 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.5 0.640469 APEX 0.75 0.5 0.734531 RAD 0.0078125 + txt200 +TEXDEF txt200 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.5 0.75 RAD 0.03125 + txt200 +TEXDEF txt200 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.5 0.75 APEX 0.859531 0.5 0.75 RAD 0.0078125 + txt200 +TEXDEF txt200 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.515469 0.75 APEX 0.75 0.609531 0.75 RAD 0.0078125 + txt200 +TEXDEF txt200 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.5 0.765469 APEX 0.75 0.5 0.859531 RAD 0.0078125 + txt200 +TEXDEF txt200 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.5 0.875 RAD 0.03125 + txt200 +TEXDEF txt200 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.5 0.875 APEX 0.859531 0.5 0.875 RAD 0.0078125 + txt200 +TEXDEF txt200 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.515469 0.875 APEX 0.75 0.609531 0.875 RAD 0.0078125 + txt200 +TEXDEF txt200 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.5 0.890469 APEX 0.75 0.5 0.984531 RAD 0.0078125 + txt200 +TEXDEF txt200 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.5 1 RAD 0.03125 + txt200 +TEXDEF txt201 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.5 1 APEX 0.859531 0.5 1 RAD 0.0078125 + txt201 +TEXDEF txt201 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.515469 1 APEX 0.75 0.609531 1 RAD 0.0078125 + txt201 +TEXDEF txt201 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.625 0 RAD 0.03125 + txt201 +TEXDEF txt201 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.625 0 APEX 0.859531 0.625 0 RAD 0.0078125 + txt201 +TEXDEF txt201 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.640469 0 APEX 0.75 0.734531 0 RAD 0.0078125 + txt201 +TEXDEF txt201 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.625 0.0154687 APEX 0.75 0.625 0.109531 RAD 0.0078125 + txt201 +TEXDEF txt201 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.625 0.125 RAD 0.03125 + txt201 +TEXDEF txt201 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.625 0.125 APEX 0.859531 0.625 0.125 RAD 0.0078125 + txt201 +TEXDEF txt201 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.640469 0.125 APEX 0.75 0.734531 0.125 RAD 0.0078125 + txt201 +TEXDEF txt201 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.625 0.140469 APEX 0.75 0.625 0.234531 RAD 0.0078125 + txt201 +TEXDEF txt202 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.625 0.25 RAD 0.03125 + txt202 +TEXDEF txt202 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.625 0.25 APEX 0.859531 0.625 0.25 RAD 0.0078125 + txt202 +TEXDEF txt202 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.640469 0.25 APEX 0.75 0.734531 0.25 RAD 0.0078125 + txt202 +TEXDEF txt202 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.625 0.265469 APEX 0.75 0.625 0.359531 RAD 0.0078125 + txt202 +TEXDEF txt202 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.625 0.375 RAD 0.03125 + txt202 +TEXDEF txt202 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.625 0.375 APEX 0.859531 0.625 0.375 RAD 0.0078125 + txt202 +TEXDEF txt202 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.640469 0.375 APEX 0.75 0.734531 0.375 RAD 0.0078125 + txt202 +TEXDEF txt202 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.625 0.390469 APEX 0.75 0.625 0.484531 RAD 0.0078125 + txt202 +TEXDEF txt202 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.625 0.5 RAD 0.03125 + txt202 +TEXDEF txt202 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.625 0.5 APEX 0.859531 0.625 0.5 RAD 0.0078125 + txt202 +TEXDEF txt203 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.640469 0.5 APEX 0.75 0.734531 0.5 RAD 0.0078125 + txt203 +TEXDEF txt203 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.625 0.515469 APEX 0.75 0.625 0.609531 RAD 0.0078125 + txt203 +TEXDEF txt203 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.625 0.625 RAD 0.03125 + txt203 +TEXDEF txt203 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.625 0.625 APEX 0.859531 0.625 0.625 RAD 0.0078125 + txt203 +TEXDEF txt203 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.640469 0.625 APEX 0.75 0.734531 0.625 RAD 0.0078125 + txt203 +TEXDEF txt203 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.625 0.640469 APEX 0.75 0.625 0.734531 RAD 0.0078125 + txt203 +TEXDEF txt203 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.625 0.75 RAD 0.03125 + txt203 +TEXDEF txt203 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.625 0.75 APEX 0.859531 0.625 0.75 RAD 0.0078125 + txt203 +TEXDEF txt203 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.640469 0.75 APEX 0.75 0.734531 0.75 RAD 0.0078125 + txt203 +TEXDEF txt203 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.625 0.765469 APEX 0.75 0.625 0.859531 RAD 0.0078125 + txt203 +TEXDEF txt204 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.625 0.875 RAD 0.03125 + txt204 +TEXDEF txt204 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.625 0.875 APEX 0.859531 0.625 0.875 RAD 0.0078125 + txt204 +TEXDEF txt204 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.640469 0.875 APEX 0.75 0.734531 0.875 RAD 0.0078125 + txt204 +TEXDEF txt204 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.625 0.890469 APEX 0.75 0.625 0.984531 RAD 0.0078125 + txt204 +TEXDEF txt204 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.625 1 RAD 0.03125 + txt204 +TEXDEF txt204 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.625 1 APEX 0.859531 0.625 1 RAD 0.0078125 + txt204 +TEXDEF txt204 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.640469 1 APEX 0.75 0.734531 1 RAD 0.0078125 + txt204 +TEXDEF txt204 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.75 0 RAD 0.03125 + txt204 +TEXDEF txt204 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.75 0 APEX 0.859531 0.75 0 RAD 0.0078125 + txt204 +TEXDEF txt204 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.765469 0 APEX 0.75 0.859531 0 RAD 0.0078125 + txt204 +TEXDEF txt205 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.75 0.0154687 APEX 0.75 0.75 0.109531 RAD 0.0078125 + txt205 +TEXDEF txt205 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.75 0.125 RAD 0.03125 + txt205 +TEXDEF txt205 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.75 0.125 APEX 0.859531 0.75 0.125 RAD 0.0078125 + txt205 +TEXDEF txt205 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.765469 0.125 APEX 0.75 0.859531 0.125 RAD 0.0078125 + txt205 +TEXDEF txt205 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.75 0.140469 APEX 0.75 0.75 0.234531 RAD 0.0078125 + txt205 +TEXDEF txt205 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.75 0.25 RAD 0.03125 + txt205 +TEXDEF txt205 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.75 0.25 APEX 0.859531 0.75 0.25 RAD 0.0078125 + txt205 +TEXDEF txt205 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.765469 0.25 APEX 0.75 0.859531 0.25 RAD 0.0078125 + txt205 +TEXDEF txt205 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.75 0.265469 APEX 0.75 0.75 0.359531 RAD 0.0078125 + txt205 +TEXDEF txt205 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.75 0.375 RAD 0.03125 + txt205 +TEXDEF txt206 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.75 0.375 APEX 0.859531 0.75 0.375 RAD 0.0078125 + txt206 +TEXDEF txt206 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.765469 0.375 APEX 0.75 0.859531 0.375 RAD 0.0078125 + txt206 +TEXDEF txt206 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.75 0.390469 APEX 0.75 0.75 0.484531 RAD 0.0078125 + txt206 +TEXDEF txt206 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.75 0.5 RAD 0.03125 + txt206 +TEXDEF txt206 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.75 0.5 APEX 0.859531 0.75 0.5 RAD 0.0078125 + txt206 +TEXDEF txt206 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.765469 0.5 APEX 0.75 0.859531 0.5 RAD 0.0078125 + txt206 +TEXDEF txt206 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.75 0.515469 APEX 0.75 0.75 0.609531 RAD 0.0078125 + txt206 +TEXDEF txt206 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.75 0.625 RAD 0.03125 + txt206 +TEXDEF txt206 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.75 0.625 APEX 0.859531 0.75 0.625 RAD 0.0078125 + txt206 +TEXDEF txt206 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.765469 0.625 APEX 0.75 0.859531 0.625 RAD 0.0078125 + txt206 +TEXDEF txt207 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.75 0.640469 APEX 0.75 0.75 0.734531 RAD 0.0078125 + txt207 +TEXDEF txt207 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.75 0.75 RAD 0.03125 + txt207 +TEXDEF txt207 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.75 0.75 APEX 0.859531 0.75 0.75 RAD 0.0078125 + txt207 +TEXDEF txt207 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.765469 0.75 APEX 0.75 0.859531 0.75 RAD 0.0078125 + txt207 +TEXDEF txt207 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.75 0.765469 APEX 0.75 0.75 0.859531 RAD 0.0078125 + txt207 +TEXDEF txt207 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.75 0.875 RAD 0.03125 + txt207 +TEXDEF txt207 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.75 0.875 APEX 0.859531 0.75 0.875 RAD 0.0078125 + txt207 +TEXDEF txt207 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.765469 0.875 APEX 0.75 0.859531 0.875 RAD 0.0078125 + txt207 +TEXDEF txt207 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.75 0.890469 APEX 0.75 0.75 0.984531 RAD 0.0078125 + txt207 +TEXDEF txt207 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.75 1 RAD 0.03125 + txt207 +TEXDEF txt208 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.75 1 APEX 0.859531 0.75 1 RAD 0.0078125 + txt208 +TEXDEF txt208 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.765469 1 APEX 0.75 0.859531 1 RAD 0.0078125 + txt208 +TEXDEF txt208 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.875 0 RAD 0.03125 + txt208 +TEXDEF txt208 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.875 0 APEX 0.859531 0.875 0 RAD 0.0078125 + txt208 +TEXDEF txt208 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.890469 0 APEX 0.75 0.984531 0 RAD 0.0078125 + txt208 +TEXDEF txt208 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.875 0.0154687 APEX 0.75 0.875 0.109531 RAD 0.0078125 + txt208 +TEXDEF txt208 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.875 0.125 RAD 0.03125 + txt208 +TEXDEF txt208 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.875 0.125 APEX 0.859531 0.875 0.125 RAD 0.0078125 + txt208 +TEXDEF txt208 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.890469 0.125 APEX 0.75 0.984531 0.125 RAD 0.0078125 + txt208 +TEXDEF txt208 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.875 0.140469 APEX 0.75 0.875 0.234531 RAD 0.0078125 + txt208 +TEXDEF txt209 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.875 0.25 RAD 0.03125 + txt209 +TEXDEF txt209 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.875 0.25 APEX 0.859531 0.875 0.25 RAD 0.0078125 + txt209 +TEXDEF txt209 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.890469 0.25 APEX 0.75 0.984531 0.25 RAD 0.0078125 + txt209 +TEXDEF txt209 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.875 0.265469 APEX 0.75 0.875 0.359531 RAD 0.0078125 + txt209 +TEXDEF txt209 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.875 0.375 RAD 0.03125 + txt209 +TEXDEF txt209 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.875 0.375 APEX 0.859531 0.875 0.375 RAD 0.0078125 + txt209 +TEXDEF txt209 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.890469 0.375 APEX 0.75 0.984531 0.375 RAD 0.0078125 + txt209 +TEXDEF txt209 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.875 0.390469 APEX 0.75 0.875 0.484531 RAD 0.0078125 + txt209 +TEXDEF txt209 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.875 0.5 RAD 0.03125 + txt209 +TEXDEF txt209 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.875 0.5 APEX 0.859531 0.875 0.5 RAD 0.0078125 + txt209 +TEXDEF txt210 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.890469 0.5 APEX 0.75 0.984531 0.5 RAD 0.0078125 + txt210 +TEXDEF txt210 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.875 0.515469 APEX 0.75 0.875 0.609531 RAD 0.0078125 + txt210 +TEXDEF txt210 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.875 0.625 RAD 0.03125 + txt210 +TEXDEF txt210 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.875 0.625 APEX 0.859531 0.875 0.625 RAD 0.0078125 + txt210 +TEXDEF txt210 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.890469 0.625 APEX 0.75 0.984531 0.625 RAD 0.0078125 + txt210 +TEXDEF txt210 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.875 0.640469 APEX 0.75 0.875 0.734531 RAD 0.0078125 + txt210 +TEXDEF txt210 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.875 0.75 RAD 0.03125 + txt210 +TEXDEF txt210 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.875 0.75 APEX 0.859531 0.875 0.75 RAD 0.0078125 + txt210 +TEXDEF txt210 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.890469 0.75 APEX 0.75 0.984531 0.75 RAD 0.0078125 + txt210 +TEXDEF txt210 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.875 0.765469 APEX 0.75 0.875 0.859531 RAD 0.0078125 + txt210 +TEXDEF txt211 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.875 0.875 RAD 0.03125 + txt211 +TEXDEF txt211 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.875 0.875 APEX 0.859531 0.875 0.875 RAD 0.0078125 + txt211 +TEXDEF txt211 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.890469 0.875 APEX 0.75 0.984531 0.875 RAD 0.0078125 + txt211 +TEXDEF txt211 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.875 0.890469 APEX 0.75 0.875 0.984531 RAD 0.0078125 + txt211 +TEXDEF txt211 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 0.875 1 RAD 0.03125 + txt211 +TEXDEF txt211 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 0.875 1 APEX 0.859531 0.875 1 RAD 0.0078125 + txt211 +TEXDEF txt211 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 0.890469 1 APEX 0.75 0.984531 1 RAD 0.0078125 + txt211 +TEXDEF txt211 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 1 0 RAD 0.03125 + txt211 +TEXDEF txt211 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 1 0 APEX 0.859531 1 0 RAD 0.0078125 + txt211 +TEXDEF txt211 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 1 0.0154687 APEX 0.75 1 0.109531 RAD 0.0078125 + txt211 +TEXDEF txt212 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 1 0.125 RAD 0.03125 + txt212 +TEXDEF txt212 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 1 0.125 APEX 0.859531 1 0.125 RAD 0.0078125 + txt212 +TEXDEF txt212 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 1 0.140469 APEX 0.75 1 0.234531 RAD 0.0078125 + txt212 +TEXDEF txt212 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 1 0.25 RAD 0.03125 + txt212 +TEXDEF txt212 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 1 0.25 APEX 0.859531 1 0.25 RAD 0.0078125 + txt212 +TEXDEF txt212 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 1 0.265469 APEX 0.75 1 0.359531 RAD 0.0078125 + txt212 +TEXDEF txt212 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 1 0.375 RAD 0.03125 + txt212 +TEXDEF txt212 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 1 0.375 APEX 0.859531 1 0.375 RAD 0.0078125 + txt212 +TEXDEF txt212 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 1 0.390469 APEX 0.75 1 0.484531 RAD 0.0078125 + txt212 +TEXDEF txt212 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 1 0.5 RAD 0.03125 + txt212 +TEXDEF txt213 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 1 0.5 APEX 0.859531 1 0.5 RAD 0.0078125 + txt213 +TEXDEF txt213 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 1 0.515469 APEX 0.75 1 0.609531 RAD 0.0078125 + txt213 +TEXDEF txt213 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 1 0.625 RAD 0.03125 + txt213 +TEXDEF txt213 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 1 0.625 APEX 0.859531 1 0.625 RAD 0.0078125 + txt213 +TEXDEF txt213 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 1 0.640469 APEX 0.75 1 0.734531 RAD 0.0078125 + txt213 +TEXDEF txt213 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 1 0.75 RAD 0.03125 + txt213 +TEXDEF txt213 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 1 0.75 APEX 0.859531 1 0.75 RAD 0.0078125 + txt213 +TEXDEF txt213 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 1 0.765469 APEX 0.75 1 0.859531 RAD 0.0078125 + txt213 +TEXDEF txt213 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 1 0.875 RAD 0.03125 + txt213 +TEXDEF txt213 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 1 0.875 APEX 0.859531 1 0.875 RAD 0.0078125 + txt213 +TEXDEF txt214 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.75 1 0.890469 APEX 0.75 1 0.984531 RAD 0.0078125 + txt214 +TEXDEF txt214 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.75 1 1 RAD 0.03125 + txt214 +TEXDEF txt214 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.765469 1 1 APEX 0.859531 1 1 RAD 0.0078125 + txt214 +TEXDEF txt214 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0 0 RAD 0.03125 + txt214 +TEXDEF txt214 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0 0 APEX 0.984531 0 0 RAD 0.0078125 + txt214 +TEXDEF txt214 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.0154687 0 APEX 0.875 0.109531 0 RAD 0.0078125 + txt214 +TEXDEF txt214 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0 0.0154687 APEX 0.875 0 0.109531 RAD 0.0078125 + txt214 +TEXDEF txt214 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0 0.125 RAD 0.03125 + txt214 +TEXDEF txt214 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0 0.125 APEX 0.984531 0 0.125 RAD 0.0078125 + txt214 +TEXDEF txt214 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.0154687 0.125 APEX 0.875 0.109531 0.125 RAD 0.0078125 + txt214 +TEXDEF txt215 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0 0.140469 APEX 0.875 0 0.234531 RAD 0.0078125 + txt215 +TEXDEF txt215 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0 0.25 RAD 0.03125 + txt215 +TEXDEF txt215 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0 0.25 APEX 0.984531 0 0.25 RAD 0.0078125 + txt215 +TEXDEF txt215 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.0154687 0.25 APEX 0.875 0.109531 0.25 RAD 0.0078125 + txt215 +TEXDEF txt215 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0 0.265469 APEX 0.875 0 0.359531 RAD 0.0078125 + txt215 +TEXDEF txt215 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0 0.375 RAD 0.03125 + txt215 +TEXDEF txt215 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0 0.375 APEX 0.984531 0 0.375 RAD 0.0078125 + txt215 +TEXDEF txt215 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.0154687 0.375 APEX 0.875 0.109531 0.375 RAD 0.0078125 + txt215 +TEXDEF txt215 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0 0.390469 APEX 0.875 0 0.484531 RAD 0.0078125 + txt215 +TEXDEF txt215 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0 0.5 RAD 0.03125 + txt215 +TEXDEF txt216 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0 0.5 APEX 0.984531 0 0.5 RAD 0.0078125 + txt216 +TEXDEF txt216 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.0154687 0.5 APEX 0.875 0.109531 0.5 RAD 0.0078125 + txt216 +TEXDEF txt216 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0 0.515469 APEX 0.875 0 0.609531 RAD 0.0078125 + txt216 +TEXDEF txt216 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0 0.625 RAD 0.03125 + txt216 +TEXDEF txt216 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0 0.625 APEX 0.984531 0 0.625 RAD 0.0078125 + txt216 +TEXDEF txt216 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.0154687 0.625 APEX 0.875 0.109531 0.625 RAD 0.0078125 + txt216 +TEXDEF txt216 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0 0.640469 APEX 0.875 0 0.734531 RAD 0.0078125 + txt216 +TEXDEF txt216 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0 0.75 RAD 0.03125 + txt216 +TEXDEF txt216 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0 0.75 APEX 0.984531 0 0.75 RAD 0.0078125 + txt216 +TEXDEF txt216 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.0154687 0.75 APEX 0.875 0.109531 0.75 RAD 0.0078125 + txt216 +TEXDEF txt217 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0 0.765469 APEX 0.875 0 0.859531 RAD 0.0078125 + txt217 +TEXDEF txt217 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0 0.875 RAD 0.03125 + txt217 +TEXDEF txt217 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0 0.875 APEX 0.984531 0 0.875 RAD 0.0078125 + txt217 +TEXDEF txt217 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.0154687 0.875 APEX 0.875 0.109531 0.875 RAD 0.0078125 + txt217 +TEXDEF txt217 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0 0.890469 APEX 0.875 0 0.984531 RAD 0.0078125 + txt217 +TEXDEF txt217 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0 1 RAD 0.03125 + txt217 +TEXDEF txt217 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0 1 APEX 0.984531 0 1 RAD 0.0078125 + txt217 +TEXDEF txt217 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.0154687 1 APEX 0.875 0.109531 1 RAD 0.0078125 + txt217 +TEXDEF txt217 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.125 0 RAD 0.03125 + txt217 +TEXDEF txt217 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.125 0 APEX 0.984531 0.125 0 RAD 0.0078125 + txt217 +TEXDEF txt218 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.140469 0 APEX 0.875 0.234531 0 RAD 0.0078125 + txt218 +TEXDEF txt218 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.125 0.0154687 APEX 0.875 0.125 0.109531 RAD 0.0078125 + txt218 +TEXDEF txt218 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.125 0.125 RAD 0.03125 + txt218 +TEXDEF txt218 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.125 0.125 APEX 0.984531 0.125 0.125 RAD 0.0078125 + txt218 +TEXDEF txt218 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.140469 0.125 APEX 0.875 0.234531 0.125 RAD 0.0078125 + txt218 +TEXDEF txt218 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.125 0.140469 APEX 0.875 0.125 0.234531 RAD 0.0078125 + txt218 +TEXDEF txt218 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.125 0.25 RAD 0.03125 + txt218 +TEXDEF txt218 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.125 0.25 APEX 0.984531 0.125 0.25 RAD 0.0078125 + txt218 +TEXDEF txt218 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.140469 0.25 APEX 0.875 0.234531 0.25 RAD 0.0078125 + txt218 +TEXDEF txt218 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.125 0.265469 APEX 0.875 0.125 0.359531 RAD 0.0078125 + txt218 +TEXDEF txt219 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.125 0.375 RAD 0.03125 + txt219 +TEXDEF txt219 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.125 0.375 APEX 0.984531 0.125 0.375 RAD 0.0078125 + txt219 +TEXDEF txt219 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.140469 0.375 APEX 0.875 0.234531 0.375 RAD 0.0078125 + txt219 +TEXDEF txt219 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.125 0.390469 APEX 0.875 0.125 0.484531 RAD 0.0078125 + txt219 +TEXDEF txt219 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.125 0.5 RAD 0.03125 + txt219 +TEXDEF txt219 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.125 0.5 APEX 0.984531 0.125 0.5 RAD 0.0078125 + txt219 +TEXDEF txt219 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.140469 0.5 APEX 0.875 0.234531 0.5 RAD 0.0078125 + txt219 +TEXDEF txt219 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.125 0.515469 APEX 0.875 0.125 0.609531 RAD 0.0078125 + txt219 +TEXDEF txt219 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.125 0.625 RAD 0.03125 + txt219 +TEXDEF txt219 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.125 0.625 APEX 0.984531 0.125 0.625 RAD 0.0078125 + txt219 +TEXDEF txt220 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.140469 0.625 APEX 0.875 0.234531 0.625 RAD 0.0078125 + txt220 +TEXDEF txt220 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.125 0.640469 APEX 0.875 0.125 0.734531 RAD 0.0078125 + txt220 +TEXDEF txt220 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.125 0.75 RAD 0.03125 + txt220 +TEXDEF txt220 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.125 0.75 APEX 0.984531 0.125 0.75 RAD 0.0078125 + txt220 +TEXDEF txt220 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.140469 0.75 APEX 0.875 0.234531 0.75 RAD 0.0078125 + txt220 +TEXDEF txt220 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.125 0.765469 APEX 0.875 0.125 0.859531 RAD 0.0078125 + txt220 +TEXDEF txt220 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.125 0.875 RAD 0.03125 + txt220 +TEXDEF txt220 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.125 0.875 APEX 0.984531 0.125 0.875 RAD 0.0078125 + txt220 +TEXDEF txt220 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.140469 0.875 APEX 0.875 0.234531 0.875 RAD 0.0078125 + txt220 +TEXDEF txt220 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.125 0.890469 APEX 0.875 0.125 0.984531 RAD 0.0078125 + txt220 +TEXDEF txt221 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.125 1 RAD 0.03125 + txt221 +TEXDEF txt221 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.125 1 APEX 0.984531 0.125 1 RAD 0.0078125 + txt221 +TEXDEF txt221 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.140469 1 APEX 0.875 0.234531 1 RAD 0.0078125 + txt221 +TEXDEF txt221 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.25 0 RAD 0.03125 + txt221 +TEXDEF txt221 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.25 0 APEX 0.984531 0.25 0 RAD 0.0078125 + txt221 +TEXDEF txt221 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.265469 0 APEX 0.875 0.359531 0 RAD 0.0078125 + txt221 +TEXDEF txt221 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.25 0.0154687 APEX 0.875 0.25 0.109531 RAD 0.0078125 + txt221 +TEXDEF txt221 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.25 0.125 RAD 0.03125 + txt221 +TEXDEF txt221 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.25 0.125 APEX 0.984531 0.25 0.125 RAD 0.0078125 + txt221 +TEXDEF txt221 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.265469 0.125 APEX 0.875 0.359531 0.125 RAD 0.0078125 + txt221 +TEXDEF txt222 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.25 0.140469 APEX 0.875 0.25 0.234531 RAD 0.0078125 + txt222 +TEXDEF txt222 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.25 0.25 RAD 0.03125 + txt222 +TEXDEF txt222 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.25 0.25 APEX 0.984531 0.25 0.25 RAD 0.0078125 + txt222 +TEXDEF txt222 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.265469 0.25 APEX 0.875 0.359531 0.25 RAD 0.0078125 + txt222 +TEXDEF txt222 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.25 0.265469 APEX 0.875 0.25 0.359531 RAD 0.0078125 + txt222 +TEXDEF txt222 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.25 0.375 RAD 0.03125 + txt222 +TEXDEF txt222 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.25 0.375 APEX 0.984531 0.25 0.375 RAD 0.0078125 + txt222 +TEXDEF txt222 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.265469 0.375 APEX 0.875 0.359531 0.375 RAD 0.0078125 + txt222 +TEXDEF txt222 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.25 0.390469 APEX 0.875 0.25 0.484531 RAD 0.0078125 + txt222 +TEXDEF txt222 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.25 0.5 RAD 0.03125 + txt222 +TEXDEF txt223 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.25 0.5 APEX 0.984531 0.25 0.5 RAD 0.0078125 + txt223 +TEXDEF txt223 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.265469 0.5 APEX 0.875 0.359531 0.5 RAD 0.0078125 + txt223 +TEXDEF txt223 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.25 0.515469 APEX 0.875 0.25 0.609531 RAD 0.0078125 + txt223 +TEXDEF txt223 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.25 0.625 RAD 0.03125 + txt223 +TEXDEF txt223 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.25 0.625 APEX 0.984531 0.25 0.625 RAD 0.0078125 + txt223 +TEXDEF txt223 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.265469 0.625 APEX 0.875 0.359531 0.625 RAD 0.0078125 + txt223 +TEXDEF txt223 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.25 0.640469 APEX 0.875 0.25 0.734531 RAD 0.0078125 + txt223 +TEXDEF txt223 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.25 0.75 RAD 0.03125 + txt223 +TEXDEF txt223 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.25 0.75 APEX 0.984531 0.25 0.75 RAD 0.0078125 + txt223 +TEXDEF txt223 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.265469 0.75 APEX 0.875 0.359531 0.75 RAD 0.0078125 + txt223 +TEXDEF txt224 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.25 0.765469 APEX 0.875 0.25 0.859531 RAD 0.0078125 + txt224 +TEXDEF txt224 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.25 0.875 RAD 0.03125 + txt224 +TEXDEF txt224 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.25 0.875 APEX 0.984531 0.25 0.875 RAD 0.0078125 + txt224 +TEXDEF txt224 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.265469 0.875 APEX 0.875 0.359531 0.875 RAD 0.0078125 + txt224 +TEXDEF txt224 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.25 0.890469 APEX 0.875 0.25 0.984531 RAD 0.0078125 + txt224 +TEXDEF txt224 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.25 1 RAD 0.03125 + txt224 +TEXDEF txt224 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.25 1 APEX 0.984531 0.25 1 RAD 0.0078125 + txt224 +TEXDEF txt224 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.265469 1 APEX 0.875 0.359531 1 RAD 0.0078125 + txt224 +TEXDEF txt224 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.375 0 RAD 0.03125 + txt224 +TEXDEF txt224 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.375 0 APEX 0.984531 0.375 0 RAD 0.0078125 + txt224 +TEXDEF txt225 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.390469 0 APEX 0.875 0.484531 0 RAD 0.0078125 + txt225 +TEXDEF txt225 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.375 0.0154687 APEX 0.875 0.375 0.109531 RAD 0.0078125 + txt225 +TEXDEF txt225 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.375 0.125 RAD 0.03125 + txt225 +TEXDEF txt225 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.375 0.125 APEX 0.984531 0.375 0.125 RAD 0.0078125 + txt225 +TEXDEF txt225 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.390469 0.125 APEX 0.875 0.484531 0.125 RAD 0.0078125 + txt225 +TEXDEF txt225 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.375 0.140469 APEX 0.875 0.375 0.234531 RAD 0.0078125 + txt225 +TEXDEF txt225 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.375 0.25 RAD 0.03125 + txt225 +TEXDEF txt225 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.375 0.25 APEX 0.984531 0.375 0.25 RAD 0.0078125 + txt225 +TEXDEF txt225 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.390469 0.25 APEX 0.875 0.484531 0.25 RAD 0.0078125 + txt225 +TEXDEF txt225 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.375 0.265469 APEX 0.875 0.375 0.359531 RAD 0.0078125 + txt225 +TEXDEF txt226 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.375 0.375 RAD 0.03125 + txt226 +TEXDEF txt226 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.375 0.375 APEX 0.984531 0.375 0.375 RAD 0.0078125 + txt226 +TEXDEF txt226 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.390469 0.375 APEX 0.875 0.484531 0.375 RAD 0.0078125 + txt226 +TEXDEF txt226 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.375 0.390469 APEX 0.875 0.375 0.484531 RAD 0.0078125 + txt226 +TEXDEF txt226 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.375 0.5 RAD 0.03125 + txt226 +TEXDEF txt226 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.375 0.5 APEX 0.984531 0.375 0.5 RAD 0.0078125 + txt226 +TEXDEF txt226 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.390469 0.5 APEX 0.875 0.484531 0.5 RAD 0.0078125 + txt226 +TEXDEF txt226 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.375 0.515469 APEX 0.875 0.375 0.609531 RAD 0.0078125 + txt226 +TEXDEF txt226 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.375 0.625 RAD 0.03125 + txt226 +TEXDEF txt226 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.375 0.625 APEX 0.984531 0.375 0.625 RAD 0.0078125 + txt226 +TEXDEF txt227 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.390469 0.625 APEX 0.875 0.484531 0.625 RAD 0.0078125 + txt227 +TEXDEF txt227 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.375 0.640469 APEX 0.875 0.375 0.734531 RAD 0.0078125 + txt227 +TEXDEF txt227 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.375 0.75 RAD 0.03125 + txt227 +TEXDEF txt227 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.375 0.75 APEX 0.984531 0.375 0.75 RAD 0.0078125 + txt227 +TEXDEF txt227 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.390469 0.75 APEX 0.875 0.484531 0.75 RAD 0.0078125 + txt227 +TEXDEF txt227 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.375 0.765469 APEX 0.875 0.375 0.859531 RAD 0.0078125 + txt227 +TEXDEF txt227 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.375 0.875 RAD 0.03125 + txt227 +TEXDEF txt227 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.375 0.875 APEX 0.984531 0.375 0.875 RAD 0.0078125 + txt227 +TEXDEF txt227 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.390469 0.875 APEX 0.875 0.484531 0.875 RAD 0.0078125 + txt227 +TEXDEF txt227 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.375 0.890469 APEX 0.875 0.375 0.984531 RAD 0.0078125 + txt227 +TEXDEF txt228 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.375 1 RAD 0.03125 + txt228 +TEXDEF txt228 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.375 1 APEX 0.984531 0.375 1 RAD 0.0078125 + txt228 +TEXDEF txt228 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.390469 1 APEX 0.875 0.484531 1 RAD 0.0078125 + txt228 +TEXDEF txt228 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.5 0 RAD 0.03125 + txt228 +TEXDEF txt228 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.5 0 APEX 0.984531 0.5 0 RAD 0.0078125 + txt228 +TEXDEF txt228 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.515469 0 APEX 0.875 0.609531 0 RAD 0.0078125 + txt228 +TEXDEF txt228 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.5 0.0154687 APEX 0.875 0.5 0.109531 RAD 0.0078125 + txt228 +TEXDEF txt228 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.5 0.125 RAD 0.03125 + txt228 +TEXDEF txt228 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.5 0.125 APEX 0.984531 0.5 0.125 RAD 0.0078125 + txt228 +TEXDEF txt228 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.515469 0.125 APEX 0.875 0.609531 0.125 RAD 0.0078125 + txt228 +TEXDEF txt229 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.5 0.140469 APEX 0.875 0.5 0.234531 RAD 0.0078125 + txt229 +TEXDEF txt229 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.5 0.25 RAD 0.03125 + txt229 +TEXDEF txt229 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.5 0.25 APEX 0.984531 0.5 0.25 RAD 0.0078125 + txt229 +TEXDEF txt229 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.515469 0.25 APEX 0.875 0.609531 0.25 RAD 0.0078125 + txt229 +TEXDEF txt229 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.5 0.265469 APEX 0.875 0.5 0.359531 RAD 0.0078125 + txt229 +TEXDEF txt229 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.5 0.375 RAD 0.03125 + txt229 +TEXDEF txt229 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.5 0.375 APEX 0.984531 0.5 0.375 RAD 0.0078125 + txt229 +TEXDEF txt229 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.515469 0.375 APEX 0.875 0.609531 0.375 RAD 0.0078125 + txt229 +TEXDEF txt229 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.5 0.390469 APEX 0.875 0.5 0.484531 RAD 0.0078125 + txt229 +TEXDEF txt229 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.5 0.5 RAD 0.03125 + txt229 +TEXDEF txt230 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.5 0.5 APEX 0.984531 0.5 0.5 RAD 0.0078125 + txt230 +TEXDEF txt230 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.515469 0.5 APEX 0.875 0.609531 0.5 RAD 0.0078125 + txt230 +TEXDEF txt230 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.5 0.515469 APEX 0.875 0.5 0.609531 RAD 0.0078125 + txt230 +TEXDEF txt230 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.5 0.625 RAD 0.03125 + txt230 +TEXDEF txt230 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.5 0.625 APEX 0.984531 0.5 0.625 RAD 0.0078125 + txt230 +TEXDEF txt230 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.515469 0.625 APEX 0.875 0.609531 0.625 RAD 0.0078125 + txt230 +TEXDEF txt230 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.5 0.640469 APEX 0.875 0.5 0.734531 RAD 0.0078125 + txt230 +TEXDEF txt230 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.5 0.75 RAD 0.03125 + txt230 +TEXDEF txt230 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.5 0.75 APEX 0.984531 0.5 0.75 RAD 0.0078125 + txt230 +TEXDEF txt230 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.515469 0.75 APEX 0.875 0.609531 0.75 RAD 0.0078125 + txt230 +TEXDEF txt231 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.5 0.765469 APEX 0.875 0.5 0.859531 RAD 0.0078125 + txt231 +TEXDEF txt231 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.5 0.875 RAD 0.03125 + txt231 +TEXDEF txt231 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.5 0.875 APEX 0.984531 0.5 0.875 RAD 0.0078125 + txt231 +TEXDEF txt231 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.515469 0.875 APEX 0.875 0.609531 0.875 RAD 0.0078125 + txt231 +TEXDEF txt231 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.5 0.890469 APEX 0.875 0.5 0.984531 RAD 0.0078125 + txt231 +TEXDEF txt231 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.5 1 RAD 0.03125 + txt231 +TEXDEF txt231 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.5 1 APEX 0.984531 0.5 1 RAD 0.0078125 + txt231 +TEXDEF txt231 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.515469 1 APEX 0.875 0.609531 1 RAD 0.0078125 + txt231 +TEXDEF txt231 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.625 0 RAD 0.03125 + txt231 +TEXDEF txt231 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.625 0 APEX 0.984531 0.625 0 RAD 0.0078125 + txt231 +TEXDEF txt232 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.640469 0 APEX 0.875 0.734531 0 RAD 0.0078125 + txt232 +TEXDEF txt232 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.625 0.0154687 APEX 0.875 0.625 0.109531 RAD 0.0078125 + txt232 +TEXDEF txt232 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.625 0.125 RAD 0.03125 + txt232 +TEXDEF txt232 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.625 0.125 APEX 0.984531 0.625 0.125 RAD 0.0078125 + txt232 +TEXDEF txt232 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.640469 0.125 APEX 0.875 0.734531 0.125 RAD 0.0078125 + txt232 +TEXDEF txt232 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.625 0.140469 APEX 0.875 0.625 0.234531 RAD 0.0078125 + txt232 +TEXDEF txt232 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.625 0.25 RAD 0.03125 + txt232 +TEXDEF txt232 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.625 0.25 APEX 0.984531 0.625 0.25 RAD 0.0078125 + txt232 +TEXDEF txt232 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.640469 0.25 APEX 0.875 0.734531 0.25 RAD 0.0078125 + txt232 +TEXDEF txt232 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.625 0.265469 APEX 0.875 0.625 0.359531 RAD 0.0078125 + txt232 +TEXDEF txt233 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.625 0.375 RAD 0.03125 + txt233 +TEXDEF txt233 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.625 0.375 APEX 0.984531 0.625 0.375 RAD 0.0078125 + txt233 +TEXDEF txt233 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.640469 0.375 APEX 0.875 0.734531 0.375 RAD 0.0078125 + txt233 +TEXDEF txt233 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.625 0.390469 APEX 0.875 0.625 0.484531 RAD 0.0078125 + txt233 +TEXDEF txt233 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.625 0.5 RAD 0.03125 + txt233 +TEXDEF txt233 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.625 0.5 APEX 0.984531 0.625 0.5 RAD 0.0078125 + txt233 +TEXDEF txt233 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.640469 0.5 APEX 0.875 0.734531 0.5 RAD 0.0078125 + txt233 +TEXDEF txt233 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.625 0.515469 APEX 0.875 0.625 0.609531 RAD 0.0078125 + txt233 +TEXDEF txt233 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.625 0.625 RAD 0.03125 + txt233 +TEXDEF txt233 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.625 0.625 APEX 0.984531 0.625 0.625 RAD 0.0078125 + txt233 +TEXDEF txt234 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.640469 0.625 APEX 0.875 0.734531 0.625 RAD 0.0078125 + txt234 +TEXDEF txt234 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.625 0.640469 APEX 0.875 0.625 0.734531 RAD 0.0078125 + txt234 +TEXDEF txt234 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.625 0.75 RAD 0.03125 + txt234 +TEXDEF txt234 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.625 0.75 APEX 0.984531 0.625 0.75 RAD 0.0078125 + txt234 +TEXDEF txt234 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.640469 0.75 APEX 0.875 0.734531 0.75 RAD 0.0078125 + txt234 +TEXDEF txt234 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.625 0.765469 APEX 0.875 0.625 0.859531 RAD 0.0078125 + txt234 +TEXDEF txt234 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.625 0.875 RAD 0.03125 + txt234 +TEXDEF txt234 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.625 0.875 APEX 0.984531 0.625 0.875 RAD 0.0078125 + txt234 +TEXDEF txt234 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.640469 0.875 APEX 0.875 0.734531 0.875 RAD 0.0078125 + txt234 +TEXDEF txt234 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.625 0.890469 APEX 0.875 0.625 0.984531 RAD 0.0078125 + txt234 +TEXDEF txt235 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.625 1 RAD 0.03125 + txt235 +TEXDEF txt235 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.625 1 APEX 0.984531 0.625 1 RAD 0.0078125 + txt235 +TEXDEF txt235 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.640469 1 APEX 0.875 0.734531 1 RAD 0.0078125 + txt235 +TEXDEF txt235 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.75 0 RAD 0.03125 + txt235 +TEXDEF txt235 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.75 0 APEX 0.984531 0.75 0 RAD 0.0078125 + txt235 +TEXDEF txt235 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.765469 0 APEX 0.875 0.859531 0 RAD 0.0078125 + txt235 +TEXDEF txt235 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.75 0.0154687 APEX 0.875 0.75 0.109531 RAD 0.0078125 + txt235 +TEXDEF txt235 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.75 0.125 RAD 0.03125 + txt235 +TEXDEF txt235 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.75 0.125 APEX 0.984531 0.75 0.125 RAD 0.0078125 + txt235 +TEXDEF txt235 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.765469 0.125 APEX 0.875 0.859531 0.125 RAD 0.0078125 + txt235 +TEXDEF txt236 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.75 0.140469 APEX 0.875 0.75 0.234531 RAD 0.0078125 + txt236 +TEXDEF txt236 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.75 0.25 RAD 0.03125 + txt236 +TEXDEF txt236 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.75 0.25 APEX 0.984531 0.75 0.25 RAD 0.0078125 + txt236 +TEXDEF txt236 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.765469 0.25 APEX 0.875 0.859531 0.25 RAD 0.0078125 + txt236 +TEXDEF txt236 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.75 0.265469 APEX 0.875 0.75 0.359531 RAD 0.0078125 + txt236 +TEXDEF txt236 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.75 0.375 RAD 0.03125 + txt236 +TEXDEF txt236 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.75 0.375 APEX 0.984531 0.75 0.375 RAD 0.0078125 + txt236 +TEXDEF txt236 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.765469 0.375 APEX 0.875 0.859531 0.375 RAD 0.0078125 + txt236 +TEXDEF txt236 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.75 0.390469 APEX 0.875 0.75 0.484531 RAD 0.0078125 + txt236 +TEXDEF txt236 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.75 0.5 RAD 0.03125 + txt236 +TEXDEF txt237 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.75 0.5 APEX 0.984531 0.75 0.5 RAD 0.0078125 + txt237 +TEXDEF txt237 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.765469 0.5 APEX 0.875 0.859531 0.5 RAD 0.0078125 + txt237 +TEXDEF txt237 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.75 0.515469 APEX 0.875 0.75 0.609531 RAD 0.0078125 + txt237 +TEXDEF txt237 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.75 0.625 RAD 0.03125 + txt237 +TEXDEF txt237 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.75 0.625 APEX 0.984531 0.75 0.625 RAD 0.0078125 + txt237 +TEXDEF txt237 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.765469 0.625 APEX 0.875 0.859531 0.625 RAD 0.0078125 + txt237 +TEXDEF txt237 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.75 0.640469 APEX 0.875 0.75 0.734531 RAD 0.0078125 + txt237 +TEXDEF txt237 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.75 0.75 RAD 0.03125 + txt237 +TEXDEF txt237 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.75 0.75 APEX 0.984531 0.75 0.75 RAD 0.0078125 + txt237 +TEXDEF txt237 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.765469 0.75 APEX 0.875 0.859531 0.75 RAD 0.0078125 + txt237 +TEXDEF txt238 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.75 0.765469 APEX 0.875 0.75 0.859531 RAD 0.0078125 + txt238 +TEXDEF txt238 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.75 0.875 RAD 0.03125 + txt238 +TEXDEF txt238 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.75 0.875 APEX 0.984531 0.75 0.875 RAD 0.0078125 + txt238 +TEXDEF txt238 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.765469 0.875 APEX 0.875 0.859531 0.875 RAD 0.0078125 + txt238 +TEXDEF txt238 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.75 0.890469 APEX 0.875 0.75 0.984531 RAD 0.0078125 + txt238 +TEXDEF txt238 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.75 1 RAD 0.03125 + txt238 +TEXDEF txt238 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.75 1 APEX 0.984531 0.75 1 RAD 0.0078125 + txt238 +TEXDEF txt238 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.765469 1 APEX 0.875 0.859531 1 RAD 0.0078125 + txt238 +TEXDEF txt238 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.875 0 RAD 0.03125 + txt238 +TEXDEF txt238 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.875 0 APEX 0.984531 0.875 0 RAD 0.0078125 + txt238 +TEXDEF txt239 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.890469 0 APEX 0.875 0.984531 0 RAD 0.0078125 + txt239 +TEXDEF txt239 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.875 0.0154687 APEX 0.875 0.875 0.109531 RAD 0.0078125 + txt239 +TEXDEF txt239 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.875 0.125 RAD 0.03125 + txt239 +TEXDEF txt239 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.875 0.125 APEX 0.984531 0.875 0.125 RAD 0.0078125 + txt239 +TEXDEF txt239 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.890469 0.125 APEX 0.875 0.984531 0.125 RAD 0.0078125 + txt239 +TEXDEF txt239 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.875 0.140469 APEX 0.875 0.875 0.234531 RAD 0.0078125 + txt239 +TEXDEF txt239 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.875 0.25 RAD 0.03125 + txt239 +TEXDEF txt239 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.875 0.25 APEX 0.984531 0.875 0.25 RAD 0.0078125 + txt239 +TEXDEF txt239 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.890469 0.25 APEX 0.875 0.984531 0.25 RAD 0.0078125 + txt239 +TEXDEF txt239 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.875 0.265469 APEX 0.875 0.875 0.359531 RAD 0.0078125 + txt239 +TEXDEF txt240 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.875 0.375 RAD 0.03125 + txt240 +TEXDEF txt240 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.875 0.375 APEX 0.984531 0.875 0.375 RAD 0.0078125 + txt240 +TEXDEF txt240 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.890469 0.375 APEX 0.875 0.984531 0.375 RAD 0.0078125 + txt240 +TEXDEF txt240 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.875 0.390469 APEX 0.875 0.875 0.484531 RAD 0.0078125 + txt240 +TEXDEF txt240 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.875 0.5 RAD 0.03125 + txt240 +TEXDEF txt240 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.875 0.5 APEX 0.984531 0.875 0.5 RAD 0.0078125 + txt240 +TEXDEF txt240 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.890469 0.5 APEX 0.875 0.984531 0.5 RAD 0.0078125 + txt240 +TEXDEF txt240 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.875 0.515469 APEX 0.875 0.875 0.609531 RAD 0.0078125 + txt240 +TEXDEF txt240 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.875 0.625 RAD 0.03125 + txt240 +TEXDEF txt240 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.875 0.625 APEX 0.984531 0.875 0.625 RAD 0.0078125 + txt240 +TEXDEF txt241 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.890469 0.625 APEX 0.875 0.984531 0.625 RAD 0.0078125 + txt241 +TEXDEF txt241 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.875 0.640469 APEX 0.875 0.875 0.734531 RAD 0.0078125 + txt241 +TEXDEF txt241 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.875 0.75 RAD 0.03125 + txt241 +TEXDEF txt241 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.875 0.75 APEX 0.984531 0.875 0.75 RAD 0.0078125 + txt241 +TEXDEF txt241 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.890469 0.75 APEX 0.875 0.984531 0.75 RAD 0.0078125 + txt241 +TEXDEF txt241 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.875 0.765469 APEX 0.875 0.875 0.859531 RAD 0.0078125 + txt241 +TEXDEF txt241 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.875 0.875 RAD 0.03125 + txt241 +TEXDEF txt241 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.875 0.875 APEX 0.984531 0.875 0.875 RAD 0.0078125 + txt241 +TEXDEF txt241 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.890469 0.875 APEX 0.875 0.984531 0.875 RAD 0.0078125 + txt241 +TEXDEF txt241 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.875 0.890469 APEX 0.875 0.875 0.984531 RAD 0.0078125 + txt241 +TEXDEF txt242 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 0.875 1 RAD 0.03125 + txt242 +TEXDEF txt242 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 0.875 1 APEX 0.984531 0.875 1 RAD 0.0078125 + txt242 +TEXDEF txt242 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 0.890469 1 APEX 0.875 0.984531 1 RAD 0.0078125 + txt242 +TEXDEF txt242 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 1 0 RAD 0.03125 + txt242 +TEXDEF txt242 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 1 0 APEX 0.984531 1 0 RAD 0.0078125 + txt242 +TEXDEF txt242 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 1 0.0154687 APEX 0.875 1 0.109531 RAD 0.0078125 + txt242 +TEXDEF txt242 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 1 0.125 RAD 0.03125 + txt242 +TEXDEF txt242 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 1 0.125 APEX 0.984531 1 0.125 RAD 0.0078125 + txt242 +TEXDEF txt242 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 1 0.140469 APEX 0.875 1 0.234531 RAD 0.0078125 + txt242 +TEXDEF txt242 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 1 0.25 RAD 0.03125 + txt242 +TEXDEF txt243 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 1 0.25 APEX 0.984531 1 0.25 RAD 0.0078125 + txt243 +TEXDEF txt243 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 1 0.265469 APEX 0.875 1 0.359531 RAD 0.0078125 + txt243 +TEXDEF txt243 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 1 0.375 RAD 0.03125 + txt243 +TEXDEF txt243 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 1 0.375 APEX 0.984531 1 0.375 RAD 0.0078125 + txt243 +TEXDEF txt243 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 1 0.390469 APEX 0.875 1 0.484531 RAD 0.0078125 + txt243 +TEXDEF txt243 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 1 0.5 RAD 0.03125 + txt243 +TEXDEF txt243 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 1 0.5 APEX 0.984531 1 0.5 RAD 0.0078125 + txt243 +TEXDEF txt243 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 1 0.515469 APEX 0.875 1 0.609531 RAD 0.0078125 + txt243 +TEXDEF txt243 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 1 0.625 RAD 0.03125 + txt243 +TEXDEF txt243 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 1 0.625 APEX 0.984531 1 0.625 RAD 0.0078125 + txt243 +TEXDEF txt244 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 1 0.640469 APEX 0.875 1 0.734531 RAD 0.0078125 + txt244 +TEXDEF txt244 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 1 0.75 RAD 0.03125 + txt244 +TEXDEF txt244 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 1 0.75 APEX 0.984531 1 0.75 RAD 0.0078125 + txt244 +TEXDEF txt244 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 1 0.765469 APEX 0.875 1 0.859531 RAD 0.0078125 + txt244 +TEXDEF txt244 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 1 0.875 RAD 0.03125 + txt244 +TEXDEF txt244 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 1 0.875 APEX 0.984531 1 0.875 RAD 0.0078125 + txt244 +TEXDEF txt244 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 0.875 1 0.890469 APEX 0.875 1 0.984531 RAD 0.0078125 + txt244 +TEXDEF txt244 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 0.875 1 1 RAD 0.03125 + txt244 +TEXDEF txt244 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.9 0.1 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 0.890469 1 1 APEX 0.984531 1 1 RAD 0.0078125 + txt244 +TEXDEF txt244 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0 0 RAD 0.03125 + txt244 +TEXDEF txt245 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.0154687 0 APEX 1 0.109531 0 RAD 0.0078125 + txt245 +TEXDEF txt245 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0 0.0154687 APEX 1 0 0.109531 RAD 0.0078125 + txt245 +TEXDEF txt245 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0 0.125 RAD 0.03125 + txt245 +TEXDEF txt245 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.0154687 0.125 APEX 1 0.109531 0.125 RAD 0.0078125 + txt245 +TEXDEF txt245 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0 0.140469 APEX 1 0 0.234531 RAD 0.0078125 + txt245 +TEXDEF txt245 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0 0.25 RAD 0.03125 + txt245 +TEXDEF txt245 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.0154687 0.25 APEX 1 0.109531 0.25 RAD 0.0078125 + txt245 +TEXDEF txt245 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0 0.265469 APEX 1 0 0.359531 RAD 0.0078125 + txt245 +TEXDEF txt245 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0 0.375 RAD 0.03125 + txt245 +TEXDEF txt245 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.0154687 0.375 APEX 1 0.109531 0.375 RAD 0.0078125 + txt245 +TEXDEF txt246 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0 0.390469 APEX 1 0 0.484531 RAD 0.0078125 + txt246 +TEXDEF txt246 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0 0.5 RAD 0.03125 + txt246 +TEXDEF txt246 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.0154687 0.5 APEX 1 0.109531 0.5 RAD 0.0078125 + txt246 +TEXDEF txt246 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0 0.515469 APEX 1 0 0.609531 RAD 0.0078125 + txt246 +TEXDEF txt246 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0 0.625 RAD 0.03125 + txt246 +TEXDEF txt246 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.0154687 0.625 APEX 1 0.109531 0.625 RAD 0.0078125 + txt246 +TEXDEF txt246 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0 0.640469 APEX 1 0 0.734531 RAD 0.0078125 + txt246 +TEXDEF txt246 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0 0.75 RAD 0.03125 + txt246 +TEXDEF txt246 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.0154687 0.75 APEX 1 0.109531 0.75 RAD 0.0078125 + txt246 +TEXDEF txt246 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0 0.765469 APEX 1 0 0.859531 RAD 0.0078125 + txt246 +TEXDEF txt247 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0 0.875 RAD 0.03125 + txt247 +TEXDEF txt247 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.0154687 0.875 APEX 1 0.109531 0.875 RAD 0.0078125 + txt247 +TEXDEF txt247 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0 0.890469 APEX 1 0 0.984531 RAD 0.0078125 + txt247 +TEXDEF txt247 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0 1 RAD 0.03125 + txt247 +TEXDEF txt247 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.0154687 1 APEX 1 0.109531 1 RAD 0.0078125 + txt247 +TEXDEF txt247 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.125 0 RAD 0.03125 + txt247 +TEXDEF txt247 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.140469 0 APEX 1 0.234531 0 RAD 0.0078125 + txt247 +TEXDEF txt247 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.125 0.0154687 APEX 1 0.125 0.109531 RAD 0.0078125 + txt247 +TEXDEF txt247 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.125 0.125 RAD 0.03125 + txt247 +TEXDEF txt247 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.140469 0.125 APEX 1 0.234531 0.125 RAD 0.0078125 + txt247 +TEXDEF txt248 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.125 0.140469 APEX 1 0.125 0.234531 RAD 0.0078125 + txt248 +TEXDEF txt248 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.125 0.25 RAD 0.03125 + txt248 +TEXDEF txt248 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.140469 0.25 APEX 1 0.234531 0.25 RAD 0.0078125 + txt248 +TEXDEF txt248 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.125 0.265469 APEX 1 0.125 0.359531 RAD 0.0078125 + txt248 +TEXDEF txt248 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.125 0.375 RAD 0.03125 + txt248 +TEXDEF txt248 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.140469 0.375 APEX 1 0.234531 0.375 RAD 0.0078125 + txt248 +TEXDEF txt248 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.125 0.390469 APEX 1 0.125 0.484531 RAD 0.0078125 + txt248 +TEXDEF txt248 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.125 0.5 RAD 0.03125 + txt248 +TEXDEF txt248 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.140469 0.5 APEX 1 0.234531 0.5 RAD 0.0078125 + txt248 +TEXDEF txt248 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.125 0.515469 APEX 1 0.125 0.609531 RAD 0.0078125 + txt248 +TEXDEF txt249 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.125 0.625 RAD 0.03125 + txt249 +TEXDEF txt249 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.140469 0.625 APEX 1 0.234531 0.625 RAD 0.0078125 + txt249 +TEXDEF txt249 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.125 0.640469 APEX 1 0.125 0.734531 RAD 0.0078125 + txt249 +TEXDEF txt249 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.125 0.75 RAD 0.03125 + txt249 +TEXDEF txt249 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.140469 0.75 APEX 1 0.234531 0.75 RAD 0.0078125 + txt249 +TEXDEF txt249 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.125 0.765469 APEX 1 0.125 0.859531 RAD 0.0078125 + txt249 +TEXDEF txt249 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.125 0.875 RAD 0.03125 + txt249 +TEXDEF txt249 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.140469 0.875 APEX 1 0.234531 0.875 RAD 0.0078125 + txt249 +TEXDEF txt249 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.125 0.890469 APEX 1 0.125 0.984531 RAD 0.0078125 + txt249 +TEXDEF txt249 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.125 1 RAD 0.03125 + txt249 +TEXDEF txt250 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.140469 1 APEX 1 0.234531 1 RAD 0.0078125 + txt250 +TEXDEF txt250 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.25 0 RAD 0.03125 + txt250 +TEXDEF txt250 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.265469 0 APEX 1 0.359531 0 RAD 0.0078125 + txt250 +TEXDEF txt250 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.25 0.0154687 APEX 1 0.25 0.109531 RAD 0.0078125 + txt250 +TEXDEF txt250 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.25 0.125 RAD 0.03125 + txt250 +TEXDEF txt250 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.265469 0.125 APEX 1 0.359531 0.125 RAD 0.0078125 + txt250 +TEXDEF txt250 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.25 0.140469 APEX 1 0.25 0.234531 RAD 0.0078125 + txt250 +TEXDEF txt250 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.25 0.25 RAD 0.03125 + txt250 +TEXDEF txt250 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.265469 0.25 APEX 1 0.359531 0.25 RAD 0.0078125 + txt250 +TEXDEF txt250 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.25 0.265469 APEX 1 0.25 0.359531 RAD 0.0078125 + txt250 +TEXDEF txt251 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.25 0.375 RAD 0.03125 + txt251 +TEXDEF txt251 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.265469 0.375 APEX 1 0.359531 0.375 RAD 0.0078125 + txt251 +TEXDEF txt251 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.25 0.390469 APEX 1 0.25 0.484531 RAD 0.0078125 + txt251 +TEXDEF txt251 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.25 0.5 RAD 0.03125 + txt251 +TEXDEF txt251 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.265469 0.5 APEX 1 0.359531 0.5 RAD 0.0078125 + txt251 +TEXDEF txt251 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.25 0.515469 APEX 1 0.25 0.609531 RAD 0.0078125 + txt251 +TEXDEF txt251 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.25 0.625 RAD 0.03125 + txt251 +TEXDEF txt251 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.265469 0.625 APEX 1 0.359531 0.625 RAD 0.0078125 + txt251 +TEXDEF txt251 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.25 0.640469 APEX 1 0.25 0.734531 RAD 0.0078125 + txt251 +TEXDEF txt251 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.25 0.75 RAD 0.03125 + txt251 +TEXDEF txt252 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.265469 0.75 APEX 1 0.359531 0.75 RAD 0.0078125 + txt252 +TEXDEF txt252 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.25 0.765469 APEX 1 0.25 0.859531 RAD 0.0078125 + txt252 +TEXDEF txt252 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.25 0.875 RAD 0.03125 + txt252 +TEXDEF txt252 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.265469 0.875 APEX 1 0.359531 0.875 RAD 0.0078125 + txt252 +TEXDEF txt252 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.25 0.890469 APEX 1 0.25 0.984531 RAD 0.0078125 + txt252 +TEXDEF txt252 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.25 1 RAD 0.03125 + txt252 +TEXDEF txt252 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.265469 1 APEX 1 0.359531 1 RAD 0.0078125 + txt252 +TEXDEF txt252 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.375 0 RAD 0.03125 + txt252 +TEXDEF txt252 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.390469 0 APEX 1 0.484531 0 RAD 0.0078125 + txt252 +TEXDEF txt252 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.375 0.0154687 APEX 1 0.375 0.109531 RAD 0.0078125 + txt252 +TEXDEF txt253 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.375 0.125 RAD 0.03125 + txt253 +TEXDEF txt253 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.390469 0.125 APEX 1 0.484531 0.125 RAD 0.0078125 + txt253 +TEXDEF txt253 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.375 0.140469 APEX 1 0.375 0.234531 RAD 0.0078125 + txt253 +TEXDEF txt253 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.375 0.25 RAD 0.03125 + txt253 +TEXDEF txt253 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.390469 0.25 APEX 1 0.484531 0.25 RAD 0.0078125 + txt253 +TEXDEF txt253 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.375 0.265469 APEX 1 0.375 0.359531 RAD 0.0078125 + txt253 +TEXDEF txt253 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.375 0.375 RAD 0.03125 + txt253 +TEXDEF txt253 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.390469 0.375 APEX 1 0.484531 0.375 RAD 0.0078125 + txt253 +TEXDEF txt253 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.375 0.390469 APEX 1 0.375 0.484531 RAD 0.0078125 + txt253 +TEXDEF txt253 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.375 0.5 RAD 0.03125 + txt253 +TEXDEF txt254 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.390469 0.5 APEX 1 0.484531 0.5 RAD 0.0078125 + txt254 +TEXDEF txt254 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.375 0.515469 APEX 1 0.375 0.609531 RAD 0.0078125 + txt254 +TEXDEF txt254 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.375 0.625 RAD 0.03125 + txt254 +TEXDEF txt254 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.390469 0.625 APEX 1 0.484531 0.625 RAD 0.0078125 + txt254 +TEXDEF txt254 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.375 0.640469 APEX 1 0.375 0.734531 RAD 0.0078125 + txt254 +TEXDEF txt254 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.375 0.75 RAD 0.03125 + txt254 +TEXDEF txt254 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.390469 0.75 APEX 1 0.484531 0.75 RAD 0.0078125 + txt254 +TEXDEF txt254 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.375 0.765469 APEX 1 0.375 0.859531 RAD 0.0078125 + txt254 +TEXDEF txt254 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.375 0.875 RAD 0.03125 + txt254 +TEXDEF txt254 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.390469 0.875 APEX 1 0.484531 0.875 RAD 0.0078125 + txt254 +TEXDEF txt255 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.375 0.890469 APEX 1 0.375 0.984531 RAD 0.0078125 + txt255 +TEXDEF txt255 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.375 1 RAD 0.03125 + txt255 +TEXDEF txt255 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.390469 1 APEX 1 0.484531 1 RAD 0.0078125 + txt255 +TEXDEF txt255 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.5 0 RAD 0.03125 + txt255 +TEXDEF txt255 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.515469 0 APEX 1 0.609531 0 RAD 0.0078125 + txt255 +TEXDEF txt255 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.5 0.0154687 APEX 1 0.5 0.109531 RAD 0.0078125 + txt255 +TEXDEF txt255 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.5 0.125 RAD 0.03125 + txt255 +TEXDEF txt255 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.515469 0.125 APEX 1 0.609531 0.125 RAD 0.0078125 + txt255 +TEXDEF txt255 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.5 0.140469 APEX 1 0.5 0.234531 RAD 0.0078125 + txt255 +TEXDEF txt255 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.5 0.25 RAD 0.03125 + txt255 +TEXDEF txt256 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.515469 0.25 APEX 1 0.609531 0.25 RAD 0.0078125 + txt256 +TEXDEF txt256 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.5 0.265469 APEX 1 0.5 0.359531 RAD 0.0078125 + txt256 +TEXDEF txt256 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.5 0.375 RAD 0.03125 + txt256 +TEXDEF txt256 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.515469 0.375 APEX 1 0.609531 0.375 RAD 0.0078125 + txt256 +TEXDEF txt256 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.5 0.390469 APEX 1 0.5 0.484531 RAD 0.0078125 + txt256 +TEXDEF txt256 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.5 0.5 RAD 0.03125 + txt256 +TEXDEF txt256 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.515469 0.5 APEX 1 0.609531 0.5 RAD 0.0078125 + txt256 +TEXDEF txt256 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.5 0.515469 APEX 1 0.5 0.609531 RAD 0.0078125 + txt256 +TEXDEF txt256 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.5 0.625 RAD 0.03125 + txt256 +TEXDEF txt256 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.515469 0.625 APEX 1 0.609531 0.625 RAD 0.0078125 + txt256 +TEXDEF txt257 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.5 0.640469 APEX 1 0.5 0.734531 RAD 0.0078125 + txt257 +TEXDEF txt257 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.5 0.75 RAD 0.03125 + txt257 +TEXDEF txt257 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.515469 0.75 APEX 1 0.609531 0.75 RAD 0.0078125 + txt257 +TEXDEF txt257 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.5 0.765469 APEX 1 0.5 0.859531 RAD 0.0078125 + txt257 +TEXDEF txt257 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.5 0.875 RAD 0.03125 + txt257 +TEXDEF txt257 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.515469 0.875 APEX 1 0.609531 0.875 RAD 0.0078125 + txt257 +TEXDEF txt257 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.5 0.890469 APEX 1 0.5 0.984531 RAD 0.0078125 + txt257 +TEXDEF txt257 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.5 1 RAD 0.03125 + txt257 +TEXDEF txt257 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.515469 1 APEX 1 0.609531 1 RAD 0.0078125 + txt257 +TEXDEF txt257 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.625 0 RAD 0.03125 + txt257 +TEXDEF txt258 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.640469 0 APEX 1 0.734531 0 RAD 0.0078125 + txt258 +TEXDEF txt258 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.625 0.0154687 APEX 1 0.625 0.109531 RAD 0.0078125 + txt258 +TEXDEF txt258 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.625 0.125 RAD 0.03125 + txt258 +TEXDEF txt258 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.640469 0.125 APEX 1 0.734531 0.125 RAD 0.0078125 + txt258 +TEXDEF txt258 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.625 0.140469 APEX 1 0.625 0.234531 RAD 0.0078125 + txt258 +TEXDEF txt258 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.625 0.25 RAD 0.03125 + txt258 +TEXDEF txt258 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.640469 0.25 APEX 1 0.734531 0.25 RAD 0.0078125 + txt258 +TEXDEF txt258 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.625 0.265469 APEX 1 0.625 0.359531 RAD 0.0078125 + txt258 +TEXDEF txt258 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.625 0.375 RAD 0.03125 + txt258 +TEXDEF txt258 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.640469 0.375 APEX 1 0.734531 0.375 RAD 0.0078125 + txt258 +TEXDEF txt259 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.625 0.390469 APEX 1 0.625 0.484531 RAD 0.0078125 + txt259 +TEXDEF txt259 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.625 0.5 RAD 0.03125 + txt259 +TEXDEF txt259 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.640469 0.5 APEX 1 0.734531 0.5 RAD 0.0078125 + txt259 +TEXDEF txt259 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.625 0.515469 APEX 1 0.625 0.609531 RAD 0.0078125 + txt259 +TEXDEF txt259 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.625 0.625 RAD 0.03125 + txt259 +TEXDEF txt259 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.640469 0.625 APEX 1 0.734531 0.625 RAD 0.0078125 + txt259 +TEXDEF txt259 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.625 0.640469 APEX 1 0.625 0.734531 RAD 0.0078125 + txt259 +TEXDEF txt259 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.625 0.75 RAD 0.03125 + txt259 +TEXDEF txt259 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.640469 0.75 APEX 1 0.734531 0.75 RAD 0.0078125 + txt259 +TEXDEF txt259 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.625 0.765469 APEX 1 0.625 0.859531 RAD 0.0078125 + txt259 +TEXDEF txt260 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.625 0.875 RAD 0.03125 + txt260 +TEXDEF txt260 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.640469 0.875 APEX 1 0.734531 0.875 RAD 0.0078125 + txt260 +TEXDEF txt260 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.625 0.890469 APEX 1 0.625 0.984531 RAD 0.0078125 + txt260 +TEXDEF txt260 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.625 1 RAD 0.03125 + txt260 +TEXDEF txt260 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.640469 1 APEX 1 0.734531 1 RAD 0.0078125 + txt260 +TEXDEF txt260 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.75 0 RAD 0.03125 + txt260 +TEXDEF txt260 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.765469 0 APEX 1 0.859531 0 RAD 0.0078125 + txt260 +TEXDEF txt260 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.75 0.0154687 APEX 1 0.75 0.109531 RAD 0.0078125 + txt260 +TEXDEF txt260 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.75 0.125 RAD 0.03125 + txt260 +TEXDEF txt260 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.765469 0.125 APEX 1 0.859531 0.125 RAD 0.0078125 + txt260 +TEXDEF txt261 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.75 0.140469 APEX 1 0.75 0.234531 RAD 0.0078125 + txt261 +TEXDEF txt261 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.75 0.25 RAD 0.03125 + txt261 +TEXDEF txt261 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.765469 0.25 APEX 1 0.859531 0.25 RAD 0.0078125 + txt261 +TEXDEF txt261 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.75 0.265469 APEX 1 0.75 0.359531 RAD 0.0078125 + txt261 +TEXDEF txt261 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.75 0.375 RAD 0.03125 + txt261 +TEXDEF txt261 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.765469 0.375 APEX 1 0.859531 0.375 RAD 0.0078125 + txt261 +TEXDEF txt261 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.75 0.390469 APEX 1 0.75 0.484531 RAD 0.0078125 + txt261 +TEXDEF txt261 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.75 0.5 RAD 0.03125 + txt261 +TEXDEF txt261 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.765469 0.5 APEX 1 0.859531 0.5 RAD 0.0078125 + txt261 +TEXDEF txt261 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.75 0.515469 APEX 1 0.75 0.609531 RAD 0.0078125 + txt261 +TEXDEF txt262 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.75 0.625 RAD 0.03125 + txt262 +TEXDEF txt262 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.765469 0.625 APEX 1 0.859531 0.625 RAD 0.0078125 + txt262 +TEXDEF txt262 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.75 0.640469 APEX 1 0.75 0.734531 RAD 0.0078125 + txt262 +TEXDEF txt262 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.75 0.75 RAD 0.03125 + txt262 +TEXDEF txt262 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.765469 0.75 APEX 1 0.859531 0.75 RAD 0.0078125 + txt262 +TEXDEF txt262 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.75 0.765469 APEX 1 0.75 0.859531 RAD 0.0078125 + txt262 +TEXDEF txt262 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.75 0.875 RAD 0.03125 + txt262 +TEXDEF txt262 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.765469 0.875 APEX 1 0.859531 0.875 RAD 0.0078125 + txt262 +TEXDEF txt262 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.75 0.890469 APEX 1 0.75 0.984531 RAD 0.0078125 + txt262 +TEXDEF txt262 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.75 1 RAD 0.03125 + txt262 +TEXDEF txt263 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.765469 1 APEX 1 0.859531 1 RAD 0.0078125 + txt263 +TEXDEF txt263 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.875 0 RAD 0.03125 + txt263 +TEXDEF txt263 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.890469 0 APEX 1 0.984531 0 RAD 0.0078125 + txt263 +TEXDEF txt263 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.875 0.0154687 APEX 1 0.875 0.109531 RAD 0.0078125 + txt263 +TEXDEF txt263 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.875 0.125 RAD 0.03125 + txt263 +TEXDEF txt263 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.890469 0.125 APEX 1 0.984531 0.125 RAD 0.0078125 + txt263 +TEXDEF txt263 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.875 0.140469 APEX 1 0.875 0.234531 RAD 0.0078125 + txt263 +TEXDEF txt263 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.875 0.25 RAD 0.03125 + txt263 +TEXDEF txt263 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.890469 0.25 APEX 1 0.984531 0.25 RAD 0.0078125 + txt263 +TEXDEF txt263 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.875 0.265469 APEX 1 0.875 0.359531 RAD 0.0078125 + txt263 +TEXDEF txt264 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.875 0.375 RAD 0.03125 + txt264 +TEXDEF txt264 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.890469 0.375 APEX 1 0.984531 0.375 RAD 0.0078125 + txt264 +TEXDEF txt264 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.875 0.390469 APEX 1 0.875 0.484531 RAD 0.0078125 + txt264 +TEXDEF txt264 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.875 0.5 RAD 0.03125 + txt264 +TEXDEF txt264 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.890469 0.5 APEX 1 0.984531 0.5 RAD 0.0078125 + txt264 +TEXDEF txt264 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.875 0.515469 APEX 1 0.875 0.609531 RAD 0.0078125 + txt264 +TEXDEF txt264 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.875 0.625 RAD 0.03125 + txt264 +TEXDEF txt264 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.890469 0.625 APEX 1 0.984531 0.625 RAD 0.0078125 + txt264 +TEXDEF txt264 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.875 0.640469 APEX 1 0.875 0.734531 RAD 0.0078125 + txt264 +TEXDEF txt264 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.875 0.75 RAD 0.03125 + txt264 +TEXDEF txt265 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.890469 0.75 APEX 1 0.984531 0.75 RAD 0.0078125 + txt265 +TEXDEF txt265 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.875 0.765469 APEX 1 0.875 0.859531 RAD 0.0078125 + txt265 +TEXDEF txt265 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.875 0.875 RAD 0.03125 + txt265 +TEXDEF txt265 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.890469 0.875 APEX 1 0.984531 0.875 RAD 0.0078125 + txt265 +TEXDEF txt265 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.875 0.890469 APEX 1 0.875 0.984531 RAD 0.0078125 + txt265 +TEXDEF txt265 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 0.875 1 RAD 0.03125 + txt265 +TEXDEF txt265 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.9 0.1 + TEXFUNC 0 + +FCYLINDER + BASE 1 0.890469 1 APEX 1 0.984531 1 RAD 0.0078125 + txt265 +TEXDEF txt265 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 1 0 RAD 0.03125 + txt265 +TEXDEF txt265 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 1 0.0154687 APEX 1 1 0.109531 RAD 0.0078125 + txt265 +TEXDEF txt265 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 1 0.125 RAD 0.03125 + txt265 +TEXDEF txt266 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 1 0.140469 APEX 1 1 0.234531 RAD 0.0078125 + txt266 +TEXDEF txt266 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 1 0.25 RAD 0.03125 + txt266 +TEXDEF txt266 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 1 0.265469 APEX 1 1 0.359531 RAD 0.0078125 + txt266 +TEXDEF txt266 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 1 0.375 RAD 0.03125 + txt266 +TEXDEF txt266 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 1 0.390469 APEX 1 1 0.484531 RAD 0.0078125 + txt266 +TEXDEF txt266 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 1 0.5 RAD 0.03125 + txt266 +TEXDEF txt266 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 1 0.515469 APEX 1 1 0.609531 RAD 0.0078125 + txt266 +TEXDEF txt266 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 1 0.625 RAD 0.03125 + txt266 +TEXDEF txt266 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 1 0.640469 APEX 1 1 0.734531 RAD 0.0078125 + txt266 +TEXDEF txt266 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 1 0.75 RAD 0.03125 + txt266 +TEXDEF txt267 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 1 0.765469 APEX 1 1 0.859531 RAD 0.0078125 + txt267 +TEXDEF txt267 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 1 0.875 RAD 0.03125 + txt267 +TEXDEF txt267 AMBIENT 0.1 DIFFUSE 0.99 SPECULAR 0 OPACITY 1 + COLOR 0.1 0.1 0.9 + TEXFUNC 0 + +FCYLINDER + BASE 1 1 0.890469 APEX 1 1 0.984531 RAD 0.0078125 + txt267 +TEXDEF txt267 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 + COLOR 0.9 0.9 0.9 + TEXFUNC 0 + + SPHERE CENTER 1 1 1 RAD 0.03125 + txt267 + +END_SCENE diff --git a/examples/parallel_for/tachyon/dat/model2.dat b/examples/parallel_for/tachyon/dat/model2.dat new file mode 100644 index 0000000000..c57ce49ceb --- /dev/null +++ b/examples/parallel_for/tachyon/dat/model2.dat @@ -0,0 +1,104 @@ +BEGIN_SCENE + OUTFILE /dev/null + RESOLUTION 512 512 + VERBOSE 0 + +CAMERA + ZOOM 1.0 + ASPECTRATIO 1.0 + ANTIALIASING 1 + RAYDEPTH 12 + CENTER 0.0 0.0 -5.0 + VIEWDIR 0.0 0.0 1.0 + UPDIR 0.0 1.0 0.0 +END_CAMERA + +LIGHT + CENTER -5.0 0.0 -4.0 + RAD 0.2 + COLOR 1.0 0.1 0.0 + +LIGHT + CENTER 4.0 5.0 -4.0 + RAD 0.2 + COLOR 0.0 0.1 1.0 + +LIGHT + CENTER 4.0 1.5 3.0 + RAD 0.2 + COLOR 0.5 0.5 0.5 + +TRI + V0 0.0 -4.0 12.0 + V1 4.0 -4.0 8.0 + V2 -4.0 -4.0 8.0 + TEXTURE + AMBIENT 0.1 DIFFUSE 0.2 SPECULAR 0.7 OPACITY 1.0 + COLOR 1.0 1.0 1.0 + TEXFUNC 0 + +SPHERE + CENTER 0.0 0.0 5.0 + RAD 1.3 + TEXTURE + AMBIENT 0.1 DIFFUSE 0.0 SPECULAR 0.9 OPACITY 1.0 + COLOR 1.0 1.0 1.0 + TEXFUNC 0 + +SPHERE + CENTER 1.0 0.0 4.3 + RAD 0.8 + TEXTURE + AMBIENT 0.1 DIFFUSE 0.9 SPECULAR 0.0 OPACITY 1.0 + COLOR 0.3 0.3 1.0 + TEXFUNC 3 + CENTER 1.0 0.0 4.3 + ROTATE 0. 0.0 0.0 + SCALE 1.0 1.0 1.0 + +SPHERE + CENTER 0.0 2.0 8.0 + RAD 1.0 + TEXTURE + AMBIENT 0.1 DIFFUSE 0.9 SPECULAR 0.0 OPACITY 1.0 + COLOR 1.0 0.0 1.0 + TEXFUNC 4 + CENTER 0.0 1.0 8.0 + ROTATE 0. 0.0 0.0 + SCALE 1.0 1.0 1.0 + +SPHERE + CENTER -1.0 -0.5 5.0 + RAD 1.0 + TEXTURE + AMBIENT 0.1 DIFFUSE 0.9 SPECULAR 0.0 OPACITY 1.0 + COLOR 1.0 1.0 0.5 + TEXFUNC 6 + CENTER -1.0 -0.5 5.0 + ROTATE 0. 0.0 0.0 + SCALE 1.0 1.0 1.0 + +PLANE + CENTER 0.0 -5.0 0.0 + NORMAL 0.0 1.0 0.0 + TEXTURE + AMBIENT 0.1 DIFFUSE 0.9 SPECULAR 0.0 OPACITY 1.0 + COLOR 1.0 1.0 1.0 + TEXFUNC 1 + CENTER 0.0 -5.0 0.0 + ROTATE 0. 0.0 0.0 + SCALE 1.0 1.0 1.0 + +PLANE + CENTER 0.0 0.0 15.0 + NORMAL 0.0 0.0 -1.0 + TEXTURE + AMBIENT 0.1 DIFFUSE 0.9 SPECULAR 0.0 OPACITY 1.0 + COLOR 1.0 1.0 1.0 + TEXFUNC 3 + CENTER 0.0 0.0 15.0 + ROTATE 0. 0.0 0.0 + SCALE 1.0 1.0 1.0 + +END_SCENE + diff --git a/examples/parallel_for/tachyon/dat/teapot.dat b/examples/parallel_for/tachyon/dat/teapot.dat new file mode 100644 index 0000000000..105afcddb1 --- /dev/null +++ b/examples/parallel_for/tachyon/dat/teapot.dat @@ -0,0 +1,9279 @@ +BEGIN_SCENE + OUTFILE /dev/null + RESOLUTION 512 512 + VERBOSE 0 + +CAMERA + ZOOM 1.20711 +ASPECTRATIO 1.0 + ANTIALIASING 0 + RAYDEPTH 5 + CENTER 4.86 7.2 5.4 + VIEWDIR -0.475149 -0.703924 -0.527943 + UPDIR -0.29537 -0.437585 0.84928 + +END_CAMERA + +BACKGROUND 0.078 0.361 0.753 + +LIGHT CENTER -3.1 9.8 12.1 RAD 0.002 COLOR 0.5 0.5 0.5 + +LIGHT CENTER 11.3 5.1 8.8 RAD 0.002 COLOR 0.5 0.5 0.5 + +TEXDEF txt001 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 +PHONG METAL 0.5 PHONG_SIZE 4.81884 + COLOR 1 1 1 + TEXFUNC 0 + +TRI + V0 -4 -2.66667 0 V1 -2.66667 -2.66667 0 V2 -4 -1.33333 0 + txt001 +TRI + V0 -2.66667 -2.66667 0 V1 -2.66667 -1.33333 0 V2 -4 -1.33333 0 + txt001 +TRI + V0 -4 0 0 V1 -2.66667 0 0 V2 -4 1.33333 0 + txt001 +TRI + V0 -2.66667 0 0 V1 -2.66667 1.33333 0 V2 -4 1.33333 0 + txt001 +TRI + V0 -4 2.66667 0 V1 -2.66667 2.66667 0 V2 -4 4 0 + txt001 +TRI + V0 -2.66667 2.66667 0 V1 -2.66667 4 0 V2 -4 4 0 + txt001 +TRI + V0 -2.66667 -4 0 V1 -1.33333 -4 0 V2 -2.66667 -2.66667 0 + txt001 +TRI + V0 -1.33333 -4 0 V1 -1.33333 -2.66667 0 V2 -2.66667 -2.66667 0 + txt001 +TRI + V0 -2.66667 -1.33333 0 V1 -1.33333 -1.33333 0 V2 -2.66667 0 0 + txt001 +TRI + V0 -1.33333 -1.33333 0 V1 -1.33333 0 0 V2 -2.66667 0 0 + txt001 +TRI + V0 -2.66667 1.33333 0 V1 -1.33333 1.33333 0 V2 -2.66667 2.66667 0 + txt001 +TRI + V0 -1.33333 1.33333 0 V1 -1.33333 2.66667 0 V2 -2.66667 2.66667 0 + txt001 +TRI + V0 -1.33333 -2.66667 0 V1 0 -2.66667 0 V2 -1.33333 -1.33333 0 + txt001 +TRI + V0 0 -2.66667 0 V1 0 -1.33333 0 V2 -1.33333 -1.33333 0 + txt001 +TRI + V0 -1.33333 0 0 V1 0 0 0 V2 -1.33333 1.33333 0 + txt001 +TRI + V0 0 0 0 V1 0 1.33333 0 V2 -1.33333 1.33333 0 + txt001 +TRI + V0 -1.33333 2.66667 0 V1 0 2.66667 0 V2 -1.33333 4 0 + txt001 +TRI + V0 0 2.66667 0 V1 0 4 0 V2 -1.33333 4 0 + txt001 +TRI + V0 0 -4 0 V1 1.33333 -4 0 V2 0 -2.66667 0 + txt001 +TRI + V0 1.33333 -4 0 V1 1.33333 -2.66667 0 V2 0 -2.66667 0 + txt001 +TRI + V0 0 -1.33333 0 V1 1.33333 -1.33333 0 V2 0 0 0 + txt001 +TRI + V0 1.33333 -1.33333 0 V1 1.33333 0 0 V2 0 0 0 + txt001 +TRI + V0 0 1.33333 0 V1 1.33333 1.33333 0 V2 0 2.66667 0 + txt001 +TRI + V0 1.33333 1.33333 0 V1 1.33333 2.66667 0 V2 0 2.66667 0 + txt001 +TRI + V0 1.33333 -2.66667 0 V1 2.66667 -2.66667 0 V2 1.33333 -1.33333 0 + txt001 +TRI + V0 2.66667 -2.66667 0 V1 2.66667 -1.33333 0 V2 1.33333 -1.33333 0 + txt001 +TRI + V0 1.33333 0 0 V1 2.66667 0 0 V2 1.33333 1.33333 0 + txt001 +TRI + V0 2.66667 0 0 V1 2.66667 1.33333 0 V2 1.33333 1.33333 0 + txt001 +TRI + V0 1.33333 2.66667 0 V1 2.66667 2.66667 0 V2 1.33333 4 0 + txt001 +TRI + V0 2.66667 2.66667 0 V1 2.66667 4 0 V2 1.33333 4 0 + txt001 +TRI + V0 2.66667 -4 0 V1 4 -4 0 V2 2.66667 -2.66667 0 + txt001 +TRI + V0 4 -4 0 V1 4 -2.66667 0 V2 2.66667 -2.66667 0 + txt001 +TRI + V0 2.66667 -1.33333 0 V1 4 -1.33333 0 V2 2.66667 0 0 + txt001 +TRI + V0 4 -1.33333 0 V1 4 0 0 V2 2.66667 0 0 + txt001 +TRI + V0 2.66667 1.33333 0 V1 4 1.33333 0 V2 2.66667 2.66667 0 + txt001 +TRI + V0 4 1.33333 0 V1 4 2.66667 0 V2 2.66667 2.66667 0 + txt001 +TEXDEF txt002 AMBIENT 0 DIFFUSE 0.5 SPECULAR 0.5 OPACITY 1 +PHONG METAL 0.5 PHONG_SIZE 4.81884 + COLOR 0.5 0.5 0.5 + TEXFUNC 0 + +TRI + V0 -4 -4 0 V1 -2.66667 -4 0 V2 -4 -2.66667 0 + txt002 +TRI + V0 -2.66667 -4 0 V1 -2.66667 -2.66667 0 V2 -4 -2.66667 0 + txt002 +TRI + V0 -4 -1.33333 0 V1 -2.66667 -1.33333 0 V2 -4 0 0 + txt002 +TRI + V0 -2.66667 -1.33333 0 V1 -2.66667 0 0 V2 -4 0 0 + txt002 +TRI + V0 -4 1.33333 0 V1 -2.66667 1.33333 0 V2 -4 2.66667 0 + txt002 +TRI + V0 -2.66667 1.33333 0 V1 -2.66667 2.66667 0 V2 -4 2.66667 0 + txt002 +TRI + V0 -2.66667 -2.66667 0 V1 -1.33333 -2.66667 0 V2 -2.66667 -1.33333 0 + txt002 +TRI + V0 -1.33333 -2.66667 0 V1 -1.33333 -1.33333 0 V2 -2.66667 -1.33333 0 + txt002 +TRI + V0 -2.66667 0 0 V1 -1.33333 0 0 V2 -2.66667 1.33333 0 + txt002 +TRI + V0 -1.33333 0 0 V1 -1.33333 1.33333 0 V2 -2.66667 1.33333 0 + txt002 +TRI + V0 -2.66667 2.66667 0 V1 -1.33333 2.66667 0 V2 -2.66667 4 0 + txt002 +TRI + V0 -1.33333 2.66667 0 V1 -1.33333 4 0 V2 -2.66667 4 0 + txt002 +TRI + V0 -1.33333 -4 0 V1 0 -4 0 V2 -1.33333 -2.66667 0 + txt002 +TRI + V0 0 -4 0 V1 0 -2.66667 0 V2 -1.33333 -2.66667 0 + txt002 +TRI + V0 -1.33333 -1.33333 0 V1 0 -1.33333 0 V2 -1.33333 0 0 + txt002 +TRI + V0 0 -1.33333 0 V1 0 0 0 V2 -1.33333 0 0 + txt002 +TRI + V0 -1.33333 1.33333 0 V1 0 1.33333 0 V2 -1.33333 2.66667 0 + txt002 +TRI + V0 0 1.33333 0 V1 0 2.66667 0 V2 -1.33333 2.66667 0 + txt002 +TRI + V0 0 -2.66667 0 V1 1.33333 -2.66667 0 V2 0 -1.33333 0 + txt002 +TRI + V0 1.33333 -2.66667 0 V1 1.33333 -1.33333 0 V2 0 -1.33333 0 + txt002 +TRI + V0 0 0 0 V1 1.33333 0 0 V2 0 1.33333 0 + txt002 +TRI + V0 1.33333 0 0 V1 1.33333 1.33333 0 V2 0 1.33333 0 + txt002 +TRI + V0 0 2.66667 0 V1 1.33333 2.66667 0 V2 0 4 0 + txt002 +TRI + V0 1.33333 2.66667 0 V1 1.33333 4 0 V2 0 4 0 + txt002 +TRI + V0 1.33333 -4 0 V1 2.66667 -4 0 V2 1.33333 -2.66667 0 + txt002 +TRI + V0 2.66667 -4 0 V1 2.66667 -2.66667 0 V2 1.33333 -2.66667 0 + txt002 +TRI + V0 1.33333 -1.33333 0 V1 2.66667 -1.33333 0 V2 1.33333 0 0 + txt002 +TRI + V0 2.66667 -1.33333 0 V1 2.66667 0 0 V2 1.33333 0 0 + txt002 +TRI + V0 1.33333 1.33333 0 V1 2.66667 1.33333 0 V2 1.33333 2.66667 0 + txt002 +TRI + V0 2.66667 1.33333 0 V1 2.66667 2.66667 0 V2 1.33333 2.66667 0 + txt002 +TRI + V0 2.66667 -2.66667 0 V1 4 -2.66667 0 V2 2.66667 -1.33333 0 + txt002 +TRI + V0 4 -2.66667 0 V1 4 -1.33333 0 V2 2.66667 -1.33333 0 + txt002 +TRI + V0 2.66667 0 0 V1 4 0 0 V2 2.66667 1.33333 0 + txt002 +TRI + V0 4 0 0 V1 4 1.33333 0 V2 2.66667 1.33333 0 + txt002 +TRI + V0 2.66667 2.66667 0 V1 4 2.66667 0 V2 2.66667 4 0 + txt002 +TRI + V0 4 2.66667 0 V1 4 4 0 V2 2.66667 4 0 + txt002 +TEXDEF txt003 AMBIENT 0 DIFFUSE 0.75 SPECULAR 0.25 OPACITY 1 +PHONG PLASTIC 0.25 PHONG_SIZE 45.2776 + COLOR 1 0.5 0.1 + TEXFUNC 0 + +STRI + V0 1.4 0 2.4 V1 1.35074 -0.375926 2.4 V2 1.33276 -0.370922 2.45469 + N0 -0.902861 -0 -0.429934 N1 -0.871509 0.234929 -0.430442 N2 -0.953562 0.257047 -0.156989 + txt003 +STRI + V0 1.33276 -0.370922 2.45469 V1 1.38137 0 2.45469 V2 1.4 0 2.4 + N0 -0.953562 0.257047 -0.156989 N1 -0.987636 -0 -0.156768 N2 -0.902861 -0 -0.429934 + txt003 +STRI + V0 1.35074 -0.375926 2.4 V1 1.21126 -0.711407 2.4 V2 1.19514 -0.701938 2.45469 + N0 -0.871509 0.234929 -0.430442 N1 -0.780517 0.4527 -0.43111 N2 -0.854265 0.495474 -0.157281 + txt003 +STRI + V0 1.19514 -0.701938 2.45469 V1 1.33276 -0.370922 2.45469 V2 1.35074 -0.375926 2.4 + N0 -0.854265 0.495474 -0.157281 N1 -0.953562 0.257047 -0.156989 N2 -0.871509 0.234929 -0.430442 + txt003 +STRI + V0 1.21126 -0.711407 2.4 V1 0.994 -0.994 2.4 V2 0.98077 -0.98077 2.45469 + N0 -0.780517 0.4527 -0.43111 N1 -0.637936 0.637936 -0.431366 N2 -0.698293 0.698293 -0.157393 + txt003 +STRI + V0 0.98077 -0.98077 2.45469 V1 1.19514 -0.701938 2.45469 V2 1.21126 -0.711407 2.4 + N0 -0.698293 0.698293 -0.157393 N1 -0.854265 0.495474 -0.157281 N2 -0.780517 0.4527 -0.43111 + txt003 +STRI + V0 0.994 -0.994 2.4 V1 0.711407 -1.21126 2.4 V2 0.701938 -1.19514 2.45469 + N0 -0.637936 0.637936 -0.431366 N1 -0.4527 0.780517 -0.43111 N2 -0.495474 0.854265 -0.157281 + txt003 +STRI + V0 0.701938 -1.19514 2.45469 V1 0.98077 -0.98077 2.45469 V2 0.994 -0.994 2.4 + N0 -0.495474 0.854265 -0.157281 N1 -0.698293 0.698293 -0.157393 N2 -0.637936 0.637936 -0.431366 + txt003 +STRI + V0 0.711407 -1.21126 2.4 V1 0.375926 -1.35074 2.4 V2 0.370922 -1.33276 2.45469 + N0 -0.4527 0.780517 -0.43111 N1 -0.234929 0.871509 -0.430442 N2 -0.257047 0.953562 -0.156989 + txt003 +STRI + V0 0.370922 -1.33276 2.45469 V1 0.701938 -1.19514 2.45469 V2 0.711407 -1.21126 2.4 + N0 -0.257047 0.953562 -0.156989 N1 -0.495474 0.854265 -0.157281 N2 -0.4527 0.780517 -0.43111 + txt003 +STRI + V0 0.375926 -1.35074 2.4 V1 0 -1.4 2.4 V2 0 -1.38137 2.45469 + N0 -0.234929 0.871509 -0.430442 N1 7.30595e-17 0.902861 -0.429934 N2 -9.89971e-17 0.987636 -0.156768 + txt003 +STRI + V0 0 -1.38137 2.45469 V1 0.370922 -1.33276 2.45469 V2 0.375926 -1.35074 2.4 + N0 -9.89971e-17 0.987636 -0.156768 N1 -0.257047 0.953562 -0.156989 N2 -0.234929 0.871509 -0.430442 + txt003 +STRI + V0 1.38137 0 2.45469 V1 1.33276 -0.370922 2.45469 V2 1.33555 -0.371699 2.4875 + N0 -0.987636 -0 -0.156768 N1 -0.953562 0.257047 -0.156989 N2 -0.849414 0.228972 0.475466 + txt003 +STRI + V0 1.33555 -0.371699 2.4875 V1 1.38426 0 2.4875 V2 1.38137 0 2.45469 + N0 -0.849414 0.228972 0.475466 N1 -0.880022 0 0.474933 N2 -0.987636 -0 -0.156768 + txt003 +STRI + V0 1.33276 -0.370922 2.45469 V1 1.19514 -0.701938 2.45469 V2 1.19764 -0.703409 2.4875 + N0 -0.953562 0.257047 -0.156989 N1 -0.854265 0.495474 -0.157281 N2 -0.760669 0.441188 0.476167 + txt003 +STRI + V0 1.19764 -0.703409 2.4875 V1 1.33555 -0.371699 2.4875 V2 1.33276 -0.370922 2.45469 + N0 -0.760669 0.441188 0.476167 N1 -0.849414 0.228972 0.475466 N2 -0.953562 0.257047 -0.156989 + txt003 +STRI + V0 1.19514 -0.701938 2.45469 V1 0.98077 -0.98077 2.45469 V2 0.982824 -0.982824 2.4875 + N0 -0.854265 0.495474 -0.157281 N1 -0.698293 0.698293 -0.157393 N2 -0.621695 0.621695 0.476435 + txt003 +STRI + V0 0.982824 -0.982824 2.4875 V1 1.19764 -0.703409 2.4875 V2 1.19514 -0.701938 2.45469 + N0 -0.621695 0.621695 0.476435 N1 -0.760669 0.441188 0.476167 N2 -0.854265 0.495474 -0.157281 + txt003 +STRI + V0 0.98077 -0.98077 2.45469 V1 0.701938 -1.19514 2.45469 V2 0.703409 -1.19764 2.4875 + N0 -0.698293 0.698293 -0.157393 N1 -0.495474 0.854265 -0.157281 N2 -0.441188 0.760669 0.476167 + txt003 +STRI + V0 0.703409 -1.19764 2.4875 V1 0.982824 -0.982824 2.4875 V2 0.98077 -0.98077 2.45469 + N0 -0.441188 0.760669 0.476167 N1 -0.621695 0.621695 0.476435 N2 -0.698293 0.698293 -0.157393 + txt003 +STRI + V0 0.701938 -1.19514 2.45469 V1 0.370922 -1.33276 2.45469 V2 0.371699 -1.33555 2.4875 + N0 -0.495474 0.854265 -0.157281 N1 -0.257047 0.953562 -0.156989 N2 -0.228972 0.849414 0.475466 + txt003 +STRI + V0 0.371699 -1.33555 2.4875 V1 0.703409 -1.19764 2.4875 V2 0.701938 -1.19514 2.45469 + N0 -0.228972 0.849414 0.475466 N1 -0.441188 0.760669 0.476167 N2 -0.495474 0.854265 -0.157281 + txt003 +STRI + V0 0.370922 -1.33276 2.45469 V1 0 -1.38137 2.45469 V2 0 -1.38426 2.4875 + N0 -0.257047 0.953562 -0.156989 N1 -9.89971e-17 0.987636 -0.156768 N2 -6.08179e-16 0.880022 0.474933 + txt003 +STRI + V0 0 -1.38426 2.4875 V1 0.371699 -1.33555 2.4875 V2 0.370922 -1.33276 2.45469 + N0 -6.08179e-16 0.880022 0.474933 N1 -0.228972 0.849414 0.475466 N2 -0.257047 0.953562 -0.156989 + txt003 +STRI + V0 1.38426 0 2.4875 V1 1.33555 -0.371699 2.4875 V2 1.35376 -0.376765 2.49844 + N0 -0.880022 0 0.474933 N1 -0.849414 0.228972 0.475466 N2 2.13636e-15 -5.93089e-16 1 + txt003 +STRI + V0 1.35376 -0.376765 2.49844 V1 1.40312 0 2.49844 V2 1.38426 0 2.4875 + N0 2.13636e-15 -5.93089e-16 1 N1 2.22045e-15 0 1 N2 -0.880022 0 0.474933 + txt003 +STRI + V0 1.33555 -0.371699 2.4875 V1 1.19764 -0.703409 2.4875 V2 1.21396 -0.712995 2.49844 + N0 -0.849414 0.228972 0.475466 N1 -0.760669 0.441188 0.476167 N2 1.87966e-15 -1.16933e-15 1 + txt003 +STRI + V0 1.21396 -0.712995 2.49844 V1 1.35376 -0.376765 2.49844 V2 1.33555 -0.371699 2.4875 + N0 1.87966e-15 -1.16933e-15 1 N1 2.13636e-15 -5.93089e-16 1 N2 -0.849414 0.228972 0.475466 + txt003 +STRI + V0 1.19764 -0.703409 2.4875 V1 0.982824 -0.982824 2.4875 V2 0.996219 -0.996219 2.49844 + N0 -0.760669 0.441188 0.476167 N1 -0.621695 0.621695 0.476435 N2 1.4538e-15 -1.67359e-15 1 + txt003 +STRI + V0 0.996219 -0.996219 2.49844 V1 1.21396 -0.712995 2.49844 V2 1.19764 -0.703409 2.4875 + N0 1.4538e-15 -1.67359e-15 1 N1 1.87966e-15 -1.16933e-15 1 N2 -0.760669 0.441188 0.476167 + txt003 +STRI + V0 0.982824 -0.982824 2.4875 V1 0.703409 -1.19764 2.4875 V2 0.712995 -1.21396 2.49844 + N0 -0.621695 0.621695 0.476435 N1 -0.441188 0.760669 0.476167 N2 8.74229e-16 -2.05298e-15 1 + txt003 +STRI + V0 0.712995 -1.21396 2.49844 V1 0.996219 -0.996219 2.49844 V2 0.982824 -0.982824 2.4875 + N0 8.74229e-16 -2.05298e-15 1 N1 1.4538e-15 -1.67359e-15 1 N2 -0.621695 0.621695 0.476435 + txt003 +STRI + V0 0.703409 -1.19764 2.4875 V1 0.371699 -1.33555 2.4875 V2 0.376765 -1.35376 2.49844 + N0 -0.441188 0.760669 0.476167 N1 -0.228972 0.849414 0.475466 N2 1.77072e-16 -2.25214e-15 1 + txt003 +STRI + V0 0.376765 -1.35376 2.49844 V1 0.712995 -1.21396 2.49844 V2 0.703409 -1.19764 2.4875 + N0 1.77072e-16 -2.25214e-15 1 N1 8.74229e-16 -2.05298e-15 1 N2 -0.441188 0.760669 0.476167 + txt003 +STRI + V0 0.371699 -1.33555 2.4875 V1 0 -1.38426 2.4875 V2 0 -1.40312 2.49844 + N0 -0.228972 0.849414 0.475466 N1 -6.08179e-16 0.880022 0.474933 N2 -5.65179e-16 -2.22045e-15 1 + txt003 +STRI + V0 0 -1.40312 2.49844 V1 0.376765 -1.35376 2.49844 V2 0.371699 -1.33555 2.4875 + N0 -5.65179e-16 -2.22045e-15 1 N1 1.77072e-16 -2.25214e-15 1 N2 -0.228972 0.849414 0.475466 + txt003 +STRI + V0 1.40312 0 2.49844 V1 1.35376 -0.376765 2.49844 V2 1.38201 -0.384628 2.4875 + N0 2.22045e-15 0 1 N1 2.13636e-15 -5.93089e-16 1 N2 0.537012 -0.14476 0.831061 + txt003 +STRI + V0 1.38201 -0.384628 2.4875 V1 1.43241 0 2.4875 V2 1.40312 0 2.49844 + N0 0.537012 -0.14476 0.831061 N1 0.556738 0 0.830688 N2 2.22045e-15 0 1 + txt003 +STRI + V0 1.35376 -0.376765 2.49844 V1 1.21396 -0.712995 2.49844 V2 1.2393 -0.727875 2.4875 + N0 2.13636e-15 -5.93089e-16 1 N1 1.87966e-15 -1.16933e-15 1 N2 0.480481 -0.278679 0.83155 + txt003 +STRI + V0 1.2393 -0.727875 2.4875 V1 1.38201 -0.384628 2.4875 V2 1.35376 -0.376765 2.49844 + N0 0.480481 -0.278679 0.83155 N1 0.537012 -0.14476 0.831061 N2 2.13636e-15 -5.93089e-16 1 + txt003 +STRI + V0 1.21396 -0.712995 2.49844 V1 0.996219 -0.996219 2.49844 V2 1.01701 -1.01701 2.4875 + N0 1.87966e-15 -1.16933e-15 1 N1 1.4538e-15 -1.67359e-15 1 N2 0.392564 -0.392564 0.831737 + txt003 +STRI + V0 1.01701 -1.01701 2.4875 V1 1.2393 -0.727875 2.4875 V2 1.21396 -0.712995 2.49844 + N0 0.392564 -0.392564 0.831737 N1 0.480481 -0.278679 0.83155 N2 1.87966e-15 -1.16933e-15 1 + txt003 +STRI + V0 0.996219 -0.996219 2.49844 V1 0.712995 -1.21396 2.49844 V2 0.727875 -1.2393 2.4875 + N0 1.4538e-15 -1.67359e-15 1 N1 8.74229e-16 -2.05298e-15 1 N2 0.278679 -0.480481 0.83155 + txt003 +STRI + V0 0.727875 -1.2393 2.4875 V1 1.01701 -1.01701 2.4875 V2 0.996219 -0.996219 2.49844 + N0 0.278679 -0.480481 0.83155 N1 0.392564 -0.392564 0.831737 N2 1.4538e-15 -1.67359e-15 1 + txt003 +STRI + V0 0.712995 -1.21396 2.49844 V1 0.376765 -1.35376 2.49844 V2 0.384628 -1.38201 2.4875 + N0 8.74229e-16 -2.05298e-15 1 N1 1.77072e-16 -2.25214e-15 1 N2 0.14476 -0.537012 0.831061 + txt003 +STRI + V0 0.384628 -1.38201 2.4875 V1 0.727875 -1.2393 2.4875 V2 0.712995 -1.21396 2.49844 + N0 0.14476 -0.537012 0.831061 N1 0.278679 -0.480481 0.83155 N2 8.74229e-16 -2.05298e-15 1 + txt003 +STRI + V0 0.376765 -1.35376 2.49844 V1 0 -1.40312 2.49844 V2 0 -1.43241 2.4875 + N0 1.77072e-16 -2.25214e-15 1 N1 -5.65179e-16 -2.22045e-15 1 N2 -4.5989e-16 -0.556738 0.830688 + txt003 +STRI + V0 0 -1.43241 2.4875 V1 0.384628 -1.38201 2.4875 V2 0.376765 -1.35376 2.49844 + N0 -4.5989e-16 -0.556738 0.830688 N1 0.14476 -0.537012 0.831061 N2 1.77072e-16 -2.25214e-15 1 + txt003 +STRI + V0 1.43241 0 2.4875 V1 1.38201 -0.384628 2.4875 V2 1.41495 -0.393796 2.45469 + N0 0.556738 0 0.830688 N1 0.537012 -0.14476 0.831061 N2 0.755869 -0.203756 0.622211 + txt003 +STRI + V0 1.41495 -0.393796 2.45469 V1 1.46655 0 2.45469 V2 1.43241 0 2.4875 + N0 0.755869 -0.203756 0.622211 N1 0.783289 0 0.621658 N2 0.556738 0 0.830688 + txt003 +STRI + V0 1.38201 -0.384628 2.4875 V1 1.2393 -0.727875 2.4875 V2 1.26884 -0.745225 2.45469 + N0 0.537012 -0.14476 0.831061 N1 0.480481 -0.278679 0.83155 N2 0.67669 -0.39248 0.622937 + txt003 +STRI + V0 1.26884 -0.745225 2.45469 V1 1.41495 -0.393796 2.45469 V2 1.38201 -0.384628 2.4875 + N0 0.67669 -0.39248 0.622937 N1 0.755869 -0.203756 0.622211 N2 0.537012 -0.14476 0.831061 + txt003 +STRI + V0 1.2393 -0.727875 2.4875 V1 1.01701 -1.01701 2.4875 V2 1.04125 -1.04125 2.45469 + N0 0.480481 -0.278679 0.83155 N1 0.392564 -0.392564 0.831737 N2 0.552993 -0.552993 0.623215 + txt003 +STRI + V0 1.04125 -1.04125 2.45469 V1 1.26884 -0.745225 2.45469 V2 1.2393 -0.727875 2.4875 + N0 0.552993 -0.552993 0.623215 N1 0.67669 -0.39248 0.622937 N2 0.480481 -0.278679 0.83155 + txt003 +STRI + V0 1.01701 -1.01701 2.4875 V1 0.727875 -1.2393 2.4875 V2 0.745225 -1.26884 2.45469 + N0 0.392564 -0.392564 0.831737 N1 0.278679 -0.480481 0.83155 N2 0.39248 -0.67669 0.622937 + txt003 +STRI + V0 0.745225 -1.26884 2.45469 V1 1.04125 -1.04125 2.45469 V2 1.01701 -1.01701 2.4875 + N0 0.39248 -0.67669 0.622937 N1 0.552993 -0.552993 0.623215 N2 0.392564 -0.392564 0.831737 + txt003 +STRI + V0 0.727875 -1.2393 2.4875 V1 0.384628 -1.38201 2.4875 V2 0.393796 -1.41495 2.45469 + N0 0.278679 -0.480481 0.83155 N1 0.14476 -0.537012 0.831061 N2 0.203756 -0.755869 0.622211 + txt003 +STRI + V0 0.393796 -1.41495 2.45469 V1 0.745225 -1.26884 2.45469 V2 0.727875 -1.2393 2.4875 + N0 0.203756 -0.755869 0.622211 N1 0.39248 -0.67669 0.622937 N2 0.278679 -0.480481 0.83155 + txt003 +STRI + V0 0.384628 -1.38201 2.4875 V1 0 -1.43241 2.4875 V2 0 -1.46655 2.45469 + N0 0.14476 -0.537012 0.831061 N1 -4.5989e-16 -0.556738 0.830688 N2 -1.94969e-16 -0.783289 0.621658 + txt003 +STRI + V0 0 -1.46655 2.45469 V1 0.393796 -1.41495 2.45469 V2 0.384628 -1.38201 2.4875 + N0 -1.94969e-16 -0.783289 0.621658 N1 0.203756 -0.755869 0.622211 N2 0.14476 -0.537012 0.831061 + txt003 +STRI + V0 1.46655 0 2.45469 V1 1.41495 -0.393796 2.45469 V2 1.44722 -0.402778 2.4 + N0 0.783289 0 0.621658 N1 0.755869 -0.203756 0.622211 N2 0.871509 -0.234929 0.430442 + txt003 +STRI + V0 1.44722 -0.402778 2.4 V1 1.5 0 2.4 V2 1.46655 0 2.45469 + N0 0.871509 -0.234929 0.430442 N1 0.902861 0 0.429934 N2 0.783289 0 0.621658 + txt003 +STRI + V0 1.41495 -0.393796 2.45469 V1 1.26884 -0.745225 2.45469 V2 1.29778 -0.762222 2.4 + N0 0.755869 -0.203756 0.622211 N1 0.67669 -0.39248 0.622937 N2 0.780517 -0.4527 0.43111 + txt003 +STRI + V0 1.29778 -0.762222 2.4 V1 1.44722 -0.402778 2.4 V2 1.41495 -0.393796 2.45469 + N0 0.780517 -0.4527 0.43111 N1 0.871509 -0.234929 0.430442 N2 0.755869 -0.203756 0.622211 + txt003 +STRI + V0 1.26884 -0.745225 2.45469 V1 1.04125 -1.04125 2.45469 V2 1.065 -1.065 2.4 + N0 0.67669 -0.39248 0.622937 N1 0.552993 -0.552993 0.623215 N2 0.637936 -0.637936 0.431366 + txt003 +STRI + V0 1.065 -1.065 2.4 V1 1.29778 -0.762222 2.4 V2 1.26884 -0.745225 2.45469 + N0 0.637936 -0.637936 0.431366 N1 0.780517 -0.4527 0.43111 N2 0.67669 -0.39248 0.622937 + txt003 +STRI + V0 1.04125 -1.04125 2.45469 V1 0.745225 -1.26884 2.45469 V2 0.762222 -1.29778 2.4 + N0 0.552993 -0.552993 0.623215 N1 0.39248 -0.67669 0.622937 N2 0.4527 -0.780517 0.43111 + txt003 +STRI + V0 0.762222 -1.29778 2.4 V1 1.065 -1.065 2.4 V2 1.04125 -1.04125 2.45469 + N0 0.4527 -0.780517 0.43111 N1 0.637936 -0.637936 0.431366 N2 0.552993 -0.552993 0.623215 + txt003 +STRI + V0 0.745225 -1.26884 2.45469 V1 0.393796 -1.41495 2.45469 V2 0.402778 -1.44722 2.4 + N0 0.39248 -0.67669 0.622937 N1 0.203756 -0.755869 0.622211 N2 0.234929 -0.871509 0.430442 + txt003 +STRI + V0 0.402778 -1.44722 2.4 V1 0.762222 -1.29778 2.4 V2 0.745225 -1.26884 2.45469 + N0 0.234929 -0.871509 0.430442 N1 0.4527 -0.780517 0.43111 N2 0.39248 -0.67669 0.622937 + txt003 +STRI + V0 0.393796 -1.41495 2.45469 V1 0 -1.46655 2.45469 V2 0 -1.5 2.4 + N0 0.203756 -0.755869 0.622211 N1 -1.94969e-16 -0.783289 0.621658 N2 -6.81889e-17 -0.902861 0.429934 + txt003 +STRI + V0 0 -1.5 2.4 V1 0.402778 -1.44722 2.4 V2 0.393796 -1.41495 2.45469 + N0 -6.81889e-17 -0.902861 0.429934 N1 0.234929 -0.871509 0.430442 N2 0.203756 -0.755869 0.622211 + txt003 +STRI + V0 0 -1.4 2.4 V1 -0.375926 -1.35074 2.4 V2 -0.370922 -1.33276 2.45469 + N0 0 0.902861 -0.429934 N1 0.234929 0.871509 -0.430442 N2 0.257047 0.953562 -0.156989 + txt003 +STRI + V0 -0.370922 -1.33276 2.45469 V1 0 -1.38137 2.45469 V2 0 -1.4 2.4 + N0 0.257047 0.953562 -0.156989 N1 0 0.987636 -0.156768 N2 0 0.902861 -0.429934 + txt003 +STRI + V0 -0.375926 -1.35074 2.4 V1 -0.711407 -1.21126 2.4 V2 -0.701938 -1.19514 2.45469 + N0 0.234929 0.871509 -0.430442 N1 0.4527 0.780517 -0.43111 N2 0.495474 0.854265 -0.157281 + txt003 +STRI + V0 -0.701938 -1.19514 2.45469 V1 -0.370922 -1.33276 2.45469 V2 -0.375926 -1.35074 2.4 + N0 0.495474 0.854265 -0.157281 N1 0.257047 0.953562 -0.156989 N2 0.234929 0.871509 -0.430442 + txt003 +STRI + V0 -0.711407 -1.21126 2.4 V1 -0.994 -0.994 2.4 V2 -0.98077 -0.98077 2.45469 + N0 0.4527 0.780517 -0.43111 N1 0.637936 0.637936 -0.431366 N2 0.698293 0.698293 -0.157393 + txt003 +STRI + V0 -0.98077 -0.98077 2.45469 V1 -0.701938 -1.19514 2.45469 V2 -0.711407 -1.21126 2.4 + N0 0.698293 0.698293 -0.157393 N1 0.495474 0.854265 -0.157281 N2 0.4527 0.780517 -0.43111 + txt003 +STRI + V0 -0.994 -0.994 2.4 V1 -1.21126 -0.711407 2.4 V2 -1.19514 -0.701938 2.45469 + N0 0.637936 0.637936 -0.431366 N1 0.780517 0.4527 -0.43111 N2 0.854265 0.495474 -0.157281 + txt003 +STRI + V0 -1.19514 -0.701938 2.45469 V1 -0.98077 -0.98077 2.45469 V2 -0.994 -0.994 2.4 + N0 0.854265 0.495474 -0.157281 N1 0.698293 0.698293 -0.157393 N2 0.637936 0.637936 -0.431366 + txt003 +STRI + V0 -1.21126 -0.711407 2.4 V1 -1.35074 -0.375926 2.4 V2 -1.33276 -0.370922 2.45469 + N0 0.780517 0.4527 -0.43111 N1 0.871509 0.234929 -0.430442 N2 0.953562 0.257047 -0.156989 + txt003 +STRI + V0 -1.33276 -0.370922 2.45469 V1 -1.19514 -0.701938 2.45469 V2 -1.21126 -0.711407 2.4 + N0 0.953562 0.257047 -0.156989 N1 0.854265 0.495474 -0.157281 N2 0.780517 0.4527 -0.43111 + txt003 +STRI + V0 -1.35074 -0.375926 2.4 V1 -1.4 0 2.4 V2 -1.38137 0 2.45469 + N0 0.871509 0.234929 -0.430442 N1 0.902861 -7.30595e-17 -0.429934 N2 0.987636 9.89971e-17 -0.156768 + txt003 +STRI + V0 -1.38137 0 2.45469 V1 -1.33276 -0.370922 2.45469 V2 -1.35074 -0.375926 2.4 + N0 0.987636 9.89971e-17 -0.156768 N1 0.953562 0.257047 -0.156989 N2 0.871509 0.234929 -0.430442 + txt003 +STRI + V0 0 -1.38137 2.45469 V1 -0.370922 -1.33276 2.45469 V2 -0.371699 -1.33555 2.4875 + N0 0 0.987636 -0.156768 N1 0.257047 0.953562 -0.156989 N2 0.228972 0.849414 0.475466 + txt003 +STRI + V0 -0.371699 -1.33555 2.4875 V1 0 -1.38426 2.4875 V2 0 -1.38137 2.45469 + N0 0.228972 0.849414 0.475466 N1 0 0.880022 0.474933 N2 0 0.987636 -0.156768 + txt003 +STRI + V0 -0.370922 -1.33276 2.45469 V1 -0.701938 -1.19514 2.45469 V2 -0.703409 -1.19764 2.4875 + N0 0.257047 0.953562 -0.156989 N1 0.495474 0.854265 -0.157281 N2 0.441188 0.760669 0.476167 + txt003 +STRI + V0 -0.703409 -1.19764 2.4875 V1 -0.371699 -1.33555 2.4875 V2 -0.370922 -1.33276 2.45469 + N0 0.441188 0.760669 0.476167 N1 0.228972 0.849414 0.475466 N2 0.257047 0.953562 -0.156989 + txt003 +STRI + V0 -0.701938 -1.19514 2.45469 V1 -0.98077 -0.98077 2.45469 V2 -0.982824 -0.982824 2.4875 + N0 0.495474 0.854265 -0.157281 N1 0.698293 0.698293 -0.157393 N2 0.621695 0.621695 0.476435 + txt003 +STRI + V0 -0.982824 -0.982824 2.4875 V1 -0.703409 -1.19764 2.4875 V2 -0.701938 -1.19514 2.45469 + N0 0.621695 0.621695 0.476435 N1 0.441188 0.760669 0.476167 N2 0.495474 0.854265 -0.157281 + txt003 +STRI + V0 -0.98077 -0.98077 2.45469 V1 -1.19514 -0.701938 2.45469 V2 -1.19764 -0.703409 2.4875 + N0 0.698293 0.698293 -0.157393 N1 0.854265 0.495474 -0.157281 N2 0.760669 0.441188 0.476167 + txt003 +STRI + V0 -1.19764 -0.703409 2.4875 V1 -0.982824 -0.982824 2.4875 V2 -0.98077 -0.98077 2.45469 + N0 0.760669 0.441188 0.476167 N1 0.621695 0.621695 0.476435 N2 0.698293 0.698293 -0.157393 + txt003 +STRI + V0 -1.19514 -0.701938 2.45469 V1 -1.33276 -0.370922 2.45469 V2 -1.33555 -0.371699 2.4875 + N0 0.854265 0.495474 -0.157281 N1 0.953562 0.257047 -0.156989 N2 0.849414 0.228972 0.475466 + txt003 +STRI + V0 -1.33555 -0.371699 2.4875 V1 -1.19764 -0.703409 2.4875 V2 -1.19514 -0.701938 2.45469 + N0 0.849414 0.228972 0.475466 N1 0.760669 0.441188 0.476167 N2 0.854265 0.495474 -0.157281 + txt003 +STRI + V0 -1.33276 -0.370922 2.45469 V1 -1.38137 0 2.45469 V2 -1.38426 0 2.4875 + N0 0.953562 0.257047 -0.156989 N1 0.987636 9.89971e-17 -0.156768 N2 0.880022 6.08179e-16 0.474933 + txt003 +STRI + V0 -1.38426 0 2.4875 V1 -1.33555 -0.371699 2.4875 V2 -1.33276 -0.370922 2.45469 + N0 0.880022 6.08179e-16 0.474933 N1 0.849414 0.228972 0.475466 N2 0.953562 0.257047 -0.156989 + txt003 +STRI + V0 0 -1.38426 2.4875 V1 -0.371699 -1.33555 2.4875 V2 -0.376765 -1.35376 2.49844 + N0 0 0.880022 0.474933 N1 0.228972 0.849414 0.475466 N2 -5.93089e-16 -2.13636e-15 1 + txt003 +STRI + V0 -0.376765 -1.35376 2.49844 V1 0 -1.40312 2.49844 V2 0 -1.38426 2.4875 + N0 -5.93089e-16 -2.13636e-15 1 N1 0 -2.22045e-15 1 N2 0 0.880022 0.474933 + txt003 +STRI + V0 -0.371699 -1.33555 2.4875 V1 -0.703409 -1.19764 2.4875 V2 -0.712995 -1.21396 2.49844 + N0 0.228972 0.849414 0.475466 N1 0.441188 0.760669 0.476167 N2 -1.16933e-15 -1.87966e-15 1 + txt003 +STRI + V0 -0.712995 -1.21396 2.49844 V1 -0.376765 -1.35376 2.49844 V2 -0.371699 -1.33555 2.4875 + N0 -1.16933e-15 -1.87966e-15 1 N1 -5.93089e-16 -2.13636e-15 1 N2 0.228972 0.849414 0.475466 + txt003 +STRI + V0 -0.703409 -1.19764 2.4875 V1 -0.982824 -0.982824 2.4875 V2 -0.996219 -0.996219 2.49844 + N0 0.441188 0.760669 0.476167 N1 0.621695 0.621695 0.476435 N2 -1.67359e-15 -1.4538e-15 1 + txt003 +STRI + V0 -0.996219 -0.996219 2.49844 V1 -0.712995 -1.21396 2.49844 V2 -0.703409 -1.19764 2.4875 + N0 -1.67359e-15 -1.4538e-15 1 N1 -1.16933e-15 -1.87966e-15 1 N2 0.441188 0.760669 0.476167 + txt003 +STRI + V0 -0.982824 -0.982824 2.4875 V1 -1.19764 -0.703409 2.4875 V2 -1.21396 -0.712995 2.49844 + N0 0.621695 0.621695 0.476435 N1 0.760669 0.441188 0.476167 N2 -2.05298e-15 -8.74229e-16 1 + txt003 +STRI + V0 -1.21396 -0.712995 2.49844 V1 -0.996219 -0.996219 2.49844 V2 -0.982824 -0.982824 2.4875 + N0 -2.05298e-15 -8.74229e-16 1 N1 -1.67359e-15 -1.4538e-15 1 N2 0.621695 0.621695 0.476435 + txt003 +STRI + V0 -1.19764 -0.703409 2.4875 V1 -1.33555 -0.371699 2.4875 V2 -1.35376 -0.376765 2.49844 + N0 0.760669 0.441188 0.476167 N1 0.849414 0.228972 0.475466 N2 -2.25214e-15 -1.77072e-16 1 + txt003 +STRI + V0 -1.35376 -0.376765 2.49844 V1 -1.21396 -0.712995 2.49844 V2 -1.19764 -0.703409 2.4875 + N0 -2.25214e-15 -1.77072e-16 1 N1 -2.05298e-15 -8.74229e-16 1 N2 0.760669 0.441188 0.476167 + txt003 +STRI + V0 -1.33555 -0.371699 2.4875 V1 -1.38426 0 2.4875 V2 -1.40312 0 2.49844 + N0 0.849414 0.228972 0.475466 N1 0.880022 6.08179e-16 0.474933 N2 -2.22045e-15 5.65179e-16 1 + txt003 +STRI + V0 -1.40312 0 2.49844 V1 -1.35376 -0.376765 2.49844 V2 -1.33555 -0.371699 2.4875 + N0 -2.22045e-15 5.65179e-16 1 N1 -2.25214e-15 -1.77072e-16 1 N2 0.849414 0.228972 0.475466 + txt003 +STRI + V0 0 -1.40312 2.49844 V1 -0.376765 -1.35376 2.49844 V2 -0.384628 -1.38201 2.4875 + N0 0 -2.22045e-15 1 N1 -5.93089e-16 -2.13636e-15 1 N2 -0.14476 -0.537012 0.831061 + txt003 +STRI + V0 -0.384628 -1.38201 2.4875 V1 0 -1.43241 2.4875 V2 0 -1.40312 2.49844 + N0 -0.14476 -0.537012 0.831061 N1 0 -0.556738 0.830688 N2 0 -2.22045e-15 1 + txt003 +STRI + V0 -0.376765 -1.35376 2.49844 V1 -0.712995 -1.21396 2.49844 V2 -0.727875 -1.2393 2.4875 + N0 -5.93089e-16 -2.13636e-15 1 N1 -1.16933e-15 -1.87966e-15 1 N2 -0.278679 -0.480481 0.83155 + txt003 +STRI + V0 -0.727875 -1.2393 2.4875 V1 -0.384628 -1.38201 2.4875 V2 -0.376765 -1.35376 2.49844 + N0 -0.278679 -0.480481 0.83155 N1 -0.14476 -0.537012 0.831061 N2 -5.93089e-16 -2.13636e-15 1 + txt003 +STRI + V0 -0.712995 -1.21396 2.49844 V1 -0.996219 -0.996219 2.49844 V2 -1.01701 -1.01701 2.4875 + N0 -1.16933e-15 -1.87966e-15 1 N1 -1.67359e-15 -1.4538e-15 1 N2 -0.392564 -0.392564 0.831737 + txt003 +STRI + V0 -1.01701 -1.01701 2.4875 V1 -0.727875 -1.2393 2.4875 V2 -0.712995 -1.21396 2.49844 + N0 -0.392564 -0.392564 0.831737 N1 -0.278679 -0.480481 0.83155 N2 -1.16933e-15 -1.87966e-15 1 + txt003 +STRI + V0 -0.996219 -0.996219 2.49844 V1 -1.21396 -0.712995 2.49844 V2 -1.2393 -0.727875 2.4875 + N0 -1.67359e-15 -1.4538e-15 1 N1 -2.05298e-15 -8.74229e-16 1 N2 -0.480481 -0.278679 0.83155 + txt003 +STRI + V0 -1.2393 -0.727875 2.4875 V1 -1.01701 -1.01701 2.4875 V2 -0.996219 -0.996219 2.49844 + N0 -0.480481 -0.278679 0.83155 N1 -0.392564 -0.392564 0.831737 N2 -1.67359e-15 -1.4538e-15 1 + txt003 +STRI + V0 -1.21396 -0.712995 2.49844 V1 -1.35376 -0.376765 2.49844 V2 -1.38201 -0.384628 2.4875 + N0 -2.05298e-15 -8.74229e-16 1 N1 -2.25214e-15 -1.77072e-16 1 N2 -0.537012 -0.14476 0.831061 + txt003 +STRI + V0 -1.38201 -0.384628 2.4875 V1 -1.2393 -0.727875 2.4875 V2 -1.21396 -0.712995 2.49844 + N0 -0.537012 -0.14476 0.831061 N1 -0.480481 -0.278679 0.83155 N2 -2.05298e-15 -8.74229e-16 1 + txt003 +STRI + V0 -1.35376 -0.376765 2.49844 V1 -1.40312 0 2.49844 V2 -1.43241 0 2.4875 + N0 -2.25214e-15 -1.77072e-16 1 N1 -2.22045e-15 5.65179e-16 1 N2 -0.556738 4.5989e-16 0.830688 + txt003 +STRI + V0 -1.43241 0 2.4875 V1 -1.38201 -0.384628 2.4875 V2 -1.35376 -0.376765 2.49844 + N0 -0.556738 4.5989e-16 0.830688 N1 -0.537012 -0.14476 0.831061 N2 -2.25214e-15 -1.77072e-16 1 + txt003 +STRI + V0 0 -1.43241 2.4875 V1 -0.384628 -1.38201 2.4875 V2 -0.393796 -1.41495 2.45469 + N0 0 -0.556738 0.830688 N1 -0.14476 -0.537012 0.831061 N2 -0.203756 -0.755869 0.622211 + txt003 +STRI + V0 -0.393796 -1.41495 2.45469 V1 0 -1.46655 2.45469 V2 0 -1.43241 2.4875 + N0 -0.203756 -0.755869 0.622211 N1 0 -0.783289 0.621658 N2 0 -0.556738 0.830688 + txt003 +STRI + V0 -0.384628 -1.38201 2.4875 V1 -0.727875 -1.2393 2.4875 V2 -0.745225 -1.26884 2.45469 + N0 -0.14476 -0.537012 0.831061 N1 -0.278679 -0.480481 0.83155 N2 -0.39248 -0.67669 0.622937 + txt003 +STRI + V0 -0.745225 -1.26884 2.45469 V1 -0.393796 -1.41495 2.45469 V2 -0.384628 -1.38201 2.4875 + N0 -0.39248 -0.67669 0.622937 N1 -0.203756 -0.755869 0.622211 N2 -0.14476 -0.537012 0.831061 + txt003 +STRI + V0 -0.727875 -1.2393 2.4875 V1 -1.01701 -1.01701 2.4875 V2 -1.04125 -1.04125 2.45469 + N0 -0.278679 -0.480481 0.83155 N1 -0.392564 -0.392564 0.831737 N2 -0.552993 -0.552993 0.623215 + txt003 +STRI + V0 -1.04125 -1.04125 2.45469 V1 -0.745225 -1.26884 2.45469 V2 -0.727875 -1.2393 2.4875 + N0 -0.552993 -0.552993 0.623215 N1 -0.39248 -0.67669 0.622937 N2 -0.278679 -0.480481 0.83155 + txt003 +STRI + V0 -1.01701 -1.01701 2.4875 V1 -1.2393 -0.727875 2.4875 V2 -1.26884 -0.745225 2.45469 + N0 -0.392564 -0.392564 0.831737 N1 -0.480481 -0.278679 0.83155 N2 -0.67669 -0.39248 0.622937 + txt003 +STRI + V0 -1.26884 -0.745225 2.45469 V1 -1.04125 -1.04125 2.45469 V2 -1.01701 -1.01701 2.4875 + N0 -0.67669 -0.39248 0.622937 N1 -0.552993 -0.552993 0.623215 N2 -0.392564 -0.392564 0.831737 + txt003 +STRI + V0 -1.2393 -0.727875 2.4875 V1 -1.38201 -0.384628 2.4875 V2 -1.41495 -0.393796 2.45469 + N0 -0.480481 -0.278679 0.83155 N1 -0.537012 -0.14476 0.831061 N2 -0.755869 -0.203756 0.622211 + txt003 +STRI + V0 -1.41495 -0.393796 2.45469 V1 -1.26884 -0.745225 2.45469 V2 -1.2393 -0.727875 2.4875 + N0 -0.755869 -0.203756 0.622211 N1 -0.67669 -0.39248 0.622937 N2 -0.480481 -0.278679 0.83155 + txt003 +STRI + V0 -1.38201 -0.384628 2.4875 V1 -1.43241 0 2.4875 V2 -1.46655 0 2.45469 + N0 -0.537012 -0.14476 0.831061 N1 -0.556738 4.5989e-16 0.830688 N2 -0.783289 1.94969e-16 0.621658 + txt003 +STRI + V0 -1.46655 0 2.45469 V1 -1.41495 -0.393796 2.45469 V2 -1.38201 -0.384628 2.4875 + N0 -0.783289 1.94969e-16 0.621658 N1 -0.755869 -0.203756 0.622211 N2 -0.537012 -0.14476 0.831061 + txt003 +STRI + V0 0 -1.46655 2.45469 V1 -0.393796 -1.41495 2.45469 V2 -0.402778 -1.44722 2.4 + N0 0 -0.783289 0.621658 N1 -0.203756 -0.755869 0.622211 N2 -0.234929 -0.871509 0.430442 + txt003 +STRI + V0 -0.402778 -1.44722 2.4 V1 0 -1.5 2.4 V2 0 -1.46655 2.45469 + N0 -0.234929 -0.871509 0.430442 N1 0 -0.902861 0.429934 N2 0 -0.783289 0.621658 + txt003 +STRI + V0 -0.393796 -1.41495 2.45469 V1 -0.745225 -1.26884 2.45469 V2 -0.762222 -1.29778 2.4 + N0 -0.203756 -0.755869 0.622211 N1 -0.39248 -0.67669 0.622937 N2 -0.4527 -0.780517 0.43111 + txt003 +STRI + V0 -0.762222 -1.29778 2.4 V1 -0.402778 -1.44722 2.4 V2 -0.393796 -1.41495 2.45469 + N0 -0.4527 -0.780517 0.43111 N1 -0.234929 -0.871509 0.430442 N2 -0.203756 -0.755869 0.622211 + txt003 +STRI + V0 -0.745225 -1.26884 2.45469 V1 -1.04125 -1.04125 2.45469 V2 -1.065 -1.065 2.4 + N0 -0.39248 -0.67669 0.622937 N1 -0.552993 -0.552993 0.623215 N2 -0.637936 -0.637936 0.431366 + txt003 +STRI + V0 -1.065 -1.065 2.4 V1 -0.762222 -1.29778 2.4 V2 -0.745225 -1.26884 2.45469 + N0 -0.637936 -0.637936 0.431366 N1 -0.4527 -0.780517 0.43111 N2 -0.39248 -0.67669 0.622937 + txt003 +STRI + V0 -1.04125 -1.04125 2.45469 V1 -1.26884 -0.745225 2.45469 V2 -1.29778 -0.762222 2.4 + N0 -0.552993 -0.552993 0.623215 N1 -0.67669 -0.39248 0.622937 N2 -0.780517 -0.4527 0.43111 + txt003 +STRI + V0 -1.29778 -0.762222 2.4 V1 -1.065 -1.065 2.4 V2 -1.04125 -1.04125 2.45469 + N0 -0.780517 -0.4527 0.43111 N1 -0.637936 -0.637936 0.431366 N2 -0.552993 -0.552993 0.623215 + txt003 +STRI + V0 -1.26884 -0.745225 2.45469 V1 -1.41495 -0.393796 2.45469 V2 -1.44722 -0.402778 2.4 + N0 -0.67669 -0.39248 0.622937 N1 -0.755869 -0.203756 0.622211 N2 -0.871509 -0.234929 0.430442 + txt003 +STRI + V0 -1.44722 -0.402778 2.4 V1 -1.29778 -0.762222 2.4 V2 -1.26884 -0.745225 2.45469 + N0 -0.871509 -0.234929 0.430442 N1 -0.780517 -0.4527 0.43111 N2 -0.67669 -0.39248 0.622937 + txt003 +STRI + V0 -1.41495 -0.393796 2.45469 V1 -1.46655 0 2.45469 V2 -1.5 0 2.4 + N0 -0.755869 -0.203756 0.622211 N1 -0.783289 1.94969e-16 0.621658 N2 -0.902861 6.81889e-17 0.429934 + txt003 +STRI + V0 -1.5 0 2.4 V1 -1.44722 -0.402778 2.4 V2 -1.41495 -0.393796 2.45469 + N0 -0.902861 6.81889e-17 0.429934 N1 -0.871509 -0.234929 0.430442 N2 -0.755869 -0.203756 0.622211 + txt003 +STRI + V0 -1.4 0 2.4 V1 -1.35074 0.375926 2.4 V2 -1.33276 0.370922 2.45469 + N0 0.902861 0 -0.429934 N1 0.871509 -0.234929 -0.430442 N2 0.953562 -0.257047 -0.156989 + txt003 +STRI + V0 -1.33276 0.370922 2.45469 V1 -1.38137 0 2.45469 V2 -1.4 0 2.4 + N0 0.953562 -0.257047 -0.156989 N1 0.987636 0 -0.156768 N2 0.902861 0 -0.429934 + txt003 +STRI + V0 -1.35074 0.375926 2.4 V1 -1.21126 0.711407 2.4 V2 -1.19514 0.701938 2.45469 + N0 0.871509 -0.234929 -0.430442 N1 0.780517 -0.4527 -0.43111 N2 0.854265 -0.495474 -0.157281 + txt003 +STRI + V0 -1.19514 0.701938 2.45469 V1 -1.33276 0.370922 2.45469 V2 -1.35074 0.375926 2.4 + N0 0.854265 -0.495474 -0.157281 N1 0.953562 -0.257047 -0.156989 N2 0.871509 -0.234929 -0.430442 + txt003 +STRI + V0 -1.21126 0.711407 2.4 V1 -0.994 0.994 2.4 V2 -0.98077 0.98077 2.45469 + N0 0.780517 -0.4527 -0.43111 N1 0.637936 -0.637936 -0.431366 N2 0.698293 -0.698293 -0.157393 + txt003 +STRI + V0 -0.98077 0.98077 2.45469 V1 -1.19514 0.701938 2.45469 V2 -1.21126 0.711407 2.4 + N0 0.698293 -0.698293 -0.157393 N1 0.854265 -0.495474 -0.157281 N2 0.780517 -0.4527 -0.43111 + txt003 +STRI + V0 -0.994 0.994 2.4 V1 -0.711407 1.21126 2.4 V2 -0.701938 1.19514 2.45469 + N0 0.637936 -0.637936 -0.431366 N1 0.4527 -0.780517 -0.43111 N2 0.495474 -0.854265 -0.157281 + txt003 +STRI + V0 -0.701938 1.19514 2.45469 V1 -0.98077 0.98077 2.45469 V2 -0.994 0.994 2.4 + N0 0.495474 -0.854265 -0.157281 N1 0.698293 -0.698293 -0.157393 N2 0.637936 -0.637936 -0.431366 + txt003 +STRI + V0 -0.711407 1.21126 2.4 V1 -0.375926 1.35074 2.4 V2 -0.370922 1.33276 2.45469 + N0 0.4527 -0.780517 -0.43111 N1 0.234929 -0.871509 -0.430442 N2 0.257047 -0.953562 -0.156989 + txt003 +STRI + V0 -0.370922 1.33276 2.45469 V1 -0.701938 1.19514 2.45469 V2 -0.711407 1.21126 2.4 + N0 0.257047 -0.953562 -0.156989 N1 0.495474 -0.854265 -0.157281 N2 0.4527 -0.780517 -0.43111 + txt003 +STRI + V0 -0.375926 1.35074 2.4 V1 0 1.4 2.4 V2 0 1.38137 2.45469 + N0 0.234929 -0.871509 -0.430442 N1 -7.30595e-17 -0.902861 -0.429934 N2 9.89971e-17 -0.987636 -0.156768 + txt003 +STRI + V0 0 1.38137 2.45469 V1 -0.370922 1.33276 2.45469 V2 -0.375926 1.35074 2.4 + N0 9.89971e-17 -0.987636 -0.156768 N1 0.257047 -0.953562 -0.156989 N2 0.234929 -0.871509 -0.430442 + txt003 +STRI + V0 -1.38137 0 2.45469 V1 -1.33276 0.370922 2.45469 V2 -1.33555 0.371699 2.4875 + N0 0.987636 0 -0.156768 N1 0.953562 -0.257047 -0.156989 N2 0.849414 -0.228972 0.475466 + txt003 +STRI + V0 -1.33555 0.371699 2.4875 V1 -1.38426 0 2.4875 V2 -1.38137 0 2.45469 + N0 0.849414 -0.228972 0.475466 N1 0.880022 -0 0.474933 N2 0.987636 0 -0.156768 + txt003 +STRI + V0 -1.33276 0.370922 2.45469 V1 -1.19514 0.701938 2.45469 V2 -1.19764 0.703409 2.4875 + N0 0.953562 -0.257047 -0.156989 N1 0.854265 -0.495474 -0.157281 N2 0.760669 -0.441188 0.476167 + txt003 +STRI + V0 -1.19764 0.703409 2.4875 V1 -1.33555 0.371699 2.4875 V2 -1.33276 0.370922 2.45469 + N0 0.760669 -0.441188 0.476167 N1 0.849414 -0.228972 0.475466 N2 0.953562 -0.257047 -0.156989 + txt003 +STRI + V0 -1.19514 0.701938 2.45469 V1 -0.98077 0.98077 2.45469 V2 -0.982824 0.982824 2.4875 + N0 0.854265 -0.495474 -0.157281 N1 0.698293 -0.698293 -0.157393 N2 0.621695 -0.621695 0.476435 + txt003 +STRI + V0 -0.982824 0.982824 2.4875 V1 -1.19764 0.703409 2.4875 V2 -1.19514 0.701938 2.45469 + N0 0.621695 -0.621695 0.476435 N1 0.760669 -0.441188 0.476167 N2 0.854265 -0.495474 -0.157281 + txt003 +STRI + V0 -0.98077 0.98077 2.45469 V1 -0.701938 1.19514 2.45469 V2 -0.703409 1.19764 2.4875 + N0 0.698293 -0.698293 -0.157393 N1 0.495474 -0.854265 -0.157281 N2 0.441188 -0.760669 0.476167 + txt003 +STRI + V0 -0.703409 1.19764 2.4875 V1 -0.982824 0.982824 2.4875 V2 -0.98077 0.98077 2.45469 + N0 0.441188 -0.760669 0.476167 N1 0.621695 -0.621695 0.476435 N2 0.698293 -0.698293 -0.157393 + txt003 +STRI + V0 -0.701938 1.19514 2.45469 V1 -0.370922 1.33276 2.45469 V2 -0.371699 1.33555 2.4875 + N0 0.495474 -0.854265 -0.157281 N1 0.257047 -0.953562 -0.156989 N2 0.228972 -0.849414 0.475466 + txt003 +STRI + V0 -0.371699 1.33555 2.4875 V1 -0.703409 1.19764 2.4875 V2 -0.701938 1.19514 2.45469 + N0 0.228972 -0.849414 0.475466 N1 0.441188 -0.760669 0.476167 N2 0.495474 -0.854265 -0.157281 + txt003 +STRI + V0 -0.370922 1.33276 2.45469 V1 0 1.38137 2.45469 V2 0 1.38426 2.4875 + N0 0.257047 -0.953562 -0.156989 N1 9.89971e-17 -0.987636 -0.156768 N2 6.08179e-16 -0.880022 0.474933 + txt003 +STRI + V0 0 1.38426 2.4875 V1 -0.371699 1.33555 2.4875 V2 -0.370922 1.33276 2.45469 + N0 6.08179e-16 -0.880022 0.474933 N1 0.228972 -0.849414 0.475466 N2 0.257047 -0.953562 -0.156989 + txt003 +STRI + V0 -1.38426 0 2.4875 V1 -1.33555 0.371699 2.4875 V2 -1.35376 0.376765 2.49844 + N0 0.880022 -0 0.474933 N1 0.849414 -0.228972 0.475466 N2 -2.13636e-15 5.93089e-16 1 + txt003 +STRI + V0 -1.35376 0.376765 2.49844 V1 -1.40312 0 2.49844 V2 -1.38426 0 2.4875 + N0 -2.13636e-15 5.93089e-16 1 N1 -2.22045e-15 0 1 N2 0.880022 -0 0.474933 + txt003 +STRI + V0 -1.33555 0.371699 2.4875 V1 -1.19764 0.703409 2.4875 V2 -1.21396 0.712995 2.49844 + N0 0.849414 -0.228972 0.475466 N1 0.760669 -0.441188 0.476167 N2 -1.87966e-15 1.16933e-15 1 + txt003 +STRI + V0 -1.21396 0.712995 2.49844 V1 -1.35376 0.376765 2.49844 V2 -1.33555 0.371699 2.4875 + N0 -1.87966e-15 1.16933e-15 1 N1 -2.13636e-15 5.93089e-16 1 N2 0.849414 -0.228972 0.475466 + txt003 +STRI + V0 -1.19764 0.703409 2.4875 V1 -0.982824 0.982824 2.4875 V2 -0.996219 0.996219 2.49844 + N0 0.760669 -0.441188 0.476167 N1 0.621695 -0.621695 0.476435 N2 -1.4538e-15 1.67359e-15 1 + txt003 +STRI + V0 -0.996219 0.996219 2.49844 V1 -1.21396 0.712995 2.49844 V2 -1.19764 0.703409 2.4875 + N0 -1.4538e-15 1.67359e-15 1 N1 -1.87966e-15 1.16933e-15 1 N2 0.760669 -0.441188 0.476167 + txt003 +STRI + V0 -0.982824 0.982824 2.4875 V1 -0.703409 1.19764 2.4875 V2 -0.712995 1.21396 2.49844 + N0 0.621695 -0.621695 0.476435 N1 0.441188 -0.760669 0.476167 N2 -8.74229e-16 2.05298e-15 1 + txt003 +STRI + V0 -0.712995 1.21396 2.49844 V1 -0.996219 0.996219 2.49844 V2 -0.982824 0.982824 2.4875 + N0 -8.74229e-16 2.05298e-15 1 N1 -1.4538e-15 1.67359e-15 1 N2 0.621695 -0.621695 0.476435 + txt003 +STRI + V0 -0.703409 1.19764 2.4875 V1 -0.371699 1.33555 2.4875 V2 -0.376765 1.35376 2.49844 + N0 0.441188 -0.760669 0.476167 N1 0.228972 -0.849414 0.475466 N2 -1.77072e-16 2.25214e-15 1 + txt003 +STRI + V0 -0.376765 1.35376 2.49844 V1 -0.712995 1.21396 2.49844 V2 -0.703409 1.19764 2.4875 + N0 -1.77072e-16 2.25214e-15 1 N1 -8.74229e-16 2.05298e-15 1 N2 0.441188 -0.760669 0.476167 + txt003 +STRI + V0 -0.371699 1.33555 2.4875 V1 0 1.38426 2.4875 V2 0 1.40312 2.49844 + N0 0.228972 -0.849414 0.475466 N1 6.08179e-16 -0.880022 0.474933 N2 5.65179e-16 2.22045e-15 1 + txt003 +STRI + V0 0 1.40312 2.49844 V1 -0.376765 1.35376 2.49844 V2 -0.371699 1.33555 2.4875 + N0 5.65179e-16 2.22045e-15 1 N1 -1.77072e-16 2.25214e-15 1 N2 0.228972 -0.849414 0.475466 + txt003 +STRI + V0 -1.40312 0 2.49844 V1 -1.35376 0.376765 2.49844 V2 -1.38201 0.384628 2.4875 + N0 -2.22045e-15 0 1 N1 -2.13636e-15 5.93089e-16 1 N2 -0.537012 0.14476 0.831061 + txt003 +STRI + V0 -1.38201 0.384628 2.4875 V1 -1.43241 0 2.4875 V2 -1.40312 0 2.49844 + N0 -0.537012 0.14476 0.831061 N1 -0.556738 0 0.830688 N2 -2.22045e-15 0 1 + txt003 +STRI + V0 -1.35376 0.376765 2.49844 V1 -1.21396 0.712995 2.49844 V2 -1.2393 0.727875 2.4875 + N0 -2.13636e-15 5.93089e-16 1 N1 -1.87966e-15 1.16933e-15 1 N2 -0.480481 0.278679 0.83155 + txt003 +STRI + V0 -1.2393 0.727875 2.4875 V1 -1.38201 0.384628 2.4875 V2 -1.35376 0.376765 2.49844 + N0 -0.480481 0.278679 0.83155 N1 -0.537012 0.14476 0.831061 N2 -2.13636e-15 5.93089e-16 1 + txt003 +STRI + V0 -1.21396 0.712995 2.49844 V1 -0.996219 0.996219 2.49844 V2 -1.01701 1.01701 2.4875 + N0 -1.87966e-15 1.16933e-15 1 N1 -1.4538e-15 1.67359e-15 1 N2 -0.392564 0.392564 0.831737 + txt003 +STRI + V0 -1.01701 1.01701 2.4875 V1 -1.2393 0.727875 2.4875 V2 -1.21396 0.712995 2.49844 + N0 -0.392564 0.392564 0.831737 N1 -0.480481 0.278679 0.83155 N2 -1.87966e-15 1.16933e-15 1 + txt003 +STRI + V0 -0.996219 0.996219 2.49844 V1 -0.712995 1.21396 2.49844 V2 -0.727875 1.2393 2.4875 + N0 -1.4538e-15 1.67359e-15 1 N1 -8.74229e-16 2.05298e-15 1 N2 -0.278679 0.480481 0.83155 + txt003 +STRI + V0 -0.727875 1.2393 2.4875 V1 -1.01701 1.01701 2.4875 V2 -0.996219 0.996219 2.49844 + N0 -0.278679 0.480481 0.83155 N1 -0.392564 0.392564 0.831737 N2 -1.4538e-15 1.67359e-15 1 + txt003 +STRI + V0 -0.712995 1.21396 2.49844 V1 -0.376765 1.35376 2.49844 V2 -0.384628 1.38201 2.4875 + N0 -8.74229e-16 2.05298e-15 1 N1 -1.77072e-16 2.25214e-15 1 N2 -0.14476 0.537012 0.831061 + txt003 +STRI + V0 -0.384628 1.38201 2.4875 V1 -0.727875 1.2393 2.4875 V2 -0.712995 1.21396 2.49844 + N0 -0.14476 0.537012 0.831061 N1 -0.278679 0.480481 0.83155 N2 -8.74229e-16 2.05298e-15 1 + txt003 +STRI + V0 -0.376765 1.35376 2.49844 V1 0 1.40312 2.49844 V2 0 1.43241 2.4875 + N0 -1.77072e-16 2.25214e-15 1 N1 5.65179e-16 2.22045e-15 1 N2 4.5989e-16 0.556738 0.830688 + txt003 +STRI + V0 0 1.43241 2.4875 V1 -0.384628 1.38201 2.4875 V2 -0.376765 1.35376 2.49844 + N0 4.5989e-16 0.556738 0.830688 N1 -0.14476 0.537012 0.831061 N2 -1.77072e-16 2.25214e-15 1 + txt003 +STRI + V0 -1.43241 0 2.4875 V1 -1.38201 0.384628 2.4875 V2 -1.41495 0.393796 2.45469 + N0 -0.556738 0 0.830688 N1 -0.537012 0.14476 0.831061 N2 -0.755869 0.203756 0.622211 + txt003 +STRI + V0 -1.41495 0.393796 2.45469 V1 -1.46655 0 2.45469 V2 -1.43241 0 2.4875 + N0 -0.755869 0.203756 0.622211 N1 -0.783289 0 0.621658 N2 -0.556738 0 0.830688 + txt003 +STRI + V0 -1.38201 0.384628 2.4875 V1 -1.2393 0.727875 2.4875 V2 -1.26884 0.745225 2.45469 + N0 -0.537012 0.14476 0.831061 N1 -0.480481 0.278679 0.83155 N2 -0.67669 0.39248 0.622937 + txt003 +STRI + V0 -1.26884 0.745225 2.45469 V1 -1.41495 0.393796 2.45469 V2 -1.38201 0.384628 2.4875 + N0 -0.67669 0.39248 0.622937 N1 -0.755869 0.203756 0.622211 N2 -0.537012 0.14476 0.831061 + txt003 +STRI + V0 -1.2393 0.727875 2.4875 V1 -1.01701 1.01701 2.4875 V2 -1.04125 1.04125 2.45469 + N0 -0.480481 0.278679 0.83155 N1 -0.392564 0.392564 0.831737 N2 -0.552993 0.552993 0.623215 + txt003 +STRI + V0 -1.04125 1.04125 2.45469 V1 -1.26884 0.745225 2.45469 V2 -1.2393 0.727875 2.4875 + N0 -0.552993 0.552993 0.623215 N1 -0.67669 0.39248 0.622937 N2 -0.480481 0.278679 0.83155 + txt003 +STRI + V0 -1.01701 1.01701 2.4875 V1 -0.727875 1.2393 2.4875 V2 -0.745225 1.26884 2.45469 + N0 -0.392564 0.392564 0.831737 N1 -0.278679 0.480481 0.83155 N2 -0.39248 0.67669 0.622937 + txt003 +STRI + V0 -0.745225 1.26884 2.45469 V1 -1.04125 1.04125 2.45469 V2 -1.01701 1.01701 2.4875 + N0 -0.39248 0.67669 0.622937 N1 -0.552993 0.552993 0.623215 N2 -0.392564 0.392564 0.831737 + txt003 +STRI + V0 -0.727875 1.2393 2.4875 V1 -0.384628 1.38201 2.4875 V2 -0.393796 1.41495 2.45469 + N0 -0.278679 0.480481 0.83155 N1 -0.14476 0.537012 0.831061 N2 -0.203756 0.755869 0.622211 + txt003 +STRI + V0 -0.393796 1.41495 2.45469 V1 -0.745225 1.26884 2.45469 V2 -0.727875 1.2393 2.4875 + N0 -0.203756 0.755869 0.622211 N1 -0.39248 0.67669 0.622937 N2 -0.278679 0.480481 0.83155 + txt003 +STRI + V0 -0.384628 1.38201 2.4875 V1 0 1.43241 2.4875 V2 0 1.46655 2.45469 + N0 -0.14476 0.537012 0.831061 N1 4.5989e-16 0.556738 0.830688 N2 1.94969e-16 0.783289 0.621658 + txt003 +STRI + V0 0 1.46655 2.45469 V1 -0.393796 1.41495 2.45469 V2 -0.384628 1.38201 2.4875 + N0 1.94969e-16 0.783289 0.621658 N1 -0.203756 0.755869 0.622211 N2 -0.14476 0.537012 0.831061 + txt003 +STRI + V0 -1.46655 0 2.45469 V1 -1.41495 0.393796 2.45469 V2 -1.44722 0.402778 2.4 + N0 -0.783289 0 0.621658 N1 -0.755869 0.203756 0.622211 N2 -0.871509 0.234929 0.430442 + txt003 +STRI + V0 -1.44722 0.402778 2.4 V1 -1.5 0 2.4 V2 -1.46655 0 2.45469 + N0 -0.871509 0.234929 0.430442 N1 -0.902861 0 0.429934 N2 -0.783289 0 0.621658 + txt003 +STRI + V0 -1.41495 0.393796 2.45469 V1 -1.26884 0.745225 2.45469 V2 -1.29778 0.762222 2.4 + N0 -0.755869 0.203756 0.622211 N1 -0.67669 0.39248 0.622937 N2 -0.780517 0.4527 0.43111 + txt003 +STRI + V0 -1.29778 0.762222 2.4 V1 -1.44722 0.402778 2.4 V2 -1.41495 0.393796 2.45469 + N0 -0.780517 0.4527 0.43111 N1 -0.871509 0.234929 0.430442 N2 -0.755869 0.203756 0.622211 + txt003 +STRI + V0 -1.26884 0.745225 2.45469 V1 -1.04125 1.04125 2.45469 V2 -1.065 1.065 2.4 + N0 -0.67669 0.39248 0.622937 N1 -0.552993 0.552993 0.623215 N2 -0.637936 0.637936 0.431366 + txt003 +STRI + V0 -1.065 1.065 2.4 V1 -1.29778 0.762222 2.4 V2 -1.26884 0.745225 2.45469 + N0 -0.637936 0.637936 0.431366 N1 -0.780517 0.4527 0.43111 N2 -0.67669 0.39248 0.622937 + txt003 +STRI + V0 -1.04125 1.04125 2.45469 V1 -0.745225 1.26884 2.45469 V2 -0.762222 1.29778 2.4 + N0 -0.552993 0.552993 0.623215 N1 -0.39248 0.67669 0.622937 N2 -0.4527 0.780517 0.43111 + txt003 +STRI + V0 -0.762222 1.29778 2.4 V1 -1.065 1.065 2.4 V2 -1.04125 1.04125 2.45469 + N0 -0.4527 0.780517 0.43111 N1 -0.637936 0.637936 0.431366 N2 -0.552993 0.552993 0.623215 + txt003 +STRI + V0 -0.745225 1.26884 2.45469 V1 -0.393796 1.41495 2.45469 V2 -0.402778 1.44722 2.4 + N0 -0.39248 0.67669 0.622937 N1 -0.203756 0.755869 0.622211 N2 -0.234929 0.871509 0.430442 + txt003 +STRI + V0 -0.402778 1.44722 2.4 V1 -0.762222 1.29778 2.4 V2 -0.745225 1.26884 2.45469 + N0 -0.234929 0.871509 0.430442 N1 -0.4527 0.780517 0.43111 N2 -0.39248 0.67669 0.622937 + txt003 +STRI + V0 -0.393796 1.41495 2.45469 V1 0 1.46655 2.45469 V2 0 1.5 2.4 + N0 -0.203756 0.755869 0.622211 N1 1.94969e-16 0.783289 0.621658 N2 6.81889e-17 0.902861 0.429934 + txt003 +STRI + V0 0 1.5 2.4 V1 -0.402778 1.44722 2.4 V2 -0.393796 1.41495 2.45469 + N0 6.81889e-17 0.902861 0.429934 N1 -0.234929 0.871509 0.430442 N2 -0.203756 0.755869 0.622211 + txt003 +STRI + V0 0 1.4 2.4 V1 0.375926 1.35074 2.4 V2 0.370922 1.33276 2.45469 + N0 0 -0.902861 -0.429934 N1 -0.234929 -0.871509 -0.430442 N2 -0.257047 -0.953562 -0.156989 + txt003 +STRI + V0 0.370922 1.33276 2.45469 V1 0 1.38137 2.45469 V2 0 1.4 2.4 + N0 -0.257047 -0.953562 -0.156989 N1 0 -0.987636 -0.156768 N2 0 -0.902861 -0.429934 + txt003 +STRI + V0 0.375926 1.35074 2.4 V1 0.711407 1.21126 2.4 V2 0.701938 1.19514 2.45469 + N0 -0.234929 -0.871509 -0.430442 N1 -0.4527 -0.780517 -0.43111 N2 -0.495474 -0.854265 -0.157281 + txt003 +STRI + V0 0.701938 1.19514 2.45469 V1 0.370922 1.33276 2.45469 V2 0.375926 1.35074 2.4 + N0 -0.495474 -0.854265 -0.157281 N1 -0.257047 -0.953562 -0.156989 N2 -0.234929 -0.871509 -0.430442 + txt003 +STRI + V0 0.711407 1.21126 2.4 V1 0.994 0.994 2.4 V2 0.98077 0.98077 2.45469 + N0 -0.4527 -0.780517 -0.43111 N1 -0.637936 -0.637936 -0.431366 N2 -0.698293 -0.698293 -0.157393 + txt003 +STRI + V0 0.98077 0.98077 2.45469 V1 0.701938 1.19514 2.45469 V2 0.711407 1.21126 2.4 + N0 -0.698293 -0.698293 -0.157393 N1 -0.495474 -0.854265 -0.157281 N2 -0.4527 -0.780517 -0.43111 + txt003 +STRI + V0 0.994 0.994 2.4 V1 1.21126 0.711407 2.4 V2 1.19514 0.701938 2.45469 + N0 -0.637936 -0.637936 -0.431366 N1 -0.780517 -0.4527 -0.43111 N2 -0.854265 -0.495474 -0.157281 + txt003 +STRI + V0 1.19514 0.701938 2.45469 V1 0.98077 0.98077 2.45469 V2 0.994 0.994 2.4 + N0 -0.854265 -0.495474 -0.157281 N1 -0.698293 -0.698293 -0.157393 N2 -0.637936 -0.637936 -0.431366 + txt003 +STRI + V0 1.21126 0.711407 2.4 V1 1.35074 0.375926 2.4 V2 1.33276 0.370922 2.45469 + N0 -0.780517 -0.4527 -0.43111 N1 -0.871509 -0.234929 -0.430442 N2 -0.953562 -0.257047 -0.156989 + txt003 +STRI + V0 1.33276 0.370922 2.45469 V1 1.19514 0.701938 2.45469 V2 1.21126 0.711407 2.4 + N0 -0.953562 -0.257047 -0.156989 N1 -0.854265 -0.495474 -0.157281 N2 -0.780517 -0.4527 -0.43111 + txt003 +STRI + V0 1.35074 0.375926 2.4 V1 1.4 0 2.4 V2 1.38137 0 2.45469 + N0 -0.871509 -0.234929 -0.430442 N1 -0.902861 7.30595e-17 -0.429934 N2 -0.987636 -9.89971e-17 -0.156768 + txt003 +STRI + V0 1.38137 0 2.45469 V1 1.33276 0.370922 2.45469 V2 1.35074 0.375926 2.4 + N0 -0.987636 -9.89971e-17 -0.156768 N1 -0.953562 -0.257047 -0.156989 N2 -0.871509 -0.234929 -0.430442 + txt003 +STRI + V0 0 1.38137 2.45469 V1 0.370922 1.33276 2.45469 V2 0.371699 1.33555 2.4875 + N0 0 -0.987636 -0.156768 N1 -0.257047 -0.953562 -0.156989 N2 -0.228972 -0.849414 0.475466 + txt003 +STRI + V0 0.371699 1.33555 2.4875 V1 0 1.38426 2.4875 V2 0 1.38137 2.45469 + N0 -0.228972 -0.849414 0.475466 N1 0 -0.880022 0.474933 N2 0 -0.987636 -0.156768 + txt003 +STRI + V0 0.370922 1.33276 2.45469 V1 0.701938 1.19514 2.45469 V2 0.703409 1.19764 2.4875 + N0 -0.257047 -0.953562 -0.156989 N1 -0.495474 -0.854265 -0.157281 N2 -0.441188 -0.760669 0.476167 + txt003 +STRI + V0 0.703409 1.19764 2.4875 V1 0.371699 1.33555 2.4875 V2 0.370922 1.33276 2.45469 + N0 -0.441188 -0.760669 0.476167 N1 -0.228972 -0.849414 0.475466 N2 -0.257047 -0.953562 -0.156989 + txt003 +STRI + V0 0.701938 1.19514 2.45469 V1 0.98077 0.98077 2.45469 V2 0.982824 0.982824 2.4875 + N0 -0.495474 -0.854265 -0.157281 N1 -0.698293 -0.698293 -0.157393 N2 -0.621695 -0.621695 0.476435 + txt003 +STRI + V0 0.982824 0.982824 2.4875 V1 0.703409 1.19764 2.4875 V2 0.701938 1.19514 2.45469 + N0 -0.621695 -0.621695 0.476435 N1 -0.441188 -0.760669 0.476167 N2 -0.495474 -0.854265 -0.157281 + txt003 +STRI + V0 0.98077 0.98077 2.45469 V1 1.19514 0.701938 2.45469 V2 1.19764 0.703409 2.4875 + N0 -0.698293 -0.698293 -0.157393 N1 -0.854265 -0.495474 -0.157281 N2 -0.760669 -0.441188 0.476167 + txt003 +STRI + V0 1.19764 0.703409 2.4875 V1 0.982824 0.982824 2.4875 V2 0.98077 0.98077 2.45469 + N0 -0.760669 -0.441188 0.476167 N1 -0.621695 -0.621695 0.476435 N2 -0.698293 -0.698293 -0.157393 + txt003 +STRI + V0 1.19514 0.701938 2.45469 V1 1.33276 0.370922 2.45469 V2 1.33555 0.371699 2.4875 + N0 -0.854265 -0.495474 -0.157281 N1 -0.953562 -0.257047 -0.156989 N2 -0.849414 -0.228972 0.475466 + txt003 +STRI + V0 1.33555 0.371699 2.4875 V1 1.19764 0.703409 2.4875 V2 1.19514 0.701938 2.45469 + N0 -0.849414 -0.228972 0.475466 N1 -0.760669 -0.441188 0.476167 N2 -0.854265 -0.495474 -0.157281 + txt003 +STRI + V0 1.33276 0.370922 2.45469 V1 1.38137 0 2.45469 V2 1.38426 0 2.4875 + N0 -0.953562 -0.257047 -0.156989 N1 -0.987636 -9.89971e-17 -0.156768 N2 -0.880022 -6.08179e-16 0.474933 + txt003 +STRI + V0 1.38426 0 2.4875 V1 1.33555 0.371699 2.4875 V2 1.33276 0.370922 2.45469 + N0 -0.880022 -6.08179e-16 0.474933 N1 -0.849414 -0.228972 0.475466 N2 -0.953562 -0.257047 -0.156989 + txt003 +STRI + V0 0 1.38426 2.4875 V1 0.371699 1.33555 2.4875 V2 0.376765 1.35376 2.49844 + N0 0 -0.880022 0.474933 N1 -0.228972 -0.849414 0.475466 N2 5.93089e-16 2.13636e-15 1 + txt003 +STRI + V0 0.376765 1.35376 2.49844 V1 0 1.40312 2.49844 V2 0 1.38426 2.4875 + N0 5.93089e-16 2.13636e-15 1 N1 -0 2.22045e-15 1 N2 0 -0.880022 0.474933 + txt003 +STRI + V0 0.371699 1.33555 2.4875 V1 0.703409 1.19764 2.4875 V2 0.712995 1.21396 2.49844 + N0 -0.228972 -0.849414 0.475466 N1 -0.441188 -0.760669 0.476167 N2 1.16933e-15 1.87966e-15 1 + txt003 +STRI + V0 0.712995 1.21396 2.49844 V1 0.376765 1.35376 2.49844 V2 0.371699 1.33555 2.4875 + N0 1.16933e-15 1.87966e-15 1 N1 5.93089e-16 2.13636e-15 1 N2 -0.228972 -0.849414 0.475466 + txt003 +STRI + V0 0.703409 1.19764 2.4875 V1 0.982824 0.982824 2.4875 V2 0.996219 0.996219 2.49844 + N0 -0.441188 -0.760669 0.476167 N1 -0.621695 -0.621695 0.476435 N2 1.67359e-15 1.4538e-15 1 + txt003 +STRI + V0 0.996219 0.996219 2.49844 V1 0.712995 1.21396 2.49844 V2 0.703409 1.19764 2.4875 + N0 1.67359e-15 1.4538e-15 1 N1 1.16933e-15 1.87966e-15 1 N2 -0.441188 -0.760669 0.476167 + txt003 +STRI + V0 0.982824 0.982824 2.4875 V1 1.19764 0.703409 2.4875 V2 1.21396 0.712995 2.49844 + N0 -0.621695 -0.621695 0.476435 N1 -0.760669 -0.441188 0.476167 N2 2.05298e-15 8.74229e-16 1 + txt003 +STRI + V0 1.21396 0.712995 2.49844 V1 0.996219 0.996219 2.49844 V2 0.982824 0.982824 2.4875 + N0 2.05298e-15 8.74229e-16 1 N1 1.67359e-15 1.4538e-15 1 N2 -0.621695 -0.621695 0.476435 + txt003 +STRI + V0 1.19764 0.703409 2.4875 V1 1.33555 0.371699 2.4875 V2 1.35376 0.376765 2.49844 + N0 -0.760669 -0.441188 0.476167 N1 -0.849414 -0.228972 0.475466 N2 2.25214e-15 1.77072e-16 1 + txt003 +STRI + V0 1.35376 0.376765 2.49844 V1 1.21396 0.712995 2.49844 V2 1.19764 0.703409 2.4875 + N0 2.25214e-15 1.77072e-16 1 N1 2.05298e-15 8.74229e-16 1 N2 -0.760669 -0.441188 0.476167 + txt003 +STRI + V0 1.33555 0.371699 2.4875 V1 1.38426 0 2.4875 V2 1.40312 0 2.49844 + N0 -0.849414 -0.228972 0.475466 N1 -0.880022 -6.08179e-16 0.474933 N2 2.22045e-15 -5.65179e-16 1 + txt003 +STRI + V0 1.40312 0 2.49844 V1 1.35376 0.376765 2.49844 V2 1.33555 0.371699 2.4875 + N0 2.22045e-15 -5.65179e-16 1 N1 2.25214e-15 1.77072e-16 1 N2 -0.849414 -0.228972 0.475466 + txt003 +STRI + V0 0 1.40312 2.49844 V1 0.376765 1.35376 2.49844 V2 0.384628 1.38201 2.4875 + N0 -0 2.22045e-15 1 N1 5.93089e-16 2.13636e-15 1 N2 0.14476 0.537012 0.831061 + txt003 +STRI + V0 0.384628 1.38201 2.4875 V1 0 1.43241 2.4875 V2 0 1.40312 2.49844 + N0 0.14476 0.537012 0.831061 N1 -0 0.556738 0.830688 N2 -0 2.22045e-15 1 + txt003 +STRI + V0 0.376765 1.35376 2.49844 V1 0.712995 1.21396 2.49844 V2 0.727875 1.2393 2.4875 + N0 5.93089e-16 2.13636e-15 1 N1 1.16933e-15 1.87966e-15 1 N2 0.278679 0.480481 0.83155 + txt003 +STRI + V0 0.727875 1.2393 2.4875 V1 0.384628 1.38201 2.4875 V2 0.376765 1.35376 2.49844 + N0 0.278679 0.480481 0.83155 N1 0.14476 0.537012 0.831061 N2 5.93089e-16 2.13636e-15 1 + txt003 +STRI + V0 0.712995 1.21396 2.49844 V1 0.996219 0.996219 2.49844 V2 1.01701 1.01701 2.4875 + N0 1.16933e-15 1.87966e-15 1 N1 1.67359e-15 1.4538e-15 1 N2 0.392564 0.392564 0.831737 + txt003 +STRI + V0 1.01701 1.01701 2.4875 V1 0.727875 1.2393 2.4875 V2 0.712995 1.21396 2.49844 + N0 0.392564 0.392564 0.831737 N1 0.278679 0.480481 0.83155 N2 1.16933e-15 1.87966e-15 1 + txt003 +STRI + V0 0.996219 0.996219 2.49844 V1 1.21396 0.712995 2.49844 V2 1.2393 0.727875 2.4875 + N0 1.67359e-15 1.4538e-15 1 N1 2.05298e-15 8.74229e-16 1 N2 0.480481 0.278679 0.83155 + txt003 +STRI + V0 1.2393 0.727875 2.4875 V1 1.01701 1.01701 2.4875 V2 0.996219 0.996219 2.49844 + N0 0.480481 0.278679 0.83155 N1 0.392564 0.392564 0.831737 N2 1.67359e-15 1.4538e-15 1 + txt003 +STRI + V0 1.21396 0.712995 2.49844 V1 1.35376 0.376765 2.49844 V2 1.38201 0.384628 2.4875 + N0 2.05298e-15 8.74229e-16 1 N1 2.25214e-15 1.77072e-16 1 N2 0.537012 0.14476 0.831061 + txt003 +STRI + V0 1.38201 0.384628 2.4875 V1 1.2393 0.727875 2.4875 V2 1.21396 0.712995 2.49844 + N0 0.537012 0.14476 0.831061 N1 0.480481 0.278679 0.83155 N2 2.05298e-15 8.74229e-16 1 + txt003 +STRI + V0 1.35376 0.376765 2.49844 V1 1.40312 0 2.49844 V2 1.43241 0 2.4875 + N0 2.25214e-15 1.77072e-16 1 N1 2.22045e-15 -5.65179e-16 1 N2 0.556738 -4.5989e-16 0.830688 + txt003 +STRI + V0 1.43241 0 2.4875 V1 1.38201 0.384628 2.4875 V2 1.35376 0.376765 2.49844 + N0 0.556738 -4.5989e-16 0.830688 N1 0.537012 0.14476 0.831061 N2 2.25214e-15 1.77072e-16 1 + txt003 +STRI + V0 0 1.43241 2.4875 V1 0.384628 1.38201 2.4875 V2 0.393796 1.41495 2.45469 + N0 -0 0.556738 0.830688 N1 0.14476 0.537012 0.831061 N2 0.203756 0.755869 0.622211 + txt003 +STRI + V0 0.393796 1.41495 2.45469 V1 0 1.46655 2.45469 V2 0 1.43241 2.4875 + N0 0.203756 0.755869 0.622211 N1 -0 0.783289 0.621658 N2 -0 0.556738 0.830688 + txt003 +STRI + V0 0.384628 1.38201 2.4875 V1 0.727875 1.2393 2.4875 V2 0.745225 1.26884 2.45469 + N0 0.14476 0.537012 0.831061 N1 0.278679 0.480481 0.83155 N2 0.39248 0.67669 0.622937 + txt003 +STRI + V0 0.745225 1.26884 2.45469 V1 0.393796 1.41495 2.45469 V2 0.384628 1.38201 2.4875 + N0 0.39248 0.67669 0.622937 N1 0.203756 0.755869 0.622211 N2 0.14476 0.537012 0.831061 + txt003 +STRI + V0 0.727875 1.2393 2.4875 V1 1.01701 1.01701 2.4875 V2 1.04125 1.04125 2.45469 + N0 0.278679 0.480481 0.83155 N1 0.392564 0.392564 0.831737 N2 0.552993 0.552993 0.623215 + txt003 +STRI + V0 1.04125 1.04125 2.45469 V1 0.745225 1.26884 2.45469 V2 0.727875 1.2393 2.4875 + N0 0.552993 0.552993 0.623215 N1 0.39248 0.67669 0.622937 N2 0.278679 0.480481 0.83155 + txt003 +STRI + V0 1.01701 1.01701 2.4875 V1 1.2393 0.727875 2.4875 V2 1.26884 0.745225 2.45469 + N0 0.392564 0.392564 0.831737 N1 0.480481 0.278679 0.83155 N2 0.67669 0.39248 0.622937 + txt003 +STRI + V0 1.26884 0.745225 2.45469 V1 1.04125 1.04125 2.45469 V2 1.01701 1.01701 2.4875 + N0 0.67669 0.39248 0.622937 N1 0.552993 0.552993 0.623215 N2 0.392564 0.392564 0.831737 + txt003 +STRI + V0 1.2393 0.727875 2.4875 V1 1.38201 0.384628 2.4875 V2 1.41495 0.393796 2.45469 + N0 0.480481 0.278679 0.83155 N1 0.537012 0.14476 0.831061 N2 0.755869 0.203756 0.622211 + txt003 +STRI + V0 1.41495 0.393796 2.45469 V1 1.26884 0.745225 2.45469 V2 1.2393 0.727875 2.4875 + N0 0.755869 0.203756 0.622211 N1 0.67669 0.39248 0.622937 N2 0.480481 0.278679 0.83155 + txt003 +STRI + V0 1.38201 0.384628 2.4875 V1 1.43241 0 2.4875 V2 1.46655 0 2.45469 + N0 0.537012 0.14476 0.831061 N1 0.556738 -4.5989e-16 0.830688 N2 0.783289 -1.94969e-16 0.621658 + txt003 +STRI + V0 1.46655 0 2.45469 V1 1.41495 0.393796 2.45469 V2 1.38201 0.384628 2.4875 + N0 0.783289 -1.94969e-16 0.621658 N1 0.755869 0.203756 0.622211 N2 0.537012 0.14476 0.831061 + txt003 +STRI + V0 0 1.46655 2.45469 V1 0.393796 1.41495 2.45469 V2 0.402778 1.44722 2.4 + N0 -0 0.783289 0.621658 N1 0.203756 0.755869 0.622211 N2 0.234929 0.871509 0.430442 + txt003 +STRI + V0 0.402778 1.44722 2.4 V1 0 1.5 2.4 V2 0 1.46655 2.45469 + N0 0.234929 0.871509 0.430442 N1 -0 0.902861 0.429934 N2 -0 0.783289 0.621658 + txt003 +STRI + V0 0.393796 1.41495 2.45469 V1 0.745225 1.26884 2.45469 V2 0.762222 1.29778 2.4 + N0 0.203756 0.755869 0.622211 N1 0.39248 0.67669 0.622937 N2 0.4527 0.780517 0.43111 + txt003 +STRI + V0 0.762222 1.29778 2.4 V1 0.402778 1.44722 2.4 V2 0.393796 1.41495 2.45469 + N0 0.4527 0.780517 0.43111 N1 0.234929 0.871509 0.430442 N2 0.203756 0.755869 0.622211 + txt003 +STRI + V0 0.745225 1.26884 2.45469 V1 1.04125 1.04125 2.45469 V2 1.065 1.065 2.4 + N0 0.39248 0.67669 0.622937 N1 0.552993 0.552993 0.623215 N2 0.637936 0.637936 0.431366 + txt003 +STRI + V0 1.065 1.065 2.4 V1 0.762222 1.29778 2.4 V2 0.745225 1.26884 2.45469 + N0 0.637936 0.637936 0.431366 N1 0.4527 0.780517 0.43111 N2 0.39248 0.67669 0.622937 + txt003 +STRI + V0 1.04125 1.04125 2.45469 V1 1.26884 0.745225 2.45469 V2 1.29778 0.762222 2.4 + N0 0.552993 0.552993 0.623215 N1 0.67669 0.39248 0.622937 N2 0.780517 0.4527 0.43111 + txt003 +STRI + V0 1.29778 0.762222 2.4 V1 1.065 1.065 2.4 V2 1.04125 1.04125 2.45469 + N0 0.780517 0.4527 0.43111 N1 0.637936 0.637936 0.431366 N2 0.552993 0.552993 0.623215 + txt003 +STRI + V0 1.26884 0.745225 2.45469 V1 1.41495 0.393796 2.45469 V2 1.44722 0.402778 2.4 + N0 0.67669 0.39248 0.622937 N1 0.755869 0.203756 0.622211 N2 0.871509 0.234929 0.430442 + txt003 +STRI + V0 1.44722 0.402778 2.4 V1 1.29778 0.762222 2.4 V2 1.26884 0.745225 2.45469 + N0 0.871509 0.234929 0.430442 N1 0.780517 0.4527 0.43111 N2 0.67669 0.39248 0.622937 + txt003 +STRI + V0 1.41495 0.393796 2.45469 V1 1.46655 0 2.45469 V2 1.5 0 2.4 + N0 0.755869 0.203756 0.622211 N1 0.783289 -1.94969e-16 0.621658 N2 0.902861 -6.81889e-17 0.429934 + txt003 +STRI + V0 1.5 0 2.4 V1 1.44722 0.402778 2.4 V2 1.41495 0.393796 2.45469 + N0 0.902861 -6.81889e-17 0.429934 N1 0.871509 0.234929 0.430442 N2 0.755869 0.203756 0.622211 + txt003 +STRI + V0 1.5 0 2.4 V1 1.44722 -0.402778 2.4 V2 1.56671 -0.436032 2.13785 + N0 0.902861 0 0.429934 N1 0.871509 -0.234929 0.430442 N2 0.875348 -0.235963 0.422003 + txt003 +STRI + V0 1.56671 -0.436032 2.13785 V1 1.62384 0 2.13785 V2 1.5 0 2.4 + N0 0.875348 -0.235963 0.422003 N1 0.906828 0 0.4215 N2 0.902861 0 0.429934 + txt003 +STRI + V0 1.44722 -0.402778 2.4 V1 1.29778 -0.762222 2.4 V2 1.40492 -0.825153 2.13785 + N0 0.871509 -0.234929 0.430442 N1 0.780517 -0.4527 0.43111 N2 0.783966 -0.4547 0.422664 + txt003 +STRI + V0 1.40492 -0.825153 2.13785 V1 1.56671 -0.436032 2.13785 V2 1.44722 -0.402778 2.4 + N0 0.783966 -0.4547 0.422664 N1 0.875348 -0.235963 0.422003 N2 0.871509 -0.234929 0.430442 + txt003 +STRI + V0 1.29778 -0.762222 2.4 V1 1.065 -1.065 2.4 V2 1.15293 -1.15293 2.13785 + N0 0.780517 -0.4527 0.43111 N1 0.637936 -0.637936 0.431366 N2 0.640758 -0.640758 0.422917 + txt003 +STRI + V0 1.15293 -1.15293 2.13785 V1 1.40492 -0.825153 2.13785 V2 1.29778 -0.762222 2.4 + N0 0.640758 -0.640758 0.422917 N1 0.783966 -0.4547 0.422664 N2 0.780517 -0.4527 0.43111 + txt003 +STRI + V0 1.065 -1.065 2.4 V1 0.762222 -1.29778 2.4 V2 0.825153 -1.40492 2.13785 + N0 0.637936 -0.637936 0.431366 N1 0.4527 -0.780517 0.43111 N2 0.4547 -0.783966 0.422664 + txt003 +STRI + V0 0.825153 -1.40492 2.13785 V1 1.15293 -1.15293 2.13785 V2 1.065 -1.065 2.4 + N0 0.4547 -0.783966 0.422664 N1 0.640758 -0.640758 0.422917 N2 0.637936 -0.637936 0.431366 + txt003 +STRI + V0 0.762222 -1.29778 2.4 V1 0.402778 -1.44722 2.4 V2 0.436032 -1.56671 2.13785 + N0 0.4527 -0.780517 0.43111 N1 0.234929 -0.871509 0.430442 N2 0.235963 -0.875348 0.422003 + txt003 +STRI + V0 0.436032 -1.56671 2.13785 V1 0.825153 -1.40492 2.13785 V2 0.762222 -1.29778 2.4 + N0 0.235963 -0.875348 0.422003 N1 0.4547 -0.783966 0.422664 N2 0.4527 -0.780517 0.43111 + txt003 +STRI + V0 0.402778 -1.44722 2.4 V1 0 -1.5 2.4 V2 2.22045e-16 -1.62384 2.13785 + N0 0.234929 -0.871509 0.430442 N1 -2.27296e-16 -0.902861 0.429934 N2 -2.05843e-16 -0.906828 0.4215 + txt003 +STRI + V0 2.22045e-16 -1.62384 2.13785 V1 0.436032 -1.56671 2.13785 V2 0.402778 -1.44722 2.4 + N0 -2.05843e-16 -0.906828 0.4215 N1 0.235963 -0.875348 0.422003 N2 0.234929 -0.871509 0.430442 + txt003 +STRI + V0 1.62384 0 2.13785 V1 1.56671 -0.436032 2.13785 V2 1.67949 -0.467421 1.87778 + N0 0.906828 0 0.4215 N1 0.875348 -0.235963 0.422003 N2 0.886771 -0.239043 0.395595 + txt003 +STRI + V0 1.67949 -0.467421 1.87778 V1 1.74074 0 1.87778 V2 1.62384 0 2.13785 + N0 0.886771 -0.239043 0.395595 N1 0.918633 0 0.395111 N2 0.906828 0 0.4215 + txt003 +STRI + V0 1.56671 -0.436032 2.13785 V1 1.40492 -0.825153 2.13785 V2 1.50606 -0.884554 1.87778 + N0 0.875348 -0.235963 0.422003 N1 0.783966 -0.4547 0.422664 N2 0.794229 -0.460653 0.39623 + txt003 +STRI + V0 1.50606 -0.884554 1.87778 V1 1.67949 -0.467421 1.87778 V2 1.56671 -0.436032 2.13785 + N0 0.794229 -0.460653 0.39623 N1 0.886771 -0.239043 0.395595 N2 0.875348 -0.235963 0.422003 + txt003 +STRI + V0 1.40492 -0.825153 2.13785 V1 1.15293 -1.15293 2.13785 V2 1.23593 -1.23593 1.87778 + N0 0.783966 -0.4547 0.422664 N1 0.640758 -0.640758 0.422917 N2 0.649156 -0.649156 0.396474 + txt003 +STRI + V0 1.23593 -1.23593 1.87778 V1 1.50606 -0.884554 1.87778 V2 1.40492 -0.825153 2.13785 + N0 0.649156 -0.649156 0.396474 N1 0.794229 -0.460653 0.39623 N2 0.783966 -0.4547 0.422664 + txt003 +STRI + V0 1.15293 -1.15293 2.13785 V1 0.825153 -1.40492 2.13785 V2 0.884554 -1.50606 1.87778 + N0 0.640758 -0.640758 0.422917 N1 0.4547 -0.783966 0.422664 N2 0.460653 -0.794229 0.39623 + txt003 +STRI + V0 0.884554 -1.50606 1.87778 V1 1.23593 -1.23593 1.87778 V2 1.15293 -1.15293 2.13785 + N0 0.460653 -0.794229 0.39623 N1 0.649156 -0.649156 0.396474 N2 0.640758 -0.640758 0.422917 + txt003 +STRI + V0 0.825153 -1.40492 2.13785 V1 0.436032 -1.56671 2.13785 V2 0.467421 -1.67949 1.87778 + N0 0.4547 -0.783966 0.422664 N1 0.235963 -0.875348 0.422003 N2 0.239043 -0.886771 0.395595 + txt003 +STRI + V0 0.467421 -1.67949 1.87778 V1 0.884554 -1.50606 1.87778 V2 0.825153 -1.40492 2.13785 + N0 0.239043 -0.886771 0.395595 N1 0.460653 -0.794229 0.39623 N2 0.4547 -0.783966 0.422664 + txt003 +STRI + V0 0.436032 -1.56671 2.13785 V1 2.22045e-16 -1.62384 2.13785 V2 0 -1.74074 1.87778 + N0 0.235963 -0.875348 0.422003 N1 -2.05843e-16 -0.906828 0.4215 N2 -1.79998e-16 -0.918633 0.395111 + txt003 +STRI + V0 0 -1.74074 1.87778 V1 0.467421 -1.67949 1.87778 V2 0.436032 -1.56671 2.13785 + N0 -1.79998e-16 -0.918633 0.395111 N1 0.239043 -0.886771 0.395595 N2 0.235963 -0.875348 0.422003 + txt003 +STRI + V0 1.74074 0 1.87778 V1 1.67949 -0.467421 1.87778 V2 1.77888 -0.495081 1.62188 + N0 0.918633 0 0.395111 N1 0.886771 -0.239043 0.395595 N2 0.90527 -0.244029 0.347757 + txt003 +STRI + V0 1.77888 -0.495081 1.62188 V1 1.84375 0 1.62188 V2 1.74074 0 1.87778 + N0 0.90527 -0.244029 0.347757 N1 0.937749 0 0.347314 N2 0.918633 0 0.395111 + txt003 +STRI + V0 1.67949 -0.467421 1.87778 V1 1.50606 -0.884554 1.87778 V2 1.59519 -0.936898 1.62188 + N0 0.886771 -0.239043 0.395595 N1 0.794229 -0.460653 0.39623 N2 0.810853 -0.470295 0.34834 + txt003 +STRI + V0 1.59519 -0.936898 1.62188 V1 1.77888 -0.495081 1.62188 V2 1.67949 -0.467421 1.87778 + N0 0.810853 -0.470295 0.34834 N1 0.90527 -0.244029 0.347757 N2 0.886771 -0.239043 0.395595 + txt003 +STRI + V0 1.50606 -0.884554 1.87778 V1 1.23593 -1.23593 1.87778 V2 1.30906 -1.30906 1.62188 + N0 0.794229 -0.460653 0.39623 N1 0.649156 -0.649156 0.396474 N2 0.662761 -0.662761 0.348563 + txt003 +STRI + V0 1.30906 -1.30906 1.62188 V1 1.59519 -0.936898 1.62188 V2 1.50606 -0.884554 1.87778 + N0 0.662761 -0.662761 0.348563 N1 0.810853 -0.470295 0.34834 N2 0.794229 -0.460653 0.39623 + txt003 +STRI + V0 1.23593 -1.23593 1.87778 V1 0.884554 -1.50606 1.87778 V2 0.936898 -1.59519 1.62187 + N0 0.649156 -0.649156 0.396474 N1 0.460653 -0.794229 0.39623 N2 0.470295 -0.810853 0.34834 + txt003 +STRI + V0 0.936898 -1.59519 1.62187 V1 1.30906 -1.30906 1.62188 V2 1.23593 -1.23593 1.87778 + N0 0.470295 -0.810853 0.34834 N1 0.662761 -0.662761 0.348563 N2 0.649156 -0.649156 0.396474 + txt003 +STRI + V0 0.884554 -1.50606 1.87778 V1 0.467421 -1.67949 1.87778 V2 0.495081 -1.77888 1.62187 + N0 0.460653 -0.794229 0.39623 N1 0.239043 -0.886771 0.395595 N2 0.244029 -0.90527 0.347757 + txt003 +STRI + V0 0.495081 -1.77888 1.62187 V1 0.936898 -1.59519 1.62187 V2 0.884554 -1.50606 1.87778 + N0 0.244029 -0.90527 0.347757 N1 0.470295 -0.810853 0.34834 N2 0.460653 -0.794229 0.39623 + txt003 +STRI + V0 0.467421 -1.67949 1.87778 V1 0 -1.74074 1.87778 V2 0 -1.84375 1.62187 + N0 0.239043 -0.886771 0.395595 N1 -1.79998e-16 -0.918633 0.395111 N2 -1.49384e-16 -0.937749 0.347314 + txt003 +STRI + V0 0 -1.84375 1.62187 V1 0.495081 -1.77888 1.62187 V2 0.467421 -1.67949 1.87778 + N0 -1.49384e-16 -0.937749 0.347314 N1 0.244029 -0.90527 0.347757 N2 0.239043 -0.886771 0.395595 + txt003 +STRI + V0 1.84375 0 1.62188 V1 1.77888 -0.495081 1.62188 V2 1.85816 -0.517147 1.37222 + N0 0.937749 0 0.347314 N1 0.90527 -0.244029 0.347757 N2 0.929073 -0.250446 0.272213 + txt003 +STRI + V0 1.85816 -0.517147 1.37222 V1 1.92593 0 1.37222 V2 1.84375 0 1.62188 + N0 0.929073 -0.250446 0.272213 N1 0.96234 0 0.271848 N2 0.937749 0 0.347314 + txt003 +STRI + V0 1.77888 -0.495081 1.62188 V1 1.59519 -0.936898 1.62188 V2 1.66628 -0.978656 1.37222 + N0 0.90527 -0.244029 0.347757 N1 0.810853 -0.470295 0.34834 N2 0.832247 -0.482704 0.272693 + txt003 +STRI + V0 1.66628 -0.978656 1.37222 V1 1.85816 -0.517147 1.37222 V2 1.77888 -0.495081 1.62188 + N0 0.832247 -0.482704 0.272693 N1 0.929073 -0.250446 0.272213 N2 0.90527 -0.244029 0.347757 + txt003 +STRI + V0 1.59519 -0.936898 1.62188 V1 1.30906 -1.30906 1.62188 V2 1.36741 -1.36741 1.37222 + N0 0.810853 -0.470295 0.34834 N1 0.662761 -0.662761 0.348563 N2 0.680271 -0.680271 0.272877 + txt003 +STRI + V0 1.36741 -1.36741 1.37222 V1 1.66628 -0.978656 1.37222 V2 1.59519 -0.936898 1.62188 + N0 0.680271 -0.680271 0.272877 N1 0.832247 -0.482704 0.272693 N2 0.810853 -0.470295 0.34834 + txt003 +STRI + V0 1.30906 -1.30906 1.62188 V1 0.936898 -1.59519 1.62187 V2 0.978656 -1.66628 1.37222 + N0 0.662761 -0.662761 0.348563 N1 0.470295 -0.810853 0.34834 N2 0.482704 -0.832247 0.272693 + txt003 +STRI + V0 0.978656 -1.66628 1.37222 V1 1.36741 -1.36741 1.37222 V2 1.30906 -1.30906 1.62188 + N0 0.482704 -0.832247 0.272693 N1 0.680271 -0.680271 0.272877 N2 0.662761 -0.662761 0.348563 + txt003 +STRI + V0 0.936898 -1.59519 1.62187 V1 0.495081 -1.77888 1.62187 V2 0.517147 -1.85816 1.37222 + N0 0.470295 -0.810853 0.34834 N1 0.244029 -0.90527 0.347757 N2 0.250446 -0.929073 0.272213 + txt003 +STRI + V0 0.517147 -1.85816 1.37222 V1 0.978656 -1.66628 1.37222 V2 0.936898 -1.59519 1.62187 + N0 0.250446 -0.929073 0.272213 N1 0.482704 -0.832247 0.272693 N2 0.470295 -0.810853 0.34834 + txt003 +STRI + V0 0.495081 -1.77888 1.62187 V1 0 -1.84375 1.62187 V2 2.22045e-16 -1.92593 1.37222 + N0 0.244029 -0.90527 0.347757 N1 -1.49384e-16 -0.937749 0.347314 N2 -1.11936e-16 -0.96234 0.271848 + txt003 +STRI + V0 2.22045e-16 -1.92593 1.37222 V1 0.517147 -1.85816 1.37222 V2 0.495081 -1.77888 1.62187 + N0 -1.11936e-16 -0.96234 0.271848 N1 0.250446 -0.929073 0.272213 N2 0.244029 -0.90527 0.347757 + txt003 +STRI + V0 1.92593 0 1.37222 V1 1.85816 -0.517147 1.37222 V2 1.91065 -0.531754 1.1309 + N0 0.96234 0 0.271848 N1 0.929073 -0.250446 0.272213 N2 0.953145 -0.256935 0.159686 + txt003 +STRI + V0 1.91065 -0.531754 1.1309 V1 1.98032 0 1.1309 V2 1.92593 0 1.37222 + N0 0.953145 -0.256935 0.159686 N1 0.987204 0 0.15946 N2 0.96234 0 0.271848 + txt003 +STRI + V0 1.85816 -0.517147 1.37222 V1 1.66628 -0.978656 1.37222 V2 1.71335 -1.0063 1.1309 + N0 0.929073 -0.250446 0.272213 N1 0.832247 -0.482704 0.272693 N2 0.853889 -0.495256 0.159982 + txt003 +STRI + V0 1.71335 -1.0063 1.1309 V1 1.91065 -0.531754 1.1309 V2 1.85816 -0.517147 1.37222 + N0 0.853889 -0.495256 0.159982 N1 0.953145 -0.256935 0.159686 N2 0.929073 -0.250446 0.272213 + txt003 +STRI + V0 1.66628 -0.978656 1.37222 V1 1.36741 -1.36741 1.37222 V2 1.40603 -1.40603 1.1309 + N0 0.832247 -0.482704 0.272693 N1 0.680271 -0.680271 0.272877 N2 0.697986 -0.697986 0.160096 + txt003 +STRI + V0 1.40603 -1.40603 1.1309 V1 1.71335 -1.0063 1.1309 V2 1.66628 -0.978656 1.37222 + N0 0.697986 -0.697986 0.160096 N1 0.853889 -0.495256 0.159982 N2 0.832247 -0.482704 0.272693 + txt003 +STRI + V0 1.36741 -1.36741 1.37222 V1 0.978656 -1.66628 1.37222 V2 1.0063 -1.71335 1.1309 + N0 0.680271 -0.680271 0.272877 N1 0.482704 -0.832247 0.272693 N2 0.495256 -0.853889 0.159982 + txt003 +STRI + V0 1.0063 -1.71335 1.1309 V1 1.40603 -1.40603 1.1309 V2 1.36741 -1.36741 1.37222 + N0 0.495256 -0.853889 0.159982 N1 0.697986 -0.697986 0.160096 N2 0.680271 -0.680271 0.272877 + txt003 +STRI + V0 0.978656 -1.66628 1.37222 V1 0.517147 -1.85816 1.37222 V2 0.531754 -1.91065 1.1309 + N0 0.482704 -0.832247 0.272693 N1 0.250446 -0.929073 0.272213 N2 0.256935 -0.953145 0.159686 + txt003 +STRI + V0 0.531754 -1.91065 1.1309 V1 1.0063 -1.71335 1.1309 V2 0.978656 -1.66628 1.37222 + N0 0.256935 -0.953145 0.159686 N1 0.495256 -0.853889 0.159982 N2 0.482704 -0.832247 0.272693 + txt003 +STRI + V0 0.517147 -1.85816 1.37222 V1 2.22045e-16 -1.92593 1.37222 V2 -2.22045e-16 -1.98032 1.1309 + N0 0.250446 -0.929073 0.272213 N1 -1.11936e-16 -0.96234 0.271848 N2 -6.38555e-17 -0.987204 0.15946 + txt003 +STRI + V0 -2.22045e-16 -1.98032 1.1309 V1 0.531754 -1.91065 1.1309 V2 0.517147 -1.85816 1.37222 + N0 -6.38555e-17 -0.987204 0.15946 N1 0.256935 -0.953145 0.159686 N2 0.250446 -0.929073 0.272213 + txt003 +STRI + V0 1.98032 0 1.1309 V1 1.91065 -0.531754 1.1309 V2 1.92963 -0.537037 0.9 + N0 0.987204 0 0.15946 N1 0.953145 -0.256935 0.159686 N2 0.965535 -0.260275 5.17854e-17 + txt003 +STRI + V0 1.92963 -0.537037 0.9 V1 2 0 0.9 V2 1.98032 0 1.1309 + N0 0.965535 -0.260275 5.17854e-17 N1 1 0 0 N2 0.987204 0 0.15946 + txt003 +STRI + V0 1.91065 -0.531754 1.1309 V1 1.71335 -1.0063 1.1309 V2 1.73037 -1.0163 0.9 + N0 0.953145 -0.256935 0.159686 N1 0.853889 -0.495256 0.159982 N2 0.865031 -0.501718 1.36587e-16 + txt003 +STRI + V0 1.73037 -1.0163 0.9 V1 1.92963 -0.537037 0.9 V2 1.91065 -0.531754 1.1309 + N0 0.865031 -0.501718 1.36587e-16 N1 0.965535 -0.260275 5.17854e-17 N2 0.953145 -0.256935 0.159686 + txt003 +STRI + V0 1.71335 -1.0063 1.1309 V1 1.40603 -1.40603 1.1309 V2 1.42 -1.42 0.9 + N0 0.853889 -0.495256 0.159982 N1 0.697986 -0.697986 0.160096 N2 0.707107 -0.707107 1.74455e-16 + txt003 +STRI + V0 1.42 -1.42 0.9 V1 1.73037 -1.0163 0.9 V2 1.71335 -1.0063 1.1309 + N0 0.707107 -0.707107 1.74455e-16 N1 0.865031 -0.501718 1.36587e-16 N2 0.853889 -0.495256 0.159982 + txt003 +STRI + V0 1.40603 -1.40603 1.1309 V1 1.0063 -1.71335 1.1309 V2 1.0163 -1.73037 0.9 + N0 0.697986 -0.697986 0.160096 N1 0.495256 -0.853889 0.159982 N2 0.501718 -0.865031 1.36587e-16 + txt003 +STRI + V0 1.0163 -1.73037 0.9 V1 1.42 -1.42 0.9 V2 1.40603 -1.40603 1.1309 + N0 0.501718 -0.865031 1.36587e-16 N1 0.707107 -0.707107 1.74455e-16 N2 0.697986 -0.697986 0.160096 + txt003 +STRI + V0 1.0063 -1.71335 1.1309 V1 0.531754 -1.91065 1.1309 V2 0.537037 -1.92963 0.9 + N0 0.495256 -0.853889 0.159982 N1 0.256935 -0.953145 0.159686 N2 0.260275 -0.965535 5.17854e-17 + txt003 +STRI + V0 0.537037 -1.92963 0.9 V1 1.0163 -1.73037 0.9 V2 1.0063 -1.71335 1.1309 + N0 0.260275 -0.965535 5.17854e-17 N1 0.501718 -0.865031 1.36587e-16 N2 0.495256 -0.853889 0.159982 + txt003 +STRI + V0 0.531754 -1.91065 1.1309 V1 -2.22045e-16 -1.98032 1.1309 V2 0 -2 0.9 + N0 0.256935 -0.953145 0.159686 N1 -6.38555e-17 -0.987204 0.15946 N2 0 -1 -0 + txt003 +STRI + V0 0 -2 0.9 V1 0.537037 -1.92963 0.9 V2 0.531754 -1.91065 1.1309 + N0 0 -1 -0 N1 0.260275 -0.965535 5.17854e-17 N2 0.256935 -0.953145 0.159686 + txt003 +STRI + V0 0 -1.5 2.4 V1 -0.402778 -1.44722 2.4 V2 -0.436032 -1.56671 2.13785 + N0 0 -0.902861 0.429934 N1 -0.234929 -0.871509 0.430442 N2 -0.235963 -0.875348 0.422003 + txt003 +STRI + V0 -0.436032 -1.56671 2.13785 V1 0 -1.62384 2.13785 V2 0 -1.5 2.4 + N0 -0.235963 -0.875348 0.422003 N1 0 -0.906828 0.4215 N2 0 -0.902861 0.429934 + txt003 +STRI + V0 -0.402778 -1.44722 2.4 V1 -0.762222 -1.29778 2.4 V2 -0.825153 -1.40492 2.13785 + N0 -0.234929 -0.871509 0.430442 N1 -0.4527 -0.780517 0.43111 N2 -0.4547 -0.783966 0.422664 + txt003 +STRI + V0 -0.825153 -1.40492 2.13785 V1 -0.436032 -1.56671 2.13785 V2 -0.402778 -1.44722 2.4 + N0 -0.4547 -0.783966 0.422664 N1 -0.235963 -0.875348 0.422003 N2 -0.234929 -0.871509 0.430442 + txt003 +STRI + V0 -0.762222 -1.29778 2.4 V1 -1.065 -1.065 2.4 V2 -1.15293 -1.15293 2.13785 + N0 -0.4527 -0.780517 0.43111 N1 -0.637936 -0.637936 0.431366 N2 -0.640758 -0.640758 0.422917 + txt003 +STRI + V0 -1.15293 -1.15293 2.13785 V1 -0.825153 -1.40492 2.13785 V2 -0.762222 -1.29778 2.4 + N0 -0.640758 -0.640758 0.422917 N1 -0.4547 -0.783966 0.422664 N2 -0.4527 -0.780517 0.43111 + txt003 +STRI + V0 -1.065 -1.065 2.4 V1 -1.29778 -0.762222 2.4 V2 -1.40492 -0.825153 2.13785 + N0 -0.637936 -0.637936 0.431366 N1 -0.780517 -0.4527 0.43111 N2 -0.783966 -0.4547 0.422664 + txt003 +STRI + V0 -1.40492 -0.825153 2.13785 V1 -1.15293 -1.15293 2.13785 V2 -1.065 -1.065 2.4 + N0 -0.783966 -0.4547 0.422664 N1 -0.640758 -0.640758 0.422917 N2 -0.637936 -0.637936 0.431366 + txt003 +STRI + V0 -1.29778 -0.762222 2.4 V1 -1.44722 -0.402778 2.4 V2 -1.56671 -0.436032 2.13785 + N0 -0.780517 -0.4527 0.43111 N1 -0.871509 -0.234929 0.430442 N2 -0.875348 -0.235963 0.422003 + txt003 +STRI + V0 -1.56671 -0.436032 2.13785 V1 -1.40492 -0.825153 2.13785 V2 -1.29778 -0.762222 2.4 + N0 -0.875348 -0.235963 0.422003 N1 -0.783966 -0.4547 0.422664 N2 -0.780517 -0.4527 0.43111 + txt003 +STRI + V0 -1.44722 -0.402778 2.4 V1 -1.5 0 2.4 V2 -1.62384 -2.22045e-16 2.13785 + N0 -0.871509 -0.234929 0.430442 N1 -0.902861 2.27296e-16 0.429934 N2 -0.906828 2.05843e-16 0.4215 + txt003 +STRI + V0 -1.62384 -2.22045e-16 2.13785 V1 -1.56671 -0.436032 2.13785 V2 -1.44722 -0.402778 2.4 + N0 -0.906828 2.05843e-16 0.4215 N1 -0.875348 -0.235963 0.422003 N2 -0.871509 -0.234929 0.430442 + txt003 +STRI + V0 0 -1.62384 2.13785 V1 -0.436032 -1.56671 2.13785 V2 -0.467421 -1.67949 1.87778 + N0 0 -0.906828 0.4215 N1 -0.235963 -0.875348 0.422003 N2 -0.239043 -0.886771 0.395595 + txt003 +STRI + V0 -0.467421 -1.67949 1.87778 V1 0 -1.74074 1.87778 V2 0 -1.62384 2.13785 + N0 -0.239043 -0.886771 0.395595 N1 0 -0.918633 0.395111 N2 0 -0.906828 0.4215 + txt003 +STRI + V0 -0.436032 -1.56671 2.13785 V1 -0.825153 -1.40492 2.13785 V2 -0.884554 -1.50606 1.87778 + N0 -0.235963 -0.875348 0.422003 N1 -0.4547 -0.783966 0.422664 N2 -0.460653 -0.794229 0.39623 + txt003 +STRI + V0 -0.884554 -1.50606 1.87778 V1 -0.467421 -1.67949 1.87778 V2 -0.436032 -1.56671 2.13785 + N0 -0.460653 -0.794229 0.39623 N1 -0.239043 -0.886771 0.395595 N2 -0.235963 -0.875348 0.422003 + txt003 +STRI + V0 -0.825153 -1.40492 2.13785 V1 -1.15293 -1.15293 2.13785 V2 -1.23593 -1.23593 1.87778 + N0 -0.4547 -0.783966 0.422664 N1 -0.640758 -0.640758 0.422917 N2 -0.649156 -0.649156 0.396474 + txt003 +STRI + V0 -1.23593 -1.23593 1.87778 V1 -0.884554 -1.50606 1.87778 V2 -0.825153 -1.40492 2.13785 + N0 -0.649156 -0.649156 0.396474 N1 -0.460653 -0.794229 0.39623 N2 -0.4547 -0.783966 0.422664 + txt003 +STRI + V0 -1.15293 -1.15293 2.13785 V1 -1.40492 -0.825153 2.13785 V2 -1.50606 -0.884554 1.87778 + N0 -0.640758 -0.640758 0.422917 N1 -0.783966 -0.4547 0.422664 N2 -0.794229 -0.460653 0.39623 + txt003 +STRI + V0 -1.50606 -0.884554 1.87778 V1 -1.23593 -1.23593 1.87778 V2 -1.15293 -1.15293 2.13785 + N0 -0.794229 -0.460653 0.39623 N1 -0.649156 -0.649156 0.396474 N2 -0.640758 -0.640758 0.422917 + txt003 +STRI + V0 -1.40492 -0.825153 2.13785 V1 -1.56671 -0.436032 2.13785 V2 -1.67949 -0.467421 1.87778 + N0 -0.783966 -0.4547 0.422664 N1 -0.875348 -0.235963 0.422003 N2 -0.886771 -0.239043 0.395595 + txt003 +STRI + V0 -1.67949 -0.467421 1.87778 V1 -1.50606 -0.884554 1.87778 V2 -1.40492 -0.825153 2.13785 + N0 -0.886771 -0.239043 0.395595 N1 -0.794229 -0.460653 0.39623 N2 -0.783966 -0.4547 0.422664 + txt003 +STRI + V0 -1.56671 -0.436032 2.13785 V1 -1.62384 -2.22045e-16 2.13785 V2 -1.74074 0 1.87778 + N0 -0.875348 -0.235963 0.422003 N1 -0.906828 2.05843e-16 0.4215 N2 -0.918633 1.79998e-16 0.395111 + txt003 +STRI + V0 -1.74074 0 1.87778 V1 -1.67949 -0.467421 1.87778 V2 -1.56671 -0.436032 2.13785 + N0 -0.918633 1.79998e-16 0.395111 N1 -0.886771 -0.239043 0.395595 N2 -0.875348 -0.235963 0.422003 + txt003 +STRI + V0 0 -1.74074 1.87778 V1 -0.467421 -1.67949 1.87778 V2 -0.495081 -1.77888 1.62188 + N0 0 -0.918633 0.395111 N1 -0.239043 -0.886771 0.395595 N2 -0.244029 -0.90527 0.347757 + txt003 +STRI + V0 -0.495081 -1.77888 1.62188 V1 0 -1.84375 1.62188 V2 0 -1.74074 1.87778 + N0 -0.244029 -0.90527 0.347757 N1 0 -0.937749 0.347314 N2 0 -0.918633 0.395111 + txt003 +STRI + V0 -0.467421 -1.67949 1.87778 V1 -0.884554 -1.50606 1.87778 V2 -0.936898 -1.59519 1.62188 + N0 -0.239043 -0.886771 0.395595 N1 -0.460653 -0.794229 0.39623 N2 -0.470295 -0.810853 0.34834 + txt003 +STRI + V0 -0.936898 -1.59519 1.62188 V1 -0.495081 -1.77888 1.62188 V2 -0.467421 -1.67949 1.87778 + N0 -0.470295 -0.810853 0.34834 N1 -0.244029 -0.90527 0.347757 N2 -0.239043 -0.886771 0.395595 + txt003 +STRI + V0 -0.884554 -1.50606 1.87778 V1 -1.23593 -1.23593 1.87778 V2 -1.30906 -1.30906 1.62188 + N0 -0.460653 -0.794229 0.39623 N1 -0.649156 -0.649156 0.396474 N2 -0.662761 -0.662761 0.348563 + txt003 +STRI + V0 -1.30906 -1.30906 1.62188 V1 -0.936898 -1.59519 1.62188 V2 -0.884554 -1.50606 1.87778 + N0 -0.662761 -0.662761 0.348563 N1 -0.470295 -0.810853 0.34834 N2 -0.460653 -0.794229 0.39623 + txt003 +STRI + V0 -1.23593 -1.23593 1.87778 V1 -1.50606 -0.884554 1.87778 V2 -1.59519 -0.936898 1.62187 + N0 -0.649156 -0.649156 0.396474 N1 -0.794229 -0.460653 0.39623 N2 -0.810853 -0.470295 0.34834 + txt003 +STRI + V0 -1.59519 -0.936898 1.62187 V1 -1.30906 -1.30906 1.62188 V2 -1.23593 -1.23593 1.87778 + N0 -0.810853 -0.470295 0.34834 N1 -0.662761 -0.662761 0.348563 N2 -0.649156 -0.649156 0.396474 + txt003 +STRI + V0 -1.50606 -0.884554 1.87778 V1 -1.67949 -0.467421 1.87778 V2 -1.77888 -0.495081 1.62187 + N0 -0.794229 -0.460653 0.39623 N1 -0.886771 -0.239043 0.395595 N2 -0.90527 -0.244029 0.347757 + txt003 +STRI + V0 -1.77888 -0.495081 1.62187 V1 -1.59519 -0.936898 1.62187 V2 -1.50606 -0.884554 1.87778 + N0 -0.90527 -0.244029 0.347757 N1 -0.810853 -0.470295 0.34834 N2 -0.794229 -0.460653 0.39623 + txt003 +STRI + V0 -1.67949 -0.467421 1.87778 V1 -1.74074 0 1.87778 V2 -1.84375 0 1.62187 + N0 -0.886771 -0.239043 0.395595 N1 -0.918633 1.79998e-16 0.395111 N2 -0.937749 1.49384e-16 0.347314 + txt003 +STRI + V0 -1.84375 0 1.62187 V1 -1.77888 -0.495081 1.62187 V2 -1.67949 -0.467421 1.87778 + N0 -0.937749 1.49384e-16 0.347314 N1 -0.90527 -0.244029 0.347757 N2 -0.886771 -0.239043 0.395595 + txt003 +STRI + V0 0 -1.84375 1.62188 V1 -0.495081 -1.77888 1.62188 V2 -0.517147 -1.85816 1.37222 + N0 0 -0.937749 0.347314 N1 -0.244029 -0.90527 0.347757 N2 -0.250446 -0.929073 0.272213 + txt003 +STRI + V0 -0.517147 -1.85816 1.37222 V1 0 -1.92593 1.37222 V2 0 -1.84375 1.62188 + N0 -0.250446 -0.929073 0.272213 N1 0 -0.96234 0.271848 N2 0 -0.937749 0.347314 + txt003 +STRI + V0 -0.495081 -1.77888 1.62188 V1 -0.936898 -1.59519 1.62188 V2 -0.978656 -1.66628 1.37222 + N0 -0.244029 -0.90527 0.347757 N1 -0.470295 -0.810853 0.34834 N2 -0.482704 -0.832247 0.272693 + txt003 +STRI + V0 -0.978656 -1.66628 1.37222 V1 -0.517147 -1.85816 1.37222 V2 -0.495081 -1.77888 1.62188 + N0 -0.482704 -0.832247 0.272693 N1 -0.250446 -0.929073 0.272213 N2 -0.244029 -0.90527 0.347757 + txt003 +STRI + V0 -0.936898 -1.59519 1.62188 V1 -1.30906 -1.30906 1.62188 V2 -1.36741 -1.36741 1.37222 + N0 -0.470295 -0.810853 0.34834 N1 -0.662761 -0.662761 0.348563 N2 -0.680271 -0.680271 0.272877 + txt003 +STRI + V0 -1.36741 -1.36741 1.37222 V1 -0.978656 -1.66628 1.37222 V2 -0.936898 -1.59519 1.62188 + N0 -0.680271 -0.680271 0.272877 N1 -0.482704 -0.832247 0.272693 N2 -0.470295 -0.810853 0.34834 + txt003 +STRI + V0 -1.30906 -1.30906 1.62188 V1 -1.59519 -0.936898 1.62187 V2 -1.66628 -0.978656 1.37222 + N0 -0.662761 -0.662761 0.348563 N1 -0.810853 -0.470295 0.34834 N2 -0.832247 -0.482704 0.272693 + txt003 +STRI + V0 -1.66628 -0.978656 1.37222 V1 -1.36741 -1.36741 1.37222 V2 -1.30906 -1.30906 1.62188 + N0 -0.832247 -0.482704 0.272693 N1 -0.680271 -0.680271 0.272877 N2 -0.662761 -0.662761 0.348563 + txt003 +STRI + V0 -1.59519 -0.936898 1.62187 V1 -1.77888 -0.495081 1.62187 V2 -1.85816 -0.517147 1.37222 + N0 -0.810853 -0.470295 0.34834 N1 -0.90527 -0.244029 0.347757 N2 -0.929073 -0.250446 0.272213 + txt003 +STRI + V0 -1.85816 -0.517147 1.37222 V1 -1.66628 -0.978656 1.37222 V2 -1.59519 -0.936898 1.62187 + N0 -0.929073 -0.250446 0.272213 N1 -0.832247 -0.482704 0.272693 N2 -0.810853 -0.470295 0.34834 + txt003 +STRI + V0 -1.77888 -0.495081 1.62187 V1 -1.84375 0 1.62187 V2 -1.92593 -2.22045e-16 1.37222 + N0 -0.90527 -0.244029 0.347757 N1 -0.937749 1.49384e-16 0.347314 N2 -0.96234 1.11936e-16 0.271848 + txt003 +STRI + V0 -1.92593 -2.22045e-16 1.37222 V1 -1.85816 -0.517147 1.37222 V2 -1.77888 -0.495081 1.62187 + N0 -0.96234 1.11936e-16 0.271848 N1 -0.929073 -0.250446 0.272213 N2 -0.90527 -0.244029 0.347757 + txt003 +STRI + V0 0 -1.92593 1.37222 V1 -0.517147 -1.85816 1.37222 V2 -0.531754 -1.91065 1.1309 + N0 0 -0.96234 0.271848 N1 -0.250446 -0.929073 0.272213 N2 -0.256935 -0.953145 0.159686 + txt003 +STRI + V0 -0.531754 -1.91065 1.1309 V1 0 -1.98032 1.1309 V2 0 -1.92593 1.37222 + N0 -0.256935 -0.953145 0.159686 N1 0 -0.987204 0.15946 N2 0 -0.96234 0.271848 + txt003 +STRI + V0 -0.517147 -1.85816 1.37222 V1 -0.978656 -1.66628 1.37222 V2 -1.0063 -1.71335 1.1309 + N0 -0.250446 -0.929073 0.272213 N1 -0.482704 -0.832247 0.272693 N2 -0.495256 -0.853889 0.159982 + txt003 +STRI + V0 -1.0063 -1.71335 1.1309 V1 -0.531754 -1.91065 1.1309 V2 -0.517147 -1.85816 1.37222 + N0 -0.495256 -0.853889 0.159982 N1 -0.256935 -0.953145 0.159686 N2 -0.250446 -0.929073 0.272213 + txt003 +STRI + V0 -0.978656 -1.66628 1.37222 V1 -1.36741 -1.36741 1.37222 V2 -1.40603 -1.40603 1.1309 + N0 -0.482704 -0.832247 0.272693 N1 -0.680271 -0.680271 0.272877 N2 -0.697986 -0.697986 0.160096 + txt003 +STRI + V0 -1.40603 -1.40603 1.1309 V1 -1.0063 -1.71335 1.1309 V2 -0.978656 -1.66628 1.37222 + N0 -0.697986 -0.697986 0.160096 N1 -0.495256 -0.853889 0.159982 N2 -0.482704 -0.832247 0.272693 + txt003 +STRI + V0 -1.36741 -1.36741 1.37222 V1 -1.66628 -0.978656 1.37222 V2 -1.71335 -1.0063 1.1309 + N0 -0.680271 -0.680271 0.272877 N1 -0.832247 -0.482704 0.272693 N2 -0.853889 -0.495256 0.159982 + txt003 +STRI + V0 -1.71335 -1.0063 1.1309 V1 -1.40603 -1.40603 1.1309 V2 -1.36741 -1.36741 1.37222 + N0 -0.853889 -0.495256 0.159982 N1 -0.697986 -0.697986 0.160096 N2 -0.680271 -0.680271 0.272877 + txt003 +STRI + V0 -1.66628 -0.978656 1.37222 V1 -1.85816 -0.517147 1.37222 V2 -1.91065 -0.531754 1.1309 + N0 -0.832247 -0.482704 0.272693 N1 -0.929073 -0.250446 0.272213 N2 -0.953145 -0.256935 0.159686 + txt003 +STRI + V0 -1.91065 -0.531754 1.1309 V1 -1.71335 -1.0063 1.1309 V2 -1.66628 -0.978656 1.37222 + N0 -0.953145 -0.256935 0.159686 N1 -0.853889 -0.495256 0.159982 N2 -0.832247 -0.482704 0.272693 + txt003 +STRI + V0 -1.85816 -0.517147 1.37222 V1 -1.92593 -2.22045e-16 1.37222 V2 -1.98032 2.22045e-16 1.1309 + N0 -0.929073 -0.250446 0.272213 N1 -0.96234 1.11936e-16 0.271848 N2 -0.987204 6.38555e-17 0.15946 + txt003 +STRI + V0 -1.98032 2.22045e-16 1.1309 V1 -1.91065 -0.531754 1.1309 V2 -1.85816 -0.517147 1.37222 + N0 -0.987204 6.38555e-17 0.15946 N1 -0.953145 -0.256935 0.159686 N2 -0.929073 -0.250446 0.272213 + txt003 +STRI + V0 0 -1.98032 1.1309 V1 -0.531754 -1.91065 1.1309 V2 -0.537037 -1.92963 0.9 + N0 0 -0.987204 0.15946 N1 -0.256935 -0.953145 0.159686 N2 -0.260275 -0.965535 5.17854e-17 + txt003 +STRI + V0 -0.537037 -1.92963 0.9 V1 0 -2 0.9 V2 0 -1.98032 1.1309 + N0 -0.260275 -0.965535 5.17854e-17 N1 -0 -1 -0 N2 0 -0.987204 0.15946 + txt003 +STRI + V0 -0.531754 -1.91065 1.1309 V1 -1.0063 -1.71335 1.1309 V2 -1.0163 -1.73037 0.9 + N0 -0.256935 -0.953145 0.159686 N1 -0.495256 -0.853889 0.159982 N2 -0.501718 -0.865031 1.36587e-16 + txt003 +STRI + V0 -1.0163 -1.73037 0.9 V1 -0.537037 -1.92963 0.9 V2 -0.531754 -1.91065 1.1309 + N0 -0.501718 -0.865031 1.36587e-16 N1 -0.260275 -0.965535 5.17854e-17 N2 -0.256935 -0.953145 0.159686 + txt003 +STRI + V0 -1.0063 -1.71335 1.1309 V1 -1.40603 -1.40603 1.1309 V2 -1.42 -1.42 0.9 + N0 -0.495256 -0.853889 0.159982 N1 -0.697986 -0.697986 0.160096 N2 -0.707107 -0.707107 1.74455e-16 + txt003 +STRI + V0 -1.42 -1.42 0.9 V1 -1.0163 -1.73037 0.9 V2 -1.0063 -1.71335 1.1309 + N0 -0.707107 -0.707107 1.74455e-16 N1 -0.501718 -0.865031 1.36587e-16 N2 -0.495256 -0.853889 0.159982 + txt003 +STRI + V0 -1.40603 -1.40603 1.1309 V1 -1.71335 -1.0063 1.1309 V2 -1.73037 -1.0163 0.9 + N0 -0.697986 -0.697986 0.160096 N1 -0.853889 -0.495256 0.159982 N2 -0.865031 -0.501718 1.36587e-16 + txt003 +STRI + V0 -1.73037 -1.0163 0.9 V1 -1.42 -1.42 0.9 V2 -1.40603 -1.40603 1.1309 + N0 -0.865031 -0.501718 1.36587e-16 N1 -0.707107 -0.707107 1.74455e-16 N2 -0.697986 -0.697986 0.160096 + txt003 +STRI + V0 -1.71335 -1.0063 1.1309 V1 -1.91065 -0.531754 1.1309 V2 -1.92963 -0.537037 0.9 + N0 -0.853889 -0.495256 0.159982 N1 -0.953145 -0.256935 0.159686 N2 -0.965535 -0.260275 5.17854e-17 + txt003 +STRI + V0 -1.92963 -0.537037 0.9 V1 -1.73037 -1.0163 0.9 V2 -1.71335 -1.0063 1.1309 + N0 -0.965535 -0.260275 5.17854e-17 N1 -0.865031 -0.501718 1.36587e-16 N2 -0.853889 -0.495256 0.159982 + txt003 +STRI + V0 -1.91065 -0.531754 1.1309 V1 -1.98032 2.22045e-16 1.1309 V2 -2 0 0.9 + N0 -0.953145 -0.256935 0.159686 N1 -0.987204 6.38555e-17 0.15946 N2 -1 0 0 + txt003 +STRI + V0 -2 0 0.9 V1 -1.92963 -0.537037 0.9 V2 -1.91065 -0.531754 1.1309 + N0 -1 0 0 N1 -0.965535 -0.260275 5.17854e-17 N2 -0.953145 -0.256935 0.159686 + txt003 +STRI + V0 -1.5 0 2.4 V1 -1.44722 0.402778 2.4 V2 -1.56671 0.436032 2.13785 + N0 -0.902861 0 0.429934 N1 -0.871509 0.234929 0.430442 N2 -0.875348 0.235963 0.422003 + txt003 +STRI + V0 -1.56671 0.436032 2.13785 V1 -1.62384 0 2.13785 V2 -1.5 0 2.4 + N0 -0.875348 0.235963 0.422003 N1 -0.906828 0 0.4215 N2 -0.902861 0 0.429934 + txt003 +STRI + V0 -1.44722 0.402778 2.4 V1 -1.29778 0.762222 2.4 V2 -1.40492 0.825153 2.13785 + N0 -0.871509 0.234929 0.430442 N1 -0.780517 0.4527 0.43111 N2 -0.783966 0.4547 0.422664 + txt003 +STRI + V0 -1.40492 0.825153 2.13785 V1 -1.56671 0.436032 2.13785 V2 -1.44722 0.402778 2.4 + N0 -0.783966 0.4547 0.422664 N1 -0.875348 0.235963 0.422003 N2 -0.871509 0.234929 0.430442 + txt003 +STRI + V0 -1.29778 0.762222 2.4 V1 -1.065 1.065 2.4 V2 -1.15293 1.15293 2.13785 + N0 -0.780517 0.4527 0.43111 N1 -0.637936 0.637936 0.431366 N2 -0.640758 0.640758 0.422917 + txt003 +STRI + V0 -1.15293 1.15293 2.13785 V1 -1.40492 0.825153 2.13785 V2 -1.29778 0.762222 2.4 + N0 -0.640758 0.640758 0.422917 N1 -0.783966 0.4547 0.422664 N2 -0.780517 0.4527 0.43111 + txt003 +STRI + V0 -1.065 1.065 2.4 V1 -0.762222 1.29778 2.4 V2 -0.825153 1.40492 2.13785 + N0 -0.637936 0.637936 0.431366 N1 -0.4527 0.780517 0.43111 N2 -0.4547 0.783966 0.422664 + txt003 +STRI + V0 -0.825153 1.40492 2.13785 V1 -1.15293 1.15293 2.13785 V2 -1.065 1.065 2.4 + N0 -0.4547 0.783966 0.422664 N1 -0.640758 0.640758 0.422917 N2 -0.637936 0.637936 0.431366 + txt003 +STRI + V0 -0.762222 1.29778 2.4 V1 -0.402778 1.44722 2.4 V2 -0.436032 1.56671 2.13785 + N0 -0.4527 0.780517 0.43111 N1 -0.234929 0.871509 0.430442 N2 -0.235963 0.875348 0.422003 + txt003 +STRI + V0 -0.436032 1.56671 2.13785 V1 -0.825153 1.40492 2.13785 V2 -0.762222 1.29778 2.4 + N0 -0.235963 0.875348 0.422003 N1 -0.4547 0.783966 0.422664 N2 -0.4527 0.780517 0.43111 + txt003 +STRI + V0 -0.402778 1.44722 2.4 V1 0 1.5 2.4 V2 -2.22045e-16 1.62384 2.13785 + N0 -0.234929 0.871509 0.430442 N1 2.27296e-16 0.902861 0.429934 N2 2.05843e-16 0.906828 0.4215 + txt003 +STRI + V0 -2.22045e-16 1.62384 2.13785 V1 -0.436032 1.56671 2.13785 V2 -0.402778 1.44722 2.4 + N0 2.05843e-16 0.906828 0.4215 N1 -0.235963 0.875348 0.422003 N2 -0.234929 0.871509 0.430442 + txt003 +STRI + V0 -1.62384 0 2.13785 V1 -1.56671 0.436032 2.13785 V2 -1.67949 0.467421 1.87778 + N0 -0.906828 0 0.4215 N1 -0.875348 0.235963 0.422003 N2 -0.886771 0.239043 0.395595 + txt003 +STRI + V0 -1.67949 0.467421 1.87778 V1 -1.74074 0 1.87778 V2 -1.62384 0 2.13785 + N0 -0.886771 0.239043 0.395595 N1 -0.918633 0 0.395111 N2 -0.906828 0 0.4215 + txt003 +STRI + V0 -1.56671 0.436032 2.13785 V1 -1.40492 0.825153 2.13785 V2 -1.50606 0.884554 1.87778 + N0 -0.875348 0.235963 0.422003 N1 -0.783966 0.4547 0.422664 N2 -0.794229 0.460653 0.39623 + txt003 +STRI + V0 -1.50606 0.884554 1.87778 V1 -1.67949 0.467421 1.87778 V2 -1.56671 0.436032 2.13785 + N0 -0.794229 0.460653 0.39623 N1 -0.886771 0.239043 0.395595 N2 -0.875348 0.235963 0.422003 + txt003 +STRI + V0 -1.40492 0.825153 2.13785 V1 -1.15293 1.15293 2.13785 V2 -1.23593 1.23593 1.87778 + N0 -0.783966 0.4547 0.422664 N1 -0.640758 0.640758 0.422917 N2 -0.649156 0.649156 0.396474 + txt003 +STRI + V0 -1.23593 1.23593 1.87778 V1 -1.50606 0.884554 1.87778 V2 -1.40492 0.825153 2.13785 + N0 -0.649156 0.649156 0.396474 N1 -0.794229 0.460653 0.39623 N2 -0.783966 0.4547 0.422664 + txt003 +STRI + V0 -1.15293 1.15293 2.13785 V1 -0.825153 1.40492 2.13785 V2 -0.884554 1.50606 1.87778 + N0 -0.640758 0.640758 0.422917 N1 -0.4547 0.783966 0.422664 N2 -0.460653 0.794229 0.39623 + txt003 +STRI + V0 -0.884554 1.50606 1.87778 V1 -1.23593 1.23593 1.87778 V2 -1.15293 1.15293 2.13785 + N0 -0.460653 0.794229 0.39623 N1 -0.649156 0.649156 0.396474 N2 -0.640758 0.640758 0.422917 + txt003 +STRI + V0 -0.825153 1.40492 2.13785 V1 -0.436032 1.56671 2.13785 V2 -0.467421 1.67949 1.87778 + N0 -0.4547 0.783966 0.422664 N1 -0.235963 0.875348 0.422003 N2 -0.239043 0.886771 0.395595 + txt003 +STRI + V0 -0.467421 1.67949 1.87778 V1 -0.884554 1.50606 1.87778 V2 -0.825153 1.40492 2.13785 + N0 -0.239043 0.886771 0.395595 N1 -0.460653 0.794229 0.39623 N2 -0.4547 0.783966 0.422664 + txt003 +STRI + V0 -0.436032 1.56671 2.13785 V1 -2.22045e-16 1.62384 2.13785 V2 0 1.74074 1.87778 + N0 -0.235963 0.875348 0.422003 N1 2.05843e-16 0.906828 0.4215 N2 1.79998e-16 0.918633 0.395111 + txt003 +STRI + V0 0 1.74074 1.87778 V1 -0.467421 1.67949 1.87778 V2 -0.436032 1.56671 2.13785 + N0 1.79998e-16 0.918633 0.395111 N1 -0.239043 0.886771 0.395595 N2 -0.235963 0.875348 0.422003 + txt003 +STRI + V0 -1.74074 0 1.87778 V1 -1.67949 0.467421 1.87778 V2 -1.77888 0.495081 1.62188 + N0 -0.918633 0 0.395111 N1 -0.886771 0.239043 0.395595 N2 -0.90527 0.244029 0.347757 + txt003 +STRI + V0 -1.77888 0.495081 1.62188 V1 -1.84375 0 1.62188 V2 -1.74074 0 1.87778 + N0 -0.90527 0.244029 0.347757 N1 -0.937749 0 0.347314 N2 -0.918633 0 0.395111 + txt003 +STRI + V0 -1.67949 0.467421 1.87778 V1 -1.50606 0.884554 1.87778 V2 -1.59519 0.936898 1.62188 + N0 -0.886771 0.239043 0.395595 N1 -0.794229 0.460653 0.39623 N2 -0.810853 0.470295 0.34834 + txt003 +STRI + V0 -1.59519 0.936898 1.62188 V1 -1.77888 0.495081 1.62188 V2 -1.67949 0.467421 1.87778 + N0 -0.810853 0.470295 0.34834 N1 -0.90527 0.244029 0.347757 N2 -0.886771 0.239043 0.395595 + txt003 +STRI + V0 -1.50606 0.884554 1.87778 V1 -1.23593 1.23593 1.87778 V2 -1.30906 1.30906 1.62188 + N0 -0.794229 0.460653 0.39623 N1 -0.649156 0.649156 0.396474 N2 -0.662761 0.662761 0.348563 + txt003 +STRI + V0 -1.30906 1.30906 1.62188 V1 -1.59519 0.936898 1.62188 V2 -1.50606 0.884554 1.87778 + N0 -0.662761 0.662761 0.348563 N1 -0.810853 0.470295 0.34834 N2 -0.794229 0.460653 0.39623 + txt003 +STRI + V0 -1.23593 1.23593 1.87778 V1 -0.884554 1.50606 1.87778 V2 -0.936898 1.59519 1.62187 + N0 -0.649156 0.649156 0.396474 N1 -0.460653 0.794229 0.39623 N2 -0.470295 0.810853 0.34834 + txt003 +STRI + V0 -0.936898 1.59519 1.62187 V1 -1.30906 1.30906 1.62188 V2 -1.23593 1.23593 1.87778 + N0 -0.470295 0.810853 0.34834 N1 -0.662761 0.662761 0.348563 N2 -0.649156 0.649156 0.396474 + txt003 +STRI + V0 -0.884554 1.50606 1.87778 V1 -0.467421 1.67949 1.87778 V2 -0.495081 1.77888 1.62187 + N0 -0.460653 0.794229 0.39623 N1 -0.239043 0.886771 0.395595 N2 -0.244029 0.90527 0.347757 + txt003 +STRI + V0 -0.495081 1.77888 1.62187 V1 -0.936898 1.59519 1.62187 V2 -0.884554 1.50606 1.87778 + N0 -0.244029 0.90527 0.347757 N1 -0.470295 0.810853 0.34834 N2 -0.460653 0.794229 0.39623 + txt003 +STRI + V0 -0.467421 1.67949 1.87778 V1 0 1.74074 1.87778 V2 0 1.84375 1.62187 + N0 -0.239043 0.886771 0.395595 N1 1.79998e-16 0.918633 0.395111 N2 1.49384e-16 0.937749 0.347314 + txt003 +STRI + V0 0 1.84375 1.62187 V1 -0.495081 1.77888 1.62187 V2 -0.467421 1.67949 1.87778 + N0 1.49384e-16 0.937749 0.347314 N1 -0.244029 0.90527 0.347757 N2 -0.239043 0.886771 0.395595 + txt003 +STRI + V0 -1.84375 0 1.62188 V1 -1.77888 0.495081 1.62188 V2 -1.85816 0.517147 1.37222 + N0 -0.937749 0 0.347314 N1 -0.90527 0.244029 0.347757 N2 -0.929073 0.250446 0.272213 + txt003 +STRI + V0 -1.85816 0.517147 1.37222 V1 -1.92593 0 1.37222 V2 -1.84375 0 1.62188 + N0 -0.929073 0.250446 0.272213 N1 -0.96234 0 0.271848 N2 -0.937749 0 0.347314 + txt003 +STRI + V0 -1.77888 0.495081 1.62188 V1 -1.59519 0.936898 1.62188 V2 -1.66628 0.978656 1.37222 + N0 -0.90527 0.244029 0.347757 N1 -0.810853 0.470295 0.34834 N2 -0.832247 0.482704 0.272693 + txt003 +STRI + V0 -1.66628 0.978656 1.37222 V1 -1.85816 0.517147 1.37222 V2 -1.77888 0.495081 1.62188 + N0 -0.832247 0.482704 0.272693 N1 -0.929073 0.250446 0.272213 N2 -0.90527 0.244029 0.347757 + txt003 +STRI + V0 -1.59519 0.936898 1.62188 V1 -1.30906 1.30906 1.62188 V2 -1.36741 1.36741 1.37222 + N0 -0.810853 0.470295 0.34834 N1 -0.662761 0.662761 0.348563 N2 -0.680271 0.680271 0.272877 + txt003 +STRI + V0 -1.36741 1.36741 1.37222 V1 -1.66628 0.978656 1.37222 V2 -1.59519 0.936898 1.62188 + N0 -0.680271 0.680271 0.272877 N1 -0.832247 0.482704 0.272693 N2 -0.810853 0.470295 0.34834 + txt003 +STRI + V0 -1.30906 1.30906 1.62188 V1 -0.936898 1.59519 1.62187 V2 -0.978656 1.66628 1.37222 + N0 -0.662761 0.662761 0.348563 N1 -0.470295 0.810853 0.34834 N2 -0.482704 0.832247 0.272693 + txt003 +STRI + V0 -0.978656 1.66628 1.37222 V1 -1.36741 1.36741 1.37222 V2 -1.30906 1.30906 1.62188 + N0 -0.482704 0.832247 0.272693 N1 -0.680271 0.680271 0.272877 N2 -0.662761 0.662761 0.348563 + txt003 +STRI + V0 -0.936898 1.59519 1.62187 V1 -0.495081 1.77888 1.62187 V2 -0.517147 1.85816 1.37222 + N0 -0.470295 0.810853 0.34834 N1 -0.244029 0.90527 0.347757 N2 -0.250446 0.929073 0.272213 + txt003 +STRI + V0 -0.517147 1.85816 1.37222 V1 -0.978656 1.66628 1.37222 V2 -0.936898 1.59519 1.62187 + N0 -0.250446 0.929073 0.272213 N1 -0.482704 0.832247 0.272693 N2 -0.470295 0.810853 0.34834 + txt003 +STRI + V0 -0.495081 1.77888 1.62187 V1 0 1.84375 1.62187 V2 -2.22045e-16 1.92593 1.37222 + N0 -0.244029 0.90527 0.347757 N1 1.49384e-16 0.937749 0.347314 N2 1.11936e-16 0.96234 0.271848 + txt003 +STRI + V0 -2.22045e-16 1.92593 1.37222 V1 -0.517147 1.85816 1.37222 V2 -0.495081 1.77888 1.62187 + N0 1.11936e-16 0.96234 0.271848 N1 -0.250446 0.929073 0.272213 N2 -0.244029 0.90527 0.347757 + txt003 +STRI + V0 -1.92593 0 1.37222 V1 -1.85816 0.517147 1.37222 V2 -1.91065 0.531754 1.1309 + N0 -0.96234 0 0.271848 N1 -0.929073 0.250446 0.272213 N2 -0.953145 0.256935 0.159686 + txt003 +STRI + V0 -1.91065 0.531754 1.1309 V1 -1.98032 0 1.1309 V2 -1.92593 0 1.37222 + N0 -0.953145 0.256935 0.159686 N1 -0.987204 0 0.15946 N2 -0.96234 0 0.271848 + txt003 +STRI + V0 -1.85816 0.517147 1.37222 V1 -1.66628 0.978656 1.37222 V2 -1.71335 1.0063 1.1309 + N0 -0.929073 0.250446 0.272213 N1 -0.832247 0.482704 0.272693 N2 -0.853889 0.495256 0.159982 + txt003 +STRI + V0 -1.71335 1.0063 1.1309 V1 -1.91065 0.531754 1.1309 V2 -1.85816 0.517147 1.37222 + N0 -0.853889 0.495256 0.159982 N1 -0.953145 0.256935 0.159686 N2 -0.929073 0.250446 0.272213 + txt003 +STRI + V0 -1.66628 0.978656 1.37222 V1 -1.36741 1.36741 1.37222 V2 -1.40603 1.40603 1.1309 + N0 -0.832247 0.482704 0.272693 N1 -0.680271 0.680271 0.272877 N2 -0.697986 0.697986 0.160096 + txt003 +STRI + V0 -1.40603 1.40603 1.1309 V1 -1.71335 1.0063 1.1309 V2 -1.66628 0.978656 1.37222 + N0 -0.697986 0.697986 0.160096 N1 -0.853889 0.495256 0.159982 N2 -0.832247 0.482704 0.272693 + txt003 +STRI + V0 -1.36741 1.36741 1.37222 V1 -0.978656 1.66628 1.37222 V2 -1.0063 1.71335 1.1309 + N0 -0.680271 0.680271 0.272877 N1 -0.482704 0.832247 0.272693 N2 -0.495256 0.853889 0.159982 + txt003 +STRI + V0 -1.0063 1.71335 1.1309 V1 -1.40603 1.40603 1.1309 V2 -1.36741 1.36741 1.37222 + N0 -0.495256 0.853889 0.159982 N1 -0.697986 0.697986 0.160096 N2 -0.680271 0.680271 0.272877 + txt003 +STRI + V0 -0.978656 1.66628 1.37222 V1 -0.517147 1.85816 1.37222 V2 -0.531754 1.91065 1.1309 + N0 -0.482704 0.832247 0.272693 N1 -0.250446 0.929073 0.272213 N2 -0.256935 0.953145 0.159686 + txt003 +STRI + V0 -0.531754 1.91065 1.1309 V1 -1.0063 1.71335 1.1309 V2 -0.978656 1.66628 1.37222 + N0 -0.256935 0.953145 0.159686 N1 -0.495256 0.853889 0.159982 N2 -0.482704 0.832247 0.272693 + txt003 +STRI + V0 -0.517147 1.85816 1.37222 V1 -2.22045e-16 1.92593 1.37222 V2 2.22045e-16 1.98032 1.1309 + N0 -0.250446 0.929073 0.272213 N1 1.11936e-16 0.96234 0.271848 N2 6.38555e-17 0.987204 0.15946 + txt003 +STRI + V0 2.22045e-16 1.98032 1.1309 V1 -0.531754 1.91065 1.1309 V2 -0.517147 1.85816 1.37222 + N0 6.38555e-17 0.987204 0.15946 N1 -0.256935 0.953145 0.159686 N2 -0.250446 0.929073 0.272213 + txt003 +STRI + V0 -1.98032 0 1.1309 V1 -1.91065 0.531754 1.1309 V2 -1.92963 0.537037 0.9 + N0 -0.987204 0 0.15946 N1 -0.953145 0.256935 0.159686 N2 -0.965535 0.260275 5.17854e-17 + txt003 +STRI + V0 -1.92963 0.537037 0.9 V1 -2 0 0.9 V2 -1.98032 0 1.1309 + N0 -0.965535 0.260275 5.17854e-17 N1 -1 0 0 N2 -0.987204 0 0.15946 + txt003 +STRI + V0 -1.91065 0.531754 1.1309 V1 -1.71335 1.0063 1.1309 V2 -1.73037 1.0163 0.9 + N0 -0.953145 0.256935 0.159686 N1 -0.853889 0.495256 0.159982 N2 -0.865031 0.501718 1.36587e-16 + txt003 +STRI + V0 -1.73037 1.0163 0.9 V1 -1.92963 0.537037 0.9 V2 -1.91065 0.531754 1.1309 + N0 -0.865031 0.501718 1.36587e-16 N1 -0.965535 0.260275 5.17854e-17 N2 -0.953145 0.256935 0.159686 + txt003 +STRI + V0 -1.71335 1.0063 1.1309 V1 -1.40603 1.40603 1.1309 V2 -1.42 1.42 0.9 + N0 -0.853889 0.495256 0.159982 N1 -0.697986 0.697986 0.160096 N2 -0.707107 0.707107 1.74455e-16 + txt003 +STRI + V0 -1.42 1.42 0.9 V1 -1.73037 1.0163 0.9 V2 -1.71335 1.0063 1.1309 + N0 -0.707107 0.707107 1.74455e-16 N1 -0.865031 0.501718 1.36587e-16 N2 -0.853889 0.495256 0.159982 + txt003 +STRI + V0 -1.40603 1.40603 1.1309 V1 -1.0063 1.71335 1.1309 V2 -1.0163 1.73037 0.9 + N0 -0.697986 0.697986 0.160096 N1 -0.495256 0.853889 0.159982 N2 -0.501718 0.865031 1.36587e-16 + txt003 +STRI + V0 -1.0163 1.73037 0.9 V1 -1.42 1.42 0.9 V2 -1.40603 1.40603 1.1309 + N0 -0.501718 0.865031 1.36587e-16 N1 -0.707107 0.707107 1.74455e-16 N2 -0.697986 0.697986 0.160096 + txt003 +STRI + V0 -1.0063 1.71335 1.1309 V1 -0.531754 1.91065 1.1309 V2 -0.537037 1.92963 0.9 + N0 -0.495256 0.853889 0.159982 N1 -0.256935 0.953145 0.159686 N2 -0.260275 0.965535 5.17854e-17 + txt003 +STRI + V0 -0.537037 1.92963 0.9 V1 -1.0163 1.73037 0.9 V2 -1.0063 1.71335 1.1309 + N0 -0.260275 0.965535 5.17854e-17 N1 -0.501718 0.865031 1.36587e-16 N2 -0.495256 0.853889 0.159982 + txt003 +STRI + V0 -0.531754 1.91065 1.1309 V1 2.22045e-16 1.98032 1.1309 V2 0 2 0.9 + N0 -0.256935 0.953145 0.159686 N1 6.38555e-17 0.987204 0.15946 N2 0 1 0 + txt003 +STRI + V0 0 2 0.9 V1 -0.537037 1.92963 0.9 V2 -0.531754 1.91065 1.1309 + N0 0 1 0 N1 -0.260275 0.965535 5.17854e-17 N2 -0.256935 0.953145 0.159686 + txt003 +STRI + V0 0 1.5 2.4 V1 0.402778 1.44722 2.4 V2 0.436032 1.56671 2.13785 + N0 -0 0.902861 0.429934 N1 0.234929 0.871509 0.430442 N2 0.235963 0.875348 0.422003 + txt003 +STRI + V0 0.436032 1.56671 2.13785 V1 0 1.62384 2.13785 V2 0 1.5 2.4 + N0 0.235963 0.875348 0.422003 N1 -0 0.906828 0.4215 N2 -0 0.902861 0.429934 + txt003 +STRI + V0 0.402778 1.44722 2.4 V1 0.762222 1.29778 2.4 V2 0.825153 1.40492 2.13785 + N0 0.234929 0.871509 0.430442 N1 0.4527 0.780517 0.43111 N2 0.4547 0.783966 0.422664 + txt003 +STRI + V0 0.825153 1.40492 2.13785 V1 0.436032 1.56671 2.13785 V2 0.402778 1.44722 2.4 + N0 0.4547 0.783966 0.422664 N1 0.235963 0.875348 0.422003 N2 0.234929 0.871509 0.430442 + txt003 +STRI + V0 0.762222 1.29778 2.4 V1 1.065 1.065 2.4 V2 1.15293 1.15293 2.13785 + N0 0.4527 0.780517 0.43111 N1 0.637936 0.637936 0.431366 N2 0.640758 0.640758 0.422917 + txt003 +STRI + V0 1.15293 1.15293 2.13785 V1 0.825153 1.40492 2.13785 V2 0.762222 1.29778 2.4 + N0 0.640758 0.640758 0.422917 N1 0.4547 0.783966 0.422664 N2 0.4527 0.780517 0.43111 + txt003 +STRI + V0 1.065 1.065 2.4 V1 1.29778 0.762222 2.4 V2 1.40492 0.825153 2.13785 + N0 0.637936 0.637936 0.431366 N1 0.780517 0.4527 0.43111 N2 0.783966 0.4547 0.422664 + txt003 +STRI + V0 1.40492 0.825153 2.13785 V1 1.15293 1.15293 2.13785 V2 1.065 1.065 2.4 + N0 0.783966 0.4547 0.422664 N1 0.640758 0.640758 0.422917 N2 0.637936 0.637936 0.431366 + txt003 +STRI + V0 1.29778 0.762222 2.4 V1 1.44722 0.402778 2.4 V2 1.56671 0.436032 2.13785 + N0 0.780517 0.4527 0.43111 N1 0.871509 0.234929 0.430442 N2 0.875348 0.235963 0.422003 + txt003 +STRI + V0 1.56671 0.436032 2.13785 V1 1.40492 0.825153 2.13785 V2 1.29778 0.762222 2.4 + N0 0.875348 0.235963 0.422003 N1 0.783966 0.4547 0.422664 N2 0.780517 0.4527 0.43111 + txt003 +STRI + V0 1.44722 0.402778 2.4 V1 1.5 0 2.4 V2 1.62384 2.22045e-16 2.13785 + N0 0.871509 0.234929 0.430442 N1 0.902861 -2.27296e-16 0.429934 N2 0.906828 -2.05843e-16 0.4215 + txt003 +STRI + V0 1.62384 2.22045e-16 2.13785 V1 1.56671 0.436032 2.13785 V2 1.44722 0.402778 2.4 + N0 0.906828 -2.05843e-16 0.4215 N1 0.875348 0.235963 0.422003 N2 0.871509 0.234929 0.430442 + txt003 +STRI + V0 0 1.62384 2.13785 V1 0.436032 1.56671 2.13785 V2 0.467421 1.67949 1.87778 + N0 -0 0.906828 0.4215 N1 0.235963 0.875348 0.422003 N2 0.239043 0.886771 0.395595 + txt003 +STRI + V0 0.467421 1.67949 1.87778 V1 0 1.74074 1.87778 V2 0 1.62384 2.13785 + N0 0.239043 0.886771 0.395595 N1 -0 0.918633 0.395111 N2 -0 0.906828 0.4215 + txt003 +STRI + V0 0.436032 1.56671 2.13785 V1 0.825153 1.40492 2.13785 V2 0.884554 1.50606 1.87778 + N0 0.235963 0.875348 0.422003 N1 0.4547 0.783966 0.422664 N2 0.460653 0.794229 0.39623 + txt003 +STRI + V0 0.884554 1.50606 1.87778 V1 0.467421 1.67949 1.87778 V2 0.436032 1.56671 2.13785 + N0 0.460653 0.794229 0.39623 N1 0.239043 0.886771 0.395595 N2 0.235963 0.875348 0.422003 + txt003 +STRI + V0 0.825153 1.40492 2.13785 V1 1.15293 1.15293 2.13785 V2 1.23593 1.23593 1.87778 + N0 0.4547 0.783966 0.422664 N1 0.640758 0.640758 0.422917 N2 0.649156 0.649156 0.396474 + txt003 +STRI + V0 1.23593 1.23593 1.87778 V1 0.884554 1.50606 1.87778 V2 0.825153 1.40492 2.13785 + N0 0.649156 0.649156 0.396474 N1 0.460653 0.794229 0.39623 N2 0.4547 0.783966 0.422664 + txt003 +STRI + V0 1.15293 1.15293 2.13785 V1 1.40492 0.825153 2.13785 V2 1.50606 0.884554 1.87778 + N0 0.640758 0.640758 0.422917 N1 0.783966 0.4547 0.422664 N2 0.794229 0.460653 0.39623 + txt003 +STRI + V0 1.50606 0.884554 1.87778 V1 1.23593 1.23593 1.87778 V2 1.15293 1.15293 2.13785 + N0 0.794229 0.460653 0.39623 N1 0.649156 0.649156 0.396474 N2 0.640758 0.640758 0.422917 + txt003 +STRI + V0 1.40492 0.825153 2.13785 V1 1.56671 0.436032 2.13785 V2 1.67949 0.467421 1.87778 + N0 0.783966 0.4547 0.422664 N1 0.875348 0.235963 0.422003 N2 0.886771 0.239043 0.395595 + txt003 +STRI + V0 1.67949 0.467421 1.87778 V1 1.50606 0.884554 1.87778 V2 1.40492 0.825153 2.13785 + N0 0.886771 0.239043 0.395595 N1 0.794229 0.460653 0.39623 N2 0.783966 0.4547 0.422664 + txt003 +STRI + V0 1.56671 0.436032 2.13785 V1 1.62384 2.22045e-16 2.13785 V2 1.74074 0 1.87778 + N0 0.875348 0.235963 0.422003 N1 0.906828 -2.05843e-16 0.4215 N2 0.918633 -1.79998e-16 0.395111 + txt003 +STRI + V0 1.74074 0 1.87778 V1 1.67949 0.467421 1.87778 V2 1.56671 0.436032 2.13785 + N0 0.918633 -1.79998e-16 0.395111 N1 0.886771 0.239043 0.395595 N2 0.875348 0.235963 0.422003 + txt003 +STRI + V0 0 1.74074 1.87778 V1 0.467421 1.67949 1.87778 V2 0.495081 1.77888 1.62188 + N0 -0 0.918633 0.395111 N1 0.239043 0.886771 0.395595 N2 0.244029 0.90527 0.347757 + txt003 +STRI + V0 0.495081 1.77888 1.62188 V1 0 1.84375 1.62188 V2 0 1.74074 1.87778 + N0 0.244029 0.90527 0.347757 N1 -0 0.937749 0.347314 N2 -0 0.918633 0.395111 + txt003 +STRI + V0 0.467421 1.67949 1.87778 V1 0.884554 1.50606 1.87778 V2 0.936898 1.59519 1.62188 + N0 0.239043 0.886771 0.395595 N1 0.460653 0.794229 0.39623 N2 0.470295 0.810853 0.34834 + txt003 +STRI + V0 0.936898 1.59519 1.62188 V1 0.495081 1.77888 1.62188 V2 0.467421 1.67949 1.87778 + N0 0.470295 0.810853 0.34834 N1 0.244029 0.90527 0.347757 N2 0.239043 0.886771 0.395595 + txt003 +STRI + V0 0.884554 1.50606 1.87778 V1 1.23593 1.23593 1.87778 V2 1.30906 1.30906 1.62188 + N0 0.460653 0.794229 0.39623 N1 0.649156 0.649156 0.396474 N2 0.662761 0.662761 0.348563 + txt003 +STRI + V0 1.30906 1.30906 1.62188 V1 0.936898 1.59519 1.62188 V2 0.884554 1.50606 1.87778 + N0 0.662761 0.662761 0.348563 N1 0.470295 0.810853 0.34834 N2 0.460653 0.794229 0.39623 + txt003 +STRI + V0 1.23593 1.23593 1.87778 V1 1.50606 0.884554 1.87778 V2 1.59519 0.936898 1.62187 + N0 0.649156 0.649156 0.396474 N1 0.794229 0.460653 0.39623 N2 0.810853 0.470295 0.34834 + txt003 +STRI + V0 1.59519 0.936898 1.62187 V1 1.30906 1.30906 1.62188 V2 1.23593 1.23593 1.87778 + N0 0.810853 0.470295 0.34834 N1 0.662761 0.662761 0.348563 N2 0.649156 0.649156 0.396474 + txt003 +STRI + V0 1.50606 0.884554 1.87778 V1 1.67949 0.467421 1.87778 V2 1.77888 0.495081 1.62187 + N0 0.794229 0.460653 0.39623 N1 0.886771 0.239043 0.395595 N2 0.90527 0.244029 0.347757 + txt003 +STRI + V0 1.77888 0.495081 1.62187 V1 1.59519 0.936898 1.62187 V2 1.50606 0.884554 1.87778 + N0 0.90527 0.244029 0.347757 N1 0.810853 0.470295 0.34834 N2 0.794229 0.460653 0.39623 + txt003 +STRI + V0 1.67949 0.467421 1.87778 V1 1.74074 0 1.87778 V2 1.84375 0 1.62187 + N0 0.886771 0.239043 0.395595 N1 0.918633 -1.79998e-16 0.395111 N2 0.937749 -1.49384e-16 0.347314 + txt003 +STRI + V0 1.84375 0 1.62187 V1 1.77888 0.495081 1.62187 V2 1.67949 0.467421 1.87778 + N0 0.937749 -1.49384e-16 0.347314 N1 0.90527 0.244029 0.347757 N2 0.886771 0.239043 0.395595 + txt003 +STRI + V0 0 1.84375 1.62188 V1 0.495081 1.77888 1.62188 V2 0.517147 1.85816 1.37222 + N0 -0 0.937749 0.347314 N1 0.244029 0.90527 0.347757 N2 0.250446 0.929073 0.272213 + txt003 +STRI + V0 0.517147 1.85816 1.37222 V1 0 1.92593 1.37222 V2 0 1.84375 1.62188 + N0 0.250446 0.929073 0.272213 N1 -0 0.96234 0.271848 N2 -0 0.937749 0.347314 + txt003 +STRI + V0 0.495081 1.77888 1.62188 V1 0.936898 1.59519 1.62188 V2 0.978656 1.66628 1.37222 + N0 0.244029 0.90527 0.347757 N1 0.470295 0.810853 0.34834 N2 0.482704 0.832247 0.272693 + txt003 +STRI + V0 0.978656 1.66628 1.37222 V1 0.517147 1.85816 1.37222 V2 0.495081 1.77888 1.62188 + N0 0.482704 0.832247 0.272693 N1 0.250446 0.929073 0.272213 N2 0.244029 0.90527 0.347757 + txt003 +STRI + V0 0.936898 1.59519 1.62188 V1 1.30906 1.30906 1.62188 V2 1.36741 1.36741 1.37222 + N0 0.470295 0.810853 0.34834 N1 0.662761 0.662761 0.348563 N2 0.680271 0.680271 0.272877 + txt003 +STRI + V0 1.36741 1.36741 1.37222 V1 0.978656 1.66628 1.37222 V2 0.936898 1.59519 1.62188 + N0 0.680271 0.680271 0.272877 N1 0.482704 0.832247 0.272693 N2 0.470295 0.810853 0.34834 + txt003 +STRI + V0 1.30906 1.30906 1.62188 V1 1.59519 0.936898 1.62187 V2 1.66628 0.978656 1.37222 + N0 0.662761 0.662761 0.348563 N1 0.810853 0.470295 0.34834 N2 0.832247 0.482704 0.272693 + txt003 +STRI + V0 1.66628 0.978656 1.37222 V1 1.36741 1.36741 1.37222 V2 1.30906 1.30906 1.62188 + N0 0.832247 0.482704 0.272693 N1 0.680271 0.680271 0.272877 N2 0.662761 0.662761 0.348563 + txt003 +STRI + V0 1.59519 0.936898 1.62187 V1 1.77888 0.495081 1.62187 V2 1.85816 0.517147 1.37222 + N0 0.810853 0.470295 0.34834 N1 0.90527 0.244029 0.347757 N2 0.929073 0.250446 0.272213 + txt003 +STRI + V0 1.85816 0.517147 1.37222 V1 1.66628 0.978656 1.37222 V2 1.59519 0.936898 1.62187 + N0 0.929073 0.250446 0.272213 N1 0.832247 0.482704 0.272693 N2 0.810853 0.470295 0.34834 + txt003 +STRI + V0 1.77888 0.495081 1.62187 V1 1.84375 0 1.62187 V2 1.92593 2.22045e-16 1.37222 + N0 0.90527 0.244029 0.347757 N1 0.937749 -1.49384e-16 0.347314 N2 0.96234 -1.11936e-16 0.271848 + txt003 +STRI + V0 1.92593 2.22045e-16 1.37222 V1 1.85816 0.517147 1.37222 V2 1.77888 0.495081 1.62187 + N0 0.96234 -1.11936e-16 0.271848 N1 0.929073 0.250446 0.272213 N2 0.90527 0.244029 0.347757 + txt003 +STRI + V0 0 1.92593 1.37222 V1 0.517147 1.85816 1.37222 V2 0.531754 1.91065 1.1309 + N0 -0 0.96234 0.271848 N1 0.250446 0.929073 0.272213 N2 0.256935 0.953145 0.159686 + txt003 +STRI + V0 0.531754 1.91065 1.1309 V1 0 1.98032 1.1309 V2 0 1.92593 1.37222 + N0 0.256935 0.953145 0.159686 N1 -0 0.987204 0.15946 N2 -0 0.96234 0.271848 + txt003 +STRI + V0 0.517147 1.85816 1.37222 V1 0.978656 1.66628 1.37222 V2 1.0063 1.71335 1.1309 + N0 0.250446 0.929073 0.272213 N1 0.482704 0.832247 0.272693 N2 0.495256 0.853889 0.159982 + txt003 +STRI + V0 1.0063 1.71335 1.1309 V1 0.531754 1.91065 1.1309 V2 0.517147 1.85816 1.37222 + N0 0.495256 0.853889 0.159982 N1 0.256935 0.953145 0.159686 N2 0.250446 0.929073 0.272213 + txt003 +STRI + V0 0.978656 1.66628 1.37222 V1 1.36741 1.36741 1.37222 V2 1.40603 1.40603 1.1309 + N0 0.482704 0.832247 0.272693 N1 0.680271 0.680271 0.272877 N2 0.697986 0.697986 0.160096 + txt003 +STRI + V0 1.40603 1.40603 1.1309 V1 1.0063 1.71335 1.1309 V2 0.978656 1.66628 1.37222 + N0 0.697986 0.697986 0.160096 N1 0.495256 0.853889 0.159982 N2 0.482704 0.832247 0.272693 + txt003 +STRI + V0 1.36741 1.36741 1.37222 V1 1.66628 0.978656 1.37222 V2 1.71335 1.0063 1.1309 + N0 0.680271 0.680271 0.272877 N1 0.832247 0.482704 0.272693 N2 0.853889 0.495256 0.159982 + txt003 +STRI + V0 1.71335 1.0063 1.1309 V1 1.40603 1.40603 1.1309 V2 1.36741 1.36741 1.37222 + N0 0.853889 0.495256 0.159982 N1 0.697986 0.697986 0.160096 N2 0.680271 0.680271 0.272877 + txt003 +STRI + V0 1.66628 0.978656 1.37222 V1 1.85816 0.517147 1.37222 V2 1.91065 0.531754 1.1309 + N0 0.832247 0.482704 0.272693 N1 0.929073 0.250446 0.272213 N2 0.953145 0.256935 0.159686 + txt003 +STRI + V0 1.91065 0.531754 1.1309 V1 1.71335 1.0063 1.1309 V2 1.66628 0.978656 1.37222 + N0 0.953145 0.256935 0.159686 N1 0.853889 0.495256 0.159982 N2 0.832247 0.482704 0.272693 + txt003 +STRI + V0 1.85816 0.517147 1.37222 V1 1.92593 2.22045e-16 1.37222 V2 1.98032 -2.22045e-16 1.1309 + N0 0.929073 0.250446 0.272213 N1 0.96234 -1.11936e-16 0.271848 N2 0.987204 -6.38555e-17 0.15946 + txt003 +STRI + V0 1.98032 -2.22045e-16 1.1309 V1 1.91065 0.531754 1.1309 V2 1.85816 0.517147 1.37222 + N0 0.987204 -6.38555e-17 0.15946 N1 0.953145 0.256935 0.159686 N2 0.929073 0.250446 0.272213 + txt003 +STRI + V0 0 1.98032 1.1309 V1 0.531754 1.91065 1.1309 V2 0.537037 1.92963 0.9 + N0 -0 0.987204 0.15946 N1 0.256935 0.953145 0.159686 N2 0.260275 0.965535 5.17854e-17 + txt003 +STRI + V0 0.537037 1.92963 0.9 V1 0 2 0.9 V2 0 1.98032 1.1309 + N0 0.260275 0.965535 5.17854e-17 N1 -0 1 0 N2 -0 0.987204 0.15946 + txt003 +STRI + V0 0.531754 1.91065 1.1309 V1 1.0063 1.71335 1.1309 V2 1.0163 1.73037 0.9 + N0 0.256935 0.953145 0.159686 N1 0.495256 0.853889 0.159982 N2 0.501718 0.865031 1.36587e-16 + txt003 +STRI + V0 1.0163 1.73037 0.9 V1 0.537037 1.92963 0.9 V2 0.531754 1.91065 1.1309 + N0 0.501718 0.865031 1.36587e-16 N1 0.260275 0.965535 5.17854e-17 N2 0.256935 0.953145 0.159686 + txt003 +STRI + V0 1.0063 1.71335 1.1309 V1 1.40603 1.40603 1.1309 V2 1.42 1.42 0.9 + N0 0.495256 0.853889 0.159982 N1 0.697986 0.697986 0.160096 N2 0.707107 0.707107 1.74455e-16 + txt003 +STRI + V0 1.42 1.42 0.9 V1 1.0163 1.73037 0.9 V2 1.0063 1.71335 1.1309 + N0 0.707107 0.707107 1.74455e-16 N1 0.501718 0.865031 1.36587e-16 N2 0.495256 0.853889 0.159982 + txt003 +STRI + V0 1.40603 1.40603 1.1309 V1 1.71335 1.0063 1.1309 V2 1.73037 1.0163 0.9 + N0 0.697986 0.697986 0.160096 N1 0.853889 0.495256 0.159982 N2 0.865031 0.501718 1.36587e-16 + txt003 +STRI + V0 1.73037 1.0163 0.9 V1 1.42 1.42 0.9 V2 1.40603 1.40603 1.1309 + N0 0.865031 0.501718 1.36587e-16 N1 0.707107 0.707107 1.74455e-16 N2 0.697986 0.697986 0.160096 + txt003 +STRI + V0 1.71335 1.0063 1.1309 V1 1.91065 0.531754 1.1309 V2 1.92963 0.537037 0.9 + N0 0.853889 0.495256 0.159982 N1 0.953145 0.256935 0.159686 N2 0.965535 0.260275 5.17854e-17 + txt003 +STRI + V0 1.92963 0.537037 0.9 V1 1.73037 1.0163 0.9 V2 1.71335 1.0063 1.1309 + N0 0.965535 0.260275 5.17854e-17 N1 0.865031 0.501718 1.36587e-16 N2 0.853889 0.495256 0.159982 + txt003 +STRI + V0 1.91065 0.531754 1.1309 V1 1.98032 -2.22045e-16 1.1309 V2 2 0 0.9 + N0 0.953145 0.256935 0.159686 N1 0.987204 -6.38555e-17 0.15946 N2 1 0 0 + txt003 +STRI + V0 2 0 0.9 V1 1.92963 0.537037 0.9 V2 1.91065 0.531754 1.1309 + N0 1 0 0 N1 0.965535 0.260275 5.17854e-17 N2 0.953145 0.256935 0.159686 + txt003 +STRI + V0 2 0 0.9 V1 1.92963 -0.537037 0.9 V2 1.8939 -0.527092 0.693403 + N0 1 0 0 N1 0.965535 -0.260275 0 N2 0.905874 -0.244192 -0.346067 + txt003 +STRI + V0 1.8939 -0.527092 0.693403 V1 1.96296 0 0.693403 V2 2 0 0.9 + N0 0.905874 -0.244192 -0.346067 N1 0.938373 0 -0.345625 N2 1 0 0 + txt003 +STRI + V0 1.92963 -0.537037 0.9 V1 1.73037 -1.0163 0.9 V2 1.69833 -0.997476 0.693403 + N0 0.965535 -0.260275 0 N1 0.865031 -0.501718 0 N2 0.811395 -0.470609 -0.346647 + txt003 +STRI + V0 1.69833 -0.997476 0.693403 V1 1.8939 -0.527092 0.693403 V2 1.92963 -0.537037 0.9 + N0 0.811395 -0.470609 -0.346647 N1 0.905874 -0.244192 -0.346067 N2 0.965535 -0.260275 0 + txt003 +STRI + V0 1.73037 -1.0163 0.9 V1 1.42 -1.42 0.9 V2 1.3937 -1.3937 0.693403 + N0 0.865031 -0.501718 0 N1 0.707107 -0.707107 0 N2 0.663205 -0.663205 -0.34687 + txt003 +STRI + V0 1.3937 -1.3937 0.693403 V1 1.69833 -0.997476 0.693403 V2 1.73037 -1.0163 0.9 + N0 0.663205 -0.663205 -0.34687 N1 0.811395 -0.470609 -0.346647 N2 0.865031 -0.501718 0 + txt003 +STRI + V0 1.42 -1.42 0.9 V1 1.0163 -1.73037 0.9 V2 0.997476 -1.69833 0.693403 + N0 0.707107 -0.707107 0 N1 0.501718 -0.865031 0 N2 0.470609 -0.811395 -0.346647 + txt003 +STRI + V0 0.997476 -1.69833 0.693403 V1 1.3937 -1.3937 0.693403 V2 1.42 -1.42 0.9 + N0 0.470609 -0.811395 -0.346647 N1 0.663205 -0.663205 -0.34687 N2 0.707107 -0.707107 0 + txt003 +STRI + V0 1.0163 -1.73037 0.9 V1 0.537037 -1.92963 0.9 V2 0.527092 -1.8939 0.693403 + N0 0.501718 -0.865031 0 N1 0.260275 -0.965535 0 N2 0.244192 -0.905874 -0.346067 + txt003 +STRI + V0 0.527092 -1.8939 0.693403 V1 0.997476 -1.69833 0.693403 V2 1.0163 -1.73037 0.9 + N0 0.244192 -0.905874 -0.346067 N1 0.470609 -0.811395 -0.346647 N2 0.501718 -0.865031 0 + txt003 +STRI + V0 0.537037 -1.92963 0.9 V1 0 -2 0.9 V2 2.22045e-16 -1.96296 0.693403 + N0 0.260275 -0.965535 0 N1 -0 -1 -0 N2 -3.49072e-17 -0.938373 -0.345625 + txt003 +STRI + V0 2.22045e-16 -1.96296 0.693403 V1 0.527092 -1.8939 0.693403 V2 0.537037 -1.92963 0.9 + N0 -3.49072e-17 -0.938373 -0.345625 N1 0.244192 -0.905874 -0.346067 N2 0.260275 -0.965535 0 + txt003 +STRI + V0 1.96296 0 0.693403 V1 1.8939 -0.527092 0.693403 V2 1.80456 -0.502229 0.522222 + N0 0.938373 0 -0.345625 N1 0.905874 -0.244192 -0.346067 N2 0.782908 -0.211045 -0.585248 + txt003 +STRI + V0 1.80456 -0.502229 0.522222 V1 1.87037 0 0.522222 V2 1.96296 0 0.693403 + N0 0.782908 -0.211045 -0.585248 N1 0.811257 0 -0.58469 N2 0.938373 0 -0.345625 + txt003 +STRI + V0 1.8939 -0.527092 0.693403 V1 1.69833 -0.997476 0.693403 V2 1.61822 -0.950425 0.522222 + N0 0.905874 -0.244192 -0.346067 N1 0.811395 -0.470609 -0.346647 N2 0.700957 -0.406555 -0.58598 + txt003 +STRI + V0 1.61822 -0.950425 0.522222 V1 1.80456 -0.502229 0.522222 V2 1.8939 -0.527092 0.693403 + N0 0.700957 -0.406555 -0.58598 N1 0.782908 -0.211045 -0.585248 N2 0.905874 -0.244192 -0.346067 + txt003 +STRI + V0 1.69833 -0.997476 0.693403 V1 1.3937 -1.3937 0.693403 V2 1.32796 -1.32796 0.522222 + N0 0.811395 -0.470609 -0.346647 N1 0.663205 -0.663205 -0.34687 N2 0.572843 -0.572843 -0.586261 + txt003 +STRI + V0 1.32796 -1.32796 0.522222 V1 1.61822 -0.950425 0.522222 V2 1.69833 -0.997476 0.693403 + N0 0.572843 -0.572843 -0.586261 N1 0.700957 -0.406555 -0.58598 N2 0.811395 -0.470609 -0.346647 + txt003 +STRI + V0 1.3937 -1.3937 0.693403 V1 0.997476 -1.69833 0.693403 V2 0.950425 -1.61822 0.522222 + N0 0.663205 -0.663205 -0.34687 N1 0.470609 -0.811395 -0.346647 N2 0.406555 -0.700957 -0.58598 + txt003 +STRI + V0 0.950425 -1.61822 0.522222 V1 1.32796 -1.32796 0.522222 V2 1.3937 -1.3937 0.693403 + N0 0.406555 -0.700957 -0.58598 N1 0.572843 -0.572843 -0.586261 N2 0.663205 -0.663205 -0.34687 + txt003 +STRI + V0 0.997476 -1.69833 0.693403 V1 0.527092 -1.8939 0.693403 V2 0.502229 -1.80456 0.522222 + N0 0.470609 -0.811395 -0.346647 N1 0.244192 -0.905874 -0.346067 N2 0.211045 -0.782908 -0.585248 + txt003 +STRI + V0 0.502229 -1.80456 0.522222 V1 0.950425 -1.61822 0.522222 V2 0.997476 -1.69833 0.693403 + N0 0.211045 -0.782908 -0.585248 N1 0.406555 -0.700957 -0.58598 N2 0.470609 -0.811395 -0.346647 + txt003 +STRI + V0 0.527092 -1.8939 0.693403 V1 2.22045e-16 -1.96296 0.693403 V2 2.22045e-16 -1.87037 0.522222 + N0 0.244192 -0.905874 -0.346067 N1 -3.49072e-17 -0.938373 -0.345625 N2 -6.19755e-17 -0.811257 -0.58469 + txt003 +STRI + V0 2.22045e-16 -1.87037 0.522222 V1 0.502229 -1.80456 0.522222 V2 0.527092 -1.8939 0.693403 + N0 -6.19755e-17 -0.811257 -0.58469 N1 0.211045 -0.782908 -0.585248 N2 0.244192 -0.905874 -0.346067 + txt003 +STRI + V0 1.87037 0 0.522222 V1 1.80456 -0.502229 0.522222 V2 1.68843 -0.469907 0.384375 + N0 0.811257 0 -0.58469 N1 0.782908 -0.211045 -0.585248 N2 0.673539 -0.181563 -0.716506 + txt003 +STRI + V0 1.68843 -0.469907 0.384375 V1 1.75 0 0.384375 V2 1.87037 0 0.522222 + N0 0.673539 -0.181563 -0.716506 N1 0.6981 0 -0.716 N2 0.811257 0 -0.58469 + txt003 +STRI + V0 1.80456 -0.502229 0.522222 V1 1.61822 -0.950425 0.522222 V2 1.51407 -0.889259 0.384375 + N0 0.782908 -0.211045 -0.585248 N1 0.700957 -0.406555 -0.58598 N2 0.602839 -0.349647 -0.717169 + txt003 +STRI + V0 1.51407 -0.889259 0.384375 V1 1.68843 -0.469907 0.384375 V2 1.80456 -0.502229 0.522222 + N0 0.602839 -0.349647 -0.717169 N1 0.673539 -0.181563 -0.716506 N2 0.782908 -0.211045 -0.585248 + txt003 +STRI + V0 1.61822 -0.950425 0.522222 V1 1.32796 -1.32796 0.522222 V2 1.2425 -1.2425 0.384375 + N0 0.700957 -0.406555 -0.58598 N1 0.572843 -0.572843 -0.586261 N2 0.492597 -0.492597 -0.717423 + txt003 +STRI + V0 1.2425 -1.2425 0.384375 V1 1.51407 -0.889259 0.384375 V2 1.61822 -0.950425 0.522222 + N0 0.492597 -0.492597 -0.717423 N1 0.602839 -0.349647 -0.717169 N2 0.700957 -0.406555 -0.58598 + txt003 +STRI + V0 1.32796 -1.32796 0.522222 V1 0.950425 -1.61822 0.522222 V2 0.889259 -1.51407 0.384375 + N0 0.572843 -0.572843 -0.586261 N1 0.406555 -0.700957 -0.58598 N2 0.349647 -0.602839 -0.717169 + txt003 +STRI + V0 0.889259 -1.51407 0.384375 V1 1.2425 -1.2425 0.384375 V2 1.32796 -1.32796 0.522222 + N0 0.349647 -0.602839 -0.717169 N1 0.492597 -0.492597 -0.717423 N2 0.572843 -0.572843 -0.586261 + txt003 +STRI + V0 0.950425 -1.61822 0.522222 V1 0.502229 -1.80456 0.522222 V2 0.469907 -1.68843 0.384375 + N0 0.406555 -0.700957 -0.58598 N1 0.211045 -0.782908 -0.585248 N2 0.181563 -0.673539 -0.716506 + txt003 +STRI + V0 0.469907 -1.68843 0.384375 V1 0.889259 -1.51407 0.384375 V2 0.950425 -1.61822 0.522222 + N0 0.181563 -0.673539 -0.716506 N1 0.349647 -0.602839 -0.717169 N2 0.406555 -0.700957 -0.58598 + txt003 +STRI + V0 0.502229 -1.80456 0.522222 V1 2.22045e-16 -1.87037 0.522222 V2 2.22045e-16 -1.75 0.384375 + N0 0.211045 -0.782908 -0.585248 N1 -6.19755e-17 -0.811257 -0.58469 N2 -8.11143e-17 -0.6981 -0.716 + txt003 +STRI + V0 2.22045e-16 -1.75 0.384375 V1 0.469907 -1.68843 0.384375 V2 0.502229 -1.80456 0.522222 + N0 -8.11143e-17 -0.6981 -0.716 N1 0.181563 -0.673539 -0.716506 N2 0.211045 -0.782908 -0.585248 + txt003 +STRI + V0 1.75 0 0.384375 V1 1.68843 -0.469907 0.384375 V2 1.57229 -0.437586 0.277778 + N0 0.6981 0 -0.716 N1 0.673539 -0.181563 -0.716506 N2 0.61392 -0.165491 -0.771826 + txt003 +STRI + V0 1.57229 -0.437586 0.277778 V1 1.62963 0 0.277778 V2 1.75 0 0.384375 + N0 0.61392 -0.165491 -0.771826 N1 0.636383 0 -0.771373 N2 0.6981 0 -0.716 + txt003 +STRI + V0 1.68843 -0.469907 0.384375 V1 1.51407 -0.889259 0.384375 V2 1.40993 -0.828093 0.277778 + N0 0.673539 -0.181563 -0.716506 N1 0.602839 -0.349647 -0.717169 N2 0.549392 -0.318647 -0.77242 + txt003 +STRI + V0 1.40993 -0.828093 0.277778 V1 1.57229 -0.437586 0.277778 V2 1.68843 -0.469907 0.384375 + N0 0.549392 -0.318647 -0.77242 N1 0.61392 -0.165491 -0.771826 N2 0.673539 -0.181563 -0.716506 + txt003 +STRI + V0 1.51407 -0.889259 0.384375 V1 1.2425 -1.2425 0.384375 V2 1.15704 -1.15704 0.277778 + N0 0.602839 -0.349647 -0.717169 N1 0.492597 -0.492597 -0.717423 N2 0.448897 -0.448897 -0.772647 + txt003 +STRI + V0 1.15704 -1.15704 0.277778 V1 1.40993 -0.828093 0.277778 V2 1.51407 -0.889259 0.384375 + N0 0.448897 -0.448897 -0.772647 N1 0.549392 -0.318647 -0.77242 N2 0.602839 -0.349647 -0.717169 + txt003 +STRI + V0 1.2425 -1.2425 0.384375 V1 0.889259 -1.51407 0.384375 V2 0.828093 -1.40993 0.277778 + N0 0.492597 -0.492597 -0.717423 N1 0.349647 -0.602839 -0.717169 N2 0.318647 -0.549392 -0.77242 + txt003 +STRI + V0 0.828093 -1.40993 0.277778 V1 1.15704 -1.15704 0.277778 V2 1.2425 -1.2425 0.384375 + N0 0.318647 -0.549392 -0.77242 N1 0.448897 -0.448897 -0.772647 N2 0.492597 -0.492597 -0.717423 + txt003 +STRI + V0 0.889259 -1.51407 0.384375 V1 0.469907 -1.68843 0.384375 V2 0.437586 -1.57229 0.277778 + N0 0.349647 -0.602839 -0.717169 N1 0.181563 -0.673539 -0.716506 N2 0.165491 -0.61392 -0.771826 + txt003 +STRI + V0 0.437586 -1.57229 0.277778 V1 0.828093 -1.40993 0.277778 V2 0.889259 -1.51407 0.384375 + N0 0.165491 -0.61392 -0.771826 N1 0.318647 -0.549392 -0.77242 N2 0.349647 -0.602839 -0.717169 + txt003 +STRI + V0 0.469907 -1.68843 0.384375 V1 2.22045e-16 -1.75 0.384375 V2 0 -1.62963 0.277778 + N0 0.181563 -0.673539 -0.716506 N1 -8.11143e-17 -0.6981 -0.716 N2 -1.97068e-16 -0.636383 -0.771373 + txt003 +STRI + V0 0 -1.62963 0.277778 V1 0.437586 -1.57229 0.277778 V2 0.469907 -1.68843 0.384375 + N0 -1.97068e-16 -0.636383 -0.771373 N1 0.165491 -0.61392 -0.771826 N2 0.181563 -0.673539 -0.716506 + txt003 +STRI + V0 1.62963 0 0.277778 V1 1.57229 -0.437586 0.277778 V2 1.48296 -0.412723 0.200347 + N0 0.636383 0 -0.771373 N1 0.61392 -0.165491 -0.771826 N2 0.651276 -0.175561 -0.738253 + txt003 +STRI + V0 1.48296 -0.412723 0.200347 V1 1.53704 0 0.200347 V2 1.62963 0 0.277778 + N0 0.651276 -0.175561 -0.738253 N1 0.675056 0 -0.737766 N2 0.636383 0 -0.771373 + txt003 +STRI + V0 1.57229 -0.437586 0.277778 V1 1.40993 -0.828093 0.277778 V2 1.32982 -0.781043 0.200347 + N0 0.61392 -0.165491 -0.771826 N1 0.549392 -0.318647 -0.77242 N2 0.582878 -0.338069 -0.738893 + txt003 +STRI + V0 1.32982 -0.781043 0.200347 V1 1.48296 -0.412723 0.200347 V2 1.57229 -0.437586 0.277778 + N0 0.582878 -0.338069 -0.738893 N1 0.651276 -0.175561 -0.738253 N2 0.61392 -0.165491 -0.771826 + txt003 +STRI + V0 1.40993 -0.828093 0.277778 V1 1.15704 -1.15704 0.277778 V2 1.0913 -1.0913 0.200347 + N0 0.549392 -0.318647 -0.77242 N1 0.448897 -0.448897 -0.772647 N2 0.476275 -0.476275 -0.739137 + txt003 +STRI + V0 1.0913 -1.0913 0.200347 V1 1.32982 -0.781043 0.200347 V2 1.40993 -0.828093 0.277778 + N0 0.476275 -0.476275 -0.739137 N1 0.582878 -0.338069 -0.738893 N2 0.549392 -0.318647 -0.77242 + txt003 +STRI + V0 1.15704 -1.15704 0.277778 V1 0.828093 -1.40993 0.277778 V2 0.781043 -1.32982 0.200347 + N0 0.448897 -0.448897 -0.772647 N1 0.318647 -0.549392 -0.77242 N2 0.338069 -0.582878 -0.738893 + txt003 +STRI + V0 0.781043 -1.32982 0.200347 V1 1.0913 -1.0913 0.200347 V2 1.15704 -1.15704 0.277778 + N0 0.338069 -0.582878 -0.738893 N1 0.476275 -0.476275 -0.739137 N2 0.448897 -0.448897 -0.772647 + txt003 +STRI + V0 0.828093 -1.40993 0.277778 V1 0.437586 -1.57229 0.277778 V2 0.412723 -1.48296 0.200347 + N0 0.318647 -0.549392 -0.77242 N1 0.165491 -0.61392 -0.771826 N2 0.175561 -0.651276 -0.738253 + txt003 +STRI + V0 0.412723 -1.48296 0.200347 V1 0.781043 -1.32982 0.200347 V2 0.828093 -1.40993 0.277778 + N0 0.175561 -0.651276 -0.738253 N1 0.338069 -0.582878 -0.738893 N2 0.318647 -0.549392 -0.77242 + txt003 +STRI + V0 0.437586 -1.57229 0.277778 V1 0 -1.62963 0.277778 V2 0 -1.53704 0.200347 + N0 0.165491 -0.61392 -0.771826 N1 -1.97068e-16 -0.636383 -0.771373 N2 -9.51605e-17 -0.675056 -0.737766 + txt003 +STRI + V0 0 -1.53704 0.200347 V1 0.412723 -1.48296 0.200347 V2 0.437586 -1.57229 0.277778 + N0 -9.51605e-17 -0.675056 -0.737766 N1 0.175561 -0.651276 -0.738253 N2 0.165491 -0.61392 -0.771826 + txt003 +STRI + V0 1.53704 0 0.200347 V1 1.48296 -0.412723 0.200347 V2 1.44722 -0.402778 0.15 + N0 0.675056 0 -0.737766 N1 0.651276 -0.175561 -0.738253 N2 0.965535 -0.260275 0 + txt003 +STRI + V0 1.44722 -0.402778 0.15 V1 1.5 0 0.15 V2 1.53704 0 0.200347 + N0 0.965535 -0.260275 0 N1 1 0 0 N2 0.675056 0 -0.737766 + txt003 +STRI + V0 1.48296 -0.412723 0.200347 V1 1.32982 -0.781043 0.200347 V2 1.29778 -0.762222 0.15 + N0 0.651276 -0.175561 -0.738253 N1 0.582878 -0.338069 -0.738893 N2 0.865031 -0.501718 0 + txt003 +STRI + V0 1.29778 -0.762222 0.15 V1 1.44722 -0.402778 0.15 V2 1.48296 -0.412723 0.200347 + N0 0.865031 -0.501718 0 N1 0.965535 -0.260275 0 N2 0.651276 -0.175561 -0.738253 + txt003 +STRI + V0 1.32982 -0.781043 0.200347 V1 1.0913 -1.0913 0.200347 V2 1.065 -1.065 0.15 + N0 0.582878 -0.338069 -0.738893 N1 0.476275 -0.476275 -0.739137 N2 0.707107 -0.707107 0 + txt003 +STRI + V0 1.065 -1.065 0.15 V1 1.29778 -0.762222 0.15 V2 1.32982 -0.781043 0.200347 + N0 0.707107 -0.707107 0 N1 0.865031 -0.501718 0 N2 0.582878 -0.338069 -0.738893 + txt003 +STRI + V0 1.0913 -1.0913 0.200347 V1 0.781043 -1.32982 0.200347 V2 0.762222 -1.29778 0.15 + N0 0.476275 -0.476275 -0.739137 N1 0.338069 -0.582878 -0.738893 N2 0.501718 -0.865031 0 + txt003 +STRI + V0 0.762222 -1.29778 0.15 V1 1.065 -1.065 0.15 V2 1.0913 -1.0913 0.200347 + N0 0.501718 -0.865031 0 N1 0.707107 -0.707107 0 N2 0.476275 -0.476275 -0.739137 + txt003 +STRI + V0 0.781043 -1.32982 0.200347 V1 0.412723 -1.48296 0.200347 V2 0.402778 -1.44722 0.15 + N0 0.338069 -0.582878 -0.738893 N1 0.175561 -0.651276 -0.738253 N2 0.260275 -0.965535 0 + txt003 +STRI + V0 0.402778 -1.44722 0.15 V1 0.762222 -1.29778 0.15 V2 0.781043 -1.32982 0.200347 + N0 0.260275 -0.965535 0 N1 0.501718 -0.865031 0 N2 0.338069 -0.582878 -0.738893 + txt003 +STRI + V0 0.412723 -1.48296 0.200347 V1 0 -1.53704 0.200347 V2 0 -1.5 0.15 + N0 0.175561 -0.651276 -0.738253 N1 -9.51605e-17 -0.675056 -0.737766 N2 -0 -1 -0 + txt003 +STRI + V0 0 -1.5 0.15 V1 0.402778 -1.44722 0.15 V2 0.412723 -1.48296 0.200347 + N0 -0 -1 -0 N1 0.260275 -0.965535 0 N2 0.175561 -0.651276 -0.738253 + txt003 +STRI + V0 0 -2 0.9 V1 -0.537037 -1.92963 0.9 V2 -0.527092 -1.8939 0.693403 + N0 -0 -1 -0 N1 -0.260275 -0.965535 -0 N2 -0.244192 -0.905874 -0.346067 + txt003 +STRI + V0 -0.527092 -1.8939 0.693403 V1 0 -1.96296 0.693403 V2 0 -2 0.9 + N0 -0.244192 -0.905874 -0.346067 N1 -0 -0.938373 -0.345625 N2 -0 -1 -0 + txt003 +STRI + V0 -0.537037 -1.92963 0.9 V1 -1.0163 -1.73037 0.9 V2 -0.997476 -1.69833 0.693403 + N0 -0.260275 -0.965535 -0 N1 -0.501718 -0.865031 -0 N2 -0.470609 -0.811395 -0.346647 + txt003 +STRI + V0 -0.997476 -1.69833 0.693403 V1 -0.527092 -1.8939 0.693403 V2 -0.537037 -1.92963 0.9 + N0 -0.470609 -0.811395 -0.346647 N1 -0.244192 -0.905874 -0.346067 N2 -0.260275 -0.965535 -0 + txt003 +STRI + V0 -1.0163 -1.73037 0.9 V1 -1.42 -1.42 0.9 V2 -1.3937 -1.3937 0.693403 + N0 -0.501718 -0.865031 -0 N1 -0.707107 -0.707107 -0 N2 -0.663205 -0.663205 -0.34687 + txt003 +STRI + V0 -1.3937 -1.3937 0.693403 V1 -0.997476 -1.69833 0.693403 V2 -1.0163 -1.73037 0.9 + N0 -0.663205 -0.663205 -0.34687 N1 -0.470609 -0.811395 -0.346647 N2 -0.501718 -0.865031 -0 + txt003 +STRI + V0 -1.42 -1.42 0.9 V1 -1.73037 -1.0163 0.9 V2 -1.69833 -0.997476 0.693403 + N0 -0.707107 -0.707107 -0 N1 -0.865031 -0.501718 -0 N2 -0.811395 -0.470609 -0.346647 + txt003 +STRI + V0 -1.69833 -0.997476 0.693403 V1 -1.3937 -1.3937 0.693403 V2 -1.42 -1.42 0.9 + N0 -0.811395 -0.470609 -0.346647 N1 -0.663205 -0.663205 -0.34687 N2 -0.707107 -0.707107 -0 + txt003 +STRI + V0 -1.73037 -1.0163 0.9 V1 -1.92963 -0.537037 0.9 V2 -1.8939 -0.527092 0.693403 + N0 -0.865031 -0.501718 -0 N1 -0.965535 -0.260275 -0 N2 -0.905874 -0.244192 -0.346067 + txt003 +STRI + V0 -1.8939 -0.527092 0.693403 V1 -1.69833 -0.997476 0.693403 V2 -1.73037 -1.0163 0.9 + N0 -0.905874 -0.244192 -0.346067 N1 -0.811395 -0.470609 -0.346647 N2 -0.865031 -0.501718 -0 + txt003 +STRI + V0 -1.92963 -0.537037 0.9 V1 -2 0 0.9 V2 -1.96296 -2.22045e-16 0.693403 + N0 -0.965535 -0.260275 -0 N1 -1 0 0 N2 -0.938373 3.49072e-17 -0.345625 + txt003 +STRI + V0 -1.96296 -2.22045e-16 0.693403 V1 -1.8939 -0.527092 0.693403 V2 -1.92963 -0.537037 0.9 + N0 -0.938373 3.49072e-17 -0.345625 N1 -0.905874 -0.244192 -0.346067 N2 -0.965535 -0.260275 -0 + txt003 +STRI + V0 0 -1.96296 0.693403 V1 -0.527092 -1.8939 0.693403 V2 -0.502229 -1.80456 0.522222 + N0 -0 -0.938373 -0.345625 N1 -0.244192 -0.905874 -0.346067 N2 -0.211045 -0.782908 -0.585248 + txt003 +STRI + V0 -0.502229 -1.80456 0.522222 V1 0 -1.87037 0.522222 V2 0 -1.96296 0.693403 + N0 -0.211045 -0.782908 -0.585248 N1 -0 -0.811257 -0.58469 N2 -0 -0.938373 -0.345625 + txt003 +STRI + V0 -0.527092 -1.8939 0.693403 V1 -0.997476 -1.69833 0.693403 V2 -0.950425 -1.61822 0.522222 + N0 -0.244192 -0.905874 -0.346067 N1 -0.470609 -0.811395 -0.346647 N2 -0.406555 -0.700957 -0.58598 + txt003 +STRI + V0 -0.950425 -1.61822 0.522222 V1 -0.502229 -1.80456 0.522222 V2 -0.527092 -1.8939 0.693403 + N0 -0.406555 -0.700957 -0.58598 N1 -0.211045 -0.782908 -0.585248 N2 -0.244192 -0.905874 -0.346067 + txt003 +STRI + V0 -0.997476 -1.69833 0.693403 V1 -1.3937 -1.3937 0.693403 V2 -1.32796 -1.32796 0.522222 + N0 -0.470609 -0.811395 -0.346647 N1 -0.663205 -0.663205 -0.34687 N2 -0.572843 -0.572843 -0.586261 + txt003 +STRI + V0 -1.32796 -1.32796 0.522222 V1 -0.950425 -1.61822 0.522222 V2 -0.997476 -1.69833 0.693403 + N0 -0.572843 -0.572843 -0.586261 N1 -0.406555 -0.700957 -0.58598 N2 -0.470609 -0.811395 -0.346647 + txt003 +STRI + V0 -1.3937 -1.3937 0.693403 V1 -1.69833 -0.997476 0.693403 V2 -1.61822 -0.950425 0.522222 + N0 -0.663205 -0.663205 -0.34687 N1 -0.811395 -0.470609 -0.346647 N2 -0.700957 -0.406555 -0.58598 + txt003 +STRI + V0 -1.61822 -0.950425 0.522222 V1 -1.32796 -1.32796 0.522222 V2 -1.3937 -1.3937 0.693403 + N0 -0.700957 -0.406555 -0.58598 N1 -0.572843 -0.572843 -0.586261 N2 -0.663205 -0.663205 -0.34687 + txt003 +STRI + V0 -1.69833 -0.997476 0.693403 V1 -1.8939 -0.527092 0.693403 V2 -1.80456 -0.502229 0.522222 + N0 -0.811395 -0.470609 -0.346647 N1 -0.905874 -0.244192 -0.346067 N2 -0.782908 -0.211045 -0.585248 + txt003 +STRI + V0 -1.80456 -0.502229 0.522222 V1 -1.61822 -0.950425 0.522222 V2 -1.69833 -0.997476 0.693403 + N0 -0.782908 -0.211045 -0.585248 N1 -0.700957 -0.406555 -0.58598 N2 -0.811395 -0.470609 -0.346647 + txt003 +STRI + V0 -1.8939 -0.527092 0.693403 V1 -1.96296 -2.22045e-16 0.693403 V2 -1.87037 -2.22045e-16 0.522222 + N0 -0.905874 -0.244192 -0.346067 N1 -0.938373 3.49072e-17 -0.345625 N2 -0.811257 6.19755e-17 -0.58469 + txt003 +STRI + V0 -1.87037 -2.22045e-16 0.522222 V1 -1.80456 -0.502229 0.522222 V2 -1.8939 -0.527092 0.693403 + N0 -0.811257 6.19755e-17 -0.58469 N1 -0.782908 -0.211045 -0.585248 N2 -0.905874 -0.244192 -0.346067 + txt003 +STRI + V0 0 -1.87037 0.522222 V1 -0.502229 -1.80456 0.522222 V2 -0.469907 -1.68843 0.384375 + N0 -0 -0.811257 -0.58469 N1 -0.211045 -0.782908 -0.585248 N2 -0.181563 -0.673539 -0.716506 + txt003 +STRI + V0 -0.469907 -1.68843 0.384375 V1 0 -1.75 0.384375 V2 0 -1.87037 0.522222 + N0 -0.181563 -0.673539 -0.716506 N1 -0 -0.6981 -0.716 N2 -0 -0.811257 -0.58469 + txt003 +STRI + V0 -0.502229 -1.80456 0.522222 V1 -0.950425 -1.61822 0.522222 V2 -0.889259 -1.51407 0.384375 + N0 -0.211045 -0.782908 -0.585248 N1 -0.406555 -0.700957 -0.58598 N2 -0.349647 -0.602839 -0.717169 + txt003 +STRI + V0 -0.889259 -1.51407 0.384375 V1 -0.469907 -1.68843 0.384375 V2 -0.502229 -1.80456 0.522222 + N0 -0.349647 -0.602839 -0.717169 N1 -0.181563 -0.673539 -0.716506 N2 -0.211045 -0.782908 -0.585248 + txt003 +STRI + V0 -0.950425 -1.61822 0.522222 V1 -1.32796 -1.32796 0.522222 V2 -1.2425 -1.2425 0.384375 + N0 -0.406555 -0.700957 -0.58598 N1 -0.572843 -0.572843 -0.586261 N2 -0.492597 -0.492597 -0.717423 + txt003 +STRI + V0 -1.2425 -1.2425 0.384375 V1 -0.889259 -1.51407 0.384375 V2 -0.950425 -1.61822 0.522222 + N0 -0.492597 -0.492597 -0.717423 N1 -0.349647 -0.602839 -0.717169 N2 -0.406555 -0.700957 -0.58598 + txt003 +STRI + V0 -1.32796 -1.32796 0.522222 V1 -1.61822 -0.950425 0.522222 V2 -1.51407 -0.889259 0.384375 + N0 -0.572843 -0.572843 -0.586261 N1 -0.700957 -0.406555 -0.58598 N2 -0.602839 -0.349647 -0.717169 + txt003 +STRI + V0 -1.51407 -0.889259 0.384375 V1 -1.2425 -1.2425 0.384375 V2 -1.32796 -1.32796 0.522222 + N0 -0.602839 -0.349647 -0.717169 N1 -0.492597 -0.492597 -0.717423 N2 -0.572843 -0.572843 -0.586261 + txt003 +STRI + V0 -1.61822 -0.950425 0.522222 V1 -1.80456 -0.502229 0.522222 V2 -1.68843 -0.469907 0.384375 + N0 -0.700957 -0.406555 -0.58598 N1 -0.782908 -0.211045 -0.585248 N2 -0.673539 -0.181563 -0.716506 + txt003 +STRI + V0 -1.68843 -0.469907 0.384375 V1 -1.51407 -0.889259 0.384375 V2 -1.61822 -0.950425 0.522222 + N0 -0.673539 -0.181563 -0.716506 N1 -0.602839 -0.349647 -0.717169 N2 -0.700957 -0.406555 -0.58598 + txt003 +STRI + V0 -1.80456 -0.502229 0.522222 V1 -1.87037 -2.22045e-16 0.522222 V2 -1.75 -2.22045e-16 0.384375 + N0 -0.782908 -0.211045 -0.585248 N1 -0.811257 6.19755e-17 -0.58469 N2 -0.6981 8.11143e-17 -0.716 + txt003 +STRI + V0 -1.75 -2.22045e-16 0.384375 V1 -1.68843 -0.469907 0.384375 V2 -1.80456 -0.502229 0.522222 + N0 -0.6981 8.11143e-17 -0.716 N1 -0.673539 -0.181563 -0.716506 N2 -0.782908 -0.211045 -0.585248 + txt003 +STRI + V0 0 -1.75 0.384375 V1 -0.469907 -1.68843 0.384375 V2 -0.437586 -1.57229 0.277778 + N0 -0 -0.6981 -0.716 N1 -0.181563 -0.673539 -0.716506 N2 -0.165491 -0.61392 -0.771826 + txt003 +STRI + V0 -0.437586 -1.57229 0.277778 V1 0 -1.62963 0.277778 V2 0 -1.75 0.384375 + N0 -0.165491 -0.61392 -0.771826 N1 -0 -0.636383 -0.771373 N2 -0 -0.6981 -0.716 + txt003 +STRI + V0 -0.469907 -1.68843 0.384375 V1 -0.889259 -1.51407 0.384375 V2 -0.828093 -1.40993 0.277778 + N0 -0.181563 -0.673539 -0.716506 N1 -0.349647 -0.602839 -0.717169 N2 -0.318647 -0.549392 -0.77242 + txt003 +STRI + V0 -0.828093 -1.40993 0.277778 V1 -0.437586 -1.57229 0.277778 V2 -0.469907 -1.68843 0.384375 + N0 -0.318647 -0.549392 -0.77242 N1 -0.165491 -0.61392 -0.771826 N2 -0.181563 -0.673539 -0.716506 + txt003 +STRI + V0 -0.889259 -1.51407 0.384375 V1 -1.2425 -1.2425 0.384375 V2 -1.15704 -1.15704 0.277778 + N0 -0.349647 -0.602839 -0.717169 N1 -0.492597 -0.492597 -0.717423 N2 -0.448897 -0.448897 -0.772647 + txt003 +STRI + V0 -1.15704 -1.15704 0.277778 V1 -0.828093 -1.40993 0.277778 V2 -0.889259 -1.51407 0.384375 + N0 -0.448897 -0.448897 -0.772647 N1 -0.318647 -0.549392 -0.77242 N2 -0.349647 -0.602839 -0.717169 + txt003 +STRI + V0 -1.2425 -1.2425 0.384375 V1 -1.51407 -0.889259 0.384375 V2 -1.40993 -0.828093 0.277778 + N0 -0.492597 -0.492597 -0.717423 N1 -0.602839 -0.349647 -0.717169 N2 -0.549392 -0.318647 -0.77242 + txt003 +STRI + V0 -1.40993 -0.828093 0.277778 V1 -1.15704 -1.15704 0.277778 V2 -1.2425 -1.2425 0.384375 + N0 -0.549392 -0.318647 -0.77242 N1 -0.448897 -0.448897 -0.772647 N2 -0.492597 -0.492597 -0.717423 + txt003 +STRI + V0 -1.51407 -0.889259 0.384375 V1 -1.68843 -0.469907 0.384375 V2 -1.57229 -0.437586 0.277778 + N0 -0.602839 -0.349647 -0.717169 N1 -0.673539 -0.181563 -0.716506 N2 -0.61392 -0.165491 -0.771826 + txt003 +STRI + V0 -1.57229 -0.437586 0.277778 V1 -1.40993 -0.828093 0.277778 V2 -1.51407 -0.889259 0.384375 + N0 -0.61392 -0.165491 -0.771826 N1 -0.549392 -0.318647 -0.77242 N2 -0.602839 -0.349647 -0.717169 + txt003 +STRI + V0 -1.68843 -0.469907 0.384375 V1 -1.75 -2.22045e-16 0.384375 V2 -1.62963 0 0.277778 + N0 -0.673539 -0.181563 -0.716506 N1 -0.6981 8.11143e-17 -0.716 N2 -0.636383 1.97068e-16 -0.771373 + txt003 +STRI + V0 -1.62963 0 0.277778 V1 -1.57229 -0.437586 0.277778 V2 -1.68843 -0.469907 0.384375 + N0 -0.636383 1.97068e-16 -0.771373 N1 -0.61392 -0.165491 -0.771826 N2 -0.673539 -0.181563 -0.716506 + txt003 +STRI + V0 0 -1.62963 0.277778 V1 -0.437586 -1.57229 0.277778 V2 -0.412723 -1.48296 0.200347 + N0 -0 -0.636383 -0.771373 N1 -0.165491 -0.61392 -0.771826 N2 -0.175561 -0.651276 -0.738253 + txt003 +STRI + V0 -0.412723 -1.48296 0.200347 V1 0 -1.53704 0.200347 V2 0 -1.62963 0.277778 + N0 -0.175561 -0.651276 -0.738253 N1 -0 -0.675056 -0.737766 N2 -0 -0.636383 -0.771373 + txt003 +STRI + V0 -0.437586 -1.57229 0.277778 V1 -0.828093 -1.40993 0.277778 V2 -0.781043 -1.32982 0.200347 + N0 -0.165491 -0.61392 -0.771826 N1 -0.318647 -0.549392 -0.77242 N2 -0.338069 -0.582878 -0.738893 + txt003 +STRI + V0 -0.781043 -1.32982 0.200347 V1 -0.412723 -1.48296 0.200347 V2 -0.437586 -1.57229 0.277778 + N0 -0.338069 -0.582878 -0.738893 N1 -0.175561 -0.651276 -0.738253 N2 -0.165491 -0.61392 -0.771826 + txt003 +STRI + V0 -0.828093 -1.40993 0.277778 V1 -1.15704 -1.15704 0.277778 V2 -1.0913 -1.0913 0.200347 + N0 -0.318647 -0.549392 -0.77242 N1 -0.448897 -0.448897 -0.772647 N2 -0.476275 -0.476275 -0.739137 + txt003 +STRI + V0 -1.0913 -1.0913 0.200347 V1 -0.781043 -1.32982 0.200347 V2 -0.828093 -1.40993 0.277778 + N0 -0.476275 -0.476275 -0.739137 N1 -0.338069 -0.582878 -0.738893 N2 -0.318647 -0.549392 -0.77242 + txt003 +STRI + V0 -1.15704 -1.15704 0.277778 V1 -1.40993 -0.828093 0.277778 V2 -1.32982 -0.781043 0.200347 + N0 -0.448897 -0.448897 -0.772647 N1 -0.549392 -0.318647 -0.77242 N2 -0.582878 -0.338069 -0.738893 + txt003 +STRI + V0 -1.32982 -0.781043 0.200347 V1 -1.0913 -1.0913 0.200347 V2 -1.15704 -1.15704 0.277778 + N0 -0.582878 -0.338069 -0.738893 N1 -0.476275 -0.476275 -0.739137 N2 -0.448897 -0.448897 -0.772647 + txt003 +STRI + V0 -1.40993 -0.828093 0.277778 V1 -1.57229 -0.437586 0.277778 V2 -1.48296 -0.412723 0.200347 + N0 -0.549392 -0.318647 -0.77242 N1 -0.61392 -0.165491 -0.771826 N2 -0.651276 -0.175561 -0.738253 + txt003 +STRI + V0 -1.48296 -0.412723 0.200347 V1 -1.32982 -0.781043 0.200347 V2 -1.40993 -0.828093 0.277778 + N0 -0.651276 -0.175561 -0.738253 N1 -0.582878 -0.338069 -0.738893 N2 -0.549392 -0.318647 -0.77242 + txt003 +STRI + V0 -1.57229 -0.437586 0.277778 V1 -1.62963 0 0.277778 V2 -1.53704 0 0.200347 + N0 -0.61392 -0.165491 -0.771826 N1 -0.636383 1.97068e-16 -0.771373 N2 -0.675056 9.51605e-17 -0.737766 + txt003 +STRI + V0 -1.53704 0 0.200347 V1 -1.48296 -0.412723 0.200347 V2 -1.57229 -0.437586 0.277778 + N0 -0.675056 9.51605e-17 -0.737766 N1 -0.651276 -0.175561 -0.738253 N2 -0.61392 -0.165491 -0.771826 + txt003 +STRI + V0 0 -1.53704 0.200347 V1 -0.412723 -1.48296 0.200347 V2 -0.402778 -1.44722 0.15 + N0 -0 -0.675056 -0.737766 N1 -0.175561 -0.651276 -0.738253 N2 -0.260275 -0.965535 -0 + txt003 +STRI + V0 -0.402778 -1.44722 0.15 V1 0 -1.5 0.15 V2 0 -1.53704 0.200347 + N0 -0.260275 -0.965535 -0 N1 -0 -1 -0 N2 -0 -0.675056 -0.737766 + txt003 +STRI + V0 -0.412723 -1.48296 0.200347 V1 -0.781043 -1.32982 0.200347 V2 -0.762222 -1.29778 0.15 + N0 -0.175561 -0.651276 -0.738253 N1 -0.338069 -0.582878 -0.738893 N2 -0.501718 -0.865031 -0 + txt003 +STRI + V0 -0.762222 -1.29778 0.15 V1 -0.402778 -1.44722 0.15 V2 -0.412723 -1.48296 0.200347 + N0 -0.501718 -0.865031 -0 N1 -0.260275 -0.965535 -0 N2 -0.175561 -0.651276 -0.738253 + txt003 +STRI + V0 -0.781043 -1.32982 0.200347 V1 -1.0913 -1.0913 0.200347 V2 -1.065 -1.065 0.15 + N0 -0.338069 -0.582878 -0.738893 N1 -0.476275 -0.476275 -0.739137 N2 -0.707107 -0.707107 -0 + txt003 +STRI + V0 -1.065 -1.065 0.15 V1 -0.762222 -1.29778 0.15 V2 -0.781043 -1.32982 0.200347 + N0 -0.707107 -0.707107 -0 N1 -0.501718 -0.865031 -0 N2 -0.338069 -0.582878 -0.738893 + txt003 +STRI + V0 -1.0913 -1.0913 0.200347 V1 -1.32982 -0.781043 0.200347 V2 -1.29778 -0.762222 0.15 + N0 -0.476275 -0.476275 -0.739137 N1 -0.582878 -0.338069 -0.738893 N2 -0.865031 -0.501718 -0 + txt003 +STRI + V0 -1.29778 -0.762222 0.15 V1 -1.065 -1.065 0.15 V2 -1.0913 -1.0913 0.200347 + N0 -0.865031 -0.501718 -0 N1 -0.707107 -0.707107 -0 N2 -0.476275 -0.476275 -0.739137 + txt003 +STRI + V0 -1.32982 -0.781043 0.200347 V1 -1.48296 -0.412723 0.200347 V2 -1.44722 -0.402778 0.15 + N0 -0.582878 -0.338069 -0.738893 N1 -0.651276 -0.175561 -0.738253 N2 -0.965535 -0.260275 -0 + txt003 +STRI + V0 -1.44722 -0.402778 0.15 V1 -1.29778 -0.762222 0.15 V2 -1.32982 -0.781043 0.200347 + N0 -0.965535 -0.260275 -0 N1 -0.865031 -0.501718 -0 N2 -0.582878 -0.338069 -0.738893 + txt003 +STRI + V0 -1.48296 -0.412723 0.200347 V1 -1.53704 0 0.200347 V2 -1.5 0 0.15 + N0 -0.651276 -0.175561 -0.738253 N1 -0.675056 9.51605e-17 -0.737766 N2 -1 0 0 + txt003 +STRI + V0 -1.5 0 0.15 V1 -1.44722 -0.402778 0.15 V2 -1.48296 -0.412723 0.200347 + N0 -1 0 0 N1 -0.965535 -0.260275 -0 N2 -0.651276 -0.175561 -0.738253 + txt003 +STRI + V0 -2 0 0.9 V1 -1.92963 0.537037 0.9 V2 -1.8939 0.527092 0.693403 + N0 -1 0 0 N1 -0.965535 0.260275 0 N2 -0.905874 0.244192 -0.346067 + txt003 +STRI + V0 -1.8939 0.527092 0.693403 V1 -1.96296 0 0.693403 V2 -2 0 0.9 + N0 -0.905874 0.244192 -0.346067 N1 -0.938373 0 -0.345625 N2 -1 0 0 + txt003 +STRI + V0 -1.92963 0.537037 0.9 V1 -1.73037 1.0163 0.9 V2 -1.69833 0.997476 0.693403 + N0 -0.965535 0.260275 0 N1 -0.865031 0.501718 0 N2 -0.811395 0.470609 -0.346647 + txt003 +STRI + V0 -1.69833 0.997476 0.693403 V1 -1.8939 0.527092 0.693403 V2 -1.92963 0.537037 0.9 + N0 -0.811395 0.470609 -0.346647 N1 -0.905874 0.244192 -0.346067 N2 -0.965535 0.260275 0 + txt003 +STRI + V0 -1.73037 1.0163 0.9 V1 -1.42 1.42 0.9 V2 -1.3937 1.3937 0.693403 + N0 -0.865031 0.501718 0 N1 -0.707107 0.707107 0 N2 -0.663205 0.663205 -0.34687 + txt003 +STRI + V0 -1.3937 1.3937 0.693403 V1 -1.69833 0.997476 0.693403 V2 -1.73037 1.0163 0.9 + N0 -0.663205 0.663205 -0.34687 N1 -0.811395 0.470609 -0.346647 N2 -0.865031 0.501718 0 + txt003 +STRI + V0 -1.42 1.42 0.9 V1 -1.0163 1.73037 0.9 V2 -0.997476 1.69833 0.693403 + N0 -0.707107 0.707107 0 N1 -0.501718 0.865031 0 N2 -0.470609 0.811395 -0.346647 + txt003 +STRI + V0 -0.997476 1.69833 0.693403 V1 -1.3937 1.3937 0.693403 V2 -1.42 1.42 0.9 + N0 -0.470609 0.811395 -0.346647 N1 -0.663205 0.663205 -0.34687 N2 -0.707107 0.707107 0 + txt003 +STRI + V0 -1.0163 1.73037 0.9 V1 -0.537037 1.92963 0.9 V2 -0.527092 1.8939 0.693403 + N0 -0.501718 0.865031 0 N1 -0.260275 0.965535 0 N2 -0.244192 0.905874 -0.346067 + txt003 +STRI + V0 -0.527092 1.8939 0.693403 V1 -0.997476 1.69833 0.693403 V2 -1.0163 1.73037 0.9 + N0 -0.244192 0.905874 -0.346067 N1 -0.470609 0.811395 -0.346647 N2 -0.501718 0.865031 0 + txt003 +STRI + V0 -0.537037 1.92963 0.9 V1 0 2 0.9 V2 -2.22045e-16 1.96296 0.693403 + N0 -0.260275 0.965535 0 N1 -0 1 0 N2 3.49072e-17 0.938373 -0.345625 + txt003 +STRI + V0 -2.22045e-16 1.96296 0.693403 V1 -0.527092 1.8939 0.693403 V2 -0.537037 1.92963 0.9 + N0 3.49072e-17 0.938373 -0.345625 N1 -0.244192 0.905874 -0.346067 N2 -0.260275 0.965535 0 + txt003 +STRI + V0 -1.96296 0 0.693403 V1 -1.8939 0.527092 0.693403 V2 -1.80456 0.502229 0.522222 + N0 -0.938373 0 -0.345625 N1 -0.905874 0.244192 -0.346067 N2 -0.782908 0.211045 -0.585248 + txt003 +STRI + V0 -1.80456 0.502229 0.522222 V1 -1.87037 0 0.522222 V2 -1.96296 0 0.693403 + N0 -0.782908 0.211045 -0.585248 N1 -0.811257 0 -0.58469 N2 -0.938373 0 -0.345625 + txt003 +STRI + V0 -1.8939 0.527092 0.693403 V1 -1.69833 0.997476 0.693403 V2 -1.61822 0.950425 0.522222 + N0 -0.905874 0.244192 -0.346067 N1 -0.811395 0.470609 -0.346647 N2 -0.700957 0.406555 -0.58598 + txt003 +STRI + V0 -1.61822 0.950425 0.522222 V1 -1.80456 0.502229 0.522222 V2 -1.8939 0.527092 0.693403 + N0 -0.700957 0.406555 -0.58598 N1 -0.782908 0.211045 -0.585248 N2 -0.905874 0.244192 -0.346067 + txt003 +STRI + V0 -1.69833 0.997476 0.693403 V1 -1.3937 1.3937 0.693403 V2 -1.32796 1.32796 0.522222 + N0 -0.811395 0.470609 -0.346647 N1 -0.663205 0.663205 -0.34687 N2 -0.572843 0.572843 -0.586261 + txt003 +STRI + V0 -1.32796 1.32796 0.522222 V1 -1.61822 0.950425 0.522222 V2 -1.69833 0.997476 0.693403 + N0 -0.572843 0.572843 -0.586261 N1 -0.700957 0.406555 -0.58598 N2 -0.811395 0.470609 -0.346647 + txt003 +STRI + V0 -1.3937 1.3937 0.693403 V1 -0.997476 1.69833 0.693403 V2 -0.950425 1.61822 0.522222 + N0 -0.663205 0.663205 -0.34687 N1 -0.470609 0.811395 -0.346647 N2 -0.406555 0.700957 -0.58598 + txt003 +STRI + V0 -0.950425 1.61822 0.522222 V1 -1.32796 1.32796 0.522222 V2 -1.3937 1.3937 0.693403 + N0 -0.406555 0.700957 -0.58598 N1 -0.572843 0.572843 -0.586261 N2 -0.663205 0.663205 -0.34687 + txt003 +STRI + V0 -0.997476 1.69833 0.693403 V1 -0.527092 1.8939 0.693403 V2 -0.502229 1.80456 0.522222 + N0 -0.470609 0.811395 -0.346647 N1 -0.244192 0.905874 -0.346067 N2 -0.211045 0.782908 -0.585248 + txt003 +STRI + V0 -0.502229 1.80456 0.522222 V1 -0.950425 1.61822 0.522222 V2 -0.997476 1.69833 0.693403 + N0 -0.211045 0.782908 -0.585248 N1 -0.406555 0.700957 -0.58598 N2 -0.470609 0.811395 -0.346647 + txt003 +STRI + V0 -0.527092 1.8939 0.693403 V1 -2.22045e-16 1.96296 0.693403 V2 -2.22045e-16 1.87037 0.522222 + N0 -0.244192 0.905874 -0.346067 N1 3.49072e-17 0.938373 -0.345625 N2 6.19755e-17 0.811257 -0.58469 + txt003 +STRI + V0 -2.22045e-16 1.87037 0.522222 V1 -0.502229 1.80456 0.522222 V2 -0.527092 1.8939 0.693403 + N0 6.19755e-17 0.811257 -0.58469 N1 -0.211045 0.782908 -0.585248 N2 -0.244192 0.905874 -0.346067 + txt003 +STRI + V0 -1.87037 0 0.522222 V1 -1.80456 0.502229 0.522222 V2 -1.68843 0.469907 0.384375 + N0 -0.811257 0 -0.58469 N1 -0.782908 0.211045 -0.585248 N2 -0.673539 0.181563 -0.716506 + txt003 +STRI + V0 -1.68843 0.469907 0.384375 V1 -1.75 0 0.384375 V2 -1.87037 0 0.522222 + N0 -0.673539 0.181563 -0.716506 N1 -0.6981 0 -0.716 N2 -0.811257 0 -0.58469 + txt003 +STRI + V0 -1.80456 0.502229 0.522222 V1 -1.61822 0.950425 0.522222 V2 -1.51407 0.889259 0.384375 + N0 -0.782908 0.211045 -0.585248 N1 -0.700957 0.406555 -0.58598 N2 -0.602839 0.349647 -0.717169 + txt003 +STRI + V0 -1.51407 0.889259 0.384375 V1 -1.68843 0.469907 0.384375 V2 -1.80456 0.502229 0.522222 + N0 -0.602839 0.349647 -0.717169 N1 -0.673539 0.181563 -0.716506 N2 -0.782908 0.211045 -0.585248 + txt003 +STRI + V0 -1.61822 0.950425 0.522222 V1 -1.32796 1.32796 0.522222 V2 -1.2425 1.2425 0.384375 + N0 -0.700957 0.406555 -0.58598 N1 -0.572843 0.572843 -0.586261 N2 -0.492597 0.492597 -0.717423 + txt003 +STRI + V0 -1.2425 1.2425 0.384375 V1 -1.51407 0.889259 0.384375 V2 -1.61822 0.950425 0.522222 + N0 -0.492597 0.492597 -0.717423 N1 -0.602839 0.349647 -0.717169 N2 -0.700957 0.406555 -0.58598 + txt003 +STRI + V0 -1.32796 1.32796 0.522222 V1 -0.950425 1.61822 0.522222 V2 -0.889259 1.51407 0.384375 + N0 -0.572843 0.572843 -0.586261 N1 -0.406555 0.700957 -0.58598 N2 -0.349647 0.602839 -0.717169 + txt003 +STRI + V0 -0.889259 1.51407 0.384375 V1 -1.2425 1.2425 0.384375 V2 -1.32796 1.32796 0.522222 + N0 -0.349647 0.602839 -0.717169 N1 -0.492597 0.492597 -0.717423 N2 -0.572843 0.572843 -0.586261 + txt003 +STRI + V0 -0.950425 1.61822 0.522222 V1 -0.502229 1.80456 0.522222 V2 -0.469907 1.68843 0.384375 + N0 -0.406555 0.700957 -0.58598 N1 -0.211045 0.782908 -0.585248 N2 -0.181563 0.673539 -0.716506 + txt003 +STRI + V0 -0.469907 1.68843 0.384375 V1 -0.889259 1.51407 0.384375 V2 -0.950425 1.61822 0.522222 + N0 -0.181563 0.673539 -0.716506 N1 -0.349647 0.602839 -0.717169 N2 -0.406555 0.700957 -0.58598 + txt003 +STRI + V0 -0.502229 1.80456 0.522222 V1 -2.22045e-16 1.87037 0.522222 V2 -2.22045e-16 1.75 0.384375 + N0 -0.211045 0.782908 -0.585248 N1 6.19755e-17 0.811257 -0.58469 N2 8.11143e-17 0.6981 -0.716 + txt003 +STRI + V0 -2.22045e-16 1.75 0.384375 V1 -0.469907 1.68843 0.384375 V2 -0.502229 1.80456 0.522222 + N0 8.11143e-17 0.6981 -0.716 N1 -0.181563 0.673539 -0.716506 N2 -0.211045 0.782908 -0.585248 + txt003 +STRI + V0 -1.75 0 0.384375 V1 -1.68843 0.469907 0.384375 V2 -1.57229 0.437586 0.277778 + N0 -0.6981 0 -0.716 N1 -0.673539 0.181563 -0.716506 N2 -0.61392 0.165491 -0.771826 + txt003 +STRI + V0 -1.57229 0.437586 0.277778 V1 -1.62963 0 0.277778 V2 -1.75 0 0.384375 + N0 -0.61392 0.165491 -0.771826 N1 -0.636383 0 -0.771373 N2 -0.6981 0 -0.716 + txt003 +STRI + V0 -1.68843 0.469907 0.384375 V1 -1.51407 0.889259 0.384375 V2 -1.40993 0.828093 0.277778 + N0 -0.673539 0.181563 -0.716506 N1 -0.602839 0.349647 -0.717169 N2 -0.549392 0.318647 -0.77242 + txt003 +STRI + V0 -1.40993 0.828093 0.277778 V1 -1.57229 0.437586 0.277778 V2 -1.68843 0.469907 0.384375 + N0 -0.549392 0.318647 -0.77242 N1 -0.61392 0.165491 -0.771826 N2 -0.673539 0.181563 -0.716506 + txt003 +STRI + V0 -1.51407 0.889259 0.384375 V1 -1.2425 1.2425 0.384375 V2 -1.15704 1.15704 0.277778 + N0 -0.602839 0.349647 -0.717169 N1 -0.492597 0.492597 -0.717423 N2 -0.448897 0.448897 -0.772647 + txt003 +STRI + V0 -1.15704 1.15704 0.277778 V1 -1.40993 0.828093 0.277778 V2 -1.51407 0.889259 0.384375 + N0 -0.448897 0.448897 -0.772647 N1 -0.549392 0.318647 -0.77242 N2 -0.602839 0.349647 -0.717169 + txt003 +STRI + V0 -1.2425 1.2425 0.384375 V1 -0.889259 1.51407 0.384375 V2 -0.828093 1.40993 0.277778 + N0 -0.492597 0.492597 -0.717423 N1 -0.349647 0.602839 -0.717169 N2 -0.318647 0.549392 -0.77242 + txt003 +STRI + V0 -0.828093 1.40993 0.277778 V1 -1.15704 1.15704 0.277778 V2 -1.2425 1.2425 0.384375 + N0 -0.318647 0.549392 -0.77242 N1 -0.448897 0.448897 -0.772647 N2 -0.492597 0.492597 -0.717423 + txt003 +STRI + V0 -0.889259 1.51407 0.384375 V1 -0.469907 1.68843 0.384375 V2 -0.437586 1.57229 0.277778 + N0 -0.349647 0.602839 -0.717169 N1 -0.181563 0.673539 -0.716506 N2 -0.165491 0.61392 -0.771826 + txt003 +STRI + V0 -0.437586 1.57229 0.277778 V1 -0.828093 1.40993 0.277778 V2 -0.889259 1.51407 0.384375 + N0 -0.165491 0.61392 -0.771826 N1 -0.318647 0.549392 -0.77242 N2 -0.349647 0.602839 -0.717169 + txt003 +STRI + V0 -0.469907 1.68843 0.384375 V1 -2.22045e-16 1.75 0.384375 V2 0 1.62963 0.277778 + N0 -0.181563 0.673539 -0.716506 N1 8.11143e-17 0.6981 -0.716 N2 1.97068e-16 0.636383 -0.771373 + txt003 +STRI + V0 0 1.62963 0.277778 V1 -0.437586 1.57229 0.277778 V2 -0.469907 1.68843 0.384375 + N0 1.97068e-16 0.636383 -0.771373 N1 -0.165491 0.61392 -0.771826 N2 -0.181563 0.673539 -0.716506 + txt003 +STRI + V0 -1.62963 0 0.277778 V1 -1.57229 0.437586 0.277778 V2 -1.48296 0.412723 0.200347 + N0 -0.636383 0 -0.771373 N1 -0.61392 0.165491 -0.771826 N2 -0.651276 0.175561 -0.738253 + txt003 +STRI + V0 -1.48296 0.412723 0.200347 V1 -1.53704 0 0.200347 V2 -1.62963 0 0.277778 + N0 -0.651276 0.175561 -0.738253 N1 -0.675056 0 -0.737766 N2 -0.636383 0 -0.771373 + txt003 +STRI + V0 -1.57229 0.437586 0.277778 V1 -1.40993 0.828093 0.277778 V2 -1.32982 0.781043 0.200347 + N0 -0.61392 0.165491 -0.771826 N1 -0.549392 0.318647 -0.77242 N2 -0.582878 0.338069 -0.738893 + txt003 +STRI + V0 -1.32982 0.781043 0.200347 V1 -1.48296 0.412723 0.200347 V2 -1.57229 0.437586 0.277778 + N0 -0.582878 0.338069 -0.738893 N1 -0.651276 0.175561 -0.738253 N2 -0.61392 0.165491 -0.771826 + txt003 +STRI + V0 -1.40993 0.828093 0.277778 V1 -1.15704 1.15704 0.277778 V2 -1.0913 1.0913 0.200347 + N0 -0.549392 0.318647 -0.77242 N1 -0.448897 0.448897 -0.772647 N2 -0.476275 0.476275 -0.739137 + txt003 +STRI + V0 -1.0913 1.0913 0.200347 V1 -1.32982 0.781043 0.200347 V2 -1.40993 0.828093 0.277778 + N0 -0.476275 0.476275 -0.739137 N1 -0.582878 0.338069 -0.738893 N2 -0.549392 0.318647 -0.77242 + txt003 +STRI + V0 -1.15704 1.15704 0.277778 V1 -0.828093 1.40993 0.277778 V2 -0.781043 1.32982 0.200347 + N0 -0.448897 0.448897 -0.772647 N1 -0.318647 0.549392 -0.77242 N2 -0.338069 0.582878 -0.738893 + txt003 +STRI + V0 -0.781043 1.32982 0.200347 V1 -1.0913 1.0913 0.200347 V2 -1.15704 1.15704 0.277778 + N0 -0.338069 0.582878 -0.738893 N1 -0.476275 0.476275 -0.739137 N2 -0.448897 0.448897 -0.772647 + txt003 +STRI + V0 -0.828093 1.40993 0.277778 V1 -0.437586 1.57229 0.277778 V2 -0.412723 1.48296 0.200347 + N0 -0.318647 0.549392 -0.77242 N1 -0.165491 0.61392 -0.771826 N2 -0.175561 0.651276 -0.738253 + txt003 +STRI + V0 -0.412723 1.48296 0.200347 V1 -0.781043 1.32982 0.200347 V2 -0.828093 1.40993 0.277778 + N0 -0.175561 0.651276 -0.738253 N1 -0.338069 0.582878 -0.738893 N2 -0.318647 0.549392 -0.77242 + txt003 +STRI + V0 -0.437586 1.57229 0.277778 V1 0 1.62963 0.277778 V2 0 1.53704 0.200347 + N0 -0.165491 0.61392 -0.771826 N1 1.97068e-16 0.636383 -0.771373 N2 9.51605e-17 0.675056 -0.737766 + txt003 +STRI + V0 0 1.53704 0.200347 V1 -0.412723 1.48296 0.200347 V2 -0.437586 1.57229 0.277778 + N0 9.51605e-17 0.675056 -0.737766 N1 -0.175561 0.651276 -0.738253 N2 -0.165491 0.61392 -0.771826 + txt003 +STRI + V0 -1.53704 0 0.200347 V1 -1.48296 0.412723 0.200347 V2 -1.44722 0.402778 0.15 + N0 -0.675056 0 -0.737766 N1 -0.651276 0.175561 -0.738253 N2 -0.965535 0.260275 0 + txt003 +STRI + V0 -1.44722 0.402778 0.15 V1 -1.5 0 0.15 V2 -1.53704 0 0.200347 + N0 -0.965535 0.260275 0 N1 -1 0 0 N2 -0.675056 0 -0.737766 + txt003 +STRI + V0 -1.48296 0.412723 0.200347 V1 -1.32982 0.781043 0.200347 V2 -1.29778 0.762222 0.15 + N0 -0.651276 0.175561 -0.738253 N1 -0.582878 0.338069 -0.738893 N2 -0.865031 0.501718 0 + txt003 +STRI + V0 -1.29778 0.762222 0.15 V1 -1.44722 0.402778 0.15 V2 -1.48296 0.412723 0.200347 + N0 -0.865031 0.501718 0 N1 -0.965535 0.260275 0 N2 -0.651276 0.175561 -0.738253 + txt003 +STRI + V0 -1.32982 0.781043 0.200347 V1 -1.0913 1.0913 0.200347 V2 -1.065 1.065 0.15 + N0 -0.582878 0.338069 -0.738893 N1 -0.476275 0.476275 -0.739137 N2 -0.707107 0.707107 0 + txt003 +STRI + V0 -1.065 1.065 0.15 V1 -1.29778 0.762222 0.15 V2 -1.32982 0.781043 0.200347 + N0 -0.707107 0.707107 0 N1 -0.865031 0.501718 0 N2 -0.582878 0.338069 -0.738893 + txt003 +STRI + V0 -1.0913 1.0913 0.200347 V1 -0.781043 1.32982 0.200347 V2 -0.762222 1.29778 0.15 + N0 -0.476275 0.476275 -0.739137 N1 -0.338069 0.582878 -0.738893 N2 -0.501718 0.865031 0 + txt003 +STRI + V0 -0.762222 1.29778 0.15 V1 -1.065 1.065 0.15 V2 -1.0913 1.0913 0.200347 + N0 -0.501718 0.865031 0 N1 -0.707107 0.707107 0 N2 -0.476275 0.476275 -0.739137 + txt003 +STRI + V0 -0.781043 1.32982 0.200347 V1 -0.412723 1.48296 0.200347 V2 -0.402778 1.44722 0.15 + N0 -0.338069 0.582878 -0.738893 N1 -0.175561 0.651276 -0.738253 N2 -0.260275 0.965535 0 + txt003 +STRI + V0 -0.402778 1.44722 0.15 V1 -0.762222 1.29778 0.15 V2 -0.781043 1.32982 0.200347 + N0 -0.260275 0.965535 0 N1 -0.501718 0.865031 0 N2 -0.338069 0.582878 -0.738893 + txt003 +STRI + V0 -0.412723 1.48296 0.200347 V1 0 1.53704 0.200347 V2 0 1.5 0.15 + N0 -0.175561 0.651276 -0.738253 N1 9.51605e-17 0.675056 -0.737766 N2 -0 1 0 + txt003 +STRI + V0 0 1.5 0.15 V1 -0.402778 1.44722 0.15 V2 -0.412723 1.48296 0.200347 + N0 -0 1 0 N1 -0.260275 0.965535 0 N2 -0.175561 0.651276 -0.738253 + txt003 +STRI + V0 0 2 0.9 V1 0.537037 1.92963 0.9 V2 0.527092 1.8939 0.693403 + N0 -0 1 0 N1 0.260275 0.965535 0 N2 0.244192 0.905874 -0.346067 + txt003 +STRI + V0 0.527092 1.8939 0.693403 V1 0 1.96296 0.693403 V2 0 2 0.9 + N0 0.244192 0.905874 -0.346067 N1 0 0.938373 -0.345625 N2 -0 1 0 + txt003 +STRI + V0 0.537037 1.92963 0.9 V1 1.0163 1.73037 0.9 V2 0.997476 1.69833 0.693403 + N0 0.260275 0.965535 0 N1 0.501718 0.865031 0 N2 0.470609 0.811395 -0.346647 + txt003 +STRI + V0 0.997476 1.69833 0.693403 V1 0.527092 1.8939 0.693403 V2 0.537037 1.92963 0.9 + N0 0.470609 0.811395 -0.346647 N1 0.244192 0.905874 -0.346067 N2 0.260275 0.965535 0 + txt003 +STRI + V0 1.0163 1.73037 0.9 V1 1.42 1.42 0.9 V2 1.3937 1.3937 0.693403 + N0 0.501718 0.865031 0 N1 0.707107 0.707107 0 N2 0.663205 0.663205 -0.34687 + txt003 +STRI + V0 1.3937 1.3937 0.693403 V1 0.997476 1.69833 0.693403 V2 1.0163 1.73037 0.9 + N0 0.663205 0.663205 -0.34687 N1 0.470609 0.811395 -0.346647 N2 0.501718 0.865031 0 + txt003 +STRI + V0 1.42 1.42 0.9 V1 1.73037 1.0163 0.9 V2 1.69833 0.997476 0.693403 + N0 0.707107 0.707107 0 N1 0.865031 0.501718 0 N2 0.811395 0.470609 -0.346647 + txt003 +STRI + V0 1.69833 0.997476 0.693403 V1 1.3937 1.3937 0.693403 V2 1.42 1.42 0.9 + N0 0.811395 0.470609 -0.346647 N1 0.663205 0.663205 -0.34687 N2 0.707107 0.707107 0 + txt003 +STRI + V0 1.73037 1.0163 0.9 V1 1.92963 0.537037 0.9 V2 1.8939 0.527092 0.693403 + N0 0.865031 0.501718 0 N1 0.965535 0.260275 0 N2 0.905874 0.244192 -0.346067 + txt003 +STRI + V0 1.8939 0.527092 0.693403 V1 1.69833 0.997476 0.693403 V2 1.73037 1.0163 0.9 + N0 0.905874 0.244192 -0.346067 N1 0.811395 0.470609 -0.346647 N2 0.865031 0.501718 0 + txt003 +STRI + V0 1.92963 0.537037 0.9 V1 2 0 0.9 V2 1.96296 2.22045e-16 0.693403 + N0 0.965535 0.260275 0 N1 1 0 0 N2 0.938373 -3.49072e-17 -0.345625 + txt003 +STRI + V0 1.96296 2.22045e-16 0.693403 V1 1.8939 0.527092 0.693403 V2 1.92963 0.537037 0.9 + N0 0.938373 -3.49072e-17 -0.345625 N1 0.905874 0.244192 -0.346067 N2 0.965535 0.260275 0 + txt003 +STRI + V0 0 1.96296 0.693403 V1 0.527092 1.8939 0.693403 V2 0.502229 1.80456 0.522222 + N0 0 0.938373 -0.345625 N1 0.244192 0.905874 -0.346067 N2 0.211045 0.782908 -0.585248 + txt003 +STRI + V0 0.502229 1.80456 0.522222 V1 0 1.87037 0.522222 V2 0 1.96296 0.693403 + N0 0.211045 0.782908 -0.585248 N1 0 0.811257 -0.58469 N2 0 0.938373 -0.345625 + txt003 +STRI + V0 0.527092 1.8939 0.693403 V1 0.997476 1.69833 0.693403 V2 0.950425 1.61822 0.522222 + N0 0.244192 0.905874 -0.346067 N1 0.470609 0.811395 -0.346647 N2 0.406555 0.700957 -0.58598 + txt003 +STRI + V0 0.950425 1.61822 0.522222 V1 0.502229 1.80456 0.522222 V2 0.527092 1.8939 0.693403 + N0 0.406555 0.700957 -0.58598 N1 0.211045 0.782908 -0.585248 N2 0.244192 0.905874 -0.346067 + txt003 +STRI + V0 0.997476 1.69833 0.693403 V1 1.3937 1.3937 0.693403 V2 1.32796 1.32796 0.522222 + N0 0.470609 0.811395 -0.346647 N1 0.663205 0.663205 -0.34687 N2 0.572843 0.572843 -0.586261 + txt003 +STRI + V0 1.32796 1.32796 0.522222 V1 0.950425 1.61822 0.522222 V2 0.997476 1.69833 0.693403 + N0 0.572843 0.572843 -0.586261 N1 0.406555 0.700957 -0.58598 N2 0.470609 0.811395 -0.346647 + txt003 +STRI + V0 1.3937 1.3937 0.693403 V1 1.69833 0.997476 0.693403 V2 1.61822 0.950425 0.522222 + N0 0.663205 0.663205 -0.34687 N1 0.811395 0.470609 -0.346647 N2 0.700957 0.406555 -0.58598 + txt003 +STRI + V0 1.61822 0.950425 0.522222 V1 1.32796 1.32796 0.522222 V2 1.3937 1.3937 0.693403 + N0 0.700957 0.406555 -0.58598 N1 0.572843 0.572843 -0.586261 N2 0.663205 0.663205 -0.34687 + txt003 +STRI + V0 1.69833 0.997476 0.693403 V1 1.8939 0.527092 0.693403 V2 1.80456 0.502229 0.522222 + N0 0.811395 0.470609 -0.346647 N1 0.905874 0.244192 -0.346067 N2 0.782908 0.211045 -0.585248 + txt003 +STRI + V0 1.80456 0.502229 0.522222 V1 1.61822 0.950425 0.522222 V2 1.69833 0.997476 0.693403 + N0 0.782908 0.211045 -0.585248 N1 0.700957 0.406555 -0.58598 N2 0.811395 0.470609 -0.346647 + txt003 +STRI + V0 1.8939 0.527092 0.693403 V1 1.96296 2.22045e-16 0.693403 V2 1.87037 2.22045e-16 0.522222 + N0 0.905874 0.244192 -0.346067 N1 0.938373 -3.49072e-17 -0.345625 N2 0.811257 -6.19755e-17 -0.58469 + txt003 +STRI + V0 1.87037 2.22045e-16 0.522222 V1 1.80456 0.502229 0.522222 V2 1.8939 0.527092 0.693403 + N0 0.811257 -6.19755e-17 -0.58469 N1 0.782908 0.211045 -0.585248 N2 0.905874 0.244192 -0.346067 + txt003 +STRI + V0 0 1.87037 0.522222 V1 0.502229 1.80456 0.522222 V2 0.469907 1.68843 0.384375 + N0 0 0.811257 -0.58469 N1 0.211045 0.782908 -0.585248 N2 0.181563 0.673539 -0.716506 + txt003 +STRI + V0 0.469907 1.68843 0.384375 V1 0 1.75 0.384375 V2 0 1.87037 0.522222 + N0 0.181563 0.673539 -0.716506 N1 0 0.6981 -0.716 N2 0 0.811257 -0.58469 + txt003 +STRI + V0 0.502229 1.80456 0.522222 V1 0.950425 1.61822 0.522222 V2 0.889259 1.51407 0.384375 + N0 0.211045 0.782908 -0.585248 N1 0.406555 0.700957 -0.58598 N2 0.349647 0.602839 -0.717169 + txt003 +STRI + V0 0.889259 1.51407 0.384375 V1 0.469907 1.68843 0.384375 V2 0.502229 1.80456 0.522222 + N0 0.349647 0.602839 -0.717169 N1 0.181563 0.673539 -0.716506 N2 0.211045 0.782908 -0.585248 + txt003 +STRI + V0 0.950425 1.61822 0.522222 V1 1.32796 1.32796 0.522222 V2 1.2425 1.2425 0.384375 + N0 0.406555 0.700957 -0.58598 N1 0.572843 0.572843 -0.586261 N2 0.492597 0.492597 -0.717423 + txt003 +STRI + V0 1.2425 1.2425 0.384375 V1 0.889259 1.51407 0.384375 V2 0.950425 1.61822 0.522222 + N0 0.492597 0.492597 -0.717423 N1 0.349647 0.602839 -0.717169 N2 0.406555 0.700957 -0.58598 + txt003 +STRI + V0 1.32796 1.32796 0.522222 V1 1.61822 0.950425 0.522222 V2 1.51407 0.889259 0.384375 + N0 0.572843 0.572843 -0.586261 N1 0.700957 0.406555 -0.58598 N2 0.602839 0.349647 -0.717169 + txt003 +STRI + V0 1.51407 0.889259 0.384375 V1 1.2425 1.2425 0.384375 V2 1.32796 1.32796 0.522222 + N0 0.602839 0.349647 -0.717169 N1 0.492597 0.492597 -0.717423 N2 0.572843 0.572843 -0.586261 + txt003 +STRI + V0 1.61822 0.950425 0.522222 V1 1.80456 0.502229 0.522222 V2 1.68843 0.469907 0.384375 + N0 0.700957 0.406555 -0.58598 N1 0.782908 0.211045 -0.585248 N2 0.673539 0.181563 -0.716506 + txt003 +STRI + V0 1.68843 0.469907 0.384375 V1 1.51407 0.889259 0.384375 V2 1.61822 0.950425 0.522222 + N0 0.673539 0.181563 -0.716506 N1 0.602839 0.349647 -0.717169 N2 0.700957 0.406555 -0.58598 + txt003 +STRI + V0 1.80456 0.502229 0.522222 V1 1.87037 2.22045e-16 0.522222 V2 1.75 2.22045e-16 0.384375 + N0 0.782908 0.211045 -0.585248 N1 0.811257 -6.19755e-17 -0.58469 N2 0.6981 -8.11143e-17 -0.716 + txt003 +STRI + V0 1.75 2.22045e-16 0.384375 V1 1.68843 0.469907 0.384375 V2 1.80456 0.502229 0.522222 + N0 0.6981 -8.11143e-17 -0.716 N1 0.673539 0.181563 -0.716506 N2 0.782908 0.211045 -0.585248 + txt003 +STRI + V0 0 1.75 0.384375 V1 0.469907 1.68843 0.384375 V2 0.437586 1.57229 0.277778 + N0 0 0.6981 -0.716 N1 0.181563 0.673539 -0.716506 N2 0.165491 0.61392 -0.771826 + txt003 +STRI + V0 0.437586 1.57229 0.277778 V1 0 1.62963 0.277778 V2 0 1.75 0.384375 + N0 0.165491 0.61392 -0.771826 N1 0 0.636383 -0.771373 N2 0 0.6981 -0.716 + txt003 +STRI + V0 0.469907 1.68843 0.384375 V1 0.889259 1.51407 0.384375 V2 0.828093 1.40993 0.277778 + N0 0.181563 0.673539 -0.716506 N1 0.349647 0.602839 -0.717169 N2 0.318647 0.549392 -0.77242 + txt003 +STRI + V0 0.828093 1.40993 0.277778 V1 0.437586 1.57229 0.277778 V2 0.469907 1.68843 0.384375 + N0 0.318647 0.549392 -0.77242 N1 0.165491 0.61392 -0.771826 N2 0.181563 0.673539 -0.716506 + txt003 +STRI + V0 0.889259 1.51407 0.384375 V1 1.2425 1.2425 0.384375 V2 1.15704 1.15704 0.277778 + N0 0.349647 0.602839 -0.717169 N1 0.492597 0.492597 -0.717423 N2 0.448897 0.448897 -0.772647 + txt003 +STRI + V0 1.15704 1.15704 0.277778 V1 0.828093 1.40993 0.277778 V2 0.889259 1.51407 0.384375 + N0 0.448897 0.448897 -0.772647 N1 0.318647 0.549392 -0.77242 N2 0.349647 0.602839 -0.717169 + txt003 +STRI + V0 1.2425 1.2425 0.384375 V1 1.51407 0.889259 0.384375 V2 1.40993 0.828093 0.277778 + N0 0.492597 0.492597 -0.717423 N1 0.602839 0.349647 -0.717169 N2 0.549392 0.318647 -0.77242 + txt003 +STRI + V0 1.40993 0.828093 0.277778 V1 1.15704 1.15704 0.277778 V2 1.2425 1.2425 0.384375 + N0 0.549392 0.318647 -0.77242 N1 0.448897 0.448897 -0.772647 N2 0.492597 0.492597 -0.717423 + txt003 +STRI + V0 1.51407 0.889259 0.384375 V1 1.68843 0.469907 0.384375 V2 1.57229 0.437586 0.277778 + N0 0.602839 0.349647 -0.717169 N1 0.673539 0.181563 -0.716506 N2 0.61392 0.165491 -0.771826 + txt003 +STRI + V0 1.57229 0.437586 0.277778 V1 1.40993 0.828093 0.277778 V2 1.51407 0.889259 0.384375 + N0 0.61392 0.165491 -0.771826 N1 0.549392 0.318647 -0.77242 N2 0.602839 0.349647 -0.717169 + txt003 +STRI + V0 1.68843 0.469907 0.384375 V1 1.75 2.22045e-16 0.384375 V2 1.62963 0 0.277778 + N0 0.673539 0.181563 -0.716506 N1 0.6981 -8.11143e-17 -0.716 N2 0.636383 -1.97068e-16 -0.771373 + txt003 +STRI + V0 1.62963 0 0.277778 V1 1.57229 0.437586 0.277778 V2 1.68843 0.469907 0.384375 + N0 0.636383 -1.97068e-16 -0.771373 N1 0.61392 0.165491 -0.771826 N2 0.673539 0.181563 -0.716506 + txt003 +STRI + V0 0 1.62963 0.277778 V1 0.437586 1.57229 0.277778 V2 0.412723 1.48296 0.200347 + N0 0 0.636383 -0.771373 N1 0.165491 0.61392 -0.771826 N2 0.175561 0.651276 -0.738253 + txt003 +STRI + V0 0.412723 1.48296 0.200347 V1 0 1.53704 0.200347 V2 0 1.62963 0.277778 + N0 0.175561 0.651276 -0.738253 N1 0 0.675056 -0.737766 N2 0 0.636383 -0.771373 + txt003 +STRI + V0 0.437586 1.57229 0.277778 V1 0.828093 1.40993 0.277778 V2 0.781043 1.32982 0.200347 + N0 0.165491 0.61392 -0.771826 N1 0.318647 0.549392 -0.77242 N2 0.338069 0.582878 -0.738893 + txt003 +STRI + V0 0.781043 1.32982 0.200347 V1 0.412723 1.48296 0.200347 V2 0.437586 1.57229 0.277778 + N0 0.338069 0.582878 -0.738893 N1 0.175561 0.651276 -0.738253 N2 0.165491 0.61392 -0.771826 + txt003 +STRI + V0 0.828093 1.40993 0.277778 V1 1.15704 1.15704 0.277778 V2 1.0913 1.0913 0.200347 + N0 0.318647 0.549392 -0.77242 N1 0.448897 0.448897 -0.772647 N2 0.476275 0.476275 -0.739137 + txt003 +STRI + V0 1.0913 1.0913 0.200347 V1 0.781043 1.32982 0.200347 V2 0.828093 1.40993 0.277778 + N0 0.476275 0.476275 -0.739137 N1 0.338069 0.582878 -0.738893 N2 0.318647 0.549392 -0.77242 + txt003 +STRI + V0 1.15704 1.15704 0.277778 V1 1.40993 0.828093 0.277778 V2 1.32982 0.781043 0.200347 + N0 0.448897 0.448897 -0.772647 N1 0.549392 0.318647 -0.77242 N2 0.582878 0.338069 -0.738893 + txt003 +STRI + V0 1.32982 0.781043 0.200347 V1 1.0913 1.0913 0.200347 V2 1.15704 1.15704 0.277778 + N0 0.582878 0.338069 -0.738893 N1 0.476275 0.476275 -0.739137 N2 0.448897 0.448897 -0.772647 + txt003 +STRI + V0 1.40993 0.828093 0.277778 V1 1.57229 0.437586 0.277778 V2 1.48296 0.412723 0.200347 + N0 0.549392 0.318647 -0.77242 N1 0.61392 0.165491 -0.771826 N2 0.651276 0.175561 -0.738253 + txt003 +STRI + V0 1.48296 0.412723 0.200347 V1 1.32982 0.781043 0.200347 V2 1.40993 0.828093 0.277778 + N0 0.651276 0.175561 -0.738253 N1 0.582878 0.338069 -0.738893 N2 0.549392 0.318647 -0.77242 + txt003 +STRI + V0 1.57229 0.437586 0.277778 V1 1.62963 0 0.277778 V2 1.53704 0 0.200347 + N0 0.61392 0.165491 -0.771826 N1 0.636383 -1.97068e-16 -0.771373 N2 0.675056 -9.51605e-17 -0.737766 + txt003 +STRI + V0 1.53704 0 0.200347 V1 1.48296 0.412723 0.200347 V2 1.57229 0.437586 0.277778 + N0 0.675056 -9.51605e-17 -0.737766 N1 0.651276 0.175561 -0.738253 N2 0.61392 0.165491 -0.771826 + txt003 +STRI + V0 0 1.53704 0.200347 V1 0.412723 1.48296 0.200347 V2 0.402778 1.44722 0.15 + N0 0 0.675056 -0.737766 N1 0.175561 0.651276 -0.738253 N2 0.260275 0.965535 0 + txt003 +STRI + V0 0.402778 1.44722 0.15 V1 0 1.5 0.15 V2 0 1.53704 0.200347 + N0 0.260275 0.965535 0 N1 -0 1 0 N2 0 0.675056 -0.737766 + txt003 +STRI + V0 0.412723 1.48296 0.200347 V1 0.781043 1.32982 0.200347 V2 0.762222 1.29778 0.15 + N0 0.175561 0.651276 -0.738253 N1 0.338069 0.582878 -0.738893 N2 0.501718 0.865031 0 + txt003 +STRI + V0 0.762222 1.29778 0.15 V1 0.402778 1.44722 0.15 V2 0.412723 1.48296 0.200347 + N0 0.501718 0.865031 0 N1 0.260275 0.965535 0 N2 0.175561 0.651276 -0.738253 + txt003 +STRI + V0 0.781043 1.32982 0.200347 V1 1.0913 1.0913 0.200347 V2 1.065 1.065 0.15 + N0 0.338069 0.582878 -0.738893 N1 0.476275 0.476275 -0.739137 N2 0.707107 0.707107 0 + txt003 +STRI + V0 1.065 1.065 0.15 V1 0.762222 1.29778 0.15 V2 0.781043 1.32982 0.200347 + N0 0.707107 0.707107 0 N1 0.501718 0.865031 0 N2 0.338069 0.582878 -0.738893 + txt003 +STRI + V0 1.0913 1.0913 0.200347 V1 1.32982 0.781043 0.200347 V2 1.29778 0.762222 0.15 + N0 0.476275 0.476275 -0.739137 N1 0.582878 0.338069 -0.738893 N2 0.865031 0.501718 0 + txt003 +STRI + V0 1.29778 0.762222 0.15 V1 1.065 1.065 0.15 V2 1.0913 1.0913 0.200347 + N0 0.865031 0.501718 0 N1 0.707107 0.707107 0 N2 0.476275 0.476275 -0.739137 + txt003 +STRI + V0 1.32982 0.781043 0.200347 V1 1.48296 0.412723 0.200347 V2 1.44722 0.402778 0.15 + N0 0.582878 0.338069 -0.738893 N1 0.651276 0.175561 -0.738253 N2 0.965535 0.260275 0 + txt003 +STRI + V0 1.44722 0.402778 0.15 V1 1.29778 0.762222 0.15 V2 1.32982 0.781043 0.200347 + N0 0.965535 0.260275 0 N1 0.865031 0.501718 0 N2 0.582878 0.338069 -0.738893 + txt003 +STRI + V0 1.48296 0.412723 0.200347 V1 1.53704 0 0.200347 V2 1.5 0 0.15 + N0 0.651276 0.175561 -0.738253 N1 0.675056 -9.51605e-17 -0.737766 N2 1 0 0 + txt003 +STRI + V0 1.5 0 0.15 V1 1.44722 0.402778 0.15 V2 1.48296 0.412723 0.200347 + N0 1 0 0 N1 0.965535 0.260275 0 N2 0.651276 0.175561 -0.738253 + txt003 +STRI + V0 -1.6 0 2.025 V1 -1.59259 -0.125 2.04167 V2 -1.92704 -0.125 2.04055 + N0 -0 -0 -1 N1 -0 -0.298275 -0.95448 N2 0.0104256 -0.297446 -0.954682 + txt003 +STRI + V0 -1.92704 -0.125 2.04055 V1 -1.92454 0 2.02396 V2 -1.6 0 2.025 + N0 0.0104256 -0.297446 -0.954682 N1 0.0104645 0 -0.999945 N2 -0 -0 -1 + txt003 +STRI + V0 -1.59259 -0.125 2.04167 V1 -1.57407 -0.2 2.08333 V2 -1.9333 -0.2 2.08202 + N0 -0 -0.298275 -0.95448 N1 -0 -0.707107 -0.707107 N2 0.00846382 -0.706077 -0.708084 + txt003 +STRI + V0 -1.9333 -0.2 2.08202 V1 -1.92704 -0.125 2.04055 V2 -1.59259 -0.125 2.04167 + N0 0.00846382 -0.706077 -0.708084 N1 0.0104256 -0.297446 -0.954682 N2 -0 -0.298275 -0.95448 + txt003 +STRI + V0 -1.57407 -0.2 2.08333 V1 -1.55 -0.225 2.1375 V2 -1.94144 -0.225 2.13594 + N0 -0 -0.707107 -0.707107 N1 0 -1 0 N2 -1.61364e-18 -1 -2.43505e-19 + txt003 +STRI + V0 -1.94144 -0.225 2.13594 V1 -1.9333 -0.2 2.08202 V2 -1.57407 -0.2 2.08333 + N0 -1.61364e-18 -1 -2.43505e-19 N1 0.00846382 -0.706077 -0.708084 N2 -0 -0.707107 -0.707107 + txt003 +STRI + V0 -1.55 -0.225 2.1375 V1 -1.52593 -0.2 2.19167 V2 -1.94957 -0.2 2.18985 + N0 0 -1 0 N1 0 -0.707107 0.707107 N2 -0.00997559 -0.706181 0.707961 + txt003 +STRI + V0 -1.94957 -0.2 2.18985 V1 -1.94144 -0.225 2.13594 V2 -1.55 -0.225 2.1375 + N0 -0.00997559 -0.706181 0.707961 N1 -1.61364e-18 -1 -2.43505e-19 N2 0 -1 0 + txt003 +STRI + V0 -1.52593 -0.2 2.19167 V1 -1.50741 -0.125 2.23333 V2 -1.95583 -0.125 2.23133 + N0 0 -0.707107 0.707107 N1 0 -0.298275 0.95448 N2 -0.0140841 -0.297589 0.95459 + txt003 +STRI + V0 -1.95583 -0.125 2.23133 V1 -1.94957 -0.2 2.18985 V2 -1.52593 -0.2 2.19167 + N0 -0.0140841 -0.297589 0.95459 N1 -0.00997559 -0.706181 0.707961 N2 0 -0.707107 0.707107 + txt003 +STRI + V0 -1.50741 -0.125 2.23333 V1 -1.5 0 2.25 V2 -1.95833 0 2.24792 + N0 0 -0.298275 0.95448 N1 0 1.97373e-15 1 N2 -0.0149983 1.96426e-15 0.999888 + txt003 +STRI + V0 -1.95833 0 2.24792 V1 -1.95583 -0.125 2.23133 V2 -1.50741 -0.125 2.23333 + N0 -0.0149983 1.96426e-15 0.999888 N1 -0.0140841 -0.297589 0.95459 N2 0 -0.298275 0.95448 + txt003 +STRI + V0 -1.92454 0 2.02396 V1 -1.92704 -0.125 2.04055 V2 -2.20645 -0.125 2.03272 + N0 0.0104645 0 -0.999945 N1 0.0104256 -0.297446 -0.954682 N2 0.0510028 -0.296675 -0.953616 + txt003 +STRI + V0 -2.20645 -0.125 2.03272 V1 -2.1963 0 2.01667 V2 -1.92454 0 2.02396 + N0 0.0510028 -0.296675 -0.953616 N1 0.0510696 0 -0.998695 N2 0.0104645 0 -0.999945 + txt003 +STRI + V0 -1.92704 -0.125 2.04055 V1 -1.9333 -0.2 2.08202 V2 -2.23182 -0.2 2.07284 + N0 0.0104256 -0.297446 -0.954682 N1 0.00846382 -0.706077 -0.708084 N2 0.0415994 -0.706072 -0.706918 + txt003 +STRI + V0 -2.23182 -0.2 2.07284 V1 -2.20645 -0.125 2.03272 V2 -1.92704 -0.125 2.04055 + N0 0.0415994 -0.706072 -0.706918 N1 0.0510028 -0.296675 -0.953616 N2 0.0104256 -0.297446 -0.954682 + txt003 +STRI + V0 -1.9333 -0.2 2.08202 V1 -1.94144 -0.225 2.13594 V2 -2.26481 -0.225 2.125 + N0 0.00846382 -0.706077 -0.708084 N1 -1.61364e-18 -1 -2.43505e-19 N2 -7.69071e-18 -1 -4.86421e-18 + txt003 +STRI + V0 -2.26481 -0.225 2.125 V1 -2.23182 -0.2 2.07284 V2 -1.9333 -0.2 2.08202 + N0 -7.69071e-18 -1 -4.86421e-18 N1 0.0415994 -0.706072 -0.706918 N2 0.00846382 -0.706077 -0.708084 + txt003 +STRI + V0 -1.94144 -0.225 2.13594 V1 -1.94957 -0.2 2.18985 V2 -2.29781 -0.2 2.17716 + N0 -1.61364e-18 -1 -2.43505e-19 N1 -0.00997559 -0.706181 0.707961 N2 -0.0493858 -0.708239 0.704243 + txt003 +STRI + V0 -2.29781 -0.2 2.17716 V1 -2.26481 -0.225 2.125 V2 -1.94144 -0.225 2.13594 + N0 -0.0493858 -0.708239 0.704243 N1 -7.69071e-18 -1 -4.86421e-18 N2 -1.61364e-18 -1 -2.43505e-19 + txt003 +STRI + V0 -1.94957 -0.2 2.18985 V1 -1.95583 -0.125 2.23133 V2 -2.32318 -0.125 2.21728 + N0 -0.00997559 -0.706181 0.707961 N1 -0.0140841 -0.297589 0.95459 N2 -0.0701017 -0.299663 0.951466 + txt003 +STRI + V0 -2.32318 -0.125 2.21728 V1 -2.29781 -0.2 2.17716 V2 -1.94957 -0.2 2.18985 + N0 -0.0701017 -0.299663 0.951466 N1 -0.0493858 -0.708239 0.704243 N2 -0.00997559 -0.706181 0.707961 + txt003 +STRI + V0 -1.95583 -0.125 2.23133 V1 -1.95833 0 2.24792 V2 -2.33333 0 2.23333 + N0 -0.0140841 -0.297589 0.95459 N1 -0.0149983 1.96426e-15 0.999888 N2 -0.0747899 1.66682e-15 0.997199 + txt003 +STRI + V0 -2.33333 0 2.23333 V1 -2.32318 -0.125 2.21728 V2 -1.95583 -0.125 2.23133 + N0 -0.0747899 1.66682e-15 0.997199 N1 -0.0701017 -0.299663 0.951466 N2 -0.0140841 -0.297589 0.95459 + txt003 +STRI + V0 -2.1963 0 2.01667 V1 -2.20645 -0.125 2.03272 V2 -2.42824 -0.125 2.01146 + N0 0.0510696 0 -0.998695 N1 0.0510028 -0.296675 -0.953616 N2 0.148104 -0.301279 -0.941964 + txt003 +STRI + V0 -2.42824 -0.125 2.01146 V1 -2.4125 0 1.99687 V2 -2.1963 0 2.01667 + N0 0.148104 -0.301279 -0.941964 N1 0.14834 0 -0.988936 N2 0.0510696 0 -0.998695 + txt003 +STRI + V0 -2.20645 -0.125 2.03272 V1 -2.23182 -0.2 2.07284 V2 -2.46759 -0.2 2.04792 + N0 0.0510028 -0.296675 -0.953616 N1 0.0415994 -0.706072 -0.706918 N2 0.119688 -0.715388 -0.6884 + txt003 +STRI + V0 -2.46759 -0.2 2.04792 V1 -2.42824 -0.125 2.01146 V2 -2.20645 -0.125 2.03272 + N0 0.119688 -0.715388 -0.6884 N1 0.148104 -0.301279 -0.941964 N2 0.0510028 -0.296675 -0.953616 + txt003 +STRI + V0 -2.23182 -0.2 2.07284 V1 -2.26481 -0.225 2.125 V2 -2.51875 -0.225 2.09531 + N0 0.0415994 -0.706072 -0.706918 N1 -7.69071e-18 -1 -4.86421e-18 N2 -1.96915e-17 -1 -2.12543e-17 + txt003 +STRI + V0 -2.51875 -0.225 2.09531 V1 -2.46759 -0.2 2.04792 V2 -2.23182 -0.2 2.07284 + N0 -1.96915e-17 -1 -2.12543e-17 N1 0.119688 -0.715388 -0.6884 N2 0.0415994 -0.706072 -0.706918 + txt003 +STRI + V0 -2.26481 -0.225 2.125 V1 -2.29781 -0.2 2.17716 V2 -2.56991 -0.2 2.14271 + N0 -7.69071e-18 -1 -4.86421e-18 N1 -0.0493858 -0.708239 0.704243 N2 -0.141352 -0.724137 0.675015 + txt003 +STRI + V0 -2.56991 -0.2 2.14271 V1 -2.51875 -0.225 2.09531 V2 -2.26481 -0.225 2.125 + N0 -0.141352 -0.724137 0.675015 N1 -1.96915e-17 -1 -2.12543e-17 N2 -7.69071e-18 -1 -4.86421e-18 + txt003 +STRI + V0 -2.29781 -0.2 2.17716 V1 -2.32318 -0.125 2.21728 V2 -2.60926 -0.125 2.17917 + N0 -0.0493858 -0.708239 0.704243 N1 -0.0701017 -0.299663 0.951466 N2 -0.204668 -0.313917 0.927128 + txt003 +STRI + V0 -2.60926 -0.125 2.17917 V1 -2.56991 -0.2 2.14271 V2 -2.29781 -0.2 2.17716 + N0 -0.204668 -0.313917 0.927128 N1 -0.141352 -0.724137 0.675015 N2 -0.0493858 -0.708239 0.704243 + txt003 +STRI + V0 -2.32318 -0.125 2.21728 V1 -2.33333 0 2.23333 V2 -2.625 0 2.19375 + N0 -0.0701017 -0.299663 0.951466 N1 -0.0747899 1.66682e-15 0.997199 N2 -0.219512 1.81728e-15 0.97561 + txt003 +STRI + V0 -2.625 0 2.19375 V1 -2.60926 -0.125 2.17917 V2 -2.32318 -0.125 2.21728 + N0 -0.219512 1.81728e-15 0.97561 N1 -0.204668 -0.313917 0.927128 N2 -0.0701017 -0.299663 0.951466 + txt003 +STRI + V0 -2.4125 0 1.99687 V1 -2.42824 -0.125 2.01146 V2 -2.58985 -0.125 1.97006 + N0 0.14834 0 -0.988936 N1 0.148104 -0.301279 -0.941964 N2 0.359682 -0.323804 -0.875089 + txt003 +STRI + V0 -2.58985 -0.125 1.97006 V1 -2.57037 0 1.95833 V2 -2.4125 0 1.99687 + N0 0.359682 -0.323804 -0.875089 N1 0.364399 0 -0.931243 N2 0.14834 0 -0.988936 + txt003 +STRI + V0 -2.42824 -0.125 2.01146 V1 -2.46759 -0.2 2.04792 V2 -2.63855 -0.2 1.99938 + N0 0.148104 -0.301279 -0.941964 N1 0.119688 -0.715388 -0.6884 N2 0.275915 -0.747596 -0.604128 + txt003 +STRI + V0 -2.63855 -0.2 1.99938 V1 -2.58985 -0.125 1.97006 V2 -2.42824 -0.125 2.01146 + N0 0.275915 -0.747596 -0.604128 N1 0.359682 -0.323804 -0.875089 N2 0.148104 -0.301279 -0.941964 + txt003 +STRI + V0 -2.46759 -0.2 2.04792 V1 -2.51875 -0.225 2.09531 V2 -2.70185 -0.225 2.0375 + N0 0.119688 -0.715388 -0.6884 N1 -1.96915e-17 -1 -2.12543e-17 N2 -3.40413e-17 -1 -5.65364e-17 + txt003 +STRI + V0 -2.70185 -0.225 2.0375 V1 -2.63855 -0.2 1.99938 V2 -2.46759 -0.2 2.04792 + N0 -3.40413e-17 -1 -5.65364e-17 N1 0.275915 -0.747596 -0.604128 N2 0.119688 -0.715388 -0.6884 + txt003 +STRI + V0 -2.51875 -0.225 2.09531 V1 -2.56991 -0.2 2.14271 V2 -2.76516 -0.2 2.07562 + N0 -1.96915e-17 -1 -2.12543e-17 N1 -0.141352 -0.724137 0.675015 N2 -0.313659 -0.763673 0.564289 + txt003 +STRI + V0 -2.76516 -0.2 2.07562 V1 -2.70185 -0.225 2.0375 V2 -2.51875 -0.225 2.09531 + N0 -0.313659 -0.763673 0.564289 N1 -3.40413e-17 -1 -5.65364e-17 N2 -1.96915e-17 -1 -2.12543e-17 + txt003 +STRI + V0 -2.56991 -0.2 2.14271 V1 -2.60926 -0.125 2.17917 V2 -2.81385 -0.125 2.10494 + N0 -0.141352 -0.724137 0.675015 N1 -0.204668 -0.313917 0.927128 N2 -0.474611 -0.350859 0.807244 + txt003 +STRI + V0 -2.81385 -0.125 2.10494 V1 -2.76516 -0.2 2.07562 V2 -2.56991 -0.2 2.14271 + N0 -0.474611 -0.350859 0.807244 N1 -0.313659 -0.763673 0.564289 N2 -0.141352 -0.724137 0.675015 + txt003 +STRI + V0 -2.60926 -0.125 2.17917 V1 -2.625 0 2.19375 V2 -2.83333 0 2.11667 + N0 -0.204668 -0.313917 0.927128 N1 -0.219512 1.81728e-15 0.97561 N2 -0.514496 1.6713e-15 0.857493 + txt003 +STRI + V0 -2.83333 0 2.11667 V1 -2.81385 -0.125 2.10494 V2 -2.60926 -0.125 2.17917 + N0 -0.514496 1.6713e-15 0.857493 N1 -0.474611 -0.350859 0.807244 N2 -0.204668 -0.313917 0.927128 + txt003 +STRI + V0 -2.57037 0 1.95833 V1 -2.58985 -0.125 1.97006 V2 -2.6887 -0.125 1.90181 + N0 0.364399 0 -0.931243 N1 0.359682 -0.323804 -0.875089 N2 0.727532 -0.37029 -0.577566 + txt003 +STRI + V0 -2.6887 -0.125 1.90181 V1 -2.66713 0 1.89479 V2 -2.57037 0 1.95833 + N0 0.727532 -0.37029 -0.577566 N1 0.767382 0 -0.64119 N2 0.364399 0 -0.931243 + txt003 +STRI + V0 -2.58985 -0.125 1.97006 V1 -2.63855 -0.2 1.99938 V2 -2.74263 -0.2 1.91937 + N0 0.359682 -0.323804 -0.875089 N1 0.275915 -0.747596 -0.604128 N2 0.497152 -0.792374 -0.35353 + txt003 +STRI + V0 -2.74263 -0.2 1.91937 V1 -2.6887 -0.125 1.90181 V2 -2.58985 -0.125 1.97006 + N0 0.497152 -0.792374 -0.35353 N1 0.727532 -0.37029 -0.577566 N2 0.359682 -0.323804 -0.875089 + txt003 +STRI + V0 -2.63855 -0.2 1.99938 V1 -2.70185 -0.225 2.0375 V2 -2.81273 -0.225 1.94219 + N0 0.275915 -0.747596 -0.604128 N1 -3.40413e-17 -1 -5.65364e-17 N2 -3.3285e-17 -1 -1.02253e-16 + txt003 +STRI + V0 -2.81273 -0.225 1.94219 V1 -2.74263 -0.2 1.91937 V2 -2.63855 -0.2 1.99938 + N0 -3.3285e-17 -1 -1.02253e-16 N1 0.497152 -0.792374 -0.35353 N2 0.275915 -0.747596 -0.604128 + txt003 +STRI + V0 -2.70185 -0.225 2.0375 V1 -2.76516 -0.2 2.07562 V2 -2.88284 -0.2 1.96501 + N0 -3.40413e-17 -1 -5.65364e-17 N1 -0.313659 -0.763673 0.564289 N2 -0.519903 -0.799556 0.300684 + txt003 +STRI + V0 -2.88284 -0.2 1.96501 V1 -2.81273 -0.225 1.94219 V2 -2.70185 -0.225 2.0375 + N0 -0.519903 -0.799556 0.300684 N1 -3.3285e-17 -1 -1.02253e-16 N2 -3.40413e-17 -1 -5.65364e-17 + txt003 +STRI + V0 -2.76516 -0.2 2.07562 V1 -2.81385 -0.125 2.10494 V2 -2.93676 -0.125 1.98256 + N0 -0.313659 -0.763673 0.564289 N1 -0.474611 -0.350859 0.807244 N2 -0.810111 -0.385772 0.441476 + txt003 +STRI + V0 -2.93676 -0.125 1.98256 V1 -2.88284 -0.2 1.96501 V2 -2.76516 -0.2 2.07562 + N0 -0.810111 -0.385772 0.441476 N1 -0.519903 -0.799556 0.300684 N2 -0.313659 -0.763673 0.564289 + txt003 +STRI + V0 -2.81385 -0.125 2.10494 V1 -2.83333 0 2.11667 V2 -2.95833 0 1.98958 + N0 -0.474611 -0.350859 0.807244 N1 -0.514496 1.6713e-15 0.857493 N2 -0.882353 9.28814e-16 0.470588 + txt003 +STRI + V0 -2.95833 0 1.98958 V1 -2.93676 -0.125 1.98256 V2 -2.81385 -0.125 2.10494 + N0 -0.882353 9.28814e-16 0.470588 N1 -0.810111 -0.385772 0.441476 N2 -0.474611 -0.350859 0.807244 + txt003 +STRI + V0 -2.66713 0 1.89479 V1 -2.6887 -0.125 1.90181 V2 -2.72222 -0.125 1.8 + N0 0.767382 0 -0.64119 N1 0.727532 -0.37029 -0.577566 N2 0.923077 -0.384615 2.05733e-15 + txt003 +STRI + V0 -2.72222 -0.125 1.8 V1 -2.7 0 1.8 V2 -2.66713 0 1.89479 + N0 0.923077 -0.384615 2.05733e-15 N1 1 0 2.63164e-15 N2 0.767382 0 -0.64119 + txt003 +STRI + V0 -2.6887 -0.125 1.90181 V1 -2.74263 -0.2 1.91937 V2 -2.77778 -0.2 1.8 + N0 0.727532 -0.37029 -0.577566 N1 0.497152 -0.792374 -0.35353 N2 0.6 -0.8 8.24322e-16 + txt003 +STRI + V0 -2.77778 -0.2 1.8 V1 -2.72222 -0.125 1.8 V2 -2.6887 -0.125 1.90181 + N0 0.6 -0.8 8.24322e-16 N1 0.923077 -0.384615 2.05733e-15 N2 0.727532 -0.37029 -0.577566 + txt003 +STRI + V0 -2.74263 -0.2 1.91937 V1 -2.81273 -0.225 1.94219 V2 -2.85 -0.225 1.8 + N0 0.497152 -0.792374 -0.35353 N1 -3.3285e-17 -1 -1.02253e-16 N2 -1.21738e-31 -1 -1.23358e-16 + txt003 +STRI + V0 -2.85 -0.225 1.8 V1 -2.77778 -0.2 1.8 V2 -2.74263 -0.2 1.91937 + N0 -1.21738e-31 -1 -1.23358e-16 N1 0.6 -0.8 8.24322e-16 N2 0.497152 -0.792374 -0.35353 + txt003 +STRI + V0 -2.81273 -0.225 1.94219 V1 -2.88284 -0.2 1.96501 V2 -2.92222 -0.2 1.8 + N0 -3.3285e-17 -1 -1.02253e-16 N1 -0.519903 -0.799556 0.300684 N2 -0.6 -0.8 -3.10757e-16 + txt003 +STRI + V0 -2.92222 -0.2 1.8 V1 -2.85 -0.225 1.8 V2 -2.81273 -0.225 1.94219 + N0 -0.6 -0.8 -3.10757e-16 N1 -1.21738e-31 -1 -1.23358e-16 N2 -3.3285e-17 -1 -1.02253e-16 + txt003 +STRI + V0 -2.88284 -0.2 1.96501 V1 -2.93676 -0.125 1.98256 V2 -2.97778 -0.125 1.8 + N0 -0.519903 -0.799556 0.300684 N1 -0.810111 -0.385772 0.441476 N2 -0.923077 -0.384615 -1.1396e-16 + txt003 +STRI + V0 -2.97778 -0.125 1.8 V1 -2.92222 -0.2 1.8 V2 -2.88284 -0.2 1.96501 + N0 -0.923077 -0.384615 -1.1396e-16 N1 -0.6 -0.8 -3.10757e-16 N2 -0.519903 -0.799556 0.300684 + txt003 +STRI + V0 -2.93676 -0.125 1.98256 V1 -2.95833 0 1.98958 V2 -3 0 1.8 + N0 -0.810111 -0.385772 0.441476 N1 -0.882353 9.28814e-16 0.470588 N2 -1 -4.93432e-16 -0 + txt003 +STRI + V0 -3 0 1.8 V1 -2.97778 -0.125 1.8 V2 -2.93676 -0.125 1.98256 + N0 -1 -4.93432e-16 -0 N1 -0.923077 -0.384615 -1.1396e-16 N2 -0.810111 -0.385772 0.441476 + txt003 +STRI + V0 -1.5 0 2.25 V1 -1.50741 0.125 2.23333 V2 -1.95583 0.125 2.23133 + N0 0 -0 1 N1 0 0.298275 0.95448 N2 -0.0140841 0.297589 0.95459 + txt003 +STRI + V0 -1.95583 0.125 2.23133 V1 -1.95833 0 2.24792 V2 -1.5 0 2.25 + N0 -0.0140841 0.297589 0.95459 N1 -0.0149983 0 0.999888 N2 0 -0 1 + txt003 +STRI + V0 -1.50741 0.125 2.23333 V1 -1.52593 0.2 2.19167 V2 -1.94957 0.2 2.18985 + N0 0 0.298275 0.95448 N1 0 0.707107 0.707107 N2 -0.00997559 0.706181 0.707961 + txt003 +STRI + V0 -1.94957 0.2 2.18985 V1 -1.95583 0.125 2.23133 V2 -1.50741 0.125 2.23333 + N0 -0.00997559 0.706181 0.707961 N1 -0.0140841 0.297589 0.95459 N2 0 0.298275 0.95448 + txt003 +STRI + V0 -1.52593 0.2 2.19167 V1 -1.55 0.225 2.1375 V2 -1.94144 0.225 2.13594 + N0 0 0.707107 0.707107 N1 0 1 0 N2 -1.61364e-18 1 -2.43505e-19 + txt003 +STRI + V0 -1.94144 0.225 2.13594 V1 -1.94957 0.2 2.18985 V2 -1.52593 0.2 2.19167 + N0 -1.61364e-18 1 -2.43505e-19 N1 -0.00997559 0.706181 0.707961 N2 0 0.707107 0.707107 + txt003 +STRI + V0 -1.55 0.225 2.1375 V1 -1.57407 0.2 2.08333 V2 -1.9333 0.2 2.08202 + N0 0 1 0 N1 0 0.707107 -0.707107 N2 0.00846382 0.706077 -0.708084 + txt003 +STRI + V0 -1.9333 0.2 2.08202 V1 -1.94144 0.225 2.13594 V2 -1.55 0.225 2.1375 + N0 0.00846382 0.706077 -0.708084 N1 -1.61364e-18 1 -2.43505e-19 N2 0 1 0 + txt003 +STRI + V0 -1.57407 0.2 2.08333 V1 -1.59259 0.125 2.04167 V2 -1.92704 0.125 2.04055 + N0 0 0.707107 -0.707107 N1 0 0.298275 -0.95448 N2 0.0104256 0.297446 -0.954682 + txt003 +STRI + V0 -1.92704 0.125 2.04055 V1 -1.9333 0.2 2.08202 V2 -1.57407 0.2 2.08333 + N0 0.0104256 0.297446 -0.954682 N1 0.00846382 0.706077 -0.708084 N2 0 0.707107 -0.707107 + txt003 +STRI + V0 -1.59259 0.125 2.04167 V1 -1.6 0 2.025 V2 -1.92454 0 2.02396 + N0 0 0.298275 -0.95448 N1 -0 -4.93432e-16 -1 N2 0.0104645 -4.86951e-16 -0.999945 + txt003 +STRI + V0 -1.92454 0 2.02396 V1 -1.92704 0.125 2.04055 V2 -1.59259 0.125 2.04167 + N0 0.0104645 -4.86951e-16 -0.999945 N1 0.0104256 0.297446 -0.954682 N2 0 0.298275 -0.95448 + txt003 +STRI + V0 -1.95833 0 2.24792 V1 -1.95583 0.125 2.23133 V2 -2.32318 0.125 2.21728 + N0 -0.0149983 0 0.999888 N1 -0.0140841 0.297589 0.95459 N2 -0.0701017 0.299663 0.951466 + txt003 +STRI + V0 -2.32318 0.125 2.21728 V1 -2.33333 0 2.23333 V2 -1.95833 0 2.24792 + N0 -0.0701017 0.299663 0.951466 N1 -0.0747899 0 0.997199 N2 -0.0149983 0 0.999888 + txt003 +STRI + V0 -1.95583 0.125 2.23133 V1 -1.94957 0.2 2.18985 V2 -2.29781 0.2 2.17716 + N0 -0.0140841 0.297589 0.95459 N1 -0.00997559 0.706181 0.707961 N2 -0.0493858 0.708239 0.704243 + txt003 +STRI + V0 -2.29781 0.2 2.17716 V1 -2.32318 0.125 2.21728 V2 -1.95583 0.125 2.23133 + N0 -0.0493858 0.708239 0.704243 N1 -0.0701017 0.299663 0.951466 N2 -0.0140841 0.297589 0.95459 + txt003 +STRI + V0 -1.94957 0.2 2.18985 V1 -1.94144 0.225 2.13594 V2 -2.26481 0.225 2.125 + N0 -0.00997559 0.706181 0.707961 N1 -1.61364e-18 1 -2.43505e-19 N2 -7.69071e-18 1 -4.86421e-18 + txt003 +STRI + V0 -2.26481 0.225 2.125 V1 -2.29781 0.2 2.17716 V2 -1.94957 0.2 2.18985 + N0 -7.69071e-18 1 -4.86421e-18 N1 -0.0493858 0.708239 0.704243 N2 -0.00997559 0.706181 0.707961 + txt003 +STRI + V0 -1.94144 0.225 2.13594 V1 -1.9333 0.2 2.08202 V2 -2.23182 0.2 2.07284 + N0 -1.61364e-18 1 -2.43505e-19 N1 0.00846382 0.706077 -0.708084 N2 0.0415994 0.706072 -0.706918 + txt003 +STRI + V0 -2.23182 0.2 2.07284 V1 -2.26481 0.225 2.125 V2 -1.94144 0.225 2.13594 + N0 0.0415994 0.706072 -0.706918 N1 -7.69071e-18 1 -4.86421e-18 N2 -1.61364e-18 1 -2.43505e-19 + txt003 +STRI + V0 -1.9333 0.2 2.08202 V1 -1.92704 0.125 2.04055 V2 -2.20645 0.125 2.03272 + N0 0.00846382 0.706077 -0.708084 N1 0.0104256 0.297446 -0.954682 N2 0.0510028 0.296675 -0.953616 + txt003 +STRI + V0 -2.20645 0.125 2.03272 V1 -2.23182 0.2 2.07284 V2 -1.9333 0.2 2.08202 + N0 0.0510028 0.296675 -0.953616 N1 0.0415994 0.706072 -0.706918 N2 0.00846382 0.706077 -0.708084 + txt003 +STRI + V0 -1.92704 0.125 2.04055 V1 -1.92454 0 2.02396 V2 -2.1963 0 2.01667 + N0 0.0104256 0.297446 -0.954682 N1 0.0104645 -4.86951e-16 -0.999945 N2 0.0510696 -2.08595e-16 -0.998695 + txt003 +STRI + V0 -2.1963 0 2.01667 V1 -2.20645 0.125 2.03272 V2 -1.92704 0.125 2.04055 + N0 0.0510696 -2.08595e-16 -0.998695 N1 0.0510028 0.296675 -0.953616 N2 0.0104256 0.297446 -0.954682 + txt003 +STRI + V0 -2.33333 0 2.23333 V1 -2.32318 0.125 2.21728 V2 -2.60926 0.125 2.17917 + N0 -0.0747899 0 0.997199 N1 -0.0701017 0.299663 0.951466 N2 -0.204668 0.313917 0.927128 + txt003 +STRI + V0 -2.60926 0.125 2.17917 V1 -2.625 0 2.19375 V2 -2.33333 0 2.23333 + N0 -0.204668 0.313917 0.927128 N1 -0.219512 0 0.97561 N2 -0.0747899 0 0.997199 + txt003 +STRI + V0 -2.32318 0.125 2.21728 V1 -2.29781 0.2 2.17716 V2 -2.56991 0.2 2.14271 + N0 -0.0701017 0.299663 0.951466 N1 -0.0493858 0.708239 0.704243 N2 -0.141352 0.724137 0.675015 + txt003 +STRI + V0 -2.56991 0.2 2.14271 V1 -2.60926 0.125 2.17917 V2 -2.32318 0.125 2.21728 + N0 -0.141352 0.724137 0.675015 N1 -0.204668 0.313917 0.927128 N2 -0.0701017 0.299663 0.951466 + txt003 +STRI + V0 -2.29781 0.2 2.17716 V1 -2.26481 0.225 2.125 V2 -2.51875 0.225 2.09531 + N0 -0.0493858 0.708239 0.704243 N1 -7.69071e-18 1 -4.86421e-18 N2 -1.96915e-17 1 -2.12543e-17 + txt003 +STRI + V0 -2.51875 0.225 2.09531 V1 -2.56991 0.2 2.14271 V2 -2.29781 0.2 2.17716 + N0 -1.96915e-17 1 -2.12543e-17 N1 -0.141352 0.724137 0.675015 N2 -0.0493858 0.708239 0.704243 + txt003 +STRI + V0 -2.26481 0.225 2.125 V1 -2.23182 0.2 2.07284 V2 -2.46759 0.2 2.04792 + N0 -7.69071e-18 1 -4.86421e-18 N1 0.0415994 0.706072 -0.706918 N2 0.119688 0.715388 -0.6884 + txt003 +STRI + V0 -2.46759 0.2 2.04792 V1 -2.51875 0.225 2.09531 V2 -2.26481 0.225 2.125 + N0 0.119688 0.715388 -0.6884 N1 -1.96915e-17 1 -2.12543e-17 N2 -7.69071e-18 1 -4.86421e-18 + txt003 +STRI + V0 -2.23182 0.2 2.07284 V1 -2.20645 0.125 2.03272 V2 -2.42824 0.125 2.01146 + N0 0.0415994 0.706072 -0.706918 N1 0.0510028 0.296675 -0.953616 N2 0.148104 0.301279 -0.941964 + txt003 +STRI + V0 -2.42824 0.125 2.01146 V1 -2.46759 0.2 2.04792 V2 -2.23182 0.2 2.07284 + N0 0.148104 0.301279 -0.941964 N1 0.119688 0.715388 -0.6884 N2 0.0415994 0.706072 -0.706918 + txt003 +STRI + V0 -2.20645 0.125 2.03272 V1 -2.1963 0 2.01667 V2 -2.4125 0 1.99687 + N0 0.0510028 0.296675 -0.953616 N1 0.0510696 -2.08595e-16 -0.998695 N2 0.14834 -4.14777e-16 -0.988936 + txt003 +STRI + V0 -2.4125 0 1.99687 V1 -2.42824 0.125 2.01146 V2 -2.20645 0.125 2.03272 + N0 0.14834 -4.14777e-16 -0.988936 N1 0.148104 0.301279 -0.941964 N2 0.0510028 0.296675 -0.953616 + txt003 +STRI + V0 -2.625 0 2.19375 V1 -2.60926 0.125 2.17917 V2 -2.81385 0.125 2.10494 + N0 -0.219512 0 0.97561 N1 -0.204668 0.313917 0.927128 N2 -0.474611 0.350859 0.807244 + txt003 +STRI + V0 -2.81385 0.125 2.10494 V1 -2.83333 0 2.11667 V2 -2.625 0 2.19375 + N0 -0.474611 0.350859 0.807244 N1 -0.514496 0 0.857493 N2 -0.219512 0 0.97561 + txt003 +STRI + V0 -2.60926 0.125 2.17917 V1 -2.56991 0.2 2.14271 V2 -2.76516 0.2 2.07562 + N0 -0.204668 0.313917 0.927128 N1 -0.141352 0.724137 0.675015 N2 -0.313659 0.763673 0.564289 + txt003 +STRI + V0 -2.76516 0.2 2.07562 V1 -2.81385 0.125 2.10494 V2 -2.60926 0.125 2.17917 + N0 -0.313659 0.763673 0.564289 N1 -0.474611 0.350859 0.807244 N2 -0.204668 0.313917 0.927128 + txt003 +STRI + V0 -2.56991 0.2 2.14271 V1 -2.51875 0.225 2.09531 V2 -2.70185 0.225 2.0375 + N0 -0.141352 0.724137 0.675015 N1 -1.96915e-17 1 -2.12543e-17 N2 -3.40413e-17 1 -5.65364e-17 + txt003 +STRI + V0 -2.70185 0.225 2.0375 V1 -2.76516 0.2 2.07562 V2 -2.56991 0.2 2.14271 + N0 -3.40413e-17 1 -5.65364e-17 N1 -0.313659 0.763673 0.564289 N2 -0.141352 0.724137 0.675015 + txt003 +STRI + V0 -2.51875 0.225 2.09531 V1 -2.46759 0.2 2.04792 V2 -2.63855 0.2 1.99938 + N0 -1.96915e-17 1 -2.12543e-17 N1 0.119688 0.715388 -0.6884 N2 0.275915 0.747596 -0.604128 + txt003 +STRI + V0 -2.63855 0.2 1.99938 V1 -2.70185 0.225 2.0375 V2 -2.51875 0.225 2.09531 + N0 0.275915 0.747596 -0.604128 N1 -3.40413e-17 1 -5.65364e-17 N2 -1.96915e-17 1 -2.12543e-17 + txt003 +STRI + V0 -2.46759 0.2 2.04792 V1 -2.42824 0.125 2.01146 V2 -2.58985 0.125 1.97006 + N0 0.119688 0.715388 -0.6884 N1 0.148104 0.301279 -0.941964 N2 0.359682 0.323804 -0.875089 + txt003 +STRI + V0 -2.58985 0.125 1.97006 V1 -2.63855 0.2 1.99938 V2 -2.46759 0.2 2.04792 + N0 0.359682 0.323804 -0.875089 N1 0.275915 0.747596 -0.604128 N2 0.119688 0.715388 -0.6884 + txt003 +STRI + V0 -2.42824 0.125 2.01146 V1 -2.4125 0 1.99687 V2 -2.57037 0 1.95833 + N0 0.148104 0.301279 -0.941964 N1 0.14834 -4.14777e-16 -0.988936 N2 0.364399 -4.84479e-16 -0.931243 + txt003 +STRI + V0 -2.57037 0 1.95833 V1 -2.58985 0.125 1.97006 V2 -2.42824 0.125 2.01146 + N0 0.364399 -4.84479e-16 -0.931243 N1 0.359682 0.323804 -0.875089 N2 0.148104 0.301279 -0.941964 + txt003 +STRI + V0 -2.83333 0 2.11667 V1 -2.81385 0.125 2.10494 V2 -2.93676 0.125 1.98256 + N0 -0.514496 0 0.857493 N1 -0.474611 0.350859 0.807244 N2 -0.810111 0.385772 0.441476 + txt003 +STRI + V0 -2.93676 0.125 1.98256 V1 -2.95833 0 1.98958 V2 -2.83333 0 2.11667 + N0 -0.810111 0.385772 0.441476 N1 -0.882353 0 0.470588 N2 -0.514496 0 0.857493 + txt003 +STRI + V0 -2.81385 0.125 2.10494 V1 -2.76516 0.2 2.07562 V2 -2.88284 0.2 1.96501 + N0 -0.474611 0.350859 0.807244 N1 -0.313659 0.763673 0.564289 N2 -0.519903 0.799556 0.300684 + txt003 +STRI + V0 -2.88284 0.2 1.96501 V1 -2.93676 0.125 1.98256 V2 -2.81385 0.125 2.10494 + N0 -0.519903 0.799556 0.300684 N1 -0.810111 0.385772 0.441476 N2 -0.474611 0.350859 0.807244 + txt003 +STRI + V0 -2.76516 0.2 2.07562 V1 -2.70185 0.225 2.0375 V2 -2.81273 0.225 1.94219 + N0 -0.313659 0.763673 0.564289 N1 -3.40413e-17 1 -5.65364e-17 N2 -3.3285e-17 1 -1.02253e-16 + txt003 +STRI + V0 -2.81273 0.225 1.94219 V1 -2.88284 0.2 1.96501 V2 -2.76516 0.2 2.07562 + N0 -3.3285e-17 1 -1.02253e-16 N1 -0.519903 0.799556 0.300684 N2 -0.313659 0.763673 0.564289 + txt003 +STRI + V0 -2.70185 0.225 2.0375 V1 -2.63855 0.2 1.99938 V2 -2.74263 0.2 1.91937 + N0 -3.40413e-17 1 -5.65364e-17 N1 0.275915 0.747596 -0.604128 N2 0.497152 0.792374 -0.35353 + txt003 +STRI + V0 -2.74263 0.2 1.91937 V1 -2.81273 0.225 1.94219 V2 -2.70185 0.225 2.0375 + N0 0.497152 0.792374 -0.35353 N1 -3.3285e-17 1 -1.02253e-16 N2 -3.40413e-17 1 -5.65364e-17 + txt003 +STRI + V0 -2.63855 0.2 1.99938 V1 -2.58985 0.125 1.97006 V2 -2.6887 0.125 1.90181 + N0 0.275915 0.747596 -0.604128 N1 0.359682 0.323804 -0.875089 N2 0.727532 0.37029 -0.577566 + txt003 +STRI + V0 -2.6887 0.125 1.90181 V1 -2.74263 0.2 1.91937 V2 -2.63855 0.2 1.99938 + N0 0.727532 0.37029 -0.577566 N1 0.497152 0.792374 -0.35353 N2 0.275915 0.747596 -0.604128 + txt003 +STRI + V0 -2.58985 0.125 1.97006 V1 -2.57037 0 1.95833 V2 -2.66713 0 1.89479 + N0 0.359682 0.323804 -0.875089 N1 0.364399 -4.84479e-16 -0.931243 N2 0.767382 -3.16384e-16 -0.64119 + txt003 +STRI + V0 -2.66713 0 1.89479 V1 -2.6887 0.125 1.90181 V2 -2.58985 0.125 1.97006 + N0 0.767382 -3.16384e-16 -0.64119 N1 0.727532 0.37029 -0.577566 N2 0.359682 0.323804 -0.875089 + txt003 +STRI + V0 -2.95833 0 1.98958 V1 -2.93676 0.125 1.98256 V2 -2.97778 0.125 1.8 + N0 -0.882353 0 0.470588 N1 -0.810111 0.385772 0.441476 N2 -0.923077 0.384615 -1.1396e-16 + txt003 +STRI + V0 -2.97778 0.125 1.8 V1 -3 0 1.8 V2 -2.95833 0 1.98958 + N0 -0.923077 0.384615 -1.1396e-16 N1 -1 0 0 N2 -0.882353 0 0.470588 + txt003 +STRI + V0 -2.93676 0.125 1.98256 V1 -2.88284 0.2 1.96501 V2 -2.92222 0.2 1.8 + N0 -0.810111 0.385772 0.441476 N1 -0.519903 0.799556 0.300684 N2 -0.6 0.8 -3.10757e-16 + txt003 +STRI + V0 -2.92222 0.2 1.8 V1 -2.97778 0.125 1.8 V2 -2.93676 0.125 1.98256 + N0 -0.6 0.8 -3.10757e-16 N1 -0.923077 0.384615 -1.1396e-16 N2 -0.810111 0.385772 0.441476 + txt003 +STRI + V0 -2.88284 0.2 1.96501 V1 -2.81273 0.225 1.94219 V2 -2.85 0.225 1.8 + N0 -0.519903 0.799556 0.300684 N1 -3.3285e-17 1 -1.02253e-16 N2 -2.13041e-31 1 -1.23358e-16 + txt003 +STRI + V0 -2.85 0.225 1.8 V1 -2.92222 0.2 1.8 V2 -2.88284 0.2 1.96501 + N0 -2.13041e-31 1 -1.23358e-16 N1 -0.6 0.8 -3.10757e-16 N2 -0.519903 0.799556 0.300684 + txt003 +STRI + V0 -2.81273 0.225 1.94219 V1 -2.74263 0.2 1.91937 V2 -2.77778 0.2 1.8 + N0 -3.3285e-17 1 -1.02253e-16 N1 0.497152 0.792374 -0.35353 N2 0.6 0.8 8.24322e-16 + txt003 +STRI + V0 -2.77778 0.2 1.8 V1 -2.85 0.225 1.8 V2 -2.81273 0.225 1.94219 + N0 0.6 0.8 8.24322e-16 N1 -2.13041e-31 1 -1.23358e-16 N2 -3.3285e-17 1 -1.02253e-16 + txt003 +STRI + V0 -2.74263 0.2 1.91937 V1 -2.6887 0.125 1.90181 V2 -2.72222 0.125 1.8 + N0 0.497152 0.792374 -0.35353 N1 0.727532 0.37029 -0.577566 N2 0.923077 0.384615 2.05733e-15 + txt003 +STRI + V0 -2.72222 0.125 1.8 V1 -2.77778 0.2 1.8 V2 -2.74263 0.2 1.91937 + N0 0.923077 0.384615 2.05733e-15 N1 0.6 0.8 8.24322e-16 N2 0.497152 0.792374 -0.35353 + txt003 +STRI + V0 -2.6887 0.125 1.90181 V1 -2.66713 0 1.89479 V2 -2.7 0 1.8 + N0 0.727532 0.37029 -0.577566 N1 0.767382 -3.16384e-16 -0.64119 N2 1 4.93432e-16 2.63164e-15 + txt003 +STRI + V0 -2.7 0 1.8 V1 -2.72222 0.125 1.8 V2 -2.6887 0.125 1.90181 + N0 1 4.93432e-16 2.63164e-15 N1 0.923077 0.384615 2.05733e-15 N2 0.727532 0.37029 -0.577566 + txt003 +STRI + V0 -2.7 0 1.8 V1 -2.72222 -0.125 1.8 V2 -2.70418 -0.125 1.66398 + N0 1 0 0 N1 0.923077 -0.384615 0 N2 0.895972 -0.38623 0.219226 + txt003 +STRI + V0 -2.70418 -0.125 1.66398 V1 -2.68287 0 1.67083 V2 -2.7 0 1.8 + N0 0.895972 -0.38623 0.219226 N1 0.972045 0 0.234794 N2 1 0 0 + txt003 +STRI + V0 -2.72222 -0.125 1.8 V1 -2.77778 -0.2 1.8 V2 -2.75747 -0.2 1.64684 + N0 0.923077 -0.384615 0 N1 0.6 -0.8 0 N2 0.57987 -0.801541 0.145888 + txt003 +STRI + V0 -2.75747 -0.2 1.64684 V1 -2.70418 -0.125 1.66398 V2 -2.72222 -0.125 1.8 + N0 0.57987 -0.801541 0.145888 N1 0.895972 -0.38623 0.219226 N2 0.923077 -0.384615 0 + txt003 +STRI + V0 -2.77778 -0.2 1.8 V1 -2.85 -0.225 1.8 V2 -2.82674 -0.225 1.62457 + N0 0.6 -0.8 0 N1 -0 -1 -0 N2 9.48478e-19 -1 -2.94924e-18 + txt003 +STRI + V0 -2.82674 -0.225 1.62457 V1 -2.75747 -0.2 1.64684 V2 -2.77778 -0.2 1.8 + N0 9.48478e-19 -1 -2.94924e-18 N1 0.57987 -0.801541 0.145888 N2 0.6 -0.8 0 + txt003 +STRI + V0 -2.85 -0.225 1.8 V1 -2.92222 -0.2 1.8 V2 -2.896 -0.2 1.60229 + N0 -0 -1 -0 N1 -0.6 -0.8 -0 N2 -0.577707 -0.801752 -0.153129 + txt003 +STRI + V0 -2.896 -0.2 1.60229 V1 -2.82674 -0.225 1.62457 V2 -2.85 -0.225 1.8 + N0 -0.577707 -0.801752 -0.153129 N1 9.48478e-19 -1 -2.94924e-18 N2 -0 -1 -0 + txt003 +STRI + V0 -2.92222 -0.2 1.8 V1 -2.97778 -0.125 1.8 V2 -2.94929 -0.125 1.58515 + N0 -0.6 -0.8 -0 N1 -0.923077 -0.384615 -0 N2 -0.890548 -0.386679 -0.23959 + txt003 +STRI + V0 -2.94929 -0.125 1.58515 V1 -2.896 -0.2 1.60229 V2 -2.92222 -0.2 1.8 + N0 -0.890548 -0.386679 -0.23959 N1 -0.577707 -0.801752 -0.153129 N2 -0.6 -0.8 -0 + txt003 +STRI + V0 -2.97778 -0.125 1.8 V1 -3 0 1.8 V2 -2.9706 0 1.5783 + N0 -0.923077 -0.384615 -0 N1 -1 -9.86865e-16 -0 N2 -0.965311 -7.59377e-16 -0.261102 + txt003 +STRI + V0 -2.9706 0 1.5783 V1 -2.94929 -0.125 1.58515 V2 -2.97778 -0.125 1.8 + N0 -0.965311 -7.59377e-16 -0.261102 N1 -0.890548 -0.386679 -0.23959 N2 -0.923077 -0.384615 -0 + txt003 +STRI + V0 -2.68287 0 1.67083 V1 -2.70418 -0.125 1.66398 V2 -2.64829 -0.125 1.50535 + N0 0.972045 0 0.234794 N1 0.895972 -0.38623 0.219226 N2 0.842942 -0.376421 0.38439 + txt003 +STRI + V0 -2.64829 -0.125 1.50535 V1 -2.62963 0 1.51667 V2 -2.68287 0 1.67083 + N0 0.842942 -0.376421 0.38439 N1 0.913812 0 0.406138 N2 0.972045 0 0.234794 + txt003 +STRI + V0 -2.70418 -0.125 1.66398 V1 -2.75747 -0.2 1.64684 V2 -2.69492 -0.2 1.47706 + N0 0.895972 -0.38623 0.219226 N1 0.57987 -0.801541 0.145888 N2 0.548194 -0.793356 0.264707 + txt003 +STRI + V0 -2.69492 -0.2 1.47706 V1 -2.64829 -0.125 1.50535 V2 -2.70418 -0.125 1.66398 + N0 0.548194 -0.793356 0.264707 N1 0.842942 -0.376421 0.38439 N2 0.895972 -0.38623 0.219226 + txt003 +STRI + V0 -2.75747 -0.2 1.64684 V1 -2.82674 -0.225 1.62457 V2 -2.75556 -0.225 1.44028 + N0 0.57987 -0.801541 0.145888 N1 9.48478e-19 -1 -2.94924e-18 N2 5.73642e-18 -1 -9.4564e-18 + txt003 +STRI + V0 -2.75556 -0.225 1.44028 V1 -2.69492 -0.2 1.47706 V2 -2.75747 -0.2 1.64684 + N0 5.73642e-18 -1 -9.4564e-18 N1 0.548194 -0.793356 0.264707 N2 0.57987 -0.801541 0.145888 + txt003 +STRI + V0 -2.82674 -0.225 1.62457 V1 -2.896 -0.2 1.60229 V2 -2.81619 -0.2 1.4035 + N0 9.48478e-19 -1 -2.94924e-18 N1 -0.577707 -0.801752 -0.153129 N2 -0.534196 -0.794341 -0.289235 + txt003 +STRI + V0 -2.81619 -0.2 1.4035 V1 -2.75556 -0.225 1.44028 V2 -2.82674 -0.225 1.62457 + N0 -0.534196 -0.794341 -0.289235 N1 5.73642e-18 -1 -9.4564e-18 N2 9.48478e-19 -1 -2.94924e-18 + txt003 +STRI + V0 -2.896 -0.2 1.60229 V1 -2.94929 -0.125 1.58515 V2 -2.86283 -0.125 1.37521 + N0 -0.577707 -0.801752 -0.153129 N1 -0.890548 -0.386679 -0.23959 N2 -0.807437 -0.378466 -0.452558 + txt003 +STRI + V0 -2.86283 -0.125 1.37521 V1 -2.81619 -0.2 1.4035 V2 -2.896 -0.2 1.60229 + N0 -0.807437 -0.378466 -0.452558 N1 -0.534196 -0.794341 -0.289235 N2 -0.577707 -0.801752 -0.153129 + txt003 +STRI + V0 -2.94929 -0.125 1.58515 V1 -2.9706 0 1.5783 V2 -2.88148 0 1.36389 + N0 -0.890548 -0.386679 -0.23959 N1 -0.965311 -7.59377e-16 -0.261102 N2 -0.869653 -7.07402e-16 -0.493664 + txt003 +STRI + V0 -2.88148 0 1.36389 V1 -2.86283 -0.125 1.37521 V2 -2.94929 -0.125 1.58515 + N0 -0.869653 -7.07402e-16 -0.493664 N1 -0.807437 -0.378466 -0.452558 N2 -0.890548 -0.386679 -0.23959 + txt003 +STRI + V0 -2.62963 0 1.51667 V1 -2.64829 -0.125 1.50535 V2 -2.55185 -0.125 1.33576 + N0 0.913812 0 0.406138 N1 0.842942 -0.376421 0.38439 N2 0.772293 -0.349434 0.530527 + txt003 +STRI + V0 -2.55185 -0.125 1.33576 V1 -2.5375 0 1.35 V2 -2.62963 0 1.51667 + N0 0.772293 -0.349434 0.530527 N1 0.83205 0 0.5547 N2 0.913812 0 0.406138 + txt003 +STRI + V0 -2.64829 -0.125 1.50535 V1 -2.69492 -0.2 1.47706 V2 -2.58773 -0.2 1.30017 + N0 0.842942 -0.376421 0.38439 N1 0.548194 -0.793356 0.264707 N2 0.515846 -0.768155 0.379264 + txt003 +STRI + V0 -2.58773 -0.2 1.30017 V1 -2.55185 -0.125 1.33576 V2 -2.64829 -0.125 1.50535 + N0 0.515846 -0.768155 0.379264 N1 0.772293 -0.349434 0.530527 N2 0.842942 -0.376421 0.38439 + txt003 +STRI + V0 -2.69492 -0.2 1.47706 V1 -2.75556 -0.225 1.44028 V2 -2.63437 -0.225 1.25391 + N0 0.548194 -0.793356 0.264707 N1 5.73642e-18 -1 -9.4564e-18 N2 1.5603e-17 -1 -1.57299e-17 + txt003 +STRI + V0 -2.63437 -0.225 1.25391 V1 -2.58773 -0.2 1.30017 V2 -2.69492 -0.2 1.47706 + N0 1.5603e-17 -1 -1.57299e-17 N1 0.515846 -0.768155 0.379264 N2 0.548194 -0.793356 0.264707 + txt003 +STRI + V0 -2.75556 -0.225 1.44028 V1 -2.81619 -0.2 1.4035 V2 -2.68102 -0.2 1.20764 + N0 5.73642e-18 -1 -9.4564e-18 N1 -0.534196 -0.794341 -0.289235 N2 -0.486433 -0.770599 -0.411777 + txt003 +STRI + V0 -2.68102 -0.2 1.20764 V1 -2.63437 -0.225 1.25391 V2 -2.75556 -0.225 1.44028 + N0 -0.486433 -0.770599 -0.411777 N1 1.5603e-17 -1 -1.57299e-17 N2 5.73642e-18 -1 -9.4564e-18 + txt003 +STRI + V0 -2.81619 -0.2 1.4035 V1 -2.86283 -0.125 1.37521 V2 -2.7169 -0.125 1.17205 + N0 -0.534196 -0.794341 -0.289235 N1 -0.807437 -0.378466 -0.452558 N2 -0.700515 -0.35392 -0.619694 + txt003 +STRI + V0 -2.7169 -0.125 1.17205 V1 -2.68102 -0.2 1.20764 V2 -2.81619 -0.2 1.4035 + N0 -0.700515 -0.35392 -0.619694 N1 -0.486433 -0.770599 -0.411777 N2 -0.534196 -0.794341 -0.289235 + txt003 +STRI + V0 -2.86283 -0.125 1.37521 V1 -2.88148 0 1.36389 V2 -2.73125 0 1.15781 + N0 -0.807437 -0.378466 -0.452558 N1 -0.869653 -7.07402e-16 -0.493664 N2 -0.743581 -2.38916e-16 -0.668646 + txt003 +STRI + V0 -2.73125 0 1.15781 V1 -2.7169 -0.125 1.17205 V2 -2.86283 -0.125 1.37521 + N0 -0.743581 -2.38916e-16 -0.668646 N1 -0.700515 -0.35392 -0.619694 N2 -0.807437 -0.378466 -0.452558 + txt003 +STRI + V0 -2.5375 0 1.35 V1 -2.55185 -0.125 1.33576 V2 -2.41221 -0.125 1.16687 + N0 0.83205 0 0.5547 N1 0.772293 -0.349434 0.530527 N2 0.676612 -0.31353 0.666255 + txt003 +STRI + V0 -2.41221 -0.125 1.16687 V1 -2.4037 0 1.18333 V2 -2.5375 0 1.35 + N0 0.676612 -0.31353 0.666255 N1 0.722374 0 0.691503 N2 0.83205 0 0.5547 + txt003 +STRI + V0 -2.55185 -0.125 1.33576 V1 -2.58773 -0.2 1.30017 V2 -2.43347 -0.2 1.12572 + N0 0.772293 -0.349434 0.530527 N1 0.515846 -0.768155 0.379264 N2 0.471519 -0.729692 0.495195 + txt003 +STRI + V0 -2.43347 -0.2 1.12572 V1 -2.41221 -0.125 1.16687 V2 -2.55185 -0.125 1.33576 + N0 0.471519 -0.729692 0.495195 N1 0.676612 -0.31353 0.666255 N2 0.772293 -0.349434 0.530527 + txt003 +STRI + V0 -2.58773 -0.2 1.30017 V1 -2.63437 -0.225 1.25391 V2 -2.46111 -0.225 1.07222 + N0 0.515846 -0.768155 0.379264 N1 1.5603e-17 -1 -1.57299e-17 N2 3.17396e-17 -1 -1.63988e-17 + txt003 +STRI + V0 -2.46111 -0.225 1.07222 V1 -2.43347 -0.2 1.12572 V2 -2.58773 -0.2 1.30017 + N0 3.17396e-17 -1 -1.63988e-17 N1 0.471519 -0.729692 0.495195 N2 0.515846 -0.768155 0.379264 + txt003 +STRI + V0 -2.63437 -0.225 1.25391 V1 -2.68102 -0.2 1.20764 V2 -2.48875 -0.2 1.01872 + N0 1.5603e-17 -1 -1.57299e-17 N1 -0.486433 -0.770599 -0.411777 N2 -0.433172 -0.735531 -0.520919 + txt003 +STRI + V0 -2.48875 -0.2 1.01872 V1 -2.46111 -0.225 1.07222 V2 -2.63437 -0.225 1.25391 + N0 -0.433172 -0.735531 -0.520919 N1 3.17396e-17 -1 -1.63988e-17 N2 1.5603e-17 -1 -1.57299e-17 + txt003 +STRI + V0 -2.68102 -0.2 1.20764 V1 -2.7169 -0.125 1.17205 V2 -2.51001 -0.125 0.977572 + N0 -0.486433 -0.770599 -0.411777 N1 -0.700515 -0.35392 -0.619694 N2 -0.589822 -0.322549 -0.740319 + txt003 +STRI + V0 -2.51001 -0.125 0.977572 V1 -2.48875 -0.2 1.01872 V2 -2.68102 -0.2 1.20764 + N0 -0.589822 -0.322549 -0.740319 N1 -0.433172 -0.735531 -0.520919 N2 -0.486433 -0.770599 -0.411777 + txt003 +STRI + V0 -2.7169 -0.125 1.17205 V1 -2.73125 0 1.15781 V2 -2.51852 0 0.961111 + N0 -0.700515 -0.35392 -0.619694 N1 -0.743581 -2.38916e-16 -0.668646 N2 -0.617031 -2.64751e-17 -0.786939 + txt003 +STRI + V0 -2.51852 0 0.961111 V1 -2.51001 -0.125 0.977572 V2 -2.7169 -0.125 1.17205 + N0 -0.617031 -2.64751e-17 -0.786939 N1 -0.589822 -0.322549 -0.740319 N2 -0.700515 -0.35392 -0.619694 + txt003 +STRI + V0 -2.4037 0 1.18333 V1 -2.41221 -0.125 1.16687 V2 -2.22668 -0.125 1.01033 + N0 0.722374 0 0.691503 N1 0.676612 -0.31353 0.666255 N2 0.548733 -0.289562 0.784249 + txt003 +STRI + V0 -2.22668 -0.125 1.01033 V1 -2.22546 0 1.02917 V2 -2.4037 0 1.18333 + N0 0.548733 -0.289562 0.784249 N1 0.580973 0 0.813923 N2 0.722374 0 0.691503 + txt003 +STRI + V0 -2.41221 -0.125 1.16687 V1 -2.43347 -0.2 1.12572 V2 -2.22972 -0.2 0.963227 + N0 0.676612 -0.31353 0.666255 N1 0.471519 -0.729692 0.495195 N2 0.396971 -0.700023 0.593618 + txt003 +STRI + V0 -2.22972 -0.2 0.963227 V1 -2.22668 -0.125 1.01033 V2 -2.41221 -0.125 1.16687 + N0 0.396971 -0.700023 0.593618 N1 0.548733 -0.289562 0.784249 N2 0.676612 -0.31353 0.666255 + txt003 +STRI + V0 -2.43347 -0.2 1.12572 V1 -2.46111 -0.225 1.07222 V2 -2.23368 -0.225 0.901997 + N0 0.471519 -0.729692 0.495195 N1 3.17396e-17 -1 -1.63988e-17 N2 5.4409e-17 -1 -3.51585e-18 + txt003 +STRI + V0 -2.23368 -0.225 0.901997 V1 -2.22972 -0.2 0.963227 V2 -2.43347 -0.2 1.12572 + N0 5.4409e-17 -1 -3.51585e-18 N1 0.396971 -0.700023 0.593618 N2 0.471519 -0.729692 0.495195 + txt003 +STRI + V0 -2.46111 -0.225 1.07222 V1 -2.48875 -0.2 1.01872 V2 -2.23764 -0.2 0.840766 + N0 3.17396e-17 -1 -1.63988e-17 N1 -0.433172 -0.735531 -0.520919 N2 -0.367048 -0.708353 -0.60292 + txt003 +STRI + V0 -2.23764 -0.2 0.840766 V1 -2.23368 -0.225 0.901997 V2 -2.46111 -0.225 1.07222 + N0 -0.367048 -0.708353 -0.60292 N1 5.4409e-17 -1 -3.51585e-18 N2 3.17396e-17 -1 -1.63988e-17 + txt003 +STRI + V0 -2.48875 -0.2 1.01872 V1 -2.51001 -0.125 0.977572 V2 -2.24068 -0.125 0.793666 + N0 -0.433172 -0.735531 -0.520919 N1 -0.589822 -0.322549 -0.740319 N2 -0.485318 -0.301052 -0.820874 + txt003 +STRI + V0 -2.24068 -0.125 0.793666 V1 -2.23764 -0.2 0.840766 V2 -2.48875 -0.2 1.01872 + N0 -0.485318 -0.301052 -0.820874 N1 -0.367048 -0.708353 -0.60292 N2 -0.433172 -0.735531 -0.520919 + txt003 +STRI + V0 -2.51001 -0.125 0.977572 V1 -2.51852 0 0.961111 V2 -2.2419 0 0.774826 + N0 -0.589822 -0.322549 -0.740319 N1 -0.617031 -2.64751e-17 -0.786939 N2 -0.504836 2.02979e-16 -0.863216 + txt003 +STRI + V0 -2.2419 0 0.774826 V1 -2.24068 -0.125 0.793666 V2 -2.51001 -0.125 0.977572 + N0 -0.504836 2.02979e-16 -0.863216 N1 -0.485318 -0.301052 -0.820874 N2 -0.589822 -0.322549 -0.740319 + txt003 +STRI + V0 -2.22546 0 1.02917 V1 -2.22668 -0.125 1.01033 V2 -1.99259 -0.125 0.877778 + N0 0.580973 0 0.813923 N1 0.548733 -0.289562 0.784249 N2 0.390503 -0.30734 0.867784 + txt003 +STRI + V0 -1.99259 -0.125 0.877778 V1 -2 0 0.9 V2 -2.22546 0 1.02917 + N0 0.390503 -0.30734 0.867784 N1 0.410365 0 0.911922 N2 0.580973 0 0.813923 + txt003 +STRI + V0 -2.22668 -0.125 1.01033 V1 -2.22972 -0.2 0.963227 V2 -1.97407 -0.2 0.822222 + N0 0.548733 -0.289562 0.784249 N1 0.396971 -0.700023 0.593618 N2 0.285351 -0.718662 0.634113 + txt003 +STRI + V0 -1.97407 -0.2 0.822222 V1 -1.99259 -0.125 0.877778 V2 -2.22668 -0.125 1.01033 + N0 0.285351 -0.718662 0.634113 N1 0.390503 -0.30734 0.867784 N2 0.548733 -0.289562 0.784249 + txt003 +STRI + V0 -2.22972 -0.2 0.963227 V1 -2.23368 -0.225 0.901997 V2 -1.95 -0.225 0.75 + N0 0.396971 -0.700023 0.593618 N1 5.4409e-17 -1 -3.51585e-18 N2 7.83687e-17 -1 2.61229e-17 + txt003 +STRI + V0 -1.95 -0.225 0.75 V1 -1.97407 -0.2 0.822222 V2 -2.22972 -0.2 0.963227 + N0 7.83687e-17 -1 2.61229e-17 N1 0.285351 -0.718662 0.634113 N2 0.396971 -0.700023 0.593618 + txt003 +STRI + V0 -2.23368 -0.225 0.901997 V1 -2.23764 -0.2 0.840766 V2 -1.92593 -0.2 0.677778 + N0 5.4409e-17 -1 -3.51585e-18 N1 -0.367048 -0.708353 -0.60292 N2 -0.285351 -0.718662 -0.634113 + txt003 +STRI + V0 -1.92593 -0.2 0.677778 V1 -1.95 -0.225 0.75 V2 -2.23368 -0.225 0.901997 + N0 -0.285351 -0.718662 -0.634113 N1 7.83687e-17 -1 2.61229e-17 N2 5.4409e-17 -1 -3.51585e-18 + txt003 +STRI + V0 -2.23764 -0.2 0.840766 V1 -2.24068 -0.125 0.793666 V2 -1.90741 -0.125 0.622222 + N0 -0.367048 -0.708353 -0.60292 N1 -0.485318 -0.301052 -0.820874 N2 -0.390503 -0.30734 -0.867784 + txt003 +STRI + V0 -1.90741 -0.125 0.622222 V1 -1.92593 -0.2 0.677778 V2 -2.23764 -0.2 0.840766 + N0 -0.390503 -0.30734 -0.867784 N1 -0.285351 -0.718662 -0.634113 N2 -0.367048 -0.708353 -0.60292 + txt003 +STRI + V0 -2.24068 -0.125 0.793666 V1 -2.2419 0 0.774826 V2 -1.9 0 0.6 + N0 -0.485318 -0.301052 -0.820874 N1 -0.504836 2.02979e-16 -0.863216 N2 -0.410365 4.49972e-17 -0.911922 + txt003 +STRI + V0 -1.9 0 0.6 V1 -1.90741 -0.125 0.622222 V2 -2.24068 -0.125 0.793666 + N0 -0.410365 4.49972e-17 -0.911922 N1 -0.390503 -0.30734 -0.867784 N2 -0.485318 -0.301052 -0.820874 + txt003 +STRI + V0 -3 0 1.8 V1 -2.97778 0.125 1.8 V2 -2.94929 0.125 1.58515 + N0 -1 0 0 N1 -0.923077 0.384615 0 N2 -0.890548 0.386679 -0.23959 + txt003 +STRI + V0 -2.94929 0.125 1.58515 V1 -2.9706 0 1.5783 V2 -3 0 1.8 + N0 -0.890548 0.386679 -0.23959 N1 -0.965311 0 -0.261102 N2 -1 0 0 + txt003 +STRI + V0 -2.97778 0.125 1.8 V1 -2.92222 0.2 1.8 V2 -2.896 0.2 1.60229 + N0 -0.923077 0.384615 0 N1 -0.6 0.8 0 N2 -0.577707 0.801752 -0.153129 + txt003 +STRI + V0 -2.896 0.2 1.60229 V1 -2.94929 0.125 1.58515 V2 -2.97778 0.125 1.8 + N0 -0.577707 0.801752 -0.153129 N1 -0.890548 0.386679 -0.23959 N2 -0.923077 0.384615 0 + txt003 +STRI + V0 -2.92222 0.2 1.8 V1 -2.85 0.225 1.8 V2 -2.82674 0.225 1.62457 + N0 -0.6 0.8 0 N1 -0 1 0 N2 9.48478e-19 1 -2.94924e-18 + txt003 +STRI + V0 -2.82674 0.225 1.62457 V1 -2.896 0.2 1.60229 V2 -2.92222 0.2 1.8 + N0 9.48478e-19 1 -2.94924e-18 N1 -0.577707 0.801752 -0.153129 N2 -0.6 0.8 0 + txt003 +STRI + V0 -2.85 0.225 1.8 V1 -2.77778 0.2 1.8 V2 -2.75747 0.2 1.64684 + N0 -0 1 0 N1 0.6 0.8 0 N2 0.57987 0.801541 0.145888 + txt003 +STRI + V0 -2.75747 0.2 1.64684 V1 -2.82674 0.225 1.62457 V2 -2.85 0.225 1.8 + N0 0.57987 0.801541 0.145888 N1 9.48478e-19 1 -2.94924e-18 N2 -0 1 0 + txt003 +STRI + V0 -2.77778 0.2 1.8 V1 -2.72222 0.125 1.8 V2 -2.70418 0.125 1.66398 + N0 0.6 0.8 0 N1 0.923077 0.384615 0 N2 0.895972 0.38623 0.219226 + txt003 +STRI + V0 -2.70418 0.125 1.66398 V1 -2.75747 0.2 1.64684 V2 -2.77778 0.2 1.8 + N0 0.895972 0.38623 0.219226 N1 0.57987 0.801541 0.145888 N2 0.6 0.8 0 + txt003 +STRI + V0 -2.72222 0.125 1.8 V1 -2.7 0 1.8 V2 -2.68287 0 1.67083 + N0 0.923077 0.384615 0 N1 1 9.86865e-16 0 N2 0.972045 1.13306e-15 0.234794 + txt003 +STRI + V0 -2.68287 0 1.67083 V1 -2.70418 0.125 1.66398 V2 -2.72222 0.125 1.8 + N0 0.972045 1.13306e-15 0.234794 N1 0.895972 0.38623 0.219226 N2 0.923077 0.384615 0 + txt003 +STRI + V0 -2.9706 0 1.5783 V1 -2.94929 0.125 1.58515 V2 -2.86283 0.125 1.37521 + N0 -0.965311 0 -0.261102 N1 -0.890548 0.386679 -0.23959 N2 -0.807437 0.378466 -0.452558 + txt003 +STRI + V0 -2.86283 0.125 1.37521 V1 -2.88148 0 1.36389 V2 -2.9706 0 1.5783 + N0 -0.807437 0.378466 -0.452558 N1 -0.869653 0 -0.493664 N2 -0.965311 0 -0.261102 + txt003 +STRI + V0 -2.94929 0.125 1.58515 V1 -2.896 0.2 1.60229 V2 -2.81619 0.2 1.4035 + N0 -0.890548 0.386679 -0.23959 N1 -0.577707 0.801752 -0.153129 N2 -0.534196 0.794341 -0.289235 + txt003 +STRI + V0 -2.81619 0.2 1.4035 V1 -2.86283 0.125 1.37521 V2 -2.94929 0.125 1.58515 + N0 -0.534196 0.794341 -0.289235 N1 -0.807437 0.378466 -0.452558 N2 -0.890548 0.386679 -0.23959 + txt003 +STRI + V0 -2.896 0.2 1.60229 V1 -2.82674 0.225 1.62457 V2 -2.75556 0.225 1.44028 + N0 -0.577707 0.801752 -0.153129 N1 9.48478e-19 1 -2.94924e-18 N2 5.73642e-18 1 -9.4564e-18 + txt003 +STRI + V0 -2.75556 0.225 1.44028 V1 -2.81619 0.2 1.4035 V2 -2.896 0.2 1.60229 + N0 5.73642e-18 1 -9.4564e-18 N1 -0.534196 0.794341 -0.289235 N2 -0.577707 0.801752 -0.153129 + txt003 +STRI + V0 -2.82674 0.225 1.62457 V1 -2.75747 0.2 1.64684 V2 -2.69492 0.2 1.47706 + N0 9.48478e-19 1 -2.94924e-18 N1 0.57987 0.801541 0.145888 N2 0.548194 0.793356 0.264707 + txt003 +STRI + V0 -2.69492 0.2 1.47706 V1 -2.75556 0.225 1.44028 V2 -2.82674 0.225 1.62457 + N0 0.548194 0.793356 0.264707 N1 5.73642e-18 1 -9.4564e-18 N2 9.48478e-19 1 -2.94924e-18 + txt003 +STRI + V0 -2.75747 0.2 1.64684 V1 -2.70418 0.125 1.66398 V2 -2.64829 0.125 1.50535 + N0 0.57987 0.801541 0.145888 N1 0.895972 0.38623 0.219226 N2 0.842942 0.376421 0.38439 + txt003 +STRI + V0 -2.64829 0.125 1.50535 V1 -2.69492 0.2 1.47706 V2 -2.75747 0.2 1.64684 + N0 0.842942 0.376421 0.38439 N1 0.548194 0.793356 0.264707 N2 0.57987 0.801541 0.145888 + txt003 +STRI + V0 -2.70418 0.125 1.66398 V1 -2.68287 0 1.67083 V2 -2.62963 0 1.51667 + N0 0.895972 0.38623 0.219226 N1 0.972045 1.13306e-15 0.234794 N2 0.913812 1.42786e-15 0.406138 + txt003 +STRI + V0 -2.62963 0 1.51667 V1 -2.64829 0.125 1.50535 V2 -2.70418 0.125 1.66398 + N0 0.913812 1.42786e-15 0.406138 N1 0.842942 0.376421 0.38439 N2 0.895972 0.38623 0.219226 + txt003 +STRI + V0 -2.88148 0 1.36389 V1 -2.86283 0.125 1.37521 V2 -2.7169 0.125 1.17205 + N0 -0.869653 0 -0.493664 N1 -0.807437 0.378466 -0.452558 N2 -0.700515 0.35392 -0.619694 + txt003 +STRI + V0 -2.7169 0.125 1.17205 V1 -2.73125 0 1.15781 V2 -2.88148 0 1.36389 + N0 -0.700515 0.35392 -0.619694 N1 -0.743581 0 -0.668646 N2 -0.869653 0 -0.493664 + txt003 +STRI + V0 -2.86283 0.125 1.37521 V1 -2.81619 0.2 1.4035 V2 -2.68102 0.2 1.20764 + N0 -0.807437 0.378466 -0.452558 N1 -0.534196 0.794341 -0.289235 N2 -0.486433 0.770599 -0.411777 + txt003 +STRI + V0 -2.68102 0.2 1.20764 V1 -2.7169 0.125 1.17205 V2 -2.86283 0.125 1.37521 + N0 -0.486433 0.770599 -0.411777 N1 -0.700515 0.35392 -0.619694 N2 -0.807437 0.378466 -0.452558 + txt003 +STRI + V0 -2.81619 0.2 1.4035 V1 -2.75556 0.225 1.44028 V2 -2.63437 0.225 1.25391 + N0 -0.534196 0.794341 -0.289235 N1 5.73642e-18 1 -9.4564e-18 N2 1.5603e-17 1 -1.57299e-17 + txt003 +STRI + V0 -2.63437 0.225 1.25391 V1 -2.68102 0.2 1.20764 V2 -2.81619 0.2 1.4035 + N0 1.5603e-17 1 -1.57299e-17 N1 -0.486433 0.770599 -0.411777 N2 -0.534196 0.794341 -0.289235 + txt003 +STRI + V0 -2.75556 0.225 1.44028 V1 -2.69492 0.2 1.47706 V2 -2.58773 0.2 1.30017 + N0 5.73642e-18 1 -9.4564e-18 N1 0.548194 0.793356 0.264707 N2 0.515846 0.768155 0.379264 + txt003 +STRI + V0 -2.58773 0.2 1.30017 V1 -2.63437 0.225 1.25391 V2 -2.75556 0.225 1.44028 + N0 0.515846 0.768155 0.379264 N1 1.5603e-17 1 -1.57299e-17 N2 5.73642e-18 1 -9.4564e-18 + txt003 +STRI + V0 -2.69492 0.2 1.47706 V1 -2.64829 0.125 1.50535 V2 -2.55185 0.125 1.33576 + N0 0.548194 0.793356 0.264707 N1 0.842942 0.376421 0.38439 N2 0.772293 0.349434 0.530527 + txt003 +STRI + V0 -2.55185 0.125 1.33576 V1 -2.58773 0.2 1.30017 V2 -2.69492 0.2 1.47706 + N0 0.772293 0.349434 0.530527 N1 0.515846 0.768155 0.379264 N2 0.548194 0.793356 0.264707 + txt003 +STRI + V0 -2.64829 0.125 1.50535 V1 -2.62963 0 1.51667 V2 -2.5375 0 1.35 + N0 0.842942 0.376421 0.38439 N1 0.913812 1.42786e-15 0.406138 N2 0.83205 1.23168e-15 0.5547 + txt003 +STRI + V0 -2.5375 0 1.35 V1 -2.55185 0.125 1.33576 V2 -2.64829 0.125 1.50535 + N0 0.83205 1.23168e-15 0.5547 N1 0.772293 0.349434 0.530527 N2 0.842942 0.376421 0.38439 + txt003 +STRI + V0 -2.73125 0 1.15781 V1 -2.7169 0.125 1.17205 V2 -2.51001 0.125 0.977572 + N0 -0.743581 0 -0.668646 N1 -0.700515 0.35392 -0.619694 N2 -0.589822 0.322549 -0.740319 + txt003 +STRI + V0 -2.51001 0.125 0.977572 V1 -2.51852 0 0.961111 V2 -2.73125 0 1.15781 + N0 -0.589822 0.322549 -0.740319 N1 -0.617031 0 -0.786939 N2 -0.743581 0 -0.668646 + txt003 +STRI + V0 -2.7169 0.125 1.17205 V1 -2.68102 0.2 1.20764 V2 -2.48875 0.2 1.01872 + N0 -0.700515 0.35392 -0.619694 N1 -0.486433 0.770599 -0.411777 N2 -0.433172 0.735531 -0.520919 + txt003 +STRI + V0 -2.48875 0.2 1.01872 V1 -2.51001 0.125 0.977572 V2 -2.7169 0.125 1.17205 + N0 -0.433172 0.735531 -0.520919 N1 -0.589822 0.322549 -0.740319 N2 -0.700515 0.35392 -0.619694 + txt003 +STRI + V0 -2.68102 0.2 1.20764 V1 -2.63437 0.225 1.25391 V2 -2.46111 0.225 1.07222 + N0 -0.486433 0.770599 -0.411777 N1 1.5603e-17 1 -1.57299e-17 N2 3.17396e-17 1 -1.63988e-17 + txt003 +STRI + V0 -2.46111 0.225 1.07222 V1 -2.48875 0.2 1.01872 V2 -2.68102 0.2 1.20764 + N0 3.17396e-17 1 -1.63988e-17 N1 -0.433172 0.735531 -0.520919 N2 -0.486433 0.770599 -0.411777 + txt003 +STRI + V0 -2.63437 0.225 1.25391 V1 -2.58773 0.2 1.30017 V2 -2.43347 0.2 1.12572 + N0 1.5603e-17 1 -1.57299e-17 N1 0.515846 0.768155 0.379264 N2 0.471519 0.729692 0.495195 + txt003 +STRI + V0 -2.43347 0.2 1.12572 V1 -2.46111 0.225 1.07222 V2 -2.63437 0.225 1.25391 + N0 0.471519 0.729692 0.495195 N1 3.17396e-17 1 -1.63988e-17 N2 1.5603e-17 1 -1.57299e-17 + txt003 +STRI + V0 -2.58773 0.2 1.30017 V1 -2.55185 0.125 1.33576 V2 -2.41221 0.125 1.16687 + N0 0.515846 0.768155 0.379264 N1 0.772293 0.349434 0.530527 N2 0.676612 0.31353 0.666255 + txt003 +STRI + V0 -2.41221 0.125 1.16687 V1 -2.43347 0.2 1.12572 V2 -2.58773 0.2 1.30017 + N0 0.676612 0.31353 0.666255 N1 0.471519 0.729692 0.495195 N2 0.515846 0.768155 0.379264 + txt003 +STRI + V0 -2.55185 0.125 1.33576 V1 -2.5375 0 1.35 V2 -2.4037 0 1.18333 + N0 0.772293 0.349434 0.530527 N1 0.83205 1.23168e-15 0.5547 N2 0.722374 1.2247e-15 0.691503 + txt003 +STRI + V0 -2.4037 0 1.18333 V1 -2.41221 0.125 1.16687 V2 -2.55185 0.125 1.33576 + N0 0.722374 1.2247e-15 0.691503 N1 0.676612 0.31353 0.666255 N2 0.772293 0.349434 0.530527 + txt003 +STRI + V0 -2.51852 0 0.961111 V1 -2.51001 0.125 0.977572 V2 -2.24068 0.125 0.793666 + N0 -0.617031 0 -0.786939 N1 -0.589822 0.322549 -0.740319 N2 -0.485318 0.301052 -0.820874 + txt003 +STRI + V0 -2.24068 0.125 0.793666 V1 -2.2419 0 0.774826 V2 -2.51852 0 0.961111 + N0 -0.485318 0.301052 -0.820874 N1 -0.504836 0 -0.863216 N2 -0.617031 0 -0.786939 + txt003 +STRI + V0 -2.51001 0.125 0.977572 V1 -2.48875 0.2 1.01872 V2 -2.23764 0.2 0.840766 + N0 -0.589822 0.322549 -0.740319 N1 -0.433172 0.735531 -0.520919 N2 -0.367048 0.708353 -0.60292 + txt003 +STRI + V0 -2.23764 0.2 0.840766 V1 -2.24068 0.125 0.793666 V2 -2.51001 0.125 0.977572 + N0 -0.367048 0.708353 -0.60292 N1 -0.485318 0.301052 -0.820874 N2 -0.589822 0.322549 -0.740319 + txt003 +STRI + V0 -2.48875 0.2 1.01872 V1 -2.46111 0.225 1.07222 V2 -2.23368 0.225 0.901997 + N0 -0.433172 0.735531 -0.520919 N1 3.17396e-17 1 -1.63988e-17 N2 5.4409e-17 1 -3.51585e-18 + txt003 +STRI + V0 -2.23368 0.225 0.901997 V1 -2.23764 0.2 0.840766 V2 -2.48875 0.2 1.01872 + N0 5.4409e-17 1 -3.51585e-18 N1 -0.367048 0.708353 -0.60292 N2 -0.433172 0.735531 -0.520919 + txt003 +STRI + V0 -2.46111 0.225 1.07222 V1 -2.43347 0.2 1.12572 V2 -2.22972 0.2 0.963227 + N0 3.17396e-17 1 -1.63988e-17 N1 0.471519 0.729692 0.495195 N2 0.396971 0.700023 0.593618 + txt003 +STRI + V0 -2.22972 0.2 0.963227 V1 -2.23368 0.225 0.901997 V2 -2.46111 0.225 1.07222 + N0 0.396971 0.700023 0.593618 N1 5.4409e-17 1 -3.51585e-18 N2 3.17396e-17 1 -1.63988e-17 + txt003 +STRI + V0 -2.43347 0.2 1.12572 V1 -2.41221 0.125 1.16687 V2 -2.22668 0.125 1.01033 + N0 0.471519 0.729692 0.495195 N1 0.676612 0.31353 0.666255 N2 0.548733 0.289562 0.784249 + txt003 +STRI + V0 -2.22668 0.125 1.01033 V1 -2.22972 0.2 0.963227 V2 -2.43347 0.2 1.12572 + N0 0.548733 0.289562 0.784249 N1 0.396971 0.700023 0.593618 N2 0.471519 0.729692 0.495195 + txt003 +STRI + V0 -2.41221 0.125 1.16687 V1 -2.4037 0 1.18333 V2 -2.22546 0 1.02917 + N0 0.676612 0.31353 0.666255 N1 0.722374 1.2247e-15 0.691503 N2 0.580973 1.1041e-15 0.813923 + txt003 +STRI + V0 -2.22546 0 1.02917 V1 -2.22668 0.125 1.01033 V2 -2.41221 0.125 1.16687 + N0 0.580973 1.1041e-15 0.813923 N1 0.548733 0.289562 0.784249 N2 0.676612 0.31353 0.666255 + txt003 +STRI + V0 -2.2419 0 0.774826 V1 -2.24068 0.125 0.793666 V2 -1.90741 0.125 0.622222 + N0 -0.504836 0 -0.863216 N1 -0.485318 0.301052 -0.820874 N2 -0.390503 0.30734 -0.867784 + txt003 +STRI + V0 -1.90741 0.125 0.622222 V1 -1.9 0 0.6 V2 -2.2419 0 0.774826 + N0 -0.390503 0.30734 -0.867784 N1 -0.410365 0 -0.911922 N2 -0.504836 0 -0.863216 + txt003 +STRI + V0 -2.24068 0.125 0.793666 V1 -2.23764 0.2 0.840766 V2 -1.92593 0.2 0.677778 + N0 -0.485318 0.301052 -0.820874 N1 -0.367048 0.708353 -0.60292 N2 -0.285351 0.718662 -0.634113 + txt003 +STRI + V0 -1.92593 0.2 0.677778 V1 -1.90741 0.125 0.622222 V2 -2.24068 0.125 0.793666 + N0 -0.285351 0.718662 -0.634113 N1 -0.390503 0.30734 -0.867784 N2 -0.485318 0.301052 -0.820874 + txt003 +STRI + V0 -2.23764 0.2 0.840766 V1 -2.23368 0.225 0.901997 V2 -1.95 0.225 0.75 + N0 -0.367048 0.708353 -0.60292 N1 5.4409e-17 1 -3.51585e-18 N2 7.83687e-17 1 2.61229e-17 + txt003 +STRI + V0 -1.95 0.225 0.75 V1 -1.92593 0.2 0.677778 V2 -2.23764 0.2 0.840766 + N0 7.83687e-17 1 2.61229e-17 N1 -0.285351 0.718662 -0.634113 N2 -0.367048 0.708353 -0.60292 + txt003 +STRI + V0 -2.23368 0.225 0.901997 V1 -2.22972 0.2 0.963227 V2 -1.97407 0.2 0.822222 + N0 5.4409e-17 1 -3.51585e-18 N1 0.396971 0.700023 0.593618 N2 0.285351 0.718662 0.634113 + txt003 +STRI + V0 -1.97407 0.2 0.822222 V1 -1.95 0.225 0.75 V2 -2.23368 0.225 0.901997 + N0 0.285351 0.718662 0.634113 N1 7.83687e-17 1 2.61229e-17 N2 5.4409e-17 1 -3.51585e-18 + txt003 +STRI + V0 -2.22972 0.2 0.963227 V1 -2.22668 0.125 1.01033 V2 -1.99259 0.125 0.877778 + N0 0.396971 0.700023 0.593618 N1 0.548733 0.289562 0.784249 N2 0.390503 0.30734 0.867784 + txt003 +STRI + V0 -1.99259 0.125 0.877778 V1 -1.97407 0.2 0.822222 V2 -2.22972 0.2 0.963227 + N0 0.390503 0.30734 0.867784 N1 0.285351 0.718662 0.634113 N2 0.396971 0.700023 0.593618 + txt003 +STRI + V0 -2.22668 0.125 1.01033 V1 -2.22546 0 1.02917 V2 -2 0 0.9 + N0 0.548733 0.289562 0.784249 N1 0.580973 1.1041e-15 0.813923 N2 0.410365 1.30492e-15 0.911922 + txt003 +STRI + V0 -2 0 0.9 V1 -1.99259 0.125 0.877778 V2 -2.22668 0.125 1.01033 + N0 0.410365 1.30492e-15 0.911922 N1 0.390503 0.30734 0.867784 N2 0.548733 0.289562 0.784249 + txt003 +STRI + V0 1.7 0 1.425 V1 1.7 -0.275 1.36389 V2 2.07238 -0.262346 1.42521 + N0 -0 0 1 N1 -0.0157732 -0.461877 0.886804 N2 -0.291732 -0.426807 0.855995 + txt003 +STRI + V0 2.07238 -0.262346 1.42521 V1 2.0588 0 1.47639 V2 1.7 0 1.425 + N0 -0.291732 -0.426807 0.855995 N1 -0.333935 0 0.942596 N2 -0 0 1 + txt003 +STRI + V0 1.7 -0.275 1.36389 V1 1.7 -0.44 1.21111 V2 2.10633 -0.419753 1.29725 + N0 -0.0157732 -0.461877 0.886804 N1 -0.0291362 -0.857129 0.514277 N2 -0.135104 -0.834377 0.534381 + txt003 +STRI + V0 2.10633 -0.419753 1.29725 V1 2.07238 -0.262346 1.42521 V2 1.7 -0.275 1.36389 + N0 -0.135104 -0.834377 0.534381 N1 -0.291732 -0.426807 0.855995 N2 -0.0157732 -0.461877 0.886804 + txt003 +STRI + V0 1.7 -0.44 1.21111 V1 1.7 -0.495 1.0125 V2 2.15046 -0.472222 1.1309 + N0 -0.0291362 -0.857129 0.514277 N1 0 -1 -0 N2 0.110195 -0.99348 0.0292376 + txt003 +STRI + V0 2.15046 -0.472222 1.1309 V1 2.10633 -0.419753 1.29725 V2 1.7 -0.44 1.21111 + N0 0.110195 -0.99348 0.0292376 N1 -0.135104 -0.834377 0.534381 N2 -0.0291362 -0.857129 0.514277 + txt003 +STRI + V0 1.7 -0.495 1.0125 V1 1.7 -0.44 0.813889 V2 2.1946 -0.419753 0.964558 + N0 0 -1 -0 N1 0.0673462 -0.855546 -0.513328 N2 0.348602 -0.814337 -0.464038 + txt003 +STRI + V0 2.1946 -0.419753 0.964558 V1 2.15046 -0.472222 1.1309 V2 1.7 -0.495 1.0125 + N0 0.348602 -0.814337 -0.464038 N1 0.110195 -0.99348 0.0292376 N2 0 -1 -0 + txt003 +STRI + V0 1.7 -0.44 0.813889 V1 1.7 -0.275 0.661111 V2 2.22855 -0.262346 0.8366 + N0 0.0673462 -0.855546 -0.513328 N1 0.134339 -0.457747 -0.878875 N2 0.492146 -0.41068 -0.767551 + txt003 +STRI + V0 2.22855 -0.262346 0.8366 V1 2.1946 -0.419753 0.964558 V2 1.7 -0.44 0.813889 + N0 0.492146 -0.41068 -0.767551 N1 0.348602 -0.814337 -0.464038 N2 0.0673462 -0.855546 -0.513328 + txt003 +STRI + V0 1.7 -0.275 0.661111 V1 1.7 0 0.6 V2 2.24213 0 0.785417 + N0 0.134339 -0.457747 -0.878875 N1 0.158678 9.39168e-16 -0.98733 N2 0.528678 6.47717e-16 -0.848822 + txt003 +STRI + V0 2.24213 0 0.785417 V1 2.22855 -0.262346 0.8366 V2 1.7 -0.275 0.661111 + N0 0.528678 6.47717e-16 -0.848822 N1 0.492146 -0.41068 -0.767551 N2 0.134339 -0.457747 -0.878875 + txt003 +STRI + V0 2.0588 0 1.47639 V1 2.07238 -0.262346 1.42521 V2 2.29012 -0.23071 1.57202 + N0 -0.333935 0 0.942596 N1 -0.291732 -0.426807 0.855995 N2 -0.64585 -0.390219 0.656206 + txt003 +STRI + V0 2.29012 -0.23071 1.57202 V1 2.27037 0 1.61111 V2 2.0588 0 1.47639 + N0 -0.64585 -0.390219 0.656206 N1 -0.731055 0 0.682318 N2 -0.333935 0 0.942596 + txt003 +STRI + V0 2.07238 -0.262346 1.42521 V1 2.10633 -0.419753 1.29725 V2 2.33951 -0.369136 1.47428 + N0 -0.291732 -0.426807 0.855995 N1 -0.135104 -0.834377 0.534381 N2 -0.312511 -0.816863 0.484842 + txt003 +STRI + V0 2.33951 -0.369136 1.47428 V1 2.29012 -0.23071 1.57202 V2 2.07238 -0.262346 1.42521 + N0 -0.312511 -0.816863 0.484842 N1 -0.64585 -0.390219 0.656206 N2 -0.291732 -0.426807 0.855995 + txt003 +STRI + V0 2.10633 -0.419753 1.29725 V1 2.15046 -0.472222 1.1309 V2 2.4037 -0.415278 1.34722 + N0 -0.135104 -0.834377 0.534381 N1 0.110195 -0.99348 0.0292376 N2 0.215359 -0.970454 0.108813 + txt003 +STRI + V0 2.4037 -0.415278 1.34722 V1 2.33951 -0.369136 1.47428 V2 2.10633 -0.419753 1.29725 + N0 0.215359 -0.970454 0.108813 N1 -0.312511 -0.816863 0.484842 N2 -0.135104 -0.834377 0.534381 + txt003 +STRI + V0 2.15046 -0.472222 1.1309 V1 2.1946 -0.419753 0.964558 V2 2.4679 -0.369136 1.22016 + N0 0.110195 -0.99348 0.0292376 N1 0.348602 -0.814337 -0.464038 N2 0.627607 -0.733748 -0.260237 + txt003 +STRI + V0 2.4679 -0.369136 1.22016 V1 2.4037 -0.415278 1.34722 V2 2.15046 -0.472222 1.1309 + N0 0.627607 -0.733748 -0.260237 N1 0.215359 -0.970454 0.108813 N2 0.110195 -0.99348 0.0292376 + txt003 +STRI + V0 2.1946 -0.419753 0.964558 V1 2.22855 -0.262346 0.8366 V2 2.51728 -0.23071 1.12243 + N0 0.348602 -0.814337 -0.464038 N1 0.492146 -0.41068 -0.767551 N2 0.813963 -0.348056 -0.465103 + txt003 +STRI + V0 2.51728 -0.23071 1.12243 V1 2.4679 -0.369136 1.22016 V2 2.1946 -0.419753 0.964558 + N0 0.813963 -0.348056 -0.465103 N1 0.627607 -0.733748 -0.260237 N2 0.348602 -0.814337 -0.464038 + txt003 +STRI + V0 2.22855 -0.262346 0.8366 V1 2.24213 0 0.785417 V2 2.53704 0 1.08333 + N0 0.492146 -0.41068 -0.767551 N1 0.528678 6.47717e-16 -0.848822 N2 0.854063 9.88017e-16 -0.52017 + txt003 +STRI + V0 2.53704 0 1.08333 V1 2.51728 -0.23071 1.12243 V2 2.22855 -0.262346 0.8366 + N0 0.854063 9.88017e-16 -0.52017 N1 0.813963 -0.348056 -0.465103 N2 0.492146 -0.41068 -0.767551 + txt003 +STRI + V0 2.27037 0 1.61111 V1 2.29012 -0.23071 1.57202 V2 2.40972 -0.189583 1.77361 + N0 -0.731055 0 0.682318 N1 -0.64585 -0.390219 0.656206 N2 -0.835237 -0.363942 0.412221 + txt003 +STRI + V0 2.40972 -0.189583 1.77361 V1 2.3875 0 1.8 V2 2.27037 0 1.61111 + N0 -0.835237 -0.363942 0.412221 N1 -0.920582 0 0.39055 N2 -0.731055 0 0.682318 + txt003 +STRI + V0 2.29012 -0.23071 1.57202 V1 2.33951 -0.369136 1.47428 V2 2.46528 -0.303333 1.70764 + N0 -0.64585 -0.390219 0.656206 N1 -0.312511 -0.816863 0.484842 N2 -0.451323 -0.803033 0.38916 + txt003 +STRI + V0 2.46528 -0.303333 1.70764 V1 2.40972 -0.189583 1.77361 V2 2.29012 -0.23071 1.57202 + N0 -0.451323 -0.803033 0.38916 N1 -0.835237 -0.363942 0.412221 N2 -0.64585 -0.390219 0.656206 + txt003 +STRI + V0 2.33951 -0.369136 1.47428 V1 2.4037 -0.415278 1.34722 V2 2.5375 -0.34125 1.62187 + N0 -0.312511 -0.816863 0.484842 N1 0.215359 -0.970454 0.108813 N2 0.214084 -0.960035 0.180281 + txt003 +STRI + V0 2.5375 -0.34125 1.62187 V1 2.46528 -0.303333 1.70764 V2 2.33951 -0.369136 1.47428 + N0 0.214084 -0.960035 0.180281 N1 -0.451323 -0.803033 0.38916 N2 -0.312511 -0.816863 0.484842 + txt003 +STRI + V0 2.4037 -0.415278 1.34722 V1 2.4679 -0.369136 1.22016 V2 2.60972 -0.303333 1.53611 + N0 0.215359 -0.970454 0.108813 N1 0.627607 -0.733748 -0.260237 N2 0.705424 -0.704198 -0.0805066 + txt003 +STRI + V0 2.60972 -0.303333 1.53611 V1 2.5375 -0.34125 1.62187 V2 2.4037 -0.415278 1.34722 + N0 0.705424 -0.704198 -0.0805066 N1 0.214084 -0.960035 0.180281 N2 0.215359 -0.970454 0.108813 + txt003 +STRI + V0 2.4679 -0.369136 1.22016 V1 2.51728 -0.23071 1.12243 V2 2.66528 -0.189583 1.47014 + N0 0.627607 -0.733748 -0.260237 N1 0.813963 -0.348056 -0.465103 N2 0.913262 -0.329186 -0.239977 + txt003 +STRI + V0 2.66528 -0.189583 1.47014 V1 2.60972 -0.303333 1.53611 V2 2.4679 -0.369136 1.22016 + N0 0.913262 -0.329186 -0.239977 N1 0.705424 -0.704198 -0.0805066 N2 0.627607 -0.733748 -0.260237 + txt003 +STRI + V0 2.51728 -0.23071 1.12243 V1 2.53704 0 1.08333 V2 2.6875 0 1.44375 + N0 0.813963 -0.348056 -0.465103 N1 0.854063 9.88017e-16 -0.52017 N2 0.957826 1.83855e-15 -0.287348 + txt003 +STRI + V0 2.6875 0 1.44375 V1 2.66528 -0.189583 1.47014 V2 2.51728 -0.23071 1.12243 + N0 0.957826 1.83855e-15 -0.287348 N1 0.913262 -0.329186 -0.239977 N2 0.813963 -0.348056 -0.465103 + txt003 +STRI + V0 2.3875 0 1.8 V1 2.40972 -0.189583 1.77361 V2 2.48765 -0.148457 1.99928 + N0 -0.920582 0 0.39055 N1 -0.835237 -0.363942 0.412221 N2 -0.842821 -0.409176 0.34961 + txt003 +STRI + V0 2.48765 -0.148457 1.99928 V1 2.46296 0 2.01389 V2 2.3875 0 1.8 + N0 -0.842821 -0.409176 0.34961 N1 -0.948683 0 0.316228 N2 -0.920582 0 0.39055 + txt003 +STRI + V0 2.40972 -0.189583 1.77361 V1 2.46528 -0.303333 1.70764 V2 2.54938 -0.237531 1.96276 + N0 -0.835237 -0.363942 0.412221 N1 -0.451323 -0.803033 0.38916 N2 -0.452673 -0.821162 0.347535 + txt003 +STRI + V0 2.54938 -0.237531 1.96276 V1 2.48765 -0.148457 1.99928 V2 2.40972 -0.189583 1.77361 + N0 -0.452673 -0.821162 0.347535 N1 -0.842821 -0.409176 0.34961 N2 -0.835237 -0.363942 0.412221 + txt003 +STRI + V0 2.46528 -0.303333 1.70764 V1 2.5375 -0.34125 1.62187 V2 2.62963 -0.267222 1.91528 + N0 -0.451323 -0.803033 0.38916 N1 0.214084 -0.960035 0.180281 N2 0.113546 -0.974822 0.191909 + txt003 +STRI + V0 2.62963 -0.267222 1.91528 V1 2.54938 -0.237531 1.96276 V2 2.46528 -0.303333 1.70764 + N0 0.113546 -0.974822 0.191909 N1 -0.452673 -0.821162 0.347535 N2 -0.451323 -0.803033 0.38916 + txt003 +STRI + V0 2.5375 -0.34125 1.62187 V1 2.60972 -0.303333 1.53611 V2 2.70988 -0.237531 1.8678 + N0 0.214084 -0.960035 0.180281 N1 0.705424 -0.704198 -0.0805066 N2 0.60461 -0.794635 -0.0547983 + txt003 +STRI + V0 2.70988 -0.237531 1.8678 V1 2.62963 -0.267222 1.91528 V2 2.5375 -0.34125 1.62187 + N0 0.60461 -0.794635 -0.0547983 N1 0.113546 -0.974822 0.191909 N2 0.214084 -0.960035 0.180281 + txt003 +STRI + V0 2.60972 -0.303333 1.53611 V1 2.66528 -0.189583 1.47014 V2 2.7716 -0.148457 1.83128 + N0 0.705424 -0.704198 -0.0805066 N1 0.913262 -0.329186 -0.239977 N2 0.880144 -0.401503 -0.253261 + txt003 +STRI + V0 2.7716 -0.148457 1.83128 V1 2.70988 -0.237531 1.8678 V2 2.60972 -0.303333 1.53611 + N0 0.880144 -0.401503 -0.253261 N1 0.60461 -0.794635 -0.0547983 N2 0.705424 -0.704198 -0.0805066 + txt003 +STRI + V0 2.66528 -0.189583 1.47014 V1 2.6875 0 1.44375 V2 2.7963 0 1.81667 + N0 0.913262 -0.329186 -0.239977 N1 0.957826 1.83855e-15 -0.287348 N2 0.947588 3.02585e-15 -0.319493 + txt003 +STRI + V0 2.7963 0 1.81667 V1 2.7716 -0.148457 1.83128 V2 2.66528 -0.189583 1.47014 + N0 0.947588 3.02585e-15 -0.319493 N1 0.880144 -0.401503 -0.253261 N2 0.913262 -0.329186 -0.239977 + txt003 +STRI + V0 2.46296 0 2.01389 V1 2.48765 -0.148457 1.99928 V2 2.5804 -0.116821 2.21831 + N0 -0.948683 0 0.316228 N1 -0.842821 -0.409176 0.34961 N2 -0.723795 -0.498863 0.476715 + txt003 +STRI + V0 2.5804 -0.116821 2.21831 V1 2.54954 0 2.22361 V2 2.46296 0 2.01389 + N0 -0.723795 -0.498863 0.476715 N1 -0.874591 0 0.484861 N2 -0.948683 0 0.316228 + txt003 +STRI + V0 2.48765 -0.148457 1.99928 V1 2.54938 -0.237531 1.96276 V2 2.65756 -0.186914 2.20507 + N0 -0.842821 -0.409176 0.34961 N1 -0.452673 -0.821162 0.347535 N2 -0.365378 -0.851743 0.375544 + txt003 +STRI + V0 2.65756 -0.186914 2.20507 V1 2.5804 -0.116821 2.21831 V2 2.48765 -0.148457 1.99928 + N0 -0.365378 -0.851743 0.375544 N1 -0.723795 -0.498863 0.476715 N2 -0.842821 -0.409176 0.34961 + txt003 +STRI + V0 2.54938 -0.237531 1.96276 V1 2.62963 -0.267222 1.91528 V2 2.75787 -0.210278 2.18785 + N0 -0.452673 -0.821162 0.347535 N1 0.113546 -0.974822 0.191909 N2 0.0260102 -0.988113 0.151516 + txt003 +STRI + V0 2.75787 -0.210278 2.18785 V1 2.65756 -0.186914 2.20507 V2 2.54938 -0.237531 1.96276 + N0 0.0260102 -0.988113 0.151516 N1 -0.365378 -0.851743 0.375544 N2 -0.452673 -0.821162 0.347535 + txt003 +STRI + V0 2.62963 -0.267222 1.91528 V1 2.70988 -0.237531 1.8678 V2 2.85818 -0.186914 2.17063 + N0 0.113546 -0.974822 0.191909 N1 0.60461 -0.794635 -0.0547983 N2 0.417243 -0.88974 -0.185122 + txt003 +STRI + V0 2.85818 -0.186914 2.17063 V1 2.75787 -0.210278 2.18785 V2 2.62963 -0.267222 1.91528 + N0 0.417243 -0.88974 -0.185122 N1 0.0260102 -0.988113 0.151516 N2 0.113546 -0.974822 0.191909 + txt003 +STRI + V0 2.70988 -0.237531 1.8678 V1 2.7716 -0.148457 1.83128 V2 2.93534 -0.116821 2.15738 + N0 0.60461 -0.794635 -0.0547983 N1 0.880144 -0.401503 -0.253261 N2 0.70819 -0.492319 -0.506053 + txt003 +STRI + V0 2.93534 -0.116821 2.15738 V1 2.85818 -0.186914 2.17063 V2 2.70988 -0.237531 1.8678 + N0 0.70819 -0.492319 -0.506053 N1 0.417243 -0.88974 -0.185122 N2 0.60461 -0.794635 -0.0547983 + txt003 +STRI + V0 2.7716 -0.148457 1.83128 V1 2.7963 0 1.81667 V2 2.9662 0 2.15208 + N0 0.880144 -0.401503 -0.253261 N1 0.947588 3.02585e-15 -0.319493 N2 0.787582 4.30265e-15 -0.61621 + txt003 +STRI + V0 2.9662 0 2.15208 V1 2.93534 -0.116821 2.15738 V2 2.7716 -0.148457 1.83128 + N0 0.787582 4.30265e-15 -0.61621 N1 0.70819 -0.492319 -0.506053 N2 0.880144 -0.401503 -0.253261 + txt003 +STRI + V0 2.54954 0 2.22361 V1 2.5804 -0.116821 2.21831 V2 2.74444 -0.104167 2.4 + N0 -0.874591 0 0.484861 N1 -0.723795 -0.498863 0.476715 N2 -0.497164 -0.497164 0.711095 + txt003 +STRI + V0 2.74444 -0.104167 2.4 V1 2.7 0 2.4 V2 2.54954 0 2.22361 + N0 -0.497164 -0.497164 0.711095 N1 -0.6 0 0.8 N2 -0.874591 0 0.484861 + txt003 +STRI + V0 2.5804 -0.116821 2.21831 V1 2.65756 -0.186914 2.20507 V2 2.85556 -0.166667 2.4 + N0 -0.723795 -0.498863 0.476715 N1 -0.365378 -0.851743 0.375544 N2 -0.267368 -0.855576 0.443288 + txt003 +STRI + V0 2.85556 -0.166667 2.4 V1 2.74444 -0.104167 2.4 V2 2.5804 -0.116821 2.21831 + N0 -0.267368 -0.855576 0.443288 N1 -0.497164 -0.497164 0.711095 N2 -0.723795 -0.498863 0.476715 + txt003 +STRI + V0 2.65756 -0.186914 2.20507 V1 2.75787 -0.210278 2.18785 V2 3 -0.1875 2.4 + N0 -0.365378 -0.851743 0.375544 N1 0.0260102 -0.988113 0.151516 N2 0 -1 2.19303e-16 + txt003 +STRI + V0 3 -0.1875 2.4 V1 2.85556 -0.166667 2.4 V2 2.65756 -0.186914 2.20507 + N0 0 -1 2.19303e-16 N1 -0.267368 -0.855576 0.443288 N2 -0.365378 -0.851743 0.375544 + txt003 +STRI + V0 2.75787 -0.210278 2.18785 V1 2.85818 -0.186914 2.17063 V2 3.14444 -0.166667 2.4 + N0 0.0260102 -0.988113 0.151516 N1 0.417243 -0.88974 -0.185122 N2 0.250514 -0.801644 -0.54278 + txt003 +STRI + V0 3.14444 -0.166667 2.4 V1 3 -0.1875 2.4 V2 2.75787 -0.210278 2.18785 + N0 0.250514 -0.801644 -0.54278 N1 0 -1 2.19303e-16 N2 0.0260102 -0.988113 0.151516 + txt003 +STRI + V0 2.85818 -0.186914 2.17063 V1 2.93534 -0.116821 2.15738 V2 3.25556 -0.104167 2.4 + N0 0.417243 -0.88974 -0.185122 N1 0.70819 -0.492319 -0.506053 N2 0.366221 -0.366221 -0.855433 + txt003 +STRI + V0 3.25556 -0.104167 2.4 V1 3.14444 -0.166667 2.4 V2 2.85818 -0.186914 2.17063 + N0 0.366221 -0.366221 -0.855433 N1 0.250514 -0.801644 -0.54278 N2 0.417243 -0.88974 -0.185122 + txt003 +STRI + V0 2.93534 -0.116821 2.15738 V1 2.9662 0 2.15208 V2 3.3 0 2.4 + N0 0.70819 -0.492319 -0.506053 N1 0.787582 4.30265e-15 -0.61621 N2 0.384615 6.46776e-15 -0.923077 + txt003 +STRI + V0 3.3 0 2.4 V1 3.25556 -0.104167 2.4 V2 2.93534 -0.116821 2.15738 + N0 0.384615 6.46776e-15 -0.923077 N1 0.366221 -0.366221 -0.855433 N2 0.70819 -0.492319 -0.506053 + txt003 +STRI + V0 1.7 0 0.6 V1 1.7 0.275 0.661111 V2 2.22855 0.262346 0.8366 + N0 0.158678 0 -0.98733 N1 0.134339 0.457747 -0.878875 N2 0.492146 0.41068 -0.767551 + txt003 +STRI + V0 2.22855 0.262346 0.8366 V1 2.24213 0 0.785417 V2 1.7 0 0.6 + N0 0.492146 0.41068 -0.767551 N1 0.528678 0 -0.848822 N2 0.158678 0 -0.98733 + txt003 +STRI + V0 1.7 0.275 0.661111 V1 1.7 0.44 0.813889 V2 2.1946 0.419753 0.964558 + N0 0.134339 0.457747 -0.878875 N1 0.0673462 0.855546 -0.513328 N2 0.348602 0.814337 -0.464038 + txt003 +STRI + V0 2.1946 0.419753 0.964558 V1 2.22855 0.262346 0.8366 V2 1.7 0.275 0.661111 + N0 0.348602 0.814337 -0.464038 N1 0.492146 0.41068 -0.767551 N2 0.134339 0.457747 -0.878875 + txt003 +STRI + V0 1.7 0.44 0.813889 V1 1.7 0.495 1.0125 V2 2.15046 0.472222 1.1309 + N0 0.0673462 0.855546 -0.513328 N1 0 1 -0 N2 0.110195 0.99348 0.0292376 + txt003 +STRI + V0 2.15046 0.472222 1.1309 V1 2.1946 0.419753 0.964558 V2 1.7 0.44 0.813889 + N0 0.110195 0.99348 0.0292376 N1 0.348602 0.814337 -0.464038 N2 0.0673462 0.855546 -0.513328 + txt003 +STRI + V0 1.7 0.495 1.0125 V1 1.7 0.44 1.21111 V2 2.10633 0.419753 1.29725 + N0 0 1 -0 N1 -0.0291362 0.857129 0.514277 N2 -0.135104 0.834377 0.534381 + txt003 +STRI + V0 2.10633 0.419753 1.29725 V1 2.15046 0.472222 1.1309 V2 1.7 0.495 1.0125 + N0 -0.135104 0.834377 0.534381 N1 0.110195 0.99348 0.0292376 N2 0 1 -0 + txt003 +STRI + V0 1.7 0.44 1.21111 V1 1.7 0.275 1.36389 V2 2.07238 0.262346 1.42521 + N0 -0.0291362 0.857129 0.514277 N1 -0.0157732 0.461877 0.886804 N2 -0.291732 0.426807 0.855995 + txt003 +STRI + V0 2.07238 0.262346 1.42521 V1 2.10633 0.419753 1.29725 V2 1.7 0.44 1.21111 + N0 -0.291732 0.426807 0.855995 N1 -0.135104 0.834377 0.534381 N2 -0.0291362 0.857129 0.514277 + txt003 +STRI + V0 1.7 0.275 1.36389 V1 1.7 0 1.425 V2 2.0588 0 1.47639 + N0 -0.0157732 0.461877 0.886804 N1 0 -4.48575e-16 1 N2 -0.333935 -3.25455e-16 0.942596 + txt003 +STRI + V0 2.0588 0 1.47639 V1 2.07238 0.262346 1.42521 V2 1.7 0.275 1.36389 + N0 -0.333935 -3.25455e-16 0.942596 N1 -0.291732 0.426807 0.855995 N2 -0.0157732 0.461877 0.886804 + txt003 +STRI + V0 2.24213 0 0.785417 V1 2.22855 0.262346 0.8366 V2 2.51728 0.23071 1.12243 + N0 0.528678 0 -0.848822 N1 0.492146 0.41068 -0.767551 N2 0.813963 0.348056 -0.465103 + txt003 +STRI + V0 2.51728 0.23071 1.12243 V1 2.53704 0 1.08333 V2 2.24213 0 0.785417 + N0 0.813963 0.348056 -0.465103 N1 0.854063 0 -0.52017 N2 0.528678 0 -0.848822 + txt003 +STRI + V0 2.22855 0.262346 0.8366 V1 2.1946 0.419753 0.964558 V2 2.4679 0.369136 1.22016 + N0 0.492146 0.41068 -0.767551 N1 0.348602 0.814337 -0.464038 N2 0.627607 0.733748 -0.260237 + txt003 +STRI + V0 2.4679 0.369136 1.22016 V1 2.51728 0.23071 1.12243 V2 2.22855 0.262346 0.8366 + N0 0.627607 0.733748 -0.260237 N1 0.813963 0.348056 -0.465103 N2 0.492146 0.41068 -0.767551 + txt003 +STRI + V0 2.1946 0.419753 0.964558 V1 2.15046 0.472222 1.1309 V2 2.4037 0.415278 1.34722 + N0 0.348602 0.814337 -0.464038 N1 0.110195 0.99348 0.0292376 N2 0.215359 0.970454 0.108813 + txt003 +STRI + V0 2.4037 0.415278 1.34722 V1 2.4679 0.369136 1.22016 V2 2.1946 0.419753 0.964558 + N0 0.215359 0.970454 0.108813 N1 0.627607 0.733748 -0.260237 N2 0.348602 0.814337 -0.464038 + txt003 +STRI + V0 2.15046 0.472222 1.1309 V1 2.10633 0.419753 1.29725 V2 2.33951 0.369136 1.47428 + N0 0.110195 0.99348 0.0292376 N1 -0.135104 0.834377 0.534381 N2 -0.312511 0.816863 0.484842 + txt003 +STRI + V0 2.33951 0.369136 1.47428 V1 2.4037 0.415278 1.34722 V2 2.15046 0.472222 1.1309 + N0 -0.312511 0.816863 0.484842 N1 0.215359 0.970454 0.108813 N2 0.110195 0.99348 0.0292376 + txt003 +STRI + V0 2.10633 0.419753 1.29725 V1 2.07238 0.262346 1.42521 V2 2.29012 0.23071 1.57202 + N0 -0.135104 0.834377 0.534381 N1 -0.291732 0.426807 0.855995 N2 -0.64585 0.390219 0.656206 + txt003 +STRI + V0 2.29012 0.23071 1.57202 V1 2.33951 0.369136 1.47428 V2 2.10633 0.419753 1.29725 + N0 -0.64585 0.390219 0.656206 N1 -0.312511 0.816863 0.484842 N2 -0.135104 0.834377 0.534381 + txt003 +STRI + V0 2.07238 0.262346 1.42521 V1 2.0588 0 1.47639 V2 2.27037 0 1.61111 + N0 -0.291732 0.426807 0.855995 N1 -0.333935 -3.25455e-16 0.942596 N2 -0.731055 -1.69385e-16 0.682318 + txt003 +STRI + V0 2.27037 0 1.61111 V1 2.29012 0.23071 1.57202 V2 2.07238 0.262346 1.42521 + N0 -0.731055 -1.69385e-16 0.682318 N1 -0.64585 0.390219 0.656206 N2 -0.291732 0.426807 0.855995 + txt003 +STRI + V0 2.53704 0 1.08333 V1 2.51728 0.23071 1.12243 V2 2.66528 0.189583 1.47014 + N0 0.854063 0 -0.52017 N1 0.813963 0.348056 -0.465103 N2 0.913262 0.329186 -0.239977 + txt003 +STRI + V0 2.66528 0.189583 1.47014 V1 2.6875 0 1.44375 V2 2.53704 0 1.08333 + N0 0.913262 0.329186 -0.239977 N1 0.957826 0 -0.287348 N2 0.854063 0 -0.52017 + txt003 +STRI + V0 2.51728 0.23071 1.12243 V1 2.4679 0.369136 1.22016 V2 2.60972 0.303333 1.53611 + N0 0.813963 0.348056 -0.465103 N1 0.627607 0.733748 -0.260237 N2 0.705424 0.704198 -0.0805066 + txt003 +STRI + V0 2.60972 0.303333 1.53611 V1 2.66528 0.189583 1.47014 V2 2.51728 0.23071 1.12243 + N0 0.705424 0.704198 -0.0805066 N1 0.913262 0.329186 -0.239977 N2 0.813963 0.348056 -0.465103 + txt003 +STRI + V0 2.4679 0.369136 1.22016 V1 2.4037 0.415278 1.34722 V2 2.5375 0.34125 1.62188 + N0 0.627607 0.733748 -0.260237 N1 0.215359 0.970454 0.108813 N2 0.214084 0.960035 0.180281 + txt003 +STRI + V0 2.5375 0.34125 1.62188 V1 2.60972 0.303333 1.53611 V2 2.4679 0.369136 1.22016 + N0 0.214084 0.960035 0.180281 N1 0.705424 0.704198 -0.0805066 N2 0.627607 0.733748 -0.260237 + txt003 +STRI + V0 2.4037 0.415278 1.34722 V1 2.33951 0.369136 1.47428 V2 2.46528 0.303333 1.70764 + N0 0.215359 0.970454 0.108813 N1 -0.312511 0.816863 0.484842 N2 -0.451323 0.803033 0.38916 + txt003 +STRI + V0 2.46528 0.303333 1.70764 V1 2.5375 0.34125 1.62188 V2 2.4037 0.415278 1.34722 + N0 -0.451323 0.803033 0.38916 N1 0.214084 0.960035 0.180281 N2 0.215359 0.970454 0.108813 + txt003 +STRI + V0 2.33951 0.369136 1.47428 V1 2.29012 0.23071 1.57202 V2 2.40972 0.189583 1.77361 + N0 -0.312511 0.816863 0.484842 N1 -0.64585 0.390219 0.656206 N2 -0.835237 0.363942 0.412221 + txt003 +STRI + V0 2.40972 0.189583 1.77361 V1 2.46528 0.303333 1.70764 V2 2.33951 0.369136 1.47428 + N0 -0.835237 0.363942 0.412221 N1 -0.451323 0.803033 0.38916 N2 -0.312511 0.816863 0.484842 + txt003 +STRI + V0 2.29012 0.23071 1.57202 V1 2.27037 0 1.61111 V2 2.3875 0 1.8 + N0 -0.64585 0.390219 0.656206 N1 -0.731055 -1.69385e-16 0.682318 N2 -0.920582 -2.76813e-16 0.39055 + txt003 +STRI + V0 2.3875 0 1.8 V1 2.40972 0.189583 1.77361 V2 2.29012 0.23071 1.57202 + N0 -0.920582 -2.76813e-16 0.39055 N1 -0.835237 0.363942 0.412221 N2 -0.64585 0.390219 0.656206 + txt003 +STRI + V0 2.6875 0 1.44375 V1 2.66528 0.189583 1.47014 V2 2.7716 0.148457 1.83128 + N0 0.957826 0 -0.287348 N1 0.913262 0.329186 -0.239977 N2 0.880144 0.401503 -0.253261 + txt003 +STRI + V0 2.7716 0.148457 1.83128 V1 2.7963 0 1.81667 V2 2.6875 0 1.44375 + N0 0.880144 0.401503 -0.253261 N1 0.947588 0 -0.319493 N2 0.957826 0 -0.287348 + txt003 +STRI + V0 2.66528 0.189583 1.47014 V1 2.60972 0.303333 1.53611 V2 2.70988 0.237531 1.8678 + N0 0.913262 0.329186 -0.239977 N1 0.705424 0.704198 -0.0805066 N2 0.60461 0.794635 -0.0547983 + txt003 +STRI + V0 2.70988 0.237531 1.8678 V1 2.7716 0.148457 1.83128 V2 2.66528 0.189583 1.47014 + N0 0.60461 0.794635 -0.0547983 N1 0.880144 0.401503 -0.253261 N2 0.913262 0.329186 -0.239977 + txt003 +STRI + V0 2.60972 0.303333 1.53611 V1 2.5375 0.34125 1.62188 V2 2.62963 0.267222 1.91528 + N0 0.705424 0.704198 -0.0805066 N1 0.214084 0.960035 0.180281 N2 0.113546 0.974822 0.191909 + txt003 +STRI + V0 2.62963 0.267222 1.91528 V1 2.70988 0.237531 1.8678 V2 2.60972 0.303333 1.53611 + N0 0.113546 0.974822 0.191909 N1 0.60461 0.794635 -0.0547983 N2 0.705424 0.704198 -0.0805066 + txt003 +STRI + V0 2.5375 0.34125 1.62188 V1 2.46528 0.303333 1.70764 V2 2.54938 0.237531 1.96276 + N0 0.214084 0.960035 0.180281 N1 -0.451323 0.803033 0.38916 N2 -0.452673 0.821162 0.347535 + txt003 +STRI + V0 2.54938 0.237531 1.96276 V1 2.62963 0.267222 1.91528 V2 2.5375 0.34125 1.62188 + N0 -0.452673 0.821162 0.347535 N1 0.113546 0.974822 0.191909 N2 0.214084 0.960035 0.180281 + txt003 +STRI + V0 2.46528 0.303333 1.70764 V1 2.40972 0.189583 1.77361 V2 2.48765 0.148457 1.99928 + N0 -0.451323 0.803033 0.38916 N1 -0.835237 0.363942 0.412221 N2 -0.842821 0.409176 0.34961 + txt003 +STRI + V0 2.48765 0.148457 1.99928 V1 2.54938 0.237531 1.96276 V2 2.46528 0.303333 1.70764 + N0 -0.842821 0.409176 0.34961 N1 -0.452673 0.821162 0.347535 N2 -0.451323 0.803033 0.38916 + txt003 +STRI + V0 2.40972 0.189583 1.77361 V1 2.3875 0 1.8 V2 2.46296 0 2.01389 + N0 -0.835237 0.363942 0.412221 N1 -0.920582 -2.76813e-16 0.39055 N2 -0.948683 -4.59839e-16 0.316228 + txt003 +STRI + V0 2.46296 0 2.01389 V1 2.48765 0.148457 1.99928 V2 2.40972 0.189583 1.77361 + N0 -0.948683 -4.59839e-16 0.316228 N1 -0.842821 0.409176 0.34961 N2 -0.835237 0.363942 0.412221 + txt003 +STRI + V0 2.7963 0 1.81667 V1 2.7716 0.148457 1.83128 V2 2.93534 0.116821 2.15738 + N0 0.947588 0 -0.319493 N1 0.880144 0.401503 -0.253261 N2 0.70819 0.492319 -0.506053 + txt003 +STRI + V0 2.93534 0.116821 2.15738 V1 2.9662 0 2.15208 V2 2.7963 0 1.81667 + N0 0.70819 0.492319 -0.506053 N1 0.787582 0 -0.61621 N2 0.947588 0 -0.319493 + txt003 +STRI + V0 2.7716 0.148457 1.83128 V1 2.70988 0.237531 1.8678 V2 2.85818 0.186914 2.17063 + N0 0.880144 0.401503 -0.253261 N1 0.60461 0.794635 -0.0547983 N2 0.417243 0.88974 -0.185122 + txt003 +STRI + V0 2.85818 0.186914 2.17063 V1 2.93534 0.116821 2.15738 V2 2.7716 0.148457 1.83128 + N0 0.417243 0.88974 -0.185122 N1 0.70819 0.492319 -0.506053 N2 0.880144 0.401503 -0.253261 + txt003 +STRI + V0 2.70988 0.237531 1.8678 V1 2.62963 0.267222 1.91528 V2 2.75787 0.210278 2.18785 + N0 0.60461 0.794635 -0.0547983 N1 0.113546 0.974822 0.191909 N2 0.0260102 0.988113 0.151516 + txt003 +STRI + V0 2.75787 0.210278 2.18785 V1 2.85818 0.186914 2.17063 V2 2.70988 0.237531 1.8678 + N0 0.0260102 0.988113 0.151516 N1 0.417243 0.88974 -0.185122 N2 0.60461 0.794635 -0.0547983 + txt003 +STRI + V0 2.62963 0.267222 1.91528 V1 2.54938 0.237531 1.96276 V2 2.65756 0.186914 2.20507 + N0 0.113546 0.974822 0.191909 N1 -0.452673 0.821162 0.347535 N2 -0.365378 0.851743 0.375544 + txt003 +STRI + V0 2.65756 0.186914 2.20507 V1 2.75787 0.210278 2.18785 V2 2.62963 0.267222 1.91528 + N0 -0.365378 0.851743 0.375544 N1 0.0260102 0.988113 0.151516 N2 0.113546 0.974822 0.191909 + txt003 +STRI + V0 2.54938 0.237531 1.96276 V1 2.48765 0.148457 1.99928 V2 2.5804 0.116821 2.21831 + N0 -0.452673 0.821162 0.347535 N1 -0.842821 0.409176 0.34961 N2 -0.723795 0.498863 0.476715 + txt003 +STRI + V0 2.5804 0.116821 2.21831 V1 2.65756 0.186914 2.20507 V2 2.54938 0.237531 1.96276 + N0 -0.723795 0.498863 0.476715 N1 -0.365378 0.851743 0.375544 N2 -0.452673 0.821162 0.347535 + txt003 +STRI + V0 2.48765 0.148457 1.99928 V1 2.46296 0 2.01389 V2 2.54954 0 2.22361 + N0 -0.842821 0.409176 0.34961 N1 -0.948683 -4.59839e-16 0.316228 N2 -0.874591 -1.30753e-15 0.484861 + txt003 +STRI + V0 2.54954 0 2.22361 V1 2.5804 0.116821 2.21831 V2 2.48765 0.148457 1.99928 + N0 -0.874591 -1.30753e-15 0.484861 N1 -0.723795 0.498863 0.476715 N2 -0.842821 0.409176 0.34961 + txt003 +STRI + V0 2.9662 0 2.15208 V1 2.93534 0.116821 2.15738 V2 3.25556 0.104167 2.4 + N0 0.787582 0 -0.61621 N1 0.70819 0.492319 -0.506053 N2 0.366221 0.366221 -0.855433 + txt003 +STRI + V0 3.25556 0.104167 2.4 V1 3.3 0 2.4 V2 2.9662 0 2.15208 + N0 0.366221 0.366221 -0.855433 N1 0.384615 0 -0.923077 N2 0.787582 0 -0.61621 + txt003 +STRI + V0 2.93534 0.116821 2.15738 V1 2.85818 0.186914 2.17063 V2 3.14444 0.166667 2.4 + N0 0.70819 0.492319 -0.506053 N1 0.417243 0.88974 -0.185122 N2 0.250514 0.801644 -0.54278 + txt003 +STRI + V0 3.14444 0.166667 2.4 V1 3.25556 0.104167 2.4 V2 2.93534 0.116821 2.15738 + N0 0.250514 0.801644 -0.54278 N1 0.366221 0.366221 -0.855433 N2 0.70819 0.492319 -0.506053 + txt003 +STRI + V0 2.85818 0.186914 2.17063 V1 2.75787 0.210278 2.18785 V2 3 0.1875 2.4 + N0 0.417243 0.88974 -0.185122 N1 0.0260102 0.988113 0.151516 N2 4.05793e-32 1 2.19303e-16 + txt003 +STRI + V0 3 0.1875 2.4 V1 3.14444 0.166667 2.4 V2 2.85818 0.186914 2.17063 + N0 4.05793e-32 1 2.19303e-16 N1 0.250514 0.801644 -0.54278 N2 0.417243 0.88974 -0.185122 + txt003 +STRI + V0 2.75787 0.210278 2.18785 V1 2.65756 0.186914 2.20507 V2 2.85556 0.166667 2.4 + N0 0.0260102 0.988113 0.151516 N1 -0.365378 0.851743 0.375544 N2 -0.267368 0.855576 0.443288 + txt003 +STRI + V0 2.85556 0.166667 2.4 V1 3 0.1875 2.4 V2 2.75787 0.210278 2.18785 + N0 -0.267368 0.855576 0.443288 N1 4.05793e-32 1 2.19303e-16 N2 0.0260102 0.988113 0.151516 + txt003 +STRI + V0 2.65756 0.186914 2.20507 V1 2.5804 0.116821 2.21831 V2 2.74444 0.104167 2.4 + N0 -0.365378 0.851743 0.375544 N1 -0.723795 0.498863 0.476715 N2 -0.497164 0.497164 0.711095 + txt003 +STRI + V0 2.74444 0.104167 2.4 V1 2.85556 0.166667 2.4 V2 2.65756 0.186914 2.20507 + N0 -0.497164 0.497164 0.711095 N1 -0.267368 0.855576 0.443288 N2 -0.365378 0.851743 0.375544 + txt003 +STRI + V0 2.5804 0.116821 2.21831 V1 2.54954 0 2.22361 V2 2.7 0 2.4 + N0 -0.723795 0.498863 0.476715 N1 -0.874591 -1.30753e-15 0.484861 N2 -0.6 -3.55271e-15 0.8 + txt003 +STRI + V0 2.7 0 2.4 V1 2.74444 0.104167 2.4 V2 2.5804 0.116821 2.21831 + N0 -0.6 -3.55271e-15 0.8 N1 -0.497164 0.497164 0.711095 N2 -0.723795 0.498863 0.476715 + txt003 +STRI + V0 2.7 0 2.4 V1 2.74444 -0.104167 2.4 V2 2.79641 -0.10108 2.43193 + N0 -0.6 0 0.8 N1 -0.497164 -0.497164 0.711095 N2 -0.387052 -0.411886 0.824949 + txt003 +STRI + V0 2.79641 -0.10108 2.43193 V1 2.74907 0 2.43125 V2 2.7 0 2.4 + N0 -0.387052 -0.411886 0.824949 N1 -0.467888 0 0.883788 N2 -0.6 0 0.8 + txt003 +STRI + V0 2.74444 -0.104167 2.4 V1 2.85556 -0.166667 2.4 V2 2.91474 -0.161728 2.43361 + N0 -0.497164 -0.497164 0.711095 N1 -0.267368 -0.855576 0.443288 N2 -0.215548 -0.724209 0.655027 + txt003 +STRI + V0 2.91474 -0.161728 2.43361 V1 2.79641 -0.10108 2.43193 V2 2.74444 -0.104167 2.4 + N0 -0.215548 -0.724209 0.655027 N1 -0.387052 -0.411886 0.824949 N2 -0.497164 -0.497164 0.711095 + txt003 +STRI + V0 2.85556 -0.166667 2.4 V1 3 -0.1875 2.4 V2 3.06858 -0.181944 2.43581 + N0 -0.267368 -0.855576 0.443288 N1 0 -1 0 N2 -0.00489618 -0.939227 0.343261 + txt003 +STRI + V0 3.06858 -0.181944 2.43581 V1 2.91474 -0.161728 2.43361 V2 2.85556 -0.166667 2.4 + N0 -0.00489618 -0.939227 0.343261 N1 -0.215548 -0.724209 0.655027 N2 -0.267368 -0.855576 0.443288 + txt003 +STRI + V0 3 -0.1875 2.4 V1 3.14444 -0.166667 2.4 V2 3.22241 -0.161728 2.438 + N0 0 -1 0 N1 0.250514 -0.801644 -0.54278 N2 0.269127 -0.933284 -0.237808 + txt003 +STRI + V0 3.22241 -0.161728 2.438 V1 3.06858 -0.181944 2.43581 V2 3 -0.1875 2.4 + N0 0.269127 -0.933284 -0.237808 N1 -0.00489618 -0.939227 0.343261 N2 0 -1 0 + txt003 +STRI + V0 3.14444 -0.166667 2.4 V1 3.25556 -0.104167 2.4 V2 3.34075 -0.10108 2.43969 + N0 0.250514 -0.801644 -0.54278 N1 0.366221 -0.366221 -0.855433 N2 0.442187 -0.473386 -0.761824 + txt003 +STRI + V0 3.34075 -0.10108 2.43969 V1 3.22241 -0.161728 2.438 V2 3.14444 -0.166667 2.4 + N0 0.442187 -0.473386 -0.761824 N1 0.269127 -0.933284 -0.237808 N2 0.250514 -0.801644 -0.54278 + txt003 +STRI + V0 3.25556 -0.104167 2.4 V1 3.3 0 2.4 V2 3.38808 0 2.44036 + N0 0.366221 -0.366221 -0.855433 N1 0.384615 -2.55067e-15 -0.923077 N2 0.463425 -2.75328e-15 -0.886136 + txt003 +STRI + V0 3.38808 0 2.44036 V1 3.34075 -0.10108 2.43969 V2 3.25556 -0.104167 2.4 + N0 0.463425 -2.75328e-15 -0.886136 N1 0.442187 -0.473386 -0.761824 N2 0.366221 -0.366221 -0.855433 + txt003 +STRI + V0 2.74907 0 2.43125 V1 2.79641 -0.10108 2.43193 V2 2.83978 -0.0933642 2.45123 + N0 -0.467888 0 0.883788 N1 -0.387052 -0.411886 0.824949 N2 -0.253997 -0.272114 0.928138 + txt003 +STRI + V0 2.83978 -0.0933642 2.45123 V1 2.79259 0 2.45 V2 2.74907 0 2.43125 + N0 -0.253997 -0.272114 0.928138 N1 -0.306009 0 0.952029 N2 -0.467888 0 0.883788 + txt003 +STRI + V0 2.79641 -0.10108 2.43193 V1 2.91474 -0.161728 2.43361 V2 2.95775 -0.149383 2.45432 + N0 -0.387052 -0.411886 0.824949 N1 -0.215548 -0.724209 0.655027 N2 -0.14959 -0.481391 0.863647 + txt003 +STRI + V0 2.95775 -0.149383 2.45432 V1 2.83978 -0.0933642 2.45123 V2 2.79641 -0.10108 2.43193 + N0 -0.14959 -0.481391 0.863647 N1 -0.253997 -0.272114 0.928138 N2 -0.387052 -0.411886 0.824949 + txt003 +STRI + V0 2.91474 -0.161728 2.43361 V1 3.06858 -0.181944 2.43581 V2 3.11111 -0.168056 2.45833 + N0 -0.215548 -0.724209 0.655027 N1 -0.00489618 -0.939227 0.343261 N2 -0.0195232 -0.665415 0.746219 + txt003 +STRI + V0 3.11111 -0.168056 2.45833 V1 2.95775 -0.149383 2.45432 V2 2.91474 -0.161728 2.43361 + N0 -0.0195232 -0.665415 0.746219 N1 -0.14959 -0.481391 0.863647 N2 -0.215548 -0.724209 0.655027 + txt003 +STRI + V0 3.06858 -0.181944 2.43581 V1 3.22241 -0.161728 2.438 V2 3.26447 -0.149383 2.46235 + N0 -0.00489618 -0.939227 0.343261 N1 0.269127 -0.933284 -0.237808 N2 0.218115 -0.87054 0.44112 + txt003 +STRI + V0 3.26447 -0.149383 2.46235 V1 3.11111 -0.168056 2.45833 V2 3.06858 -0.181944 2.43581 + N0 0.218115 -0.87054 0.44112 N1 -0.0195232 -0.665415 0.746219 N2 -0.00489618 -0.939227 0.343261 + txt003 +STRI + V0 3.22241 -0.161728 2.438 V1 3.34075 -0.10108 2.43969 V2 3.38244 -0.0933642 2.46543 + N0 0.269127 -0.933284 -0.237808 N1 0.442187 -0.473386 -0.761824 N2 0.612385 -0.714958 -0.337372 + txt003 +STRI + V0 3.38244 -0.0933642 2.46543 V1 3.26447 -0.149383 2.46235 V2 3.22241 -0.161728 2.438 + N0 0.612385 -0.714958 -0.337372 N1 0.218115 -0.87054 0.44112 N2 0.269127 -0.933284 -0.237808 + txt003 +STRI + V0 3.34075 -0.10108 2.43969 V1 3.38808 0 2.44036 V2 3.42963 0 2.46667 + N0 0.442187 -0.473386 -0.761824 N1 0.463425 -2.75328e-15 -0.886136 N2 0.694136 -3.24605e-15 -0.719844 + txt003 +STRI + V0 3.42963 0 2.46667 V1 3.38244 -0.0933642 2.46543 V2 3.34075 -0.10108 2.43969 + N0 0.694136 -3.24605e-15 -0.719844 N1 0.612385 -0.714958 -0.337372 N2 0.442187 -0.473386 -0.761824 + txt003 +STRI + V0 2.79259 0 2.45 V1 2.83978 -0.0933642 2.45123 V2 2.86968 -0.0833333 2.45781 + N0 -0.306009 0 0.952029 N1 -0.253997 -0.272114 0.928138 N2 -0.0182321 0.0210195 0.999613 + txt003 +STRI + V0 2.86968 -0.0833333 2.45781 V1 2.825 0 2.45625 V2 2.79259 0 2.45 + N0 -0.0182321 0.0210195 0.999613 N1 2.22045e-15 0 1 N2 -0.306009 0 0.952029 + txt003 +STRI + V0 2.83978 -0.0933642 2.45123 V1 2.95775 -0.149383 2.45432 V2 2.98137 -0.133333 2.46172 + N0 -0.253997 -0.272114 0.928138 N1 -0.14959 -0.481391 0.863647 N2 -0.0369301 -0.00796532 0.999286 + txt003 +STRI + V0 2.98137 -0.133333 2.46172 V1 2.86968 -0.0833333 2.45781 V2 2.83978 -0.0933642 2.45123 + N0 -0.0369301 -0.00796532 0.999286 N1 -0.0182321 0.0210195 0.999613 N2 -0.253997 -0.272114 0.928138 + txt003 +STRI + V0 2.95775 -0.149383 2.45432 V1 3.11111 -0.168056 2.45833 V2 3.12656 -0.15 2.4668 + N0 -0.14959 -0.481391 0.863647 N1 -0.0195232 -0.665415 0.746219 N2 -0.0348909 -0.0594438 0.997622 + txt003 +STRI + V0 3.12656 -0.15 2.4668 V1 2.98137 -0.133333 2.46172 V2 2.95775 -0.149383 2.45432 + N0 -0.0348909 -0.0594438 0.997622 N1 -0.0369301 -0.00796532 0.999286 N2 -0.14959 -0.481391 0.863647 + txt003 +STRI + V0 3.11111 -0.168056 2.45833 V1 3.26447 -0.149383 2.46235 V2 3.27176 -0.133333 2.47187 + N0 -0.0195232 -0.665415 0.746219 N1 0.218115 -0.87054 0.44112 N2 -0.00787186 -0.108144 0.994104 + txt003 +STRI + V0 3.27176 -0.133333 2.47187 V1 3.12656 -0.15 2.4668 V2 3.11111 -0.168056 2.45833 + N0 -0.00787186 -0.108144 0.994104 N1 -0.0348909 -0.0594438 0.997622 N2 -0.0195232 -0.665415 0.746219 + txt003 +STRI + V0 3.26447 -0.149383 2.46235 V1 3.38244 -0.0933642 2.46543 V2 3.38345 -0.0833333 2.47578 + N0 0.218115 -0.87054 0.44112 N1 0.612385 -0.714958 -0.337372 N2 0.0539577 -0.111406 0.992309 + txt003 +STRI + V0 3.38345 -0.0833333 2.47578 V1 3.27176 -0.133333 2.47187 V2 3.26447 -0.149383 2.46235 + N0 0.0539577 -0.111406 0.992309 N1 -0.00787186 -0.108144 0.994104 N2 0.218115 -0.87054 0.44112 + txt003 +STRI + V0 3.38244 -0.0933642 2.46543 V1 3.42963 0 2.46667 V2 3.42813 0 2.47734 + N0 0.612385 -0.714958 -0.337372 N1 0.694136 -3.24605e-15 -0.719844 N2 0.106533 1.89241e-15 0.994309 + txt003 +STRI + V0 3.42813 0 2.47734 V1 3.38345 -0.0833333 2.47578 V2 3.38244 -0.0933642 2.46543 + N0 0.106533 1.89241e-15 0.994309 N1 0.0539577 -0.111406 0.992309 N2 0.612385 -0.714958 -0.337372 + txt003 +STRI + V0 2.825 0 2.45625 V1 2.86968 -0.0833333 2.45781 V2 2.88121 -0.0733025 2.45154 + N0 2.22045e-15 0 1 N1 -0.0182321 0.0210195 0.999613 N2 0.507715 0.682832 0.525324 + txt003 +STRI + V0 2.88121 -0.0733025 2.45154 V1 2.84074 0 2.45 V2 2.825 0 2.45625 + N0 0.507715 0.682832 0.525324 N1 0.913812 0 0.406138 N2 2.22045e-15 0 1 + txt003 +STRI + V0 2.86968 -0.0833333 2.45781 V1 2.98137 -0.133333 2.46172 V2 2.98237 -0.117284 2.4554 + N0 -0.0182321 0.0210195 0.999613 N1 -0.0369301 -0.00796532 0.999286 N2 0.148477 0.721529 0.676277 + txt003 +STRI + V0 2.98237 -0.117284 2.4554 V1 2.88121 -0.0733025 2.45154 V2 2.86968 -0.0833333 2.45781 + N0 0.148477 0.721529 0.676277 N1 0.507715 0.682832 0.525324 N2 -0.0182321 0.0210195 0.999613 + txt003 +STRI + V0 2.98137 -0.133333 2.46172 V1 3.12656 -0.15 2.4668 V2 3.11389 -0.131944 2.46042 + N0 -0.0369301 -0.00796532 0.999286 N1 -0.0348909 -0.0594438 0.997622 N2 -0.0300305 0.615625 0.787467 + txt003 +STRI + V0 3.11389 -0.131944 2.46042 V1 2.98237 -0.117284 2.4554 V2 2.98137 -0.133333 2.46172 + N0 -0.0300305 0.615625 0.787467 N1 0.148477 0.721529 0.676277 N2 -0.0369301 -0.00796532 0.999286 + txt003 +STRI + V0 3.12656 -0.15 2.4668 V1 3.27176 -0.133333 2.47187 V2 3.2454 -0.117284 2.46543 + N0 -0.0348909 -0.0594438 0.997622 N1 -0.00787186 -0.108144 0.994104 N2 -0.144371 0.459364 0.876437 + txt003 +STRI + V0 3.2454 -0.117284 2.46543 V1 3.11389 -0.131944 2.46042 V2 3.12656 -0.15 2.4668 + N0 -0.144371 0.459364 0.876437 N1 -0.0300305 0.615625 0.787467 N2 -0.0348909 -0.0594438 0.997622 + txt003 +STRI + V0 3.27176 -0.133333 2.47187 V1 3.38345 -0.0833333 2.47578 V2 3.34657 -0.0733025 2.46929 + N0 -0.00787186 -0.108144 0.994104 N1 0.0539577 -0.111406 0.992309 N2 -0.223743 0.242919 0.943891 + txt003 +STRI + V0 3.34657 -0.0733025 2.46929 V1 3.2454 -0.117284 2.46543 V2 3.27176 -0.133333 2.47187 + N0 -0.223743 0.242919 0.943891 N1 -0.144371 0.459364 0.876437 N2 -0.00787186 -0.108144 0.994104 + txt003 +STRI + V0 3.38345 -0.0833333 2.47578 V1 3.42813 0 2.47734 V2 3.38704 0 2.47083 + N0 0.0539577 -0.111406 0.992309 N1 0.106533 1.89241e-15 0.994309 N2 -0.253109 3.19224e-15 0.967438 + txt003 +STRI + V0 3.38704 0 2.47083 V1 3.34657 -0.0733025 2.46929 V2 3.38345 -0.0833333 2.47578 + N0 -0.253109 3.19224e-15 0.967438 N1 -0.223743 0.242919 0.943891 N2 0.0539577 -0.111406 0.992309 + txt003 +STRI + V0 2.84074 0 2.45 V1 2.88121 -0.0733025 2.45154 V2 2.86949 -0.0655864 2.43231 + N0 0.913812 0 0.406138 N1 0.507715 0.682832 0.525324 N2 0.577416 0.711734 -0.400031 + txt003 +STRI + V0 2.86949 -0.0655864 2.43231 V1 2.83426 0 2.43125 V2 2.84074 0 2.45 + N0 0.577416 0.711734 -0.400031 N1 0.789352 0 -0.613941 N2 0.913812 0 0.406138 + txt003 +STRI + V0 2.88121 -0.0733025 2.45154 V1 2.98237 -0.117284 2.4554 V2 2.95756 -0.104938 2.43496 + N0 0.507715 0.682832 0.525324 N1 0.148477 0.721529 0.676277 N2 0.241288 0.970358 -0.0136399 + txt003 +STRI + V0 2.95756 -0.104938 2.43496 V1 2.86949 -0.0655864 2.43231 V2 2.88121 -0.0733025 2.45154 + N0 0.241288 0.970358 -0.0136399 N1 0.577416 0.711734 -0.400031 N2 0.507715 0.682832 0.525324 + txt003 +STRI + V0 2.98237 -0.117284 2.4554 V1 3.11389 -0.131944 2.46042 V2 3.07205 -0.118056 2.43841 + N0 0.148477 0.721529 0.676277 N1 -0.0300305 0.615625 0.787467 N2 -0.0103804 0.938666 0.344672 + txt003 +STRI + V0 3.07205 -0.118056 2.43841 V1 2.95756 -0.104938 2.43496 V2 2.98237 -0.117284 2.4554 + N0 -0.0103804 0.938666 0.344672 N1 0.241288 0.970358 -0.0136399 N2 0.148477 0.721529 0.676277 + txt003 +STRI + V0 3.11389 -0.131944 2.46042 V1 3.2454 -0.117284 2.46543 V2 3.18654 -0.104938 2.44186 + N0 -0.0300305 0.615625 0.787467 N1 -0.144371 0.459364 0.876437 N2 -0.199105 0.721639 0.663019 + txt003 +STRI + V0 3.18654 -0.104938 2.44186 V1 3.07205 -0.118056 2.43841 V2 3.11389 -0.131944 2.46042 + N0 -0.199105 0.721639 0.663019 N1 -0.0103804 0.938666 0.344672 N2 -0.0300305 0.615625 0.787467 + txt003 +STRI + V0 3.2454 -0.117284 2.46543 V1 3.34657 -0.0733025 2.46929 V2 3.27461 -0.0655864 2.44451 + N0 -0.144371 0.459364 0.876437 N1 -0.223743 0.242919 0.943891 N2 -0.316294 0.364979 0.875641 + txt003 +STRI + V0 3.27461 -0.0655864 2.44451 V1 3.18654 -0.104938 2.44186 V2 3.2454 -0.117284 2.46543 + N0 -0.316294 0.364979 0.875641 N1 -0.199105 0.721639 0.663019 N2 -0.144371 0.459364 0.876437 + txt003 +STRI + V0 3.34657 -0.0733025 2.46929 V1 3.38704 0 2.47083 V2 3.30984 0 2.44557 + N0 -0.223743 0.242919 0.943891 N1 -0.253109 3.19224e-15 0.967438 N2 -0.349987 4.0695e-15 0.936755 + txt003 +STRI + V0 3.30984 0 2.44557 V1 3.27461 -0.0655864 2.44451 V2 3.34657 -0.0733025 2.46929 + N0 -0.349987 4.0695e-15 0.936755 N1 -0.316294 0.364979 0.875641 N2 -0.223743 0.242919 0.943891 + txt003 +STRI + V0 2.83426 0 2.43125 V1 2.86949 -0.0655864 2.43231 V2 2.82963 -0.0625 2.4 + N0 0.789352 0 -0.613941 N1 0.577416 0.711734 -0.400031 N2 0.483629 0.537366 -0.690899 + txt003 +STRI + V0 2.82963 -0.0625 2.4 V1 2.8 0 2.4 V2 2.83426 0 2.43125 + N0 0.483629 0.537366 -0.690899 N1 0.6 0 -0.8 N2 0.789352 0 -0.613941 + txt003 +STRI + V0 2.86949 -0.0655864 2.43231 V1 2.95756 -0.104938 2.43496 V2 2.9037 -0.1 2.4 + N0 0.577416 0.711734 -0.400031 N1 0.241288 0.970358 -0.0136399 N2 0.247465 0.879877 -0.405681 + txt003 +STRI + V0 2.9037 -0.1 2.4 V1 2.82963 -0.0625 2.4 V2 2.86949 -0.0655864 2.43231 + N0 0.247465 0.879877 -0.405681 N1 0.483629 0.537366 -0.690899 N2 0.577416 0.711734 -0.400031 + txt003 +STRI + V0 2.95756 -0.104938 2.43496 V1 3.07205 -0.118056 2.43841 V2 3 -0.1125 2.4 + N0 0.241288 0.970358 -0.0136399 N1 -0.0103804 0.938666 0.344672 N2 0 1 0 + txt003 +STRI + V0 3 -0.1125 2.4 V1 2.9037 -0.1 2.4 V2 2.95756 -0.104938 2.43496 + N0 0 1 0 N1 0.247465 0.879877 -0.405681 N2 0.241288 0.970358 -0.0136399 + txt003 +STRI + V0 3.07205 -0.118056 2.43841 V1 3.18654 -0.104938 2.44186 V2 3.0963 -0.1 2.4 + N0 -0.0103804 0.938666 0.344672 N1 -0.199105 0.721639 0.663019 N2 -0.236617 0.841304 0.486024 + txt003 +STRI + V0 3.0963 -0.1 2.4 V1 3 -0.1125 2.4 V2 3.07205 -0.118056 2.43841 + N0 -0.236617 0.841304 0.486024 N1 0 1 0 N2 -0.0103804 0.938666 0.344672 + txt003 +STRI + V0 3.18654 -0.104938 2.44186 V1 3.27461 -0.0655864 2.44451 V2 3.17037 -0.0625 2.4 + N0 -0.199105 0.721639 0.663019 N1 -0.316294 0.364979 0.875641 N2 -0.378646 0.420717 0.824393 + txt003 +STRI + V0 3.17037 -0.0625 2.4 V1 3.0963 -0.1 2.4 V2 3.18654 -0.104938 2.44186 + N0 -0.378646 0.420717 0.824393 N1 -0.236617 0.841304 0.486024 N2 -0.199105 0.721639 0.663019 + txt003 +STRI + V0 3.27461 -0.0655864 2.44451 V1 3.30984 0 2.44557 V2 3.2 0 2.4 + N0 -0.316294 0.364979 0.875641 N1 -0.349987 4.0695e-15 0.936755 N2 -0.410365 4.31973e-15 0.911922 + txt003 +STRI + V0 3.2 0 2.4 V1 3.17037 -0.0625 2.4 V2 3.27461 -0.0655864 2.44451 + N0 -0.410365 4.31973e-15 0.911922 N1 -0.378646 0.420717 0.824393 N2 -0.316294 0.364979 0.875641 + txt003 +STRI + V0 3.3 0 2.4 V1 3.25556 0.104167 2.4 V2 3.34075 0.10108 2.43969 + N0 0.384615 0 -0.923077 N1 0.366221 0.366221 -0.855433 N2 0.442187 0.473386 -0.761824 + txt003 +STRI + V0 3.34075 0.10108 2.43969 V1 3.38808 0 2.44036 V2 3.3 0 2.4 + N0 0.442187 0.473386 -0.761824 N1 0.463425 0 -0.886136 N2 0.384615 0 -0.923077 + txt003 +STRI + V0 3.25556 0.104167 2.4 V1 3.14444 0.166667 2.4 V2 3.22241 0.161728 2.438 + N0 0.366221 0.366221 -0.855433 N1 0.250514 0.801644 -0.54278 N2 0.269127 0.933284 -0.237808 + txt003 +STRI + V0 3.22241 0.161728 2.438 V1 3.34075 0.10108 2.43969 V2 3.25556 0.104167 2.4 + N0 0.269127 0.933284 -0.237808 N1 0.442187 0.473386 -0.761824 N2 0.366221 0.366221 -0.855433 + txt003 +STRI + V0 3.14444 0.166667 2.4 V1 3 0.1875 2.4 V2 3.06858 0.181944 2.43581 + N0 0.250514 0.801644 -0.54278 N1 0 1 -0 N2 -0.00489618 0.939227 0.343261 + txt003 +STRI + V0 3.06858 0.181944 2.43581 V1 3.22241 0.161728 2.438 V2 3.14444 0.166667 2.4 + N0 -0.00489618 0.939227 0.343261 N1 0.269127 0.933284 -0.237808 N2 0.250514 0.801644 -0.54278 + txt003 +STRI + V0 3 0.1875 2.4 V1 2.85556 0.166667 2.4 V2 2.91474 0.161728 2.43361 + N0 0 1 -0 N1 -0.267368 0.855576 0.443288 N2 -0.215548 0.724209 0.655027 + txt003 +STRI + V0 2.91474 0.161728 2.43361 V1 3.06858 0.181944 2.43581 V2 3 0.1875 2.4 + N0 -0.215548 0.724209 0.655027 N1 -0.00489618 0.939227 0.343261 N2 0 1 -0 + txt003 +STRI + V0 2.85556 0.166667 2.4 V1 2.74444 0.104167 2.4 V2 2.79641 0.10108 2.43193 + N0 -0.267368 0.855576 0.443288 N1 -0.497164 0.497164 0.711095 N2 -0.387052 0.411886 0.824949 + txt003 +STRI + V0 2.79641 0.10108 2.43193 V1 2.91474 0.161728 2.43361 V2 2.85556 0.166667 2.4 + N0 -0.387052 0.411886 0.824949 N1 -0.215548 0.724209 0.655027 N2 -0.267368 0.855576 0.443288 + txt003 +STRI + V0 2.74444 0.104167 2.4 V1 2.7 0 2.4 V2 2.74907 0 2.43125 + N0 -0.497164 0.497164 0.711095 N1 -0.6 2.24387e-29 0.8 N2 -0.467888 -4.75841e-16 0.883788 + txt003 +STRI + V0 2.74907 0 2.43125 V1 2.79641 0.10108 2.43193 V2 2.74444 0.104167 2.4 + N0 -0.467888 -4.75841e-16 0.883788 N1 -0.387052 0.411886 0.824949 N2 -0.497164 0.497164 0.711095 + txt003 +STRI + V0 3.38808 0 2.44036 V1 3.34075 0.10108 2.43969 V2 3.38244 0.0933642 2.46543 + N0 0.463425 0 -0.886136 N1 0.442187 0.473386 -0.761824 N2 0.612385 0.714958 -0.337372 + txt003 +STRI + V0 3.38244 0.0933642 2.46543 V1 3.42963 0 2.46667 V2 3.38808 0 2.44036 + N0 0.612385 0.714958 -0.337372 N1 0.694136 0 -0.719844 N2 0.463425 0 -0.886136 + txt003 +STRI + V0 3.34075 0.10108 2.43969 V1 3.22241 0.161728 2.438 V2 3.26447 0.149383 2.46235 + N0 0.442187 0.473386 -0.761824 N1 0.269127 0.933284 -0.237808 N2 0.218115 0.87054 0.44112 + txt003 +STRI + V0 3.26447 0.149383 2.46235 V1 3.38244 0.0933642 2.46543 V2 3.34075 0.10108 2.43969 + N0 0.218115 0.87054 0.44112 N1 0.612385 0.714958 -0.337372 N2 0.442187 0.473386 -0.761824 + txt003 +STRI + V0 3.22241 0.161728 2.438 V1 3.06858 0.181944 2.43581 V2 3.11111 0.168056 2.45833 + N0 0.269127 0.933284 -0.237808 N1 -0.00489618 0.939227 0.343261 N2 -0.0195232 0.665415 0.746219 + txt003 +STRI + V0 3.11111 0.168056 2.45833 V1 3.26447 0.149383 2.46235 V2 3.22241 0.161728 2.438 + N0 -0.0195232 0.665415 0.746219 N1 0.218115 0.87054 0.44112 N2 0.269127 0.933284 -0.237808 + txt003 +STRI + V0 3.06858 0.181944 2.43581 V1 2.91474 0.161728 2.43361 V2 2.95775 0.149383 2.45432 + N0 -0.00489618 0.939227 0.343261 N1 -0.215548 0.724209 0.655027 N2 -0.14959 0.481391 0.863647 + txt003 +STRI + V0 2.95775 0.149383 2.45432 V1 3.11111 0.168056 2.45833 V2 3.06858 0.181944 2.43581 + N0 -0.14959 0.481391 0.863647 N1 -0.0195232 0.665415 0.746219 N2 -0.00489618 0.939227 0.343261 + txt003 +STRI + V0 2.91474 0.161728 2.43361 V1 2.79641 0.10108 2.43193 V2 2.83978 0.0933642 2.45123 + N0 -0.215548 0.724209 0.655027 N1 -0.387052 0.411886 0.824949 N2 -0.253997 0.272114 0.928138 + txt003 +STRI + V0 2.83978 0.0933642 2.45123 V1 2.95775 0.149383 2.45432 V2 2.91474 0.161728 2.43361 + N0 -0.253997 0.272114 0.928138 N1 -0.14959 0.481391 0.863647 N2 -0.215548 0.724209 0.655027 + txt003 +STRI + V0 2.79641 0.10108 2.43193 V1 2.74907 0 2.43125 V2 2.79259 0 2.45 + N0 -0.387052 0.411886 0.824949 N1 -0.467888 -4.75841e-16 0.883788 N2 -0.306009 -1.09783e-15 0.952029 + txt003 +STRI + V0 2.79259 0 2.45 V1 2.83978 0.0933642 2.45123 V2 2.79641 0.10108 2.43193 + N0 -0.306009 -1.09783e-15 0.952029 N1 -0.253997 0.272114 0.928138 N2 -0.387052 0.411886 0.824949 + txt003 +STRI + V0 3.42963 0 2.46667 V1 3.38244 0.0933642 2.46543 V2 3.38345 0.0833333 2.47578 + N0 0.694136 0 -0.719844 N1 0.612385 0.714958 -0.337372 N2 0.0539577 0.111406 0.992309 + txt003 +STRI + V0 3.38345 0.0833333 2.47578 V1 3.42813 0 2.47734 V2 3.42963 0 2.46667 + N0 0.0539577 0.111406 0.992309 N1 0.106533 -0 0.994309 N2 0.694136 0 -0.719844 + txt003 +STRI + V0 3.38244 0.0933642 2.46543 V1 3.26447 0.149383 2.46235 V2 3.27176 0.133333 2.47188 + N0 0.612385 0.714958 -0.337372 N1 0.218115 0.87054 0.44112 N2 -0.00787186 0.108144 0.994104 + txt003 +STRI + V0 3.27176 0.133333 2.47188 V1 3.38345 0.0833333 2.47578 V2 3.38244 0.0933642 2.46543 + N0 -0.00787186 0.108144 0.994104 N1 0.0539577 0.111406 0.992309 N2 0.612385 0.714958 -0.337372 + txt003 +STRI + V0 3.26447 0.149383 2.46235 V1 3.11111 0.168056 2.45833 V2 3.12656 0.15 2.4668 + N0 0.218115 0.87054 0.44112 N1 -0.0195232 0.665415 0.746219 N2 -0.0348909 0.0594438 0.997622 + txt003 +STRI + V0 3.12656 0.15 2.4668 V1 3.27176 0.133333 2.47188 V2 3.26447 0.149383 2.46235 + N0 -0.0348909 0.0594438 0.997622 N1 -0.00787186 0.108144 0.994104 N2 0.218115 0.87054 0.44112 + txt003 +STRI + V0 3.11111 0.168056 2.45833 V1 2.95775 0.149383 2.45432 V2 2.98137 0.133333 2.46172 + N0 -0.0195232 0.665415 0.746219 N1 -0.14959 0.481391 0.863647 N2 -0.0369301 0.00796532 0.999286 + txt003 +STRI + V0 2.98137 0.133333 2.46172 V1 3.12656 0.15 2.4668 V2 3.11111 0.168056 2.45833 + N0 -0.0369301 0.00796532 0.999286 N1 -0.0348909 0.0594438 0.997622 N2 -0.0195232 0.665415 0.746219 + txt003 +STRI + V0 2.95775 0.149383 2.45432 V1 2.83978 0.0933642 2.45123 V2 2.86968 0.0833333 2.45781 + N0 -0.14959 0.481391 0.863647 N1 -0.253997 0.272114 0.928138 N2 -0.0182321 -0.0210195 0.999613 + txt003 +STRI + V0 2.86968 0.0833333 2.45781 V1 2.98137 0.133333 2.46172 V2 2.95775 0.149383 2.45432 + N0 -0.0182321 -0.0210195 0.999613 N1 -0.0369301 0.00796532 0.999286 N2 -0.14959 0.481391 0.863647 + txt003 +STRI + V0 2.83978 0.0933642 2.45123 V1 2.79259 0 2.45 V2 2.825 0 2.45625 + N0 -0.253997 0.272114 0.928138 N1 -0.306009 -1.09783e-15 0.952029 N2 2.22045e-15 -2.22045e-15 1 + txt003 +STRI + V0 2.825 0 2.45625 V1 2.86968 0.0833333 2.45781 V2 2.83978 0.0933642 2.45123 + N0 2.22045e-15 -2.22045e-15 1 N1 -0.0182321 -0.0210195 0.999613 N2 -0.253997 0.272114 0.928138 + txt003 +STRI + V0 3.42813 0 2.47734 V1 3.38345 0.0833333 2.47578 V2 3.34657 0.0733025 2.46929 + N0 0.106533 -0 0.994309 N1 0.0539577 0.111406 0.992309 N2 -0.223743 -0.242919 0.943891 + txt003 +STRI + V0 3.34657 0.0733025 2.46929 V1 3.38704 0 2.47083 V2 3.42813 0 2.47734 + N0 -0.223743 -0.242919 0.943891 N1 -0.253109 0 0.967438 N2 0.106533 -0 0.994309 + txt003 +STRI + V0 3.38345 0.0833333 2.47578 V1 3.27176 0.133333 2.47188 V2 3.2454 0.117284 2.46543 + N0 0.0539577 0.111406 0.992309 N1 -0.00787186 0.108144 0.994104 N2 -0.144371 -0.459364 0.876437 + txt003 +STRI + V0 3.2454 0.117284 2.46543 V1 3.34657 0.0733025 2.46929 V2 3.38345 0.0833333 2.47578 + N0 -0.144371 -0.459364 0.876437 N1 -0.223743 -0.242919 0.943891 N2 0.0539577 0.111406 0.992309 + txt003 +STRI + V0 3.27176 0.133333 2.47188 V1 3.12656 0.15 2.4668 V2 3.11389 0.131944 2.46042 + N0 -0.00787186 0.108144 0.994104 N1 -0.0348909 0.0594438 0.997622 N2 -0.0300305 -0.615625 0.787467 + txt003 +STRI + V0 3.11389 0.131944 2.46042 V1 3.2454 0.117284 2.46543 V2 3.27176 0.133333 2.47188 + N0 -0.0300305 -0.615625 0.787467 N1 -0.144371 -0.459364 0.876437 N2 -0.00787186 0.108144 0.994104 + txt003 +STRI + V0 3.12656 0.15 2.4668 V1 2.98137 0.133333 2.46172 V2 2.98237 0.117284 2.4554 + N0 -0.0348909 0.0594438 0.997622 N1 -0.0369301 0.00796532 0.999286 N2 0.148477 -0.721529 0.676277 + txt003 +STRI + V0 2.98237 0.117284 2.4554 V1 3.11389 0.131944 2.46042 V2 3.12656 0.15 2.4668 + N0 0.148477 -0.721529 0.676277 N1 -0.0300305 -0.615625 0.787467 N2 -0.0348909 0.0594438 0.997622 + txt003 +STRI + V0 2.98137 0.133333 2.46172 V1 2.86968 0.0833333 2.45781 V2 2.88121 0.0733025 2.45154 + N0 -0.0369301 0.00796532 0.999286 N1 -0.0182321 -0.0210195 0.999613 N2 0.507715 -0.682832 0.525324 + txt003 +STRI + V0 2.88121 0.0733025 2.45154 V1 2.98237 0.117284 2.4554 V2 2.98137 0.133333 2.46172 + N0 0.507715 -0.682832 0.525324 N1 0.148477 -0.721529 0.676277 N2 -0.0369301 0.00796532 0.999286 + txt003 +STRI + V0 2.86968 0.0833333 2.45781 V1 2.825 0 2.45625 V2 2.84074 0 2.45 + N0 -0.0182321 -0.0210195 0.999613 N1 2.22045e-15 -2.22045e-15 1 N2 0.913812 -4.13289e-15 0.406138 + txt003 +STRI + V0 2.84074 0 2.45 V1 2.88121 0.0733025 2.45154 V2 2.86968 0.0833333 2.45781 + N0 0.913812 -4.13289e-15 0.406138 N1 0.507715 -0.682832 0.525324 N2 -0.0182321 -0.0210195 0.999613 + txt003 +STRI + V0 3.38704 0 2.47083 V1 3.34657 0.0733025 2.46929 V2 3.27461 0.0655864 2.44451 + N0 -0.253109 0 0.967438 N1 -0.223743 -0.242919 0.943891 N2 -0.316294 -0.364979 0.875641 + txt003 +STRI + V0 3.27461 0.0655864 2.44451 V1 3.30984 0 2.44557 V2 3.38704 0 2.47083 + N0 -0.316294 -0.364979 0.875641 N1 -0.349987 0 0.936755 N2 -0.253109 0 0.967438 + txt003 +STRI + V0 3.34657 0.0733025 2.46929 V1 3.2454 0.117284 2.46543 V2 3.18654 0.104938 2.44186 + N0 -0.223743 -0.242919 0.943891 N1 -0.144371 -0.459364 0.876437 N2 -0.199105 -0.721639 0.663019 + txt003 +STRI + V0 3.18654 0.104938 2.44186 V1 3.27461 0.0655864 2.44451 V2 3.34657 0.0733025 2.46929 + N0 -0.199105 -0.721639 0.663019 N1 -0.316294 -0.364979 0.875641 N2 -0.223743 -0.242919 0.943891 + txt003 +STRI + V0 3.2454 0.117284 2.46543 V1 3.11389 0.131944 2.46042 V2 3.07205 0.118056 2.43841 + N0 -0.144371 -0.459364 0.876437 N1 -0.0300305 -0.615625 0.787467 N2 -0.0103804 -0.938666 0.344672 + txt003 +STRI + V0 3.07205 0.118056 2.43841 V1 3.18654 0.104938 2.44186 V2 3.2454 0.117284 2.46543 + N0 -0.0103804 -0.938666 0.344672 N1 -0.199105 -0.721639 0.663019 N2 -0.144371 -0.459364 0.876437 + txt003 +STRI + V0 3.11389 0.131944 2.46042 V1 2.98237 0.117284 2.4554 V2 2.95756 0.104938 2.43496 + N0 -0.0300305 -0.615625 0.787467 N1 0.148477 -0.721529 0.676277 N2 0.241288 -0.970358 -0.0136399 + txt003 +STRI + V0 2.95756 0.104938 2.43496 V1 3.07205 0.118056 2.43841 V2 3.11389 0.131944 2.46042 + N0 0.241288 -0.970358 -0.0136399 N1 -0.0103804 -0.938666 0.344672 N2 -0.0300305 -0.615625 0.787467 + txt003 +STRI + V0 2.98237 0.117284 2.4554 V1 2.88121 0.0733025 2.45154 V2 2.86949 0.0655864 2.43231 + N0 0.148477 -0.721529 0.676277 N1 0.507715 -0.682832 0.525324 N2 0.577416 -0.711734 -0.400031 + txt003 +STRI + V0 2.86949 0.0655864 2.43231 V1 2.95756 0.104938 2.43496 V2 2.98237 0.117284 2.4554 + N0 0.577416 -0.711734 -0.400031 N1 0.241288 -0.970358 -0.0136399 N2 0.148477 -0.721529 0.676277 + txt003 +STRI + V0 2.88121 0.0733025 2.45154 V1 2.84074 0 2.45 V2 2.83426 0 2.43125 + N0 0.507715 -0.682832 0.525324 N1 0.913812 -4.13289e-15 0.406138 N2 0.789352 -1.30938e-15 -0.613941 + txt003 +STRI + V0 2.83426 0 2.43125 V1 2.86949 0.0655864 2.43231 V2 2.88121 0.0733025 2.45154 + N0 0.789352 -1.30938e-15 -0.613941 N1 0.577416 -0.711734 -0.400031 N2 0.507715 -0.682832 0.525324 + txt003 +STRI + V0 3.30984 0 2.44557 V1 3.27461 0.0655864 2.44451 V2 3.17037 0.0625 2.4 + N0 -0.349987 0 0.936755 N1 -0.316294 -0.364979 0.875641 N2 -0.378646 -0.420717 0.824393 + txt003 +STRI + V0 3.17037 0.0625 2.4 V1 3.2 0 2.4 V2 3.30984 0 2.44557 + N0 -0.378646 -0.420717 0.824393 N1 -0.410365 0 0.911922 N2 -0.349987 0 0.936755 + txt003 +STRI + V0 3.27461 0.0655864 2.44451 V1 3.18654 0.104938 2.44186 V2 3.0963 0.1 2.4 + N0 -0.316294 -0.364979 0.875641 N1 -0.199105 -0.721639 0.663019 N2 -0.236617 -0.841304 0.486024 + txt003 +STRI + V0 3.0963 0.1 2.4 V1 3.17037 0.0625 2.4 V2 3.27461 0.0655864 2.44451 + N0 -0.236617 -0.841304 0.486024 N1 -0.378646 -0.420717 0.824393 N2 -0.316294 -0.364979 0.875641 + txt003 +STRI + V0 3.18654 0.104938 2.44186 V1 3.07205 0.118056 2.43841 V2 3 0.1125 2.4 + N0 -0.199105 -0.721639 0.663019 N1 -0.0103804 -0.938666 0.344672 N2 0 -1 0 + txt003 +STRI + V0 3 0.1125 2.4 V1 3.0963 0.1 2.4 V2 3.18654 0.104938 2.44186 + N0 0 -1 0 N1 -0.236617 -0.841304 0.486024 N2 -0.199105 -0.721639 0.663019 + txt003 +STRI + V0 3.07205 0.118056 2.43841 V1 2.95756 0.104938 2.43496 V2 2.9037 0.1 2.4 + N0 -0.0103804 -0.938666 0.344672 N1 0.241288 -0.970358 -0.0136399 N2 0.247465 -0.879877 -0.405681 + txt003 +STRI + V0 2.9037 0.1 2.4 V1 3 0.1125 2.4 V2 3.07205 0.118056 2.43841 + N0 0.247465 -0.879877 -0.405681 N1 0 -1 0 N2 -0.0103804 -0.938666 0.344672 + txt003 +STRI + V0 2.95756 0.104938 2.43496 V1 2.86949 0.0655864 2.43231 V2 2.82963 0.0625 2.4 + N0 0.241288 -0.970358 -0.0136399 N1 0.577416 -0.711734 -0.400031 N2 0.483629 -0.537366 -0.690899 + txt003 +STRI + V0 2.82963 0.0625 2.4 V1 2.9037 0.1 2.4 V2 2.95756 0.104938 2.43496 + N0 0.483629 -0.537366 -0.690899 N1 0.247465 -0.879877 -0.405681 N2 0.241288 -0.970358 -0.0136399 + txt003 +STRI + V0 2.86949 0.0655864 2.43231 V1 2.83426 0 2.43125 V2 2.8 0 2.4 + N0 0.577416 -0.711734 -0.400031 N1 0.789352 -1.30938e-15 -0.613941 N2 0.6 -3.73979e-29 -0.8 + txt003 +STRI + V0 2.8 0 2.4 V1 2.82963 0.0625 2.4 V2 2.86949 0.0655864 2.43231 + N0 0.6 -3.73979e-29 -0.8 N1 0.483629 -0.537366 -0.690899 N2 0.577416 -0.711734 -0.400031 + txt003 +STRI + V0 0.268946 -0.0750782 3.12708 V1 0.278704 0 3.12708 V2 0 0 3.15 + N0 0.241077 -0.0645609 0.968356 N1 0.249998 0 0.968246 N2 0 0 1 + txt003 +STRI + V0 0.241285 -0.141931 3.12708 V1 0.268946 -0.0750782 3.12708 V2 0 0 3.15 + N0 0.215548 -0.124615 0.968509 N1 0.241077 -0.0645609 0.968356 N2 0 0 1 + txt003 +STRI + V0 0.19814 -0.19814 3.12708 V1 0.241285 -0.141931 3.12708 V2 0 0 3.15 + N0 0.175885 -0.175885 0.96857 N1 0.215548 -0.124615 0.968509 N2 0 0 1 + txt003 +STRI + V0 0.141931 -0.241285 3.12708 V1 0.19814 -0.19814 3.12708 V2 0 0 3.15 + N0 0.124615 -0.215548 0.968509 N1 0.175885 -0.175885 0.96857 N2 0 0 1 + txt003 +STRI + V0 0.0750782 -0.268946 3.12708 V1 0.141931 -0.241285 3.12708 V2 0 0 3.15 + N0 0.0645609 -0.241077 0.968356 N1 0.124615 -0.215548 0.968509 N2 0 0 1 + txt003 +STRI + V0 0 -0.278704 3.12708 V1 0.0750782 -0.268946 3.12708 V2 0 0 3.15 + N0 -2.80184e-15 -0.249998 0.968246 N1 0.0645609 -0.241077 0.968356 N2 0 0 1 + txt003 +STRI + V0 0.278704 0 3.12708 V1 0.268946 -0.0750782 3.12708 V2 0.350254 -0.0977709 3.06667 + N0 0.249998 0 0.968246 N1 0.241077 -0.0645609 0.968356 N2 0.955496 -0.255913 0.146755 + txt003 +STRI + V0 0.350254 -0.0977709 3.06667 V1 0.362963 0 3.06667 V2 0.278704 0 3.12708 + N0 0.955496 -0.255913 0.146755 N1 0.989203 0 0.146549 N2 0.249998 0 0.968246 + txt003 +STRI + V0 0.268946 -0.0750782 3.12708 V1 0.241285 -0.141931 3.12708 V2 0.314228 -0.184834 3.06667 + N0 0.241077 -0.0645609 0.968356 N1 0.215548 -0.124615 0.968509 N2 0.856312 -0.495088 0.147029 + txt003 +STRI + V0 0.314228 -0.184834 3.06667 V1 0.350254 -0.0977709 3.06667 V2 0.268946 -0.0750782 3.12708 + N0 0.856312 -0.495088 0.147029 N1 0.955496 -0.255913 0.146755 N2 0.241077 -0.0645609 0.968356 + txt003 +STRI + V0 0.241285 -0.141931 3.12708 V1 0.19814 -0.19814 3.12708 V2 0.258037 -0.258037 3.06667 + N0 0.215548 -0.124615 0.968509 N1 0.175885 -0.175885 0.96857 N2 0.699411 -0.699411 0.147135 + txt003 +STRI + V0 0.258037 -0.258037 3.06667 V1 0.314228 -0.184834 3.06667 V2 0.241285 -0.141931 3.12708 + N0 0.699411 -0.699411 0.147135 N1 0.856312 -0.495088 0.147029 N2 0.215548 -0.124615 0.968509 + txt003 +STRI + V0 0.19814 -0.19814 3.12708 V1 0.141931 -0.241285 3.12708 V2 0.184834 -0.314228 3.06667 + N0 0.175885 -0.175885 0.96857 N1 0.124615 -0.215548 0.968509 N2 0.495088 -0.856312 0.147029 + txt003 +STRI + V0 0.184834 -0.314228 3.06667 V1 0.258037 -0.258037 3.06667 V2 0.19814 -0.19814 3.12708 + N0 0.495088 -0.856312 0.147029 N1 0.699411 -0.699411 0.147135 N2 0.175885 -0.175885 0.96857 + txt003 +STRI + V0 0.141931 -0.241285 3.12708 V1 0.0750782 -0.268946 3.12708 V2 0.0977709 -0.350254 3.06667 + N0 0.124615 -0.215548 0.968509 N1 0.0645609 -0.241077 0.968356 N2 0.255913 -0.955496 0.146755 + txt003 +STRI + V0 0.0977709 -0.350254 3.06667 V1 0.184834 -0.314228 3.06667 V2 0.141931 -0.241285 3.12708 + N0 0.255913 -0.955496 0.146755 N1 0.495088 -0.856312 0.147029 N2 0.124615 -0.215548 0.968509 + txt003 +STRI + V0 0.0750782 -0.268946 3.12708 V1 0 -0.278704 3.12708 V2 0 -0.362963 3.06667 + N0 0.0645609 -0.241077 0.968356 N1 -2.80184e-15 -0.249998 0.968246 N2 -4.98112e-16 -0.989203 0.146549 + txt003 +STRI + V0 0 -0.362963 3.06667 V1 0.0977709 -0.350254 3.06667 V2 0.0750782 -0.268946 3.12708 + N0 -4.98112e-16 -0.989203 0.146549 N1 0.255913 -0.955496 0.146755 N2 0.0645609 -0.241077 0.968356 + txt003 +STRI + V0 0.362963 0 3.06667 V1 0.350254 -0.0977709 3.06667 V2 0.313617 -0.0875289 2.98125 + N0 0.989203 0 0.146549 N1 0.955496 -0.255913 0.146755 N2 0.753688 -0.201937 -0.625441 + txt003 +STRI + V0 0.313617 -0.0875289 2.98125 V1 0.325 0 2.98125 V2 0.362963 0 3.06667 + N0 0.753688 -0.201937 -0.625441 N1 0.780869 0 -0.624695 N2 0.989203 0 0.146549 + txt003 +STRI + V0 0.350254 -0.0977709 3.06667 V1 0.314228 -0.184834 3.06667 V2 0.281352 -0.165481 2.98125 + N0 0.955496 -0.255913 0.146755 N1 0.856312 -0.495088 0.147029 N2 0.674735 -0.390178 -0.626493 + txt003 +STRI + V0 0.281352 -0.165481 2.98125 V1 0.313617 -0.0875289 2.98125 V2 0.350254 -0.0977709 3.06667 + N0 0.674735 -0.390178 -0.626493 N1 0.753688 -0.201937 -0.625441 N2 0.955496 -0.255913 0.146755 + txt003 +STRI + V0 0.314228 -0.184834 3.06667 V1 0.258037 -0.258037 3.06667 V2 0.231031 -0.231031 2.98125 + N0 0.856312 -0.495088 0.147029 N1 0.699411 -0.699411 0.147135 N2 0.550896 -0.550896 -0.626919 + txt003 +STRI + V0 0.231031 -0.231031 2.98125 V1 0.281352 -0.165481 2.98125 V2 0.314228 -0.184834 3.06667 + N0 0.550896 -0.550896 -0.626919 N1 0.674735 -0.390178 -0.626493 N2 0.856312 -0.495088 0.147029 + txt003 +STRI + V0 0.258037 -0.258037 3.06667 V1 0.184834 -0.314228 3.06667 V2 0.165481 -0.281352 2.98125 + N0 0.699411 -0.699411 0.147135 N1 0.495088 -0.856312 0.147029 N2 0.390178 -0.674735 -0.626493 + txt003 +STRI + V0 0.165481 -0.281352 2.98125 V1 0.231031 -0.231031 2.98125 V2 0.258037 -0.258037 3.06667 + N0 0.390178 -0.674735 -0.626493 N1 0.550896 -0.550896 -0.626919 N2 0.699411 -0.699411 0.147135 + txt003 +STRI + V0 0.184834 -0.314228 3.06667 V1 0.0977709 -0.350254 3.06667 V2 0.0875289 -0.313617 2.98125 + N0 0.495088 -0.856312 0.147029 N1 0.255913 -0.955496 0.146755 N2 0.201937 -0.753688 -0.625441 + txt003 +STRI + V0 0.0875289 -0.313617 2.98125 V1 0.165481 -0.281352 2.98125 V2 0.184834 -0.314228 3.06667 + N0 0.201937 -0.753688 -0.625441 N1 0.390178 -0.674735 -0.626493 N2 0.495088 -0.856312 0.147029 + txt003 +STRI + V0 0.0977709 -0.350254 3.06667 V1 0 -0.362963 3.06667 V2 -1.11022e-16 -0.325 2.98125 + N0 0.255913 -0.955496 0.146755 N1 -4.98112e-16 -0.989203 0.146549 N2 1.51803e-15 -0.780869 -0.624695 + txt003 +STRI + V0 -1.11022e-16 -0.325 2.98125 V1 0.0875289 -0.313617 2.98125 V2 0.0977709 -0.350254 3.06667 + N0 1.51803e-15 -0.780869 -0.624695 N1 0.201937 -0.753688 -0.625441 N2 0.255913 -0.955496 0.146755 + txt003 +STRI + V0 0.325 0 2.98125 V1 0.313617 -0.0875289 2.98125 V2 0.228728 -0.0638032 2.88333 + N0 0.780869 0 -0.624695 N1 0.753688 -0.201937 -0.625441 N2 0.721244 -0.193465 -0.665116 + txt003 +STRI + V0 0.228728 -0.0638032 2.88333 V1 0.237037 0 2.88333 V2 0.325 0 2.98125 + N0 0.721244 -0.193465 -0.665116 N1 0.747409 0 -0.664364 N2 0.780869 0 -0.624695 + txt003 +STRI + V0 0.313617 -0.0875289 2.98125 V1 0.281352 -0.165481 2.98125 V2 0.20518 -0.120647 2.88333 + N0 0.753688 -0.201937 -0.625441 N1 0.674735 -0.390178 -0.626493 N2 0.645526 -0.373497 -0.66618 + txt003 +STRI + V0 0.20518 -0.120647 2.88333 V1 0.228728 -0.0638032 2.88333 V2 0.313617 -0.0875289 2.98125 + N0 0.645526 -0.373497 -0.66618 N1 0.721244 -0.193465 -0.665116 N2 0.753688 -0.201937 -0.625441 + txt003 +STRI + V0 0.281352 -0.165481 2.98125 V1 0.231031 -0.231031 2.98125 V2 0.168463 -0.168463 2.88333 + N0 0.674735 -0.390178 -0.626493 N1 0.550896 -0.550896 -0.626919 N2 0.527081 -0.527081 -0.666611 + txt003 +STRI + V0 0.168463 -0.168463 2.88333 V1 0.20518 -0.120647 2.88333 V2 0.281352 -0.165481 2.98125 + N0 0.527081 -0.527081 -0.666611 N1 0.645526 -0.373497 -0.66618 N2 0.674735 -0.390178 -0.626493 + txt003 +STRI + V0 0.231031 -0.231031 2.98125 V1 0.165481 -0.281352 2.98125 V2 0.120647 -0.20518 2.88333 + N0 0.550896 -0.550896 -0.626919 N1 0.390178 -0.674735 -0.626493 N2 0.373497 -0.645526 -0.66618 + txt003 +STRI + V0 0.120647 -0.20518 2.88333 V1 0.168463 -0.168463 2.88333 V2 0.231031 -0.231031 2.98125 + N0 0.373497 -0.645526 -0.66618 N1 0.527081 -0.527081 -0.666611 N2 0.550896 -0.550896 -0.626919 + txt003 +STRI + V0 0.165481 -0.281352 2.98125 V1 0.0875289 -0.313617 2.98125 V2 0.0638032 -0.228728 2.88333 + N0 0.390178 -0.674735 -0.626493 N1 0.201937 -0.753688 -0.625441 N2 0.193465 -0.721244 -0.665116 + txt003 +STRI + V0 0.0638032 -0.228728 2.88333 V1 0.120647 -0.20518 2.88333 V2 0.165481 -0.281352 2.98125 + N0 0.193465 -0.721244 -0.665116 N1 0.373497 -0.645526 -0.66618 N2 0.390178 -0.674735 -0.626493 + txt003 +STRI + V0 0.0875289 -0.313617 2.98125 V1 -1.11022e-16 -0.325 2.98125 V2 -1.11022e-16 -0.237037 2.88333 + N0 0.201937 -0.753688 -0.625441 N1 1.51803e-15 -0.780869 -0.624695 N2 2.42292e-15 -0.747409 -0.664364 + txt003 +STRI + V0 -1.11022e-16 -0.237037 2.88333 V1 0.0638032 -0.228728 2.88333 V2 0.0875289 -0.313617 2.98125 + N0 2.42292e-15 -0.747409 -0.664364 N1 0.193465 -0.721244 -0.665116 N2 0.201937 -0.753688 -0.625441 + txt003 +STRI + V0 0.237037 0 2.88333 V1 0.228728 -0.0638032 2.88333 V2 0.165279 -0.0460445 2.78542 + N0 0.747409 0 -0.664364 N1 0.721244 -0.193465 -0.665116 N2 0.917897 -0.246906 -0.310647 + txt003 +STRI + V0 0.165279 -0.0460445 2.78542 V1 0.171296 0 2.78542 V2 0.237037 0 2.88333 + N0 0.917897 -0.246906 -0.310647 N1 0.950775 0 -0.309882 N2 0.747409 0 -0.664364 + txt003 +STRI + V0 0.228728 -0.0638032 2.88333 V1 0.20518 -0.120647 2.88333 V2 0.148234 -0.0871056 2.78542 + N0 0.721244 -0.193465 -0.665116 N1 0.645526 -0.373497 -0.66618 N2 0.822132 -0.476337 -0.311772 + txt003 +STRI + V0 0.148234 -0.0871056 2.78542 V1 0.165279 -0.0460445 2.78542 V2 0.228728 -0.0638032 2.88333 + N0 0.822132 -0.476337 -0.311772 N1 0.917897 -0.246906 -0.310647 N2 0.721244 -0.193465 -0.665116 + txt003 +STRI + V0 0.20518 -0.120647 2.88333 V1 0.168463 -0.168463 2.88333 V2 0.121672 -0.121672 2.78542 + N0 0.645526 -0.373497 -0.66618 N1 0.527081 -0.527081 -0.666611 N2 0.671754 -0.671754 -0.312241 + txt003 +STRI + V0 0.121672 -0.121672 2.78542 V1 0.148234 -0.0871056 2.78542 V2 0.20518 -0.120647 2.88333 + N0 0.671754 -0.671754 -0.312241 N1 0.822132 -0.476337 -0.311772 N2 0.645526 -0.373497 -0.66618 + txt003 +STRI + V0 0.168463 -0.168463 2.88333 V1 0.120647 -0.20518 2.88333 V2 0.0871056 -0.148234 2.78542 + N0 0.527081 -0.527081 -0.666611 N1 0.373497 -0.645526 -0.66618 N2 0.476337 -0.822132 -0.311772 + txt003 +STRI + V0 0.0871056 -0.148234 2.78542 V1 0.121672 -0.121672 2.78542 V2 0.168463 -0.168463 2.88333 + N0 0.476337 -0.822132 -0.311772 N1 0.671754 -0.671754 -0.312241 N2 0.527081 -0.527081 -0.666611 + txt003 +STRI + V0 0.120647 -0.20518 2.88333 V1 0.0638032 -0.228728 2.88333 V2 0.0460445 -0.165279 2.78542 + N0 0.373497 -0.645526 -0.66618 N1 0.193465 -0.721244 -0.665116 N2 0.246906 -0.917897 -0.310647 + txt003 +STRI + V0 0.0460445 -0.165279 2.78542 V1 0.0871056 -0.148234 2.78542 V2 0.120647 -0.20518 2.88333 + N0 0.246906 -0.917897 -0.310647 N1 0.476337 -0.822132 -0.311772 N2 0.373497 -0.645526 -0.66618 + txt003 +STRI + V0 0.0638032 -0.228728 2.88333 V1 -1.11022e-16 -0.237037 2.88333 V2 -6.66134e-16 -0.171296 2.78542 + N0 0.193465 -0.721244 -0.665116 N1 2.42292e-15 -0.747409 -0.664364 N2 2.16507e-15 -0.950775 -0.309882 + txt003 +STRI + V0 -6.66134e-16 -0.171296 2.78542 V1 0.0460445 -0.165279 2.78542 V2 0.0638032 -0.228728 2.88333 + N0 2.16507e-15 -0.950775 -0.309882 N1 0.246906 -0.917897 -0.310647 N2 0.193465 -0.721244 -0.665116 + txt003 +STRI + V0 0.171296 0 2.78542 V1 0.165279 -0.0460445 2.78542 V2 0.192963 -0.0537037 2.7 + N0 0.950775 0 -0.309882 N1 0.917897 -0.246906 -0.310647 N2 0.578783 -0.15602 0.800417 + txt003 +STRI + V0 0.192963 -0.0537037 2.7 V1 0.2 0 2.7 V2 0.171296 0 2.78542 + N0 0.578783 -0.15602 0.800417 N1 0.6 0 0.8 N2 0.950775 0 -0.309882 + txt003 +STRI + V0 0.165279 -0.0460445 2.78542 V1 0.148234 -0.0871056 2.78542 V2 0.173037 -0.10163 2.7 + N0 0.917897 -0.246906 -0.310647 N1 0.822132 -0.476337 -0.311772 N2 0.517905 -0.300385 0.800964 + txt003 +STRI + V0 0.173037 -0.10163 2.7 V1 0.192963 -0.0537037 2.7 V2 0.165279 -0.0460445 2.78542 + N0 0.517905 -0.300385 0.800964 N1 0.578783 -0.15602 0.800417 N2 0.917897 -0.246906 -0.310647 + txt003 +STRI + V0 0.148234 -0.0871056 2.78542 V1 0.121672 -0.121672 2.78542 V2 0.142 -0.142 2.7 + N0 0.822132 -0.476337 -0.311772 N1 0.671754 -0.671754 -0.312241 N2 0.423155 -0.423155 0.801174 + txt003 +STRI + V0 0.142 -0.142 2.7 V1 0.173037 -0.10163 2.7 V2 0.148234 -0.0871056 2.78542 + N0 0.423155 -0.423155 0.801174 N1 0.517905 -0.300385 0.800964 N2 0.822132 -0.476337 -0.311772 + txt003 +STRI + V0 0.121672 -0.121672 2.78542 V1 0.0871056 -0.148234 2.78542 V2 0.10163 -0.173037 2.7 + N0 0.671754 -0.671754 -0.312241 N1 0.476337 -0.822132 -0.311772 N2 0.300385 -0.517905 0.800964 + txt003 +STRI + V0 0.10163 -0.173037 2.7 V1 0.142 -0.142 2.7 V2 0.121672 -0.121672 2.78542 + N0 0.300385 -0.517905 0.800964 N1 0.423155 -0.423155 0.801174 N2 0.671754 -0.671754 -0.312241 + txt003 +STRI + V0 0.0871056 -0.148234 2.78542 V1 0.0460445 -0.165279 2.78542 V2 0.0537037 -0.192963 2.7 + N0 0.476337 -0.822132 -0.311772 N1 0.246906 -0.917897 -0.310647 N2 0.15602 -0.578783 0.800417 + txt003 +STRI + V0 0.0537037 -0.192963 2.7 V1 0.10163 -0.173037 2.7 V2 0.0871056 -0.148234 2.78542 + N0 0.15602 -0.578783 0.800417 N1 0.300385 -0.517905 0.800964 N2 0.476337 -0.822132 -0.311772 + txt003 +STRI + V0 0.0460445 -0.165279 2.78542 V1 -6.66134e-16 -0.171296 2.78542 V2 0 -0.2 2.7 + N0 0.246906 -0.917897 -0.310647 N1 2.16507e-15 -0.950775 -0.309882 N2 -3.17207e-15 -0.6 0.8 + txt003 +STRI + V0 0 -0.2 2.7 V1 0.0537037 -0.192963 2.7 V2 0.0460445 -0.165279 2.78542 + N0 -3.17207e-15 -0.6 0.8 N1 0.15602 -0.578783 0.800417 N2 0.246906 -0.917897 -0.310647 + txt003 +STRI + V0 -0.0750782 -0.268946 3.12708 V1 0 -0.278704 3.12708 V2 0 0 3.15 + N0 -0.0645609 -0.241077 0.968356 N1 0 -0.249998 0.968246 N2 0 0 1 + txt003 +STRI + V0 -0.141931 -0.241285 3.12708 V1 -0.0750782 -0.268946 3.12708 V2 0 0 3.15 + N0 -0.124615 -0.215548 0.968509 N1 -0.0645609 -0.241077 0.968356 N2 0 0 1 + txt003 +STRI + V0 -0.19814 -0.19814 3.12708 V1 -0.141931 -0.241285 3.12708 V2 0 0 3.15 + N0 -0.175885 -0.175885 0.96857 N1 -0.124615 -0.215548 0.968509 N2 0 0 1 + txt003 +STRI + V0 -0.241285 -0.141931 3.12708 V1 -0.19814 -0.19814 3.12708 V2 0 0 3.15 + N0 -0.215548 -0.124615 0.968509 N1 -0.175885 -0.175885 0.96857 N2 0 0 1 + txt003 +STRI + V0 -0.268946 -0.0750782 3.12708 V1 -0.241285 -0.141931 3.12708 V2 0 0 3.15 + N0 -0.241077 -0.0645609 0.968356 N1 -0.215548 -0.124615 0.968509 N2 0 0 1 + txt003 +STRI + V0 -0.278704 0 3.12708 V1 -0.268946 -0.0750782 3.12708 V2 0 0 3.15 + N0 -0.249998 2.80184e-15 0.968246 N1 -0.241077 -0.0645609 0.968356 N2 0 0 1 + txt003 +STRI + V0 0 -0.278704 3.12708 V1 -0.0750782 -0.268946 3.12708 V2 -0.0977709 -0.350254 3.06667 + N0 0 -0.249998 0.968246 N1 -0.0645609 -0.241077 0.968356 N2 -0.255913 -0.955496 0.146755 + txt003 +STRI + V0 -0.0977709 -0.350254 3.06667 V1 0 -0.362963 3.06667 V2 0 -0.278704 3.12708 + N0 -0.255913 -0.955496 0.146755 N1 0 -0.989203 0.146549 N2 0 -0.249998 0.968246 + txt003 +STRI + V0 -0.0750782 -0.268946 3.12708 V1 -0.141931 -0.241285 3.12708 V2 -0.184834 -0.314228 3.06667 + N0 -0.0645609 -0.241077 0.968356 N1 -0.124615 -0.215548 0.968509 N2 -0.495088 -0.856312 0.147029 + txt003 +STRI + V0 -0.184834 -0.314228 3.06667 V1 -0.0977709 -0.350254 3.06667 V2 -0.0750782 -0.268946 3.12708 + N0 -0.495088 -0.856312 0.147029 N1 -0.255913 -0.955496 0.146755 N2 -0.0645609 -0.241077 0.968356 + txt003 +STRI + V0 -0.141931 -0.241285 3.12708 V1 -0.19814 -0.19814 3.12708 V2 -0.258037 -0.258037 3.06667 + N0 -0.124615 -0.215548 0.968509 N1 -0.175885 -0.175885 0.96857 N2 -0.699411 -0.699411 0.147135 + txt003 +STRI + V0 -0.258037 -0.258037 3.06667 V1 -0.184834 -0.314228 3.06667 V2 -0.141931 -0.241285 3.12708 + N0 -0.699411 -0.699411 0.147135 N1 -0.495088 -0.856312 0.147029 N2 -0.124615 -0.215548 0.968509 + txt003 +STRI + V0 -0.19814 -0.19814 3.12708 V1 -0.241285 -0.141931 3.12708 V2 -0.314228 -0.184834 3.06667 + N0 -0.175885 -0.175885 0.96857 N1 -0.215548 -0.124615 0.968509 N2 -0.856312 -0.495088 0.147029 + txt003 +STRI + V0 -0.314228 -0.184834 3.06667 V1 -0.258037 -0.258037 3.06667 V2 -0.19814 -0.19814 3.12708 + N0 -0.856312 -0.495088 0.147029 N1 -0.699411 -0.699411 0.147135 N2 -0.175885 -0.175885 0.96857 + txt003 +STRI + V0 -0.241285 -0.141931 3.12708 V1 -0.268946 -0.0750782 3.12708 V2 -0.350254 -0.0977709 3.06667 + N0 -0.215548 -0.124615 0.968509 N1 -0.241077 -0.0645609 0.968356 N2 -0.955496 -0.255913 0.146755 + txt003 +STRI + V0 -0.350254 -0.0977709 3.06667 V1 -0.314228 -0.184834 3.06667 V2 -0.241285 -0.141931 3.12708 + N0 -0.955496 -0.255913 0.146755 N1 -0.856312 -0.495088 0.147029 N2 -0.215548 -0.124615 0.968509 + txt003 +STRI + V0 -0.268946 -0.0750782 3.12708 V1 -0.278704 0 3.12708 V2 -0.362963 0 3.06667 + N0 -0.241077 -0.0645609 0.968356 N1 -0.249998 2.80184e-15 0.968246 N2 -0.989203 4.98112e-16 0.146549 + txt003 +STRI + V0 -0.362963 0 3.06667 V1 -0.350254 -0.0977709 3.06667 V2 -0.268946 -0.0750782 3.12708 + N0 -0.989203 4.98112e-16 0.146549 N1 -0.955496 -0.255913 0.146755 N2 -0.241077 -0.0645609 0.968356 + txt003 +STRI + V0 0 -0.362963 3.06667 V1 -0.0977709 -0.350254 3.06667 V2 -0.0875289 -0.313617 2.98125 + N0 0 -0.989203 0.146549 N1 -0.255913 -0.955496 0.146755 N2 -0.201937 -0.753688 -0.625441 + txt003 +STRI + V0 -0.0875289 -0.313617 2.98125 V1 0 -0.325 2.98125 V2 0 -0.362963 3.06667 + N0 -0.201937 -0.753688 -0.625441 N1 -0 -0.780869 -0.624695 N2 0 -0.989203 0.146549 + txt003 +STRI + V0 -0.0977709 -0.350254 3.06667 V1 -0.184834 -0.314228 3.06667 V2 -0.165481 -0.281352 2.98125 + N0 -0.255913 -0.955496 0.146755 N1 -0.495088 -0.856312 0.147029 N2 -0.390178 -0.674735 -0.626493 + txt003 +STRI + V0 -0.165481 -0.281352 2.98125 V1 -0.0875289 -0.313617 2.98125 V2 -0.0977709 -0.350254 3.06667 + N0 -0.390178 -0.674735 -0.626493 N1 -0.201937 -0.753688 -0.625441 N2 -0.255913 -0.955496 0.146755 + txt003 +STRI + V0 -0.184834 -0.314228 3.06667 V1 -0.258037 -0.258037 3.06667 V2 -0.231031 -0.231031 2.98125 + N0 -0.495088 -0.856312 0.147029 N1 -0.699411 -0.699411 0.147135 N2 -0.550896 -0.550896 -0.626919 + txt003 +STRI + V0 -0.231031 -0.231031 2.98125 V1 -0.165481 -0.281352 2.98125 V2 -0.184834 -0.314228 3.06667 + N0 -0.550896 -0.550896 -0.626919 N1 -0.390178 -0.674735 -0.626493 N2 -0.495088 -0.856312 0.147029 + txt003 +STRI + V0 -0.258037 -0.258037 3.06667 V1 -0.314228 -0.184834 3.06667 V2 -0.281352 -0.165481 2.98125 + N0 -0.699411 -0.699411 0.147135 N1 -0.856312 -0.495088 0.147029 N2 -0.674735 -0.390178 -0.626493 + txt003 +STRI + V0 -0.281352 -0.165481 2.98125 V1 -0.231031 -0.231031 2.98125 V2 -0.258037 -0.258037 3.06667 + N0 -0.674735 -0.390178 -0.626493 N1 -0.550896 -0.550896 -0.626919 N2 -0.699411 -0.699411 0.147135 + txt003 +STRI + V0 -0.314228 -0.184834 3.06667 V1 -0.350254 -0.0977709 3.06667 V2 -0.313617 -0.0875289 2.98125 + N0 -0.856312 -0.495088 0.147029 N1 -0.955496 -0.255913 0.146755 N2 -0.753688 -0.201937 -0.625441 + txt003 +STRI + V0 -0.313617 -0.0875289 2.98125 V1 -0.281352 -0.165481 2.98125 V2 -0.314228 -0.184834 3.06667 + N0 -0.753688 -0.201937 -0.625441 N1 -0.674735 -0.390178 -0.626493 N2 -0.856312 -0.495088 0.147029 + txt003 +STRI + V0 -0.350254 -0.0977709 3.06667 V1 -0.362963 0 3.06667 V2 -0.325 1.11022e-16 2.98125 + N0 -0.955496 -0.255913 0.146755 N1 -0.989203 4.98112e-16 0.146549 N2 -0.780869 -1.51803e-15 -0.624695 + txt003 +STRI + V0 -0.325 1.11022e-16 2.98125 V1 -0.313617 -0.0875289 2.98125 V2 -0.350254 -0.0977709 3.06667 + N0 -0.780869 -1.51803e-15 -0.624695 N1 -0.753688 -0.201937 -0.625441 N2 -0.955496 -0.255913 0.146755 + txt003 +STRI + V0 0 -0.325 2.98125 V1 -0.0875289 -0.313617 2.98125 V2 -0.0638032 -0.228728 2.88333 + N0 -0 -0.780869 -0.624695 N1 -0.201937 -0.753688 -0.625441 N2 -0.193465 -0.721244 -0.665116 + txt003 +STRI + V0 -0.0638032 -0.228728 2.88333 V1 0 -0.237037 2.88333 V2 0 -0.325 2.98125 + N0 -0.193465 -0.721244 -0.665116 N1 -0 -0.747409 -0.664364 N2 -0 -0.780869 -0.624695 + txt003 +STRI + V0 -0.0875289 -0.313617 2.98125 V1 -0.165481 -0.281352 2.98125 V2 -0.120647 -0.20518 2.88333 + N0 -0.201937 -0.753688 -0.625441 N1 -0.390178 -0.674735 -0.626493 N2 -0.373497 -0.645526 -0.66618 + txt003 +STRI + V0 -0.120647 -0.20518 2.88333 V1 -0.0638032 -0.228728 2.88333 V2 -0.0875289 -0.313617 2.98125 + N0 -0.373497 -0.645526 -0.66618 N1 -0.193465 -0.721244 -0.665116 N2 -0.201937 -0.753688 -0.625441 + txt003 +STRI + V0 -0.165481 -0.281352 2.98125 V1 -0.231031 -0.231031 2.98125 V2 -0.168463 -0.168463 2.88333 + N0 -0.390178 -0.674735 -0.626493 N1 -0.550896 -0.550896 -0.626919 N2 -0.527081 -0.527081 -0.666611 + txt003 +STRI + V0 -0.168463 -0.168463 2.88333 V1 -0.120647 -0.20518 2.88333 V2 -0.165481 -0.281352 2.98125 + N0 -0.527081 -0.527081 -0.666611 N1 -0.373497 -0.645526 -0.66618 N2 -0.390178 -0.674735 -0.626493 + txt003 +STRI + V0 -0.231031 -0.231031 2.98125 V1 -0.281352 -0.165481 2.98125 V2 -0.20518 -0.120647 2.88333 + N0 -0.550896 -0.550896 -0.626919 N1 -0.674735 -0.390178 -0.626493 N2 -0.645526 -0.373497 -0.66618 + txt003 +STRI + V0 -0.20518 -0.120647 2.88333 V1 -0.168463 -0.168463 2.88333 V2 -0.231031 -0.231031 2.98125 + N0 -0.645526 -0.373497 -0.66618 N1 -0.527081 -0.527081 -0.666611 N2 -0.550896 -0.550896 -0.626919 + txt003 +STRI + V0 -0.281352 -0.165481 2.98125 V1 -0.313617 -0.0875289 2.98125 V2 -0.228728 -0.0638032 2.88333 + N0 -0.674735 -0.390178 -0.626493 N1 -0.753688 -0.201937 -0.625441 N2 -0.721244 -0.193465 -0.665116 + txt003 +STRI + V0 -0.228728 -0.0638032 2.88333 V1 -0.20518 -0.120647 2.88333 V2 -0.281352 -0.165481 2.98125 + N0 -0.721244 -0.193465 -0.665116 N1 -0.645526 -0.373497 -0.66618 N2 -0.674735 -0.390178 -0.626493 + txt003 +STRI + V0 -0.313617 -0.0875289 2.98125 V1 -0.325 1.11022e-16 2.98125 V2 -0.237037 1.11022e-16 2.88333 + N0 -0.753688 -0.201937 -0.625441 N1 -0.780869 -1.51803e-15 -0.624695 N2 -0.747409 -2.42292e-15 -0.664364 + txt003 +STRI + V0 -0.237037 1.11022e-16 2.88333 V1 -0.228728 -0.0638032 2.88333 V2 -0.313617 -0.0875289 2.98125 + N0 -0.747409 -2.42292e-15 -0.664364 N1 -0.721244 -0.193465 -0.665116 N2 -0.753688 -0.201937 -0.625441 + txt003 +STRI + V0 0 -0.237037 2.88333 V1 -0.0638032 -0.228728 2.88333 V2 -0.0460445 -0.165279 2.78542 + N0 -0 -0.747409 -0.664364 N1 -0.193465 -0.721244 -0.665116 N2 -0.246906 -0.917897 -0.310647 + txt003 +STRI + V0 -0.0460445 -0.165279 2.78542 V1 0 -0.171296 2.78542 V2 0 -0.237037 2.88333 + N0 -0.246906 -0.917897 -0.310647 N1 -0 -0.950775 -0.309882 N2 -0 -0.747409 -0.664364 + txt003 +STRI + V0 -0.0638032 -0.228728 2.88333 V1 -0.120647 -0.20518 2.88333 V2 -0.0871056 -0.148234 2.78542 + N0 -0.193465 -0.721244 -0.665116 N1 -0.373497 -0.645526 -0.66618 N2 -0.476337 -0.822132 -0.311772 + txt003 +STRI + V0 -0.0871056 -0.148234 2.78542 V1 -0.0460445 -0.165279 2.78542 V2 -0.0638032 -0.228728 2.88333 + N0 -0.476337 -0.822132 -0.311772 N1 -0.246906 -0.917897 -0.310647 N2 -0.193465 -0.721244 -0.665116 + txt003 +STRI + V0 -0.120647 -0.20518 2.88333 V1 -0.168463 -0.168463 2.88333 V2 -0.121672 -0.121672 2.78542 + N0 -0.373497 -0.645526 -0.66618 N1 -0.527081 -0.527081 -0.666611 N2 -0.671754 -0.671754 -0.312241 + txt003 +STRI + V0 -0.121672 -0.121672 2.78542 V1 -0.0871056 -0.148234 2.78542 V2 -0.120647 -0.20518 2.88333 + N0 -0.671754 -0.671754 -0.312241 N1 -0.476337 -0.822132 -0.311772 N2 -0.373497 -0.645526 -0.66618 + txt003 +STRI + V0 -0.168463 -0.168463 2.88333 V1 -0.20518 -0.120647 2.88333 V2 -0.148234 -0.0871056 2.78542 + N0 -0.527081 -0.527081 -0.666611 N1 -0.645526 -0.373497 -0.66618 N2 -0.822132 -0.476337 -0.311772 + txt003 +STRI + V0 -0.148234 -0.0871056 2.78542 V1 -0.121672 -0.121672 2.78542 V2 -0.168463 -0.168463 2.88333 + N0 -0.822132 -0.476337 -0.311772 N1 -0.671754 -0.671754 -0.312241 N2 -0.527081 -0.527081 -0.666611 + txt003 +STRI + V0 -0.20518 -0.120647 2.88333 V1 -0.228728 -0.0638032 2.88333 V2 -0.165279 -0.0460445 2.78542 + N0 -0.645526 -0.373497 -0.66618 N1 -0.721244 -0.193465 -0.665116 N2 -0.917897 -0.246906 -0.310647 + txt003 +STRI + V0 -0.165279 -0.0460445 2.78542 V1 -0.148234 -0.0871056 2.78542 V2 -0.20518 -0.120647 2.88333 + N0 -0.917897 -0.246906 -0.310647 N1 -0.822132 -0.476337 -0.311772 N2 -0.645526 -0.373497 -0.66618 + txt003 +STRI + V0 -0.228728 -0.0638032 2.88333 V1 -0.237037 1.11022e-16 2.88333 V2 -0.171296 6.66134e-16 2.78542 + N0 -0.721244 -0.193465 -0.665116 N1 -0.747409 -2.42292e-15 -0.664364 N2 -0.950775 -2.16507e-15 -0.309882 + txt003 +STRI + V0 -0.171296 6.66134e-16 2.78542 V1 -0.165279 -0.0460445 2.78542 V2 -0.228728 -0.0638032 2.88333 + N0 -0.950775 -2.16507e-15 -0.309882 N1 -0.917897 -0.246906 -0.310647 N2 -0.721244 -0.193465 -0.665116 + txt003 +STRI + V0 0 -0.171296 2.78542 V1 -0.0460445 -0.165279 2.78542 V2 -0.0537037 -0.192963 2.7 + N0 -0 -0.950775 -0.309882 N1 -0.246906 -0.917897 -0.310647 N2 -0.15602 -0.578783 0.800417 + txt003 +STRI + V0 -0.0537037 -0.192963 2.7 V1 0 -0.2 2.7 V2 0 -0.171296 2.78542 + N0 -0.15602 -0.578783 0.800417 N1 0 -0.6 0.8 N2 -0 -0.950775 -0.309882 + txt003 +STRI + V0 -0.0460445 -0.165279 2.78542 V1 -0.0871056 -0.148234 2.78542 V2 -0.10163 -0.173037 2.7 + N0 -0.246906 -0.917897 -0.310647 N1 -0.476337 -0.822132 -0.311772 N2 -0.300385 -0.517905 0.800964 + txt003 +STRI + V0 -0.10163 -0.173037 2.7 V1 -0.0537037 -0.192963 2.7 V2 -0.0460445 -0.165279 2.78542 + N0 -0.300385 -0.517905 0.800964 N1 -0.15602 -0.578783 0.800417 N2 -0.246906 -0.917897 -0.310647 + txt003 +STRI + V0 -0.0871056 -0.148234 2.78542 V1 -0.121672 -0.121672 2.78542 V2 -0.142 -0.142 2.7 + N0 -0.476337 -0.822132 -0.311772 N1 -0.671754 -0.671754 -0.312241 N2 -0.423155 -0.423155 0.801174 + txt003 +STRI + V0 -0.142 -0.142 2.7 V1 -0.10163 -0.173037 2.7 V2 -0.0871056 -0.148234 2.78542 + N0 -0.423155 -0.423155 0.801174 N1 -0.300385 -0.517905 0.800964 N2 -0.476337 -0.822132 -0.311772 + txt003 +STRI + V0 -0.121672 -0.121672 2.78542 V1 -0.148234 -0.0871056 2.78542 V2 -0.173037 -0.10163 2.7 + N0 -0.671754 -0.671754 -0.312241 N1 -0.822132 -0.476337 -0.311772 N2 -0.517905 -0.300385 0.800964 + txt003 +STRI + V0 -0.173037 -0.10163 2.7 V1 -0.142 -0.142 2.7 V2 -0.121672 -0.121672 2.78542 + N0 -0.517905 -0.300385 0.800964 N1 -0.423155 -0.423155 0.801174 N2 -0.671754 -0.671754 -0.312241 + txt003 +STRI + V0 -0.148234 -0.0871056 2.78542 V1 -0.165279 -0.0460445 2.78542 V2 -0.192963 -0.0537037 2.7 + N0 -0.822132 -0.476337 -0.311772 N1 -0.917897 -0.246906 -0.310647 N2 -0.578783 -0.15602 0.800417 + txt003 +STRI + V0 -0.192963 -0.0537037 2.7 V1 -0.173037 -0.10163 2.7 V2 -0.148234 -0.0871056 2.78542 + N0 -0.578783 -0.15602 0.800417 N1 -0.517905 -0.300385 0.800964 N2 -0.822132 -0.476337 -0.311772 + txt003 +STRI + V0 -0.165279 -0.0460445 2.78542 V1 -0.171296 6.66134e-16 2.78542 V2 -0.2 0 2.7 + N0 -0.917897 -0.246906 -0.310647 N1 -0.950775 -2.16507e-15 -0.309882 N2 -0.6 3.17207e-15 0.8 + txt003 +STRI + V0 -0.2 0 2.7 V1 -0.192963 -0.0537037 2.7 V2 -0.165279 -0.0460445 2.78542 + N0 -0.6 3.17207e-15 0.8 N1 -0.578783 -0.15602 0.800417 N2 -0.917897 -0.246906 -0.310647 + txt003 +STRI + V0 -0.268946 0.0750782 3.12708 V1 -0.278704 0 3.12708 V2 0 0 3.15 + N0 -0.241077 0.0645609 0.968356 N1 -0.249998 0 0.968246 N2 0 0 1 + txt003 +STRI + V0 -0.241285 0.141931 3.12708 V1 -0.268946 0.0750782 3.12708 V2 0 0 3.15 + N0 -0.215548 0.124615 0.968509 N1 -0.241077 0.0645609 0.968356 N2 0 0 1 + txt003 +STRI + V0 -0.19814 0.19814 3.12708 V1 -0.241285 0.141931 3.12708 V2 0 0 3.15 + N0 -0.175885 0.175885 0.96857 N1 -0.215548 0.124615 0.968509 N2 0 0 1 + txt003 +STRI + V0 -0.141931 0.241285 3.12708 V1 -0.19814 0.19814 3.12708 V2 0 0 3.15 + N0 -0.124615 0.215548 0.968509 N1 -0.175885 0.175885 0.96857 N2 0 0 1 + txt003 +STRI + V0 -0.0750782 0.268946 3.12708 V1 -0.141931 0.241285 3.12708 V2 0 0 3.15 + N0 -0.0645609 0.241077 0.968356 N1 -0.124615 0.215548 0.968509 N2 0 0 1 + txt003 +STRI + V0 0 0.278704 3.12708 V1 -0.0750782 0.268946 3.12708 V2 0 0 3.15 + N0 2.80184e-15 0.249998 0.968246 N1 -0.0645609 0.241077 0.968356 N2 0 0 1 + txt003 +STRI + V0 -0.278704 0 3.12708 V1 -0.268946 0.0750782 3.12708 V2 -0.350254 0.0977709 3.06667 + N0 -0.249998 0 0.968246 N1 -0.241077 0.0645609 0.968356 N2 -0.955496 0.255913 0.146755 + txt003 +STRI + V0 -0.350254 0.0977709 3.06667 V1 -0.362963 0 3.06667 V2 -0.278704 0 3.12708 + N0 -0.955496 0.255913 0.146755 N1 -0.989203 0 0.146549 N2 -0.249998 0 0.968246 + txt003 +STRI + V0 -0.268946 0.0750782 3.12708 V1 -0.241285 0.141931 3.12708 V2 -0.314228 0.184834 3.06667 + N0 -0.241077 0.0645609 0.968356 N1 -0.215548 0.124615 0.968509 N2 -0.856312 0.495088 0.147029 + txt003 +STRI + V0 -0.314228 0.184834 3.06667 V1 -0.350254 0.0977709 3.06667 V2 -0.268946 0.0750782 3.12708 + N0 -0.856312 0.495088 0.147029 N1 -0.955496 0.255913 0.146755 N2 -0.241077 0.0645609 0.968356 + txt003 +STRI + V0 -0.241285 0.141931 3.12708 V1 -0.19814 0.19814 3.12708 V2 -0.258037 0.258037 3.06667 + N0 -0.215548 0.124615 0.968509 N1 -0.175885 0.175885 0.96857 N2 -0.699411 0.699411 0.147135 + txt003 +STRI + V0 -0.258037 0.258037 3.06667 V1 -0.314228 0.184834 3.06667 V2 -0.241285 0.141931 3.12708 + N0 -0.699411 0.699411 0.147135 N1 -0.856312 0.495088 0.147029 N2 -0.215548 0.124615 0.968509 + txt003 +STRI + V0 -0.19814 0.19814 3.12708 V1 -0.141931 0.241285 3.12708 V2 -0.184834 0.314228 3.06667 + N0 -0.175885 0.175885 0.96857 N1 -0.124615 0.215548 0.968509 N2 -0.495088 0.856312 0.147029 + txt003 +STRI + V0 -0.184834 0.314228 3.06667 V1 -0.258037 0.258037 3.06667 V2 -0.19814 0.19814 3.12708 + N0 -0.495088 0.856312 0.147029 N1 -0.699411 0.699411 0.147135 N2 -0.175885 0.175885 0.96857 + txt003 +STRI + V0 -0.141931 0.241285 3.12708 V1 -0.0750782 0.268946 3.12708 V2 -0.0977709 0.350254 3.06667 + N0 -0.124615 0.215548 0.968509 N1 -0.0645609 0.241077 0.968356 N2 -0.255913 0.955496 0.146755 + txt003 +STRI + V0 -0.0977709 0.350254 3.06667 V1 -0.184834 0.314228 3.06667 V2 -0.141931 0.241285 3.12708 + N0 -0.255913 0.955496 0.146755 N1 -0.495088 0.856312 0.147029 N2 -0.124615 0.215548 0.968509 + txt003 +STRI + V0 -0.0750782 0.268946 3.12708 V1 0 0.278704 3.12708 V2 0 0.362963 3.06667 + N0 -0.0645609 0.241077 0.968356 N1 2.80184e-15 0.249998 0.968246 N2 4.98112e-16 0.989203 0.146549 + txt003 +STRI + V0 0 0.362963 3.06667 V1 -0.0977709 0.350254 3.06667 V2 -0.0750782 0.268946 3.12708 + N0 4.98112e-16 0.989203 0.146549 N1 -0.255913 0.955496 0.146755 N2 -0.0645609 0.241077 0.968356 + txt003 +STRI + V0 -0.362963 0 3.06667 V1 -0.350254 0.0977709 3.06667 V2 -0.313617 0.0875289 2.98125 + N0 -0.989203 0 0.146549 N1 -0.955496 0.255913 0.146755 N2 -0.753688 0.201937 -0.625441 + txt003 +STRI + V0 -0.313617 0.0875289 2.98125 V1 -0.325 0 2.98125 V2 -0.362963 0 3.06667 + N0 -0.753688 0.201937 -0.625441 N1 -0.780869 0 -0.624695 N2 -0.989203 0 0.146549 + txt003 +STRI + V0 -0.350254 0.0977709 3.06667 V1 -0.314228 0.184834 3.06667 V2 -0.281352 0.165481 2.98125 + N0 -0.955496 0.255913 0.146755 N1 -0.856312 0.495088 0.147029 N2 -0.674735 0.390178 -0.626493 + txt003 +STRI + V0 -0.281352 0.165481 2.98125 V1 -0.313617 0.0875289 2.98125 V2 -0.350254 0.0977709 3.06667 + N0 -0.674735 0.390178 -0.626493 N1 -0.753688 0.201937 -0.625441 N2 -0.955496 0.255913 0.146755 + txt003 +STRI + V0 -0.314228 0.184834 3.06667 V1 -0.258037 0.258037 3.06667 V2 -0.231031 0.231031 2.98125 + N0 -0.856312 0.495088 0.147029 N1 -0.699411 0.699411 0.147135 N2 -0.550896 0.550896 -0.626919 + txt003 +STRI + V0 -0.231031 0.231031 2.98125 V1 -0.281352 0.165481 2.98125 V2 -0.314228 0.184834 3.06667 + N0 -0.550896 0.550896 -0.626919 N1 -0.674735 0.390178 -0.626493 N2 -0.856312 0.495088 0.147029 + txt003 +STRI + V0 -0.258037 0.258037 3.06667 V1 -0.184834 0.314228 3.06667 V2 -0.165481 0.281352 2.98125 + N0 -0.699411 0.699411 0.147135 N1 -0.495088 0.856312 0.147029 N2 -0.390178 0.674735 -0.626493 + txt003 +STRI + V0 -0.165481 0.281352 2.98125 V1 -0.231031 0.231031 2.98125 V2 -0.258037 0.258037 3.06667 + N0 -0.390178 0.674735 -0.626493 N1 -0.550896 0.550896 -0.626919 N2 -0.699411 0.699411 0.147135 + txt003 +STRI + V0 -0.184834 0.314228 3.06667 V1 -0.0977709 0.350254 3.06667 V2 -0.0875289 0.313617 2.98125 + N0 -0.495088 0.856312 0.147029 N1 -0.255913 0.955496 0.146755 N2 -0.201937 0.753688 -0.625441 + txt003 +STRI + V0 -0.0875289 0.313617 2.98125 V1 -0.165481 0.281352 2.98125 V2 -0.184834 0.314228 3.06667 + N0 -0.201937 0.753688 -0.625441 N1 -0.390178 0.674735 -0.626493 N2 -0.495088 0.856312 0.147029 + txt003 +STRI + V0 -0.0977709 0.350254 3.06667 V1 0 0.362963 3.06667 V2 1.11022e-16 0.325 2.98125 + N0 -0.255913 0.955496 0.146755 N1 4.98112e-16 0.989203 0.146549 N2 -1.51803e-15 0.780869 -0.624695 + txt003 +STRI + V0 1.11022e-16 0.325 2.98125 V1 -0.0875289 0.313617 2.98125 V2 -0.0977709 0.350254 3.06667 + N0 -1.51803e-15 0.780869 -0.624695 N1 -0.201937 0.753688 -0.625441 N2 -0.255913 0.955496 0.146755 + txt003 +STRI + V0 -0.325 0 2.98125 V1 -0.313617 0.0875289 2.98125 V2 -0.228728 0.0638032 2.88333 + N0 -0.780869 0 -0.624695 N1 -0.753688 0.201937 -0.625441 N2 -0.721244 0.193465 -0.665116 + txt003 +STRI + V0 -0.228728 0.0638032 2.88333 V1 -0.237037 0 2.88333 V2 -0.325 0 2.98125 + N0 -0.721244 0.193465 -0.665116 N1 -0.747409 0 -0.664364 N2 -0.780869 0 -0.624695 + txt003 +STRI + V0 -0.313617 0.0875289 2.98125 V1 -0.281352 0.165481 2.98125 V2 -0.20518 0.120647 2.88333 + N0 -0.753688 0.201937 -0.625441 N1 -0.674735 0.390178 -0.626493 N2 -0.645526 0.373497 -0.66618 + txt003 +STRI + V0 -0.20518 0.120647 2.88333 V1 -0.228728 0.0638032 2.88333 V2 -0.313617 0.0875289 2.98125 + N0 -0.645526 0.373497 -0.66618 N1 -0.721244 0.193465 -0.665116 N2 -0.753688 0.201937 -0.625441 + txt003 +STRI + V0 -0.281352 0.165481 2.98125 V1 -0.231031 0.231031 2.98125 V2 -0.168463 0.168463 2.88333 + N0 -0.674735 0.390178 -0.626493 N1 -0.550896 0.550896 -0.626919 N2 -0.527081 0.527081 -0.666611 + txt003 +STRI + V0 -0.168463 0.168463 2.88333 V1 -0.20518 0.120647 2.88333 V2 -0.281352 0.165481 2.98125 + N0 -0.527081 0.527081 -0.666611 N1 -0.645526 0.373497 -0.66618 N2 -0.674735 0.390178 -0.626493 + txt003 +STRI + V0 -0.231031 0.231031 2.98125 V1 -0.165481 0.281352 2.98125 V2 -0.120647 0.20518 2.88333 + N0 -0.550896 0.550896 -0.626919 N1 -0.390178 0.674735 -0.626493 N2 -0.373497 0.645526 -0.66618 + txt003 +STRI + V0 -0.120647 0.20518 2.88333 V1 -0.168463 0.168463 2.88333 V2 -0.231031 0.231031 2.98125 + N0 -0.373497 0.645526 -0.66618 N1 -0.527081 0.527081 -0.666611 N2 -0.550896 0.550896 -0.626919 + txt003 +STRI + V0 -0.165481 0.281352 2.98125 V1 -0.0875289 0.313617 2.98125 V2 -0.0638032 0.228728 2.88333 + N0 -0.390178 0.674735 -0.626493 N1 -0.201937 0.753688 -0.625441 N2 -0.193465 0.721244 -0.665116 + txt003 +STRI + V0 -0.0638032 0.228728 2.88333 V1 -0.120647 0.20518 2.88333 V2 -0.165481 0.281352 2.98125 + N0 -0.193465 0.721244 -0.665116 N1 -0.373497 0.645526 -0.66618 N2 -0.390178 0.674735 -0.626493 + txt003 +STRI + V0 -0.0875289 0.313617 2.98125 V1 1.11022e-16 0.325 2.98125 V2 1.11022e-16 0.237037 2.88333 + N0 -0.201937 0.753688 -0.625441 N1 -1.51803e-15 0.780869 -0.624695 N2 -2.42292e-15 0.747409 -0.664364 + txt003 +STRI + V0 1.11022e-16 0.237037 2.88333 V1 -0.0638032 0.228728 2.88333 V2 -0.0875289 0.313617 2.98125 + N0 -2.42292e-15 0.747409 -0.664364 N1 -0.193465 0.721244 -0.665116 N2 -0.201937 0.753688 -0.625441 + txt003 +STRI + V0 -0.237037 0 2.88333 V1 -0.228728 0.0638032 2.88333 V2 -0.165279 0.0460445 2.78542 + N0 -0.747409 0 -0.664364 N1 -0.721244 0.193465 -0.665116 N2 -0.917897 0.246906 -0.310647 + txt003 +STRI + V0 -0.165279 0.0460445 2.78542 V1 -0.171296 0 2.78542 V2 -0.237037 0 2.88333 + N0 -0.917897 0.246906 -0.310647 N1 -0.950775 0 -0.309882 N2 -0.747409 0 -0.664364 + txt003 +STRI + V0 -0.228728 0.0638032 2.88333 V1 -0.20518 0.120647 2.88333 V2 -0.148234 0.0871056 2.78542 + N0 -0.721244 0.193465 -0.665116 N1 -0.645526 0.373497 -0.66618 N2 -0.822132 0.476337 -0.311772 + txt003 +STRI + V0 -0.148234 0.0871056 2.78542 V1 -0.165279 0.0460445 2.78542 V2 -0.228728 0.0638032 2.88333 + N0 -0.822132 0.476337 -0.311772 N1 -0.917897 0.246906 -0.310647 N2 -0.721244 0.193465 -0.665116 + txt003 +STRI + V0 -0.20518 0.120647 2.88333 V1 -0.168463 0.168463 2.88333 V2 -0.121672 0.121672 2.78542 + N0 -0.645526 0.373497 -0.66618 N1 -0.527081 0.527081 -0.666611 N2 -0.671754 0.671754 -0.312241 + txt003 +STRI + V0 -0.121672 0.121672 2.78542 V1 -0.148234 0.0871056 2.78542 V2 -0.20518 0.120647 2.88333 + N0 -0.671754 0.671754 -0.312241 N1 -0.822132 0.476337 -0.311772 N2 -0.645526 0.373497 -0.66618 + txt003 +STRI + V0 -0.168463 0.168463 2.88333 V1 -0.120647 0.20518 2.88333 V2 -0.0871056 0.148234 2.78542 + N0 -0.527081 0.527081 -0.666611 N1 -0.373497 0.645526 -0.66618 N2 -0.476337 0.822132 -0.311772 + txt003 +STRI + V0 -0.0871056 0.148234 2.78542 V1 -0.121672 0.121672 2.78542 V2 -0.168463 0.168463 2.88333 + N0 -0.476337 0.822132 -0.311772 N1 -0.671754 0.671754 -0.312241 N2 -0.527081 0.527081 -0.666611 + txt003 +STRI + V0 -0.120647 0.20518 2.88333 V1 -0.0638032 0.228728 2.88333 V2 -0.0460445 0.165279 2.78542 + N0 -0.373497 0.645526 -0.66618 N1 -0.193465 0.721244 -0.665116 N2 -0.246906 0.917897 -0.310647 + txt003 +STRI + V0 -0.0460445 0.165279 2.78542 V1 -0.0871056 0.148234 2.78542 V2 -0.120647 0.20518 2.88333 + N0 -0.246906 0.917897 -0.310647 N1 -0.476337 0.822132 -0.311772 N2 -0.373497 0.645526 -0.66618 + txt003 +STRI + V0 -0.0638032 0.228728 2.88333 V1 1.11022e-16 0.237037 2.88333 V2 6.66134e-16 0.171296 2.78542 + N0 -0.193465 0.721244 -0.665116 N1 -2.42292e-15 0.747409 -0.664364 N2 -2.16507e-15 0.950775 -0.309882 + txt003 +STRI + V0 6.66134e-16 0.171296 2.78542 V1 -0.0460445 0.165279 2.78542 V2 -0.0638032 0.228728 2.88333 + N0 -2.16507e-15 0.950775 -0.309882 N1 -0.246906 0.917897 -0.310647 N2 -0.193465 0.721244 -0.665116 + txt003 +STRI + V0 -0.171296 0 2.78542 V1 -0.165279 0.0460445 2.78542 V2 -0.192963 0.0537037 2.7 + N0 -0.950775 0 -0.309882 N1 -0.917897 0.246906 -0.310647 N2 -0.578783 0.15602 0.800417 + txt003 +STRI + V0 -0.192963 0.0537037 2.7 V1 -0.2 0 2.7 V2 -0.171296 0 2.78542 + N0 -0.578783 0.15602 0.800417 N1 -0.6 0 0.8 N2 -0.950775 0 -0.309882 + txt003 +STRI + V0 -0.165279 0.0460445 2.78542 V1 -0.148234 0.0871056 2.78542 V2 -0.173037 0.10163 2.7 + N0 -0.917897 0.246906 -0.310647 N1 -0.822132 0.476337 -0.311772 N2 -0.517905 0.300385 0.800964 + txt003 +STRI + V0 -0.173037 0.10163 2.7 V1 -0.192963 0.0537037 2.7 V2 -0.165279 0.0460445 2.78542 + N0 -0.517905 0.300385 0.800964 N1 -0.578783 0.15602 0.800417 N2 -0.917897 0.246906 -0.310647 + txt003 +STRI + V0 -0.148234 0.0871056 2.78542 V1 -0.121672 0.121672 2.78542 V2 -0.142 0.142 2.7 + N0 -0.822132 0.476337 -0.311772 N1 -0.671754 0.671754 -0.312241 N2 -0.423155 0.423155 0.801174 + txt003 +STRI + V0 -0.142 0.142 2.7 V1 -0.173037 0.10163 2.7 V2 -0.148234 0.0871056 2.78542 + N0 -0.423155 0.423155 0.801174 N1 -0.517905 0.300385 0.800964 N2 -0.822132 0.476337 -0.311772 + txt003 +STRI + V0 -0.121672 0.121672 2.78542 V1 -0.0871056 0.148234 2.78542 V2 -0.10163 0.173037 2.7 + N0 -0.671754 0.671754 -0.312241 N1 -0.476337 0.822132 -0.311772 N2 -0.300385 0.517905 0.800964 + txt003 +STRI + V0 -0.10163 0.173037 2.7 V1 -0.142 0.142 2.7 V2 -0.121672 0.121672 2.78542 + N0 -0.300385 0.517905 0.800964 N1 -0.423155 0.423155 0.801174 N2 -0.671754 0.671754 -0.312241 + txt003 +STRI + V0 -0.0871056 0.148234 2.78542 V1 -0.0460445 0.165279 2.78542 V2 -0.0537037 0.192963 2.7 + N0 -0.476337 0.822132 -0.311772 N1 -0.246906 0.917897 -0.310647 N2 -0.15602 0.578783 0.800417 + txt003 +STRI + V0 -0.0537037 0.192963 2.7 V1 -0.10163 0.173037 2.7 V2 -0.0871056 0.148234 2.78542 + N0 -0.15602 0.578783 0.800417 N1 -0.300385 0.517905 0.800964 N2 -0.476337 0.822132 -0.311772 + txt003 +STRI + V0 -0.0460445 0.165279 2.78542 V1 6.66134e-16 0.171296 2.78542 V2 0 0.2 2.7 + N0 -0.246906 0.917897 -0.310647 N1 -2.16507e-15 0.950775 -0.309882 N2 3.17207e-15 0.6 0.8 + txt003 +STRI + V0 0 0.2 2.7 V1 -0.0537037 0.192963 2.7 V2 -0.0460445 0.165279 2.78542 + N0 3.17207e-15 0.6 0.8 N1 -0.15602 0.578783 0.800417 N2 -0.246906 0.917897 -0.310647 + txt003 +STRI + V0 0.0750782 0.268946 3.12708 V1 0 0.278704 3.12708 V2 0 0 3.15 + N0 0.0645609 0.241077 0.968356 N1 -0 0.249998 0.968246 N2 0 0 1 + txt003 +STRI + V0 0.141931 0.241285 3.12708 V1 0.0750782 0.268946 3.12708 V2 0 0 3.15 + N0 0.124615 0.215548 0.968509 N1 0.0645609 0.241077 0.968356 N2 0 0 1 + txt003 +STRI + V0 0.19814 0.19814 3.12708 V1 0.141931 0.241285 3.12708 V2 0 0 3.15 + N0 0.175885 0.175885 0.96857 N1 0.124615 0.215548 0.968509 N2 0 0 1 + txt003 +STRI + V0 0.241285 0.141931 3.12708 V1 0.19814 0.19814 3.12708 V2 0 0 3.15 + N0 0.215548 0.124615 0.968509 N1 0.175885 0.175885 0.96857 N2 0 0 1 + txt003 +STRI + V0 0.268946 0.0750782 3.12708 V1 0.241285 0.141931 3.12708 V2 0 0 3.15 + N0 0.241077 0.0645609 0.968356 N1 0.215548 0.124615 0.968509 N2 0 0 1 + txt003 +STRI + V0 0.278704 0 3.12708 V1 0.268946 0.0750782 3.12708 V2 0 0 3.15 + N0 0.249998 -2.80184e-15 0.968246 N1 0.241077 0.0645609 0.968356 N2 0 0 1 + txt003 +STRI + V0 0 0.278704 3.12708 V1 0.0750782 0.268946 3.12708 V2 0.0977709 0.350254 3.06667 + N0 -0 0.249998 0.968246 N1 0.0645609 0.241077 0.968356 N2 0.255913 0.955496 0.146755 + txt003 +STRI + V0 0.0977709 0.350254 3.06667 V1 0 0.362963 3.06667 V2 0 0.278704 3.12708 + N0 0.255913 0.955496 0.146755 N1 -0 0.989203 0.146549 N2 -0 0.249998 0.968246 + txt003 +STRI + V0 0.0750782 0.268946 3.12708 V1 0.141931 0.241285 3.12708 V2 0.184834 0.314228 3.06667 + N0 0.0645609 0.241077 0.968356 N1 0.124615 0.215548 0.968509 N2 0.495088 0.856312 0.147029 + txt003 +STRI + V0 0.184834 0.314228 3.06667 V1 0.0977709 0.350254 3.06667 V2 0.0750782 0.268946 3.12708 + N0 0.495088 0.856312 0.147029 N1 0.255913 0.955496 0.146755 N2 0.0645609 0.241077 0.968356 + txt003 +STRI + V0 0.141931 0.241285 3.12708 V1 0.19814 0.19814 3.12708 V2 0.258037 0.258037 3.06667 + N0 0.124615 0.215548 0.968509 N1 0.175885 0.175885 0.96857 N2 0.699411 0.699411 0.147135 + txt003 +STRI + V0 0.258037 0.258037 3.06667 V1 0.184834 0.314228 3.06667 V2 0.141931 0.241285 3.12708 + N0 0.699411 0.699411 0.147135 N1 0.495088 0.856312 0.147029 N2 0.124615 0.215548 0.968509 + txt003 +STRI + V0 0.19814 0.19814 3.12708 V1 0.241285 0.141931 3.12708 V2 0.314228 0.184834 3.06667 + N0 0.175885 0.175885 0.96857 N1 0.215548 0.124615 0.968509 N2 0.856312 0.495088 0.147029 + txt003 +STRI + V0 0.314228 0.184834 3.06667 V1 0.258037 0.258037 3.06667 V2 0.19814 0.19814 3.12708 + N0 0.856312 0.495088 0.147029 N1 0.699411 0.699411 0.147135 N2 0.175885 0.175885 0.96857 + txt003 +STRI + V0 0.241285 0.141931 3.12708 V1 0.268946 0.0750782 3.12708 V2 0.350254 0.0977709 3.06667 + N0 0.215548 0.124615 0.968509 N1 0.241077 0.0645609 0.968356 N2 0.955496 0.255913 0.146755 + txt003 +STRI + V0 0.350254 0.0977709 3.06667 V1 0.314228 0.184834 3.06667 V2 0.241285 0.141931 3.12708 + N0 0.955496 0.255913 0.146755 N1 0.856312 0.495088 0.147029 N2 0.215548 0.124615 0.968509 + txt003 +STRI + V0 0.268946 0.0750782 3.12708 V1 0.278704 0 3.12708 V2 0.362963 0 3.06667 + N0 0.241077 0.0645609 0.968356 N1 0.249998 -2.80184e-15 0.968246 N2 0.989203 -4.98112e-16 0.146549 + txt003 +STRI + V0 0.362963 0 3.06667 V1 0.350254 0.0977709 3.06667 V2 0.268946 0.0750782 3.12708 + N0 0.989203 -4.98112e-16 0.146549 N1 0.955496 0.255913 0.146755 N2 0.241077 0.0645609 0.968356 + txt003 +STRI + V0 0 0.362963 3.06667 V1 0.0977709 0.350254 3.06667 V2 0.0875289 0.313617 2.98125 + N0 -0 0.989203 0.146549 N1 0.255913 0.955496 0.146755 N2 0.201937 0.753688 -0.625441 + txt003 +STRI + V0 0.0875289 0.313617 2.98125 V1 0 0.325 2.98125 V2 0 0.362963 3.06667 + N0 0.201937 0.753688 -0.625441 N1 0 0.780869 -0.624695 N2 -0 0.989203 0.146549 + txt003 +STRI + V0 0.0977709 0.350254 3.06667 V1 0.184834 0.314228 3.06667 V2 0.165481 0.281352 2.98125 + N0 0.255913 0.955496 0.146755 N1 0.495088 0.856312 0.147029 N2 0.390178 0.674735 -0.626493 + txt003 +STRI + V0 0.165481 0.281352 2.98125 V1 0.0875289 0.313617 2.98125 V2 0.0977709 0.350254 3.06667 + N0 0.390178 0.674735 -0.626493 N1 0.201937 0.753688 -0.625441 N2 0.255913 0.955496 0.146755 + txt003 +STRI + V0 0.184834 0.314228 3.06667 V1 0.258037 0.258037 3.06667 V2 0.231031 0.231031 2.98125 + N0 0.495088 0.856312 0.147029 N1 0.699411 0.699411 0.147135 N2 0.550896 0.550896 -0.626919 + txt003 +STRI + V0 0.231031 0.231031 2.98125 V1 0.165481 0.281352 2.98125 V2 0.184834 0.314228 3.06667 + N0 0.550896 0.550896 -0.626919 N1 0.390178 0.674735 -0.626493 N2 0.495088 0.856312 0.147029 + txt003 +STRI + V0 0.258037 0.258037 3.06667 V1 0.314228 0.184834 3.06667 V2 0.281352 0.165481 2.98125 + N0 0.699411 0.699411 0.147135 N1 0.856312 0.495088 0.147029 N2 0.674735 0.390178 -0.626493 + txt003 +STRI + V0 0.281352 0.165481 2.98125 V1 0.231031 0.231031 2.98125 V2 0.258037 0.258037 3.06667 + N0 0.674735 0.390178 -0.626493 N1 0.550896 0.550896 -0.626919 N2 0.699411 0.699411 0.147135 + txt003 +STRI + V0 0.314228 0.184834 3.06667 V1 0.350254 0.0977709 3.06667 V2 0.313617 0.0875289 2.98125 + N0 0.856312 0.495088 0.147029 N1 0.955496 0.255913 0.146755 N2 0.753688 0.201937 -0.625441 + txt003 +STRI + V0 0.313617 0.0875289 2.98125 V1 0.281352 0.165481 2.98125 V2 0.314228 0.184834 3.06667 + N0 0.753688 0.201937 -0.625441 N1 0.674735 0.390178 -0.626493 N2 0.856312 0.495088 0.147029 + txt003 +STRI + V0 0.350254 0.0977709 3.06667 V1 0.362963 0 3.06667 V2 0.325 -1.11022e-16 2.98125 + N0 0.955496 0.255913 0.146755 N1 0.989203 -4.98112e-16 0.146549 N2 0.780869 1.51803e-15 -0.624695 + txt003 +STRI + V0 0.325 -1.11022e-16 2.98125 V1 0.313617 0.0875289 2.98125 V2 0.350254 0.0977709 3.06667 + N0 0.780869 1.51803e-15 -0.624695 N1 0.753688 0.201937 -0.625441 N2 0.955496 0.255913 0.146755 + txt003 +STRI + V0 0 0.325 2.98125 V1 0.0875289 0.313617 2.98125 V2 0.0638032 0.228728 2.88333 + N0 0 0.780869 -0.624695 N1 0.201937 0.753688 -0.625441 N2 0.193465 0.721244 -0.665116 + txt003 +STRI + V0 0.0638032 0.228728 2.88333 V1 0 0.237037 2.88333 V2 0 0.325 2.98125 + N0 0.193465 0.721244 -0.665116 N1 0 0.747409 -0.664364 N2 0 0.780869 -0.624695 + txt003 +STRI + V0 0.0875289 0.313617 2.98125 V1 0.165481 0.281352 2.98125 V2 0.120647 0.20518 2.88333 + N0 0.201937 0.753688 -0.625441 N1 0.390178 0.674735 -0.626493 N2 0.373497 0.645526 -0.66618 + txt003 +STRI + V0 0.120647 0.20518 2.88333 V1 0.0638032 0.228728 2.88333 V2 0.0875289 0.313617 2.98125 + N0 0.373497 0.645526 -0.66618 N1 0.193465 0.721244 -0.665116 N2 0.201937 0.753688 -0.625441 + txt003 +STRI + V0 0.165481 0.281352 2.98125 V1 0.231031 0.231031 2.98125 V2 0.168463 0.168463 2.88333 + N0 0.390178 0.674735 -0.626493 N1 0.550896 0.550896 -0.626919 N2 0.527081 0.527081 -0.666611 + txt003 +STRI + V0 0.168463 0.168463 2.88333 V1 0.120647 0.20518 2.88333 V2 0.165481 0.281352 2.98125 + N0 0.527081 0.527081 -0.666611 N1 0.373497 0.645526 -0.66618 N2 0.390178 0.674735 -0.626493 + txt003 +STRI + V0 0.231031 0.231031 2.98125 V1 0.281352 0.165481 2.98125 V2 0.20518 0.120647 2.88333 + N0 0.550896 0.550896 -0.626919 N1 0.674735 0.390178 -0.626493 N2 0.645526 0.373497 -0.66618 + txt003 +STRI + V0 0.20518 0.120647 2.88333 V1 0.168463 0.168463 2.88333 V2 0.231031 0.231031 2.98125 + N0 0.645526 0.373497 -0.66618 N1 0.527081 0.527081 -0.666611 N2 0.550896 0.550896 -0.626919 + txt003 +STRI + V0 0.281352 0.165481 2.98125 V1 0.313617 0.0875289 2.98125 V2 0.228728 0.0638032 2.88333 + N0 0.674735 0.390178 -0.626493 N1 0.753688 0.201937 -0.625441 N2 0.721244 0.193465 -0.665116 + txt003 +STRI + V0 0.228728 0.0638032 2.88333 V1 0.20518 0.120647 2.88333 V2 0.281352 0.165481 2.98125 + N0 0.721244 0.193465 -0.665116 N1 0.645526 0.373497 -0.66618 N2 0.674735 0.390178 -0.626493 + txt003 +STRI + V0 0.313617 0.0875289 2.98125 V1 0.325 -1.11022e-16 2.98125 V2 0.237037 -1.11022e-16 2.88333 + N0 0.753688 0.201937 -0.625441 N1 0.780869 1.51803e-15 -0.624695 N2 0.747409 2.42292e-15 -0.664364 + txt003 +STRI + V0 0.237037 -1.11022e-16 2.88333 V1 0.228728 0.0638032 2.88333 V2 0.313617 0.0875289 2.98125 + N0 0.747409 2.42292e-15 -0.664364 N1 0.721244 0.193465 -0.665116 N2 0.753688 0.201937 -0.625441 + txt003 +STRI + V0 0 0.237037 2.88333 V1 0.0638032 0.228728 2.88333 V2 0.0460445 0.165279 2.78542 + N0 0 0.747409 -0.664364 N1 0.193465 0.721244 -0.665116 N2 0.246906 0.917897 -0.310647 + txt003 +STRI + V0 0.0460445 0.165279 2.78542 V1 0 0.171296 2.78542 V2 0 0.237037 2.88333 + N0 0.246906 0.917897 -0.310647 N1 0 0.950775 -0.309882 N2 0 0.747409 -0.664364 + txt003 +STRI + V0 0.0638032 0.228728 2.88333 V1 0.120647 0.20518 2.88333 V2 0.0871056 0.148234 2.78542 + N0 0.193465 0.721244 -0.665116 N1 0.373497 0.645526 -0.66618 N2 0.476337 0.822132 -0.311772 + txt003 +STRI + V0 0.0871056 0.148234 2.78542 V1 0.0460445 0.165279 2.78542 V2 0.0638032 0.228728 2.88333 + N0 0.476337 0.822132 -0.311772 N1 0.246906 0.917897 -0.310647 N2 0.193465 0.721244 -0.665116 + txt003 +STRI + V0 0.120647 0.20518 2.88333 V1 0.168463 0.168463 2.88333 V2 0.121672 0.121672 2.78542 + N0 0.373497 0.645526 -0.66618 N1 0.527081 0.527081 -0.666611 N2 0.671754 0.671754 -0.312241 + txt003 +STRI + V0 0.121672 0.121672 2.78542 V1 0.0871056 0.148234 2.78542 V2 0.120647 0.20518 2.88333 + N0 0.671754 0.671754 -0.312241 N1 0.476337 0.822132 -0.311772 N2 0.373497 0.645526 -0.66618 + txt003 +STRI + V0 0.168463 0.168463 2.88333 V1 0.20518 0.120647 2.88333 V2 0.148234 0.0871056 2.78542 + N0 0.527081 0.527081 -0.666611 N1 0.645526 0.373497 -0.66618 N2 0.822132 0.476337 -0.311772 + txt003 +STRI + V0 0.148234 0.0871056 2.78542 V1 0.121672 0.121672 2.78542 V2 0.168463 0.168463 2.88333 + N0 0.822132 0.476337 -0.311772 N1 0.671754 0.671754 -0.312241 N2 0.527081 0.527081 -0.666611 + txt003 +STRI + V0 0.20518 0.120647 2.88333 V1 0.228728 0.0638032 2.88333 V2 0.165279 0.0460445 2.78542 + N0 0.645526 0.373497 -0.66618 N1 0.721244 0.193465 -0.665116 N2 0.917897 0.246906 -0.310647 + txt003 +STRI + V0 0.165279 0.0460445 2.78542 V1 0.148234 0.0871056 2.78542 V2 0.20518 0.120647 2.88333 + N0 0.917897 0.246906 -0.310647 N1 0.822132 0.476337 -0.311772 N2 0.645526 0.373497 -0.66618 + txt003 +STRI + V0 0.228728 0.0638032 2.88333 V1 0.237037 -1.11022e-16 2.88333 V2 0.171296 -6.66134e-16 2.78542 + N0 0.721244 0.193465 -0.665116 N1 0.747409 2.42292e-15 -0.664364 N2 0.950775 2.16507e-15 -0.309882 + txt003 +STRI + V0 0.171296 -6.66134e-16 2.78542 V1 0.165279 0.0460445 2.78542 V2 0.228728 0.0638032 2.88333 + N0 0.950775 2.16507e-15 -0.309882 N1 0.917897 0.246906 -0.310647 N2 0.721244 0.193465 -0.665116 + txt003 +STRI + V0 0 0.171296 2.78542 V1 0.0460445 0.165279 2.78542 V2 0.0537037 0.192963 2.7 + N0 0 0.950775 -0.309882 N1 0.246906 0.917897 -0.310647 N2 0.15602 0.578783 0.800417 + txt003 +STRI + V0 0.0537037 0.192963 2.7 V1 0 0.2 2.7 V2 0 0.171296 2.78542 + N0 0.15602 0.578783 0.800417 N1 -0 0.6 0.8 N2 0 0.950775 -0.309882 + txt003 +STRI + V0 0.0460445 0.165279 2.78542 V1 0.0871056 0.148234 2.78542 V2 0.10163 0.173037 2.7 + N0 0.246906 0.917897 -0.310647 N1 0.476337 0.822132 -0.311772 N2 0.300385 0.517905 0.800964 + txt003 +STRI + V0 0.10163 0.173037 2.7 V1 0.0537037 0.192963 2.7 V2 0.0460445 0.165279 2.78542 + N0 0.300385 0.517905 0.800964 N1 0.15602 0.578783 0.800417 N2 0.246906 0.917897 -0.310647 + txt003 +STRI + V0 0.0871056 0.148234 2.78542 V1 0.121672 0.121672 2.78542 V2 0.142 0.142 2.7 + N0 0.476337 0.822132 -0.311772 N1 0.671754 0.671754 -0.312241 N2 0.423155 0.423155 0.801174 + txt003 +STRI + V0 0.142 0.142 2.7 V1 0.10163 0.173037 2.7 V2 0.0871056 0.148234 2.78542 + N0 0.423155 0.423155 0.801174 N1 0.300385 0.517905 0.800964 N2 0.476337 0.822132 -0.311772 + txt003 +STRI + V0 0.121672 0.121672 2.78542 V1 0.148234 0.0871056 2.78542 V2 0.173037 0.10163 2.7 + N0 0.671754 0.671754 -0.312241 N1 0.822132 0.476337 -0.311772 N2 0.517905 0.300385 0.800964 + txt003 +STRI + V0 0.173037 0.10163 2.7 V1 0.142 0.142 2.7 V2 0.121672 0.121672 2.78542 + N0 0.517905 0.300385 0.800964 N1 0.423155 0.423155 0.801174 N2 0.671754 0.671754 -0.312241 + txt003 +STRI + V0 0.148234 0.0871056 2.78542 V1 0.165279 0.0460445 2.78542 V2 0.192963 0.0537037 2.7 + N0 0.822132 0.476337 -0.311772 N1 0.917897 0.246906 -0.310647 N2 0.578783 0.15602 0.800417 + txt003 +STRI + V0 0.192963 0.0537037 2.7 V1 0.173037 0.10163 2.7 V2 0.148234 0.0871056 2.78542 + N0 0.578783 0.15602 0.800417 N1 0.517905 0.300385 0.800964 N2 0.822132 0.476337 -0.311772 + txt003 +STRI + V0 0.165279 0.0460445 2.78542 V1 0.171296 -6.66134e-16 2.78542 V2 0.2 0 2.7 + N0 0.917897 0.246906 -0.310647 N1 0.950775 2.16507e-15 -0.309882 N2 0.6 -3.17207e-15 0.8 + txt003 +STRI + V0 0.2 0 2.7 V1 0.192963 0.0537037 2.7 V2 0.165279 0.0460445 2.78542 + N0 0.6 -3.17207e-15 0.8 N1 0.578783 0.15602 0.800417 N2 0.917897 0.246906 -0.310647 + txt003 +STRI + V0 0.2 0 2.7 V1 0.192963 -0.0537037 2.7 V2 0.338579 -0.0942301 2.63611 + N0 0.6 0 0.8 N1 0.578783 -0.15602 0.800417 N2 0.258756 -0.0697517 0.963421 + txt003 +STRI + V0 0.338579 -0.0942301 2.63611 V1 0.350926 0 2.63611 V2 0.2 0 2.7 + N0 0.258756 -0.0697517 0.963421 N1 0.268354 0 0.96332 N2 0.6 0 0.8 + txt003 +STRI + V0 0.192963 -0.0537037 2.7 V1 0.173037 -0.10163 2.7 V2 0.303616 -0.178322 2.63611 + N0 0.578783 -0.15602 0.800417 N1 0.517905 -0.300385 0.800964 N2 0.231413 -0.134219 0.963552 + txt003 +STRI + V0 0.303616 -0.178322 2.63611 V1 0.338579 -0.0942301 2.63611 V2 0.192963 -0.0537037 2.7 + N0 0.231413 -0.134219 0.963552 N1 0.258756 -0.0697517 0.963421 N2 0.578783 -0.15602 0.800417 + txt003 +STRI + V0 0.173037 -0.10163 2.7 V1 0.142 -0.142 2.7 V2 0.249157 -0.249157 2.63611 + N0 0.517905 -0.300385 0.800964 N1 0.423155 -0.423155 0.801174 N2 0.189037 -0.189037 0.963603 + txt003 +STRI + V0 0.249157 -0.249157 2.63611 V1 0.303616 -0.178322 2.63611 V2 0.173037 -0.10163 2.7 + N0 0.189037 -0.189037 0.963603 N1 0.231413 -0.134219 0.963552 N2 0.517905 -0.300385 0.800964 + txt003 +STRI + V0 0.142 -0.142 2.7 V1 0.10163 -0.173037 2.7 V2 0.178322 -0.303616 2.63611 + N0 0.423155 -0.423155 0.801174 N1 0.300385 -0.517905 0.800964 N2 0.134219 -0.231413 0.963552 + txt003 +STRI + V0 0.178322 -0.303616 2.63611 V1 0.249157 -0.249157 2.63611 V2 0.142 -0.142 2.7 + N0 0.134219 -0.231413 0.963552 N1 0.189037 -0.189037 0.963603 N2 0.423155 -0.423155 0.801174 + txt003 +STRI + V0 0.10163 -0.173037 2.7 V1 0.0537037 -0.192963 2.7 V2 0.0942301 -0.338579 2.63611 + N0 0.300385 -0.517905 0.800964 N1 0.15602 -0.578783 0.800417 N2 0.0697517 -0.258756 0.963421 + txt003 +STRI + V0 0.0942301 -0.338579 2.63611 V1 0.178322 -0.303616 2.63611 V2 0.10163 -0.173037 2.7 + N0 0.0697517 -0.258756 0.963421 N1 0.134219 -0.231413 0.963552 N2 0.300385 -0.517905 0.800964 + txt003 +STRI + V0 0.0537037 -0.192963 2.7 V1 0 -0.2 2.7 V2 5.55112e-17 -0.350926 2.63611 + N0 0.15602 -0.578783 0.800417 N1 -9.91271e-17 -0.6 0.8 N2 0 -0.268354 0.96332 + txt003 +STRI + V0 5.55112e-17 -0.350926 2.63611 V1 0.0942301 -0.338579 2.63611 V2 0.0537037 -0.192963 2.7 + N0 0 -0.268354 0.96332 N1 0.0697517 -0.258756 0.963421 N2 0.15602 -0.578783 0.800417 + txt003 +STRI + V0 0.350926 0 2.63611 V1 0.338579 -0.0942301 2.63611 V2 0.553875 -0.15415 2.58889 + N0 0.268354 0 0.96332 N1 0.258756 -0.0697517 0.963421 N2 0.162011 -0.0436726 0.985822 + txt003 +STRI + V0 0.553875 -0.15415 2.58889 V1 0.574074 0 2.58889 V2 0.350926 0 2.63611 + N0 0.162011 -0.0436726 0.985822 N1 0.168031 0 0.985782 N2 0.268354 0 0.96332 + txt003 +STRI + V0 0.338579 -0.0942301 2.63611 V1 0.303616 -0.178322 2.63611 V2 0.49668 -0.291715 2.58889 + N0 0.258756 -0.0697517 0.963421 N1 0.231413 -0.134219 0.963552 N2 0.144879 -0.0840299 0.985875 + txt003 +STRI + V0 0.49668 -0.291715 2.58889 V1 0.553875 -0.15415 2.58889 V2 0.338579 -0.0942301 2.63611 + N0 0.144879 -0.0840299 0.985875 N1 0.162011 -0.0436726 0.985822 N2 0.258756 -0.0697517 0.963421 + txt003 +STRI + V0 0.303616 -0.178322 2.63611 V1 0.249157 -0.249157 2.63611 V2 0.407593 -0.407593 2.58889 + N0 0.231413 -0.134219 0.963552 N1 0.189037 -0.189037 0.963603 N2 0.118345 -0.118345 0.985895 + txt003 +STRI + V0 0.407593 -0.407593 2.58889 V1 0.49668 -0.291715 2.58889 V2 0.303616 -0.178322 2.63611 + N0 0.118345 -0.118345 0.985895 N1 0.144879 -0.0840299 0.985875 N2 0.231413 -0.134219 0.963552 + txt003 +STRI + V0 0.249157 -0.249157 2.63611 V1 0.178322 -0.303616 2.63611 V2 0.291715 -0.49668 2.58889 + N0 0.189037 -0.189037 0.963603 N1 0.134219 -0.231413 0.963552 N2 0.0840299 -0.144879 0.985875 + txt003 +STRI + V0 0.291715 -0.49668 2.58889 V1 0.407593 -0.407593 2.58889 V2 0.249157 -0.249157 2.63611 + N0 0.0840299 -0.144879 0.985875 N1 0.118345 -0.118345 0.985895 N2 0.189037 -0.189037 0.963603 + txt003 +STRI + V0 0.178322 -0.303616 2.63611 V1 0.0942301 -0.338579 2.63611 V2 0.15415 -0.553875 2.58889 + N0 0.134219 -0.231413 0.963552 N1 0.0697517 -0.258756 0.963421 N2 0.0436726 -0.162011 0.985822 + txt003 +STRI + V0 0.15415 -0.553875 2.58889 V1 0.291715 -0.49668 2.58889 V2 0.178322 -0.303616 2.63611 + N0 0.0436726 -0.162011 0.985822 N1 0.0840299 -0.144879 0.985875 N2 0.134219 -0.231413 0.963552 + txt003 +STRI + V0 0.0942301 -0.338579 2.63611 V1 5.55112e-17 -0.350926 2.63611 V2 2.22045e-16 -0.574074 2.58889 + N0 0.0697517 -0.258756 0.963421 N1 0 -0.268354 0.96332 N2 -1.93429e-17 -0.168031 0.985782 + txt003 +STRI + V0 2.22045e-16 -0.574074 2.58889 V1 0.15415 -0.553875 2.58889 V2 0.0942301 -0.338579 2.63611 + N0 -1.93429e-17 -0.168031 0.985782 N1 0.0436726 -0.162011 0.985822 N2 0.0697517 -0.258756 0.963421 + txt003 +STRI + V0 0.574074 0 2.58889 V1 0.553875 -0.15415 2.58889 V2 0.795972 -0.221528 2.55 + N0 0.168031 0 0.985782 N1 0.162011 -0.0436726 0.985822 N2 0.143025 -0.0385545 0.988968 + txt003 +STRI + V0 0.795972 -0.221528 2.55 V1 0.825 0 2.55 V2 0.574074 0 2.58889 + N0 0.143025 -0.0385545 0.988968 N1 0.14834 0 0.988936 N2 0.168031 0 0.985782 + txt003 +STRI + V0 0.553875 -0.15415 2.58889 V1 0.49668 -0.291715 2.58889 V2 0.713778 -0.419222 2.55 + N0 0.162011 -0.0436726 0.985822 N1 0.144879 -0.0840299 0.985875 N2 0.127899 -0.0741814 0.989009 + txt003 +STRI + V0 0.713778 -0.419222 2.55 V1 0.795972 -0.221528 2.55 V2 0.553875 -0.15415 2.58889 + N0 0.127899 -0.0741814 0.989009 N1 0.143025 -0.0385545 0.988968 N2 0.162011 -0.0436726 0.985822 + txt003 +STRI + V0 0.49668 -0.291715 2.58889 V1 0.407593 -0.407593 2.58889 V2 0.58575 -0.58575 2.55 + N0 0.144879 -0.0840299 0.985875 N1 0.118345 -0.118345 0.985895 N2 0.104474 -0.104474 0.989025 + txt003 +STRI + V0 0.58575 -0.58575 2.55 V1 0.713778 -0.419222 2.55 V2 0.49668 -0.291715 2.58889 + N0 0.104474 -0.104474 0.989025 N1 0.127899 -0.0741814 0.989009 N2 0.144879 -0.0840299 0.985875 + txt003 +STRI + V0 0.407593 -0.407593 2.58889 V1 0.291715 -0.49668 2.58889 V2 0.419222 -0.713778 2.55 + N0 0.118345 -0.118345 0.985895 N1 0.0840299 -0.144879 0.985875 N2 0.0741814 -0.127899 0.989009 + txt003 +STRI + V0 0.419222 -0.713778 2.55 V1 0.58575 -0.58575 2.55 V2 0.407593 -0.407593 2.58889 + N0 0.0741814 -0.127899 0.989009 N1 0.104474 -0.104474 0.989025 N2 0.118345 -0.118345 0.985895 + txt003 +STRI + V0 0.291715 -0.49668 2.58889 V1 0.15415 -0.553875 2.58889 V2 0.221528 -0.795972 2.55 + N0 0.0840299 -0.144879 0.985875 N1 0.0436726 -0.162011 0.985822 N2 0.0385545 -0.143025 0.988968 + txt003 +STRI + V0 0.221528 -0.795972 2.55 V1 0.419222 -0.713778 2.55 V2 0.291715 -0.49668 2.58889 + N0 0.0385545 -0.143025 0.988968 N1 0.0741814 -0.127899 0.989009 N2 0.0840299 -0.144879 0.985875 + txt003 +STRI + V0 0.15415 -0.553875 2.58889 V1 2.22045e-16 -0.574074 2.58889 V2 1.11022e-16 -0.825 2.55 + N0 0.0436726 -0.162011 0.985822 N1 -1.93429e-17 -0.168031 0.985782 N2 -2.37649e-17 -0.14834 0.988936 + txt003 +STRI + V0 1.11022e-16 -0.825 2.55 V1 0.221528 -0.795972 2.55 V2 0.15415 -0.553875 2.58889 + N0 -2.37649e-17 -0.14834 0.988936 N1 0.0385545 -0.143025 0.988968 N2 0.0436726 -0.162011 0.985822 + txt003 +STRI + V0 0.825 0 2.55 V1 0.795972 -0.221528 2.55 V2 1.02199 -0.284431 2.51111 + N0 0.14834 0 0.988936 N1 0.143025 -0.0385545 0.988968 N2 0.186699 -0.0503275 0.981127 + txt003 +STRI + V0 1.02199 -0.284431 2.51111 V1 1.05926 0 2.51111 V2 0.825 0 2.55 + N0 0.186699 -0.0503275 0.981127 N1 0.193633 0 0.981074 N2 0.14834 0 0.988936 + txt003 +STRI + V0 0.795972 -0.221528 2.55 V1 0.713778 -0.419222 2.55 V2 0.916455 -0.538261 2.51111 + N0 0.143025 -0.0385545 0.988968 N1 0.127899 -0.0741814 0.989009 N2 0.166959 -0.0968361 0.981197 + txt003 +STRI + V0 0.916455 -0.538261 2.51111 V1 1.02199 -0.284431 2.51111 V2 0.795972 -0.221528 2.55 + N0 0.166959 -0.0968361 0.981197 N1 0.186699 -0.0503275 0.981127 N2 0.143025 -0.0385545 0.988968 + txt003 +STRI + V0 0.713778 -0.419222 2.55 V1 0.58575 -0.58575 2.55 V2 0.752074 -0.752074 2.51111 + N0 0.127899 -0.0741814 0.989009 N1 0.104474 -0.104474 0.989025 N2 0.136382 -0.136382 0.981224 + txt003 +STRI + V0 0.752074 -0.752074 2.51111 V1 0.916455 -0.538261 2.51111 V2 0.713778 -0.419222 2.55 + N0 0.136382 -0.136382 0.981224 N1 0.166959 -0.0968361 0.981197 N2 0.127899 -0.0741814 0.989009 + txt003 +STRI + V0 0.58575 -0.58575 2.55 V1 0.419222 -0.713778 2.55 V2 0.538261 -0.916455 2.51111 + N0 0.104474 -0.104474 0.989025 N1 0.0741814 -0.127899 0.989009 N2 0.0968361 -0.166959 0.981197 + txt003 +STRI + V0 0.538261 -0.916455 2.51111 V1 0.752074 -0.752074 2.51111 V2 0.58575 -0.58575 2.55 + N0 0.0968361 -0.166959 0.981197 N1 0.136382 -0.136382 0.981224 N2 0.104474 -0.104474 0.989025 + txt003 +STRI + V0 0.419222 -0.713778 2.55 V1 0.221528 -0.795972 2.55 V2 0.284431 -1.02199 2.51111 + N0 0.0741814 -0.127899 0.989009 N1 0.0385545 -0.143025 0.988968 N2 0.0503275 -0.186699 0.981127 + txt003 +STRI + V0 0.284431 -1.02199 2.51111 V1 0.538261 -0.916455 2.51111 V2 0.419222 -0.713778 2.55 + N0 0.0503275 -0.186699 0.981127 N1 0.0968361 -0.166959 0.981197 N2 0.0741814 -0.127899 0.989009 + txt003 +STRI + V0 0.221528 -0.795972 2.55 V1 1.11022e-16 -0.825 2.55 V2 4.44089e-16 -1.05926 2.51111 + N0 0.0385545 -0.143025 0.988968 N1 -2.37649e-17 -0.14834 0.988936 N2 -7.24819e-17 -0.193633 0.981074 + txt003 +STRI + V0 4.44089e-16 -1.05926 2.51111 V1 0.284431 -1.02199 2.51111 V2 0.221528 -0.795972 2.55 + N0 -7.24819e-17 -0.193633 0.981074 N1 0.0503275 -0.186699 0.981127 N2 0.0385545 -0.143025 0.988968 + txt003 +STRI + V0 1.05926 0 2.51111 V1 1.02199 -0.284431 2.51111 V2 1.18904 -0.330924 2.46389 + N0 0.193633 0 0.981074 N1 0.186699 -0.0503275 0.981127 N2 0.376378 -0.101459 0.920894 + txt003 +STRI + V0 1.18904 -0.330924 2.46389 V1 1.23241 0 2.46389 V2 1.05926 0 2.51111 + N0 0.376378 -0.101459 0.920894 N1 0.390293 0 0.920691 N2 0.193633 0 0.981074 + txt003 +STRI + V0 1.02199 -0.284431 2.51111 V1 0.916455 -0.538261 2.51111 V2 1.06626 -0.626246 2.46389 + N0 0.186699 -0.0503275 0.981127 N1 0.166959 -0.0968361 0.981197 N2 0.336657 -0.195261 0.92116 + txt003 +STRI + V0 1.06626 -0.626246 2.46389 V1 1.18904 -0.330924 2.46389 V2 1.02199 -0.284431 2.51111 + N0 0.336657 -0.195261 0.92116 N1 0.376378 -0.101459 0.920894 N2 0.186699 -0.0503275 0.981127 + txt003 +STRI + V0 0.916455 -0.538261 2.51111 V1 0.752074 -0.752074 2.51111 V2 0.875009 -0.875009 2.46389 + N0 0.166959 -0.0968361 0.981197 N1 0.136382 -0.136382 0.981224 N2 0.275025 -0.275025 0.921262 + txt003 +STRI + V0 0.875009 -0.875009 2.46389 V1 1.06626 -0.626246 2.46389 V2 0.916455 -0.538261 2.51111 + N0 0.275025 -0.275025 0.921262 N1 0.336657 -0.195261 0.92116 N2 0.166959 -0.0968361 0.981197 + txt003 +STRI + V0 0.752074 -0.752074 2.51111 V1 0.538261 -0.916455 2.51111 V2 0.626246 -1.06626 2.46389 + N0 0.136382 -0.136382 0.981224 N1 0.0968361 -0.166959 0.981197 N2 0.195261 -0.336657 0.92116 + txt003 +STRI + V0 0.626246 -1.06626 2.46389 V1 0.875009 -0.875009 2.46389 V2 0.752074 -0.752074 2.51111 + N0 0.195261 -0.336657 0.92116 N1 0.275025 -0.275025 0.921262 N2 0.136382 -0.136382 0.981224 + txt003 +STRI + V0 0.538261 -0.916455 2.51111 V1 0.284431 -1.02199 2.51111 V2 0.330924 -1.18904 2.46389 + N0 0.0968361 -0.166959 0.981197 N1 0.0503275 -0.186699 0.981127 N2 0.101459 -0.376378 0.920894 + txt003 +STRI + V0 0.330924 -1.18904 2.46389 V1 0.626246 -1.06626 2.46389 V2 0.538261 -0.916455 2.51111 + N0 0.101459 -0.376378 0.920894 N1 0.195261 -0.336657 0.92116 N2 0.0968361 -0.166959 0.981197 + txt003 +STRI + V0 0.284431 -1.02199 2.51111 V1 4.44089e-16 -1.05926 2.51111 V2 4.44089e-16 -1.23241 2.46389 + N0 0.0503275 -0.186699 0.981127 N1 -7.24819e-17 -0.193633 0.981074 N2 -8.37138e-17 -0.390293 0.920691 + txt003 +STRI + V0 4.44089e-16 -1.23241 2.46389 V1 0.330924 -1.18904 2.46389 V2 0.284431 -1.02199 2.51111 + N0 -8.37138e-17 -0.390293 0.920691 N1 0.101459 -0.376378 0.920894 N2 0.0503275 -0.186699 0.981127 + txt003 +STRI + V0 1.23241 0 2.46389 V1 1.18904 -0.330924 2.46389 V2 1.25426 -0.349074 2.4 + N0 0.390293 0 0.920691 N1 0.376378 -0.101459 0.920894 N2 0.965535 -0.260275 -1.02004e-15 + txt003 +STRI + V0 1.25426 -0.349074 2.4 V1 1.3 0 2.4 V2 1.23241 0 2.46389 + N0 0.965535 -0.260275 -1.02004e-15 N1 1 0 -9.86865e-16 N2 0.390293 0 0.920691 + txt003 +STRI + V0 1.18904 -0.330924 2.46389 V1 1.06626 -0.626246 2.46389 V2 1.12474 -0.660593 2.4 + N0 0.376378 -0.101459 0.920894 N1 0.336657 -0.195261 0.92116 N2 0.865031 -0.501718 -9.69705e-16 + txt003 +STRI + V0 1.12474 -0.660593 2.4 V1 1.25426 -0.349074 2.4 V2 1.18904 -0.330924 2.46389 + N0 0.865031 -0.501718 -9.69705e-16 N1 0.965535 -0.260275 -1.02004e-15 N2 0.376378 -0.101459 0.920894 + txt003 +STRI + V0 1.06626 -0.626246 2.46389 V1 0.875009 -0.875009 2.46389 V2 0.923 -0.923 2.4 + N0 0.336657 -0.195261 0.92116 N1 0.275025 -0.275025 0.921262 N2 0.707107 -0.707107 -7.41433e-16 + txt003 +STRI + V0 0.923 -0.923 2.4 V1 1.12474 -0.660593 2.4 V2 1.06626 -0.626246 2.46389 + N0 0.707107 -0.707107 -7.41433e-16 N1 0.865031 -0.501718 -9.69705e-16 N2 0.336657 -0.195261 0.92116 + txt003 +STRI + V0 0.875009 -0.875009 2.46389 V1 0.626246 -1.06626 2.46389 V2 0.660593 -1.12474 2.4 + N0 0.275025 -0.275025 0.921262 N1 0.195261 -0.336657 0.92116 N2 0.501718 -0.865031 -4.67305e-16 + txt003 +STRI + V0 0.660593 -1.12474 2.4 V1 0.923 -0.923 2.4 V2 0.875009 -0.875009 2.46389 + N0 0.501718 -0.865031 -4.67305e-16 N1 0.707107 -0.707107 -7.41433e-16 N2 0.275025 -0.275025 0.921262 + txt003 +STRI + V0 0.626246 -1.06626 2.46389 V1 0.330924 -1.18904 2.46389 V2 0.349074 -1.25426 2.4 + N0 0.195261 -0.336657 0.92116 N1 0.101459 -0.376378 0.920894 N2 0.260275 -0.965535 -5.24893e-16 + txt003 +STRI + V0 0.349074 -1.25426 2.4 V1 0.660593 -1.12474 2.4 V2 0.626246 -1.06626 2.46389 + N0 0.260275 -0.965535 -5.24893e-16 N1 0.501718 -0.865031 -4.67305e-16 N2 0.195261 -0.336657 0.92116 + txt003 +STRI + V0 0.330924 -1.18904 2.46389 V1 4.44089e-16 -1.23241 2.46389 V2 6.66134e-16 -1.3 2.4 + N0 0.101459 -0.376378 0.920894 N1 -8.37138e-17 -0.390293 0.920691 N2 -4.06675e-16 -1 -1.4803e-15 + txt003 +STRI + V0 6.66134e-16 -1.3 2.4 V1 0.349074 -1.25426 2.4 V2 0.330924 -1.18904 2.46389 + N0 -4.06675e-16 -1 -1.4803e-15 N1 0.260275 -0.965535 -5.24893e-16 N2 0.101459 -0.376378 0.920894 + txt003 +STRI + V0 0 -0.2 2.7 V1 -0.0537037 -0.192963 2.7 V2 -0.0942301 -0.338579 2.63611 + N0 0 -0.6 0.8 N1 -0.15602 -0.578783 0.800417 N2 -0.0697517 -0.258756 0.963421 + txt003 +STRI + V0 -0.0942301 -0.338579 2.63611 V1 0 -0.350926 2.63611 V2 0 -0.2 2.7 + N0 -0.0697517 -0.258756 0.963421 N1 0 -0.268354 0.96332 N2 0 -0.6 0.8 + txt003 +STRI + V0 -0.0537037 -0.192963 2.7 V1 -0.10163 -0.173037 2.7 V2 -0.178322 -0.303616 2.63611 + N0 -0.15602 -0.578783 0.800417 N1 -0.300385 -0.517905 0.800964 N2 -0.134219 -0.231413 0.963552 + txt003 +STRI + V0 -0.178322 -0.303616 2.63611 V1 -0.0942301 -0.338579 2.63611 V2 -0.0537037 -0.192963 2.7 + N0 -0.134219 -0.231413 0.963552 N1 -0.0697517 -0.258756 0.963421 N2 -0.15602 -0.578783 0.800417 + txt003 +STRI + V0 -0.10163 -0.173037 2.7 V1 -0.142 -0.142 2.7 V2 -0.249157 -0.249157 2.63611 + N0 -0.300385 -0.517905 0.800964 N1 -0.423155 -0.423155 0.801174 N2 -0.189037 -0.189037 0.963603 + txt003 +STRI + V0 -0.249157 -0.249157 2.63611 V1 -0.178322 -0.303616 2.63611 V2 -0.10163 -0.173037 2.7 + N0 -0.189037 -0.189037 0.963603 N1 -0.134219 -0.231413 0.963552 N2 -0.300385 -0.517905 0.800964 + txt003 +STRI + V0 -0.142 -0.142 2.7 V1 -0.173037 -0.10163 2.7 V2 -0.303616 -0.178322 2.63611 + N0 -0.423155 -0.423155 0.801174 N1 -0.517905 -0.300385 0.800964 N2 -0.231413 -0.134219 0.963552 + txt003 +STRI + V0 -0.303616 -0.178322 2.63611 V1 -0.249157 -0.249157 2.63611 V2 -0.142 -0.142 2.7 + N0 -0.231413 -0.134219 0.963552 N1 -0.189037 -0.189037 0.963603 N2 -0.423155 -0.423155 0.801174 + txt003 +STRI + V0 -0.173037 -0.10163 2.7 V1 -0.192963 -0.0537037 2.7 V2 -0.338579 -0.0942301 2.63611 + N0 -0.517905 -0.300385 0.800964 N1 -0.578783 -0.15602 0.800417 N2 -0.258756 -0.0697517 0.963421 + txt003 +STRI + V0 -0.338579 -0.0942301 2.63611 V1 -0.303616 -0.178322 2.63611 V2 -0.173037 -0.10163 2.7 + N0 -0.258756 -0.0697517 0.963421 N1 -0.231413 -0.134219 0.963552 N2 -0.517905 -0.300385 0.800964 + txt003 +STRI + V0 -0.192963 -0.0537037 2.7 V1 -0.2 0 2.7 V2 -0.350926 -5.55112e-17 2.63611 + N0 -0.578783 -0.15602 0.800417 N1 -0.6 9.91271e-17 0.8 N2 -0.268354 0 0.96332 + txt003 +STRI + V0 -0.350926 -5.55112e-17 2.63611 V1 -0.338579 -0.0942301 2.63611 V2 -0.192963 -0.0537037 2.7 + N0 -0.268354 0 0.96332 N1 -0.258756 -0.0697517 0.963421 N2 -0.578783 -0.15602 0.800417 + txt003 +STRI + V0 0 -0.350926 2.63611 V1 -0.0942301 -0.338579 2.63611 V2 -0.15415 -0.553875 2.58889 + N0 0 -0.268354 0.96332 N1 -0.0697517 -0.258756 0.963421 N2 -0.0436726 -0.162011 0.985822 + txt003 +STRI + V0 -0.15415 -0.553875 2.58889 V1 0 -0.574074 2.58889 V2 0 -0.350926 2.63611 + N0 -0.0436726 -0.162011 0.985822 N1 0 -0.168031 0.985782 N2 0 -0.268354 0.96332 + txt003 +STRI + V0 -0.0942301 -0.338579 2.63611 V1 -0.178322 -0.303616 2.63611 V2 -0.291715 -0.49668 2.58889 + N0 -0.0697517 -0.258756 0.963421 N1 -0.134219 -0.231413 0.963552 N2 -0.0840299 -0.144879 0.985875 + txt003 +STRI + V0 -0.291715 -0.49668 2.58889 V1 -0.15415 -0.553875 2.58889 V2 -0.0942301 -0.338579 2.63611 + N0 -0.0840299 -0.144879 0.985875 N1 -0.0436726 -0.162011 0.985822 N2 -0.0697517 -0.258756 0.963421 + txt003 +STRI + V0 -0.178322 -0.303616 2.63611 V1 -0.249157 -0.249157 2.63611 V2 -0.407593 -0.407593 2.58889 + N0 -0.134219 -0.231413 0.963552 N1 -0.189037 -0.189037 0.963603 N2 -0.118345 -0.118345 0.985895 + txt003 +STRI + V0 -0.407593 -0.407593 2.58889 V1 -0.291715 -0.49668 2.58889 V2 -0.178322 -0.303616 2.63611 + N0 -0.118345 -0.118345 0.985895 N1 -0.0840299 -0.144879 0.985875 N2 -0.134219 -0.231413 0.963552 + txt003 +STRI + V0 -0.249157 -0.249157 2.63611 V1 -0.303616 -0.178322 2.63611 V2 -0.49668 -0.291715 2.58889 + N0 -0.189037 -0.189037 0.963603 N1 -0.231413 -0.134219 0.963552 N2 -0.144879 -0.0840299 0.985875 + txt003 +STRI + V0 -0.49668 -0.291715 2.58889 V1 -0.407593 -0.407593 2.58889 V2 -0.249157 -0.249157 2.63611 + N0 -0.144879 -0.0840299 0.985875 N1 -0.118345 -0.118345 0.985895 N2 -0.189037 -0.189037 0.963603 + txt003 +STRI + V0 -0.303616 -0.178322 2.63611 V1 -0.338579 -0.0942301 2.63611 V2 -0.553875 -0.15415 2.58889 + N0 -0.231413 -0.134219 0.963552 N1 -0.258756 -0.0697517 0.963421 N2 -0.162011 -0.0436726 0.985822 + txt003 +STRI + V0 -0.553875 -0.15415 2.58889 V1 -0.49668 -0.291715 2.58889 V2 -0.303616 -0.178322 2.63611 + N0 -0.162011 -0.0436726 0.985822 N1 -0.144879 -0.0840299 0.985875 N2 -0.231413 -0.134219 0.963552 + txt003 +STRI + V0 -0.338579 -0.0942301 2.63611 V1 -0.350926 -5.55112e-17 2.63611 V2 -0.574074 -2.22045e-16 2.58889 + N0 -0.258756 -0.0697517 0.963421 N1 -0.268354 0 0.96332 N2 -0.168031 1.93429e-17 0.985782 + txt003 +STRI + V0 -0.574074 -2.22045e-16 2.58889 V1 -0.553875 -0.15415 2.58889 V2 -0.338579 -0.0942301 2.63611 + N0 -0.168031 1.93429e-17 0.985782 N1 -0.162011 -0.0436726 0.985822 N2 -0.258756 -0.0697517 0.963421 + txt003 +STRI + V0 0 -0.574074 2.58889 V1 -0.15415 -0.553875 2.58889 V2 -0.221528 -0.795972 2.55 + N0 0 -0.168031 0.985782 N1 -0.0436726 -0.162011 0.985822 N2 -0.0385545 -0.143025 0.988968 + txt003 +STRI + V0 -0.221528 -0.795972 2.55 V1 0 -0.825 2.55 V2 0 -0.574074 2.58889 + N0 -0.0385545 -0.143025 0.988968 N1 0 -0.14834 0.988936 N2 0 -0.168031 0.985782 + txt003 +STRI + V0 -0.15415 -0.553875 2.58889 V1 -0.291715 -0.49668 2.58889 V2 -0.419222 -0.713778 2.55 + N0 -0.0436726 -0.162011 0.985822 N1 -0.0840299 -0.144879 0.985875 N2 -0.0741814 -0.127899 0.989009 + txt003 +STRI + V0 -0.419222 -0.713778 2.55 V1 -0.221528 -0.795972 2.55 V2 -0.15415 -0.553875 2.58889 + N0 -0.0741814 -0.127899 0.989009 N1 -0.0385545 -0.143025 0.988968 N2 -0.0436726 -0.162011 0.985822 + txt003 +STRI + V0 -0.291715 -0.49668 2.58889 V1 -0.407593 -0.407593 2.58889 V2 -0.58575 -0.58575 2.55 + N0 -0.0840299 -0.144879 0.985875 N1 -0.118345 -0.118345 0.985895 N2 -0.104474 -0.104474 0.989025 + txt003 +STRI + V0 -0.58575 -0.58575 2.55 V1 -0.419222 -0.713778 2.55 V2 -0.291715 -0.49668 2.58889 + N0 -0.104474 -0.104474 0.989025 N1 -0.0741814 -0.127899 0.989009 N2 -0.0840299 -0.144879 0.985875 + txt003 +STRI + V0 -0.407593 -0.407593 2.58889 V1 -0.49668 -0.291715 2.58889 V2 -0.713778 -0.419222 2.55 + N0 -0.118345 -0.118345 0.985895 N1 -0.144879 -0.0840299 0.985875 N2 -0.127899 -0.0741814 0.989009 + txt003 +STRI + V0 -0.713778 -0.419222 2.55 V1 -0.58575 -0.58575 2.55 V2 -0.407593 -0.407593 2.58889 + N0 -0.127899 -0.0741814 0.989009 N1 -0.104474 -0.104474 0.989025 N2 -0.118345 -0.118345 0.985895 + txt003 +STRI + V0 -0.49668 -0.291715 2.58889 V1 -0.553875 -0.15415 2.58889 V2 -0.795972 -0.221528 2.55 + N0 -0.144879 -0.0840299 0.985875 N1 -0.162011 -0.0436726 0.985822 N2 -0.143025 -0.0385545 0.988968 + txt003 +STRI + V0 -0.795972 -0.221528 2.55 V1 -0.713778 -0.419222 2.55 V2 -0.49668 -0.291715 2.58889 + N0 -0.143025 -0.0385545 0.988968 N1 -0.127899 -0.0741814 0.989009 N2 -0.144879 -0.0840299 0.985875 + txt003 +STRI + V0 -0.553875 -0.15415 2.58889 V1 -0.574074 -2.22045e-16 2.58889 V2 -0.825 -1.11022e-16 2.55 + N0 -0.162011 -0.0436726 0.985822 N1 -0.168031 1.93429e-17 0.985782 N2 -0.14834 2.37649e-17 0.988936 + txt003 +STRI + V0 -0.825 -1.11022e-16 2.55 V1 -0.795972 -0.221528 2.55 V2 -0.553875 -0.15415 2.58889 + N0 -0.14834 2.37649e-17 0.988936 N1 -0.143025 -0.0385545 0.988968 N2 -0.162011 -0.0436726 0.985822 + txt003 +STRI + V0 0 -0.825 2.55 V1 -0.221528 -0.795972 2.55 V2 -0.284431 -1.02199 2.51111 + N0 0 -0.14834 0.988936 N1 -0.0385545 -0.143025 0.988968 N2 -0.0503275 -0.186699 0.981127 + txt003 +STRI + V0 -0.284431 -1.02199 2.51111 V1 0 -1.05926 2.51111 V2 0 -0.825 2.55 + N0 -0.0503275 -0.186699 0.981127 N1 0 -0.193633 0.981074 N2 0 -0.14834 0.988936 + txt003 +STRI + V0 -0.221528 -0.795972 2.55 V1 -0.419222 -0.713778 2.55 V2 -0.538261 -0.916455 2.51111 + N0 -0.0385545 -0.143025 0.988968 N1 -0.0741814 -0.127899 0.989009 N2 -0.0968361 -0.166959 0.981197 + txt003 +STRI + V0 -0.538261 -0.916455 2.51111 V1 -0.284431 -1.02199 2.51111 V2 -0.221528 -0.795972 2.55 + N0 -0.0968361 -0.166959 0.981197 N1 -0.0503275 -0.186699 0.981127 N2 -0.0385545 -0.143025 0.988968 + txt003 +STRI + V0 -0.419222 -0.713778 2.55 V1 -0.58575 -0.58575 2.55 V2 -0.752074 -0.752074 2.51111 + N0 -0.0741814 -0.127899 0.989009 N1 -0.104474 -0.104474 0.989025 N2 -0.136382 -0.136382 0.981224 + txt003 +STRI + V0 -0.752074 -0.752074 2.51111 V1 -0.538261 -0.916455 2.51111 V2 -0.419222 -0.713778 2.55 + N0 -0.136382 -0.136382 0.981224 N1 -0.0968361 -0.166959 0.981197 N2 -0.0741814 -0.127899 0.989009 + txt003 +STRI + V0 -0.58575 -0.58575 2.55 V1 -0.713778 -0.419222 2.55 V2 -0.916455 -0.538261 2.51111 + N0 -0.104474 -0.104474 0.989025 N1 -0.127899 -0.0741814 0.989009 N2 -0.166959 -0.0968361 0.981197 + txt003 +STRI + V0 -0.916455 -0.538261 2.51111 V1 -0.752074 -0.752074 2.51111 V2 -0.58575 -0.58575 2.55 + N0 -0.166959 -0.0968361 0.981197 N1 -0.136382 -0.136382 0.981224 N2 -0.104474 -0.104474 0.989025 + txt003 +STRI + V0 -0.713778 -0.419222 2.55 V1 -0.795972 -0.221528 2.55 V2 -1.02199 -0.284431 2.51111 + N0 -0.127899 -0.0741814 0.989009 N1 -0.143025 -0.0385545 0.988968 N2 -0.186699 -0.0503275 0.981127 + txt003 +STRI + V0 -1.02199 -0.284431 2.51111 V1 -0.916455 -0.538261 2.51111 V2 -0.713778 -0.419222 2.55 + N0 -0.186699 -0.0503275 0.981127 N1 -0.166959 -0.0968361 0.981197 N2 -0.127899 -0.0741814 0.989009 + txt003 +STRI + V0 -0.795972 -0.221528 2.55 V1 -0.825 -1.11022e-16 2.55 V2 -1.05926 -4.44089e-16 2.51111 + N0 -0.143025 -0.0385545 0.988968 N1 -0.14834 2.37649e-17 0.988936 N2 -0.193633 7.24819e-17 0.981074 + txt003 +STRI + V0 -1.05926 -4.44089e-16 2.51111 V1 -1.02199 -0.284431 2.51111 V2 -0.795972 -0.221528 2.55 + N0 -0.193633 7.24819e-17 0.981074 N1 -0.186699 -0.0503275 0.981127 N2 -0.143025 -0.0385545 0.988968 + txt003 +STRI + V0 0 -1.05926 2.51111 V1 -0.284431 -1.02199 2.51111 V2 -0.330924 -1.18904 2.46389 + N0 0 -0.193633 0.981074 N1 -0.0503275 -0.186699 0.981127 N2 -0.101459 -0.376378 0.920894 + txt003 +STRI + V0 -0.330924 -1.18904 2.46389 V1 0 -1.23241 2.46389 V2 0 -1.05926 2.51111 + N0 -0.101459 -0.376378 0.920894 N1 0 -0.390293 0.920691 N2 0 -0.193633 0.981074 + txt003 +STRI + V0 -0.284431 -1.02199 2.51111 V1 -0.538261 -0.916455 2.51111 V2 -0.626246 -1.06626 2.46389 + N0 -0.0503275 -0.186699 0.981127 N1 -0.0968361 -0.166959 0.981197 N2 -0.195261 -0.336657 0.92116 + txt003 +STRI + V0 -0.626246 -1.06626 2.46389 V1 -0.330924 -1.18904 2.46389 V2 -0.284431 -1.02199 2.51111 + N0 -0.195261 -0.336657 0.92116 N1 -0.101459 -0.376378 0.920894 N2 -0.0503275 -0.186699 0.981127 + txt003 +STRI + V0 -0.538261 -0.916455 2.51111 V1 -0.752074 -0.752074 2.51111 V2 -0.875009 -0.875009 2.46389 + N0 -0.0968361 -0.166959 0.981197 N1 -0.136382 -0.136382 0.981224 N2 -0.275025 -0.275025 0.921262 + txt003 +STRI + V0 -0.875009 -0.875009 2.46389 V1 -0.626246 -1.06626 2.46389 V2 -0.538261 -0.916455 2.51111 + N0 -0.275025 -0.275025 0.921262 N1 -0.195261 -0.336657 0.92116 N2 -0.0968361 -0.166959 0.981197 + txt003 +STRI + V0 -0.752074 -0.752074 2.51111 V1 -0.916455 -0.538261 2.51111 V2 -1.06626 -0.626246 2.46389 + N0 -0.136382 -0.136382 0.981224 N1 -0.166959 -0.0968361 0.981197 N2 -0.336657 -0.195261 0.92116 + txt003 +STRI + V0 -1.06626 -0.626246 2.46389 V1 -0.875009 -0.875009 2.46389 V2 -0.752074 -0.752074 2.51111 + N0 -0.336657 -0.195261 0.92116 N1 -0.275025 -0.275025 0.921262 N2 -0.136382 -0.136382 0.981224 + txt003 +STRI + V0 -0.916455 -0.538261 2.51111 V1 -1.02199 -0.284431 2.51111 V2 -1.18904 -0.330924 2.46389 + N0 -0.166959 -0.0968361 0.981197 N1 -0.186699 -0.0503275 0.981127 N2 -0.376378 -0.101459 0.920894 + txt003 +STRI + V0 -1.18904 -0.330924 2.46389 V1 -1.06626 -0.626246 2.46389 V2 -0.916455 -0.538261 2.51111 + N0 -0.376378 -0.101459 0.920894 N1 -0.336657 -0.195261 0.92116 N2 -0.166959 -0.0968361 0.981197 + txt003 +STRI + V0 -1.02199 -0.284431 2.51111 V1 -1.05926 -4.44089e-16 2.51111 V2 -1.23241 -4.44089e-16 2.46389 + N0 -0.186699 -0.0503275 0.981127 N1 -0.193633 7.24819e-17 0.981074 N2 -0.390293 8.37138e-17 0.920691 + txt003 +STRI + V0 -1.23241 -4.44089e-16 2.46389 V1 -1.18904 -0.330924 2.46389 V2 -1.02199 -0.284431 2.51111 + N0 -0.390293 8.37138e-17 0.920691 N1 -0.376378 -0.101459 0.920894 N2 -0.186699 -0.0503275 0.981127 + txt003 +STRI + V0 0 -1.23241 2.46389 V1 -0.330924 -1.18904 2.46389 V2 -0.349074 -1.25426 2.4 + N0 0 -0.390293 0.920691 N1 -0.101459 -0.376378 0.920894 N2 -0.260275 -0.965535 -1.02004e-15 + txt003 +STRI + V0 -0.349074 -1.25426 2.4 V1 0 -1.3 2.4 V2 0 -1.23241 2.46389 + N0 -0.260275 -0.965535 -1.02004e-15 N1 -0 -1 -9.86865e-16 N2 0 -0.390293 0.920691 + txt003 +STRI + V0 -0.330924 -1.18904 2.46389 V1 -0.626246 -1.06626 2.46389 V2 -0.660593 -1.12474 2.4 + N0 -0.101459 -0.376378 0.920894 N1 -0.195261 -0.336657 0.92116 N2 -0.501718 -0.865031 -9.69705e-16 + txt003 +STRI + V0 -0.660593 -1.12474 2.4 V1 -0.349074 -1.25426 2.4 V2 -0.330924 -1.18904 2.46389 + N0 -0.501718 -0.865031 -9.69705e-16 N1 -0.260275 -0.965535 -1.02004e-15 N2 -0.101459 -0.376378 0.920894 + txt003 +STRI + V0 -0.626246 -1.06626 2.46389 V1 -0.875009 -0.875009 2.46389 V2 -0.923 -0.923 2.4 + N0 -0.195261 -0.336657 0.92116 N1 -0.275025 -0.275025 0.921262 N2 -0.707107 -0.707107 -7.41433e-16 + txt003 +STRI + V0 -0.923 -0.923 2.4 V1 -0.660593 -1.12474 2.4 V2 -0.626246 -1.06626 2.46389 + N0 -0.707107 -0.707107 -7.41433e-16 N1 -0.501718 -0.865031 -9.69705e-16 N2 -0.195261 -0.336657 0.92116 + txt003 +STRI + V0 -0.875009 -0.875009 2.46389 V1 -1.06626 -0.626246 2.46389 V2 -1.12474 -0.660593 2.4 + N0 -0.275025 -0.275025 0.921262 N1 -0.336657 -0.195261 0.92116 N2 -0.865031 -0.501718 -4.67305e-16 + txt003 +STRI + V0 -1.12474 -0.660593 2.4 V1 -0.923 -0.923 2.4 V2 -0.875009 -0.875009 2.46389 + N0 -0.865031 -0.501718 -4.67305e-16 N1 -0.707107 -0.707107 -7.41433e-16 N2 -0.275025 -0.275025 0.921262 + txt003 +STRI + V0 -1.06626 -0.626246 2.46389 V1 -1.18904 -0.330924 2.46389 V2 -1.25426 -0.349074 2.4 + N0 -0.336657 -0.195261 0.92116 N1 -0.376378 -0.101459 0.920894 N2 -0.965535 -0.260275 -5.24893e-16 + txt003 +STRI + V0 -1.25426 -0.349074 2.4 V1 -1.12474 -0.660593 2.4 V2 -1.06626 -0.626246 2.46389 + N0 -0.965535 -0.260275 -5.24893e-16 N1 -0.865031 -0.501718 -4.67305e-16 N2 -0.336657 -0.195261 0.92116 + txt003 +STRI + V0 -1.18904 -0.330924 2.46389 V1 -1.23241 -4.44089e-16 2.46389 V2 -1.3 -6.66134e-16 2.4 + N0 -0.376378 -0.101459 0.920894 N1 -0.390293 8.37138e-17 0.920691 N2 -1 4.06675e-16 -1.4803e-15 + txt003 +STRI + V0 -1.3 -6.66134e-16 2.4 V1 -1.25426 -0.349074 2.4 V2 -1.18904 -0.330924 2.46389 + N0 -1 4.06675e-16 -1.4803e-15 N1 -0.965535 -0.260275 -5.24893e-16 N2 -0.376378 -0.101459 0.920894 + txt003 +STRI + V0 -0.2 0 2.7 V1 -0.192963 0.0537037 2.7 V2 -0.338579 0.0942301 2.63611 + N0 -0.6 0 0.8 N1 -0.578783 0.15602 0.800417 N2 -0.258756 0.0697517 0.963421 + txt003 +STRI + V0 -0.338579 0.0942301 2.63611 V1 -0.350926 0 2.63611 V2 -0.2 0 2.7 + N0 -0.258756 0.0697517 0.963421 N1 -0.268354 0 0.96332 N2 -0.6 0 0.8 + txt003 +STRI + V0 -0.192963 0.0537037 2.7 V1 -0.173037 0.10163 2.7 V2 -0.303616 0.178322 2.63611 + N0 -0.578783 0.15602 0.800417 N1 -0.517905 0.300385 0.800964 N2 -0.231413 0.134219 0.963552 + txt003 +STRI + V0 -0.303616 0.178322 2.63611 V1 -0.338579 0.0942301 2.63611 V2 -0.192963 0.0537037 2.7 + N0 -0.231413 0.134219 0.963552 N1 -0.258756 0.0697517 0.963421 N2 -0.578783 0.15602 0.800417 + txt003 +STRI + V0 -0.173037 0.10163 2.7 V1 -0.142 0.142 2.7 V2 -0.249157 0.249157 2.63611 + N0 -0.517905 0.300385 0.800964 N1 -0.423155 0.423155 0.801174 N2 -0.189037 0.189037 0.963603 + txt003 +STRI + V0 -0.249157 0.249157 2.63611 V1 -0.303616 0.178322 2.63611 V2 -0.173037 0.10163 2.7 + N0 -0.189037 0.189037 0.963603 N1 -0.231413 0.134219 0.963552 N2 -0.517905 0.300385 0.800964 + txt003 +STRI + V0 -0.142 0.142 2.7 V1 -0.10163 0.173037 2.7 V2 -0.178322 0.303616 2.63611 + N0 -0.423155 0.423155 0.801174 N1 -0.300385 0.517905 0.800964 N2 -0.134219 0.231413 0.963552 + txt003 +STRI + V0 -0.178322 0.303616 2.63611 V1 -0.249157 0.249157 2.63611 V2 -0.142 0.142 2.7 + N0 -0.134219 0.231413 0.963552 N1 -0.189037 0.189037 0.963603 N2 -0.423155 0.423155 0.801174 + txt003 +STRI + V0 -0.10163 0.173037 2.7 V1 -0.0537037 0.192963 2.7 V2 -0.0942301 0.338579 2.63611 + N0 -0.300385 0.517905 0.800964 N1 -0.15602 0.578783 0.800417 N2 -0.0697517 0.258756 0.963421 + txt003 +STRI + V0 -0.0942301 0.338579 2.63611 V1 -0.178322 0.303616 2.63611 V2 -0.10163 0.173037 2.7 + N0 -0.0697517 0.258756 0.963421 N1 -0.134219 0.231413 0.963552 N2 -0.300385 0.517905 0.800964 + txt003 +STRI + V0 -0.0537037 0.192963 2.7 V1 0 0.2 2.7 V2 -5.55112e-17 0.350926 2.63611 + N0 -0.15602 0.578783 0.800417 N1 9.91271e-17 0.6 0.8 N2 -0 0.268354 0.96332 + txt003 +STRI + V0 -5.55112e-17 0.350926 2.63611 V1 -0.0942301 0.338579 2.63611 V2 -0.0537037 0.192963 2.7 + N0 -0 0.268354 0.96332 N1 -0.0697517 0.258756 0.963421 N2 -0.15602 0.578783 0.800417 + txt003 +STRI + V0 -0.350926 0 2.63611 V1 -0.338579 0.0942301 2.63611 V2 -0.553875 0.15415 2.58889 + N0 -0.268354 0 0.96332 N1 -0.258756 0.0697517 0.963421 N2 -0.162011 0.0436726 0.985822 + txt003 +STRI + V0 -0.553875 0.15415 2.58889 V1 -0.574074 0 2.58889 V2 -0.350926 0 2.63611 + N0 -0.162011 0.0436726 0.985822 N1 -0.168031 0 0.985782 N2 -0.268354 0 0.96332 + txt003 +STRI + V0 -0.338579 0.0942301 2.63611 V1 -0.303616 0.178322 2.63611 V2 -0.49668 0.291715 2.58889 + N0 -0.258756 0.0697517 0.963421 N1 -0.231413 0.134219 0.963552 N2 -0.144879 0.0840299 0.985875 + txt003 +STRI + V0 -0.49668 0.291715 2.58889 V1 -0.553875 0.15415 2.58889 V2 -0.338579 0.0942301 2.63611 + N0 -0.144879 0.0840299 0.985875 N1 -0.162011 0.0436726 0.985822 N2 -0.258756 0.0697517 0.963421 + txt003 +STRI + V0 -0.303616 0.178322 2.63611 V1 -0.249157 0.249157 2.63611 V2 -0.407593 0.407593 2.58889 + N0 -0.231413 0.134219 0.963552 N1 -0.189037 0.189037 0.963603 N2 -0.118345 0.118345 0.985895 + txt003 +STRI + V0 -0.407593 0.407593 2.58889 V1 -0.49668 0.291715 2.58889 V2 -0.303616 0.178322 2.63611 + N0 -0.118345 0.118345 0.985895 N1 -0.144879 0.0840299 0.985875 N2 -0.231413 0.134219 0.963552 + txt003 +STRI + V0 -0.249157 0.249157 2.63611 V1 -0.178322 0.303616 2.63611 V2 -0.291715 0.49668 2.58889 + N0 -0.189037 0.189037 0.963603 N1 -0.134219 0.231413 0.963552 N2 -0.0840299 0.144879 0.985875 + txt003 +STRI + V0 -0.291715 0.49668 2.58889 V1 -0.407593 0.407593 2.58889 V2 -0.249157 0.249157 2.63611 + N0 -0.0840299 0.144879 0.985875 N1 -0.118345 0.118345 0.985895 N2 -0.189037 0.189037 0.963603 + txt003 +STRI + V0 -0.178322 0.303616 2.63611 V1 -0.0942301 0.338579 2.63611 V2 -0.15415 0.553875 2.58889 + N0 -0.134219 0.231413 0.963552 N1 -0.0697517 0.258756 0.963421 N2 -0.0436726 0.162011 0.985822 + txt003 +STRI + V0 -0.15415 0.553875 2.58889 V1 -0.291715 0.49668 2.58889 V2 -0.178322 0.303616 2.63611 + N0 -0.0436726 0.162011 0.985822 N1 -0.0840299 0.144879 0.985875 N2 -0.134219 0.231413 0.963552 + txt003 +STRI + V0 -0.0942301 0.338579 2.63611 V1 -5.55112e-17 0.350926 2.63611 V2 -2.22045e-16 0.574074 2.58889 + N0 -0.0697517 0.258756 0.963421 N1 -0 0.268354 0.96332 N2 1.93429e-17 0.168031 0.985782 + txt003 +STRI + V0 -2.22045e-16 0.574074 2.58889 V1 -0.15415 0.553875 2.58889 V2 -0.0942301 0.338579 2.63611 + N0 1.93429e-17 0.168031 0.985782 N1 -0.0436726 0.162011 0.985822 N2 -0.0697517 0.258756 0.963421 + txt003 +STRI + V0 -0.574074 0 2.58889 V1 -0.553875 0.15415 2.58889 V2 -0.795972 0.221528 2.55 + N0 -0.168031 0 0.985782 N1 -0.162011 0.0436726 0.985822 N2 -0.143025 0.0385545 0.988968 + txt003 +STRI + V0 -0.795972 0.221528 2.55 V1 -0.825 0 2.55 V2 -0.574074 0 2.58889 + N0 -0.143025 0.0385545 0.988968 N1 -0.14834 0 0.988936 N2 -0.168031 0 0.985782 + txt003 +STRI + V0 -0.553875 0.15415 2.58889 V1 -0.49668 0.291715 2.58889 V2 -0.713778 0.419222 2.55 + N0 -0.162011 0.0436726 0.985822 N1 -0.144879 0.0840299 0.985875 N2 -0.127899 0.0741814 0.989009 + txt003 +STRI + V0 -0.713778 0.419222 2.55 V1 -0.795972 0.221528 2.55 V2 -0.553875 0.15415 2.58889 + N0 -0.127899 0.0741814 0.989009 N1 -0.143025 0.0385545 0.988968 N2 -0.162011 0.0436726 0.985822 + txt003 +STRI + V0 -0.49668 0.291715 2.58889 V1 -0.407593 0.407593 2.58889 V2 -0.58575 0.58575 2.55 + N0 -0.144879 0.0840299 0.985875 N1 -0.118345 0.118345 0.985895 N2 -0.104474 0.104474 0.989025 + txt003 +STRI + V0 -0.58575 0.58575 2.55 V1 -0.713778 0.419222 2.55 V2 -0.49668 0.291715 2.58889 + N0 -0.104474 0.104474 0.989025 N1 -0.127899 0.0741814 0.989009 N2 -0.144879 0.0840299 0.985875 + txt003 +STRI + V0 -0.407593 0.407593 2.58889 V1 -0.291715 0.49668 2.58889 V2 -0.419222 0.713778 2.55 + N0 -0.118345 0.118345 0.985895 N1 -0.0840299 0.144879 0.985875 N2 -0.0741814 0.127899 0.989009 + txt003 +STRI + V0 -0.419222 0.713778 2.55 V1 -0.58575 0.58575 2.55 V2 -0.407593 0.407593 2.58889 + N0 -0.0741814 0.127899 0.989009 N1 -0.104474 0.104474 0.989025 N2 -0.118345 0.118345 0.985895 + txt003 +STRI + V0 -0.291715 0.49668 2.58889 V1 -0.15415 0.553875 2.58889 V2 -0.221528 0.795972 2.55 + N0 -0.0840299 0.144879 0.985875 N1 -0.0436726 0.162011 0.985822 N2 -0.0385545 0.143025 0.988968 + txt003 +STRI + V0 -0.221528 0.795972 2.55 V1 -0.419222 0.713778 2.55 V2 -0.291715 0.49668 2.58889 + N0 -0.0385545 0.143025 0.988968 N1 -0.0741814 0.127899 0.989009 N2 -0.0840299 0.144879 0.985875 + txt003 +STRI + V0 -0.15415 0.553875 2.58889 V1 -2.22045e-16 0.574074 2.58889 V2 -1.11022e-16 0.825 2.55 + N0 -0.0436726 0.162011 0.985822 N1 1.93429e-17 0.168031 0.985782 N2 2.37649e-17 0.14834 0.988936 + txt003 +STRI + V0 -1.11022e-16 0.825 2.55 V1 -0.221528 0.795972 2.55 V2 -0.15415 0.553875 2.58889 + N0 2.37649e-17 0.14834 0.988936 N1 -0.0385545 0.143025 0.988968 N2 -0.0436726 0.162011 0.985822 + txt003 +STRI + V0 -0.825 0 2.55 V1 -0.795972 0.221528 2.55 V2 -1.02199 0.284431 2.51111 + N0 -0.14834 0 0.988936 N1 -0.143025 0.0385545 0.988968 N2 -0.186699 0.0503275 0.981127 + txt003 +STRI + V0 -1.02199 0.284431 2.51111 V1 -1.05926 0 2.51111 V2 -0.825 0 2.55 + N0 -0.186699 0.0503275 0.981127 N1 -0.193633 0 0.981074 N2 -0.14834 0 0.988936 + txt003 +STRI + V0 -0.795972 0.221528 2.55 V1 -0.713778 0.419222 2.55 V2 -0.916455 0.538261 2.51111 + N0 -0.143025 0.0385545 0.988968 N1 -0.127899 0.0741814 0.989009 N2 -0.166959 0.0968361 0.981197 + txt003 +STRI + V0 -0.916455 0.538261 2.51111 V1 -1.02199 0.284431 2.51111 V2 -0.795972 0.221528 2.55 + N0 -0.166959 0.0968361 0.981197 N1 -0.186699 0.0503275 0.981127 N2 -0.143025 0.0385545 0.988968 + txt003 +STRI + V0 -0.713778 0.419222 2.55 V1 -0.58575 0.58575 2.55 V2 -0.752074 0.752074 2.51111 + N0 -0.127899 0.0741814 0.989009 N1 -0.104474 0.104474 0.989025 N2 -0.136382 0.136382 0.981224 + txt003 +STRI + V0 -0.752074 0.752074 2.51111 V1 -0.916455 0.538261 2.51111 V2 -0.713778 0.419222 2.55 + N0 -0.136382 0.136382 0.981224 N1 -0.166959 0.0968361 0.981197 N2 -0.127899 0.0741814 0.989009 + txt003 +STRI + V0 -0.58575 0.58575 2.55 V1 -0.419222 0.713778 2.55 V2 -0.538261 0.916455 2.51111 + N0 -0.104474 0.104474 0.989025 N1 -0.0741814 0.127899 0.989009 N2 -0.0968361 0.166959 0.981197 + txt003 +STRI + V0 -0.538261 0.916455 2.51111 V1 -0.752074 0.752074 2.51111 V2 -0.58575 0.58575 2.55 + N0 -0.0968361 0.166959 0.981197 N1 -0.136382 0.136382 0.981224 N2 -0.104474 0.104474 0.989025 + txt003 +STRI + V0 -0.419222 0.713778 2.55 V1 -0.221528 0.795972 2.55 V2 -0.284431 1.02199 2.51111 + N0 -0.0741814 0.127899 0.989009 N1 -0.0385545 0.143025 0.988968 N2 -0.0503275 0.186699 0.981127 + txt003 +STRI + V0 -0.284431 1.02199 2.51111 V1 -0.538261 0.916455 2.51111 V2 -0.419222 0.713778 2.55 + N0 -0.0503275 0.186699 0.981127 N1 -0.0968361 0.166959 0.981197 N2 -0.0741814 0.127899 0.989009 + txt003 +STRI + V0 -0.221528 0.795972 2.55 V1 -1.11022e-16 0.825 2.55 V2 -4.44089e-16 1.05926 2.51111 + N0 -0.0385545 0.143025 0.988968 N1 2.37649e-17 0.14834 0.988936 N2 7.24819e-17 0.193633 0.981074 + txt003 +STRI + V0 -4.44089e-16 1.05926 2.51111 V1 -0.284431 1.02199 2.51111 V2 -0.221528 0.795972 2.55 + N0 7.24819e-17 0.193633 0.981074 N1 -0.0503275 0.186699 0.981127 N2 -0.0385545 0.143025 0.988968 + txt003 +STRI + V0 -1.05926 0 2.51111 V1 -1.02199 0.284431 2.51111 V2 -1.18904 0.330924 2.46389 + N0 -0.193633 0 0.981074 N1 -0.186699 0.0503275 0.981127 N2 -0.376378 0.101459 0.920894 + txt003 +STRI + V0 -1.18904 0.330924 2.46389 V1 -1.23241 0 2.46389 V2 -1.05926 0 2.51111 + N0 -0.376378 0.101459 0.920894 N1 -0.390293 0 0.920691 N2 -0.193633 0 0.981074 + txt003 +STRI + V0 -1.02199 0.284431 2.51111 V1 -0.916455 0.538261 2.51111 V2 -1.06626 0.626246 2.46389 + N0 -0.186699 0.0503275 0.981127 N1 -0.166959 0.0968361 0.981197 N2 -0.336657 0.195261 0.92116 + txt003 +STRI + V0 -1.06626 0.626246 2.46389 V1 -1.18904 0.330924 2.46389 V2 -1.02199 0.284431 2.51111 + N0 -0.336657 0.195261 0.92116 N1 -0.376378 0.101459 0.920894 N2 -0.186699 0.0503275 0.981127 + txt003 +STRI + V0 -0.916455 0.538261 2.51111 V1 -0.752074 0.752074 2.51111 V2 -0.875009 0.875009 2.46389 + N0 -0.166959 0.0968361 0.981197 N1 -0.136382 0.136382 0.981224 N2 -0.275025 0.275025 0.921262 + txt003 +STRI + V0 -0.875009 0.875009 2.46389 V1 -1.06626 0.626246 2.46389 V2 -0.916455 0.538261 2.51111 + N0 -0.275025 0.275025 0.921262 N1 -0.336657 0.195261 0.92116 N2 -0.166959 0.0968361 0.981197 + txt003 +STRI + V0 -0.752074 0.752074 2.51111 V1 -0.538261 0.916455 2.51111 V2 -0.626246 1.06626 2.46389 + N0 -0.136382 0.136382 0.981224 N1 -0.0968361 0.166959 0.981197 N2 -0.195261 0.336657 0.92116 + txt003 +STRI + V0 -0.626246 1.06626 2.46389 V1 -0.875009 0.875009 2.46389 V2 -0.752074 0.752074 2.51111 + N0 -0.195261 0.336657 0.92116 N1 -0.275025 0.275025 0.921262 N2 -0.136382 0.136382 0.981224 + txt003 +STRI + V0 -0.538261 0.916455 2.51111 V1 -0.284431 1.02199 2.51111 V2 -0.330924 1.18904 2.46389 + N0 -0.0968361 0.166959 0.981197 N1 -0.0503275 0.186699 0.981127 N2 -0.101459 0.376378 0.920894 + txt003 +STRI + V0 -0.330924 1.18904 2.46389 V1 -0.626246 1.06626 2.46389 V2 -0.538261 0.916455 2.51111 + N0 -0.101459 0.376378 0.920894 N1 -0.195261 0.336657 0.92116 N2 -0.0968361 0.166959 0.981197 + txt003 +STRI + V0 -0.284431 1.02199 2.51111 V1 -4.44089e-16 1.05926 2.51111 V2 -4.44089e-16 1.23241 2.46389 + N0 -0.0503275 0.186699 0.981127 N1 7.24819e-17 0.193633 0.981074 N2 8.37138e-17 0.390293 0.920691 + txt003 +STRI + V0 -4.44089e-16 1.23241 2.46389 V1 -0.330924 1.18904 2.46389 V2 -0.284431 1.02199 2.51111 + N0 8.37138e-17 0.390293 0.920691 N1 -0.101459 0.376378 0.920894 N2 -0.0503275 0.186699 0.981127 + txt003 +STRI + V0 -1.23241 0 2.46389 V1 -1.18904 0.330924 2.46389 V2 -1.25426 0.349074 2.4 + N0 -0.390293 0 0.920691 N1 -0.376378 0.101459 0.920894 N2 -0.965535 0.260275 -1.02004e-15 + txt003 +STRI + V0 -1.25426 0.349074 2.4 V1 -1.3 0 2.4 V2 -1.23241 0 2.46389 + N0 -0.965535 0.260275 -1.02004e-15 N1 -1 0 -9.86865e-16 N2 -0.390293 0 0.920691 + txt003 +STRI + V0 -1.18904 0.330924 2.46389 V1 -1.06626 0.626246 2.46389 V2 -1.12474 0.660593 2.4 + N0 -0.376378 0.101459 0.920894 N1 -0.336657 0.195261 0.92116 N2 -0.865031 0.501718 -9.69705e-16 + txt003 +STRI + V0 -1.12474 0.660593 2.4 V1 -1.25426 0.349074 2.4 V2 -1.18904 0.330924 2.46389 + N0 -0.865031 0.501718 -9.69705e-16 N1 -0.965535 0.260275 -1.02004e-15 N2 -0.376378 0.101459 0.920894 + txt003 +STRI + V0 -1.06626 0.626246 2.46389 V1 -0.875009 0.875009 2.46389 V2 -0.923 0.923 2.4 + N0 -0.336657 0.195261 0.92116 N1 -0.275025 0.275025 0.921262 N2 -0.707107 0.707107 -7.41433e-16 + txt003 +STRI + V0 -0.923 0.923 2.4 V1 -1.12474 0.660593 2.4 V2 -1.06626 0.626246 2.46389 + N0 -0.707107 0.707107 -7.41433e-16 N1 -0.865031 0.501718 -9.69705e-16 N2 -0.336657 0.195261 0.92116 + txt003 +STRI + V0 -0.875009 0.875009 2.46389 V1 -0.626246 1.06626 2.46389 V2 -0.660593 1.12474 2.4 + N0 -0.275025 0.275025 0.921262 N1 -0.195261 0.336657 0.92116 N2 -0.501718 0.865031 -4.67305e-16 + txt003 +STRI + V0 -0.660593 1.12474 2.4 V1 -0.923 0.923 2.4 V2 -0.875009 0.875009 2.46389 + N0 -0.501718 0.865031 -4.67305e-16 N1 -0.707107 0.707107 -7.41433e-16 N2 -0.275025 0.275025 0.921262 + txt003 +STRI + V0 -0.626246 1.06626 2.46389 V1 -0.330924 1.18904 2.46389 V2 -0.349074 1.25426 2.4 + N0 -0.195261 0.336657 0.92116 N1 -0.101459 0.376378 0.920894 N2 -0.260275 0.965535 -5.24893e-16 + txt003 +STRI + V0 -0.349074 1.25426 2.4 V1 -0.660593 1.12474 2.4 V2 -0.626246 1.06626 2.46389 + N0 -0.260275 0.965535 -5.24893e-16 N1 -0.501718 0.865031 -4.67305e-16 N2 -0.195261 0.336657 0.92116 + txt003 +STRI + V0 -0.330924 1.18904 2.46389 V1 -4.44089e-16 1.23241 2.46389 V2 -6.66134e-16 1.3 2.4 + N0 -0.101459 0.376378 0.920894 N1 8.37138e-17 0.390293 0.920691 N2 4.06675e-16 1 -1.4803e-15 + txt003 +STRI + V0 -6.66134e-16 1.3 2.4 V1 -0.349074 1.25426 2.4 V2 -0.330924 1.18904 2.46389 + N0 4.06675e-16 1 -1.4803e-15 N1 -0.260275 0.965535 -5.24893e-16 N2 -0.101459 0.376378 0.920894 + txt003 +STRI + V0 0 0.2 2.7 V1 0.0537037 0.192963 2.7 V2 0.0942301 0.338579 2.63611 + N0 -0 0.6 0.8 N1 0.15602 0.578783 0.800417 N2 0.0697517 0.258756 0.963421 + txt003 +STRI + V0 0.0942301 0.338579 2.63611 V1 0 0.350926 2.63611 V2 0 0.2 2.7 + N0 0.0697517 0.258756 0.963421 N1 -0 0.268354 0.96332 N2 -0 0.6 0.8 + txt003 +STRI + V0 0.0537037 0.192963 2.7 V1 0.10163 0.173037 2.7 V2 0.178322 0.303616 2.63611 + N0 0.15602 0.578783 0.800417 N1 0.300385 0.517905 0.800964 N2 0.134219 0.231413 0.963552 + txt003 +STRI + V0 0.178322 0.303616 2.63611 V1 0.0942301 0.338579 2.63611 V2 0.0537037 0.192963 2.7 + N0 0.134219 0.231413 0.963552 N1 0.0697517 0.258756 0.963421 N2 0.15602 0.578783 0.800417 + txt003 +STRI + V0 0.10163 0.173037 2.7 V1 0.142 0.142 2.7 V2 0.249157 0.249157 2.63611 + N0 0.300385 0.517905 0.800964 N1 0.423155 0.423155 0.801174 N2 0.189037 0.189037 0.963603 + txt003 +STRI + V0 0.249157 0.249157 2.63611 V1 0.178322 0.303616 2.63611 V2 0.10163 0.173037 2.7 + N0 0.189037 0.189037 0.963603 N1 0.134219 0.231413 0.963552 N2 0.300385 0.517905 0.800964 + txt003 +STRI + V0 0.142 0.142 2.7 V1 0.173037 0.10163 2.7 V2 0.303616 0.178322 2.63611 + N0 0.423155 0.423155 0.801174 N1 0.517905 0.300385 0.800964 N2 0.231413 0.134219 0.963552 + txt003 +STRI + V0 0.303616 0.178322 2.63611 V1 0.249157 0.249157 2.63611 V2 0.142 0.142 2.7 + N0 0.231413 0.134219 0.963552 N1 0.189037 0.189037 0.963603 N2 0.423155 0.423155 0.801174 + txt003 +STRI + V0 0.173037 0.10163 2.7 V1 0.192963 0.0537037 2.7 V2 0.338579 0.0942301 2.63611 + N0 0.517905 0.300385 0.800964 N1 0.578783 0.15602 0.800417 N2 0.258756 0.0697517 0.963421 + txt003 +STRI + V0 0.338579 0.0942301 2.63611 V1 0.303616 0.178322 2.63611 V2 0.173037 0.10163 2.7 + N0 0.258756 0.0697517 0.963421 N1 0.231413 0.134219 0.963552 N2 0.517905 0.300385 0.800964 + txt003 +STRI + V0 0.192963 0.0537037 2.7 V1 0.2 0 2.7 V2 0.350926 5.55112e-17 2.63611 + N0 0.578783 0.15602 0.800417 N1 0.6 -9.91271e-17 0.8 N2 0.268354 0 0.96332 + txt003 +STRI + V0 0.350926 5.55112e-17 2.63611 V1 0.338579 0.0942301 2.63611 V2 0.192963 0.0537037 2.7 + N0 0.268354 0 0.96332 N1 0.258756 0.0697517 0.963421 N2 0.578783 0.15602 0.800417 + txt003 +STRI + V0 0 0.350926 2.63611 V1 0.0942301 0.338579 2.63611 V2 0.15415 0.553875 2.58889 + N0 -0 0.268354 0.96332 N1 0.0697517 0.258756 0.963421 N2 0.0436726 0.162011 0.985822 + txt003 +STRI + V0 0.15415 0.553875 2.58889 V1 0 0.574074 2.58889 V2 0 0.350926 2.63611 + N0 0.0436726 0.162011 0.985822 N1 -0 0.168031 0.985782 N2 -0 0.268354 0.96332 + txt003 +STRI + V0 0.0942301 0.338579 2.63611 V1 0.178322 0.303616 2.63611 V2 0.291715 0.49668 2.58889 + N0 0.0697517 0.258756 0.963421 N1 0.134219 0.231413 0.963552 N2 0.0840299 0.144879 0.985875 + txt003 +STRI + V0 0.291715 0.49668 2.58889 V1 0.15415 0.553875 2.58889 V2 0.0942301 0.338579 2.63611 + N0 0.0840299 0.144879 0.985875 N1 0.0436726 0.162011 0.985822 N2 0.0697517 0.258756 0.963421 + txt003 +STRI + V0 0.178322 0.303616 2.63611 V1 0.249157 0.249157 2.63611 V2 0.407593 0.407593 2.58889 + N0 0.134219 0.231413 0.963552 N1 0.189037 0.189037 0.963603 N2 0.118345 0.118345 0.985895 + txt003 +STRI + V0 0.407593 0.407593 2.58889 V1 0.291715 0.49668 2.58889 V2 0.178322 0.303616 2.63611 + N0 0.118345 0.118345 0.985895 N1 0.0840299 0.144879 0.985875 N2 0.134219 0.231413 0.963552 + txt003 +STRI + V0 0.249157 0.249157 2.63611 V1 0.303616 0.178322 2.63611 V2 0.49668 0.291715 2.58889 + N0 0.189037 0.189037 0.963603 N1 0.231413 0.134219 0.963552 N2 0.144879 0.0840299 0.985875 + txt003 +STRI + V0 0.49668 0.291715 2.58889 V1 0.407593 0.407593 2.58889 V2 0.249157 0.249157 2.63611 + N0 0.144879 0.0840299 0.985875 N1 0.118345 0.118345 0.985895 N2 0.189037 0.189037 0.963603 + txt003 +STRI + V0 0.303616 0.178322 2.63611 V1 0.338579 0.0942301 2.63611 V2 0.553875 0.15415 2.58889 + N0 0.231413 0.134219 0.963552 N1 0.258756 0.0697517 0.963421 N2 0.162011 0.0436726 0.985822 + txt003 +STRI + V0 0.553875 0.15415 2.58889 V1 0.49668 0.291715 2.58889 V2 0.303616 0.178322 2.63611 + N0 0.162011 0.0436726 0.985822 N1 0.144879 0.0840299 0.985875 N2 0.231413 0.134219 0.963552 + txt003 +STRI + V0 0.338579 0.0942301 2.63611 V1 0.350926 5.55112e-17 2.63611 V2 0.574074 2.22045e-16 2.58889 + N0 0.258756 0.0697517 0.963421 N1 0.268354 0 0.96332 N2 0.168031 -1.93429e-17 0.985782 + txt003 +STRI + V0 0.574074 2.22045e-16 2.58889 V1 0.553875 0.15415 2.58889 V2 0.338579 0.0942301 2.63611 + N0 0.168031 -1.93429e-17 0.985782 N1 0.162011 0.0436726 0.985822 N2 0.258756 0.0697517 0.963421 + txt003 +STRI + V0 0 0.574074 2.58889 V1 0.15415 0.553875 2.58889 V2 0.221528 0.795972 2.55 + N0 -0 0.168031 0.985782 N1 0.0436726 0.162011 0.985822 N2 0.0385545 0.143025 0.988968 + txt003 +STRI + V0 0.221528 0.795972 2.55 V1 0 0.825 2.55 V2 0 0.574074 2.58889 + N0 0.0385545 0.143025 0.988968 N1 -0 0.14834 0.988936 N2 -0 0.168031 0.985782 + txt003 +STRI + V0 0.15415 0.553875 2.58889 V1 0.291715 0.49668 2.58889 V2 0.419222 0.713778 2.55 + N0 0.0436726 0.162011 0.985822 N1 0.0840299 0.144879 0.985875 N2 0.0741814 0.127899 0.989009 + txt003 +STRI + V0 0.419222 0.713778 2.55 V1 0.221528 0.795972 2.55 V2 0.15415 0.553875 2.58889 + N0 0.0741814 0.127899 0.989009 N1 0.0385545 0.143025 0.988968 N2 0.0436726 0.162011 0.985822 + txt003 +STRI + V0 0.291715 0.49668 2.58889 V1 0.407593 0.407593 2.58889 V2 0.58575 0.58575 2.55 + N0 0.0840299 0.144879 0.985875 N1 0.118345 0.118345 0.985895 N2 0.104474 0.104474 0.989025 + txt003 +STRI + V0 0.58575 0.58575 2.55 V1 0.419222 0.713778 2.55 V2 0.291715 0.49668 2.58889 + N0 0.104474 0.104474 0.989025 N1 0.0741814 0.127899 0.989009 N2 0.0840299 0.144879 0.985875 + txt003 +STRI + V0 0.407593 0.407593 2.58889 V1 0.49668 0.291715 2.58889 V2 0.713778 0.419222 2.55 + N0 0.118345 0.118345 0.985895 N1 0.144879 0.0840299 0.985875 N2 0.127899 0.0741814 0.989009 + txt003 +STRI + V0 0.713778 0.419222 2.55 V1 0.58575 0.58575 2.55 V2 0.407593 0.407593 2.58889 + N0 0.127899 0.0741814 0.989009 N1 0.104474 0.104474 0.989025 N2 0.118345 0.118345 0.985895 + txt003 +STRI + V0 0.49668 0.291715 2.58889 V1 0.553875 0.15415 2.58889 V2 0.795972 0.221528 2.55 + N0 0.144879 0.0840299 0.985875 N1 0.162011 0.0436726 0.985822 N2 0.143025 0.0385545 0.988968 + txt003 +STRI + V0 0.795972 0.221528 2.55 V1 0.713778 0.419222 2.55 V2 0.49668 0.291715 2.58889 + N0 0.143025 0.0385545 0.988968 N1 0.127899 0.0741814 0.989009 N2 0.144879 0.0840299 0.985875 + txt003 +STRI + V0 0.553875 0.15415 2.58889 V1 0.574074 2.22045e-16 2.58889 V2 0.825 1.11022e-16 2.55 + N0 0.162011 0.0436726 0.985822 N1 0.168031 -1.93429e-17 0.985782 N2 0.14834 -2.37649e-17 0.988936 + txt003 +STRI + V0 0.825 1.11022e-16 2.55 V1 0.795972 0.221528 2.55 V2 0.553875 0.15415 2.58889 + N0 0.14834 -2.37649e-17 0.988936 N1 0.143025 0.0385545 0.988968 N2 0.162011 0.0436726 0.985822 + txt003 +STRI + V0 0 0.825 2.55 V1 0.221528 0.795972 2.55 V2 0.284431 1.02199 2.51111 + N0 -0 0.14834 0.988936 N1 0.0385545 0.143025 0.988968 N2 0.0503275 0.186699 0.981127 + txt003 +STRI + V0 0.284431 1.02199 2.51111 V1 0 1.05926 2.51111 V2 0 0.825 2.55 + N0 0.0503275 0.186699 0.981127 N1 -0 0.193633 0.981074 N2 -0 0.14834 0.988936 + txt003 +STRI + V0 0.221528 0.795972 2.55 V1 0.419222 0.713778 2.55 V2 0.538261 0.916455 2.51111 + N0 0.0385545 0.143025 0.988968 N1 0.0741814 0.127899 0.989009 N2 0.0968361 0.166959 0.981197 + txt003 +STRI + V0 0.538261 0.916455 2.51111 V1 0.284431 1.02199 2.51111 V2 0.221528 0.795972 2.55 + N0 0.0968361 0.166959 0.981197 N1 0.0503275 0.186699 0.981127 N2 0.0385545 0.143025 0.988968 + txt003 +STRI + V0 0.419222 0.713778 2.55 V1 0.58575 0.58575 2.55 V2 0.752074 0.752074 2.51111 + N0 0.0741814 0.127899 0.989009 N1 0.104474 0.104474 0.989025 N2 0.136382 0.136382 0.981224 + txt003 +STRI + V0 0.752074 0.752074 2.51111 V1 0.538261 0.916455 2.51111 V2 0.419222 0.713778 2.55 + N0 0.136382 0.136382 0.981224 N1 0.0968361 0.166959 0.981197 N2 0.0741814 0.127899 0.989009 + txt003 +STRI + V0 0.58575 0.58575 2.55 V1 0.713778 0.419222 2.55 V2 0.916455 0.538261 2.51111 + N0 0.104474 0.104474 0.989025 N1 0.127899 0.0741814 0.989009 N2 0.166959 0.0968361 0.981197 + txt003 +STRI + V0 0.916455 0.538261 2.51111 V1 0.752074 0.752074 2.51111 V2 0.58575 0.58575 2.55 + N0 0.166959 0.0968361 0.981197 N1 0.136382 0.136382 0.981224 N2 0.104474 0.104474 0.989025 + txt003 +STRI + V0 0.713778 0.419222 2.55 V1 0.795972 0.221528 2.55 V2 1.02199 0.284431 2.51111 + N0 0.127899 0.0741814 0.989009 N1 0.143025 0.0385545 0.988968 N2 0.186699 0.0503275 0.981127 + txt003 +STRI + V0 1.02199 0.284431 2.51111 V1 0.916455 0.538261 2.51111 V2 0.713778 0.419222 2.55 + N0 0.186699 0.0503275 0.981127 N1 0.166959 0.0968361 0.981197 N2 0.127899 0.0741814 0.989009 + txt003 +STRI + V0 0.795972 0.221528 2.55 V1 0.825 1.11022e-16 2.55 V2 1.05926 4.44089e-16 2.51111 + N0 0.143025 0.0385545 0.988968 N1 0.14834 -2.37649e-17 0.988936 N2 0.193633 -7.24819e-17 0.981074 + txt003 +STRI + V0 1.05926 4.44089e-16 2.51111 V1 1.02199 0.284431 2.51111 V2 0.795972 0.221528 2.55 + N0 0.193633 -7.24819e-17 0.981074 N1 0.186699 0.0503275 0.981127 N2 0.143025 0.0385545 0.988968 + txt003 +STRI + V0 0 1.05926 2.51111 V1 0.284431 1.02199 2.51111 V2 0.330924 1.18904 2.46389 + N0 -0 0.193633 0.981074 N1 0.0503275 0.186699 0.981127 N2 0.101459 0.376378 0.920894 + txt003 +STRI + V0 0.330924 1.18904 2.46389 V1 0 1.23241 2.46389 V2 0 1.05926 2.51111 + N0 0.101459 0.376378 0.920894 N1 -0 0.390293 0.920691 N2 -0 0.193633 0.981074 + txt003 +STRI + V0 0.284431 1.02199 2.51111 V1 0.538261 0.916455 2.51111 V2 0.626246 1.06626 2.46389 + N0 0.0503275 0.186699 0.981127 N1 0.0968361 0.166959 0.981197 N2 0.195261 0.336657 0.92116 + txt003 +STRI + V0 0.626246 1.06626 2.46389 V1 0.330924 1.18904 2.46389 V2 0.284431 1.02199 2.51111 + N0 0.195261 0.336657 0.92116 N1 0.101459 0.376378 0.920894 N2 0.0503275 0.186699 0.981127 + txt003 +STRI + V0 0.538261 0.916455 2.51111 V1 0.752074 0.752074 2.51111 V2 0.875009 0.875009 2.46389 + N0 0.0968361 0.166959 0.981197 N1 0.136382 0.136382 0.981224 N2 0.275025 0.275025 0.921262 + txt003 +STRI + V0 0.875009 0.875009 2.46389 V1 0.626246 1.06626 2.46389 V2 0.538261 0.916455 2.51111 + N0 0.275025 0.275025 0.921262 N1 0.195261 0.336657 0.92116 N2 0.0968361 0.166959 0.981197 + txt003 +STRI + V0 0.752074 0.752074 2.51111 V1 0.916455 0.538261 2.51111 V2 1.06626 0.626246 2.46389 + N0 0.136382 0.136382 0.981224 N1 0.166959 0.0968361 0.981197 N2 0.336657 0.195261 0.92116 + txt003 +STRI + V0 1.06626 0.626246 2.46389 V1 0.875009 0.875009 2.46389 V2 0.752074 0.752074 2.51111 + N0 0.336657 0.195261 0.92116 N1 0.275025 0.275025 0.921262 N2 0.136382 0.136382 0.981224 + txt003 +STRI + V0 0.916455 0.538261 2.51111 V1 1.02199 0.284431 2.51111 V2 1.18904 0.330924 2.46389 + N0 0.166959 0.0968361 0.981197 N1 0.186699 0.0503275 0.981127 N2 0.376378 0.101459 0.920894 + txt003 +STRI + V0 1.18904 0.330924 2.46389 V1 1.06626 0.626246 2.46389 V2 0.916455 0.538261 2.51111 + N0 0.376378 0.101459 0.920894 N1 0.336657 0.195261 0.92116 N2 0.166959 0.0968361 0.981197 + txt003 +STRI + V0 1.02199 0.284431 2.51111 V1 1.05926 4.44089e-16 2.51111 V2 1.23241 4.44089e-16 2.46389 + N0 0.186699 0.0503275 0.981127 N1 0.193633 -7.24819e-17 0.981074 N2 0.390293 -8.37138e-17 0.920691 + txt003 +STRI + V0 1.23241 4.44089e-16 2.46389 V1 1.18904 0.330924 2.46389 V2 1.02199 0.284431 2.51111 + N0 0.390293 -8.37138e-17 0.920691 N1 0.376378 0.101459 0.920894 N2 0.186699 0.0503275 0.981127 + txt003 +STRI + V0 0 1.23241 2.46389 V1 0.330924 1.18904 2.46389 V2 0.349074 1.25426 2.4 + N0 -0 0.390293 0.920691 N1 0.101459 0.376378 0.920894 N2 0.260275 0.965535 -1.02004e-15 + txt003 +STRI + V0 0.349074 1.25426 2.4 V1 0 1.3 2.4 V2 0 1.23241 2.46389 + N0 0.260275 0.965535 -1.02004e-15 N1 0 1 -9.86865e-16 N2 -0 0.390293 0.920691 + txt003 +STRI + V0 0.330924 1.18904 2.46389 V1 0.626246 1.06626 2.46389 V2 0.660593 1.12474 2.4 + N0 0.101459 0.376378 0.920894 N1 0.195261 0.336657 0.92116 N2 0.501718 0.865031 -9.69705e-16 + txt003 +STRI + V0 0.660593 1.12474 2.4 V1 0.349074 1.25426 2.4 V2 0.330924 1.18904 2.46389 + N0 0.501718 0.865031 -9.69705e-16 N1 0.260275 0.965535 -1.02004e-15 N2 0.101459 0.376378 0.920894 + txt003 +STRI + V0 0.626246 1.06626 2.46389 V1 0.875009 0.875009 2.46389 V2 0.923 0.923 2.4 + N0 0.195261 0.336657 0.92116 N1 0.275025 0.275025 0.921262 N2 0.707107 0.707107 -7.41433e-16 + txt003 +STRI + V0 0.923 0.923 2.4 V1 0.660593 1.12474 2.4 V2 0.626246 1.06626 2.46389 + N0 0.707107 0.707107 -7.41433e-16 N1 0.501718 0.865031 -9.69705e-16 N2 0.195261 0.336657 0.92116 + txt003 +STRI + V0 0.875009 0.875009 2.46389 V1 1.06626 0.626246 2.46389 V2 1.12474 0.660593 2.4 + N0 0.275025 0.275025 0.921262 N1 0.336657 0.195261 0.92116 N2 0.865031 0.501718 -4.67305e-16 + txt003 +STRI + V0 1.12474 0.660593 2.4 V1 0.923 0.923 2.4 V2 0.875009 0.875009 2.46389 + N0 0.865031 0.501718 -4.67305e-16 N1 0.707107 0.707107 -7.41433e-16 N2 0.275025 0.275025 0.921262 + txt003 +STRI + V0 1.06626 0.626246 2.46389 V1 1.18904 0.330924 2.46389 V2 1.25426 0.349074 2.4 + N0 0.336657 0.195261 0.92116 N1 0.376378 0.101459 0.920894 N2 0.965535 0.260275 -5.24893e-16 + txt003 +STRI + V0 1.25426 0.349074 2.4 V1 1.12474 0.660593 2.4 V2 1.06626 0.626246 2.46389 + N0 0.965535 0.260275 -5.24893e-16 N1 0.865031 0.501718 -4.67305e-16 N2 0.336657 0.195261 0.92116 + txt003 +STRI + V0 1.18904 0.330924 2.46389 V1 1.23241 4.44089e-16 2.46389 V2 1.3 6.66134e-16 2.4 + N0 0.376378 0.101459 0.920894 N1 0.390293 -8.37138e-17 0.920691 N2 1 -4.06675e-16 -1.4803e-15 + txt003 +STRI + V0 1.3 6.66134e-16 2.4 V1 1.25426 0.349074 2.4 V2 1.18904 0.330924 2.46389 + N0 1 -4.06675e-16 -1.4803e-15 N1 0.965535 0.260275 -5.24893e-16 N2 0.376378 0.101459 0.920894 + txt003 +STRI + V0 0.584584 0.162696 0.00590278 V1 0.605903 0 0.00590278 V2 0 0 0 + N0 0.0218614 0.00589307 -0.999744 N1 0.0226746 0 -0.999743 N2 0 0 -1 + txt003 +STRI + V0 0.524218 0.307888 0.00590278 V1 0.584584 0.162696 0.00590278 V2 0 0 0 + N0 0.0195486 0.0113382 -0.999745 N1 0.0218614 0.00589307 -0.999744 N2 0 0 -1 + txt003 +STRI + V0 0.430191 0.430191 0.00590278 V1 0.524218 0.307888 0.00590278 V2 0 0 0 + N0 0.015968 0.015968 -0.999745 N1 0.0195486 0.0113382 -0.999745 N2 0 0 -1 + txt003 +STRI + V0 0.307888 0.524218 0.00590278 V1 0.430191 0.430191 0.00590278 V2 0 0 0 + N0 0.0113382 0.0195486 -0.999745 N1 0.015968 0.015968 -0.999745 N2 0 0 -1 + txt003 +STRI + V0 0.162696 0.584584 0.00590278 V1 0.307888 0.524218 0.00590278 V2 0 0 0 + N0 0.00589307 0.0218614 -0.999744 N1 0.0113382 0.0195486 -0.999745 N2 0 0 -1 + txt003 +STRI + V0 0 0.605903 0.00590278 V1 0.162696 0.584584 0.00590278 V2 0 0 0 + N0 4.94615e-18 0.0226746 -0.999743 N1 0.00589307 0.0218614 -0.999744 N2 0 0 -1 + txt003 +STRI + V0 0.605903 0 0.00590278 V1 0.584584 0.162696 0.00590278 V2 0.986255 0.274486 0.0222222 + N0 0.0226746 0 -0.999743 N1 0.0218614 0.00589307 -0.999744 N2 0.0601415 0.0162121 -0.998058 + txt003 +STRI + V0 0.986255 0.274486 0.0222222 V1 1.02222 0 0.0222222 V2 0.605903 0 0.00590278 + N0 0.0601415 0.0162121 -0.998058 N1 0.0623783 0 -0.998053 N2 0.0226746 0 -0.999743 + txt003 +STRI + V0 0.584584 0.162696 0.00590278 V1 0.524218 0.307888 0.00590278 V2 0.884412 0.51944 0.0222222 + N0 0.0218614 0.00589307 -0.999744 N1 0.0195486 0.0113382 -0.999745 N2 0.0537792 0.0311919 -0.998066 + txt003 +STRI + V0 0.884412 0.51944 0.0222222 V1 0.986255 0.274486 0.0222222 V2 0.584584 0.162696 0.00590278 + N0 0.0537792 0.0311919 -0.998066 N1 0.0601415 0.0162121 -0.998058 N2 0.0218614 0.00589307 -0.999744 + txt003 +STRI + V0 0.524218 0.307888 0.00590278 V1 0.430191 0.430191 0.00590278 V2 0.725778 0.725778 0.0222222 + N0 0.0195486 0.0113382 -0.999745 N1 0.015968 0.015968 -0.999745 N2 0.0439291 0.0439291 -0.998068 + txt003 +STRI + V0 0.725778 0.725778 0.0222222 V1 0.884412 0.51944 0.0222222 V2 0.524218 0.307888 0.00590278 + N0 0.0439291 0.0439291 -0.998068 N1 0.0537792 0.0311919 -0.998066 N2 0.0195486 0.0113382 -0.999745 + txt003 +STRI + V0 0.430191 0.430191 0.00590278 V1 0.307888 0.524218 0.00590278 V2 0.51944 0.884412 0.0222222 + N0 0.015968 0.015968 -0.999745 N1 0.0113382 0.0195486 -0.999745 N2 0.0311919 0.0537792 -0.998066 + txt003 +STRI + V0 0.51944 0.884412 0.0222222 V1 0.725778 0.725778 0.0222222 V2 0.430191 0.430191 0.00590278 + N0 0.0311919 0.0537792 -0.998066 N1 0.0439291 0.0439291 -0.998068 N2 0.015968 0.015968 -0.999745 + txt003 +STRI + V0 0.307888 0.524218 0.00590278 V1 0.162696 0.584584 0.00590278 V2 0.274486 0.986255 0.0222222 + N0 0.0113382 0.0195486 -0.999745 N1 0.00589307 0.0218614 -0.999744 N2 0.0162121 0.0601415 -0.998058 + txt003 +STRI + V0 0.274486 0.986255 0.0222222 V1 0.51944 0.884412 0.0222222 V2 0.307888 0.524218 0.00590278 + N0 0.0162121 0.0601415 -0.998058 N1 0.0311919 0.0537792 -0.998066 N2 0.0113382 0.0195486 -0.999745 + txt003 +STRI + V0 0.162696 0.584584 0.00590278 V1 0 0.605903 0.00590278 V2 -2.22045e-16 1.02222 0.0222222 + N0 0.00589307 0.0218614 -0.999744 N1 4.94615e-18 0.0226746 -0.999743 N2 0 0.0623783 -0.998053 + txt003 +STRI + V0 -2.22045e-16 1.02222 0.0222222 V1 0.274486 0.986255 0.0222222 V2 0.162696 0.584584 0.00590278 + N0 0 0.0623783 -0.998053 N1 0.0162121 0.0601415 -0.998058 N2 0.00589307 0.0218614 -0.999744 + txt003 +STRI + V0 1.02222 0 0.0222222 V1 0.986255 0.274486 0.0222222 V2 1.23918 0.344878 0.046875 + N0 0.0623783 0 -0.998053 N1 0.0601415 0.0162121 -0.998058 N2 0.136353 0.0367561 -0.989978 + txt003 +STRI + V0 1.23918 0.344878 0.046875 V1 1.28438 0 0.046875 V2 1.02222 0 0.0222222 + N0 0.136353 0.0367561 -0.989978 N1 0.141421 0 -0.989949 N2 0.0623783 0 -0.998053 + txt003 +STRI + V0 0.986255 0.274486 0.0222222 V1 0.884412 0.51944 0.0222222 V2 1.11122 0.652653 0.046875 + N0 0.0601415 0.0162121 -0.998058 N1 0.0537792 0.0311919 -0.998066 N2 0.121932 0.0707208 -0.990016 + txt003 +STRI + V0 1.11122 0.652653 0.046875 V1 1.23918 0.344878 0.046875 V2 0.986255 0.274486 0.0222222 + N0 0.121932 0.0707208 -0.990016 N1 0.136353 0.0367561 -0.989978 N2 0.0601415 0.0162121 -0.998058 + txt003 +STRI + V0 0.884412 0.51944 0.0222222 V1 0.725778 0.725778 0.0222222 V2 0.911906 0.911906 0.046875 + N0 0.0537792 0.0311919 -0.998066 N1 0.0439291 0.0439291 -0.998068 N2 0.0996006 0.0996006 -0.99003 + txt003 +STRI + V0 0.911906 0.911906 0.046875 V1 1.11122 0.652653 0.046875 V2 0.884412 0.51944 0.0222222 + N0 0.0996006 0.0996006 -0.99003 N1 0.121932 0.0707208 -0.990016 N2 0.0537792 0.0311919 -0.998066 + txt003 +STRI + V0 0.725778 0.725778 0.0222222 V1 0.51944 0.884412 0.0222222 V2 0.652653 1.11122 0.046875 + N0 0.0439291 0.0439291 -0.998068 N1 0.0311919 0.0537792 -0.998066 N2 0.0707208 0.121932 -0.990016 + txt003 +STRI + V0 0.652653 1.11122 0.046875 V1 0.911906 0.911906 0.046875 V2 0.725778 0.725778 0.0222222 + N0 0.0707208 0.121932 -0.990016 N1 0.0996006 0.0996006 -0.99003 N2 0.0439291 0.0439291 -0.998068 + txt003 +STRI + V0 0.51944 0.884412 0.0222222 V1 0.274486 0.986255 0.0222222 V2 0.344878 1.23918 0.046875 + N0 0.0311919 0.0537792 -0.998066 N1 0.0162121 0.0601415 -0.998058 N2 0.0367561 0.136353 -0.989978 + txt003 +STRI + V0 0.344878 1.23918 0.046875 V1 0.652653 1.11122 0.046875 V2 0.51944 0.884412 0.0222222 + N0 0.0367561 0.136353 -0.989978 N1 0.0707208 0.121932 -0.990016 N2 0.0311919 0.0537792 -0.998066 + txt003 +STRI + V0 0.274486 0.986255 0.0222222 V1 -2.22045e-16 1.02222 0.0222222 V2 2.22045e-16 1.28437 0.046875 + N0 0.0162121 0.0601415 -0.998058 N1 0 0.0623783 -0.998053 N2 0 0.141421 -0.989949 + txt003 +STRI + V0 2.22045e-16 1.28437 0.046875 V1 0.344878 1.23918 0.046875 V2 0.274486 0.986255 0.0222222 + N0 0 0.141421 -0.989949 N1 0.0367561 0.136353 -0.989978 N2 0.0162121 0.0601415 -0.998058 + txt003 +STRI + V0 1.28438 0 0.046875 V1 1.23918 0.344878 0.046875 V2 1.37754 0.383385 0.0777778 + N0 0.141421 0 -0.989949 N1 0.136353 0.0367561 -0.989978 N2 0.316788 0.085395 -0.944644 + txt003 +STRI + V0 1.37754 0.383385 0.0777778 V1 1.42778 0 0.0777778 V2 1.28438 0 0.046875 + N0 0.316788 0.085395 -0.944644 N1 0.328521 0 -0.944497 N2 0.141421 0 -0.989949 + txt003 +STRI + V0 1.23918 0.344878 0.046875 V1 1.11122 0.652653 0.046875 V2 1.23529 0.725523 0.0777778 + N0 0.136353 0.0367561 -0.989978 N1 0.121932 0.0707208 -0.990016 N2 0.283331 0.164332 -0.944838 + txt003 +STRI + V0 1.23529 0.725523 0.0777778 V1 1.37754 0.383385 0.0777778 V2 1.23918 0.344878 0.046875 + N0 0.283331 0.164332 -0.944838 N1 0.316788 0.085395 -0.944644 N2 0.136353 0.0367561 -0.989978 + txt003 +STRI + V0 1.11122 0.652653 0.046875 V1 0.911906 0.911906 0.046875 V2 1.01372 1.01372 0.0777778 + N0 0.121932 0.0707208 -0.990016 N1 0.0996006 0.0996006 -0.99003 N2 0.231454 0.231454 -0.944912 + txt003 +STRI + V0 1.01372 1.01372 0.0777778 V1 1.23529 0.725523 0.0777778 V2 1.11122 0.652653 0.046875 + N0 0.231454 0.231454 -0.944912 N1 0.283331 0.164332 -0.944838 N2 0.121932 0.0707208 -0.990016 + txt003 +STRI + V0 0.911906 0.911906 0.046875 V1 0.652653 1.11122 0.046875 V2 0.725523 1.23529 0.0777778 + N0 0.0996006 0.0996006 -0.99003 N1 0.0707208 0.121932 -0.990016 N2 0.164332 0.283331 -0.944838 + txt003 +STRI + V0 0.725523 1.23529 0.0777778 V1 1.01372 1.01372 0.0777778 V2 0.911906 0.911906 0.046875 + N0 0.164332 0.283331 -0.944838 N1 0.231454 0.231454 -0.944912 N2 0.0996006 0.0996006 -0.99003 + txt003 +STRI + V0 0.652653 1.11122 0.046875 V1 0.344878 1.23918 0.046875 V2 0.383385 1.37754 0.0777778 + N0 0.0707208 0.121932 -0.990016 N1 0.0367561 0.136353 -0.989978 N2 0.085395 0.316788 -0.944644 + txt003 +STRI + V0 0.383385 1.37754 0.0777778 V1 0.725523 1.23529 0.0777778 V2 0.652653 1.11122 0.046875 + N0 0.085395 0.316788 -0.944644 N1 0.164332 0.283331 -0.944838 N2 0.0707208 0.121932 -0.990016 + txt003 +STRI + V0 0.344878 1.23918 0.046875 V1 2.22045e-16 1.28437 0.046875 V2 -2.22045e-16 1.42778 0.0777778 + N0 0.0367561 0.136353 -0.989978 N1 0 0.141421 -0.989949 N2 6.08223e-17 0.328521 -0.944497 + txt003 +STRI + V0 -2.22045e-16 1.42778 0.0777778 V1 0.383385 1.37754 0.0777778 V2 0.344878 1.23918 0.046875 + N0 6.08223e-17 0.328521 -0.944497 N1 0.085395 0.316788 -0.944644 N2 0.0367561 0.136353 -0.989978 + txt003 +STRI + V0 1.42778 0 0.0777778 V1 1.37754 0.383385 0.0777778 V2 1.4355 0.399515 0.112847 + N0 0.328521 0 -0.944497 N1 0.316788 0.085395 -0.944644 N2 0.743044 0.200299 -0.638566 + txt003 +STRI + V0 1.4355 0.399515 0.112847 V1 1.48785 0 0.112847 V2 1.42778 0 0.0777778 + N0 0.743044 0.200299 -0.638566 N1 0.770022 0 -0.638018 N2 0.328521 0 -0.944497 + txt003 +STRI + V0 1.37754 0.383385 0.0777778 V1 1.23529 0.725523 0.0777778 V2 1.28726 0.756047 0.112847 + N0 0.316788 0.085395 -0.944644 N1 0.283331 0.164332 -0.944838 N2 0.665182 0.385806 -0.639286 + txt003 +STRI + V0 1.28726 0.756047 0.112847 V1 1.4355 0.399515 0.112847 V2 1.37754 0.383385 0.0777778 + N0 0.665182 0.385806 -0.639286 N1 0.743044 0.200299 -0.638566 N2 0.316788 0.085395 -0.944644 + txt003 +STRI + V0 1.23529 0.725523 0.0777778 V1 1.01372 1.01372 0.0777778 V2 1.05637 1.05637 0.112847 + N0 0.283331 0.164332 -0.944838 N1 0.231454 0.231454 -0.944912 N2 0.543581 0.543581 -0.639562 + txt003 +STRI + V0 1.05637 1.05637 0.112847 V1 1.28726 0.756047 0.112847 V2 1.23529 0.725523 0.0777778 + N0 0.543581 0.543581 -0.639562 N1 0.665182 0.385806 -0.639286 N2 0.283331 0.164332 -0.944838 + txt003 +STRI + V0 1.01372 1.01372 0.0777778 V1 0.725523 1.23529 0.0777778 V2 0.756047 1.28726 0.112847 + N0 0.231454 0.231454 -0.944912 N1 0.164332 0.283331 -0.944838 N2 0.385806 0.665182 -0.639286 + txt003 +STRI + V0 0.756047 1.28726 0.112847 V1 1.05637 1.05637 0.112847 V2 1.01372 1.01372 0.0777778 + N0 0.385806 0.665182 -0.639286 N1 0.543581 0.543581 -0.639562 N2 0.231454 0.231454 -0.944912 + txt003 +STRI + V0 0.725523 1.23529 0.0777778 V1 0.383385 1.37754 0.0777778 V2 0.399515 1.4355 0.112847 + N0 0.164332 0.283331 -0.944838 N1 0.085395 0.316788 -0.944644 N2 0.200299 0.743044 -0.638566 + txt003 +STRI + V0 0.399515 1.4355 0.112847 V1 0.756047 1.28726 0.112847 V2 0.725523 1.23529 0.0777778 + N0 0.200299 0.743044 -0.638566 N1 0.385806 0.665182 -0.639286 N2 0.164332 0.283331 -0.944838 + txt003 +STRI + V0 0.383385 1.37754 0.0777778 V1 -2.22045e-16 1.42778 0.0777778 V2 0 1.48785 0.112847 + N0 0.085395 0.316788 -0.944644 N1 6.08223e-17 0.328521 -0.944497 N2 1.36806e-16 0.770022 -0.638018 + txt003 +STRI + V0 0 1.48785 0.112847 V1 0.399515 1.4355 0.112847 V2 0.383385 1.37754 0.0777778 + N0 1.36806e-16 0.770022 -0.638018 N1 0.200299 0.743044 -0.638566 N2 0.085395 0.316788 -0.944644 + txt003 +STRI + V0 1.48785 0 0.112847 V1 1.4355 0.399515 0.112847 V2 1.44722 0.402778 0.15 + N0 0.770022 0 -0.638018 N1 0.743044 0.200299 -0.638566 N2 0.965535 0.260275 -2.07142e-16 + txt003 +STRI + V0 1.44722 0.402778 0.15 V1 1.5 0 0.15 V2 1.48785 0 0.112847 + N0 0.965535 0.260275 -2.07142e-16 N1 1 0 0 N2 0.770022 0 -0.638018 + txt003 +STRI + V0 1.4355 0.399515 0.112847 V1 1.28726 0.756047 0.112847 V2 1.29778 0.762222 0.15 + N0 0.743044 0.200299 -0.638566 N1 0.665182 0.385806 -0.639286 N2 0.865031 0.501718 -5.46348e-16 + txt003 +STRI + V0 1.29778 0.762222 0.15 V1 1.44722 0.402778 0.15 V2 1.4355 0.399515 0.112847 + N0 0.865031 0.501718 -5.46348e-16 N1 0.965535 0.260275 -2.07142e-16 N2 0.743044 0.200299 -0.638566 + txt003 +STRI + V0 1.28726 0.756047 0.112847 V1 1.05637 1.05637 0.112847 V2 1.065 1.065 0.15 + N0 0.665182 0.385806 -0.639286 N1 0.543581 0.543581 -0.639562 N2 0.707107 0.707107 -6.97819e-16 + txt003 +STRI + V0 1.065 1.065 0.15 V1 1.29778 0.762222 0.15 V2 1.28726 0.756047 0.112847 + N0 0.707107 0.707107 -6.97819e-16 N1 0.865031 0.501718 -5.46348e-16 N2 0.665182 0.385806 -0.639286 + txt003 +STRI + V0 1.05637 1.05637 0.112847 V1 0.756047 1.28726 0.112847 V2 0.762222 1.29778 0.15 + N0 0.543581 0.543581 -0.639562 N1 0.385806 0.665182 -0.639286 N2 0.501718 0.865031 -5.46348e-16 + txt003 +STRI + V0 0.762222 1.29778 0.15 V1 1.065 1.065 0.15 V2 1.05637 1.05637 0.112847 + N0 0.501718 0.865031 -5.46348e-16 N1 0.707107 0.707107 -6.97819e-16 N2 0.543581 0.543581 -0.639562 + txt003 +STRI + V0 0.756047 1.28726 0.112847 V1 0.399515 1.4355 0.112847 V2 0.402778 1.44722 0.15 + N0 0.385806 0.665182 -0.639286 N1 0.200299 0.743044 -0.638566 N2 0.260275 0.965535 -2.07142e-16 + txt003 +STRI + V0 0.402778 1.44722 0.15 V1 0.762222 1.29778 0.15 V2 0.756047 1.28726 0.112847 + N0 0.260275 0.965535 -2.07142e-16 N1 0.501718 0.865031 -5.46348e-16 N2 0.385806 0.665182 -0.639286 + txt003 +STRI + V0 0.399515 1.4355 0.112847 V1 0 1.48785 0.112847 V2 0 1.5 0.15 + N0 0.200299 0.743044 -0.638566 N1 1.36806e-16 0.770022 -0.638018 N2 0 1 -0 + txt003 +STRI + V0 0 1.5 0.15 V1 0.402778 1.44722 0.15 V2 0.399515 1.4355 0.112847 + N0 0 1 -0 N1 0.260275 0.965535 -2.07142e-16 N2 0.200299 0.743044 -0.638566 + txt003 +STRI + V0 -0.162696 0.584584 0.00590278 V1 0 0.605903 0.00590278 V2 0 0 0 + N0 -0.00589307 0.0218614 -0.999744 N1 0 0.0226746 -0.999743 N2 0 0 -1 + txt003 +STRI + V0 -0.307888 0.524218 0.00590278 V1 -0.162696 0.584584 0.00590278 V2 0 0 0 + N0 -0.0113382 0.0195486 -0.999745 N1 -0.00589307 0.0218614 -0.999744 N2 0 0 -1 + txt003 +STRI + V0 -0.430191 0.430191 0.00590278 V1 -0.307888 0.524218 0.00590278 V2 0 0 0 + N0 -0.015968 0.015968 -0.999745 N1 -0.0113382 0.0195486 -0.999745 N2 0 0 -1 + txt003 +STRI + V0 -0.524218 0.307888 0.00590278 V1 -0.430191 0.430191 0.00590278 V2 0 0 0 + N0 -0.0195486 0.0113382 -0.999745 N1 -0.015968 0.015968 -0.999745 N2 0 0 -1 + txt003 +STRI + V0 -0.584584 0.162696 0.00590278 V1 -0.524218 0.307888 0.00590278 V2 0 0 0 + N0 -0.0218614 0.00589307 -0.999744 N1 -0.0195486 0.0113382 -0.999745 N2 0 0 -1 + txt003 +STRI + V0 -0.605903 0 0.00590278 V1 -0.584584 0.162696 0.00590278 V2 0 0 0 + N0 -0.0226746 4.94615e-18 -0.999743 N1 -0.0218614 0.00589307 -0.999744 N2 0 0 -1 + txt003 +STRI + V0 0 0.605903 0.00590278 V1 -0.162696 0.584584 0.00590278 V2 -0.274486 0.986255 0.0222222 + N0 0 0.0226746 -0.999743 N1 -0.00589307 0.0218614 -0.999744 N2 -0.0162121 0.0601415 -0.998058 + txt003 +STRI + V0 -0.274486 0.986255 0.0222222 V1 0 1.02222 0.0222222 V2 0 0.605903 0.00590278 + N0 -0.0162121 0.0601415 -0.998058 N1 0 0.0623783 -0.998053 N2 0 0.0226746 -0.999743 + txt003 +STRI + V0 -0.162696 0.584584 0.00590278 V1 -0.307888 0.524218 0.00590278 V2 -0.51944 0.884412 0.0222222 + N0 -0.00589307 0.0218614 -0.999744 N1 -0.0113382 0.0195486 -0.999745 N2 -0.0311919 0.0537792 -0.998066 + txt003 +STRI + V0 -0.51944 0.884412 0.0222222 V1 -0.274486 0.986255 0.0222222 V2 -0.162696 0.584584 0.00590278 + N0 -0.0311919 0.0537792 -0.998066 N1 -0.0162121 0.0601415 -0.998058 N2 -0.00589307 0.0218614 -0.999744 + txt003 +STRI + V0 -0.307888 0.524218 0.00590278 V1 -0.430191 0.430191 0.00590278 V2 -0.725778 0.725778 0.0222222 + N0 -0.0113382 0.0195486 -0.999745 N1 -0.015968 0.015968 -0.999745 N2 -0.0439291 0.0439291 -0.998068 + txt003 +STRI + V0 -0.725778 0.725778 0.0222222 V1 -0.51944 0.884412 0.0222222 V2 -0.307888 0.524218 0.00590278 + N0 -0.0439291 0.0439291 -0.998068 N1 -0.0311919 0.0537792 -0.998066 N2 -0.0113382 0.0195486 -0.999745 + txt003 +STRI + V0 -0.430191 0.430191 0.00590278 V1 -0.524218 0.307888 0.00590278 V2 -0.884412 0.51944 0.0222222 + N0 -0.015968 0.015968 -0.999745 N1 -0.0195486 0.0113382 -0.999745 N2 -0.0537792 0.0311919 -0.998066 + txt003 +STRI + V0 -0.884412 0.51944 0.0222222 V1 -0.725778 0.725778 0.0222222 V2 -0.430191 0.430191 0.00590278 + N0 -0.0537792 0.0311919 -0.998066 N1 -0.0439291 0.0439291 -0.998068 N2 -0.015968 0.015968 -0.999745 + txt003 +STRI + V0 -0.524218 0.307888 0.00590278 V1 -0.584584 0.162696 0.00590278 V2 -0.986255 0.274486 0.0222222 + N0 -0.0195486 0.0113382 -0.999745 N1 -0.0218614 0.00589307 -0.999744 N2 -0.0601415 0.0162121 -0.998058 + txt003 +STRI + V0 -0.986255 0.274486 0.0222222 V1 -0.884412 0.51944 0.0222222 V2 -0.524218 0.307888 0.00590278 + N0 -0.0601415 0.0162121 -0.998058 N1 -0.0537792 0.0311919 -0.998066 N2 -0.0195486 0.0113382 -0.999745 + txt003 +STRI + V0 -0.584584 0.162696 0.00590278 V1 -0.605903 0 0.00590278 V2 -1.02222 -2.22045e-16 0.0222222 + N0 -0.0218614 0.00589307 -0.999744 N1 -0.0226746 4.94615e-18 -0.999743 N2 -0.0623783 -0 -0.998053 + txt003 +STRI + V0 -1.02222 -2.22045e-16 0.0222222 V1 -0.986255 0.274486 0.0222222 V2 -0.584584 0.162696 0.00590278 + N0 -0.0623783 -0 -0.998053 N1 -0.0601415 0.0162121 -0.998058 N2 -0.0218614 0.00589307 -0.999744 + txt003 +STRI + V0 0 1.02222 0.0222222 V1 -0.274486 0.986255 0.0222222 V2 -0.344878 1.23918 0.046875 + N0 0 0.0623783 -0.998053 N1 -0.0162121 0.0601415 -0.998058 N2 -0.0367561 0.136353 -0.989978 + txt003 +STRI + V0 -0.344878 1.23918 0.046875 V1 0 1.28438 0.046875 V2 0 1.02222 0.0222222 + N0 -0.0367561 0.136353 -0.989978 N1 0 0.141421 -0.989949 N2 0 0.0623783 -0.998053 + txt003 +STRI + V0 -0.274486 0.986255 0.0222222 V1 -0.51944 0.884412 0.0222222 V2 -0.652653 1.11122 0.046875 + N0 -0.0162121 0.0601415 -0.998058 N1 -0.0311919 0.0537792 -0.998066 N2 -0.0707208 0.121932 -0.990016 + txt003 +STRI + V0 -0.652653 1.11122 0.046875 V1 -0.344878 1.23918 0.046875 V2 -0.274486 0.986255 0.0222222 + N0 -0.0707208 0.121932 -0.990016 N1 -0.0367561 0.136353 -0.989978 N2 -0.0162121 0.0601415 -0.998058 + txt003 +STRI + V0 -0.51944 0.884412 0.0222222 V1 -0.725778 0.725778 0.0222222 V2 -0.911906 0.911906 0.046875 + N0 -0.0311919 0.0537792 -0.998066 N1 -0.0439291 0.0439291 -0.998068 N2 -0.0996006 0.0996006 -0.99003 + txt003 +STRI + V0 -0.911906 0.911906 0.046875 V1 -0.652653 1.11122 0.046875 V2 -0.51944 0.884412 0.0222222 + N0 -0.0996006 0.0996006 -0.99003 N1 -0.0707208 0.121932 -0.990016 N2 -0.0311919 0.0537792 -0.998066 + txt003 +STRI + V0 -0.725778 0.725778 0.0222222 V1 -0.884412 0.51944 0.0222222 V2 -1.11122 0.652653 0.046875 + N0 -0.0439291 0.0439291 -0.998068 N1 -0.0537792 0.0311919 -0.998066 N2 -0.121932 0.0707208 -0.990016 + txt003 +STRI + V0 -1.11122 0.652653 0.046875 V1 -0.911906 0.911906 0.046875 V2 -0.725778 0.725778 0.0222222 + N0 -0.121932 0.0707208 -0.990016 N1 -0.0996006 0.0996006 -0.99003 N2 -0.0439291 0.0439291 -0.998068 + txt003 +STRI + V0 -0.884412 0.51944 0.0222222 V1 -0.986255 0.274486 0.0222222 V2 -1.23918 0.344878 0.046875 + N0 -0.0537792 0.0311919 -0.998066 N1 -0.0601415 0.0162121 -0.998058 N2 -0.136353 0.0367561 -0.989978 + txt003 +STRI + V0 -1.23918 0.344878 0.046875 V1 -1.11122 0.652653 0.046875 V2 -0.884412 0.51944 0.0222222 + N0 -0.136353 0.0367561 -0.989978 N1 -0.121932 0.0707208 -0.990016 N2 -0.0537792 0.0311919 -0.998066 + txt003 +STRI + V0 -0.986255 0.274486 0.0222222 V1 -1.02222 -2.22045e-16 0.0222222 V2 -1.28437 2.22045e-16 0.046875 + N0 -0.0601415 0.0162121 -0.998058 N1 -0.0623783 -0 -0.998053 N2 -0.141421 -0 -0.989949 + txt003 +STRI + V0 -1.28437 2.22045e-16 0.046875 V1 -1.23918 0.344878 0.046875 V2 -0.986255 0.274486 0.0222222 + N0 -0.141421 -0 -0.989949 N1 -0.136353 0.0367561 -0.989978 N2 -0.0601415 0.0162121 -0.998058 + txt003 +STRI + V0 0 1.28438 0.046875 V1 -0.344878 1.23918 0.046875 V2 -0.383385 1.37754 0.0777778 + N0 0 0.141421 -0.989949 N1 -0.0367561 0.136353 -0.989978 N2 -0.085395 0.316788 -0.944644 + txt003 +STRI + V0 -0.383385 1.37754 0.0777778 V1 0 1.42778 0.0777778 V2 0 1.28438 0.046875 + N0 -0.085395 0.316788 -0.944644 N1 0 0.328521 -0.944497 N2 0 0.141421 -0.989949 + txt003 +STRI + V0 -0.344878 1.23918 0.046875 V1 -0.652653 1.11122 0.046875 V2 -0.725523 1.23529 0.0777778 + N0 -0.0367561 0.136353 -0.989978 N1 -0.0707208 0.121932 -0.990016 N2 -0.164332 0.283331 -0.944838 + txt003 +STRI + V0 -0.725523 1.23529 0.0777778 V1 -0.383385 1.37754 0.0777778 V2 -0.344878 1.23918 0.046875 + N0 -0.164332 0.283331 -0.944838 N1 -0.085395 0.316788 -0.944644 N2 -0.0367561 0.136353 -0.989978 + txt003 +STRI + V0 -0.652653 1.11122 0.046875 V1 -0.911906 0.911906 0.046875 V2 -1.01372 1.01372 0.0777778 + N0 -0.0707208 0.121932 -0.990016 N1 -0.0996006 0.0996006 -0.99003 N2 -0.231454 0.231454 -0.944912 + txt003 +STRI + V0 -1.01372 1.01372 0.0777778 V1 -0.725523 1.23529 0.0777778 V2 -0.652653 1.11122 0.046875 + N0 -0.231454 0.231454 -0.944912 N1 -0.164332 0.283331 -0.944838 N2 -0.0707208 0.121932 -0.990016 + txt003 +STRI + V0 -0.911906 0.911906 0.046875 V1 -1.11122 0.652653 0.046875 V2 -1.23529 0.725523 0.0777778 + N0 -0.0996006 0.0996006 -0.99003 N1 -0.121932 0.0707208 -0.990016 N2 -0.283331 0.164332 -0.944838 + txt003 +STRI + V0 -1.23529 0.725523 0.0777778 V1 -1.01372 1.01372 0.0777778 V2 -0.911906 0.911906 0.046875 + N0 -0.283331 0.164332 -0.944838 N1 -0.231454 0.231454 -0.944912 N2 -0.0996006 0.0996006 -0.99003 + txt003 +STRI + V0 -1.11122 0.652653 0.046875 V1 -1.23918 0.344878 0.046875 V2 -1.37754 0.383385 0.0777778 + N0 -0.121932 0.0707208 -0.990016 N1 -0.136353 0.0367561 -0.989978 N2 -0.316788 0.085395 -0.944644 + txt003 +STRI + V0 -1.37754 0.383385 0.0777778 V1 -1.23529 0.725523 0.0777778 V2 -1.11122 0.652653 0.046875 + N0 -0.316788 0.085395 -0.944644 N1 -0.283331 0.164332 -0.944838 N2 -0.121932 0.0707208 -0.990016 + txt003 +STRI + V0 -1.23918 0.344878 0.046875 V1 -1.28437 2.22045e-16 0.046875 V2 -1.42778 -2.22045e-16 0.0777778 + N0 -0.136353 0.0367561 -0.989978 N1 -0.141421 -0 -0.989949 N2 -0.328521 6.08223e-17 -0.944497 + txt003 +STRI + V0 -1.42778 -2.22045e-16 0.0777778 V1 -1.37754 0.383385 0.0777778 V2 -1.23918 0.344878 0.046875 + N0 -0.328521 6.08223e-17 -0.944497 N1 -0.316788 0.085395 -0.944644 N2 -0.136353 0.0367561 -0.989978 + txt003 +STRI + V0 0 1.42778 0.0777778 V1 -0.383385 1.37754 0.0777778 V2 -0.399515 1.4355 0.112847 + N0 0 0.328521 -0.944497 N1 -0.085395 0.316788 -0.944644 N2 -0.200299 0.743044 -0.638566 + txt003 +STRI + V0 -0.399515 1.4355 0.112847 V1 0 1.48785 0.112847 V2 0 1.42778 0.0777778 + N0 -0.200299 0.743044 -0.638566 N1 0 0.770022 -0.638018 N2 0 0.328521 -0.944497 + txt003 +STRI + V0 -0.383385 1.37754 0.0777778 V1 -0.725523 1.23529 0.0777778 V2 -0.756047 1.28726 0.112847 + N0 -0.085395 0.316788 -0.944644 N1 -0.164332 0.283331 -0.944838 N2 -0.385806 0.665182 -0.639286 + txt003 +STRI + V0 -0.756047 1.28726 0.112847 V1 -0.399515 1.4355 0.112847 V2 -0.383385 1.37754 0.0777778 + N0 -0.385806 0.665182 -0.639286 N1 -0.200299 0.743044 -0.638566 N2 -0.085395 0.316788 -0.944644 + txt003 +STRI + V0 -0.725523 1.23529 0.0777778 V1 -1.01372 1.01372 0.0777778 V2 -1.05637 1.05637 0.112847 + N0 -0.164332 0.283331 -0.944838 N1 -0.231454 0.231454 -0.944912 N2 -0.543581 0.543581 -0.639562 + txt003 +STRI + V0 -1.05637 1.05637 0.112847 V1 -0.756047 1.28726 0.112847 V2 -0.725523 1.23529 0.0777778 + N0 -0.543581 0.543581 -0.639562 N1 -0.385806 0.665182 -0.639286 N2 -0.164332 0.283331 -0.944838 + txt003 +STRI + V0 -1.01372 1.01372 0.0777778 V1 -1.23529 0.725523 0.0777778 V2 -1.28726 0.756047 0.112847 + N0 -0.231454 0.231454 -0.944912 N1 -0.283331 0.164332 -0.944838 N2 -0.665182 0.385806 -0.639286 + txt003 +STRI + V0 -1.28726 0.756047 0.112847 V1 -1.05637 1.05637 0.112847 V2 -1.01372 1.01372 0.0777778 + N0 -0.665182 0.385806 -0.639286 N1 -0.543581 0.543581 -0.639562 N2 -0.231454 0.231454 -0.944912 + txt003 +STRI + V0 -1.23529 0.725523 0.0777778 V1 -1.37754 0.383385 0.0777778 V2 -1.4355 0.399515 0.112847 + N0 -0.283331 0.164332 -0.944838 N1 -0.316788 0.085395 -0.944644 N2 -0.743044 0.200299 -0.638566 + txt003 +STRI + V0 -1.4355 0.399515 0.112847 V1 -1.28726 0.756047 0.112847 V2 -1.23529 0.725523 0.0777778 + N0 -0.743044 0.200299 -0.638566 N1 -0.665182 0.385806 -0.639286 N2 -0.283331 0.164332 -0.944838 + txt003 +STRI + V0 -1.37754 0.383385 0.0777778 V1 -1.42778 -2.22045e-16 0.0777778 V2 -1.48785 0 0.112847 + N0 -0.316788 0.085395 -0.944644 N1 -0.328521 6.08223e-17 -0.944497 N2 -0.770022 1.36806e-16 -0.638018 + txt003 +STRI + V0 -1.48785 0 0.112847 V1 -1.4355 0.399515 0.112847 V2 -1.37754 0.383385 0.0777778 + N0 -0.770022 1.36806e-16 -0.638018 N1 -0.743044 0.200299 -0.638566 N2 -0.316788 0.085395 -0.944644 + txt003 +STRI + V0 0 1.48785 0.112847 V1 -0.399515 1.4355 0.112847 V2 -0.402778 1.44722 0.15 + N0 0 0.770022 -0.638018 N1 -0.200299 0.743044 -0.638566 N2 -0.260275 0.965535 -2.07142e-16 + txt003 +STRI + V0 -0.402778 1.44722 0.15 V1 0 1.5 0.15 V2 0 1.48785 0.112847 + N0 -0.260275 0.965535 -2.07142e-16 N1 0 1 -0 N2 0 0.770022 -0.638018 + txt003 +STRI + V0 -0.399515 1.4355 0.112847 V1 -0.756047 1.28726 0.112847 V2 -0.762222 1.29778 0.15 + N0 -0.200299 0.743044 -0.638566 N1 -0.385806 0.665182 -0.639286 N2 -0.501718 0.865031 -5.46348e-16 + txt003 +STRI + V0 -0.762222 1.29778 0.15 V1 -0.402778 1.44722 0.15 V2 -0.399515 1.4355 0.112847 + N0 -0.501718 0.865031 -5.46348e-16 N1 -0.260275 0.965535 -2.07142e-16 N2 -0.200299 0.743044 -0.638566 + txt003 +STRI + V0 -0.756047 1.28726 0.112847 V1 -1.05637 1.05637 0.112847 V2 -1.065 1.065 0.15 + N0 -0.385806 0.665182 -0.639286 N1 -0.543581 0.543581 -0.639562 N2 -0.707107 0.707107 -6.97819e-16 + txt003 +STRI + V0 -1.065 1.065 0.15 V1 -0.762222 1.29778 0.15 V2 -0.756047 1.28726 0.112847 + N0 -0.707107 0.707107 -6.97819e-16 N1 -0.501718 0.865031 -5.46348e-16 N2 -0.385806 0.665182 -0.639286 + txt003 +STRI + V0 -1.05637 1.05637 0.112847 V1 -1.28726 0.756047 0.112847 V2 -1.29778 0.762222 0.15 + N0 -0.543581 0.543581 -0.639562 N1 -0.665182 0.385806 -0.639286 N2 -0.865031 0.501718 -5.46348e-16 + txt003 +STRI + V0 -1.29778 0.762222 0.15 V1 -1.065 1.065 0.15 V2 -1.05637 1.05637 0.112847 + N0 -0.865031 0.501718 -5.46348e-16 N1 -0.707107 0.707107 -6.97819e-16 N2 -0.543581 0.543581 -0.639562 + txt003 +STRI + V0 -1.28726 0.756047 0.112847 V1 -1.4355 0.399515 0.112847 V2 -1.44722 0.402778 0.15 + N0 -0.665182 0.385806 -0.639286 N1 -0.743044 0.200299 -0.638566 N2 -0.965535 0.260275 -2.07142e-16 + txt003 +STRI + V0 -1.44722 0.402778 0.15 V1 -1.29778 0.762222 0.15 V2 -1.28726 0.756047 0.112847 + N0 -0.965535 0.260275 -2.07142e-16 N1 -0.865031 0.501718 -5.46348e-16 N2 -0.665182 0.385806 -0.639286 + txt003 +STRI + V0 -1.4355 0.399515 0.112847 V1 -1.48785 0 0.112847 V2 -1.5 0 0.15 + N0 -0.743044 0.200299 -0.638566 N1 -0.770022 1.36806e-16 -0.638018 N2 -1 0 0 + txt003 +STRI + V0 -1.5 0 0.15 V1 -1.44722 0.402778 0.15 V2 -1.4355 0.399515 0.112847 + N0 -1 0 0 N1 -0.965535 0.260275 -2.07142e-16 N2 -0.743044 0.200299 -0.638566 + txt003 +STRI + V0 -0.584584 -0.162696 0.00590278 V1 -0.605903 0 0.00590278 V2 0 0 0 + N0 -0.0218614 -0.00589307 -0.999744 N1 -0.0226746 -0 -0.999743 N2 0 0 -1 + txt003 +STRI + V0 -0.524218 -0.307888 0.00590278 V1 -0.584584 -0.162696 0.00590278 V2 0 0 0 + N0 -0.0195486 -0.0113382 -0.999745 N1 -0.0218614 -0.00589307 -0.999744 N2 0 0 -1 + txt003 +STRI + V0 -0.430191 -0.430191 0.00590278 V1 -0.524218 -0.307888 0.00590278 V2 0 0 0 + N0 -0.015968 -0.015968 -0.999745 N1 -0.0195486 -0.0113382 -0.999745 N2 0 0 -1 + txt003 +STRI + V0 -0.307888 -0.524218 0.00590278 V1 -0.430191 -0.430191 0.00590278 V2 0 0 0 + N0 -0.0113382 -0.0195486 -0.999745 N1 -0.015968 -0.015968 -0.999745 N2 0 0 -1 + txt003 +STRI + V0 -0.162696 -0.584584 0.00590278 V1 -0.307888 -0.524218 0.00590278 V2 0 0 0 + N0 -0.00589307 -0.0218614 -0.999744 N1 -0.0113382 -0.0195486 -0.999745 N2 0 0 -1 + txt003 +STRI + V0 0 -0.605903 0.00590278 V1 -0.162696 -0.584584 0.00590278 V2 0 0 0 + N0 -4.94615e-18 -0.0226746 -0.999743 N1 -0.00589307 -0.0218614 -0.999744 N2 0 0 -1 + txt003 +STRI + V0 -0.605903 0 0.00590278 V1 -0.584584 -0.162696 0.00590278 V2 -0.986255 -0.274486 0.0222222 + N0 -0.0226746 -0 -0.999743 N1 -0.0218614 -0.00589307 -0.999744 N2 -0.0601415 -0.0162121 -0.998058 + txt003 +STRI + V0 -0.986255 -0.274486 0.0222222 V1 -1.02222 0 0.0222222 V2 -0.605903 0 0.00590278 + N0 -0.0601415 -0.0162121 -0.998058 N1 -0.0623783 -0 -0.998053 N2 -0.0226746 -0 -0.999743 + txt003 +STRI + V0 -0.584584 -0.162696 0.00590278 V1 -0.524218 -0.307888 0.00590278 V2 -0.884412 -0.51944 0.0222222 + N0 -0.0218614 -0.00589307 -0.999744 N1 -0.0195486 -0.0113382 -0.999745 N2 -0.0537792 -0.0311919 -0.998066 + txt003 +STRI + V0 -0.884412 -0.51944 0.0222222 V1 -0.986255 -0.274486 0.0222222 V2 -0.584584 -0.162696 0.00590278 + N0 -0.0537792 -0.0311919 -0.998066 N1 -0.0601415 -0.0162121 -0.998058 N2 -0.0218614 -0.00589307 -0.999744 + txt003 +STRI + V0 -0.524218 -0.307888 0.00590278 V1 -0.430191 -0.430191 0.00590278 V2 -0.725778 -0.725778 0.0222222 + N0 -0.0195486 -0.0113382 -0.999745 N1 -0.015968 -0.015968 -0.999745 N2 -0.0439291 -0.0439291 -0.998068 + txt003 +STRI + V0 -0.725778 -0.725778 0.0222222 V1 -0.884412 -0.51944 0.0222222 V2 -0.524218 -0.307888 0.00590278 + N0 -0.0439291 -0.0439291 -0.998068 N1 -0.0537792 -0.0311919 -0.998066 N2 -0.0195486 -0.0113382 -0.999745 + txt003 +STRI + V0 -0.430191 -0.430191 0.00590278 V1 -0.307888 -0.524218 0.00590278 V2 -0.51944 -0.884412 0.0222222 + N0 -0.015968 -0.015968 -0.999745 N1 -0.0113382 -0.0195486 -0.999745 N2 -0.0311919 -0.0537792 -0.998066 + txt003 +STRI + V0 -0.51944 -0.884412 0.0222222 V1 -0.725778 -0.725778 0.0222222 V2 -0.430191 -0.430191 0.00590278 + N0 -0.0311919 -0.0537792 -0.998066 N1 -0.0439291 -0.0439291 -0.998068 N2 -0.015968 -0.015968 -0.999745 + txt003 +STRI + V0 -0.307888 -0.524218 0.00590278 V1 -0.162696 -0.584584 0.00590278 V2 -0.274486 -0.986255 0.0222222 + N0 -0.0113382 -0.0195486 -0.999745 N1 -0.00589307 -0.0218614 -0.999744 N2 -0.0162121 -0.0601415 -0.998058 + txt003 +STRI + V0 -0.274486 -0.986255 0.0222222 V1 -0.51944 -0.884412 0.0222222 V2 -0.307888 -0.524218 0.00590278 + N0 -0.0162121 -0.0601415 -0.998058 N1 -0.0311919 -0.0537792 -0.998066 N2 -0.0113382 -0.0195486 -0.999745 + txt003 +STRI + V0 -0.162696 -0.584584 0.00590278 V1 0 -0.605903 0.00590278 V2 2.22045e-16 -1.02222 0.0222222 + N0 -0.00589307 -0.0218614 -0.999744 N1 -4.94615e-18 -0.0226746 -0.999743 N2 0 -0.0623783 -0.998053 + txt003 +STRI + V0 2.22045e-16 -1.02222 0.0222222 V1 -0.274486 -0.986255 0.0222222 V2 -0.162696 -0.584584 0.00590278 + N0 0 -0.0623783 -0.998053 N1 -0.0162121 -0.0601415 -0.998058 N2 -0.00589307 -0.0218614 -0.999744 + txt003 +STRI + V0 -1.02222 0 0.0222222 V1 -0.986255 -0.274486 0.0222222 V2 -1.23918 -0.344878 0.046875 + N0 -0.0623783 -0 -0.998053 N1 -0.0601415 -0.0162121 -0.998058 N2 -0.136353 -0.0367561 -0.989978 + txt003 +STRI + V0 -1.23918 -0.344878 0.046875 V1 -1.28438 0 0.046875 V2 -1.02222 0 0.0222222 + N0 -0.136353 -0.0367561 -0.989978 N1 -0.141421 -0 -0.989949 N2 -0.0623783 -0 -0.998053 + txt003 +STRI + V0 -0.986255 -0.274486 0.0222222 V1 -0.884412 -0.51944 0.0222222 V2 -1.11122 -0.652653 0.046875 + N0 -0.0601415 -0.0162121 -0.998058 N1 -0.0537792 -0.0311919 -0.998066 N2 -0.121932 -0.0707208 -0.990016 + txt003 +STRI + V0 -1.11122 -0.652653 0.046875 V1 -1.23918 -0.344878 0.046875 V2 -0.986255 -0.274486 0.0222222 + N0 -0.121932 -0.0707208 -0.990016 N1 -0.136353 -0.0367561 -0.989978 N2 -0.0601415 -0.0162121 -0.998058 + txt003 +STRI + V0 -0.884412 -0.51944 0.0222222 V1 -0.725778 -0.725778 0.0222222 V2 -0.911906 -0.911906 0.046875 + N0 -0.0537792 -0.0311919 -0.998066 N1 -0.0439291 -0.0439291 -0.998068 N2 -0.0996006 -0.0996006 -0.99003 + txt003 +STRI + V0 -0.911906 -0.911906 0.046875 V1 -1.11122 -0.652653 0.046875 V2 -0.884412 -0.51944 0.0222222 + N0 -0.0996006 -0.0996006 -0.99003 N1 -0.121932 -0.0707208 -0.990016 N2 -0.0537792 -0.0311919 -0.998066 + txt003 +STRI + V0 -0.725778 -0.725778 0.0222222 V1 -0.51944 -0.884412 0.0222222 V2 -0.652653 -1.11122 0.046875 + N0 -0.0439291 -0.0439291 -0.998068 N1 -0.0311919 -0.0537792 -0.998066 N2 -0.0707208 -0.121932 -0.990016 + txt003 +STRI + V0 -0.652653 -1.11122 0.046875 V1 -0.911906 -0.911906 0.046875 V2 -0.725778 -0.725778 0.0222222 + N0 -0.0707208 -0.121932 -0.990016 N1 -0.0996006 -0.0996006 -0.99003 N2 -0.0439291 -0.0439291 -0.998068 + txt003 +STRI + V0 -0.51944 -0.884412 0.0222222 V1 -0.274486 -0.986255 0.0222222 V2 -0.344878 -1.23918 0.046875 + N0 -0.0311919 -0.0537792 -0.998066 N1 -0.0162121 -0.0601415 -0.998058 N2 -0.0367561 -0.136353 -0.989978 + txt003 +STRI + V0 -0.344878 -1.23918 0.046875 V1 -0.652653 -1.11122 0.046875 V2 -0.51944 -0.884412 0.0222222 + N0 -0.0367561 -0.136353 -0.989978 N1 -0.0707208 -0.121932 -0.990016 N2 -0.0311919 -0.0537792 -0.998066 + txt003 +STRI + V0 -0.274486 -0.986255 0.0222222 V1 2.22045e-16 -1.02222 0.0222222 V2 -2.22045e-16 -1.28437 0.046875 + N0 -0.0162121 -0.0601415 -0.998058 N1 0 -0.0623783 -0.998053 N2 0 -0.141421 -0.989949 + txt003 +STRI + V0 -2.22045e-16 -1.28437 0.046875 V1 -0.344878 -1.23918 0.046875 V2 -0.274486 -0.986255 0.0222222 + N0 0 -0.141421 -0.989949 N1 -0.0367561 -0.136353 -0.989978 N2 -0.0162121 -0.0601415 -0.998058 + txt003 +STRI + V0 -1.28438 0 0.046875 V1 -1.23918 -0.344878 0.046875 V2 -1.37754 -0.383385 0.0777778 + N0 -0.141421 -0 -0.989949 N1 -0.136353 -0.0367561 -0.989978 N2 -0.316788 -0.085395 -0.944644 + txt003 +STRI + V0 -1.37754 -0.383385 0.0777778 V1 -1.42778 0 0.0777778 V2 -1.28438 0 0.046875 + N0 -0.316788 -0.085395 -0.944644 N1 -0.328521 -0 -0.944497 N2 -0.141421 -0 -0.989949 + txt003 +STRI + V0 -1.23918 -0.344878 0.046875 V1 -1.11122 -0.652653 0.046875 V2 -1.23529 -0.725523 0.0777778 + N0 -0.136353 -0.0367561 -0.989978 N1 -0.121932 -0.0707208 -0.990016 N2 -0.283331 -0.164332 -0.944838 + txt003 +STRI + V0 -1.23529 -0.725523 0.0777778 V1 -1.37754 -0.383385 0.0777778 V2 -1.23918 -0.344878 0.046875 + N0 -0.283331 -0.164332 -0.944838 N1 -0.316788 -0.085395 -0.944644 N2 -0.136353 -0.0367561 -0.989978 + txt003 +STRI + V0 -1.11122 -0.652653 0.046875 V1 -0.911906 -0.911906 0.046875 V2 -1.01372 -1.01372 0.0777778 + N0 -0.121932 -0.0707208 -0.990016 N1 -0.0996006 -0.0996006 -0.99003 N2 -0.231454 -0.231454 -0.944912 + txt003 +STRI + V0 -1.01372 -1.01372 0.0777778 V1 -1.23529 -0.725523 0.0777778 V2 -1.11122 -0.652653 0.046875 + N0 -0.231454 -0.231454 -0.944912 N1 -0.283331 -0.164332 -0.944838 N2 -0.121932 -0.0707208 -0.990016 + txt003 +STRI + V0 -0.911906 -0.911906 0.046875 V1 -0.652653 -1.11122 0.046875 V2 -0.725523 -1.23529 0.0777778 + N0 -0.0996006 -0.0996006 -0.99003 N1 -0.0707208 -0.121932 -0.990016 N2 -0.164332 -0.283331 -0.944838 + txt003 +STRI + V0 -0.725523 -1.23529 0.0777778 V1 -1.01372 -1.01372 0.0777778 V2 -0.911906 -0.911906 0.046875 + N0 -0.164332 -0.283331 -0.944838 N1 -0.231454 -0.231454 -0.944912 N2 -0.0996006 -0.0996006 -0.99003 + txt003 +STRI + V0 -0.652653 -1.11122 0.046875 V1 -0.344878 -1.23918 0.046875 V2 -0.383385 -1.37754 0.0777778 + N0 -0.0707208 -0.121932 -0.990016 N1 -0.0367561 -0.136353 -0.989978 N2 -0.085395 -0.316788 -0.944644 + txt003 +STRI + V0 -0.383385 -1.37754 0.0777778 V1 -0.725523 -1.23529 0.0777778 V2 -0.652653 -1.11122 0.046875 + N0 -0.085395 -0.316788 -0.944644 N1 -0.164332 -0.283331 -0.944838 N2 -0.0707208 -0.121932 -0.990016 + txt003 +STRI + V0 -0.344878 -1.23918 0.046875 V1 -2.22045e-16 -1.28437 0.046875 V2 2.22045e-16 -1.42778 0.0777778 + N0 -0.0367561 -0.136353 -0.989978 N1 0 -0.141421 -0.989949 N2 -6.08223e-17 -0.328521 -0.944497 + txt003 +STRI + V0 2.22045e-16 -1.42778 0.0777778 V1 -0.383385 -1.37754 0.0777778 V2 -0.344878 -1.23918 0.046875 + N0 -6.08223e-17 -0.328521 -0.944497 N1 -0.085395 -0.316788 -0.944644 N2 -0.0367561 -0.136353 -0.989978 + txt003 +STRI + V0 -1.42778 0 0.0777778 V1 -1.37754 -0.383385 0.0777778 V2 -1.4355 -0.399515 0.112847 + N0 -0.328521 -0 -0.944497 N1 -0.316788 -0.085395 -0.944644 N2 -0.743044 -0.200299 -0.638566 + txt003 +STRI + V0 -1.4355 -0.399515 0.112847 V1 -1.48785 0 0.112847 V2 -1.42778 0 0.0777778 + N0 -0.743044 -0.200299 -0.638566 N1 -0.770022 -0 -0.638018 N2 -0.328521 -0 -0.944497 + txt003 +STRI + V0 -1.37754 -0.383385 0.0777778 V1 -1.23529 -0.725523 0.0777778 V2 -1.28726 -0.756047 0.112847 + N0 -0.316788 -0.085395 -0.944644 N1 -0.283331 -0.164332 -0.944838 N2 -0.665182 -0.385806 -0.639286 + txt003 +STRI + V0 -1.28726 -0.756047 0.112847 V1 -1.4355 -0.399515 0.112847 V2 -1.37754 -0.383385 0.0777778 + N0 -0.665182 -0.385806 -0.639286 N1 -0.743044 -0.200299 -0.638566 N2 -0.316788 -0.085395 -0.944644 + txt003 +STRI + V0 -1.23529 -0.725523 0.0777778 V1 -1.01372 -1.01372 0.0777778 V2 -1.05637 -1.05637 0.112847 + N0 -0.283331 -0.164332 -0.944838 N1 -0.231454 -0.231454 -0.944912 N2 -0.543581 -0.543581 -0.639562 + txt003 +STRI + V0 -1.05637 -1.05637 0.112847 V1 -1.28726 -0.756047 0.112847 V2 -1.23529 -0.725523 0.0777778 + N0 -0.543581 -0.543581 -0.639562 N1 -0.665182 -0.385806 -0.639286 N2 -0.283331 -0.164332 -0.944838 + txt003 +STRI + V0 -1.01372 -1.01372 0.0777778 V1 -0.725523 -1.23529 0.0777778 V2 -0.756047 -1.28726 0.112847 + N0 -0.231454 -0.231454 -0.944912 N1 -0.164332 -0.283331 -0.944838 N2 -0.385806 -0.665182 -0.639286 + txt003 +STRI + V0 -0.756047 -1.28726 0.112847 V1 -1.05637 -1.05637 0.112847 V2 -1.01372 -1.01372 0.0777778 + N0 -0.385806 -0.665182 -0.639286 N1 -0.543581 -0.543581 -0.639562 N2 -0.231454 -0.231454 -0.944912 + txt003 +STRI + V0 -0.725523 -1.23529 0.0777778 V1 -0.383385 -1.37754 0.0777778 V2 -0.399515 -1.4355 0.112847 + N0 -0.164332 -0.283331 -0.944838 N1 -0.085395 -0.316788 -0.944644 N2 -0.200299 -0.743044 -0.638566 + txt003 +STRI + V0 -0.399515 -1.4355 0.112847 V1 -0.756047 -1.28726 0.112847 V2 -0.725523 -1.23529 0.0777778 + N0 -0.200299 -0.743044 -0.638566 N1 -0.385806 -0.665182 -0.639286 N2 -0.164332 -0.283331 -0.944838 + txt003 +STRI + V0 -0.383385 -1.37754 0.0777778 V1 2.22045e-16 -1.42778 0.0777778 V2 0 -1.48785 0.112847 + N0 -0.085395 -0.316788 -0.944644 N1 -6.08223e-17 -0.328521 -0.944497 N2 -1.36806e-16 -0.770022 -0.638018 + txt003 +STRI + V0 0 -1.48785 0.112847 V1 -0.399515 -1.4355 0.112847 V2 -0.383385 -1.37754 0.0777778 + N0 -1.36806e-16 -0.770022 -0.638018 N1 -0.200299 -0.743044 -0.638566 N2 -0.085395 -0.316788 -0.944644 + txt003 +STRI + V0 -1.48785 0 0.112847 V1 -1.4355 -0.399515 0.112847 V2 -1.44722 -0.402778 0.15 + N0 -0.770022 -0 -0.638018 N1 -0.743044 -0.200299 -0.638566 N2 -0.965535 -0.260275 -2.07142e-16 + txt003 +STRI + V0 -1.44722 -0.402778 0.15 V1 -1.5 0 0.15 V2 -1.48785 0 0.112847 + N0 -0.965535 -0.260275 -2.07142e-16 N1 -1 0 0 N2 -0.770022 -0 -0.638018 + txt003 +STRI + V0 -1.4355 -0.399515 0.112847 V1 -1.28726 -0.756047 0.112847 V2 -1.29778 -0.762222 0.15 + N0 -0.743044 -0.200299 -0.638566 N1 -0.665182 -0.385806 -0.639286 N2 -0.865031 -0.501718 -5.46348e-16 + txt003 +STRI + V0 -1.29778 -0.762222 0.15 V1 -1.44722 -0.402778 0.15 V2 -1.4355 -0.399515 0.112847 + N0 -0.865031 -0.501718 -5.46348e-16 N1 -0.965535 -0.260275 -2.07142e-16 N2 -0.743044 -0.200299 -0.638566 + txt003 +STRI + V0 -1.28726 -0.756047 0.112847 V1 -1.05637 -1.05637 0.112847 V2 -1.065 -1.065 0.15 + N0 -0.665182 -0.385806 -0.639286 N1 -0.543581 -0.543581 -0.639562 N2 -0.707107 -0.707107 -6.97819e-16 + txt003 +STRI + V0 -1.065 -1.065 0.15 V1 -1.29778 -0.762222 0.15 V2 -1.28726 -0.756047 0.112847 + N0 -0.707107 -0.707107 -6.97819e-16 N1 -0.865031 -0.501718 -5.46348e-16 N2 -0.665182 -0.385806 -0.639286 + txt003 +STRI + V0 -1.05637 -1.05637 0.112847 V1 -0.756047 -1.28726 0.112847 V2 -0.762222 -1.29778 0.15 + N0 -0.543581 -0.543581 -0.639562 N1 -0.385806 -0.665182 -0.639286 N2 -0.501718 -0.865031 -5.46348e-16 + txt003 +STRI + V0 -0.762222 -1.29778 0.15 V1 -1.065 -1.065 0.15 V2 -1.05637 -1.05637 0.112847 + N0 -0.501718 -0.865031 -5.46348e-16 N1 -0.707107 -0.707107 -6.97819e-16 N2 -0.543581 -0.543581 -0.639562 + txt003 +STRI + V0 -0.756047 -1.28726 0.112847 V1 -0.399515 -1.4355 0.112847 V2 -0.402778 -1.44722 0.15 + N0 -0.385806 -0.665182 -0.639286 N1 -0.200299 -0.743044 -0.638566 N2 -0.260275 -0.965535 -2.07142e-16 + txt003 +STRI + V0 -0.402778 -1.44722 0.15 V1 -0.762222 -1.29778 0.15 V2 -0.756047 -1.28726 0.112847 + N0 -0.260275 -0.965535 -2.07142e-16 N1 -0.501718 -0.865031 -5.46348e-16 N2 -0.385806 -0.665182 -0.639286 + txt003 +STRI + V0 -0.399515 -1.4355 0.112847 V1 0 -1.48785 0.112847 V2 0 -1.5 0.15 + N0 -0.200299 -0.743044 -0.638566 N1 -1.36806e-16 -0.770022 -0.638018 N2 0 -1 0 + txt003 +STRI + V0 0 -1.5 0.15 V1 -0.402778 -1.44722 0.15 V2 -0.399515 -1.4355 0.112847 + N0 0 -1 0 N1 -0.260275 -0.965535 -2.07142e-16 N2 -0.200299 -0.743044 -0.638566 + txt003 +STRI + V0 0.162696 -0.584584 0.00590278 V1 0 -0.605903 0.00590278 V2 0 0 0 + N0 0.00589307 -0.0218614 -0.999744 N1 0 -0.0226746 -0.999743 N2 0 0 -1 + txt003 +STRI + V0 0.307888 -0.524218 0.00590278 V1 0.162696 -0.584584 0.00590278 V2 0 0 0 + N0 0.0113382 -0.0195486 -0.999745 N1 0.00589307 -0.0218614 -0.999744 N2 0 0 -1 + txt003 +STRI + V0 0.430191 -0.430191 0.00590278 V1 0.307888 -0.524218 0.00590278 V2 0 0 0 + N0 0.015968 -0.015968 -0.999745 N1 0.0113382 -0.0195486 -0.999745 N2 0 0 -1 + txt003 +STRI + V0 0.524218 -0.307888 0.00590278 V1 0.430191 -0.430191 0.00590278 V2 0 0 0 + N0 0.0195486 -0.0113382 -0.999745 N1 0.015968 -0.015968 -0.999745 N2 0 0 -1 + txt003 +STRI + V0 0.584584 -0.162696 0.00590278 V1 0.524218 -0.307888 0.00590278 V2 0 0 0 + N0 0.0218614 -0.00589307 -0.999744 N1 0.0195486 -0.0113382 -0.999745 N2 0 0 -1 + txt003 +STRI + V0 0.605903 0 0.00590278 V1 0.584584 -0.162696 0.00590278 V2 0 0 0 + N0 0.0226746 -4.94615e-18 -0.999743 N1 0.0218614 -0.00589307 -0.999744 N2 0 0 -1 + txt003 +STRI + V0 0 -0.605903 0.00590278 V1 0.162696 -0.584584 0.00590278 V2 0.274486 -0.986255 0.0222222 + N0 0 -0.0226746 -0.999743 N1 0.00589307 -0.0218614 -0.999744 N2 0.0162121 -0.0601415 -0.998058 + txt003 +STRI + V0 0.274486 -0.986255 0.0222222 V1 0 -1.02222 0.0222222 V2 0 -0.605903 0.00590278 + N0 0.0162121 -0.0601415 -0.998058 N1 0 -0.0623783 -0.998053 N2 0 -0.0226746 -0.999743 + txt003 +STRI + V0 0.162696 -0.584584 0.00590278 V1 0.307888 -0.524218 0.00590278 V2 0.51944 -0.884412 0.0222222 + N0 0.00589307 -0.0218614 -0.999744 N1 0.0113382 -0.0195486 -0.999745 N2 0.0311919 -0.0537792 -0.998066 + txt003 +STRI + V0 0.51944 -0.884412 0.0222222 V1 0.274486 -0.986255 0.0222222 V2 0.162696 -0.584584 0.00590278 + N0 0.0311919 -0.0537792 -0.998066 N1 0.0162121 -0.0601415 -0.998058 N2 0.00589307 -0.0218614 -0.999744 + txt003 +STRI + V0 0.307888 -0.524218 0.00590278 V1 0.430191 -0.430191 0.00590278 V2 0.725778 -0.725778 0.0222222 + N0 0.0113382 -0.0195486 -0.999745 N1 0.015968 -0.015968 -0.999745 N2 0.0439291 -0.0439291 -0.998068 + txt003 +STRI + V0 0.725778 -0.725778 0.0222222 V1 0.51944 -0.884412 0.0222222 V2 0.307888 -0.524218 0.00590278 + N0 0.0439291 -0.0439291 -0.998068 N1 0.0311919 -0.0537792 -0.998066 N2 0.0113382 -0.0195486 -0.999745 + txt003 +STRI + V0 0.430191 -0.430191 0.00590278 V1 0.524218 -0.307888 0.00590278 V2 0.884412 -0.51944 0.0222222 + N0 0.015968 -0.015968 -0.999745 N1 0.0195486 -0.0113382 -0.999745 N2 0.0537792 -0.0311919 -0.998066 + txt003 +STRI + V0 0.884412 -0.51944 0.0222222 V1 0.725778 -0.725778 0.0222222 V2 0.430191 -0.430191 0.00590278 + N0 0.0537792 -0.0311919 -0.998066 N1 0.0439291 -0.0439291 -0.998068 N2 0.015968 -0.015968 -0.999745 + txt003 +STRI + V0 0.524218 -0.307888 0.00590278 V1 0.584584 -0.162696 0.00590278 V2 0.986255 -0.274486 0.0222222 + N0 0.0195486 -0.0113382 -0.999745 N1 0.0218614 -0.00589307 -0.999744 N2 0.0601415 -0.0162121 -0.998058 + txt003 +STRI + V0 0.986255 -0.274486 0.0222222 V1 0.884412 -0.51944 0.0222222 V2 0.524218 -0.307888 0.00590278 + N0 0.0601415 -0.0162121 -0.998058 N1 0.0537792 -0.0311919 -0.998066 N2 0.0195486 -0.0113382 -0.999745 + txt003 +STRI + V0 0.584584 -0.162696 0.00590278 V1 0.605903 0 0.00590278 V2 1.02222 2.22045e-16 0.0222222 + N0 0.0218614 -0.00589307 -0.999744 N1 0.0226746 -4.94615e-18 -0.999743 N2 0.0623783 0 -0.998053 + txt003 +STRI + V0 1.02222 2.22045e-16 0.0222222 V1 0.986255 -0.274486 0.0222222 V2 0.584584 -0.162696 0.00590278 + N0 0.0623783 0 -0.998053 N1 0.0601415 -0.0162121 -0.998058 N2 0.0218614 -0.00589307 -0.999744 + txt003 +STRI + V0 0 -1.02222 0.0222222 V1 0.274486 -0.986255 0.0222222 V2 0.344878 -1.23918 0.046875 + N0 0 -0.0623783 -0.998053 N1 0.0162121 -0.0601415 -0.998058 N2 0.0367561 -0.136353 -0.989978 + txt003 +STRI + V0 0.344878 -1.23918 0.046875 V1 0 -1.28438 0.046875 V2 0 -1.02222 0.0222222 + N0 0.0367561 -0.136353 -0.989978 N1 0 -0.141421 -0.989949 N2 0 -0.0623783 -0.998053 + txt003 +STRI + V0 0.274486 -0.986255 0.0222222 V1 0.51944 -0.884412 0.0222222 V2 0.652653 -1.11122 0.046875 + N0 0.0162121 -0.0601415 -0.998058 N1 0.0311919 -0.0537792 -0.998066 N2 0.0707208 -0.121932 -0.990016 + txt003 +STRI + V0 0.652653 -1.11122 0.046875 V1 0.344878 -1.23918 0.046875 V2 0.274486 -0.986255 0.0222222 + N0 0.0707208 -0.121932 -0.990016 N1 0.0367561 -0.136353 -0.989978 N2 0.0162121 -0.0601415 -0.998058 + txt003 +STRI + V0 0.51944 -0.884412 0.0222222 V1 0.725778 -0.725778 0.0222222 V2 0.911906 -0.911906 0.046875 + N0 0.0311919 -0.0537792 -0.998066 N1 0.0439291 -0.0439291 -0.998068 N2 0.0996006 -0.0996006 -0.99003 + txt003 +STRI + V0 0.911906 -0.911906 0.046875 V1 0.652653 -1.11122 0.046875 V2 0.51944 -0.884412 0.0222222 + N0 0.0996006 -0.0996006 -0.99003 N1 0.0707208 -0.121932 -0.990016 N2 0.0311919 -0.0537792 -0.998066 + txt003 +STRI + V0 0.725778 -0.725778 0.0222222 V1 0.884412 -0.51944 0.0222222 V2 1.11122 -0.652653 0.046875 + N0 0.0439291 -0.0439291 -0.998068 N1 0.0537792 -0.0311919 -0.998066 N2 0.121932 -0.0707208 -0.990016 + txt003 +STRI + V0 1.11122 -0.652653 0.046875 V1 0.911906 -0.911906 0.046875 V2 0.725778 -0.725778 0.0222222 + N0 0.121932 -0.0707208 -0.990016 N1 0.0996006 -0.0996006 -0.99003 N2 0.0439291 -0.0439291 -0.998068 + txt003 +STRI + V0 0.884412 -0.51944 0.0222222 V1 0.986255 -0.274486 0.0222222 V2 1.23918 -0.344878 0.046875 + N0 0.0537792 -0.0311919 -0.998066 N1 0.0601415 -0.0162121 -0.998058 N2 0.136353 -0.0367561 -0.989978 + txt003 +STRI + V0 1.23918 -0.344878 0.046875 V1 1.11122 -0.652653 0.046875 V2 0.884412 -0.51944 0.0222222 + N0 0.136353 -0.0367561 -0.989978 N1 0.121932 -0.0707208 -0.990016 N2 0.0537792 -0.0311919 -0.998066 + txt003 +STRI + V0 0.986255 -0.274486 0.0222222 V1 1.02222 2.22045e-16 0.0222222 V2 1.28437 -2.22045e-16 0.046875 + N0 0.0601415 -0.0162121 -0.998058 N1 0.0623783 0 -0.998053 N2 0.141421 0 -0.989949 + txt003 +STRI + V0 1.28437 -2.22045e-16 0.046875 V1 1.23918 -0.344878 0.046875 V2 0.986255 -0.274486 0.0222222 + N0 0.141421 0 -0.989949 N1 0.136353 -0.0367561 -0.989978 N2 0.0601415 -0.0162121 -0.998058 + txt003 +STRI + V0 0 -1.28438 0.046875 V1 0.344878 -1.23918 0.046875 V2 0.383385 -1.37754 0.0777778 + N0 0 -0.141421 -0.989949 N1 0.0367561 -0.136353 -0.989978 N2 0.085395 -0.316788 -0.944644 + txt003 +STRI + V0 0.383385 -1.37754 0.0777778 V1 0 -1.42778 0.0777778 V2 0 -1.28438 0.046875 + N0 0.085395 -0.316788 -0.944644 N1 0 -0.328521 -0.944497 N2 0 -0.141421 -0.989949 + txt003 +STRI + V0 0.344878 -1.23918 0.046875 V1 0.652653 -1.11122 0.046875 V2 0.725523 -1.23529 0.0777778 + N0 0.0367561 -0.136353 -0.989978 N1 0.0707208 -0.121932 -0.990016 N2 0.164332 -0.283331 -0.944838 + txt003 +STRI + V0 0.725523 -1.23529 0.0777778 V1 0.383385 -1.37754 0.0777778 V2 0.344878 -1.23918 0.046875 + N0 0.164332 -0.283331 -0.944838 N1 0.085395 -0.316788 -0.944644 N2 0.0367561 -0.136353 -0.989978 + txt003 +STRI + V0 0.652653 -1.11122 0.046875 V1 0.911906 -0.911906 0.046875 V2 1.01372 -1.01372 0.0777778 + N0 0.0707208 -0.121932 -0.990016 N1 0.0996006 -0.0996006 -0.99003 N2 0.231454 -0.231454 -0.944912 + txt003 +STRI + V0 1.01372 -1.01372 0.0777778 V1 0.725523 -1.23529 0.0777778 V2 0.652653 -1.11122 0.046875 + N0 0.231454 -0.231454 -0.944912 N1 0.164332 -0.283331 -0.944838 N2 0.0707208 -0.121932 -0.990016 + txt003 +STRI + V0 0.911906 -0.911906 0.046875 V1 1.11122 -0.652653 0.046875 V2 1.23529 -0.725523 0.0777778 + N0 0.0996006 -0.0996006 -0.99003 N1 0.121932 -0.0707208 -0.990016 N2 0.283331 -0.164332 -0.944838 + txt003 +STRI + V0 1.23529 -0.725523 0.0777778 V1 1.01372 -1.01372 0.0777778 V2 0.911906 -0.911906 0.046875 + N0 0.283331 -0.164332 -0.944838 N1 0.231454 -0.231454 -0.944912 N2 0.0996006 -0.0996006 -0.99003 + txt003 +STRI + V0 1.11122 -0.652653 0.046875 V1 1.23918 -0.344878 0.046875 V2 1.37754 -0.383385 0.0777778 + N0 0.121932 -0.0707208 -0.990016 N1 0.136353 -0.0367561 -0.989978 N2 0.316788 -0.085395 -0.944644 + txt003 +STRI + V0 1.37754 -0.383385 0.0777778 V1 1.23529 -0.725523 0.0777778 V2 1.11122 -0.652653 0.046875 + N0 0.316788 -0.085395 -0.944644 N1 0.283331 -0.164332 -0.944838 N2 0.121932 -0.0707208 -0.990016 + txt003 +STRI + V0 1.23918 -0.344878 0.046875 V1 1.28437 -2.22045e-16 0.046875 V2 1.42778 2.22045e-16 0.0777778 + N0 0.136353 -0.0367561 -0.989978 N1 0.141421 0 -0.989949 N2 0.328521 -6.08223e-17 -0.944497 + txt003 +STRI + V0 1.42778 2.22045e-16 0.0777778 V1 1.37754 -0.383385 0.0777778 V2 1.23918 -0.344878 0.046875 + N0 0.328521 -6.08223e-17 -0.944497 N1 0.316788 -0.085395 -0.944644 N2 0.136353 -0.0367561 -0.989978 + txt003 +STRI + V0 0 -1.42778 0.0777778 V1 0.383385 -1.37754 0.0777778 V2 0.399515 -1.4355 0.112847 + N0 0 -0.328521 -0.944497 N1 0.085395 -0.316788 -0.944644 N2 0.200299 -0.743044 -0.638566 + txt003 +STRI + V0 0.399515 -1.4355 0.112847 V1 0 -1.48785 0.112847 V2 0 -1.42778 0.0777778 + N0 0.200299 -0.743044 -0.638566 N1 0 -0.770022 -0.638018 N2 0 -0.328521 -0.944497 + txt003 +STRI + V0 0.383385 -1.37754 0.0777778 V1 0.725523 -1.23529 0.0777778 V2 0.756047 -1.28726 0.112847 + N0 0.085395 -0.316788 -0.944644 N1 0.164332 -0.283331 -0.944838 N2 0.385806 -0.665182 -0.639286 + txt003 +STRI + V0 0.756047 -1.28726 0.112847 V1 0.399515 -1.4355 0.112847 V2 0.383385 -1.37754 0.0777778 + N0 0.385806 -0.665182 -0.639286 N1 0.200299 -0.743044 -0.638566 N2 0.085395 -0.316788 -0.944644 + txt003 +STRI + V0 0.725523 -1.23529 0.0777778 V1 1.01372 -1.01372 0.0777778 V2 1.05637 -1.05637 0.112847 + N0 0.164332 -0.283331 -0.944838 N1 0.231454 -0.231454 -0.944912 N2 0.543581 -0.543581 -0.639562 + txt003 +STRI + V0 1.05637 -1.05637 0.112847 V1 0.756047 -1.28726 0.112847 V2 0.725523 -1.23529 0.0777778 + N0 0.543581 -0.543581 -0.639562 N1 0.385806 -0.665182 -0.639286 N2 0.164332 -0.283331 -0.944838 + txt003 +STRI + V0 1.01372 -1.01372 0.0777778 V1 1.23529 -0.725523 0.0777778 V2 1.28726 -0.756047 0.112847 + N0 0.231454 -0.231454 -0.944912 N1 0.283331 -0.164332 -0.944838 N2 0.665182 -0.385806 -0.639286 + txt003 +STRI + V0 1.28726 -0.756047 0.112847 V1 1.05637 -1.05637 0.112847 V2 1.01372 -1.01372 0.0777778 + N0 0.665182 -0.385806 -0.639286 N1 0.543581 -0.543581 -0.639562 N2 0.231454 -0.231454 -0.944912 + txt003 +STRI + V0 1.23529 -0.725523 0.0777778 V1 1.37754 -0.383385 0.0777778 V2 1.4355 -0.399515 0.112847 + N0 0.283331 -0.164332 -0.944838 N1 0.316788 -0.085395 -0.944644 N2 0.743044 -0.200299 -0.638566 + txt003 +STRI + V0 1.4355 -0.399515 0.112847 V1 1.28726 -0.756047 0.112847 V2 1.23529 -0.725523 0.0777778 + N0 0.743044 -0.200299 -0.638566 N1 0.665182 -0.385806 -0.639286 N2 0.283331 -0.164332 -0.944838 + txt003 +STRI + V0 1.37754 -0.383385 0.0777778 V1 1.42778 2.22045e-16 0.0777778 V2 1.48785 0 0.112847 + N0 0.316788 -0.085395 -0.944644 N1 0.328521 -6.08223e-17 -0.944497 N2 0.770022 -1.36806e-16 -0.638018 + txt003 +STRI + V0 1.48785 0 0.112847 V1 1.4355 -0.399515 0.112847 V2 1.37754 -0.383385 0.0777778 + N0 0.770022 -1.36806e-16 -0.638018 N1 0.743044 -0.200299 -0.638566 N2 0.316788 -0.085395 -0.944644 + txt003 +STRI + V0 0 -1.48785 0.112847 V1 0.399515 -1.4355 0.112847 V2 0.402778 -1.44722 0.15 + N0 0 -0.770022 -0.638018 N1 0.200299 -0.743044 -0.638566 N2 0.260275 -0.965535 -2.07142e-16 + txt003 +STRI + V0 0.402778 -1.44722 0.15 V1 0 -1.5 0.15 V2 0 -1.48785 0.112847 + N0 0.260275 -0.965535 -2.07142e-16 N1 0 -1 0 N2 0 -0.770022 -0.638018 + txt003 +STRI + V0 0.399515 -1.4355 0.112847 V1 0.756047 -1.28726 0.112847 V2 0.762222 -1.29778 0.15 + N0 0.200299 -0.743044 -0.638566 N1 0.385806 -0.665182 -0.639286 N2 0.501718 -0.865031 -5.46348e-16 + txt003 +STRI + V0 0.762222 -1.29778 0.15 V1 0.402778 -1.44722 0.15 V2 0.399515 -1.4355 0.112847 + N0 0.501718 -0.865031 -5.46348e-16 N1 0.260275 -0.965535 -2.07142e-16 N2 0.200299 -0.743044 -0.638566 + txt003 +STRI + V0 0.756047 -1.28726 0.112847 V1 1.05637 -1.05637 0.112847 V2 1.065 -1.065 0.15 + N0 0.385806 -0.665182 -0.639286 N1 0.543581 -0.543581 -0.639562 N2 0.707107 -0.707107 -6.97819e-16 + txt003 +STRI + V0 1.065 -1.065 0.15 V1 0.762222 -1.29778 0.15 V2 0.756047 -1.28726 0.112847 + N0 0.707107 -0.707107 -6.97819e-16 N1 0.501718 -0.865031 -5.46348e-16 N2 0.385806 -0.665182 -0.639286 + txt003 +STRI + V0 1.05637 -1.05637 0.112847 V1 1.28726 -0.756047 0.112847 V2 1.29778 -0.762222 0.15 + N0 0.543581 -0.543581 -0.639562 N1 0.665182 -0.385806 -0.639286 N2 0.865031 -0.501718 -5.46348e-16 + txt003 +STRI + V0 1.29778 -0.762222 0.15 V1 1.065 -1.065 0.15 V2 1.05637 -1.05637 0.112847 + N0 0.865031 -0.501718 -5.46348e-16 N1 0.707107 -0.707107 -6.97819e-16 N2 0.543581 -0.543581 -0.639562 + txt003 +STRI + V0 1.28726 -0.756047 0.112847 V1 1.4355 -0.399515 0.112847 V2 1.44722 -0.402778 0.15 + N0 0.665182 -0.385806 -0.639286 N1 0.743044 -0.200299 -0.638566 N2 0.965535 -0.260275 -2.07142e-16 + txt003 +STRI + V0 1.44722 -0.402778 0.15 V1 1.29778 -0.762222 0.15 V2 1.28726 -0.756047 0.112847 + N0 0.965535 -0.260275 -2.07142e-16 N1 0.865031 -0.501718 -5.46348e-16 N2 0.665182 -0.385806 -0.639286 + txt003 +STRI + V0 1.4355 -0.399515 0.112847 V1 1.48785 0 0.112847 V2 1.5 0 0.15 + N0 0.743044 -0.200299 -0.638566 N1 0.770022 -1.36806e-16 -0.638018 N2 1 0 0 + txt003 +STRI + V0 1.5 0 0.15 V1 1.44722 -0.402778 0.15 V2 1.4355 -0.399515 0.112847 + N0 1 0 0 N1 0.965535 -0.260275 -2.07142e-16 N2 0.743044 -0.200299 -0.638566 + txt003 + +END_SCENE diff --git a/examples/parallel_for/tachyon/dat/trypsin4pti.dat b/examples/parallel_for/tachyon/dat/trypsin4pti.dat new file mode 100644 index 0000000000..7d547f28d8 --- /dev/null +++ b/examples/parallel_for/tachyon/dat/trypsin4pti.dat @@ -0,0 +1,538 @@ +BEGIN_SCENE + OUTFILE /dev/null + RESOLUTION 768 768 + VERBOSE 0 + +CAMERA + ZOOM 1.0 + ASPECTRATIO 1.0 + ANTIALIASING 0 + RAYDEPTH 4 + CENTER 15.0 20.0 -50.0 + VIEWDIR 0.0 0.0 1.0 + UPDIR 0.0 1.0 0.0 +END_CAMERA + + +LIGHT + CENTER 40.0 50.0 -40.0 + RAD 0.2 + COLOR 0.5 0.5 0.5 + +LIGHT + CENTER -40.0 20.0 -40.0 + RAD 0.2 + COLOR 0.5 0.5 0.5 + + +TEXDEF O AMBIENT 0.1 DIFFUSE 0.9 SPECULAR 0.0 OPACITY 1.0 + PHONG PLASTIC 0.5 PHONG_SIZE 24.8 + COLOR 1.0 0.0 0.0 TEXFUNC 0 +TEXALIAS OH O +TEXALIAS OD1 O +TEXALIAS OD2 O +TEXALIAS OE1 O +TEXALIAS OE2 O +TEXALIAS OG O +TEXALIAS OG1 O +TEXALIAS OG2 O +TEXALIAS OXT O + +TEXDEF C AMBIENT 0.1 DIFFUSE 0.5 SPECULAR 0.0 OPACITY 1.0 + PHONG PLASTIC 0.5 PHONG_SIZE 24.8 + COLOR 0.5 0.5 0.5 TEXFUNC 0 +TEXALIAS CA C +TEXALIAS CB C +TEXALIAS CD C +TEXALIAS CD1 C +TEXALIAS CD2 C +TEXALIAS CE C +TEXALIAS CE1 C +TEXALIAS CE2 C +TEXALIAS CG C +TEXALIAS CG1 C +TEXALIAS CG2 C +TEXALIAS CZ C + +TEXDEF N AMBIENT 0.1 DIFFUSE 0.9 SPECULAR 0.0 OPACITY 1.0 + PHONG PLASTIC 0.5 PHONG_SIZE 24.8 + COLOR 0.5 0.5 1.0 TEXFUNC 0 +TEXALIAS ND2 N +TEXALIAS NH1 N +TEXALIAS NH2 N +TEXALIAS NE N +TEXALIAS NE2 N +TEXALIAS NZ N + +TEXDEF SD AMBIENT 0.1 DIFFUSE 0.9 SPECULAR 0.0 OPACITY 1.0 + PHONG METAL 0.5 PHONG_SIZE 24.8 + COLOR 1.0 1.0 1.0 TEXFUNC 0 + +TEXDEF SG AMBIENT 0.1 DIFFUSE 0.9 SPECULAR 0.0 OPACITY 1.0 + PHONG PLASTIC 0.5 PHONG_SIZE 24.8 + COLOR 1.0 1.0 1.0 TEXFUNC 0 + +SPHERE CENTER 26.465000 27.452000 -2.490000 RAD 1.0 N +SPHERE CENTER 25.497000 26.862000 -1.573000 RAD 1.0 CA +SPHERE CENTER 26.193001 26.179001 -0.437000 RAD 1.0 C +SPHERE CENTER 27.270000 25.549000 -0.624000 RAD 1.0 O +SPHERE CENTER 24.583000 25.804001 -2.239000 RAD 1.0 CB +SPHERE CENTER 25.091000 24.375000 -2.409000 RAD 1.0 CG +SPHERE CENTER 24.018999 23.427999 -2.996000 RAD 1.0 CD +SPHERE CENTER 23.591000 24.028000 -4.287000 RAD 1.0 NE +SPHERE CENTER 24.299000 23.972000 -5.389000 RAD 1.0 CZ +SPHERE CENTER 25.431999 23.261000 -5.440000 RAD 1.0 NH1 +SPHERE CENTER 23.721001 24.372999 -6.467000 RAD 1.0 NH2 +SPHERE CENTER 25.667000 26.396000 0.708000 RAD 1.0 N +SPHERE CENTER 26.222000 25.760000 1.891000 RAD 1.0 CA +SPHERE CENTER 26.207001 24.242001 1.830000 RAD 1.0 C +SPHERE CENTER 25.400000 23.576000 1.139000 RAD 1.0 O +SPHERE CENTER 25.260000 26.207001 3.033000 RAD 1.0 CB +SPHERE CENTER 24.511999 27.427999 2.493000 RAD 1.0 CG +SPHERE CENTER 24.606001 27.382000 0.978000 RAD 1.0 CD +SPHERE CENTER 27.170000 23.634001 2.462000 RAD 1.0 N +SPHERE CENTER 27.284000 22.163000 2.498000 RAD 1.0 CA +SPHERE CENTER 26.042999 21.506001 3.085000 RAD 1.0 C +SPHERE CENTER 25.752001 20.350000 2.705000 RAD 1.0 O +SPHERE CENTER 28.424999 21.747000 3.461000 RAD 1.0 CB +SPHERE CENTER 29.791000 21.886000 2.787000 RAD 1.0 CG +SPHERE CENTER 29.875000 22.104000 1.543000 RAD 1.0 OD1 +SPHERE CENTER 30.806000 21.500999 3.431000 RAD 1.0 OD2 +SPHERE CENTER 25.393999 22.184000 4.041000 RAD 1.0 N +SPHERE CENTER 24.172001 21.584999 4.618000 RAD 1.0 CA +SPHERE CENTER 23.009001 21.375000 3.624000 RAD 1.0 C +SPHERE CENTER 22.082001 20.603001 3.921000 RAD 1.0 O +SPHERE CENTER 23.691999 22.330999 5.862000 RAD 1.0 CB +SPHERE CENTER 23.191999 23.778999 5.639000 RAD 1.0 CG +SPHERE CENTER 21.961000 24.002001 5.060000 RAD 1.0 CD1 +SPHERE CENTER 23.951000 24.841000 6.050000 RAD 1.0 CD2 +SPHERE CENTER 21.497000 25.281000 4.869000 RAD 1.0 CE1 +SPHERE CENTER 23.510000 26.124001 5.854000 RAD 1.0 CE2 +SPHERE CENTER 22.277000 26.363001 5.249000 RAD 1.0 CZ +SPHERE CENTER 23.094999 22.004000 2.522000 RAD 1.0 N +SPHERE CENTER 22.106001 21.863001 1.467000 RAD 1.0 CA +SPHERE CENTER 22.191999 20.518000 0.830000 RAD 1.0 C +SPHERE CENTER 21.230000 20.068001 0.167000 RAD 1.0 O +SPHERE CENTER 22.358000 22.903999 0.371000 RAD 1.0 CB +SPHERE CENTER 22.145000 24.591999 0.888000 RAD 1.0 SG +SPHERE CENTER 23.326000 19.826000 1.008000 RAD 1.0 N +SPHERE CENTER 23.436001 18.459999 0.459000 RAD 1.0 CA +SPHERE CENTER 22.958000 17.365000 1.407000 RAD 1.0 C +SPHERE CENTER 22.938000 16.180000 0.999000 RAD 1.0 O +SPHERE CENTER 24.898001 18.084000 0.131000 RAD 1.0 CB +SPHERE CENTER 25.572001 19.129000 -0.776000 RAD 1.0 CG +SPHERE CENTER 27.037001 18.695000 -1.116000 RAD 1.0 CD1 +SPHERE CENTER 24.791000 19.488001 -2.049000 RAD 1.0 CD2 +SPHERE CENTER 22.545000 17.716000 2.628000 RAD 1.0 N +SPHERE CENTER 22.039000 16.646000 3.528000 RAD 1.0 CA +SPHERE CENTER 20.615999 16.285000 3.113000 RAD 1.0 C +SPHERE CENTER 19.860001 17.136000 2.576000 RAD 1.0 O +SPHERE CENTER 21.764000 17.216999 4.920000 RAD 1.0 CB +SPHERE CENTER 22.813999 18.035000 5.647000 RAD 1.0 CG +SPHERE CENTER 22.152000 18.707001 6.870000 RAD 1.0 CD +SPHERE CENTER 22.980000 19.100000 7.718000 RAD 1.0 OE1 +SPHERE CENTER 21.086000 19.403999 6.779000 RAD 1.0 OE2 +SPHERE CENTER 20.254000 15.031000 3.334000 RAD 1.0 N +SPHERE CENTER 18.892000 14.554000 3.034000 RAD 1.0 CA +SPHERE CENTER 17.954000 15.160000 4.079000 RAD 1.0 C +SPHERE CENTER 18.443001 15.606000 5.146000 RAD 1.0 O +SPHERE CENTER 18.910000 13.045000 3.274000 RAD 1.0 CB +SPHERE CENTER 20.226000 12.742000 4.021000 RAD 1.0 CG +SPHERE CENTER 21.107000 14.009000 3.934000 RAD 1.0 CD +SPHERE CENTER 16.681999 15.232000 3.767000 RAD 1.0 N +SPHERE CENTER 15.690000 15.852000 4.661000 RAD 1.0 CA +SPHERE CENTER 15.550000 15.006000 5.916000 RAD 1.0 C +SPHERE CENTER 15.693000 13.769000 5.836000 RAD 1.0 O +SPHERE CENTER 14.367000 15.707000 3.867000 RAD 1.0 CB +SPHERE CENTER 14.571000 14.716000 2.710000 RAD 1.0 CG +SPHERE CENTER 16.090000 14.597000 2.574000 RAD 1.0 CD +SPHERE CENTER 15.365000 15.630000 7.042000 RAD 1.0 N +SPHERE CENTER 15.310000 14.908000 8.298000 RAD 1.0 CA +SPHERE CENTER 13.953000 15.177000 8.952000 RAD 1.0 C +SPHERE CENTER 13.699000 16.320000 9.382000 RAD 1.0 O +SPHERE CENTER 16.532000 15.383000 9.122000 RAD 1.0 CB +SPHERE CENTER 16.608000 14.781000 10.525000 RAD 1.0 CG +SPHERE CENTER 17.132000 13.535000 10.707000 RAD 1.0 CD1 +SPHERE CENTER 16.155001 15.523000 11.588000 RAD 1.0 CD2 +SPHERE CENTER 17.216000 12.999000 11.982000 RAD 1.0 CE1 +SPHERE CENTER 16.266001 14.985000 12.862000 RAD 1.0 CE2 +SPHERE CENTER 16.808001 13.746000 13.047000 RAD 1.0 CZ +SPHERE CENTER 16.878000 13.192000 14.372000 RAD 1.0 OH +SPHERE CENTER 13.161000 14.146000 9.088000 RAD 1.0 N +SPHERE CENTER 11.802000 14.321000 9.642000 RAD 1.0 CA +SPHERE CENTER 11.855000 14.484000 11.146000 RAD 1.0 C +SPHERE CENTER 11.105000 15.314000 11.759000 RAD 1.0 O +SPHERE CENTER 10.963000 13.105000 9.273000 RAD 1.0 CB +SPHERE CENTER 10.706000 13.192000 7.854000 RAD 1.0 OG1 +SPHERE CENTER 9.611000 13.152000 10.045000 RAD 1.0 CG2 +SPHERE CENTER 12.789000 13.760000 11.726000 RAD 1.0 N +SPHERE CENTER 13.002000 13.922000 13.198000 RAD 1.0 CA +SPHERE CENTER 12.107000 12.944000 13.909000 RAD 1.0 C +SPHERE CENTER 11.333000 12.212000 13.239000 RAD 1.0 O +SPHERE CENTER 12.235000 12.905000 15.210000 RAD 1.0 N +SPHERE CENTER 11.516000 11.958000 16.066999 RAD 1.0 CA +SPHERE CENTER 10.094000 12.319000 16.468000 RAD 1.0 C +SPHERE CENTER 9.440000 11.442000 17.052000 RAD 1.0 O +SPHERE CENTER 12.272000 11.936000 17.370001 RAD 1.0 CB +SPHERE CENTER 13.164000 13.172000 17.399000 RAD 1.0 CG +SPHERE CENTER 13.281000 13.627000 15.925000 RAD 1.0 CD +SPHERE CENTER 9.629000 13.519000 16.214001 RAD 1.0 N +SPHERE CENTER 8.290000 13.980000 16.615999 RAD 1.0 CA +SPHERE CENTER 7.268000 13.720000 15.515000 RAD 1.0 C +SPHERE CENTER 7.672000 13.397000 14.387000 RAD 1.0 O +SPHERE CENTER 8.279000 15.441000 16.966999 RAD 1.0 CB +SPHERE CENTER 9.221000 15.735000 18.490000 RAD 1.0 SG +SPHERE CENTER 6.027000 13.680000 15.869000 RAD 1.0 N +SPHERE CENTER 5.005000 13.220000 14.945000 RAD 1.0 CA +SPHERE CENTER 3.964000 14.283000 14.630000 RAD 1.0 C +SPHERE CENTER 2.777000 13.949000 14.377000 RAD 1.0 O +SPHERE CENTER 4.310000 11.998000 15.592000 RAD 1.0 CB +SPHERE CENTER 5.273000 10.848000 15.913000 RAD 1.0 CG +SPHERE CENTER 5.781000 10.034000 14.702000 RAD 1.0 CD +SPHERE CENTER 6.855000 9.016000 15.126000 RAD 1.0 CE +SPHERE CENTER 7.357000 8.291000 13.953000 RAD 1.0 NZ +SPHERE CENTER 4.325000 15.549000 14.618000 RAD 1.0 N +SPHERE CENTER 3.513000 16.639999 14.122000 RAD 1.0 CA +SPHERE CENTER 3.561000 16.615000 12.586000 RAD 1.0 C +SPHERE CENTER 4.270000 15.752000 12.023000 RAD 1.0 O +SPHERE CENTER 3.984000 17.995001 14.670000 RAD 1.0 CB +SPHERE CENTER 2.781000 17.424999 11.943000 RAD 1.0 N +SPHERE CENTER 2.700000 17.355000 10.457000 RAD 1.0 CA +SPHERE CENTER 2.875000 18.731001 9.887000 RAD 1.0 C +SPHERE CENTER 1.878000 19.469999 9.653000 RAD 1.0 O +SPHERE CENTER 1.320000 16.787001 9.970000 RAD 1.0 CB +SPHERE CENTER 1.186000 15.339000 10.395000 RAD 1.0 CG +SPHERE CENTER -0.170000 14.751000 9.963000 RAD 1.0 CD +SPHERE CENTER -1.132000 15.455000 10.801000 RAD 1.0 NE +SPHERE CENTER -1.531000 14.913000 11.939000 RAD 1.0 CZ +SPHERE CENTER -1.172000 13.658000 12.165000 RAD 1.0 NH1 +SPHERE CENTER -2.202000 15.647000 12.795000 RAD 1.0 NH2 +SPHERE CENTER 4.154000 19.110001 9.817000 RAD 1.0 N +SPHERE CENTER 4.595000 20.444000 9.391000 RAD 1.0 CA +SPHERE CENTER 5.249000 20.388000 8.012000 RAD 1.0 C +SPHERE CENTER 6.193000 19.612000 7.834000 RAD 1.0 O +SPHERE CENTER 5.590000 20.988001 10.452000 RAD 1.0 CB +SPHERE CENTER 4.792000 21.062000 11.815000 RAD 1.0 CG1 +SPHERE CENTER 5.985000 22.451000 10.085000 RAD 1.0 CG2 +SPHERE CENTER 5.689000 21.535999 12.955000 RAD 1.0 CD1 +SPHERE CENTER 4.586000 20.955999 7.035000 RAD 1.0 N +SPHERE CENTER 5.154000 20.879000 5.697000 RAD 1.0 CA +SPHERE CENTER 6.286000 21.912001 5.572000 RAD 1.0 C +SPHERE CENTER 6.156000 23.146000 5.785000 RAD 1.0 O +SPHERE CENTER 4.095000 21.205000 4.648000 RAD 1.0 CB +SPHERE CENTER 2.836000 20.316999 4.886000 RAD 1.0 CG1 +SPHERE CENTER 4.655000 20.930000 3.250000 RAD 1.0 CG2 +SPHERE CENTER 3.122000 18.813999 4.850000 RAD 1.0 CD1 +SPHERE CENTER 7.451000 21.372000 5.297000 RAD 1.0 N +SPHERE CENTER 8.602000 22.257000 5.060000 RAD 1.0 CA +SPHERE CENTER 9.150000 21.950001 3.673000 RAD 1.0 C +SPHERE CENTER 8.840000 20.896000 3.088000 RAD 1.0 O +SPHERE CENTER 9.698000 21.896999 6.092000 RAD 1.0 CB +SPHERE CENTER 9.226000 22.299999 7.493000 RAD 1.0 CG +SPHERE CENTER 9.248000 23.850000 7.622000 RAD 1.0 CD +SPHERE CENTER 8.810000 24.311001 8.962000 RAD 1.0 NE +SPHERE CENTER 9.575000 24.336000 10.075000 RAD 1.0 CZ +SPHERE CENTER 10.888000 24.077000 10.044000 RAD 1.0 NH1 +SPHERE CENTER 9.050000 24.893000 11.170000 RAD 1.0 NH2 +SPHERE CENTER 10.178000 22.695000 3.318000 RAD 1.0 N +SPHERE CENTER 10.959000 22.444000 2.085000 RAD 1.0 CA +SPHERE CENTER 12.407000 22.010000 2.386000 RAD 1.0 C +SPHERE CENTER 12.987000 22.511999 3.378000 RAD 1.0 O +SPHERE CENTER 10.997000 23.770000 1.282000 RAD 1.0 CB +SPHERE CENTER 9.641000 24.038000 0.627000 RAD 1.0 CG +SPHERE CENTER 8.639000 24.591999 1.399000 RAD 1.0 CD1 +SPHERE CENTER 9.451000 23.725000 -0.691000 RAD 1.0 CD2 +SPHERE CENTER 7.403000 24.861000 0.831000 RAD 1.0 CE1 +SPHERE CENTER 8.213000 23.993000 -1.249000 RAD 1.0 CE2 +SPHERE CENTER 7.215000 24.576000 -0.494000 RAD 1.0 CZ +SPHERE CENTER 5.879000 24.768999 -1.060000 RAD 1.0 OH +SPHERE CENTER 12.977000 21.141001 1.535000 RAD 1.0 N +SPHERE CENTER 14.449000 20.892000 1.626000 RAD 1.0 CA +SPHERE CENTER 15.018000 21.045000 0.237000 RAD 1.0 C +SPHERE CENTER 14.250000 20.837000 -0.740000 RAD 1.0 O +SPHERE CENTER 14.664000 19.434999 2.142000 RAD 1.0 CB +SPHERE CENTER 14.283000 18.275999 1.191000 RAD 1.0 CG +SPHERE CENTER 15.290000 17.639000 0.506000 RAD 1.0 CD1 +SPHERE CENTER 12.962000 17.907000 0.976000 RAD 1.0 CD2 +SPHERE CENTER 14.981000 16.632000 -0.392000 RAD 1.0 CE1 +SPHERE CENTER 12.638000 16.909000 0.061000 RAD 1.0 CE2 +SPHERE CENTER 13.673000 16.261999 -0.626000 RAD 1.0 CZ +SPHERE CENTER 16.336000 21.281000 0.152000 RAD 1.0 N +SPHERE CENTER 16.948000 21.292000 -1.153000 RAD 1.0 CA +SPHERE CENTER 17.365000 19.888000 -1.542000 RAD 1.0 C +SPHERE CENTER 18.009001 19.184000 -0.744000 RAD 1.0 O +SPHERE CENTER 18.188000 22.194000 -1.071000 RAD 1.0 CB +SPHERE CENTER 18.906000 22.263000 -2.442000 RAD 1.0 CG +SPHERE CENTER 20.089001 21.621000 -2.663000 RAD 1.0 CD1 +SPHERE CENTER 18.361000 23.033001 -3.436000 RAD 1.0 CD2 +SPHERE CENTER 20.733000 21.778999 -3.896000 RAD 1.0 CE1 +SPHERE CENTER 18.990999 23.184999 -4.662000 RAD 1.0 CE2 +SPHERE CENTER 20.184999 22.562000 -4.864000 RAD 1.0 CZ +SPHERE CENTER 20.826000 22.768000 -6.115000 RAD 1.0 OH +SPHERE CENTER 16.913000 19.452999 -2.726000 RAD 1.0 N +SPHERE CENTER 17.295000 18.160000 -3.291000 RAD 1.0 CA +SPHERE CENTER 18.406000 18.332001 -4.341000 RAD 1.0 C +SPHERE CENTER 18.166000 18.843000 -5.464000 RAD 1.0 O +SPHERE CENTER 16.052000 17.558001 -3.946000 RAD 1.0 CB +SPHERE CENTER 16.354000 16.226999 -4.626000 RAD 1.0 CG +SPHERE CENTER 17.531000 15.754000 -4.725000 RAD 1.0 OD1 +SPHERE CENTER 15.234000 15.549000 -4.870000 RAD 1.0 ND2 +SPHERE CENTER 19.655001 18.124001 -3.871000 RAD 1.0 N +SPHERE CENTER 20.851000 18.420000 -4.681000 RAD 1.0 CA +SPHERE CENTER 20.920000 17.650000 -6.010000 RAD 1.0 C +SPHERE CENTER 21.385000 18.257000 -6.997000 RAD 1.0 O +SPHERE CENTER 22.112000 18.070999 -3.866000 RAD 1.0 CB +SPHERE CENTER 20.333000 16.480000 -6.081000 RAD 1.0 N +SPHERE CENTER 20.243999 15.784000 -7.383000 RAD 1.0 CA +SPHERE CENTER 19.287001 16.482000 -8.327000 RAD 1.0 C +SPHERE CENTER 19.478001 16.368999 -9.556000 RAD 1.0 O +SPHERE CENTER 19.732000 14.353000 -7.259000 RAD 1.0 CB +SPHERE CENTER 20.799999 13.485000 -6.626000 RAD 1.0 CG +SPHERE CENTER 20.299000 12.037000 -6.533000 RAD 1.0 CD +SPHERE CENTER 21.386999 11.067000 -6.033000 RAD 1.0 CE +SPHERE CENTER 21.820999 11.437000 -4.681000 RAD 1.0 NZ +SPHERE CENTER 18.212999 17.041000 -7.772000 RAD 1.0 N +SPHERE CENTER 17.181999 17.617001 -8.631000 RAD 1.0 CA +SPHERE CENTER 17.468000 19.070000 -8.921000 RAD 1.0 C +SPHERE CENTER 16.909000 19.707001 -9.863000 RAD 1.0 O +SPHERE CENTER 15.833000 17.423000 -7.901000 RAD 1.0 CB +SPHERE CENTER 18.299000 19.622000 -8.061000 RAD 1.0 N +SPHERE CENTER 18.625999 21.035999 -8.237000 RAD 1.0 CA +SPHERE CENTER 17.587999 22.051001 -7.738000 RAD 1.0 C +SPHERE CENTER 17.702000 23.257999 -8.056000 RAD 1.0 O +SPHERE CENTER 16.632000 21.566000 -6.970000 RAD 1.0 N +SPHERE CENTER 15.576000 22.431999 -6.478000 RAD 1.0 CA +SPHERE CENTER 14.947000 21.879999 -5.199000 RAD 1.0 C +SPHERE CENTER 15.304000 20.784000 -4.719000 RAD 1.0 O +SPHERE CENTER 14.553000 22.764999 -7.568000 RAD 1.0 CB +SPHERE CENTER 14.018000 21.514000 -8.283000 RAD 1.0 CG +SPHERE CENTER 13.211000 20.593000 -7.394000 RAD 1.0 CD1 +SPHERE CENTER 13.189000 21.898001 -9.518000 RAD 1.0 CD2 +SPHERE CENTER 14.114000 22.691999 -4.605000 RAD 1.0 N +SPHERE CENTER 13.591000 22.299999 -3.306000 RAD 1.0 CA +SPHERE CENTER 12.246000 21.612000 -3.398000 RAD 1.0 C +SPHERE CENTER 11.508000 21.862000 -4.381000 RAD 1.0 O +SPHERE CENTER 13.406000 23.628000 -2.540000 RAD 1.0 CB +SPHERE CENTER 14.977000 24.433001 -2.196000 RAD 1.0 SG +SPHERE CENTER 12.005000 20.672001 -2.530000 RAD 1.0 N +SPHERE CENTER 10.813000 19.820999 -2.569000 RAD 1.0 CA +SPHERE CENTER 10.208000 19.822001 -1.167000 RAD 1.0 C +SPHERE CENTER 10.918000 20.218000 -0.210000 RAD 1.0 O +SPHERE CENTER 11.110000 18.377001 -3.007000 RAD 1.0 CB +SPHERE CENTER 11.604000 18.464001 -4.496000 RAD 1.0 CG +SPHERE CENTER 12.041000 17.093000 -4.992000 RAD 1.0 CD +SPHERE CENTER 12.104000 16.884001 -6.223000 RAD 1.0 OE1 +SPHERE CENTER 12.461000 16.246000 -4.115000 RAD 1.0 NE2 +SPHERE CENTER 8.983000 19.459000 -1.072000 RAD 1.0 N +SPHERE CENTER 8.377000 19.427999 0.280000 RAD 1.0 CA +SPHERE CENTER 8.573000 18.100000 0.950000 RAD 1.0 C +SPHERE CENTER 8.785000 17.013000 0.347000 RAD 1.0 O +SPHERE CENTER 6.844000 19.700001 0.273000 RAD 1.0 CB +SPHERE CENTER 6.304000 18.825001 -0.706000 RAD 1.0 OG1 +SPHERE CENTER 6.585000 21.149000 -0.177000 RAD 1.0 CG2 +SPHERE CENTER 8.526000 18.187000 2.280000 RAD 1.0 N +SPHERE CENTER 8.582000 16.999001 3.087000 RAD 1.0 CA +SPHERE CENTER 7.801000 17.273001 4.382000 RAD 1.0 C +SPHERE CENTER 7.554000 18.469000 4.665000 RAD 1.0 O +SPHERE CENTER 10.066000 16.503000 3.399000 RAD 1.0 CB +SPHERE CENTER 10.840000 17.323999 4.462000 RAD 1.0 CG +SPHERE CENTER 11.188000 16.711000 5.670000 RAD 1.0 CD1 +SPHERE CENTER 11.224000 18.618999 4.188000 RAD 1.0 CD2 +SPHERE CENTER 11.912000 17.452999 6.617000 RAD 1.0 CE1 +SPHERE CENTER 11.948000 19.333000 5.129000 RAD 1.0 CE2 +SPHERE CENTER 12.277000 18.763000 6.344000 RAD 1.0 CZ +SPHERE CENTER 7.455000 16.219999 5.116000 RAD 1.0 N +SPHERE CENTER 6.756000 16.414000 6.390000 RAD 1.0 CA +SPHERE CENTER 7.798000 16.358999 7.491000 RAD 1.0 C +SPHERE CENTER 8.422000 15.296000 7.692000 RAD 1.0 O +SPHERE CENTER 5.716000 15.281000 6.557000 RAD 1.0 CB +SPHERE CENTER 4.973000 15.432000 7.882000 RAD 1.0 CG1 +SPHERE CENTER 4.667000 15.326000 5.371000 RAD 1.0 CG2 +SPHERE CENTER 7.953000 17.509001 8.095000 RAD 1.0 N +SPHERE CENTER 8.816000 17.659000 9.286000 RAD 1.0 CA +SPHERE CENTER 7.941000 17.294001 10.498000 RAD 1.0 C +SPHERE CENTER 6.818000 17.832001 10.661000 RAD 1.0 O +SPHERE CENTER 9.260000 19.136000 9.274000 RAD 1.0 CB +SPHERE CENTER 10.066000 19.506001 10.540000 RAD 1.0 CG +SPHERE CENTER 11.058000 18.667999 11.032000 RAD 1.0 CD1 +SPHERE CENTER 9.728000 20.677999 11.181000 RAD 1.0 CD2 +SPHERE CENTER 11.713000 19.021999 12.217000 RAD 1.0 CE1 +SPHERE CENTER 10.401000 21.042000 12.346000 RAD 1.0 CE2 +SPHERE CENTER 11.371000 20.211000 12.851000 RAD 1.0 CZ +SPHERE CENTER 12.040000 20.579000 14.049000 RAD 1.0 OH +SPHERE CENTER 8.505000 16.504999 11.400000 RAD 1.0 N +SPHERE CENTER 7.774000 16.076000 12.622000 RAD 1.0 CA +SPHERE CENTER 7.696000 17.099001 13.728000 RAD 1.0 C +SPHERE CENTER 6.978000 16.834999 14.718000 RAD 1.0 O +SPHERE CENTER 8.385000 18.202000 13.646000 RAD 1.0 N +SPHERE CENTER 8.275000 19.365999 14.533000 RAD 1.0 CA +SPHERE CENTER 9.338000 19.430000 15.620000 RAD 1.0 C +SPHERE CENTER 9.309000 20.379999 16.415001 RAD 1.0 O +SPHERE CENTER 10.317000 18.555000 15.610000 RAD 1.0 N +SPHERE CENTER 11.453000 18.707001 16.541000 RAD 1.0 CA +SPHERE CENTER 12.763000 18.232000 15.950000 RAD 1.0 C +SPHERE CENTER 12.753000 17.224001 15.201000 RAD 1.0 O +SPHERE CENTER 11.179000 18.055000 17.937000 RAD 1.0 CB +SPHERE CENTER 11.154000 16.283001 17.922001 RAD 1.0 SG +SPHERE CENTER 13.828000 18.788000 16.528999 RAD 1.0 N +SPHERE CENTER 15.222000 18.386999 16.261999 RAD 1.0 CA +SPHERE CENTER 15.644000 18.605000 14.798000 RAD 1.0 C +SPHERE CENTER 16.306000 17.708000 14.224000 RAD 1.0 O +SPHERE CENTER 15.486000 16.941000 16.719000 RAD 1.0 CB +SPHERE CENTER 14.949000 16.624001 18.146999 RAD 1.0 CG +SPHERE CENTER 15.484000 17.593000 19.195000 RAD 1.0 CD +SPHERE CENTER 15.081000 17.068001 20.497000 RAD 1.0 NE +SPHERE CENTER 15.268000 17.830999 21.573999 RAD 1.0 CZ +SPHERE CENTER 15.870000 19.020000 21.452999 RAD 1.0 NH1 +SPHERE CENTER 14.930000 17.320999 22.753000 RAD 1.0 NH2 +SPHERE CENTER 15.154000 19.670000 14.180000 RAD 1.0 N +SPHERE CENTER 15.461000 19.893999 12.733000 RAD 1.0 CA +SPHERE CENTER 16.969000 19.924000 12.482000 RAD 1.0 C +SPHERE CENTER 17.752001 20.431000 13.327000 RAD 1.0 O +SPHERE CENTER 14.918000 21.275000 12.366000 RAD 1.0 CB +SPHERE CENTER 17.282000 19.622000 11.271000 RAD 1.0 N +SPHERE CENTER 18.584999 19.886999 10.687000 RAD 1.0 CA +SPHERE CENTER 18.461000 21.087000 9.753000 RAD 1.0 C +SPHERE CENTER 17.371000 21.708000 9.790000 RAD 1.0 O +SPHERE CENTER 18.961000 18.612000 9.934000 RAD 1.0 CB +SPHERE CENTER 19.486000 17.514999 10.843000 RAD 1.0 CG +SPHERE CENTER 20.042999 16.424999 9.926000 RAD 1.0 CD +SPHERE CENTER 20.782000 15.386000 10.779000 RAD 1.0 CE +SPHERE CENTER 20.985001 14.137000 10.021000 RAD 1.0 NZ +SPHERE CENTER 19.577000 21.643999 9.215000 RAD 1.0 N +SPHERE CENTER 19.570999 22.903000 8.543000 RAD 1.0 CA +SPHERE CENTER 18.898001 22.847000 7.144000 RAD 1.0 C +SPHERE CENTER 18.476000 23.930000 6.690000 RAD 1.0 O +SPHERE CENTER 20.981001 23.469999 8.429000 RAD 1.0 CB +SPHERE CENTER 21.461000 24.047001 9.786000 RAD 1.0 CG +SPHERE CENTER 22.614000 25.047001 9.608000 RAD 1.0 CD +SPHERE CENTER 22.118999 26.403999 9.384000 RAD 1.0 NE +SPHERE CENTER 22.948000 27.426001 9.370000 RAD 1.0 CZ +SPHERE CENTER 24.253000 27.187000 9.415000 RAD 1.0 NH1 +SPHERE CENTER 22.472000 28.634001 9.297000 RAD 1.0 NH2 +SPHERE CENTER 18.870001 21.715000 6.474000 RAD 1.0 N +SPHERE CENTER 18.209999 21.712999 5.169000 RAD 1.0 CA +SPHERE CENTER 16.671000 21.559000 5.372000 RAD 1.0 C +SPHERE CENTER 16.068001 20.466000 5.197000 RAD 1.0 O +SPHERE CENTER 18.745001 20.506001 4.379000 RAD 1.0 CB +SPHERE CENTER 18.295000 20.591999 2.909000 RAD 1.0 CG +SPHERE CENTER 17.721001 21.629000 2.499000 RAD 1.0 OD1 +SPHERE CENTER 18.664000 19.563999 2.134000 RAD 1.0 ND2 +SPHERE CENTER 16.097000 22.643000 5.820000 RAD 1.0 N +SPHERE CENTER 14.676000 22.662001 6.349000 RAD 1.0 CA +SPHERE CENTER 14.157000 24.101999 6.384000 RAD 1.0 C +SPHERE CENTER 14.715000 24.959000 7.120000 RAD 1.0 O +SPHERE CENTER 14.577000 21.951000 7.736000 RAD 1.0 CB +SPHERE CENTER 13.128000 21.861000 8.301000 RAD 1.0 CG +SPHERE CENTER 12.432000 22.889000 8.208000 RAD 1.0 OD1 +SPHERE CENTER 12.975000 21.035000 9.288000 RAD 1.0 ND2 +SPHERE CENTER 13.324000 24.438000 5.381000 RAD 1.0 N +SPHERE CENTER 12.918000 25.816999 5.120000 RAD 1.0 CA +SPHERE CENTER 11.388000 25.961000 5.164000 RAD 1.0 C +SPHERE CENTER 10.669000 24.966000 4.915000 RAD 1.0 O +SPHERE CENTER 13.372000 26.372999 3.741000 RAD 1.0 CB +SPHERE CENTER 14.913000 26.191999 3.701000 RAD 1.0 CG +SPHERE CENTER 15.492000 25.002001 3.268000 RAD 1.0 CD1 +SPHERE CENTER 15.705000 27.252001 4.053000 RAD 1.0 CD2 +SPHERE CENTER 16.877001 24.881001 3.132000 RAD 1.0 CE1 +SPHERE CENTER 17.108999 27.125999 3.941000 RAD 1.0 CE2 +SPHERE CENTER 17.659000 25.957001 3.487000 RAD 1.0 CZ +SPHERE CENTER 10.949000 27.146999 5.460000 RAD 1.0 N +SPHERE CENTER 9.480000 27.343000 5.498000 RAD 1.0 CA +SPHERE CENTER 8.875000 27.670000 4.157000 RAD 1.0 C +SPHERE CENTER 7.634000 27.622999 4.057000 RAD 1.0 O +SPHERE CENTER 9.045000 28.475000 6.433000 RAD 1.0 CB +SPHERE CENTER 9.258000 27.945999 7.875000 RAD 1.0 CG +SPHERE CENTER 9.119000 29.052000 8.948000 RAD 1.0 CD +SPHERE CENTER 10.025000 28.736000 10.167000 RAD 1.0 CE +SPHERE CENTER 9.826000 29.728001 11.231000 RAD 1.0 NZ +SPHERE CENTER 9.687000 27.909000 3.152000 RAD 1.0 N +SPHERE CENTER 9.124000 28.167999 1.840000 RAD 1.0 CA +SPHERE CENTER 10.108000 27.719000 0.765000 RAD 1.0 C +SPHERE CENTER 11.332000 27.660000 1.047000 RAD 1.0 O +SPHERE CENTER 8.778000 29.648001 1.642000 RAD 1.0 CB +SPHERE CENTER 10.000000 30.391001 1.484000 RAD 1.0 OG +SPHERE CENTER 9.604000 27.471001 -0.422000 RAD 1.0 N +SPHERE CENTER 10.526000 27.160999 -1.512000 RAD 1.0 CA +SPHERE CENTER 11.423000 28.346001 -1.863000 RAD 1.0 C +SPHERE CENTER 12.634000 28.115000 -2.136000 RAD 1.0 O +SPHERE CENTER 9.782000 26.679001 -2.783000 RAD 1.0 CB +SPHERE CENTER 10.966000 29.570000 -1.682000 RAD 1.0 N +SPHERE CENTER 11.751000 30.764000 -1.998000 RAD 1.0 CA +SPHERE CENTER 12.900000 30.964001 -1.040000 RAD 1.0 C +SPHERE CENTER 14.032000 31.282000 -1.463000 RAD 1.0 O +SPHERE CENTER 10.871000 32.021999 -2.024000 RAD 1.0 CB +SPHERE CENTER 9.868000 32.069000 -3.200000 RAD 1.0 CG +SPHERE CENTER 8.525000 31.417000 -2.847000 RAD 1.0 CD +SPHERE CENTER 7.573000 31.562000 -3.638000 RAD 1.0 OE1 +SPHERE CENTER 8.368000 30.636999 -1.865000 RAD 1.0 OE2 +SPHERE CENTER 12.658000 30.686001 0.225000 RAD 1.0 N +SPHERE CENTER 13.804000 30.775000 1.163000 RAD 1.0 CA +SPHERE CENTER 14.824000 29.667000 0.941000 RAD 1.0 C +SPHERE CENTER 16.058001 29.903999 1.049000 RAD 1.0 O +SPHERE CENTER 13.347000 30.500000 2.601000 RAD 1.0 CB +SPHERE CENTER 12.813000 31.775999 3.236000 RAD 1.0 CG +SPHERE CENTER 12.716000 32.875000 2.613000 RAD 1.0 OD1 +SPHERE CENTER 12.096000 31.598000 4.247000 RAD 1.0 OD2 +SPHERE CENTER 14.305000 28.478001 0.644000 RAD 1.0 N +SPHERE CENTER 15.128000 27.301001 0.379000 RAD 1.0 CA +SPHERE CENTER 16.006001 27.523001 -0.852000 RAD 1.0 C +SPHERE CENTER 17.247999 27.267000 -0.809000 RAD 1.0 O +SPHERE CENTER 14.238000 26.045000 0.259000 RAD 1.0 CB +SPHERE CENTER 15.047000 24.530001 -0.176000 RAD 1.0 SG +SPHERE CENTER 15.384000 28.062000 -1.870000 RAD 1.0 N +SPHERE CENTER 16.191999 28.302000 -3.048000 RAD 1.0 CA +SPHERE CENTER 17.171000 29.452999 -2.841000 RAD 1.0 C +SPHERE CENTER 18.246000 29.474001 -3.490000 RAD 1.0 O +SPHERE CENTER 15.267000 28.570999 -4.266000 RAD 1.0 CB +SPHERE CENTER 14.634000 27.261000 -4.708000 RAD 1.0 CG +SPHERE CENTER 15.759000 25.962000 -5.253000 RAD 1.0 SD +SPHERE CENTER 16.306999 26.625000 -6.805000 RAD 1.0 CE +SPHERE CENTER 16.775999 30.469999 -2.099000 RAD 1.0 N +SPHERE CENTER 17.652000 31.617001 -1.869000 RAD 1.0 CA +SPHERE CENTER 18.910000 31.125999 -1.141000 RAD 1.0 C +SPHERE CENTER 20.049999 31.469999 -1.556000 RAD 1.0 O +SPHERE CENTER 16.934000 32.595001 -0.930000 RAD 1.0 CB +SPHERE CENTER 17.721001 33.839001 -0.540000 RAD 1.0 CG +SPHERE CENTER 16.740999 35.039001 -0.291000 RAD 1.0 CD +SPHERE CENTER 15.472000 34.667999 0.404000 RAD 1.0 NE +SPHERE CENTER 14.256000 34.889999 -0.074000 RAD 1.0 CZ +SPHERE CENTER 13.983000 35.465000 -1.233000 RAD 1.0 NH1 +SPHERE CENTER 13.260000 34.542999 0.660000 RAD 1.0 NH2 +SPHERE CENTER 18.726999 30.198999 -0.237000 RAD 1.0 N +SPHERE CENTER 19.889999 29.693001 0.496000 RAD 1.0 CA +SPHERE CENTER 20.636999 28.649000 -0.297000 RAD 1.0 C +SPHERE CENTER 21.871000 28.686001 -0.287000 RAD 1.0 O +SPHERE CENTER 19.416000 29.106001 1.823000 RAD 1.0 CB +SPHERE CENTER 18.643999 30.132000 2.537000 RAD 1.0 OG1 +SPHERE CENTER 20.615999 28.506001 2.662000 RAD 1.0 CG2 +SPHERE CENTER 19.988001 27.747000 -0.961000 RAD 1.0 N +SPHERE CENTER 20.669001 26.563999 -1.471000 RAD 1.0 CA +SPHERE CENTER 20.773001 26.534000 -2.963000 RAD 1.0 C +SPHERE CENTER 21.341000 25.552999 -3.498000 RAD 1.0 O +SPHERE CENTER 19.955999 25.260000 -1.056000 RAD 1.0 CB +SPHERE CENTER 20.128000 24.914000 0.713000 RAD 1.0 SG +SPHERE CENTER 20.132000 27.441999 -3.608000 RAD 1.0 N +SPHERE CENTER 19.987000 27.268000 -5.071000 RAD 1.0 CA +SPHERE CENTER 21.257000 27.575001 -5.849000 RAD 1.0 C +SPHERE CENTER 21.386000 27.129000 -7.018000 RAD 1.0 O +SPHERE CENTER 22.225000 28.049999 -5.113000 RAD 1.0 N +SPHERE CENTER 23.639000 28.131001 -5.505000 RAD 1.0 CA +SPHERE CENTER 23.886999 29.393000 -6.316000 RAD 1.0 C +SPHERE CENTER 22.948999 30.065001 -6.822000 RAD 1.0 O +SPHERE CENTER 25.146000 29.681000 -6.493000 RAD 1.0 N +SPHERE CENTER 25.617001 30.840000 -7.256000 RAD 1.0 CA +SPHERE CENTER 25.247999 30.735001 -8.729000 RAD 1.0 C +SPHERE CENTER 24.962000 31.791000 -9.369000 RAD 1.0 O +SPHERE CENTER 27.160000 30.980000 -7.146000 RAD 1.0 CB +SPHERE CENTER 24.919001 29.594000 -9.172000 RAD 1.0 OXT + +PLANE + CENTER 0.0 -25.0 0.0 + NORMAL 0.0 1.0 0.0 + TEXTURE + AMBIENT 0.1 DIFFUSE 0.9 SPECULAR 0.0 OPACITY 1.0 + COLOR 1.0 1.0 1.0 + TEXFUNC 0 + +END_SCENE diff --git a/examples/parallel_for/tachyon/index.html b/examples/parallel_for/tachyon/index.html new file mode 100644 index 0000000000..b693f90739 --- /dev/null +++ b/examples/parallel_for/tachyon/index.html @@ -0,0 +1,220 @@ + + + +

    Overview

    +Parallel raytracer / renderer that demonstrates the use of parallel_for. + +

    +This example includes software developed by John E. Stone. See +here for copyright information. +

    + +

    +This example is a 2-D raytracer/renderer that visually shows different parallel scheduling +methods and their resulting speedup. The code was parallelized by speculating +that each pixel could be rendered in parallel. The resulting parallel code was +then checked for correctness by using Intel® Thread Checker, which +pointed out where synchronization was needed. Minimal synchronization was then +inserted into the parallel code. The resulting parallel code exhibits good speedup. +

    + +

    +The following versions of the example are provided: +

    +
    serial +
    Original sequential version. +
    tbb1d +
    Parallel version that uses Intel® Threading Building Blocks (Intel® TBB) and blocked_range to parallelize + over tasks that are groups of scan-lines. +
      +
    • By default, this version uses one thread per available processor. To change this + default, set the TBB_NUM_THREADS environment variable to the desired number of threads before running. +
    • This version uses the preview feature: auto_range_partitioner. No grain size is provided to blocked_range. + The blocked_range class uses a default grain size of 1 when none is provided. However, the auto_range_partitioner + controls the amount of range splitting dynamically at runtime, resulting in sub-ranges of varying sizes. +
    +
    tbb +
    Parallel version that uses Intel TBB and blocked_range2d to parallelize + over tasks that are rectangular sub-areas. +
      +
    • By default, this version uses one thread per available processor. To change this + default, set the TBB_NUM_THREADS environment variable to the desired number of threads before running. +
    • This version uses a reasonable task grain size by default. To change this default, + set the TBB_GRAINSIZE environment variable to the desired grain size before running. + The grain size corresponds to the number of pixels (in the X or Y direction, for a + rectangular sub-area) in each parallel task. +
    +
    +

    + +

    Files

    +
    +
    src/main.cpp +
    Main program which parses command line options and runs the raytracer. +
    src/tachyon_video.cpp +
    Source code for GUI interfaces. +
    src/trace.serial.cpp +
    Source code for original sequential version of example. +
    src/trace.tbb1d.cpp +
    Source code for Intel TBB blocked_range (scan-line) version of example. +
    src/trace.tbb.cpp +
    Source code for Intel TBB blocked_range2d (rectangular sub-area) version of example. +
    (src/*.cpp) +
    Remainder of source code for example. +
    (src/*.h) +
    Remainder of include files for example. +
    Makefile +
    Makefile for building example. +
    + +

    Directories

    +
    +
    src +
    Contains source code and include files for the example. +
    dat +
    Contains data sets for running the example. +
    msvs +
    Contains Microsoft* Visual Studio* 2010 workspace for building and running the + example (Windows* systems only).
    xcode +
    Contains Xcode* IDE workspace for building and running the example (OS X* + systems only). +android +
    Contains Eclipse* IDE workspace for building and running the example on Android* system. JNI part needs to be compiled by Android NDK.
    + + +

    To Build

    +General build directions can be found here. + +

    +For Windows* systems Microsoft* Visual Studio* projects are provided for each of the above + example versions. +

    + +

    +The Makefile supports the following build targets (in addition to the general ones). +Here, <version> is one of the above versions of the example, i.e., {serial, tbb1d, tbb}. +

    +
    +
    make <version>[_debug] +
    Build and run a single version (release or debug). + Equivalent to 'make build_<version>[_debug] run_<version>'. +
    make build_<version>[_debug] +
    Compile and link a single version (release or debug). + The resulting executable is left in the directory for the example. +
    make run_<version> +
    Run a single version previously produced by one of the above commands. +
    make [(above options or targets)] DATASET={820spheres, balls, balls3, lattice, model2, + teapot, trypsin4pti} +
    Build and run as above, but run with the specified data set. +
    make [(above options or targets)] ARGS=-D +
    Build and run as above, but run with disabled run-time display updating for use in making performance measurements + (strongly recommended when measuring performance or scalability; see note below). +
    make [(above options or targets)] UI={con, gdi, d2d, x, mac} +
    Build and run as usual, but build with the specified GUI driver: console, GDI+*, Direct2D*, X11, or OpenGL* + (see the description of the common GUI code + for more information on available graphics support). + For Linux* and OS X* systems, the best available driver is detected automatically by the Makefile. + For Windows* systems, UI=gdi is the default GUI driver; compiling with UI=d2d may offer superior + performance, but can only be used if the Microsoft* DirectX* SDK is installed on your system. + Use UI=con to build without the GUI for use in making performance measurements + (strongly recommended when measuring performance or scalability; see note below). +
    make [(above options or targets)] XARCH=x64 +
    Build and run as above, but + also specify XARCH=x64 (or XARCH=AMD64 for older compilers) when building the example on Windows* as a 64-bit binary. +
    make [(above options or targets)] DDLIB_DIR=<specify path to library directory of Direct Draw* SDK here> +
    If you experience ddraw.lib linking problems, specify the correct library directory via this option. +
    + +

    Usage

    +Building via the above make commands, or via Visual Studio projects on Windows* systems, produces executable files +named tachyon.<version>.exe. To run these executables directly, use one or more of the following commands. +
    +
    tachyon.<version> -h +
    Prints the help for command line options +
    tachyon.<version> [dataset=value] [boundthresh=value] [no-display-updating] [nobounding] [silent] +
    tachyon.<version> [dataset [boundthresh]] [no-display-updating] [nobounding] [silent] +
    dataset is the path/name of one of the *.dat files in the dat directory for the example.
    + boundthresh is a bounding threshold value.
    + no-display-updating - disable run-time display updating.
    + no-bounding - disable bounding technique.
    + silent - no output except elapsed time.
    +
    tachyon.<version> [dataset] [no-display-updating] +
    Run this version (release or debug), but run with disabled run-time display updating + for use in making performance measurements + (strongly recommended when measuring performance or scalability; see note below). +
    To run a short version of this example, e.g., for use with Intel® Parallel Inspector: +
    Build a debug version of the tbb example with the GUI turned off + (e.g., make UI=con tbb_debug; see also the build directions above). +
    Run it with a small dataset, e.g., tachyon.tbb.exe dat/820spheres.dat no-display-updating. +
    + +

    Keys

    +While running with the GUI display turned on the following keyboard keys can be used: +
    +
    ESC +
    Interrupt the rendering and exit +
    Any key +
    Enable repetition of rendering after the pause. Press ESC to stop the application. +
    Space +
    Toggle run-time display updating mode while rendering (see no-display-updating above). +
    p +
    Holds the picture after rendering completion. Press 'p' again to continue. +
    + +

    Notes

    +
      +
    • While running with the GUI display turned on should yield reasonable performance in most cases, running with the GUI + display turned off is strongly recommended in order to demonstrate the full performance and scalability of the example. +
    + + + +
    +Up to parent directory +

    +Copyright © 2005-2015 Intel Corporation. All Rights Reserved. +

    +Intel is a registered trademark or trademark of Intel Corporation +or its subsidiaries in the United States and other countries. +

    +* Other names and brands may be claimed as the property of others. + + +

    +The original source for this example is +Copyright (c) 1994-2008 John E. Stone +All rights reserved. +

    + +

    +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +

      +
    1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +
    2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +
    3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. +
    +

    + +

    +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. +

    +
    + + + diff --git a/examples/parallel_for/tachyon/msvs/gui.ico b/examples/parallel_for/tachyon/msvs/gui.ico new file mode 100644 index 0000000000..d551aa3aaf Binary files /dev/null and b/examples/parallel_for/tachyon/msvs/gui.ico differ diff --git a/examples/parallel_for/tachyon/msvs/gui.rc b/examples/parallel_for/tachyon/msvs/gui.rc new file mode 100644 index 0000000000..5a13d046b9 --- /dev/null +++ b/examples/parallel_for/tachyon/msvs/gui.rc @@ -0,0 +1,90 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#define APSTUDIO_HIDDEN_SYMBOLS +#include "windows.h" +#undef APSTUDIO_HIDDEN_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_GUI ICON "gui.ico" +IDI_SMALL ICON "small.ico" + + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#include ""windows.h""\r\n" + "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE +BEGIN + IDS_APP_TITLE "gui" + IDC_GUI "GUI" +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/examples/parallel_for/tachyon/msvs/resource.h b/examples/parallel_for/tachyon/msvs/resource.h new file mode 100644 index 0000000000..5f70f0cea5 --- /dev/null +++ b/examples/parallel_for/tachyon/msvs/resource.h @@ -0,0 +1,8 @@ +#define IDC_MYICON 2 +#define IDD_GUI 102 +#define IDS_APP_TITLE 103 +#define IDI_GUI 107 +#define IDI_SMALL 108 +#define IDC_GUI 109 +#define IDR_MAINFRAME 128 +#define IDC_STATIC -1 diff --git a/examples/parallel_for/tachyon/msvs/small.ico b/examples/parallel_for/tachyon/msvs/small.ico new file mode 100644 index 0000000000..d551aa3aaf Binary files /dev/null and b/examples/parallel_for/tachyon/msvs/small.ico differ diff --git a/examples/parallel_for/tachyon/msvs/tachyon.serial.vcxproj b/examples/parallel_for/tachyon/msvs/tachyon.serial.vcxproj new file mode 100644 index 0000000000..f4652219af --- /dev/null +++ b/examples/parallel_for/tachyon/msvs/tachyon.serial.vcxproj @@ -0,0 +1,385 @@ + + + + + DDDebug + Win32 + + + DDDebug + x64 + + + DDRelease + Win32 + + + DDRelease + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {924517DF-2B6A-47D5-8A11-CC047CC4D8E9} + tachyon.serial + Win32Proj + + + + + Application + MultiByte + + + Application + MultiByte + true + true + + + Application + MultiByte + true + true + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + true + true + + + Application + MultiByte + true + true + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\serial\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\serial\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\serial\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\serial\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\serial\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\serial\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\serial\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\serial\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\serial\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\serial\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\serial\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\serial\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\serial\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\serial\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\serial\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\serial\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + true + Speed + true + false + WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + StreamingSIMDExtensions2 + + + $(IntDir)%(Filename).pdb + Level2 + ProgramDatabase + + + true + Windows + UseLinkTimeCodeGeneration + MachineX86 + false + + + + + X64 + + + Disabled + true + Speed + true + false + WIN64;_WINDOWS;_DEBUG;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + + + $(IntDir)%(Filename).pdb + Level2 + ProgramDatabase + + + true + Windows + UseLinkTimeCodeGeneration + MachineX64 + false + + + + + true + Speed + true + true + WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions) + MultiThreadedDLL + StreamingSIMDExtensions2 + + + $(IntDir)%(Filename).pdb + Level2 + ProgramDatabase + + + true + Windows + true + true + MachineX86 + false + + + + + X64 + + + true + Speed + true + true + WIN64;_WINDOWS;NDEBUG;%(PreprocessorDefinitions) + MultiThreadedDLL + + + $(IntDir)%(Filename).pdb + Level2 + ProgramDatabase + + + true + Windows + true + true + MachineX64 + false + + + + + true + Speed + true + true + WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions) + MultiThreadedDLL + StreamingSIMDExtensions2 + + + $(IntDir)%(Filename).pdb + Level2 + ProgramDatabase + + + $(DXSDK_DIR)\lib\x86;%(AdditionalLibraryDirectories) + true + Windows + true + true + MachineX86 + false + + + + + X64 + + + true + Speed + true + true + WIN64;_WINDOWS;NDEBUG;%(PreprocessorDefinitions) + MultiThreadedDLL + + + $(IntDir)%(Filename).pdb + Level2 + ProgramDatabase + + + $(DXSDK_DIR)\lib\x64;%(AdditionalLibraryDirectories) + true + Windows + true + true + MachineX64 + false + + + + + Disabled + true + Speed + true + false + WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + StreamingSIMDExtensions2 + + + $(IntDir)%(Filename).pdb + Level2 + ProgramDatabase + + + $(DXSDK_DIR)\lib\x86;%(AdditionalLibraryDirectories) + true + Windows + UseLinkTimeCodeGeneration + MachineX86 + false + + + + + X64 + + + Disabled + true + Speed + true + false + WIN64;_WINDOWS;_DEBUG;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + + + $(IntDir)%(Filename).pdb + Level2 + ProgramDatabase + + + $(DXSDK_DIR)\lib\x64;%(AdditionalLibraryDirectories) + true + Windows + UseLinkTimeCodeGeneration + MachineX64 + false + + + + + {924517df-2b6a-47d5-8a11-cc247cc4d810} + false + false + true + + + + + + + + + \ No newline at end of file diff --git a/examples/parallel_for/tachyon/msvs/tachyon.sln b/examples/parallel_for/tachyon/msvs/tachyon.sln new file mode 100644 index 0000000000..7c1b076042 --- /dev/null +++ b/examples/parallel_for/tachyon/msvs/tachyon.sln @@ -0,0 +1,92 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tachyon.tbb", "tachyon.tbb.vcxproj", "{6E9B1702-78E0-4D64-B771-8B274D963B58}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tachyon.common", "tachyon.vcxproj", "{924517DF-2B6A-47D5-8A11-CC247CC4D810}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tachyon.serial", "tachyon.serial.vcxproj", "{924517DF-2B6A-47D5-8A11-CC047CC4D8E9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tachyon.tbb1d", "tachyon.tbb1d.vcxproj", "{924517DF-2B6A-47D5-8A11-CC347CC4D8E9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + _GDI Release|Win32 = _GDI Release|Win32 + _GDI Release|x64 = _GDI Release|x64 + DD Debug|Win32 = DD Debug|Win32 + DD Debug|x64 = DD Debug|x64 + DD Release|Win32 = DD Release|Win32 + DD Release|x64 = DD Release|x64 + GDI Debug|Win32 = GDI Debug|Win32 + GDI Debug|x64 = GDI Debug|x64 + Description = Tachyon ray-tracer example + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6E9B1702-78E0-4D64-B771-8B274D963B58}._GDI Release|Win32.ActiveCfg = Release|Win32 + {6E9B1702-78E0-4D64-B771-8B274D963B58}._GDI Release|Win32.Build.0 = Release|Win32 + {6E9B1702-78E0-4D64-B771-8B274D963B58}._GDI Release|x64.ActiveCfg = Release|x64 + {6E9B1702-78E0-4D64-B771-8B274D963B58}._GDI Release|x64.Build.0 = Release|x64 + {6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Debug|Win32.ActiveCfg = DDDebug|Win32 + {6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Debug|Win32.Build.0 = DDDebug|Win32 + {6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Debug|x64.ActiveCfg = DDDebug|x64 + {6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Debug|x64.Build.0 = DDDebug|x64 + {6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Release|Win32.ActiveCfg = DDRelease|Win32 + {6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Release|Win32.Build.0 = DDRelease|Win32 + {6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Release|x64.ActiveCfg = DDRelease|x64 + {6E9B1702-78E0-4D64-B771-8B274D963B58}.DD Release|x64.Build.0 = DDRelease|x64 + {6E9B1702-78E0-4D64-B771-8B274D963B58}.GDI Debug|Win32.ActiveCfg = Debug|Win32 + {6E9B1702-78E0-4D64-B771-8B274D963B58}.GDI Debug|Win32.Build.0 = Debug|Win32 + {6E9B1702-78E0-4D64-B771-8B274D963B58}.GDI Debug|x64.ActiveCfg = Debug|x64 + {6E9B1702-78E0-4D64-B771-8B274D963B58}.GDI Debug|x64.Build.0 = Debug|x64 + {924517DF-2B6A-47D5-8A11-CC247CC4D810}._GDI Release|Win32.ActiveCfg = Release|Win32 + {924517DF-2B6A-47D5-8A11-CC247CC4D810}._GDI Release|Win32.Build.0 = Release|Win32 + {924517DF-2B6A-47D5-8A11-CC247CC4D810}._GDI Release|x64.ActiveCfg = Release|x64 + {924517DF-2B6A-47D5-8A11-CC247CC4D810}._GDI Release|x64.Build.0 = Release|x64 + {924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Debug|Win32.ActiveCfg = DDDebug|Win32 + {924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Debug|Win32.Build.0 = DDDebug|Win32 + {924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Debug|x64.ActiveCfg = DDDebug|x64 + {924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Debug|x64.Build.0 = DDDebug|x64 + {924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Release|Win32.ActiveCfg = DDRelease|Win32 + {924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Release|Win32.Build.0 = DDRelease|Win32 + {924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Release|x64.ActiveCfg = DDRelease|x64 + {924517DF-2B6A-47D5-8A11-CC247CC4D810}.DD Release|x64.Build.0 = DDRelease|x64 + {924517DF-2B6A-47D5-8A11-CC247CC4D810}.GDI Debug|Win32.ActiveCfg = Debug|Win32 + {924517DF-2B6A-47D5-8A11-CC247CC4D810}.GDI Debug|Win32.Build.0 = Debug|Win32 + {924517DF-2B6A-47D5-8A11-CC247CC4D810}.GDI Debug|x64.ActiveCfg = Debug|x64 + {924517DF-2B6A-47D5-8A11-CC247CC4D810}.GDI Debug|x64.Build.0 = Debug|x64 + {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}._GDI Release|Win32.ActiveCfg = Release|Win32 + {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}._GDI Release|Win32.Build.0 = Release|Win32 + {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}._GDI Release|x64.ActiveCfg = Release|x64 + {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}._GDI Release|x64.Build.0 = Release|x64 + {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Debug|Win32.ActiveCfg = DDDebug|Win32 + {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Debug|Win32.Build.0 = DDDebug|Win32 + {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Debug|x64.ActiveCfg = DDDebug|x64 + {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Debug|x64.Build.0 = DDDebug|x64 + {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Release|Win32.ActiveCfg = DDRelease|Win32 + {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Release|Win32.Build.0 = DDRelease|Win32 + {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Release|x64.ActiveCfg = DDRelease|x64 + {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.DD Release|x64.Build.0 = DDRelease|x64 + {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.GDI Debug|Win32.ActiveCfg = Debug|Win32 + {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.GDI Debug|Win32.Build.0 = Debug|Win32 + {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.GDI Debug|x64.ActiveCfg = Debug|x64 + {924517DF-2B6A-47D5-8A11-CC047CC4D8E9}.GDI Debug|x64.Build.0 = Debug|x64 + {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}._GDI Release|Win32.ActiveCfg = Release|Win32 + {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}._GDI Release|Win32.Build.0 = Release|Win32 + {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}._GDI Release|x64.ActiveCfg = Release|x64 + {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}._GDI Release|x64.Build.0 = Release|x64 + {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Debug|Win32.ActiveCfg = DDDebug|Win32 + {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Debug|Win32.Build.0 = DDDebug|Win32 + {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Debug|x64.ActiveCfg = DDDebug|x64 + {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Debug|x64.Build.0 = DDDebug|x64 + {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Release|Win32.ActiveCfg = DDRelease|Win32 + {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Release|Win32.Build.0 = DDRelease|Win32 + {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Release|x64.ActiveCfg = DDRelease|x64 + {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.DD Release|x64.Build.0 = DDRelease|x64 + {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.GDI Debug|Win32.ActiveCfg = Debug|Win32 + {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.GDI Debug|Win32.Build.0 = Debug|Win32 + {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.GDI Debug|x64.ActiveCfg = Debug|x64 + {924517DF-2B6A-47D5-8A11-CC347CC4D8E9}.GDI Debug|x64.Build.0 = Debug|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/examples/parallel_for/tachyon/msvs/tachyon.tbb.vcxproj b/examples/parallel_for/tachyon/msvs/tachyon.tbb.vcxproj new file mode 100644 index 0000000000..c97a91a235 --- /dev/null +++ b/examples/parallel_for/tachyon/msvs/tachyon.tbb.vcxproj @@ -0,0 +1,437 @@ + + + + + DDDebug + Win32 + + + DDDebug + x64 + + + DDRelease + Win32 + + + DDRelease + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {6E9B1702-78E0-4D64-B771-8B274D963B58} + tachyon.tbb + Win32Proj + + + + + Application + MultiByte + + + Application + MultiByte + true + true + + + Application + MultiByte + true + true + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + true + true + + + Application + MultiByte + true + true + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + true + Speed + true + false + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + StreamingSIMDExtensions2 + + + $(IntDir)%(Filename).pdb + Level2 + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Windows + UseLinkTimeCodeGeneration + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 debug "$(OutDir)" + + + + + X64 + + + Disabled + true + Speed + true + false + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN64;_WINDOWS;_DEBUG;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + + + $(IntDir)%(Filename).pdb + Level2 + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Windows + UseLinkTimeCodeGeneration + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 debug "$(OutDir)" + + + + + true + Speed + true + true + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions) + MultiThreadedDLL + StreamingSIMDExtensions2 + + + $(IntDir)%(Filename).pdb + Level2 + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Windows + true + true + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 release "$(OutDir)" + + + + + X64 + + + true + Speed + true + true + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;WIN64;_WINDOWS;NDEBUG;%(PreprocessorDefinitions) + MultiThreadedDLL + + + $(IntDir)%(Filename).pdb + Level2 + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Windows + true + true + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 release "$(OutDir)" + + + + + true + Speed + true + true + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions) + MultiThreadedDLL + StreamingSIMDExtensions2 + + + $(IntDir)%(Filename).pdb + Level2 + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;$(DXSDK_DIR)\lib\x86;%(AdditionalLibraryDirectories) + true + Windows + true + true + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 release "$(OutDir)" + + + + + X64 + + + true + Speed + true + true + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;WIN64;_WINDOWS;NDEBUG;%(PreprocessorDefinitions) + MultiThreadedDLL + + + $(IntDir)%(Filename).pdb + Level2 + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;$(DXSDK_DIR)\lib\x64;%(AdditionalLibraryDirectories) + true + Windows + true + true + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 release "$(OutDir)" + + + + + Disabled + true + Speed + true + false + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + StreamingSIMDExtensions2 + + + $(IntDir)%(Filename).pdb + Level2 + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;$(DXSDK_DIR)\lib\x86;%(AdditionalLibraryDirectories) + true + Windows + UseLinkTimeCodeGeneration + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 debug "$(OutDir)" + + + + + X64 + + + Disabled + true + Speed + true + false + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN64;_WINDOWS;_DEBUG;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + + + $(IntDir)%(Filename).pdb + Level2 + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;$(DXSDK_DIR)\lib\x64;%(AdditionalLibraryDirectories) + true + Windows + UseLinkTimeCodeGeneration + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 debug "$(OutDir)" + + + + + {924517df-2b6a-47d5-8a11-cc247cc4d810} + false + false + true + + + + + + + + + \ No newline at end of file diff --git a/examples/parallel_for/tachyon/msvs/tachyon.tbb1d.vcxproj b/examples/parallel_for/tachyon/msvs/tachyon.tbb1d.vcxproj new file mode 100644 index 0000000000..b3291d8060 --- /dev/null +++ b/examples/parallel_for/tachyon/msvs/tachyon.tbb1d.vcxproj @@ -0,0 +1,437 @@ + + + + + DDDebug + Win32 + + + DDDebug + x64 + + + DDRelease + Win32 + + + DDRelease + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {924517DF-2B6A-47D5-8A11-CC347CC4D8E9} + tachyon.tbb1d + Win32Proj + + + + + Application + MultiByte + + + Application + MultiByte + true + true + + + Application + MultiByte + true + true + + + Application + MultiByte + + + Application + MultiByte + + + Application + MultiByte + true + true + + + Application + MultiByte + true + true + + + Application + MultiByte + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb1d\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb1d\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb1d\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb1d\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb1d\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb1d\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb1d\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb1d\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb1d\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb1d\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb1d\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb1d\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb1d\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb1d\ + false + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\tbb1d\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\tbb1d\ + false + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + true + Speed + true + false + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + StreamingSIMDExtensions2 + + + $(IntDir)%(Filename).pdb + Level2 + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Windows + UseLinkTimeCodeGeneration + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 debug "$(OutDir)" + + + + + X64 + + + Disabled + true + Speed + true + false + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN64;_WINDOWS;_DEBUG;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + + + $(IntDir)%(Filename).pdb + Level2 + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Windows + UseLinkTimeCodeGeneration + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 debug "$(OutDir)" + + + + + true + Speed + true + true + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions) + MultiThreadedDLL + StreamingSIMDExtensions2 + + + $(IntDir)%(Filename).pdb + Level2 + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;%(AdditionalLibraryDirectories) + true + Windows + true + true + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 release "$(OutDir)" + + + + + X64 + + + true + Speed + true + true + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;WIN64;_WINDOWS;NDEBUG;%(PreprocessorDefinitions) + MultiThreadedDLL + + + $(IntDir)%(Filename).pdb + Level2 + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;%(AdditionalLibraryDirectories) + true + Windows + true + true + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 release "$(OutDir)" + + + + + true + Speed + true + true + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions) + MultiThreadedDLL + StreamingSIMDExtensions2 + + + $(IntDir)%(Filename).pdb + Level2 + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;$(DXSDK_DIR)\lib\x86;%(AdditionalLibraryDirectories) + true + Windows + true + true + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 release "$(OutDir)" + + + + + X64 + + + true + Speed + true + true + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;WIN64;_WINDOWS;NDEBUG;%(PreprocessorDefinitions) + MultiThreadedDLL + + + $(IntDir)%(Filename).pdb + Level2 + ProgramDatabase + + + tbb.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;$(DXSDK_DIR)\lib\x64;%(AdditionalLibraryDirectories) + true + Windows + true + true + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 release "$(OutDir)" + + + + + Disabled + true + Speed + true + false + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + StreamingSIMDExtensions2 + + + $(IntDir)%(Filename).pdb + Level2 + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\ia32\vc_mt;$(TBBROOT)\lib\ia32\vc10;$(SolutionDir)\..\..\..\..\lib\ia32\vc_mt;$(SolutionDir)\..\..\..\..\lib\ia32\vc10;$(DXSDK_DIR)\lib\x86;%(AdditionalLibraryDirectories) + true + Windows + UseLinkTimeCodeGeneration + MachineX86 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" ia32 debug "$(OutDir)" + + + + + X64 + + + Disabled + true + Speed + true + false + $(TBBROOT)\include;$(SolutionDir)\..\..\..\..\include;%(AdditionalIncludeDirectories) + TBB_USE_DEBUG;_CRT_SECURE_NO_DEPRECATE;WIN64;_WINDOWS;_DEBUG;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + + + $(IntDir)%(Filename).pdb + Level2 + ProgramDatabase + + + tbb_debug.lib;%(AdditionalDependencies) + $(TBBROOT)\lib\intel64\vc_mt;$(TBBROOT)\lib\intel64\vc10;$(SolutionDir)\..\..\..\..\lib\intel64\vc_mt;$(SolutionDir)\..\..\..\..\lib\intel64\vc10;$(DXSDK_DIR)\lib\x64;%(AdditionalLibraryDirectories) + true + Windows + UseLinkTimeCodeGeneration + MachineX64 + false + + + Copying DLLs and PDBs + call "$(SolutionDir)\..\..\..\common\copy_libraries.bat" intel64 debug "$(OutDir)" + + + + + {924517df-2b6a-47d5-8a11-cc247cc4d810} + false + false + true + + + + + + + + + \ No newline at end of file diff --git a/examples/parallel_for/tachyon/msvs/tachyon.vcxproj b/examples/parallel_for/tachyon/msvs/tachyon.vcxproj new file mode 100644 index 0000000000..c179ceb1c8 --- /dev/null +++ b/examples/parallel_for/tachyon/msvs/tachyon.vcxproj @@ -0,0 +1,447 @@ + + + + + DDDebug + Win32 + + + DDDebug + x64 + + + DDRelease + Win32 + + + DDRelease + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + tachyon.common + {924517DF-2B6A-47D5-8A11-CC247CC4D810} + tachyon.common + Win32Proj + + + + + StaticLibrary + MultiByte + false + + + StaticLibrary + MultiByte + true + true + + + StaticLibrary + MultiByte + true + true + + + StaticLibrary + MultiByte + false + + + StaticLibrary + MultiByte + false + + + StaticLibrary + MultiByte + true + true + + + StaticLibrary + MultiByte + true + true + + + StaticLibrary + MultiByte + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Configuration)\ + $(TEMP)\tbb_examples\$(Platform)\$(Configuration)\ + $(TEMP)\tbb_examples\$(SolutionName)\$(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + Disabled + Speed + true + false + DEFAULT_MODELFILE=balls.dat;EMULATE_PTHREADS;WIN32;_WINDOWS;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + true + StreamingSIMDExtensions2 + + + Level2 + ProgramDatabase + + + /MACHINE:X86 %(AdditionalOptions) + + + + + X64 + + + Disabled + Speed + true + false + DEFAULT_MODELFILE=balls.dat;EMULATE_PTHREADS;WIN64;_WINDOWS;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + true + + + Level2 + ProgramDatabase + + + /MACHINE:X64 %(AdditionalOptions) + + + + + Speed + true + true + DEFAULT_MODELFILE=balls.dat;EMULATE_PTHREADS;WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + MultiThreadedDLL + true + StreamingSIMDExtensions2 + + + Level2 + ProgramDatabase + + + /MACHINE:X86 %(AdditionalOptions) + + + + + X64 + + + Speed + true + true + DEFAULT_MODELFILE=balls.dat;EMULATE_PTHREADS;WIN64;_WINDOWS;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level2 + ProgramDatabase + + + /MACHINE:X64 %(AdditionalOptions) + + + + + ..\..\..\common\gui\dxcheck.bat + + + Speed + true + true + DEFAULT_MODELFILE=balls.dat;EMULATE_PTHREADS;WIN32;_WINDOWS;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + MultiThreadedDLL + true + StreamingSIMDExtensions2 + + + Level2 + ProgramDatabase + + + /MACHINE:X86 %(AdditionalOptions) + + + + + ..\..\..\common\gui\dxcheck.bat + + + X64 + + + Speed + true + true + DEFAULT_MODELFILE=balls.dat;EMULATE_PTHREADS;WIN64;_WINDOWS;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level2 + ProgramDatabase + + + /MACHINE:X64 %(AdditionalOptions) + + + + + ..\..\..\common\gui\dxcheck.bat + + + Disabled + Speed + true + false + DEFAULT_MODELFILE=balls.dat;EMULATE_PTHREADS;WIN32;_WINDOWS;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + true + StreamingSIMDExtensions2 + + + Level2 + ProgramDatabase + + + /MACHINE:X86 %(AdditionalOptions) + + + + + ..\..\..\common\gui\dxcheck.bat + + + X64 + + + Disabled + Speed + true + false + DEFAULT_MODELFILE=balls.dat;EMULATE_PTHREADS;WIN64;_WINDOWS;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + true + + + Level2 + ProgramDatabase + + + /MACHINE:X64 %(AdditionalOptions) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $(DXSDK_DIR)\include;%(AdditionalIncludeDirectories) + _WINDOWS;_DEBUG + $(DXSDK_DIR)\include;%(AdditionalIncludeDirectories) + _WINDOWS;_DEBUG + $(DXSDK_DIR)\include;%(AdditionalIncludeDirectories) + _WINDOWS;NDEBUG + $(DXSDK_DIR)\include;%(AdditionalIncludeDirectories) + _WINDOWS;NDEBUG + true + true + true + true + + + true + true + true + true + _WINDOWS;_DEBUG + _WINDOWS;_DEBUG + _WINDOWS;NDEBUG + _WINDOWS;NDEBUG + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/parallel_for/tachyon/msvs/win8ui/App.xaml b/examples/parallel_for/tachyon/msvs/win8ui/App.xaml new file mode 100644 index 0000000000..df49ca82ed --- /dev/null +++ b/examples/parallel_for/tachyon/msvs/win8ui/App.xaml @@ -0,0 +1,15 @@ + + + + + + + + + + + diff --git a/examples/parallel_for/tachyon/msvs/win8ui/App.xaml.cpp b/examples/parallel_for/tachyon/msvs/win8ui/App.xaml.cpp new file mode 100644 index 0000000000..c07773aa3d --- /dev/null +++ b/examples/parallel_for/tachyon/msvs/win8ui/App.xaml.cpp @@ -0,0 +1,54 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + The source code contained or described herein and all documents related + to the source code ("Material") are owned by Intel Corporation or its + suppliers or licensors. Title to the Material remains with Intel + Corporation or its suppliers and licensors. The Material is protected + by worldwide copyright laws and treaty provisions. No part of the + Material may be used, copied, reproduced, modified, published, uploaded, + posted, transmitted, distributed, or disclosed in any way without + Intel's prior express written permission. + + No license under any patent, copyright, trade secret or other + intellectual property right is granted to or conferred upon you by + disclosure or delivery of the Materials, either expressly, by + implication, inducement, estoppel or otherwise. Any license under such + intellectual property rights must be express and approved by Intel in + writing. +*/ + +#include "DirectXPage.xaml.h" + +using namespace tbbTachyon; + +using namespace Platform; +using namespace Windows::ApplicationModel; +using namespace Windows::ApplicationModel::Activation; +using namespace Windows::Foundation; +using namespace Windows::Foundation::Collections; +using namespace Windows::Storage; +using namespace Windows::UI::Xaml; +using namespace Windows::UI::Xaml::Controls; +using namespace Windows::UI::Xaml::Controls::Primitives; +using namespace Windows::UI::Xaml::Data; +using namespace Windows::UI::Xaml::Input; +using namespace Windows::UI::Xaml::Interop; +using namespace Windows::UI::Xaml::Media; +using namespace Windows::UI::Xaml::Navigation; + +#include "src/tachyon_video.h" + +App::App() +{ + InitializeComponent(); +} + +void App::OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ pArgs) +{ + m_directXPage = ref new DirectXPage(); + + // Place the frame in the current Window and ensure that it is active + Window::Current->Content = m_directXPage; + Window::Current->Activate(); +} diff --git a/examples/parallel_for/tachyon/msvs/win8ui/App.xaml.h b/examples/parallel_for/tachyon/msvs/win8ui/App.xaml.h new file mode 100644 index 0000000000..3cafe318a4 --- /dev/null +++ b/examples/parallel_for/tachyon/msvs/win8ui/App.xaml.h @@ -0,0 +1,41 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + The source code contained or described herein and all documents related + to the source code ("Material") are owned by Intel Corporation or its + suppliers or licensors. Title to the Material remains with Intel + Corporation or its suppliers and licensors. The Material is protected + by worldwide copyright laws and treaty provisions. No part of the + Material may be used, copied, reproduced, modified, published, uploaded, + posted, transmitted, distributed, or disclosed in any way without + Intel's prior express written permission. + + No license under any patent, copyright, trade secret or other + intellectual property right is granted to or conferred upon you by + disclosure or delivery of the Materials, either expressly, by + implication, inducement, estoppel or otherwise. Any license under such + intellectual property rights must be express and approved by Intel in + writing. +*/ + + +#pragma once + +#include "App.g.h" +#include "DirectXPage.xaml.h" + +namespace tbbTachyon +{ + /// + /// Provides application-specific behavior to supplement the default Application class. + /// + ref class App sealed + { + public: + App(); + virtual void OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ pArgs) override; + + private: + DirectXPage^ m_directXPage; + }; +} diff --git a/examples/parallel_for/tachyon/msvs/win8ui/Assets/Logo.png b/examples/parallel_for/tachyon/msvs/win8ui/Assets/Logo.png new file mode 100644 index 0000000000..bc91a8ef6b Binary files /dev/null and b/examples/parallel_for/tachyon/msvs/win8ui/Assets/Logo.png differ diff --git a/examples/parallel_for/tachyon/msvs/win8ui/Assets/SmallLogo.png b/examples/parallel_for/tachyon/msvs/win8ui/Assets/SmallLogo.png new file mode 100644 index 0000000000..cddf7a1462 Binary files /dev/null and b/examples/parallel_for/tachyon/msvs/win8ui/Assets/SmallLogo.png differ diff --git a/examples/parallel_for/tachyon/msvs/win8ui/Assets/SplashScreen.png b/examples/parallel_for/tachyon/msvs/win8ui/Assets/SplashScreen.png new file mode 100644 index 0000000000..37af2706e7 Binary files /dev/null and b/examples/parallel_for/tachyon/msvs/win8ui/Assets/SplashScreen.png differ diff --git a/examples/parallel_for/tachyon/msvs/win8ui/Assets/StoreLogo.png b/examples/parallel_for/tachyon/msvs/win8ui/Assets/StoreLogo.png new file mode 100644 index 0000000000..42a13f0fc9 Binary files /dev/null and b/examples/parallel_for/tachyon/msvs/win8ui/Assets/StoreLogo.png differ diff --git a/examples/parallel_for/tachyon/msvs/win8ui/Common/StandardStyles.xaml b/examples/parallel_for/tachyon/msvs/win8ui/Common/StandardStyles.xaml new file mode 100644 index 0000000000..81fb398ea2 --- /dev/null +++ b/examples/parallel_for/tachyon/msvs/win8ui/Common/StandardStyles.xaml @@ -0,0 +1,1007 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mouse + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/parallel_for/tachyon/msvs/win8ui/DirectXBase.cpp b/examples/parallel_for/tachyon/msvs/win8ui/DirectXBase.cpp new file mode 100644 index 0000000000..b97f3bafe7 --- /dev/null +++ b/examples/parallel_for/tachyon/msvs/win8ui/DirectXBase.cpp @@ -0,0 +1,413 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + The source code contained or described herein and all documents related + to the source code ("Material") are owned by Intel Corporation or its + suppliers or licensors. Title to the Material remains with Intel + Corporation or its suppliers and licensors. The Material is protected + by worldwide copyright laws and treaty provisions. No part of the + Material may be used, copied, reproduced, modified, published, uploaded, + posted, transmitted, distributed, or disclosed in any way without + Intel's prior express written permission. + + No license under any patent, copyright, trade secret or other + intellectual property right is granted to or conferred upon you by + disclosure or delivery of the Materials, either expressly, by + implication, inducement, estoppel or otherwise. Any license under such + intellectual property rights must be express and approved by Intel in + writing. +*/ + +#include "pch.h" +#include "DirectXBase.h" +#include +#include + +using namespace Microsoft::WRL; +using namespace Windows::UI::Core; +using namespace Windows::UI::Xaml::Controls; +using namespace Windows::Foundation; +using namespace Windows::Graphics::Display; +using namespace D2D1; + +// Constructor. +DirectXBase::DirectXBase() : + m_dpi(-1.0f) +{ +} + +// Initialize the DirectX resources required to run. +void DirectXBase::Initialize(CoreWindow^ window, SwapChainBackgroundPanel^ panel, float dpi) +{ + m_window = window; + m_panel = panel; + + CreateDeviceIndependentResources(); + CreateDeviceResources(); + SetDpi(dpi); +} + +// These are the resources required independent of the device. +void DirectXBase::CreateDeviceIndependentResources() +{ + D2D1_FACTORY_OPTIONS options; + ZeroMemory(&options, sizeof(D2D1_FACTORY_OPTIONS)); + +#if defined(_DEBUG) + // If the project is in a debug build, enable Direct2D debugging via SDK Layers + // TODO: investigate resource leaks reported by a debug version of a device. + // options.debugLevel = D2D1_DEBUG_LEVEL_INFORMATION; +#endif + + DX::ThrowIfFailed( + D2D1CreateFactory( + D2D1_FACTORY_TYPE_SINGLE_THREADED, + __uuidof(ID2D1Factory1), + &options, + &m_d2dFactory + ) + ); + + DX::ThrowIfFailed( + DWriteCreateFactory( + DWRITE_FACTORY_TYPE_SHARED, + __uuidof(IDWriteFactory), + &m_dwriteFactory + ) + ); + + DX::ThrowIfFailed( + CoCreateInstance( + CLSID_WICImagingFactory, + nullptr, + CLSCTX_INPROC_SERVER, + IID_PPV_ARGS(&m_wicFactory) + ) + ); +} + +// These are the resources that depend on the device. +void DirectXBase::CreateDeviceResources() +{ + // This flag adds support for surfaces with a different color channel ordering than the API default. + // It is recommended usage, and is required for compatibility with Direct2D. + UINT creationFlags = D3D11_CREATE_DEVICE_BGRA_SUPPORT; + ComPtr dxgiDevice; + +#if defined(_DEBUG) + // If the project is in a debug build, enable debugging via SDK Layers with this flag. + creationFlags |= D3D11_CREATE_DEVICE_DEBUG; +#endif + + // This array defines the set of DirectX hardware feature levels this app will support. + // Note the ordering should be preserved. + // Don't forget to declare your application's minimum required feature level in its + // description. All applications are assumed to support 9.1 unless otherwise stated. + D3D_FEATURE_LEVEL featureLevels[] = + { + D3D_FEATURE_LEVEL_11_1, + D3D_FEATURE_LEVEL_11_0, + D3D_FEATURE_LEVEL_10_1, + D3D_FEATURE_LEVEL_10_0, + D3D_FEATURE_LEVEL_9_3, + D3D_FEATURE_LEVEL_9_2, + D3D_FEATURE_LEVEL_9_1 + }; + + // Create the DX11 API device object, and get a corresponding context. + ComPtr device; + ComPtr context; + DX::ThrowIfFailed( + D3D11CreateDevice( + nullptr, // specify null to use the default adapter + D3D_DRIVER_TYPE_HARDWARE, + 0, // leave as 0 unless software device + creationFlags, // optionally set debug and Direct2D compatibility flags + featureLevels, // list of feature levels this app can support + ARRAYSIZE(featureLevels), // number of entries in above list + D3D11_SDK_VERSION, // always set this to D3D11_SDK_VERSION for Metro style apps + &device, // returns the Direct3D device created + &m_featureLevel, // returns feature level of device created + &context // returns the device immediate context + ) + ); + // Get the DirectX11.1 device by QI off the DirectX11 one. + DX::ThrowIfFailed( + device.As(&m_d3dDevice) + ); + + // And get the corresponding device context in the same way. + DX::ThrowIfFailed( + context.As(&m_d3dContext) + ); + + // Obtain the underlying DXGI device of the Direct3D11.1 device. + DX::ThrowIfFailed( + m_d3dDevice.As(&dxgiDevice) + ); + + // Obtain the Direct2D device for 2-D rendering. + DX::ThrowIfFailed( + m_d2dFactory->CreateDevice(dxgiDevice.Get(), &m_d2dDevice) + ); + + // And get its corresponding device context object. + DX::ThrowIfFailed( + m_d2dDevice->CreateDeviceContext( + D2D1_DEVICE_CONTEXT_OPTIONS_NONE, + &m_d2dContext + ) + ); + + // Release the swap chain (if it exists) as it will be incompatible with the new device. + m_swapChain = nullptr; +} + +// Helps track the DPI in the helper class. +// This is called in the dpiChanged event handler in the view class. +void DirectXBase::SetDpi(float dpi) +{ + if (dpi != m_dpi) + { + // Save the DPI of this display in our class. + m_dpi = dpi; + + // Update Direct2D's stored DPI. + m_d2dContext->SetDpi(m_dpi, m_dpi); + + // Often a DPI change implies a window size change. In some cases Windows will issues + // both a size changed event and a DPI changed event. In this case, the resulting bounds + // will not change, and the window resize code will only be executed once. + UpdateForWindowSizeChange(); + } +} + +// This routine is called in the event handler for the view SizeChanged event. +void DirectXBase::UpdateForWindowSizeChange() +{ + // Only handle window size changed if there is no pending DPI change. + if (m_dpi != DisplayProperties::LogicalDpi) + return; + + if (m_window->Bounds.Width != m_windowBounds.Width || + m_window->Bounds.Height != m_windowBounds.Height) + { + m_d2dContext->SetTarget(nullptr); + m_d2dTargetBitmap = nullptr; + m_renderTargetView = nullptr; + m_depthStencilView = nullptr; + CreateWindowSizeDependentResources(); + } +} + +// Allocate all memory resources that change on a window SizeChanged event. +void DirectXBase::CreateWindowSizeDependentResources() +{ + // Store the window bounds so the next time we get a SizeChanged event we can + // avoid rebuilding everything if the size is identical. + m_windowBounds = m_window->Bounds; + + // Calculate the necessary swap chain and render target size in pixels. + m_renderTargetSize.Width = ConvertDipsToPixels(m_windowBounds.Width); + m_renderTargetSize.Height = ConvertDipsToPixels(m_windowBounds.Height); + + // If the swap chain already exists, resize it. + if (m_swapChain != nullptr) + { + DX::ThrowIfFailed( + m_swapChain->ResizeBuffers( + 2, + static_cast(m_renderTargetSize.Width), + static_cast(m_renderTargetSize.Height), + DXGI_FORMAT_B8G8R8A8_UNORM, + 0 + ) + ); + } + // Otherwise, create a new one. + else + { + // Allocate a descriptor. + DXGI_SWAP_CHAIN_DESC1 swapChainDesc = {0}; + swapChainDesc.Width = static_cast(m_renderTargetSize.Width); // Match the size of the windowm. + swapChainDesc.Height = static_cast(m_renderTargetSize.Height); + swapChainDesc.Format = DXGI_FORMAT_B8G8R8A8_UNORM; // This is the most common swapchain format. + swapChainDesc.Stereo = false; + swapChainDesc.SampleDesc.Count = 1; // Don't use multi-sampling. + swapChainDesc.SampleDesc.Quality = 0; + swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; + swapChainDesc.BufferCount = 2; // Use double buffering to enable flip. + swapChainDesc.Scaling = DXGI_SCALING_STRETCH; + swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL; // All Metro style apps must use this SwapEffect. + swapChainDesc.Flags = 0; + + // Once the desired swap chain description is configured, it must be created on the same adapter as our D3D Device. + + // First, retrieve the underlying DXGI Device from the D3D Device. + ComPtr dxgiDevice; + DX::ThrowIfFailed( + m_d3dDevice.As(&dxgiDevice) + ); + + // Identify the physical adapter (GPU or card) this device is running on. + ComPtr dxgiAdapter; + DX::ThrowIfFailed( + dxgiDevice->GetAdapter(&dxgiAdapter) + ); + + // And obtain the factory object that created it. + ComPtr dxgiFactory; + DX::ThrowIfFailed( + dxgiAdapter->GetParent(IID_PPV_ARGS(&dxgiFactory)) + ); + + // Create the swap chain and then associate it with the SwapChainBackgroundPanel. + DX::ThrowIfFailed( + dxgiFactory->CreateSwapChainForComposition( + m_d3dDevice.Get(), + &swapChainDesc, + nullptr, + &m_swapChain + ) + ); + + ComPtr panelNative; + DX::ThrowIfFailed( + reinterpret_cast(m_panel)->QueryInterface(IID_PPV_ARGS(&panelNative)) + ); + + DX::ThrowIfFailed( + panelNative->SetSwapChain(m_swapChain.Get()) + ); + + // Ensure that DXGI does not queue more than one frame at a time. This both reduces + // latency and ensures that the application will only render after each VSync, minimizing + // power consumption. + DX::ThrowIfFailed( + dxgiDevice->SetMaximumFrameLatency(1) + ); + } + + // Obtain the backbuffer for this window which will be the final 3D rendertarget. + ComPtr backBuffer; + DX::ThrowIfFailed( + m_swapChain->GetBuffer(0, IID_PPV_ARGS(&backBuffer)) + ); + + // Create a view interface on the rendertarget to use on bind. + DX::ThrowIfFailed( + m_d3dDevice->CreateRenderTargetView( + backBuffer.Get(), + nullptr, + &m_renderTargetView + ) + ); + + // Create a descriptor for the depth/stencil buffer. + CD3D11_TEXTURE2D_DESC depthStencilDesc( + DXGI_FORMAT_D24_UNORM_S8_UINT, + static_cast(m_renderTargetSize.Width), + static_cast(m_renderTargetSize.Height), + 1, + 1, + D3D11_BIND_DEPTH_STENCIL + ); + + // Allocate a 2-D surface as the depth/stencil buffer. + ComPtr depthStencil; + DX::ThrowIfFailed( + m_d3dDevice->CreateTexture2D( + &depthStencilDesc, + nullptr, + &depthStencil + ) + ); + + // Create a DepthStencil view on this surface to use on bind. + CD3D11_DEPTH_STENCIL_VIEW_DESC depthStencilViewDesc(D3D11_DSV_DIMENSION_TEXTURE2D); + DX::ThrowIfFailed( + m_d3dDevice->CreateDepthStencilView( + depthStencil.Get(), + &depthStencilViewDesc, + &m_depthStencilView + ) + ); + + // Create a viewport descriptor of the full window size. + CD3D11_VIEWPORT viewport( + 0.0f, + 0.0f, + m_renderTargetSize.Width, + m_renderTargetSize.Height + ); + + // Set the current viewport using the descriptor. + m_d3dContext->RSSetViewports(1, &viewport); + + // Now we set up the Direct2D render target bitmap linked to the swapchain. + // Whenever we render to this bitmap, it will be directly rendered to the + // swapchain associated with the window. + D2D1_BITMAP_PROPERTIES1 bitmapProperties = + BitmapProperties1( + D2D1_BITMAP_OPTIONS_TARGET | D2D1_BITMAP_OPTIONS_CANNOT_DRAW, + PixelFormat(DXGI_FORMAT_B8G8R8A8_UNORM, D2D1_ALPHA_MODE_PREMULTIPLIED), + m_dpi, + m_dpi + ); + + // Direct2D needs the DXGI version of the backbuffer surface pointer. + ComPtr dxgiBackBuffer; + DX::ThrowIfFailed( + m_swapChain->GetBuffer(0, IID_PPV_ARGS(&dxgiBackBuffer)) + ); + + // Get a D2D surface from the DXGI back buffer to use as the D2D render target. + DX::ThrowIfFailed( + m_d2dContext->CreateBitmapFromDxgiSurface( + dxgiBackBuffer.Get(), + &bitmapProperties, + &m_d2dTargetBitmap + ) + ); + + // So now we can set the Direct2D render target. + m_d2dContext->SetTarget(m_d2dTargetBitmap.Get()); + + // Set D2D text anti-alias mode to Grayscale to ensure proper rendering of text on intermediate surfaces. + m_d2dContext->SetTextAntialiasMode(D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE); +} + +// Method to deliver the final image to the display. +void DirectXBase::Present() +{ + // The application may optionally specify "dirty" or "scroll" rects to improve efficiency + // in certain scenarios. + DXGI_PRESENT_PARAMETERS parameters = {0}; + parameters.DirtyRectsCount = 0; + parameters.pDirtyRects = nullptr; + parameters.pScrollRect = nullptr; + parameters.pScrollOffset = nullptr; + + // The first argument instructs DXGI to block until VSync, putting the application + // to sleep until the next VSync. This ensures we don't waste any cycles rendering + // frames that will never be displayed to the screen. + HRESULT hr = m_swapChain->Present1(1, 0, ¶meters); + + // If the device was removed either by a disconnect or a driver upgrade, we + // must completely reinitialize the renderer. + if (hr == DXGI_ERROR_DEVICE_REMOVED || hr == DXGI_ERROR_DEVICE_RESET) + { + Initialize(m_window.Get(), m_panel, m_dpi); + } + else + { + DX::ThrowIfFailed(hr); + } +} + +// Method to convert a length in device-independent pixels (DIPs) to a length in physical pixels. +float DirectXBase::ConvertDipsToPixels(float dips) +{ + static const float dipsPerInch = 96.0f; + return floor(dips * m_dpi / dipsPerInch + 0.5f); // Round to nearest integer. +} diff --git a/examples/parallel_for/tachyon/msvs/win8ui/DirectXBase.h b/examples/parallel_for/tachyon/msvs/win8ui/DirectXBase.h new file mode 100644 index 0000000000..26807ca514 --- /dev/null +++ b/examples/parallel_for/tachyon/msvs/win8ui/DirectXBase.h @@ -0,0 +1,92 @@ +/* + Copyright 2005-2015 Intel Corporation. All Rights Reserved. + + The source code contained or described herein and all documents related + to the source code ("Material") are owned by Intel Corporation or its + suppliers or licensors. Title to the Material remains with Intel + Corporation or its suppliers and licensors. The Material is protected + by worldwide copyright laws and treaty provisions. No part of the + Material may be used, copied, reproduced, modified, published, uploaded, + posted, transmitted, distributed, or disclosed in any way without + Intel's prior express written permission. + + No license under any patent, copyright, trade secret or other + intellectual property right is granted to or conferred upon you by + disclosure or delivery of the Materials, either expressly, by + implication, inducement, estoppel or otherwise. Any license under such + intellectual property rights must be express and approved by Intel in + writing. +*/ + +#pragma once + +#include +#include +#include +#include +#include +#include +#include "App.xaml.h" +#include + +#pragma warning (disable: 4449) + +// Helper utilities to make DirectX APIs work with exceptions +namespace DX +{ + inline void ThrowIfFailed(HRESULT hr) + { + if (FAILED(hr)) + { + // Set a breakpoint on this line to catch DirectX API errors + throw Platform::Exception::CreateException(hr); + } + } +} + +// Helper class that initializes DirectX APIs +ref class DirectXBase abstract +{ +internal: + DirectXBase(); + +public: + virtual void Initialize(Windows::UI::Core::CoreWindow^ window, Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^ panel, float dpi); + virtual void CreateDeviceIndependentResources(); + virtual void CreateDeviceResources(); + virtual void SetDpi(float dpi); + virtual void CreateWindowSizeDependentResources(); + virtual void UpdateForWindowSizeChange(); + virtual void Render() = 0; + virtual void Present(); + virtual float ConvertDipsToPixels(float dips); + +protected private: + + Platform::Agile m_window; + Windows::UI::Xaml::Controls::SwapChainBackgroundPanel^ m_panel; + + // Direct2D Objects + Microsoft::WRL::ComPtr m_d2dFactory; + Microsoft::WRL::ComPtr m_d2dDevice; + Microsoft::WRL::ComPtr m_d2dContext; + Microsoft::WRL::ComPtr m_d2dTargetBitmap; + + // DirectWrite & Windows Imaging Component Objects + Microsoft::WRL::ComPtr m_dwriteFactory; + Microsoft::WRL::ComPtr m_wicFactory; + + // Direct3D Objects + Microsoft::WRL::ComPtr m_d3dDevice; + Microsoft::WRL::ComPtr m_d3dContext; + Microsoft::WRL::ComPtr m_swapChain; + Microsoft::WRL::ComPtr m_renderTargetView; + Microsoft::WRL::ComPtr m_depthStencilView; + + D3D_FEATURE_LEVEL m_featureLevel; + Windows::Foundation::Size m_renderTargetSize; + Windows::Foundation::Rect m_windowBounds; + float m_dpi; +}; + +#pragma warning (default: 4449) diff --git a/examples/parallel_for/tachyon/msvs/win8ui/DirectXPage.xaml b/examples/parallel_for/tachyon/msvs/win8ui/DirectXPage.xaml new file mode 100644 index 0000000000..a255074cc8 --- /dev/null +++ b/examples/parallel_for/tachyon/msvs/win8ui/DirectXPage.xaml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + +