From 4dcd644a324e3cc6cded8639e2659f83baff3d5b Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Sat, 8 Aug 2026 13:10:01 +0200 Subject: [PATCH] Deleted unmigrated examples --- src/examples/IfcParseExamples_test.ifc | 97 - src/examples/arbitrary_open_profile_def.cpp | 147 - src/examples/composite_profile_def.cpp | 150 - src/examples/csg_primitive.cpp | 200 - src/examples/ellipse_pies.cpp | 161 - src/examples/faces.cpp | 214 - src/examples/ifc_curve_rebar.cpp | 164 - src/examples/profiles.cpp | 249 - src/examples/suzanne_geometry.h | 5978 ------------------- src/examples/triangulated_faceset.cpp | 96 - 10 files changed, 7456 deletions(-) delete mode 100644 src/examples/IfcParseExamples_test.ifc delete mode 100644 src/examples/arbitrary_open_profile_def.cpp delete mode 100644 src/examples/composite_profile_def.cpp delete mode 100644 src/examples/csg_primitive.cpp delete mode 100644 src/examples/ellipse_pies.cpp delete mode 100644 src/examples/faces.cpp delete mode 100644 src/examples/ifc_curve_rebar.cpp delete mode 100644 src/examples/profiles.cpp delete mode 100644 src/examples/suzanne_geometry.h delete mode 100644 src/examples/triangulated_faceset.cpp diff --git a/src/examples/IfcParseExamples_test.ifc b/src/examples/IfcParseExamples_test.ifc deleted file mode 100644 index 9fec9e76b4..0000000000 --- a/src/examples/IfcParseExamples_test.ifc +++ /dev/null @@ -1,97 +0,0 @@ -ISO-10303-21; -HEADER; -FILE_DESCRIPTION(('ViewDefinition[DesignTransferView]'),'2;1'); -FILE_NAME('IfcParseExamples_test.ifc','2025-12-12T13:49:19+05:00',(''),(''),'IfcOpenShell 0.0.0','Bonsai 0.8.5-alpha251212-a47cbc3','Nobody'); -FILE_SCHEMA(('IFC2X3')); -ENDSEC; -DATA; -#1=IFCPERSON('HSeldon','Seldon','Hari',$,$,$,$,$); -#2=IFCORGANIZATION('APTR','Aperture Science',$,$,$); -#3=IFCPERSONANDORGANIZATION(#1,#2,$); -#4=IFCACTORROLE(.USERDEFINED.,'CONTRIBUTOR',$); -#5=IFCORGANIZATION('IfcOpenShell','IfcOpenShell','IfcOpenShell is an open source software library that helps users and software developers to work with IFC data.',(#4),(#6)); -#6=IFCTELECOMADDRESS(.USERDEFINED.,$,'WEBPAGE',$,$,$,$,'https://ifcopenshell.org'); -#7=IFCAPPLICATION(#5,'0.8.5','Bonsai','Bonsai-0.8.5'); -#8=IFCOWNERHISTORY(#3,#7,.READWRITE.,.ADDED.,1765520605,#3,#7,1765520605); -#9=IFCPROJECT('3GSSvm5SP5U96O5iar8uYb',#8,'My Project',$,$,$,$,(#22,#34),#17); -#10=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); -#11=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); -#12=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); -#13=IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0); -#14=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); -#15=IFCMEASUREWITHUNIT(IFCREAL(0.0174532925199433),#14); -#16=IFCCONVERSIONBASEDUNIT(#13,.PLANEANGLEUNIT.,'degree',#15); -#17=IFCUNITASSIGNMENT((#12,#10,#16,#11)); -#18=IFCCARTESIANPOINT((0.,0.,0.)); -#19=IFCDIRECTION((0.,0.,1.)); -#20=IFCDIRECTION((1.,0.,0.)); -#21=IFCAXIS2PLACEMENT3D(#18,#19,#20); -#22=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.E-05,#21,$); -#23=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#22,$,.MODEL_VIEW.,$); -#24=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis','Model',*,*,*,*,#22,$,.GRAPH_VIEW.,$); -#25=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Box','Model',*,*,*,*,#22,$,.MODEL_VIEW.,$); -#26=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Annotation','Model',*,*,*,*,#22,$,.SECTION_VIEW.,$); -#27=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Annotation','Model',*,*,*,*,#22,$,.ELEVATION_VIEW.,$); -#28=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Annotation','Model',*,*,*,*,#22,$,.MODEL_VIEW.,$); -#29=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Annotation','Model',*,*,*,*,#22,$,.PLAN_VIEW.,$); -#30=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Profile','Model',*,*,*,*,#22,$,.ELEVATION_VIEW.,$); -#31=IFCCARTESIANPOINT((0.,0.)); -#32=IFCDIRECTION((1.,0.)); -#33=IFCAXIS2PLACEMENT2D(#31,#32); -#34=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Plan',2,1.E-05,#33,$); -#35=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis','Plan',*,*,*,*,#34,$,.GRAPH_VIEW.,$); -#36=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Plan',*,*,*,*,#34,$,.PLAN_VIEW.,$); -#37=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Annotation','Plan',*,*,*,*,#34,$,.PLAN_VIEW.,$); -#38=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Annotation','Plan',*,*,*,*,#34,$,.REFLECTED_PLAN_VIEW.,$); -#39=IFCOWNERHISTORY(#3,#7,.READWRITE.,.MODIFIED.,1765520605,#3,#7,1765520605); -#40=IFCSITE('2Ys4j4OOf3x9UYeALDJ_g3',#39,'My Site',$,$,#66,$,$,.ELEMENT.,$,$,$,$,$); -#46=IFCOWNERHISTORY(#3,#7,.READWRITE.,.MODIFIED.,1765520605,#3,#7,1765520605); -#47=IFCBUILDING('3e580MQFTCD9tCSaZWRPi9',#46,'My Building',$,$,#73,$,$,.ELEMENT.,$,$,$); -#53=IFCOWNERHISTORY(#3,#7,.READWRITE.,.MODIFIED.,1765520605,#3,#7,1765520605); -#54=IFCBUILDINGSTOREY('3XFkAr6KbAsP5wR3gxi3my',#53,'My Storey',$,$,#80,$,$,.ELEMENT.,$); -#60=IFCOWNERHISTORY(#3,#7,.READWRITE.,.ADDED.,1765520605,#3,#7,1765520605); -#61=IFCRELAGGREGATES('2OWfFyDQn0qP0Vd6NWGX7k',#60,$,$,#9,(#40)); -#62=IFCCARTESIANPOINT((0.,0.,0.)); -#63=IFCDIRECTION((0.,0.,1.)); -#64=IFCDIRECTION((1.,0.,0.)); -#65=IFCAXIS2PLACEMENT3D(#62,#63,#64); -#66=IFCLOCALPLACEMENT($,#65); -#67=IFCOWNERHISTORY(#3,#7,.READWRITE.,.ADDED.,1765520605,#3,#7,1765520605); -#68=IFCRELAGGREGATES('3_X_vfPpXDaO3NODBJgmSp',#67,$,$,#40,(#47)); -#69=IFCCARTESIANPOINT((0.,0.,0.)); -#70=IFCDIRECTION((0.,0.,1.)); -#71=IFCDIRECTION((1.,0.,0.)); -#72=IFCAXIS2PLACEMENT3D(#69,#70,#71); -#73=IFCLOCALPLACEMENT(#66,#72); -#74=IFCOWNERHISTORY(#3,#7,.READWRITE.,.ADDED.,1765520605,#3,#7,1765520605); -#75=IFCRELAGGREGATES('3ScF98CZD3pAa0SW$mhBHF',#74,$,$,#47,(#54)); -#76=IFCCARTESIANPOINT((0.,0.,0.)); -#77=IFCDIRECTION((0.,0.,1.)); -#78=IFCDIRECTION((1.,0.,0.)); -#79=IFCAXIS2PLACEMENT3D(#76,#77,#78); -#80=IFCLOCALPLACEMENT(#73,#79); -#110=IFCOWNERHISTORY(#3,#7,.READWRITE.,.MODIFIED.,1765529359,#3,#7,1765520632); -#111=IFCWALL('1lfiJzSCH1a8vjDuSLL4Ii',#110,'Cube',$,$,#203,$,$); -#112=IFCOWNERHISTORY(#3,#7,.READWRITE.,.MODIFIED.,1765520818,#3,#7,1765520632); -#113=IFCRELCONTAINEDINSPATIALSTRUCTURE('2Gqx6vP7jB4x_h65Tawn0f',#112,$,$,(#111,#182,#150),#54); -#149=IFCOWNERHISTORY(#3,#7,.READWRITE.,.MODIFIED.,1765529359,#3,#7,1765520810); -#150=IFCWINDOW('1eE0btB_54tBL59wLXKO1B',#149,'Cube',$,$,#208,$,$,$,$); -#181=IFCOWNERHISTORY(#3,#7,.READWRITE.,.MODIFIED.,1765529359,#3,#7,1765520818); -#182=IFCBUILDINGELEMENTPART('0fmaoBJgz0kPBavO$EJkPn',#181,'Cube',$,$,#198,$,$); -#194=IFCCARTESIANPOINT((-3.82147288322449,-0.987768530845642,1.78445267677307)); -#195=IFCDIRECTION((0.,0.,1.)); -#196=IFCDIRECTION((1.,0.,0.)); -#197=IFCAXIS2PLACEMENT3D(#194,#195,#196); -#198=IFCLOCALPLACEMENT(#80,#197); -#199=IFCCARTESIANPOINT((0.,0.,0.)); -#200=IFCDIRECTION((0.,0.,1.)); -#201=IFCDIRECTION((1.,0.,0.)); -#202=IFCAXIS2PLACEMENT3D(#199,#200,#201); -#203=IFCLOCALPLACEMENT(#80,#202); -#204=IFCCARTESIANPOINT((0.,4.25822639465332,0.)); -#205=IFCDIRECTION((0.,0.,1.)); -#206=IFCDIRECTION((1.,0.,0.)); -#207=IFCAXIS2PLACEMENT3D(#204,#205,#206); -#208=IFCLOCALPLACEMENT(#80,#207); -ENDSEC; -END-ISO-10303-21; diff --git a/src/examples/arbitrary_open_profile_def.cpp b/src/examples/arbitrary_open_profile_def.cpp deleted file mode 100644 index 0c23962fbe..0000000000 --- a/src/examples/arbitrary_open_profile_def.cpp +++ /dev/null @@ -1,147 +0,0 @@ -/******************************************************************************** - * * - * This file is part of IfcOpenShell. * - * * - * IfcOpenShell is free software: you can redistribute it and/or modify * - * it under the terms of the Lesser GNU General Public License as published by * - * the Free Software Foundation, either version 3.0 of the License, or * - * (at your option) any later version. * - * * - * IfcOpenShell 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 * - * Lesser GNU General Public License for more details. * - * * - * You should have received a copy of the Lesser GNU General Public License * - * along with this program. If not, see . * - * * - ********************************************************************************/ - -/******************************************************************************** - * * - * Example that generates various representations from * - * IfcArbitraryOpenProfileDefs and its subclass IfcCenterLineProfileDef * - * * - ********************************************************************************/ - -#include -#include -#include - -#include "ifcparse/macros.h" - -#ifndef IfcSchema -#define IfcSchema Ifc4 -#endif - -#include INCLUDE_SCHEMA(ifcparse/schemas, IfcSchema) -#include INCLUDE_SCHEMA_DEFINITIONS(ifcparse/schemas, IfcSchema) - -#include "ifcparse/hierarchy_helper.h" - -typedef std::string S; -typedef ifcopenshell::global_id guid; -boost::none_t const null = boost::none; -static int i = 0; - -void create_product_from_item(hierarchy_helper& file, IfcSchema::IfcRepresentationItem* item, const std::string& s) { - IfcSchema::IfcBuildingElementProxy* product = new IfcSchema::IfcBuildingElementProxy( - guid(), 0, S("product"), null, null, 0, 0, null, null); - file.addBuildingProduct(product); - product->setOwnerHistory(file.getSingle()); - - product->setObjectPlacement(file.addLocalPlacement(0, 120 * i++)); - - IfcSchema::IfcRepresentation::list::ptr reps (new IfcSchema::IfcRepresentation::list()); - IfcSchema::IfcRepresentationItem::list::ptr items (new IfcSchema::IfcRepresentationItem::list()); - items->push(item); - - if (s == "GeometricSet") { - IfcSchema::IfcGeometricSet* set = new IfcSchema::IfcGeometricSet(items->generalize()); - file.add_entity(set); - items = IfcSchema::IfcRepresentationItem::list::ptr(new IfcSchema::IfcRepresentationItem::list()); - items->push(set); - } - - IfcSchema::IfcShapeRepresentation* rep = new IfcSchema::IfcShapeRepresentation( - file.getSingle(), S("Body"), s, items); - reps->push(rep); - - IfcSchema::IfcProductDefinitionShape* shape = new IfcSchema::IfcProductDefinitionShape(boost::none, boost::none, reps); - file.add_entity(rep); - file.add_entity(shape); - - product->setRepresentation(shape); -} - -void create_surfaces_from_profile(hierarchy_helper& file, IfcSchema::IfcProfileDef* profile) { - IfcSchema::IfcSurfaceOfLinearExtrusion* extrusion = new IfcSchema::IfcSurfaceOfLinearExtrusion(profile, file.addPlacement3d(), file.addTriplet(0, 0, 1), 100.); - file.add_entity(extrusion); - - IfcSchema::IfcAxis1Placement* ax1 = new IfcSchema::IfcAxis1Placement(file.addTriplet(0,100,0), file.addTriplet(1,0,0)); - IfcSchema::IfcSurfaceOfRevolution* revolution = new IfcSchema::IfcSurfaceOfRevolution(profile, file.addPlacement3d(), ax1); - file.add_entity(ax1); - file.add_entity(revolution); - - create_product_from_item(file, extrusion, "GeometricSet"); - create_product_from_item(file, revolution, "GeometricSet"); -} - -void create_solids_from_profile(hierarchy_helper& file, IfcSchema::IfcProfileDef* profile) { - IfcSchema::IfcExtrudedAreaSolid* extrusion = new IfcSchema::IfcExtrudedAreaSolid(profile, file.addPlacement3d(), file.addTriplet(0, 0, 1), 100.); - file.add_entity(extrusion); - - IfcSchema::IfcAxis1Placement* ax1 = new IfcSchema::IfcAxis1Placement(file.addTriplet(0,100,0), file.addTriplet(1,0,0)); - IfcSchema::IfcRevolvedAreaSolid* revolution1 = new IfcSchema::IfcRevolvedAreaSolid(profile, file.addPlacement3d(), ax1, 360.); - IfcSchema::IfcRevolvedAreaSolid* revolution2 = new IfcSchema::IfcRevolvedAreaSolid(profile, file.addPlacement3d(), ax1, 90.); - file.add_entity(ax1); - file.add_entity(revolution1); - file.add_entity(revolution2); - - create_product_from_item(file, extrusion, "SweptSolid"); - create_product_from_item(file, revolution1, "SweptSolid"); - create_product_from_item(file, revolution2, "SweptSolid"); -} - -void create_products_from_curve(hierarchy_helper& file, IfcSchema::IfcBoundedCurve* curve) { - IfcSchema::IfcArbitraryOpenProfileDef* open = new IfcSchema::IfcArbitraryOpenProfileDef(IfcSchema::IfcProfileTypeEnum::IfcProfileType_CURVE, null, curve); - IfcSchema::IfcCenterLineProfileDef* center_line = new IfcSchema::IfcCenterLineProfileDef(IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, null, curve, 10.); - file.add_entity(open); - file.add_entity(center_line); - - create_surfaces_from_profile(file, open); - create_solids_from_profile(file, center_line); -} - -int main(int argc, char** argv) { - const char filename[] = "IfcArbitraryOpenProfileDef.ifc"; - hierarchy_helper file; - file.header().file_name().name(filename); - - double coords1[] = {-50.0, 0.0}; - double coords2[] = { 50.0, 0.0}; - IfcSchema::IfcCartesianPoint::list::ptr points (new IfcSchema::IfcCartesianPoint::list()); - points->push(new IfcSchema::IfcCartesianPoint(std::vector(coords1, coords1+2))); - points->push(new IfcSchema::IfcCartesianPoint(std::vector(coords2, coords2+2))); - file.addEntities(points->generalize()); - IfcSchema::IfcPolyline* poly = new IfcSchema::IfcPolyline(points); - file.add_entity(poly); - - create_products_from_curve(file, poly); - - IfcSchema::IfcEllipse* ellipse = new IfcSchema::IfcEllipse(file.addPlacement2d(), 50., 25.); - file.add_entity(ellipse); - IfcEntityList::ptr trim1(new IfcEntityList); - IfcEntityList::ptr trim2(new IfcEntityList); - trim1->push(new IfcSchema::IfcParameterValue( 0.)); - trim2->push(new IfcSchema::IfcParameterValue(180.)); - IfcSchema::IfcTrimmedCurve* trim = new IfcSchema::IfcTrimmedCurve(ellipse, trim1, trim2, true, IfcSchema::IfcTrimmingPreference::IfcTrimmingPreference_PARAMETER); - file.add_entity(trim); - - create_products_from_curve(file, trim); - - file.getSingle()->setName("IfcArbitraryOpenProfileDef"); - - std::ofstream f(filename); - f << file; -} diff --git a/src/examples/composite_profile_def.cpp b/src/examples/composite_profile_def.cpp deleted file mode 100644 index e2e4568bae..0000000000 --- a/src/examples/composite_profile_def.cpp +++ /dev/null @@ -1,150 +0,0 @@ -/******************************************************************************** - * * - * This file is part of IfcOpenShell. * - * * - * IfcOpenShell is free software: you can redistribute it and/or modify * - * it under the terms of the Lesser GNU General Public License as published by * - * the Free Software Foundation, either version 3.0 of the License, or * - * (at your option) any later version. * - * * - * IfcOpenShell 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 * - * Lesser GNU General Public License for more details. * - * * - * You should have received a copy of the Lesser GNU General Public License * - * along with this program. If not, see . * - * * - ********************************************************************************/ - -/******************************************************************************** - * * - * Example that generates extrusions of parameterized profiles. * - * * - ********************************************************************************/ - -#include -#include -#include - -#include "ifcparse/macros.h" - -#ifndef IfcSchema -#define IfcSchema Ifc2x3 -#endif - -#include INCLUDE_SCHEMA(ifcparse/schemas, IfcSchema) -#include INCLUDE_SCHEMA_DEFINITIONS(ifcparse/schemas, IfcSchema) - -#include "ifcparse/hierarchy_helper.h" - -typedef std::string S; -typedef ifcopenshell::global_id guid; -boost::none_t const null = boost::none; - -#ifdef SCHEMA_IfcIShapeProfileDef_HAS_FlangeEdgeRadius -#define IFC_I_SHAPE_PROFILE_DEF_EXTRA_ARGS , null, null -#else -#define IFC_I_SHAPE_PROFILE_DEF_EXTRA_ARGS -#endif - -#ifdef SCHEMA_IfcLShapeProfileDef_HAS_CentreOfGravityInX -#define IFC_L_SHAPE_PROFILE_DEF_EXTRA_ARGS , null, null -#else -#define IFC_L_SHAPE_PROFILE_DEF_EXTRA_ARGS -#endif - -#ifdef SCHEMA_IfcTShapeProfileDef_HAS_CentreOfGravityInY -#define IFC_T_SHAPE_PROFILE_DEF_EXTRA_ARGS , null -#else -#define IFC_T_SHAPE_PROFILE_DEF_EXTRA_ARGS -#endif - -#ifdef SCHEMA_IfcCShapeProfileDef_HAS_CentreOfGravityInX -#define IFC_C_SHAPE_PROFILE_DEF_EXTRA_ARGS , null -#else -#define IFC_C_SHAPE_PROFILE_DEF_EXTRA_ARGS -#endif - -int main(int argc, char** argv) { - const char filename[] = "IfcCompositeProfileDef.ifc"; - hierarchy_helper file; - file.header().file_name().name(filename); - - double coords1[] = {100.0, 0.0}; - double coords2[] = {200.0, 0.0}; - double coords3[] = {300.0, 0.0}; - - IfcSchema::IfcProfileDef::list::ptr profiles (new IfcSchema::IfcProfileDef::list()); - - IfcSchema::IfcCartesianTransformationOperator2D* transform1 = new IfcSchema::IfcCartesianTransformationOperator2D(file.addDoublet(1, 0), file.addDoublet(0, -1), file.addDoublet(40, 0), null); - IfcSchema::IfcCartesianTransformationOperator2D* transform2 = new IfcSchema::IfcCartesianTransformationOperator2D(file.addDoublet(0, -1), file.addDoublet(1, 0), file.addDoublet(40, 0), 0.3); - - IfcSchema::IfcProfileDef* p1 = new IfcSchema::IfcIShapeProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, file.addPlacement2d(), 25.0, 50.0, 5.0, 5.0, 2.0 IFC_I_SHAPE_PROFILE_DEF_EXTRA_ARGS); - - IfcSchema::IfcProfileDef* p2 = new IfcSchema::IfcLShapeProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, file.addPlacement2d(), 50.0, 25.0, 5.0, 1.0, 2.0, 2.0 IFC_L_SHAPE_PROFILE_DEF_EXTRA_ARGS); - - IfcSchema::IfcProfileDef* p3 = new IfcSchema::IfcTShapeProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, file.addPlacement2d(), 50.0, 40.0, 10.0, 10.0, 3.0, 2.0, 1.0, 2.0, 2.0 IFC_T_SHAPE_PROFILE_DEF_EXTRA_ARGS); - - IfcSchema::IfcProfileDef* p4 = new IfcSchema::IfcCShapeProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, file.addPlacement2d(80.), 50.0, 25.0, 5.0, 10.0, 2.0 IFC_C_SHAPE_PROFILE_DEF_EXTRA_ARGS); - - file.add_entity(p2); - file.add_entity(p3); - - file.add_entity(transform1); - file.add_entity(transform2); - - IfcSchema::IfcDerivedProfileDef* p5 = new IfcSchema::IfcDerivedProfileDef(IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, null, p2, transform1, null); - IfcSchema::IfcDerivedProfileDef* p6 = new IfcSchema::IfcDerivedProfileDef(IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, null, p3, transform2, null); - - profiles->push(p1); - profiles->push(p5); - profiles->push(p6); - profiles->push(p4); - - file.addEntities(profiles->generalize()); - - IfcSchema::IfcCompositeProfileDef* composite = new IfcSchema::IfcCompositeProfileDef(IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, S("IFC"), profiles, null); - - IfcSchema::IfcBuildingElementProxy* product = new IfcSchema::IfcBuildingElementProxy( - guid(), 0, S("profile"), null, null, 0, 0, null, null); - - file.addBuildingProduct(product); - - product->setOwnerHistory(file.getSingle()); - - product->setObjectPlacement(file.addLocalPlacement()); - - IfcSchema::IfcExtrudedAreaSolid* solid = new IfcSchema::IfcExtrudedAreaSolid(composite, - file.addPlacement3d(), file.addTriplet(0, 0, 1), 20.0); - - file.add_entity(composite); - file.add_entity(solid); - - IfcSchema::IfcRepresentation::list::ptr reps (new IfcSchema::IfcRepresentation::list()); - IfcSchema::IfcRepresentationItem::list::ptr items (new IfcSchema::IfcRepresentationItem::list()); - - items->push(solid); - IfcSchema::IfcShapeRepresentation* rep = new IfcSchema::IfcShapeRepresentation( - file.getSingle(), S("Body"), S("SweptSolid"), items); - reps->push(rep); - - IfcSchema::IfcProductDefinitionShape* shape = new IfcSchema::IfcProductDefinitionShape(boost::none, boost::none, reps); - file.add_entity(rep); - file.add_entity(shape); - - product->setRepresentation(shape); - - file.getSingle()->setName("IfcCompositeProfileDef"); - - std::ofstream f(filename); - f << file; -} diff --git a/src/examples/csg_primitive.cpp b/src/examples/csg_primitive.cpp deleted file mode 100644 index c83b2a8ef9..0000000000 --- a/src/examples/csg_primitive.cpp +++ /dev/null @@ -1,200 +0,0 @@ -/******************************************************************************** - * * - * This file is part of IfcOpenShell. * - * * - * IfcOpenShell is free software: you can redistribute it and/or modify * - * it under the terms of the Lesser GNU General Public License as published by * - * the Free Software Foundation, either version 3.0 of the License, or * - * (at your option) any later version. * - * * - * IfcOpenShell 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 * - * Lesser GNU General Public License for more details. * - * * - * You should have received a copy of the Lesser GNU General Public License * - * along with this program. If not, see . * - * * - ********************************************************************************/ - -/******************************************************************************** - * * - * Example that generates a Constructive Solid Geometry example * - * * - ********************************************************************************/ - -#include -#include -#include - -#include "ifcparse/macros.h" - -#ifndef IfcSchema -#define IfcSchema Ifc2x3 -#endif - -#include INCLUDE_SCHEMA(ifcparse/schemas, IfcSchema) -#include INCLUDE_SCHEMA_DEFINITIONS(ifcparse/schemas, IfcSchema) - -#include "ifcparse/hierarchy_helper.h" - -typedef std::string S; -typedef ifcopenshell::global_id guid; -boost::none_t const null = boost::none; - -class Node { -private: - typedef enum { - OP_ADD, OP_SUBTRACT, OP_INTERSECT, OP_TERMINAL - } Op; - typedef enum { - PRIM_BOX, PRIM_CONE, PRIM_CYLINDER, PRIM_PYRAMID, PRIM_SPHERE - } Prim; - - double x,y,z, zx,zy,zz, xx,xy,xz, a,b,c; - const Node *left, *right; - - Op op; - Prim prim; - - Node& operate(Op op, const Node& p) { - left = new Node(*this); - right = new Node(p); - this->op = op; - return *this; - } - - Node(Prim p, double la, double lb=0., double lc=0.) - : prim(p), op(OP_TERMINAL), - x(0.), y(0.), z(0.), - zx(0.), zy(0.), zz(1.), - xx(1.), xy(0.), xz(0.), - a(la), b(lb), c(lc) {} -public: - static Node Sphere(double r) { - return Node(PRIM_SPHERE, r); - } - static Node Box(double dx, double dy, double dz) { - return Node(PRIM_BOX, dx, dy, dz); - } - static Node Pyramid(double dx, double dy, double dz) { - return Node(PRIM_PYRAMID, dx, dy, dz); - } - static Node Cylinder(double r, double h) { - return Node(PRIM_CYLINDER, r, h); - } - static Node Cone(double r, double h) { - return Node(PRIM_CONE, r, h); - } - - Node& move( - double px = 0., double py = 0., double pz = 0., - double zx = 0., double zy = 0., double zz = 1., - double xx = 1., double xy = 0., double xz = 0.) - { - this->x = px; this->y = py; this->z = pz; - this->zx = zx; this->zy = zy; this->zz = zz; - this->xx = xx; this->xy = xy; this->xz = xz; - return *this; - } - - Node& add(const Node& p) { - return operate(OP_ADD, p); - } - Node& subtract(const Node& p) { - return operate(OP_SUBTRACT, p); - } - Node& intersect(const Node& p) { - return operate(OP_INTERSECT, p); - } - - IfcSchema::IfcRepresentationItem* serialize(hierarchy_helper& file) const { - IfcSchema::IfcRepresentationItem* my; - if (op == OP_TERMINAL) { - IfcSchema::IfcAxis2Placement3D* place = file.addPlacement3d(x,y,z,zx,zy,zz,xx,xy,xz); - if (prim == PRIM_SPHERE) { - my = new IfcSchema::IfcSphere(place, a); - } else if (prim == PRIM_BOX) { - my = new IfcSchema::IfcBlock(place, a, b, c); - } else if (prim == PRIM_PYRAMID) { - my = new IfcSchema::IfcRectangularPyramid(place, a, b, c); - } else if (prim == PRIM_CYLINDER) { - my = new IfcSchema::IfcRightCircularCylinder(place, b, a); - } else if (prim == PRIM_CONE) { - my = new IfcSchema::IfcRightCircularCone(place, b, a); - } - } else { - IfcSchema::IfcBooleanOperator::IfcBooleanOperator o; - if (op == OP_ADD) { - o = IfcSchema::IfcBooleanOperator::IfcBooleanOperator_UNION; - } else if (op == OP_SUBTRACT) { - o = IfcSchema::IfcBooleanOperator::IfcBooleanOperator_DIFFERENCE; - } else if (op == OP_INTERSECT) { - o = IfcSchema::IfcBooleanOperator::IfcBooleanOperator_INTERSECTION; - } - my = new IfcSchema::IfcBooleanResult(o, left->serialize(file), right->serialize(file)); - } - file.add_entity(my); - return my; - } -}; - -int main(int argc, char** argv) { - const char filename[] = "IfcCsgPrimitive.ifc"; - hierarchy_helper file; - file.header().file_name().name(filename); - - IfcSchema::IfcRepresentationItem* csg1 = Node::Box(8000.,6000.,3000.).subtract( - Node::Box(7600.,5600.,2800.).move(200.,200.,200.) - ).add( - Node::Pyramid(8000.,6000.,3000.).move(0,0,3000.).add( - Node::Cylinder(1000.,4000.).move(4000.,1000.,4000., 0.,1.,0.) - ).subtract( - Node::Pyramid(7600.,5600.,2800.).move(200.,200.,3000.) - ).subtract( - Node::Cylinder(900.,4000.).move(4000.,1000.,4000., 0.,1.,0.).intersect( - Node::Box(2000.,4000.,1000.).move(3000.,1000.,4000.) - ) - ) - ).serialize(file); - - const double x = 1000.; const double y = -4000.; - - IfcSchema::IfcRepresentationItem* csg2 = Node::Sphere(5000.).move(x,y,-4500.).intersect( - Node::Box(6000., 6000., 6000.).move(x-3000., y-3000., 0.) - ).add( - Node::Cone(500., 3000.).move(x,y).add( - Node::Cone(1500., 1000.).move(x,y, 900.).add( - Node::Cone(1100., 1000.).move(x,y, 1800.).add( - Node::Cone(750., 600.).move(x,y, 2700.) - )))).serialize(file); - - IfcSchema::IfcBuildingElementProxy* product = new IfcSchema::IfcBuildingElementProxy( - guid(), 0, S("IfcCsgPrimitive"), null, null, 0, 0, null, null); - - file.addBuildingProduct(product); - - product->setOwnerHistory(file.getSingle()); - - product->setObjectPlacement(file.addLocalPlacement()); - - IfcSchema::IfcRepresentation::list::ptr reps (new IfcSchema::IfcRepresentation::list()); - IfcSchema::IfcRepresentationItem::list::ptr items (new IfcSchema::IfcRepresentationItem::list()); - - items->push(csg1); - items->push(csg2); - IfcSchema::IfcShapeRepresentation* rep = new IfcSchema::IfcShapeRepresentation( - file.getSingle(), S("Body"), S("CSG"), items); - reps->push(rep); - - IfcSchema::IfcProductDefinitionShape* shape = new IfcSchema::IfcProductDefinitionShape(null, null, reps); - file.add_entity(rep); - file.add_entity(shape); - - product->setRepresentation(shape); - - file.getSingle()->setName("IfcCompositeProfileDef"); - - std::ofstream f(filename); - f << file; -} diff --git a/src/examples/ellipse_pies.cpp b/src/examples/ellipse_pies.cpp deleted file mode 100644 index 91ce01fafe..0000000000 --- a/src/examples/ellipse_pies.cpp +++ /dev/null @@ -1,161 +0,0 @@ -/******************************************************************************** - * * - * This file is part of IfcOpenShell. * - * * - * IfcOpenShell is free software: you can redistribute it and/or modify * - * it under the terms of the Lesser GNU General Public License as published by * - * the Free Software Foundation, either version 3.0 of the License, or * - * (at your option) any later version. * - * * - * IfcOpenShell 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 * - * Lesser GNU General Public License for more details. * - * * - * You should have received a copy of the Lesser GNU General Public License * - * along with this program. If not, see . * - * * - ********************************************************************************/ - -/******************************************************************************** - * * - * Example that generates profiles of trimmed ellipses. * - * * - ********************************************************************************/ - -#include -#include -#include - -#include "ifcparse/macros.h" - -#ifndef IfcSchema -#define IfcSchema Ifc2x3 -#endif - -#include INCLUDE_SCHEMA(ifcparse/schemas, IfcSchema) -#include INCLUDE_SCHEMA_DEFINITIONS(ifcparse/schemas, IfcSchema) - -#include "ifcparse/hierarchy_helper.h" - -typedef std::string S; -typedef ifcopenshell::global_id guid; -boost::none_t const null = boost::none; - -#ifdef SCHEMA_HAS_IfcSegment -typedef IfcSchema::IfcSegment curve_segment_tt; -#else -typedef IfcSchema::IfcCompositeCurveSegment curve_segment_tt; -#endif - -typedef struct { - double r1; - double r2; - double t1; - double t2; -} EllipsePie; - -static int i = 0; - -void create_testcase_for(hierarchy_helper& file, const EllipsePie& pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference pref) { - const double deg = 1. / 180. * 3.141592653; - double flt1[] = {0. , 0. }; - double flt2[] = {pie.r1 * cos(pie.t1*deg), pie.r2 * sin(pie.t1*deg)}; - double flt3[] = {pie.r1 * cos(pie.t2*deg), pie.r2 * sin(pie.t2*deg)}; - - std::vector coords1(flt1, flt1 + 2); - std::vector coords2(flt2, flt2 + 2); - std::vector coords3(flt3, flt3 + 2); - - IfcSchema::IfcCartesianPoint* p1 = new IfcSchema::IfcCartesianPoint(coords1); - IfcSchema::IfcCartesianPoint* p2 = new IfcSchema::IfcCartesianPoint(coords2); - IfcSchema::IfcCartesianPoint* p3 = new IfcSchema::IfcCartesianPoint(coords3); - - IfcSchema::IfcCartesianPoint::list::ptr points(new IfcSchema::IfcCartesianPoint::list()); - points->push(p3); - points->push(p1); - points->push(p2); - file.addEntities(points->generalize()); - - - IfcSchema::IfcEllipse* ellipse = new IfcSchema::IfcEllipse(file.addPlacement2d(), pie.r1, pie.r2); - file.addEntity(ellipse); - aggregate_of_instance::ptr trim1(new aggregate_of_instance); - aggregate_of_instance::ptr trim2(new aggregate_of_instance); - if (pref == IfcSchema::IfcTrimmingPreference::IfcTrimmingPreference_PARAMETER) { - trim1->push(new IfcSchema::IfcParameterValue(pie.t1)); - trim2->push(new IfcSchema::IfcParameterValue(pie.t2)); - } else { - trim1->push(p2); - trim2->push(p3); - } - IfcSchema::IfcTrimmedCurve* trim = new IfcSchema::IfcTrimmedCurve(ellipse, trim1->as(), trim2->as(), true, pref); - file.addEntity(trim); - - curve_segment_tt::list::ptr segments(new curve_segment_tt::list()); - IfcSchema::IfcCompositeCurveSegment* s2 = new IfcSchema::IfcCompositeCurveSegment(IfcSchema::IfcTransitionCode::IfcTransitionCode_CONTINUOUS, true, trim); - - IfcSchema::IfcPolyline* poly = new IfcSchema::IfcPolyline(points); - file.addEntity(poly); - IfcSchema::IfcCompositeCurveSegment* s1 = new IfcSchema::IfcCompositeCurveSegment(IfcSchema::IfcTransitionCode::IfcTransitionCode_CONTINUOUS, true, poly); - segments->push(s1); - - segments->push(s2); - file.addEntities(segments->generalize()); - - IfcSchema::IfcCompositeCurve* ccurve = new IfcSchema::IfcCompositeCurve(segments, false); - IfcSchema::IfcArbitraryClosedProfileDef* profile = new IfcSchema::IfcArbitraryClosedProfileDef(IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, null, ccurve); - file.addEntity(ccurve); - file.addEntity(profile); - - IfcSchema::IfcBuildingElementProxy* product = new IfcSchema::IfcBuildingElementProxy( - guid(), 0, S("profile"), null, null, 0, 0, null, null); - file.addBuildingProduct(product); - product->setOwnerHistory(file.getSingle()); - - product->setObjectPlacement(file.addLocalPlacement(0, 200 * i++)); - - IfcSchema::IfcExtrudedAreaSolid* solid = new IfcSchema::IfcExtrudedAreaSolid(profile, - file.addPlacement3d(), file.addTriplet(0, 0, 1), 20.0); - - file.add_entity(solid); - - IfcSchema::IfcRepresentation::list::ptr reps (new IfcSchema::IfcRepresentation::list()); - IfcSchema::IfcRepresentationItem::list::ptr items (new IfcSchema::IfcRepresentationItem::list()); - - items->push(solid); - IfcSchema::IfcShapeRepresentation* rep = new IfcSchema::IfcShapeRepresentation( - file.getSingle(), S("Body"), S("SweptSolid"), items); - reps->push(rep); - - IfcSchema::IfcProductDefinitionShape* shape = new IfcSchema::IfcProductDefinitionShape(boost::none, boost::none, reps); - file.add_entity(rep); - file.add_entity(shape); - - product->setRepresentation(shape); -} - -int main(int argc, char** argv) { - const std::string filename = "ellipse_pies.ifc"; - hierarchy_helper file; - { EllipsePie pie = {80., 50., 0., 150.}; - create_testcase_for(file, pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_PARAMETER); - create_testcase_for(file, pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_CARTESIAN);} - { EllipsePie pie = {80, 50., 30., 300.}; - create_testcase_for(file, pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_PARAMETER); - create_testcase_for(file, pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_CARTESIAN);} - { EllipsePie pie = {80, 50., 300., 30.}; - create_testcase_for(file, pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_PARAMETER); - create_testcase_for(file, pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_CARTESIAN);} - { EllipsePie pie = {50., 80., 0., 150.}; - create_testcase_for(file, pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_PARAMETER); - create_testcase_for(file, pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_CARTESIAN);} - { EllipsePie pie = {50, 80., 30., 300.}; - create_testcase_for(file, pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_PARAMETER); - create_testcase_for(file, pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_CARTESIAN);} - { EllipsePie pie = {50, 80., 300., 30.}; - create_testcase_for(file, pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_PARAMETER); - create_testcase_for(file, pie, Ifc2x3::IfcTrimmingPreference::IfcTrimmingPreference_CARTESIAN);} - std::ofstream f(filename.c_str()); - f << file; -} diff --git a/src/examples/faces.cpp b/src/examples/faces.cpp deleted file mode 100644 index 34fd3d0e5a..0000000000 --- a/src/examples/faces.cpp +++ /dev/null @@ -1,214 +0,0 @@ -/******************************************************************************** - * * - * This file is part of IfcOpenShell. * - * * - * IfcOpenShell is free software: you can redistribute it and/or modify * - * it under the terms of the Lesser GNU General Public License as published by * - * the Free Software Foundation, either version 3.0 of the License, or * - * (at your option) any later version. * - * * - * IfcOpenShell 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 * - * Lesser GNU General Public License for more details. * - * * - * You should have received a copy of the Lesser GNU General Public License * - * along with this program. If not, see . * - * * - ********************************************************************************/ - -/******************************************************************************** - * * - * Example that generates various forms of IfcFace * - * * - ********************************************************************************/ - -#include "ifcparse/macros.h" - -#ifndef IfcSchema -#define IfcSchema Ifc2x3 -#endif - -#include INCLUDE_SCHEMA(ifcparse/schemas, IfcSchema) -#include INCLUDE_SCHEMA_DEFINITIONS(ifcparse/schemas, IfcSchema) - -#include "ifcparse/hierarchy_helper.h" - -typedef std::string S; -typedef ifcopenshell::global_id guid; -boost::none_t const null = (static_cast(0)); - -static int x = 0; - -void create_testcase(hierarchy_helper& file, IfcSchema::IfcFace* face, const std::string& name) { - IfcSchema::IfcFace::list::ptr faces(new IfcSchema::IfcFace::list); - faces->push(face); - IfcSchema::IfcOpenShell* shell = new IfcSchema::IfcOpenShell(faces); - - IfcSchema::IfcConnectedFaceSet::list::ptr shells(new IfcSchema::IfcConnectedFaceSet::list); - shells->push(shell); - IfcSchema::IfcFaceBasedSurfaceModel* model = new IfcSchema::IfcFaceBasedSurfaceModel(shells); - - IfcSchema::IfcBuildingElementProxy* product = new IfcSchema::IfcBuildingElementProxy( - guid(), 0, name, null, null, 0, 0, null, null); - file.addBuildingProduct(product); - product->setOwnerHistory(file.getSingle()); - - product->setObjectPlacement(file.addLocalPlacement(0, 1000 * x++, 0)); - - IfcSchema::IfcRepresentation::list::ptr reps (new IfcSchema::IfcRepresentation::list); - IfcSchema::IfcRepresentationItem::list::ptr items (new IfcSchema::IfcRepresentationItem::list); - - items->push(model); - IfcSchema::IfcShapeRepresentation* rep = new IfcSchema::IfcShapeRepresentation( - file.getRepresentationContext("Model"), S("Body"), S("SurfaceModel"), items); - reps->push(rep); - - IfcSchema::IfcProductDefinitionShape* shape = new IfcSchema::IfcProductDefinitionShape(0, 0, reps); - file.add_entity(shape); - - product->setRepresentation(shape); -} - -int main(int argc, char** argv) { - hierarchy_helper file; - { - IfcSchema::IfcCartesianPoint::list::ptr points (new IfcSchema::IfcCartesianPoint::list); - points->push(file.addTriplet(-400, -400, 0)); - points->push(file.addTriplet(+400, -400, 0)); - points->push(file.addTriplet(+400, +400, 0)); - points->push(file.addTriplet(-400, +400, 0)); - IfcSchema::IfcPolyLoop* loop = new IfcSchema::IfcPolyLoop(points); - IfcSchema::IfcFaceOuterBound* bound = new IfcSchema::IfcFaceOuterBound(loop, true); - - IfcSchema::IfcFaceBound::list::ptr bounds (new IfcSchema::IfcFaceBound::list); - bounds->push(bound); - IfcSchema::IfcFace* face = new IfcSchema::IfcFace(bounds); - create_testcase(file, face, "polyloop"); - } - { - IfcSchema::IfcCartesianPoint* point1 = file.addTriplet(+400, 0., 0.); - IfcSchema::IfcCartesianPoint* point2 = file.addTriplet(-400, 0., 0.); - IfcSchema::IfcVertexPoint* vertex1 = new IfcSchema::IfcVertexPoint(point1); - IfcSchema::IfcVertexPoint* vertex2 = new IfcSchema::IfcVertexPoint(point2); - IfcSchema::IfcCircle* circle = new IfcSchema::IfcCircle(file.addPlacement2d(), 400.); - IfcSchema::IfcEdgeCurve* edge1 = new IfcSchema::IfcEdgeCurve(vertex1, vertex2, circle, true); - IfcSchema::IfcEdgeCurve* edge2 = new IfcSchema::IfcEdgeCurve(vertex2, vertex1, circle, true); - IfcSchema::IfcOrientedEdge* oriented_edge1 = new IfcSchema::IfcOrientedEdge(edge1, true); - IfcSchema::IfcOrientedEdge* oriented_edge2 = new IfcSchema::IfcOrientedEdge(edge2, true); - IfcSchema::IfcOrientedEdge::list::ptr edges(new IfcSchema::IfcOrientedEdge::list); - edges->push(oriented_edge1); - edges->push(oriented_edge2); - IfcSchema::IfcEdgeLoop* loop = new IfcSchema::IfcEdgeLoop(edges); - IfcSchema::IfcFaceOuterBound* bound = new IfcSchema::IfcFaceOuterBound(loop, true); - - IfcSchema::IfcFaceBound::list::ptr bounds (new IfcSchema::IfcFaceBound::list); - bounds->push(bound); - IfcSchema::IfcFace* face = new IfcSchema::IfcFace(bounds); - create_testcase(file, face, "circle"); - } - { - IfcSchema::IfcCartesianPoint::list::ptr points (new IfcSchema::IfcCartesianPoint::list); - points->push(file.addTriplet(-400, -400, 0)); - points->push(file.addTriplet(+400, -400, 0)); - points->push(file.addTriplet(+400, +400, 0)); - points->push(file.addTriplet(-400, +400, 0)); - IfcSchema::IfcPolyLoop* loop = new IfcSchema::IfcPolyLoop(points); - IfcSchema::IfcFaceOuterBound* outer_bound = new IfcSchema::IfcFaceOuterBound(loop, true); - - IfcSchema::IfcCartesianPoint::list::ptr points2 (new IfcSchema::IfcCartesianPoint::list); - points2->push(file.addTriplet(-300, -300, 0)); - points2->push(file.addTriplet(-100, -300, 0)); - points2->push(file.addTriplet(-100, +300, 0)); - points2->push(file.addTriplet(-300, +300, 0)); - IfcSchema::IfcPolyLoop* loop2 = new IfcSchema::IfcPolyLoop(points2); - IfcSchema::IfcFaceBound* inner_bound1 = new IfcSchema::IfcFaceBound(loop2, false); - - IfcSchema::IfcCartesianPoint::list::ptr points3 (new IfcSchema::IfcCartesianPoint::list); - points3->push(file.addTriplet(+100, +300, 0)); - points3->push(file.addTriplet(+300, +300, 0)); - points3->push(file.addTriplet(+300, -300, 0)); - points3->push(file.addTriplet(+100, -300, 0)); - IfcSchema::IfcPolyLoop* loop3 = new IfcSchema::IfcPolyLoop(points3); - IfcSchema::IfcFaceBound* inner_bound2 = new IfcSchema::IfcFaceBound(loop3, true); - - IfcSchema::IfcFaceBound::list::ptr bounds (new IfcSchema::IfcFaceBound::list); - bounds->push(inner_bound1); - bounds->push(outer_bound); - bounds->push(inner_bound2); - IfcSchema::IfcFace* face = new IfcSchema::IfcFace(bounds); - create_testcase(file, face, "polyloop with holes"); - } - { - IfcSchema::IfcCartesianPoint::list::ptr points (new IfcSchema::IfcCartesianPoint::list); - points->push(file.addTriplet(-400, -400, 0)); - points->push(file.addTriplet(-100, -400, 0)); - points->push(file.addTriplet(-100, +400, 0)); - points->push(file.addTriplet(-400, +400, 0)); - IfcSchema::IfcPolyLoop* loop = new IfcSchema::IfcPolyLoop(points); - IfcSchema::IfcFaceOuterBound* bound1 = new IfcSchema::IfcFaceOuterBound(loop, true); - - IfcSchema::IfcCartesianPoint::list::ptr points2 (new IfcSchema::IfcCartesianPoint::list); - points2->push(file.addTriplet(+100, +400, 0)); - points2->push(file.addTriplet(+400, +400, 0)); - points2->push(file.addTriplet(+400, -400, 0)); - points2->push(file.addTriplet(+100, -400, 0)); - IfcSchema::IfcPolyLoop* loop2 = new IfcSchema::IfcPolyLoop(points2); - IfcSchema::IfcFaceOuterBound* bound2 = new IfcSchema::IfcFaceOuterBound(loop2, false); - - IfcSchema::IfcFaceBound::list::ptr bounds (new IfcSchema::IfcFaceBound::list); - bounds->push(bound1); - bounds->push(bound2); - IfcSchema::IfcFace* face = new IfcSchema::IfcFace(bounds); - create_testcase(file, face, "multiple outer boundaries (invalid)"); - } - { - IfcSchema::IfcCartesianPoint::list::ptr points (new IfcSchema::IfcCartesianPoint::list); - points->push(file.addTriplet(-400, -400, 1e-6)); - points->push(file.addTriplet(+400, -400, 0)); - points->push(file.addTriplet(+400, +400, 0)); - points->push(file.addTriplet(-400, +400, 0)); - IfcSchema::IfcPolyLoop* loop = new IfcSchema::IfcPolyLoop(points); - IfcSchema::IfcFaceOuterBound* bound = new IfcSchema::IfcFaceOuterBound(loop, true); - - IfcSchema::IfcFaceBound::list::ptr bounds (new IfcSchema::IfcFaceBound::list); - bounds->push(bound); - IfcSchema::IfcFace* face = new IfcSchema::IfcFace(bounds); - create_testcase(file, face, "imprecise polyloop"); - } - { - IfcSchema::IfcCartesianPoint* point1 = file.addTriplet(+400, 0., 0.); - IfcSchema::IfcCartesianPoint* point2 = file.addTriplet(-400, 0., 0.); - IfcSchema::IfcVertexPoint* vertex1 = new IfcSchema::IfcVertexPoint(point1); - IfcSchema::IfcVertexPoint* vertex2 = new IfcSchema::IfcVertexPoint(point2); - IfcSchema::IfcCircle* circle = new IfcSchema::IfcCircle(file.addPlacement2d(), 400.); - IfcSchema::IfcEdgeCurve* edge1 = new IfcSchema::IfcEdgeCurve(vertex1, vertex2, circle, true); - IfcSchema::IfcEdgeCurve* edge2 = new IfcSchema::IfcEdgeCurve(vertex2, vertex1, circle, true); - IfcSchema::IfcOrientedEdge* oriented_edge1 = new IfcSchema::IfcOrientedEdge(edge1, true); - IfcSchema::IfcOrientedEdge* oriented_edge2 = new IfcSchema::IfcOrientedEdge(edge2, true); - IfcSchema::IfcOrientedEdge::list::ptr edges(new IfcSchema::IfcOrientedEdge::list); - edges->push(oriented_edge1); - edges->push(oriented_edge2); - IfcSchema::IfcEdgeLoop* loop = new IfcSchema::IfcEdgeLoop(edges); - IfcSchema::IfcFaceOuterBound* bound = new IfcSchema::IfcFaceOuterBound(loop, true); - - IfcSchema::IfcFaceBound::list::ptr bounds (new IfcSchema::IfcFaceBound::list); - bounds->push(bound); - - IfcSchema::IfcCartesianPoint::list::ptr trim1(new IfcSchema::IfcCartesianPoint::list); - IfcSchema::IfcCartesianPoint::list::ptr trim2(new IfcSchema::IfcCartesianPoint::list); - trim1->push(point1); - trim2->push(point2); - IfcSchema::IfcTrimmedCurve* trimmed_curve = new IfcSchema::IfcTrimmedCurve(circle, trim1->generalize(), trim2->generalize(), true, IfcSchema::IfcTrimmingPreference::IfcTrimmingPreference_CARTESIAN); - IfcSchema::IfcArbitraryOpenProfileDef* profile = new IfcSchema::IfcArbitraryOpenProfileDef(IfcSchema::IfcProfileTypeEnum::IfcProfileType_CURVE, boost::none, trimmed_curve); - IfcSchema::IfcAxis1Placement* place = new IfcSchema::IfcAxis1Placement(file.addTriplet(0., 0., 0.), file.addTriplet(1., 0., 0.)); - IfcSchema::IfcSurfaceOfRevolution* surface = new IfcSchema::IfcSurfaceOfRevolution(profile, file.addPlacement3d(), place); - - IfcSchema::IfcFace* face = new IfcSchema::IfcFaceSurface(bounds, surface, true); - create_testcase(file, face, "face surface"); - } - const std::string filename = "faces.ifc"; - file.header().file_name().name(filename); - std::ofstream f(filename.c_str()); - f << file; -} diff --git a/src/examples/ifc_curve_rebar.cpp b/src/examples/ifc_curve_rebar.cpp deleted file mode 100644 index 41d997b1e3..0000000000 --- a/src/examples/ifc_curve_rebar.cpp +++ /dev/null @@ -1,164 +0,0 @@ -/******************************************************************************** -* * -* This file is part of IfcOpenShell. * -* * -* IfcOpenShell is free software: you can redistribute it and/or modify * -* it under the terms of the Lesser GNU General Public License as published by * -* the Free Software Foundation, either version 3.0 of the License, or * -* (at your option) any later version. * -* * -* IfcOpenShell 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 * -* Lesser GNU General Public License for more details. * -* * -* You should have received a copy of the Lesser GNU General Public License * -* along with this program. If not, see . * -* * -********************************************************************************/ - -/******************************************************************************** -* * -* Example of curve rebar. * -* * -********************************************************************************/ - -#include -#include -#include - -#include "ifcparse/macros.h" - -#ifndef IfcSchema -#define IfcSchema Ifc2x3 -#endif - -#include INCLUDE_SCHEMA(ifcparse/schemas, IfcSchema) -#include INCLUDE_SCHEMA_DEFINITIONS(ifcparse/schemas, IfcSchema) - -#include "ifcparse/hierarchy_helper.h" - -#include -const static double PI = boost::math::constants::pi(); - -typedef std::string S; -typedef ifcopenshell::global_id guid; -boost::none_t const null = boost::none; - -#ifdef SCHEMA_HAS_IfcSegment -typedef IfcSchema::IfcSegment curve_segment_t; -#else -typedef IfcSchema::IfcCompositeCurveSegment curve_segment_t; -#endif - -#ifdef SCHEMA_IfcReinforcingBar_HAS_PredefinedType -#define IFC_REINFORCING_BAR_TYPE IfcSchema::IfcReinforcingBarTypeEnum::IfcReinforcingBarType_LIGATURE -#else -#define IFC_REINFORCING_BAR_TYPE IfcSchema::IfcReinforcingBarRoleEnum::IfcReinforcingBarRole_LIGATURE -#endif - -void create_curve_rebar(hierarchy_helper& file) -{ - int dia = 24; - int R = 3 * dia; - int length = 12 * dia; - - double crossSectionarea = M_PI * (dia / 2) * 2; - IfcSchema::IfcReinforcingBar* rebar = new IfcSchema::IfcReinforcingBar( - guid(), 0, S("test"), null, - null, 0, 0, - null, S("SR24"), //SteelGrade - dia, //diameter - crossSectionarea, //crossSectionarea = math.pi*(12.0/2)**2 - 0, - IFC_REINFORCING_BAR_TYPE, - IfcSchema::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurface_PLAIN //PLAIN or TEXTURED - ); - - file.addBuildingProduct(rebar); - rebar->setOwnerHistory(file.getSingle()); - - curve_segment_t::list::ptr segments(new curve_segment_t::list()); - - IfcSchema::IfcCartesianPoint* p1 = file.addTriplet(0, 0, 1000.); - IfcSchema::IfcCartesianPoint* p2 = file.addTriplet(0, 0, 0); - IfcSchema::IfcCartesianPoint* p3 = file.addTriplet(0, R, 0); - IfcSchema::IfcCartesianPoint* p4 = file.addTriplet(0, R, -R); - IfcSchema::IfcCartesianPoint* p5 = file.addTriplet(0, R + length, -R); - - /*first segment - line */ - IfcSchema::IfcCartesianPoint::list::ptr points1(new IfcSchema::IfcCartesianPoint::list()); - points1->push(p1); - points1->push(p2); - file.addEntities(points1->generalize()); - IfcSchema::IfcPolyline* poly1 = new IfcSchema::IfcPolyline(points1); - file.add_entity(poly1); - - IfcSchema::IfcCompositeCurveSegment* segment1 = new IfcSchema::IfcCompositeCurveSegment(IfcSchema::IfcTransitionCode::IfcTransitionCode_CONTINUOUS, true, poly1); - file.add_entity(segment1); - segments->push(segment1); - - /*second segment - arc */ - IfcSchema::IfcAxis2Placement3D* axis1 = new IfcSchema::IfcAxis2Placement3D(p3, file.addTriplet(1, 0, 0), file.addTriplet(0, 1, 0)); - file.add_entity(axis1); - IfcSchema::IfcCircle* circle = new IfcSchema::IfcCircle(axis1, R); - file.add_entity(circle); - - IfcEntityList::ptr trim1(new IfcEntityList); - IfcEntityList::ptr trim2(new IfcEntityList); - - trim1->push(new IfcSchema::IfcParameterValue(180)); - trim1->push(p2); - - trim2->push(new IfcSchema::IfcParameterValue(270)); - trim2->push(p4); - IfcSchema::IfcTrimmedCurve* trimmed_curve = new IfcSchema::IfcTrimmedCurve(circle, trim1, trim2, false, IfcSchema::IfcTrimmingPreference::IfcTrimmingPreference_PARAMETER); - file.add_entity(trimmed_curve); - - IfcSchema::IfcCompositeCurveSegment* segment2 = new IfcSchema::IfcCompositeCurveSegment(IfcSchema::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT, false, trimmed_curve); - file.add_entity(segment2); - segments->push(segment2); - - /*third segment - line */ - IfcSchema::IfcCartesianPoint::list::ptr points2(new IfcSchema::IfcCartesianPoint::list()); - points2->push(p4); - points2->push(p5); - file.addEntities(points2->generalize()); - IfcSchema::IfcPolyline* poly2 = new IfcSchema::IfcPolyline(points2); - file.add_entity(poly2); - - IfcSchema::IfcCompositeCurveSegment* segment3 = new IfcSchema::IfcCompositeCurveSegment(IfcSchema::IfcTransitionCode::IfcTransitionCode_CONTINUOUS, true, poly2); - file.add_entity(segment3); - segments->push(segment3); - - IfcSchema::IfcCompositeCurve* curve = new IfcSchema::IfcCompositeCurve(segments, false); - file.add_entity(curve); - - IfcSchema::IfcSweptDiskSolid* solid = new IfcSchema::IfcSweptDiskSolid(curve, dia / 2, null, 0, 1); - - IfcSchema::IfcRepresentation::list::ptr reps(new IfcSchema::IfcRepresentation::list()); - IfcSchema::IfcRepresentationItem::list::ptr items(new IfcSchema::IfcRepresentationItem::list()); - items->push(solid); - IfcSchema::IfcShapeRepresentation* rep = new IfcSchema::IfcShapeRepresentation( - file.getSingle(), S("Body"), S("AdvancedSweptSolid"), items); - reps->push(rep); - - IfcSchema::IfcProductDefinitionShape* shape = new IfcSchema::IfcProductDefinitionShape(null, null, reps); - file.add_entity(shape); - - rebar->setRepresentation(shape); - - IfcSchema::IfcObjectPlacement* storey_placement = file.getSingle()->ObjectPlacement(); - rebar->setObjectPlacement(file.addLocalPlacement(storey_placement, 0, 0, 0)); -} - -int main() -{ - hierarchy_helper file; - file.header().file_name().name("ifc_curve_rebar.ifc"); - create_curve_rebar(file); - std::ofstream f("ifc_curve_rebar.ifc"); - f << file; - - return 0; -} diff --git a/src/examples/profiles.cpp b/src/examples/profiles.cpp deleted file mode 100644 index cf4d6b8152..0000000000 --- a/src/examples/profiles.cpp +++ /dev/null @@ -1,249 +0,0 @@ -/******************************************************************************** - * * - * This file is part of IfcOpenShell. * - * * - * IfcOpenShell is free software: you can redistribute it and/or modify * - * it under the terms of the Lesser GNU General Public License as published by * - * the Free Software Foundation, either version 3.0 of the License, or * - * (at your option) any later version. * - * * - * IfcOpenShell 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 * - * Lesser GNU General Public License for more details. * - * * - * You should have received a copy of the Lesser GNU General Public License * - * along with this program. If not, see . * - * * - ********************************************************************************/ - -/******************************************************************************** - * * - * Example that generates extrusions of parameterized profiles. * - * * - ********************************************************************************/ - -#include -#include -#include - -#include "ifcparse/macros.h" - -#ifndef IfcSchema -#define IfcSchema Ifc2x3 -#endif - -#include INCLUDE_SCHEMA(ifcparse/schemas, IfcSchema) -#include INCLUDE_SCHEMA_DEFINITIONS(ifcparse/schemas, IfcSchema) - -#include "ifcparse/hierarchy_helper.h" - -typedef std::string S; -typedef IfcWrite::IfcGuidHelper guid; -boost::none_t const null = (static_cast(0)); - -#ifdef SCHEMA_IfcUShapeProfileDef_HAS_CentreOfGravityInX -#define IFC_U_SHAPE_PROFILE_DEF_EXTRA_ARGS , null -#else -#define IFC_U_SHAPE_PROFILE_DEF_EXTRA_ARGS -#endif - -#ifdef SCHEMA_IfcTShapeProfileDef_HAS_CentreOfGravityInY -#define IFC_T_SHAPE_PROFILE_DEF_EXTRA_ARGS , null -#else -#define IFC_T_SHAPE_PROFILE_DEF_EXTRA_ARGS -#endif - -#ifdef SCHEMA_IfcIShapeProfileDef_HAS_FlangeEdgeRadius -#define IFC_I_SHAPE_PROFILE_DEF_EXTRA_ARGS , null, null -#else -#define IFC_I_SHAPE_PROFILE_DEF_EXTRA_ARGS -#endif - -#ifdef SCHEMA_IfcAsymmetricIShapeProfileDef_HAS_BottomFlangeSlope -#define IFC_ASYMMETRIC_I_SHAPE_PROFILE_DEF_EXTRA_ARGS , null, null, null -#else -#define IFC_ASYMMETRIC_I_SHAPE_PROFILE_DEF_EXTRA_ARGS -#endif - -#ifdef SCHEMA_IfcLShapeProfileDef_HAS_CentreOfGravityInX -#define IFC_L_SHAPE_PROFILE_DEF_EXTRA_ARGS , null, null -#else -#define IFC_L_SHAPE_PROFILE_DEF_EXTRA_ARGS -#endif - -#ifdef SCHEMA_IfcCShapeProfileDef_HAS_CentreOfGravityInX -#define IFC_C_SHAPE_PROFILE_DEF_EXTRA_ARGS , null -#else -#define IFC_C_SHAPE_PROFILE_DEF_EXTRA_ARGS -#endif - -void create_testcase_for(IfcSchema::IfcProfileDef::list::ptr profiles) { - IfcSchema::IfcProfileDef* profile = *profiles->begin(); - const std::string profile_type = IfcSchema::Type::ToString(profile->type()); - const std::string filename = profile_type + ".ifc"; - - hierarchy_helper file; - file.filename(filename); - - int i = 0; - for (IfcSchema::IfcProfileDef::list::it it = profiles->begin(); it != profiles->end(); ++it, ++i) { - IfcSchema::IfcProfileDef* profile = *it; - IfcSchema::IfcBuildingElementProxy* product = new IfcSchema::IfcBuildingElementProxy( - guid(), 0, S("profile"), null, null, 0, 0, null, null); - file.addBuildingProduct(product); - file.getSingle()->setName(profile_type); - product->setOwnerHistory(file.getSingle()); - - product->setObjectPlacement(file.addLocalPlacement(0, 100. * i)); - - if (profile->is(IfcSchema::Type::IfcParameterizedProfileDef)) { - ((IfcSchema::IfcParameterizedProfileDef*) profile)->setPosition(file.addPlacement2d()); - } - - IfcSchema::IfcExtrudedAreaSolid* solid = new IfcSchema::IfcExtrudedAreaSolid(profile, - file.addPlacement3d(), file.addTriplet(0, 0, 1), 20.0); - - file.add_entity(profile); - file.add_entity(solid); - - IfcSchema::IfcRepresentation::list::ptr reps (new IfcSchema::IfcRepresentation::list); - IfcSchema::IfcRepresentationItem::list::ptr items (new IfcSchema::IfcRepresentationItem::list); - - items->push(solid); - IfcSchema::IfcShapeRepresentation* rep = new IfcSchema::IfcShapeRepresentation( - file.getSingle(), S("Body"), S("SweptSolid"), items); - reps->push(rep); - - IfcSchema::IfcProductDefinitionShape* shape = new IfcSchema::IfcProductDefinitionShape(0, 0, reps); - file.add_entity(rep); - file.add_entity(shape); - - product->setRepresentation(shape); - } - - std::ofstream f(filename.c_str()); - f << file; -} - -int main(int argc, char** argv) { - { IfcSchema::IfcProfileDef::list::ptr profiles (new IfcSchema::IfcProfileDef::list); - profiles->push(new Ifc2x3::IfcUShapeProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 50.0, 25.0, 5.0, 5.0, null, null, null IFC_U_SHAPE_PROFILE_DEF_EXTRA_ARGS)); - profiles->push(new IfcSchema::IfcUShapeProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 50.0, 25.0, 5.0, 5.0, 2.0, 2.0, null IFC_U_SHAPE_PROFILE_DEF_EXTRA_ARGS)); - profiles->push(new IfcSchema::IfcUShapeProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 50.0, 25.0, 5.0, 5.0, null, null, 4.0 IFC_U_SHAPE_PROFILE_DEF_EXTRA_ARGS)); - profiles->push(new IfcSchema::IfcUShapeProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 50.0, 25.0, 5.0, 5.0, 1.0, 3.0, 6.0 IFC_U_SHAPE_PROFILE_DEF_EXTRA_ARGS)); - create_testcase_for(profiles); } - - { IfcSchema::IfcProfileDef::list::ptr profiles (new IfcSchema::IfcProfileDef::list); - profiles->push(new Ifc2x3::IfcTShapeProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 50.0, 25.0, 5.0, 5.0, null, null, null, null, null IFC_T_SHAPE_PROFILE_DEF_EXTRA_ARGS)); - profiles->push(new IfcSchema::IfcTShapeProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 50.0, 25.0, 5.0, 5.0, 2.0, 2.0, 2.0, null, null IFC_T_SHAPE_PROFILE_DEF_EXTRA_ARGS)); - profiles->push(new IfcSchema::IfcTShapeProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 50.0, 25.0, 5.0, 5.0, null, null, null, 2.0, 2.0 IFC_T_SHAPE_PROFILE_DEF_EXTRA_ARGS)); - profiles->push(new IfcSchema::IfcTShapeProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 50.0, 25.0, 5.0, 5.0, 3.0, 2.0, 1.0, 2.0, 2.0 IFC_T_SHAPE_PROFILE_DEF_EXTRA_ARGS)); - create_testcase_for(profiles); } - - { IfcSchema::IfcProfileDef::list::ptr profiles (new IfcSchema::IfcProfileDef::list); - profiles->push(new Ifc2x3::IfcZShapeProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 50.0, 25.0, 5.0, 5.0, null, null)); - profiles->push(new Ifc2x3::IfcZShapeProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 50.0, 25.0, 5.0, 5.0, 2.0, 2.0)); - create_testcase_for(profiles); } - - { IfcSchema::IfcProfileDef::list::ptr profiles (new IfcSchema::IfcProfileDef::list); - profiles->push(new Ifc2x3::IfcEllipseProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 25.0, 15.0)); - profiles->push(new Ifc2x3::IfcEllipseProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 15.0, 25.0)); - create_testcase_for(profiles); } - - { IfcSchema::IfcProfileDef::list::ptr profiles (new IfcSchema::IfcProfileDef::list); - profiles->push(new IfcSchema::IfcIShapeProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 25.0, 50.0, 5.0, 5.0, null IFC_I_SHAPE_PROFILE_DEF_EXTRA_ARGS)); - profiles->push(new IfcSchema::IfcIShapeProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 25.0, 50.0, 5.0, 5.0, 2.0 IFC_I_SHAPE_PROFILE_DEF_EXTRA_ARGS)); - profiles->push(new IfcSchema::IfcAsymmetricIShapeProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 25.0, 50.0, 5.0, 5.0, 2.0, 20.0, 10.0, 5.0, null IFC_ASYMMETRIC_I_SHAPE_PROFILE_DEF_EXTRA_ARGS)); - create_testcase_for(profiles); } - - { IfcSchema::IfcProfileDef::list::ptr profiles (new IfcSchema::IfcProfileDef::list); - profiles->push(new Ifc2x3::IfcLShapeProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 50.0, 25.0, 5.0, null, null, null IFC_L_SHAPE_PROFILE_DEF_EXTRA_ARGS)); - profiles->push(new IfcSchema::IfcLShapeProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 50.0, 25.0, 5.0, 2.0, 2.0, null IFC_L_SHAPE_PROFILE_DEF_EXTRA_ARGS)); - profiles->push(new IfcSchema::IfcLShapeProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 50.0, 25.0, 5.0, null, null, 2.0 IFC_L_SHAPE_PROFILE_DEF_EXTRA_ARGS)); - profiles->push(new IfcSchema::IfcLShapeProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 50.0, 25.0, 5.0, 1.0, 2.0, 2.0 IFC_L_SHAPE_PROFILE_DEF_EXTRA_ARGS)); - create_testcase_for(profiles); } - - { IfcSchema::IfcProfileDef::list::ptr profiles (new IfcSchema::IfcProfileDef::list); - profiles->push(new Ifc2x3::IfcCShapeProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 50.0, 25.0, 5.0, 10.0, null IFC_C_SHAPE_PROFILE_DEF_EXTRA_ARGS)); - profiles->push(new IfcSchema::IfcCShapeProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 50.0, 25.0, 5.0, 10.0, 2.0 IFC_C_SHAPE_PROFILE_DEF_EXTRA_ARGS)); - create_testcase_for(profiles); } - - { IfcSchema::IfcProfileDef::list::ptr profiles (new IfcSchema::IfcProfileDef::list); - profiles->push(new Ifc2x3::IfcCircleProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 25.0)); - profiles->push(new Ifc2x3::IfcCircleHollowProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 25.0, 5.0)); - create_testcase_for(profiles); } - - { IfcSchema::IfcProfileDef::list::ptr profiles (new IfcSchema::IfcProfileDef::list); - profiles->push(new Ifc2x3::IfcRectangleProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 50.0, 25.0)); - profiles->push(new Ifc2x3::IfcRoundedRectangleProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 50.0, 25.0, 5.0)); - profiles->push(new Ifc2x3::IfcRectangleHollowProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 50.0, 25.0, 5.0, null, null)); - profiles->push(new Ifc2x3::IfcRectangleHollowProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 50.0, 25.0, 5.0, 2.0, 4.0)); - create_testcase_for(profiles); } - - { IfcSchema::IfcProfileDef::list::ptr profiles (new IfcSchema::IfcProfileDef::list); - profiles->push(new Ifc2x3::IfcTrapeziumProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 50.0, 30.0, 25.0, 0.0)); - profiles->push(new Ifc2x3::IfcTrapeziumProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 50.0, 60.0, 25.0, -20.0)); - profiles->push(new Ifc2x3::IfcTrapeziumProfileDef( - IfcSchema::IfcProfileTypeEnum::IfcProfileType_AREA, - null, 0, 50.0, 10.0, 25.0, 30.0)); - create_testcase_for(profiles); } -} diff --git a/src/examples/suzanne_geometry.h b/src/examples/suzanne_geometry.h deleted file mode 100644 index 9b44ad8216..0000000000 --- a/src/examples/suzanne_geometry.h +++ /dev/null @@ -1,5978 +0,0 @@ -/******************************************************************************** - * * - * This file is part of IfcOpenShell. * - * * - * IfcOpenShell is free software: you can redistribute it and/or modify * - * it under the terms of the Lesser GNU General Public License as published by * - * the Free Software Foundation, either version 3.0 of the License, or * - * (at your option) any later version. * - * * - * IfcOpenShell 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 * - * Lesser GNU General Public License for more details. * - * * - * You should have received a copy of the Lesser GNU General Public License * - * along with this program. If not, see . * - * * - ********************************************************************************/ - -/******************************************************************************** - * * - * Vertices and indices for 'Suzanne' a mesh that ships with Blender * - * * - ********************************************************************************/ - -static double vertices[] = { - 492.1875, -720.703125, 185.546875, - -492.1875, -720.703125, 185.546875, - 558.59375, -625.0, 158.203125, - -558.59375, -625.0, 158.203125, - 437.5, -650.390625, 39.0625, - -437.5, -650.390625, 39.0625, - 410.15625, -738.28125, 105.46875, - -410.15625, -738.28125, 105.46875, - 294.921875, -759.765625, 105.46875, - -294.921875, -759.765625, 105.46875, - 265.625, -681.640625, 39.0625, - -265.625, -681.640625, 39.0625, - 144.53125, -697.265625, 158.203125, - -144.53125, -697.265625, 158.203125, - 214.84375, -769.53125, 185.546875, - -214.84375, -769.53125, 185.546875, - 214.84375, -769.53125, 300.78125, - -214.84375, -769.53125, 300.78125, - 144.53125, -697.265625, 328.125, - -144.53125, -697.265625, 328.125, - 265.625, -681.640625, 449.21875, - -265.625, -681.640625, 449.21875, - 294.921875, -759.765625, 382.8125, - -294.921875, -759.765625, 382.8125, - 410.15625, -738.28125, 382.8125, - -410.15625, -738.28125, 382.8125, - 437.5, -650.390625, 449.21875, - -437.5, -650.390625, 449.21875, - 558.59375, -625.0, 328.125, - -558.59375, -625.0, 328.125, - 492.1875, -720.703125, 300.78125, - -492.1875, -720.703125, 300.78125, - 457.03125, -769.53125, 287.109375, - -457.03125, -769.53125, 287.109375, - 396.484375, -783.203125, 349.609375, - -396.484375, -783.203125, 349.609375, - 310.546875, -800.78125, 349.609375, - -310.546875, -800.78125, 349.609375, - 251.953125, -808.59375, 287.109375, - -251.953125, -808.59375, 287.109375, - 251.953125, -808.59375, 201.171875, - -251.953125, -808.59375, 201.171875, - 310.546875, -800.78125, 142.578125, - -310.546875, -800.78125, 142.578125, - 396.484375, -783.203125, 142.578125, - -396.484375, -783.203125, 142.578125, - 457.03125, -769.53125, 201.171875, - -457.03125, -769.53125, 201.171875, - 424.4791865348816, -794.2708730697632, 213.5416716337204, - -424.4791865348816, -794.2708730697632, 213.5416716337204, - 382.8125, -804.6875, 171.875, - -382.8125, -804.6875, 171.875, - 322.9166865348816, -817.7083730697632, 171.875, - -322.9166865348816, -817.7083730697632, 171.875, - 281.25, -822.9166865348816, 213.5416716337204, - -281.25, -822.9166865348816, 213.5416716337204, - 281.25, -822.9166865348816, 273.4375, - -281.25, -822.9166865348816, 273.4375, - 322.9166865348816, -817.7083730697632, 317.7083432674408, - -322.9166865348816, -817.7083730697632, 317.7083432674408, - 382.8125, -804.6875, 317.7083432674408, - -382.8125, -804.6875, 317.7083432674408, - 424.4791865348816, -794.2708730697632, 273.4375, - -424.4791865348816, -794.2708730697632, 273.4375, - 85.9375, -601.5625, -957.03125, - -85.9375, -601.5625, -957.03125, - 226.5625, -585.9375, -939.453125, - -226.5625, -585.9375, -939.453125, - 298.828125, -587.890625, -892.578125, - -298.828125, -587.890625, -892.578125, - 308.59375, -613.28125, -777.34375, - -308.59375, -613.28125, -777.34375, - 281.25, -634.765625, -570.3125, - -281.25, -634.765625, -570.3125, - 291.015625, -644.53125, -119.140625, - -291.015625, -644.53125, -119.140625, - 521.484375, -591.796875, -42.96875, - -521.484375, -591.796875, -42.96875, - 701.171875, -552.734375, 91.796875, - -701.171875, -552.734375, 91.796875, - 789.0625, -574.21875, 289.0625, - -789.0625, -574.21875, 289.0625, - 750.0, -650.390625, 425.78125, - -750.0, -650.390625, 425.78125, - 582.03125, -708.984375, 511.71875, - -582.03125, -708.984375, 511.71875, - 390.625, -763.671875, 636.71875, - -390.625, -763.671875, 636.71875, - 248.046875, -794.921875, 683.59375, - -248.046875, -794.921875, 683.59375, - 130.859375, -800.78125, 564.453125, - -130.859375, -800.78125, 564.453125, - 41.015625, -789.0625, 425.78125, - -41.015625, -789.0625, 425.78125, - 179.6875, -806.640625, 482.421875, - -179.6875, -806.640625, 482.421875, - 273.4375, -796.875, 550.78125, - -273.4375, -796.875, 550.78125, - 376.953125, -773.4375, 525.390625, - -376.953125, -773.4375, 525.390625, - 539.0625, -726.5625, 443.359375, - -539.0625, -726.5625, 443.359375, - 667.96875, -673.828125, 365.234375, - -667.96875, -673.828125, 365.234375, - 683.59375, -638.671875, 265.625, - -683.59375, -638.671875, 265.625, - 615.234375, -636.71875, 126.953125, - -615.234375, -636.71875, 126.953125, - 470.703125, -667.96875, 21.484375, - -470.703125, -667.96875, 21.484375, - 275.390625, -732.421875, -9.765625, - -275.390625, -732.421875, -9.765625, - 123.046875, -757.8125, 44.921875, - -123.046875, -757.8125, 44.921875, - 97.65625, -800.78125, 375.0, - -97.65625, -800.78125, 375.0, - 64.453125, -777.34375, 269.53125, - -64.453125, -777.34375, 269.53125, - 74.21875, -750.0, 152.34375, - -74.21875, -750.0, 152.34375, - 56.640625, -664.0625, -912.109375, - -56.640625, -664.0625, -912.109375, - 144.53125, -667.96875, -890.625, - -144.53125, -667.96875, -890.625, - 181.640625, -685.546875, -822.265625, - -181.640625, -685.546875, -822.265625, - 164.0625, -720.703125, -570.3125, - -164.0625, -720.703125, -570.3125, - 185.546875, -705.078125, -732.421875, - -185.546875, -705.078125, -732.421875, - 41.015625, -746.09375, -376.953125, - -41.015625, -746.09375, -376.953125, - 48.828125, -742.1875, -564.453125, - -48.828125, -742.1875, -564.453125, - 56.640625, -734.375, -712.890625, - -56.640625, -734.375, -712.890625, - 109.375, -767.578125, -253.90625, - -109.375, -767.578125, -253.90625, - 117.1875, -767.578125, -183.59375, - -117.1875, -767.578125, -183.59375, - 62.5, -761.71875, -136.71875, - -62.5, -761.71875, -136.71875, - 9.765625, -767.578125, -162.109375, - -9.765625, -767.578125, -162.109375, - 44.921875, -761.71875, -302.734375, - -44.921875, -761.71875, -302.734375, - 42.96875, -792.96875, -283.203125, - -42.96875, -792.96875, -283.203125, - 21.484375, -804.6875, -166.015625, - -21.484375, -804.6875, -166.015625, - 72.265625, -796.875, -140.625, - -72.265625, -796.875, -140.625, - 111.328125, -804.6875, -185.546875, - -111.328125, -804.6875, -185.546875, - 103.515625, -802.734375, -244.140625, - -103.515625, -802.734375, -244.140625, - 62.5, -820.3125, -183.59375, - -62.5, -820.3125, -183.59375, - 46.875, -816.40625, -242.1875, - -46.875, -816.40625, -242.1875, - 56.640625, -755.859375, -85.9375, - -56.640625, -755.859375, -85.9375, - 128.90625, -753.90625, -179.6875, - -128.90625, -753.90625, -179.6875, - 138.671875, -728.515625, -267.578125, - -138.671875, -728.515625, -267.578125, - 138.671875, -728.515625, -373.046875, - -138.671875, -728.515625, -373.046875, - 240.234375, -636.71875, -376.953125, - -240.234375, -636.71875, -376.953125, - 208.984375, -632.8125, -279.296875, - -208.984375, -632.8125, -279.296875, - 181.640625, -660.15625, -195.3125, - -181.640625, -660.15625, -195.3125, - 50.78125, -728.515625, -750.0, - -50.78125, -728.515625, -750.0, - 103.515625, -720.703125, -779.296875, - -103.515625, -720.703125, -779.296875, - 80.078125, -701.171875, -851.5625, - -80.078125, -701.171875, -851.5625, - 27.34375, -689.453125, -878.90625, - -27.34375, -689.453125, -878.90625, - 23.4375, -660.15625, -863.28125, - -23.4375, -660.15625, -863.28125, - 70.3125, -667.96875, -837.890625, - -70.3125, -667.96875, -837.890625, - 93.75, -685.546875, -781.25, - -93.75, -685.546875, -781.25, - 46.875, -691.40625, -761.71875, - -46.875, -691.40625, -761.71875, - 35.15625, -646.484375, -810.546875, - -35.15625, -646.484375, -810.546875, - 78.125, -645.8333730697632, -804.6875, - -78.125, -645.8333730697632, -804.6875, - 164.0625, -765.625, 181.640625, - -164.0625, -765.625, 181.640625, - 152.34375, -771.484375, 257.8125, - -152.34375, -771.484375, 257.8125, - 169.921875, -775.390625, 347.65625, - -169.921875, -775.390625, 347.65625, - 195.3125, -761.71875, 125.0, - -195.3125, -761.71875, 125.0, - 294.921875, -742.1875, 70.3125, - -294.921875, -742.1875, 70.3125, - 429.6875, -708.984375, 60.546875, - -429.6875, -708.984375, 60.546875, - 542.96875, -679.6875, 136.71875, - -542.96875, -679.6875, 136.71875, - 607.421875, -666.015625, 242.1875, - -607.421875, -666.015625, 242.1875, - 597.65625, -673.828125, 328.125, - -597.65625, -673.828125, 328.125, - 503.90625, -712.890625, 390.625, - -503.90625, -712.890625, 390.625, - 378.90625, -748.046875, 435.546875, - -378.90625, -748.046875, 435.546875, - 296.875, -757.8125, 449.21875, - -296.875, -757.8125, 449.21875, - 224.609375, -771.484375, 419.921875, - -224.609375, -771.484375, 419.921875, - 250.0, -769.53125, 388.671875, - -250.0, -769.53125, 388.671875, - 306.640625, -761.71875, 414.0625, - -306.640625, -761.71875, 414.0625, - 376.953125, -757.8125, 406.25, - -376.953125, -757.8125, 406.25, - 482.421875, -724.609375, 369.140625, - -482.421875, -724.609375, 369.140625, - 558.59375, -683.59375, 314.453125, - -558.59375, -683.59375, 314.453125, - 566.40625, -677.734375, 244.140625, - -566.40625, -677.734375, 244.140625, - 515.625, -693.359375, 156.25, - -515.625, -693.359375, 156.25, - 421.875, -722.65625, 91.796875, - -421.875, -722.65625, 91.796875, - 304.6875, -751.953125, 95.703125, - -304.6875, -751.953125, 95.703125, - 214.84375, -765.625, 140.625, - -214.84375, -765.625, 140.625, - 205.078125, -769.53125, 332.03125, - -205.078125, -769.53125, 332.03125, - 185.546875, -767.578125, 259.765625, - -185.546875, -767.578125, 259.765625, - 189.453125, -763.671875, 193.359375, - -189.453125, -763.671875, 193.359375, - 42.96875, -675.78125, 447.265625, - -42.96875, -675.78125, 447.265625, - 130.859375, -683.59375, 583.984375, - -130.859375, -683.59375, 583.984375, - 251.953125, -675.78125, 707.03125, - -251.953125, -675.78125, 707.03125, - 408.203125, -642.578125, 650.390625, - -408.203125, -642.578125, 650.390625, - 591.796875, -589.84375, 523.4375, - -591.796875, -589.84375, 523.4375, - 761.71875, -542.96875, 443.359375, - -761.71875, -542.96875, 443.359375, - 814.453125, -468.75, 287.109375, - -814.453125, -468.75, 287.109375, - 708.984375, -443.359375, 68.359375, - -708.984375, -443.359375, 68.359375, - 527.34375, -488.28125, -68.359375, - -527.34375, -488.28125, -68.359375, - 76.171875, -304.6875, -501.953125, - -76.171875, -304.6875, -501.953125, - 66.40625, -347.65625, -667.96875, - -66.40625, -347.65625, -667.96875, - 76.171875, -402.34375, -871.09375, - -76.171875, -402.34375, -871.09375, - 85.9375, -507.8125, -968.75, - -85.9375, -507.8125, -968.75, - 250.0, -478.515625, -943.359375, - -250.0, -478.515625, -943.359375, - 328.125, -458.984375, -865.234375, - -328.125, -458.984375, -865.234375, - 314.453125, -468.75, -699.21875, - -314.453125, -468.75, -699.21875, - 201.171875, -375.0, -626.953125, - -201.171875, -375.0, -626.953125, - 230.46875, -396.484375, -832.03125, - -230.46875, -396.484375, -832.03125, - 197.265625, -353.515625, -451.171875, - -197.265625, -353.515625, -451.171875, - 287.109375, -484.375, -496.09375, - -287.109375, -484.375, -496.09375, - 230.46875, -501.953125, -267.578125, - -230.46875, -501.953125, -267.578125, - 255.859375, -490.234375, -345.703125, - -255.859375, -490.234375, -345.703125, - 212.890625, -521.484375, -208.984375, - -212.890625, -521.484375, -208.984375, - 320.3125, -515.625, -148.4375, - -320.3125, -515.625, -148.4375, - 169.921875, 675.78125, -54.6875, - -169.921875, 675.78125, -54.6875, - 160.15625, 457.03125, -259.765625, - -160.15625, 457.03125, -259.765625, - 126.953125, 66.40625, -386.71875, - -126.953125, 66.40625, -386.71875, - 97.65625, -222.65625, -437.5, - -97.65625, -222.65625, -437.5, - 210.9375, -314.453125, -359.375, - -210.9375, -314.453125, -359.375, - 740.234375, -228.515625, 87.890625, - -740.234375, -228.515625, 87.890625, - 199.21875, 761.71875, 281.25, - -199.21875, 761.71875, 281.25, - 226.5625, -93.75, 916.015625, - -226.5625, -93.75, 916.015625, - 226.5625, 269.53125, 919.921875, - -226.5625, 269.53125, 919.921875, - 228.515625, 621.09375, 691.40625, - -228.515625, 621.09375, 691.40625, - 708.984375, -392.578125, 429.6875, - -708.984375, -392.578125, 429.6875, - 699.21875, -199.21875, 531.25, - -699.21875, -199.21875, 531.25, - 718.75, 33.203125, 658.203125, - -718.75, 33.203125, 658.203125, - 718.75, 279.296875, 646.484375, - -718.75, 279.296875, 646.484375, - 707.03125, 457.03125, 453.125, - -707.03125, 457.03125, 453.125, - 542.96875, 529.296875, 578.125, - -542.96875, 529.296875, 578.125, - 546.875, 273.4375, 806.640625, - -546.875, 273.4375, 806.640625, - 546.875, -5.859375, 808.59375, - -546.875, -5.859375, 808.59375, - 546.875, -250.0, 632.8125, - -546.875, -250.0, 632.8125, - 564.453125, -439.453125, 496.09375, - -564.453125, -439.453125, 496.09375, - 228.515625, -380.859375, 710.9375, - -228.515625, -380.859375, 710.9375, - 281.25, -593.75, 591.796875, - -281.25, -593.75, 591.796875, - 263.671875, -541.015625, 527.34375, - -263.671875, -541.015625, 527.34375, - 36.4583358168602, -593.75, 479.1666865348816, - -36.4583358168602, -593.75, 479.1666865348816, - 787.109375, -306.640625, 302.734375, - -787.109375, -306.640625, 302.734375, - 808.59375, -117.1875, 380.859375, - -808.59375, -117.1875, 380.859375, - 818.359375, 60.546875, 457.03125, - -818.359375, 60.546875, 457.03125, - 796.875, 279.296875, 437.5, - -796.875, 279.296875, 437.5, - 335.9375, 41.015625, -267.578125, - -335.9375, 41.015625, -267.578125, - 541.015625, 39.0625, -134.765625, - -541.015625, 39.0625, -134.765625, - 544.921875, -275.390625, -78.125, - -544.921875, -275.390625, -78.125, - 318.359375, -378.90625, -193.359375, - -318.359375, -378.90625, -193.359375, - 278.6458432674408, -247.3958432674408, -281.25, - -278.6458432674408, -247.3958432674408, -281.25, - 283.8541865348816, -479.1666865348816, -164.0625, - -283.8541865348816, -479.1666865348816, -164.0625, - 628.90625, 500.0, 152.34375, - -628.90625, 500.0, 152.34375, - 474.609375, 625.0, 210.9375, - -474.609375, 625.0, 210.9375, - 537.109375, 337.890625, -76.171875, - -537.109375, 337.890625, -76.171875, - 388.671875, 390.625, -158.203125, - -388.671875, 390.625, -158.203125, - 388.0208432674408, 583.3333730697632, -23.4375, - -388.0208432674408, 583.3333730697632, -23.4375, - 962.890625, 263.671875, 414.0625, - -962.890625, 263.671875, 414.0625, - 1115.234375, 353.515625, 458.984375, - -1115.234375, 353.515625, 458.984375, - 1259.765625, 410.15625, 388.671875, - -1259.765625, 410.15625, 388.671875, - 1277.34375, 416.015625, 185.546875, - -1277.34375, 416.015625, 185.546875, - 1140.625, 367.1875, -1.953125, - -1140.625, 367.1875, -1.953125, - 917.96875, 222.65625, -87.890625, - -917.96875, 222.65625, -87.890625, - 945.3125, 253.90625, -33.203125, - -945.3125, 253.90625, -33.203125, - 1117.1875, 380.859375, 33.203125, - -1117.1875, 380.859375, 33.203125, - 1224.609375, 425.78125, 177.734375, - -1224.609375, 425.78125, 177.734375, - 1214.84375, 419.921875, 333.984375, - -1214.84375, 419.921875, 333.984375, - 1099.609375, 369.140625, 388.671875, - -1099.609375, 369.140625, 388.671875, - 976.5625, 289.0625, 355.46875, - -976.5625, 289.0625, 355.46875, - 693.359375, 83.984375, -48.828125, - -693.359375, 83.984375, -48.828125, - 728.515625, 148.4375, -89.84375, - -728.515625, 148.4375, -89.84375, - 792.96875, -1.953125, 126.953125, - -792.96875, -1.953125, 126.953125, - 869.140625, 216.796875, 345.703125, - -869.140625, 216.796875, 345.703125, - 810.546875, 197.265625, -33.203125, - -810.546875, 197.265625, -33.203125, - 773.4375, 226.5625, 3.90625, - -773.4375, 226.5625, 3.90625, - 785.15625, 251.953125, 58.59375, - -785.15625, 251.953125, 58.59375, - 777.34375, 236.328125, 126.953125, - -777.34375, 236.328125, 126.953125, - 841.796875, 240.234375, 226.5625, - -841.796875, 240.234375, 226.5625, - 900.390625, 246.09375, 298.828125, - -900.390625, 246.09375, 298.828125, - 830.078125, 167.96875, 285.15625, - -830.078125, 167.96875, 285.15625, - 775.390625, 128.90625, 140.625, - -775.390625, 128.90625, 140.625, - 721.3541865348816, 143.2291716337204, 5.208333488553762, - -721.3541865348816, 143.2291716337204, 5.208333488553762, - 919.921875, 304.6875, 267.578125, - -919.921875, 304.6875, 267.578125, - 865.234375, 294.921875, 205.078125, - -865.234375, 294.921875, 205.078125, - 800.78125, 296.875, 132.8125, - -800.78125, 296.875, 132.8125, - 792.96875, 296.875, 87.890625, - -792.96875, 296.875, 87.890625, - 835.9375, 296.875, 48.828125, - -835.9375, 296.875, 48.828125, - 830.078125, 296.875, 0.0, - -830.078125, 296.875, 0.0, - 847.65625, 267.578125, -17.578125, - -847.65625, 267.578125, -17.578125, - 990.234375, 351.5625, 316.40625, - -990.234375, 351.5625, 316.40625, - 1105.46875, 423.828125, 343.75, - -1105.46875, 423.828125, 343.75, - 1212.890625, 464.84375, 298.828125, - -1212.890625, 464.84375, 298.828125, - 1222.65625, 466.796875, 167.96875, - -1222.65625, 466.796875, 167.96875, - 1121.09375, 429.6875, 44.921875, - -1121.09375, 429.6875, 44.921875, - 962.890625, 316.40625, -9.765625, - -962.890625, 316.40625, -9.765625, - 876.953125, 326.171875, 66.40625, - -876.953125, 326.171875, 66.40625, - 947.265625, 345.703125, 117.1875, - -947.265625, 345.703125, 117.1875, - 1007.8125, 369.140625, 179.6875, - -1007.8125, 369.140625, 179.6875, - 1066.40625, 384.765625, 226.5625, - -1066.40625, 384.765625, 226.5625, - 1023.4375, 380.859375, 281.25, - -1023.4375, 380.859375, 281.25, - 955.078125, 347.65625, 232.421875, - -955.078125, 347.65625, 232.421875, - 896.484375, 330.078125, 171.875, - -896.484375, 330.078125, 171.875, - 832.03125, 322.265625, 113.28125, - -832.03125, 322.265625, 113.28125, - 871.09375, 310.546875, 11.71875, - -871.09375, 310.546875, 11.71875, - 966.796875, 347.65625, 42.96875, - -966.796875, 347.65625, 42.96875, - 1078.125, 414.0625, 99.609375, - -1078.125, 414.0625, 99.609375, - 1158.203125, 437.5, 181.640625, - -1158.203125, 437.5, 181.640625, - 1160.15625, 439.453125, 267.578125, - -1160.15625, 439.453125, 267.578125, - 1104.1667461395264, 429.6875, 315.1041865348816, - -1104.1667461395264, 429.6875, 315.1041865348816, - 910.15625, 318.359375, -113.28125, - -910.15625, 318.359375, -113.28125, - 1167.96875, 445.3125, -19.53125, - -1167.96875, 445.3125, -19.53125, - 1328.125, 470.703125, 181.640625, - -1328.125, 470.703125, 181.640625, - 1300.78125, 472.65625, 398.4375, - -1300.78125, 472.65625, 398.4375, - 1132.8125, 441.40625, 472.65625, - -1132.8125, 441.40625, 472.65625, - 949.21875, 353.515625, 425.78125, - -949.21875, 353.515625, 425.78125, - 927.734375, 421.875, 152.34375, - -927.734375, 421.875, 152.34375, - 1156.25, 513.671875, 218.75, - -1156.25, 513.671875, 218.75, - 1309.8958730697632, 526.0416865348816, 273.4375, - -1309.8958730697632, 526.0416865348816, 273.4375, - 835.9375, 314.453125, 345.703125, - -835.9375, 314.453125, 345.703125, - 765.625, 394.53125, 128.90625, - -765.625, 394.53125, 128.90625, - 699.21875, 261.71875, -99.609375, - -699.21875, 261.71875, -99.609375, - 503.90625, -717.7734375, 242.67578125, - 463.8671875, -753.41796875, 198.2421875, - 459.9609375, -728.02734375, 137.20703125, - 528.3203125, -676.26953125, 169.921875, - -528.3203125, -676.26953125, 169.921875, - -459.9609375, -728.02734375, 137.20703125, - -463.8671875, -753.41796875, 198.2421875, - -503.90625, -717.7734375, 242.67578125, - 576.171875, -621.09375, 242.67578125, - 510.7421875, -635.25390625, 86.42578125, - 585.9375, -570.3125, 148.4375, - -585.9375, -570.3125, 148.4375, - -510.7421875, -635.25390625, 86.42578125, - -576.171875, -621.09375, 242.67578125, - 424.8046875, -698.73046875, 67.3828125, - 351.5625, -666.9921875, 21.484375, - 449.21875, -597.65625, 15.625, - -449.21875, -597.65625, 15.625, - -351.5625, -666.9921875, 21.484375, - -424.8046875, -698.73046875, 67.3828125, - 398.92578125, -767.08984375, 136.23046875, - 352.05078125, -749.51171875, 93.75, - -352.05078125, -749.51171875, 93.75, - -398.92578125, -767.08984375, 136.23046875, - 307.6171875, -784.66796875, 136.23046875, - 246.58203125, -767.08984375, 137.20703125, - 278.80859375, -725.5859375, 67.3828125, - -278.80859375, -725.5859375, 67.3828125, - -246.58203125, -767.08984375, 137.20703125, - -307.6171875, -784.66796875, 136.23046875, - 192.3828125, -692.3828125, 86.42578125, - 253.90625, -632.8125, 15.625, - -253.90625, -632.8125, 15.625, - -192.3828125, -692.3828125, 86.42578125, - 175.78125, -737.79296875, 169.921875, - 126.953125, -698.2421875, 242.67578125, - 117.1875, -652.34375, 148.4375, - -117.1875, -652.34375, 148.4375, - -126.953125, -698.2421875, 242.67578125, - -175.78125, -737.79296875, 169.921875, - 245.60546875, -792.96875, 198.2421875, - 203.125, -769.53125, 242.67578125, - -203.125, -769.53125, 242.67578125, - -245.60546875, -792.96875, 198.2421875, - 245.60546875, -792.96875, 289.55078125, - 246.58203125, -767.08984375, 350.5859375, - 175.78125, -737.79296875, 315.4296875, - -175.78125, -737.79296875, 315.4296875, - -246.58203125, -767.08984375, 350.5859375, - -245.60546875, -792.96875, 289.55078125, - 192.3828125, -692.3828125, 401.3671875, - 117.1875, -652.34375, 339.84375, - -117.1875, -652.34375, 339.84375, - -192.3828125, -692.3828125, 401.3671875, - 278.80859375, -725.5859375, 418.9453125, - 351.5625, -666.9921875, 466.796875, - 253.90625, -632.8125, 476.5625, - -253.90625, -632.8125, 476.5625, - -351.5625, -666.9921875, 466.796875, - -278.80859375, -725.5859375, 418.9453125, - 307.6171875, -784.66796875, 354.98046875, - 352.05078125, -749.51171875, 394.53125, - -352.05078125, -749.51171875, 394.53125, - -307.6171875, -784.66796875, 354.98046875, - 398.92578125, -767.08984375, 354.98046875, - 459.9609375, -728.02734375, 350.5859375, - 424.8046875, -698.73046875, 418.9453125, - -424.8046875, -698.73046875, 418.9453125, - -459.9609375, -728.02734375, 350.5859375, - -398.92578125, -767.08984375, 354.98046875, - 510.7421875, -635.25390625, 401.3671875, - 449.21875, -597.65625, 476.5625, - -449.21875, -597.65625, 476.5625, - -510.7421875, -635.25390625, 401.3671875, - 528.3203125, -676.26953125, 315.4296875, - 585.9375, -570.3125, 339.84375, - -585.9375, -570.3125, 339.84375, - -528.3203125, -676.26953125, 315.4296875, - 463.8671875, -753.41796875, 289.55078125, - -463.8671875, -753.41796875, 289.55078125, - 464.84375, -767.578125, 243.1640625, - 434.08203125, -774.90234375, 325.1953125, - 450.8463740348816, -779.6224355697632, 284.66796875, - -450.8463740348816, -779.6224355697632, 284.66796875, - -434.08203125, -774.90234375, 325.1953125, - -464.84375, -767.578125, 243.1640625, - 352.5390625, -792.48046875, 358.3984375, - 394.04296875, -793.45703125, 344.5638120174408, - -394.04296875, -793.45703125, 344.5638120174408, - -352.5390625, -792.48046875, 358.3984375, - 275.390625, -806.640625, 325.1953125, - 312.6627802848816, -810.8724355697632, 344.5638120174408, - -312.6627802848816, -810.8724355697632, 344.5638120174408, - -275.390625, -806.640625, 325.1953125, - 243.1640625, -808.59375, 243.1640625, - 256.34765625, -818.0338740348816, 284.66796875, - -256.34765625, -818.0338740348816, 284.66796875, - -243.1640625, -808.59375, 243.1640625, - 275.390625, -806.640625, 166.015625, - 256.34765625, -818.0338740348816, 203.2877653837204, - -256.34765625, -818.0338740348816, 203.2877653837204, - -275.390625, -806.640625, 166.015625, - 352.5390625, -792.48046875, 133.7890625, - 312.6627802848816, -810.8724355697632, 146.97265625, - -312.6627802848816, -810.8724355697632, 146.97265625, - -352.5390625, -792.48046875, 133.7890625, - 434.08203125, -774.90234375, 166.015625, - 394.04296875, -793.45703125, 146.97265625, - -394.04296875, -793.45703125, 146.97265625, - -434.08203125, -774.90234375, 166.015625, - 450.8463740348816, -779.6224355697632, 203.2877653837204, - -450.8463740348816, -779.6224355697632, 203.2877653837204, - 419.2708730697632, -797.5261211395264, 242.8385466337204, - 401.0416865348816, -802.0833730697632, 195.9635466337204, - -419.2708730697632, -797.5261211395264, 242.8385466337204, - -401.0416865348816, -802.0833730697632, 195.9635466337204, - 352.2135615348816, -813.8021230697632, 175.78125, - -352.2135615348816, -813.8021230697632, 175.78125, - 305.3385615348816, -822.2656846046448, 195.9635466337204, - -305.3385615348816, -822.2656846046448, 195.9635466337204, - 285.15625, -823.5677480697632, 242.8385466337204, - -285.15625, -823.5677480697632, 242.8385466337204, - 305.3385615348816, -822.265625, 292.3177182674408, - -305.3385615348816, -822.265625, 292.3177182674408, - 352.2135615348816, -813.8021230697632, 313.1510615348816, - -352.2135615348816, -813.8021230697632, 313.1510615348816, - 401.0416865348816, -802.0833730697632, 292.3177182674408, - -401.0416865348816, -802.0833730697632, 292.3177182674408, - 87.890625, -560.546875, -969.7265625, - 164.0625, -593.75, -948.73046875, - 76.66015625, -634.765625, -936.03515625, - 0.0, -605.46875, -960.9375, - -76.66015625, -634.765625, -936.03515625, - -164.0625, -593.75, -948.73046875, - -87.890625, -560.546875, -969.7265625, - 246.09375, -535.64453125, -949.21875, - 271.97265625, -582.51953125, -922.8515625, - 192.3828125, -629.8828125, -918.45703125, - -192.3828125, -629.8828125, -918.45703125, - -271.97265625, -582.51953125, -922.8515625, - -246.09375, -535.64453125, -949.21875, - 330.56640625, -525.390625, -898.4375, - 310.05859375, -599.12109375, -845.21484375, - 245.1171875, -642.578125, -862.3046875, - -245.1171875, -642.578125, -862.3046875, - -310.05859375, -599.12109375, -845.21484375, - -330.56640625, -525.390625, -898.4375, - 335.44921875, -545.8984375, -765.625, - 297.8515625, -626.46484375, -686.5234375, - 252.44140625, -667.48046875, -758.30078125, - -252.44140625, -667.48046875, -758.30078125, - -297.8515625, -626.46484375, -686.5234375, - -335.44921875, -545.8984375, -765.625, - 308.10546875, -564.94140625, -549.8046875, - 261.23046875, -638.18359375, -457.51953125, - 226.5625, -688.4765625, -572.265625, - -226.5625, -688.4765625, -572.265625, - -261.23046875, -638.18359375, -457.51953125, - -308.10546875, -564.94140625, -549.8046875, - 200.1953125, -669.921875, -150.87890625, - 312.98828125, -563.4765625, -148.92578125, - 412.109375, -609.86328125, -87.40234375, - 272.4609375, -715.33203125, -69.3359375, - -272.4609375, -715.33203125, -69.3359375, - -412.109375, -609.86328125, -87.40234375, - -312.98828125, -563.4765625, -148.92578125, - -200.1953125, -669.921875, -150.87890625, - 529.78515625, -537.59765625, -72.75390625, - 618.1640625, -577.1484375, 16.11328125, - 501.953125, -639.16015625, -3.41796875, - -501.953125, -639.16015625, -3.41796875, - -618.1640625, -577.1484375, 16.11328125, - -529.78515625, -537.59765625, -72.75390625, - 717.7734375, -495.1171875, 67.3828125, - 761.23046875, -543.45703125, 183.10546875, - 665.0390625, -604.00390625, 119.140625, - -665.0390625, -604.00390625, 119.140625, - -761.23046875, -543.45703125, 183.10546875, - -717.7734375, -495.1171875, 67.3828125, - 822.75390625, -520.5078125, 288.57421875, - 785.15625, -618.65234375, 379.8828125, - 735.3515625, -617.67578125, 283.203125, - -735.3515625, -617.67578125, 283.203125, - -785.15625, -618.65234375, 379.8828125, - -822.75390625, -520.5078125, 288.57421875, - 770.5078125, -603.02734375, 445.80078125, - 682.6171875, -677.734375, 458.984375, - 711.9140625, -676.7578125, 395.01953125, - -711.9140625, -676.7578125, 395.01953125, - -682.6171875, -677.734375, 458.984375, - -770.5078125, -603.02734375, 445.80078125, - 594.23828125, -652.83203125, 530.2734375, - 475.5859375, -739.2578125, 574.21875, - 561.5234375, -739.74609375, 479.00390625, - -561.5234375, -739.74609375, 479.00390625, - -475.5859375, -739.2578125, 574.21875, - -594.23828125, -652.83203125, 530.2734375, - 402.83203125, -707.03125, 661.62109375, - 317.87109375, -782.2265625, 679.6875, - 379.39453125, -792.48046875, 587.40234375, - -379.39453125, -792.48046875, 587.40234375, - -317.87109375, -782.2265625, 679.6875, - -402.83203125, -707.03125, 661.62109375, - 244.140625, -740.72265625, 716.796875, - 184.5703125, -801.26953125, 645.99609375, - 259.27734375, -819.82421875, 623.046875, - -259.27734375, -819.82421875, 623.046875, - -184.5703125, -801.26953125, 645.99609375, - -244.140625, -740.72265625, 716.796875, - 120.1171875, -748.046875, 589.84375, - 83.984375, -795.8984375, 478.02734375, - 153.80859375, -825.68359375, 523.4375, - -153.80859375, -825.68359375, 523.4375, - -83.984375, -795.8984375, 478.02734375, - -120.1171875, -748.046875, 589.84375, - 36.62109375, -739.2578125, 448.73046875, - 0.0, -785.15625, 408.203125, - 60.05859375, -813.4765625, 395.5078125, - -60.05859375, -813.4765625, 395.5078125, - -36.62109375, -739.2578125, 448.73046875, - 135.7421875, -806.15234375, 425.29296875, - 204.58984375, -777.34375, 446.2890625, - 226.5625, -803.22265625, 529.78515625, - -226.5625, -803.22265625, 529.78515625, - -204.58984375, -777.34375, 446.2890625, - -135.7421875, -806.15234375, 425.29296875, - 287.109375, -763.671875, 486.328125, - 322.75390625, -787.109375, 548.33984375, - -322.75390625, -787.109375, 548.33984375, - -287.109375, -763.671875, 486.328125, - 378.41796875, -745.60546875, 468.75, - 445.80078125, -753.90625, 488.28125, - -445.80078125, -753.90625, 488.28125, - -378.41796875, -745.60546875, 468.75, - 518.5546875, -705.56640625, 411.62109375, - 624.0234375, -697.75390625, 399.4140625, - -624.0234375, -697.75390625, 399.4140625, - -518.5546875, -705.56640625, 411.62109375, - 626.953125, -665.0390625, 341.30859375, - 683.59375, -654.296875, 325.68359375, - -683.59375, -654.296875, 325.68359375, - -626.953125, -665.0390625, 341.30859375, - 639.16015625, -650.390625, 248.046875, - 662.59765625, -631.34765625, 195.80078125, - -662.59765625, -631.34765625, 195.80078125, - -639.16015625, -650.390625, 248.046875, - 568.84765625, -659.1796875, 128.41796875, - 548.828125, -650.390625, 66.40625, - -548.828125, -650.390625, 66.40625, - -568.84765625, -659.1796875, 128.41796875, - 441.89453125, -687.98828125, 40.0390625, - 379.8828125, -693.84765625, -4.8828125, - -379.8828125, -693.84765625, -4.8828125, - -441.89453125, -687.98828125, 40.0390625, - 287.109375, -729.98046875, 42.48046875, - 181.640625, -761.23046875, 6.8359375, - -181.640625, -761.23046875, 6.8359375, - -287.109375, -729.98046875, 42.48046875, - 171.38671875, -752.9296875, 101.07421875, - 90.33203125, -746.09375, 96.19140625, - 76.171875, -763.18359375, -23.92578125, - -76.171875, -763.18359375, -23.92578125, - -90.33203125, -746.09375, 96.19140625, - -171.38671875, -752.9296875, 101.07421875, - 139.16015625, -778.80859375, 360.3515625, - 71.77734375, -791.015625, 325.1953125, - -71.77734375, -791.015625, 325.1953125, - -139.16015625, -778.80859375, 360.3515625, - 118.65234375, -768.06640625, 260.7421875, - 0.0, -785.15625, 275.390625, - 67.87109375, -762.6953125, 210.9375, - -67.87109375, -762.6953125, 210.9375, - -118.65234375, -768.06640625, 260.7421875, - 0.0, -748.046875, 140.625, - 133.7890625, -755.859375, 171.38671875, - -133.7890625, -755.859375, 171.38671875, - 106.93359375, -665.0390625, -903.80859375, - 36.62109375, -684.08203125, -891.11328125, - 0.0, -664.0625, -915.0390625, - -36.62109375, -684.08203125, -891.11328125, - -106.93359375, -665.0390625, -903.80859375, - 169.43359375, -674.31640625, -865.72265625, - 101.07421875, -693.84765625, -865.234375, - -101.07421875, -693.84765625, -865.234375, - -169.43359375, -674.31640625, -865.72265625, - 185.546875, -697.265625, -773.4375, - 127.9296875, -712.890625, -789.0625, - -127.9296875, -712.890625, -789.0625, - -185.546875, -697.265625, -773.4375, - 147.94921875, -727.5390625, -458.49609375, - 102.05078125, -736.81640625, -566.89453125, - 179.19921875, -711.9140625, -673.33984375, - -179.19921875, -711.9140625, -673.33984375, - -102.05078125, -736.81640625, -566.89453125, - -147.94921875, -727.5390625, -458.49609375, - 117.1875, -727.05078125, -712.890625, - -117.1875, -727.05078125, -712.890625, - 85.9375, -741.69921875, -371.09375, - 42.96875, -748.046875, -324.21875, - 0.0, -746.09375, -381.8359375, - 41.9921875, -747.0703125, -458.0078125, - -41.9921875, -747.0703125, -458.0078125, - -42.96875, -748.046875, -324.21875, - -85.9375, -741.69921875, -371.09375, - 55.6640625, -736.328125, -661.1328125, - 0.0, -742.1875, -563.4765625, - -55.6640625, -736.328125, -661.1328125, - 0.0, -734.375, -717.7734375, - 54.19921875, -732.91015625, -736.81640625, - -54.19921875, -732.91015625, -736.81640625, - 114.74609375, -747.0703125, -259.27734375, - 121.09375, -770.5078125, -222.65625, - 109.86328125, -787.109375, -249.51171875, - 83.49609375, -763.18359375, -279.78515625, - -83.49609375, -763.18359375, -279.78515625, - -109.86328125, -787.109375, -249.51171875, - -121.09375, -770.5078125, -222.65625, - -114.74609375, -747.0703125, -259.27734375, - 118.1640625, -753.41796875, -184.5703125, - 97.65625, -763.18359375, -150.390625, - 117.67578125, -787.59765625, -182.12890625, - -117.67578125, -787.59765625, -182.12890625, - -97.65625, -763.18359375, -150.390625, - -118.1640625, -753.41796875, -184.5703125, - 55.17578125, -750.48828125, -127.9296875, - 27.83203125, -763.18359375, -141.11328125, - 70.80078125, -780.2734375, -133.7890625, - -70.80078125, -780.2734375, -133.7890625, - -27.83203125, -763.18359375, -141.11328125, - -55.17578125, -750.48828125, -127.9296875, - 0.0, -756.8359375, -165.0390625, - 0.0, -770.5078125, -176.7578125, - 17.578125, -787.59765625, -160.15625, - -17.578125, -787.59765625, -160.15625, - 0.0, -761.71875, -313.4765625, - 45.41015625, -779.296875, -294.921875, - -45.41015625, -779.296875, -294.921875, - 0.0, -792.96875, -293.9453125, - 79.58984375, -795.41015625, -262.6953125, - 41.9921875, -804.6875, -266.11328125, - -41.9921875, -804.6875, -266.11328125, - -79.58984375, -795.41015625, -262.6953125, - 0.0, -808.59375, -180.6640625, - 32.71484375, -816.40625, -175.29296875, - 44.921875, -798.828125, -145.01953125, - -44.921875, -798.828125, -145.01953125, - -32.71484375, -816.40625, -175.29296875, - 68.84765625, -810.546875, -157.2265625, - 96.6796875, -798.828125, -153.80859375, - -96.6796875, -798.828125, -153.80859375, - -68.84765625, -810.546875, -157.2265625, - 94.23828125, -816.40625, -187.98828125, - 114.2578125, -808.10546875, -220.703125, - -114.2578125, -808.10546875, -220.703125, - -94.23828125, -816.40625, -187.98828125, - 84.47265625, -812.98828125, -240.72265625, - -84.47265625, -812.98828125, -240.72265625, - 54.6875, -823.2421875, -213.8671875, - -54.6875, -823.2421875, -213.8671875, - 0.0, -816.40625, -244.140625, - 0.0, -745.1171875, -66.40625, - 103.02734375, -766.11328125, -128.90625, - -103.02734375, -766.11328125, -128.90625, - 139.16015625, -735.83984375, -229.00390625, - 149.90234375, -734.375, -179.6875, - -149.90234375, -734.375, -179.6875, - -139.16015625, -735.83984375, -229.00390625, - 135.7421875, -727.5390625, -310.546875, - 172.8515625, -695.80078125, -275.390625, - -172.8515625, -695.80078125, -275.390625, - -135.7421875, -727.5390625, -310.546875, - 192.3828125, -696.77734375, -376.953125, - -192.3828125, -696.77734375, -376.953125, - 266.6015625, -562.98828125, -368.1640625, - 221.6796875, -633.7890625, -320.3125, - -221.6796875, -633.7890625, -320.3125, - -266.6015625, -562.98828125, -368.1640625, - 232.91015625, -561.03515625, -277.34375, - 197.265625, -639.6484375, -241.69921875, - -197.265625, -639.6484375, -241.69921875, - -232.91015625, -561.03515625, -277.34375, - 208.0078125, -574.70703125, -210.44921875, - -208.0078125, -574.70703125, -210.44921875, - 89.35546875, -727.5390625, -747.55859375, - 0.0, -727.5390625, -759.765625, - 47.8515625, -716.30859375, -756.8359375, - -47.8515625, -716.30859375, -756.8359375, - -89.35546875, -727.5390625, -747.55859375, - 98.6328125, -710.9375, -821.77734375, - 96.19140625, -710.9375, -780.76171875, - -96.19140625, -710.9375, -780.76171875, - -98.6328125, -710.9375, -821.77734375, - 54.19921875, -693.359375, -870.1171875, - 72.75390625, -691.89453125, -844.23828125, - -72.75390625, -691.89453125, -844.23828125, - -54.19921875, -693.359375, -870.1171875, - 0.0, -688.4765625, -880.859375, - 24.4140625, -681.15234375, -871.09375, - -24.4140625, -681.15234375, -871.09375, - 0.0, -660.15625, -865.234375, - 46.875, -662.109375, -854.98046875, - 26.3671875, -643.06640625, -846.19140625, - -26.3671875, -643.06640625, -846.19140625, - -46.875, -662.109375, -854.98046875, - 87.890625, -676.26953125, -812.98828125, - 72.265625, -646.8099355697632, -826.66015625, - -72.265625, -646.8099355697632, -826.66015625, - -87.890625, -676.26953125, -812.98828125, - 82.03125, -691.89453125, -758.7890625, - 89.84375, -659.0169668197632, -787.109375, - -89.84375, -659.0169668197632, -787.109375, - -82.03125, -691.89453125, -758.7890625, - 0.0, -689.453125, -769.53125, - 43.9453125, -664.55078125, -775.87890625, - -43.9453125, -664.55078125, -775.87890625, - 0.0, -645.5078125, -815.4296875, - 63.4765625, -647.2982168197632, -804.19921875, - -63.4765625, -647.2982168197632, -804.19921875, - 155.2734375, -769.04296875, 217.28515625, - 177.734375, -762.6953125, 150.87890625, - 178.22265625, -770.99609375, 187.5, - -178.22265625, -770.99609375, 187.5, - -177.734375, -762.6953125, 150.87890625, - -155.2734375, -769.04296875, 217.28515625, - 156.73828125, -773.4375, 301.7578125, - 172.36328125, -775.390625, 258.30078125, - -172.36328125, -775.390625, 258.30078125, - -156.73828125, -773.4375, 301.7578125, - 192.3828125, -775.390625, 389.16015625, - 191.40625, -776.85546875, 337.890625, - -191.40625, -776.85546875, 337.890625, - -192.3828125, -775.390625, 389.16015625, - 229.98046875, -756.8359375, 99.609375, - 206.0546875, -770.5078125, 132.8125, - -206.0546875, -770.5078125, 132.8125, - -229.98046875, -756.8359375, 99.609375, - 368.65234375, -724.12109375, 52.24609375, - 300.29296875, -754.39453125, 84.47265625, - -300.29296875, -754.39453125, 84.47265625, - -368.65234375, -724.12109375, 52.24609375, - 485.3515625, -694.82421875, 90.33203125, - 425.78125, -723.14453125, 79.1015625, - -425.78125, -723.14453125, 79.1015625, - -485.3515625, -694.82421875, 90.33203125, - 588.37890625, -668.45703125, 190.4296875, - 528.3203125, -692.87109375, 147.4609375, - -528.3203125, -692.87109375, 147.4609375, - -588.37890625, -668.45703125, 190.4296875, - 607.91015625, -668.9453125, 289.0625, - 584.47265625, -677.734375, 242.67578125, - -584.47265625, -677.734375, 242.67578125, - -607.91015625, -668.9453125, 289.0625, - 566.40625, -686.5234375, 361.328125, - 576.171875, -685.05859375, 320.80078125, - -576.171875, -685.05859375, 320.80078125, - -566.40625, -686.5234375, 361.328125, - 433.59375, -738.28125, 415.52734375, - 492.67578125, -726.5625, 377.44140625, - -492.67578125, -726.5625, 377.44140625, - -433.59375, -738.28125, 415.52734375, - 334.9609375, -751.46484375, 447.75390625, - 378.41796875, -759.27734375, 417.48046875, - -378.41796875, -759.27734375, 417.48046875, - -334.9609375, -751.46484375, 447.75390625, - 261.23046875, -765.13671875, 439.94140625, - 303.22265625, -762.6953125, 428.7109375, - -303.22265625, -762.6953125, 428.7109375, - -261.23046875, -765.13671875, 439.94140625, - 239.74609375, -773.92578125, 401.3671875, - -239.74609375, -773.92578125, 401.3671875, - 277.83203125, -767.578125, 405.76171875, - 225.09765625, -769.53125, 363.76953125, - 257.8125, -761.71875, 378.90625, - -257.8125, -761.71875, 378.90625, - -225.09765625, -769.53125, 363.76953125, - -277.83203125, -767.578125, 405.76171875, - 338.8671875, -756.8359375, 414.0625, - 308.59375, -757.8125, 402.34375, - -308.59375, -757.8125, 402.34375, - -338.8671875, -756.8359375, 414.0625, - 423.828125, -751.46484375, 391.11328125, - 375.0, -750.0, 398.4375, - -375.0, -750.0, 398.4375, - -423.828125, -751.46484375, 391.11328125, - 533.69140625, -695.80078125, 342.7734375, - 472.65625, -714.84375, 363.28125, - -472.65625, -714.84375, 363.28125, - -533.69140625, -695.80078125, 342.7734375, - 566.40625, -680.17578125, 282.2265625, - 542.96875, -675.78125, 308.59375, - -542.96875, -675.78125, 308.59375, - -566.40625, -680.17578125, 282.2265625, - 551.7578125, -680.6640625, 201.66015625, - 550.78125, -671.875, 246.09375, - -550.78125, -671.875, 246.09375, - -551.7578125, -680.6640625, 201.66015625, - 468.75, -709.47265625, 116.69921875, - 503.90625, -687.5, 164.0625, - -503.90625, -687.5, 164.0625, - -468.75, -709.47265625, 116.69921875, - 369.140625, -735.83984375, 83.984375, - 417.96875, -714.84375, 101.5625, - -417.96875, -714.84375, 101.5625, - -369.140625, -735.83984375, 83.984375, - 247.0703125, -764.16015625, 117.67578125, - 308.59375, -742.1875, 105.46875, - -308.59375, -742.1875, 105.46875, - -247.0703125, -764.16015625, 117.67578125, - 198.73046875, -763.18359375, 165.52734375, - 222.65625, -753.90625, 148.4375, - -222.65625, -753.90625, 148.4375, - -198.73046875, -763.18359375, 165.52734375, - 191.40625, -769.04296875, 296.38671875, - 214.84375, -757.8125, 328.125, - -214.84375, -757.8125, 328.125, - -191.40625, -769.04296875, 296.38671875, - 185.546875, -765.625, 224.609375, - 195.3125, -753.90625, 261.71875, - -195.3125, -753.90625, 261.71875, - -185.546875, -765.625, 224.609375, - 199.21875, -750.0, 199.21875, - -199.21875, -750.0, 199.21875, - 0.0, -673.828125, 432.6171875, - 86.42578125, -679.6875, 496.09375, - 47.2005233168602, -620.1171875, 448.4049677848816, - -47.2005233168602, -620.1171875, 448.4049677848816, - -86.42578125, -679.6875, 496.09375, - 183.59375, -683.59375, 668.45703125, - 179.19921875, -625.9765625, 575.1953125, - -179.19921875, -625.9765625, 575.1953125, - -183.59375, -683.59375, 668.45703125, - 329.1015625, -661.62109375, 700.68359375, - 266.11328125, -620.1171875, 662.59765625, - -266.11328125, -620.1171875, 662.59765625, - -329.1015625, -661.62109375, 700.68359375, - 494.140625, -618.65234375, 582.51953125, - 377.44140625, -596.19140625, 621.09375, - -377.44140625, -596.19140625, 621.09375, - -494.140625, -618.65234375, 582.51953125, - 686.03515625, -562.5, 476.07421875, - 580.078125, -519.04296875, 506.8359375, - -580.078125, -519.04296875, 506.8359375, - -686.03515625, -562.5, 476.07421875, - 808.10546875, -516.6015625, 391.6015625, - 736.81640625, -472.16796875, 433.10546875, - -736.81640625, -472.16796875, 433.10546875, - -808.10546875, -516.6015625, 391.6015625, - 781.25, -433.10546875, 166.9921875, - 792.96875, -402.83203125, 290.0390625, - -792.96875, -402.83203125, 290.0390625, - -781.25, -433.10546875, 166.9921875, - 617.67578125, -471.19140625, -9.765625, - 706.0546875, -365.234375, 80.078125, - -706.0546875, -365.234375, 80.078125, - -617.67578125, -471.19140625, -9.765625, - 430.6640625, -500.9765625, -112.79296875, - 527.83203125, -411.62109375, -60.05859375, - -527.83203125, -411.62109375, -60.05859375, - -430.6640625, -500.9765625, -112.79296875, - 66.89453125, -333.0078125, -569.82421875, - 0.0, -302.734375, -514.6484375, - 88.37890625, -266.6015625, -459.47265625, - 144.53125, -318.84765625, -476.5625, - -144.53125, -318.84765625, -476.5625, - -88.37890625, -266.6015625, -459.47265625, - -66.89453125, -333.0078125, -569.82421875, - 70.80078125, -365.234375, -775.390625, - 0.0, -339.84375, -677.734375, - 133.30078125, -362.3046875, -647.94921875, - -133.30078125, -362.3046875, -647.94921875, - -70.80078125, -365.234375, -775.390625, - 81.54296875, -452.1484375, -940.4296875, - 0.0, -402.34375, -880.859375, - 152.83203125, -400.87890625, -851.5625, - -152.83203125, -400.87890625, -851.5625, - -81.54296875, -452.1484375, -940.4296875, - 169.921875, -494.62890625, -956.54296875, - 0.0, -513.671875, -974.609375, - -169.921875, -494.62890625, -956.54296875, - 308.59375, -464.84375, -916.9921875, - 243.1640625, -427.734375, -908.69140625, - -243.1640625, -427.734375, -908.69140625, - -308.59375, -464.84375, -916.9921875, - 324.70703125, -460.44921875, -791.50390625, - 293.9453125, -409.1796875, -830.56640625, - -293.9453125, -409.1796875, -830.56640625, - -324.70703125, -460.44921875, -791.50390625, - 300.78125, -478.515625, -597.65625, - 263.671875, -404.296875, -634.27734375, - -263.671875, -404.296875, -634.27734375, - -300.78125, -478.515625, -597.65625, - 215.33203125, -380.37109375, -731.93359375, - 193.359375, -369.62890625, -529.296875, - -193.359375, -369.62890625, -529.296875, - -215.33203125, -380.37109375, -731.93359375, - 205.56640625, -333.0078125, -394.04296875, - 242.1875, -408.69140625, -449.70703125, - -242.1875, -408.69140625, -449.70703125, - -205.56640625, -333.0078125, -394.04296875, - 272.4609375, -487.79296875, -407.71484375, - -272.4609375, -487.79296875, -407.71484375, - 240.72265625, -494.140625, -301.7578125, - 244.62890625, -444.82421875, -242.1875, - 222.16796875, -511.71875, -238.28125, - -222.16796875, -511.71875, -238.28125, - -244.62890625, -444.82421875, -242.1875, - -240.72265625, -494.140625, -301.7578125, - 229.98046875, -410.15625, -334.47265625, - -229.98046875, -410.15625, -334.47265625, - 234.86328125, -524.90234375, -179.19921875, - 227.7018278837204, -492.3502802848816, -192.87109375, - -227.7018278837204, -492.3502802848816, -192.87109375, - -234.86328125, -524.90234375, -179.19921875, - 311.1979365348816, -490.8854365348816, -144.53125, - -311.1979365348816, -490.8854365348816, -144.53125, - 0.0, 712.890625, -58.59375, - 176.26953125, 732.421875, 87.890625, - 309.4075620174408, 615.5599355697632, -42.96875, - 168.45703125, 585.9375, -164.55078125, - -168.45703125, 585.9375, -164.55078125, - -309.4075620174408, 615.5599355697632, -42.96875, - -176.26953125, 732.421875, 87.890625, - 0.0, 484.375, -274.4140625, - 297.36328125, 413.0859375, -219.7265625, - 145.99609375, 285.15625, -335.44921875, - -145.99609375, 285.15625, -335.44921875, - -297.36328125, 413.0859375, -219.7265625, - 0.0, 74.21875, -404.296875, - 242.67578125, 52.24609375, -339.35546875, - 108.88671875, -126.953125, -418.9453125, - -108.88671875, -126.953125, -418.9453125, - -242.67578125, 52.24609375, -339.35546875, - 0.0, -228.515625, -455.078125, - 174.8046875, -239.74609375, -400.390625, - -174.8046875, -239.74609375, -400.390625, - 229.8177182674408, -288.8997495174408, -328.125, - -229.8177182674408, -288.8997495174408, -328.125, - 788.0859375, -241.2109375, 197.265625, - 655.2734375, -247.0703125, -9.27734375, - 779.78515625, -88.8671875, 100.5859375, - -779.78515625, -88.8671875, 100.5859375, - -655.2734375, -247.0703125, -9.27734375, - -788.0859375, -241.2109375, 197.265625, - 0.0, 800.78125, 298.828125, - 222.16796875, 734.375, 493.1640625, - 367.67578125, 688.4765625, 246.09375, - -367.67578125, 688.4765625, 246.09375, - -222.16796875, 734.375, 493.1640625, - 0.0, -99.609375, 928.7109375, - 227.05078125, -249.51171875, 844.23828125, - 419.921875, -65.91796875, 876.46484375, - 226.5625, 81.0546875, 937.5, - -226.5625, 81.0546875, 937.5, - -419.921875, -65.91796875, 876.46484375, - -227.05078125, -249.51171875, 844.23828125, - 0.0, 291.015625, 930.6640625, - 419.921875, 249.0234375, 880.859375, - 227.05078125, 455.078125, 844.23828125, - -227.05078125, 455.078125, 844.23828125, - -419.921875, 249.0234375, 880.859375, - 0.0, 660.15625, 710.9375, - 421.38671875, 559.08203125, 643.5546875, - -421.38671875, 559.08203125, 643.5546875, - 646.484375, -401.3671875, 458.0078125, - 754.8828125, -374.0234375, 386.23046875, - 691.89453125, -302.24609375, 455.078125, - -691.89453125, -302.24609375, 455.078125, - -754.8828125, -374.0234375, 386.23046875, - -646.484375, -401.3671875, 458.0078125, - 629.8828125, -196.2890625, 580.078125, - 757.8125, -194.3359375, 470.21484375, - 713.8671875, -86.42578125, 613.76953125, - -713.8671875, -86.42578125, 613.76953125, - -757.8125, -194.3359375, 470.21484375, - -629.8828125, -196.2890625, 580.078125, - 636.71875, 41.9921875, 729.98046875, - 782.71484375, 21.484375, 573.73046875, - 718.75, 156.25, 667.96875, - -718.75, 156.25, 667.96875, - -782.71484375, 21.484375, 573.73046875, - -636.71875, 41.9921875, 729.98046875, - 636.71875, 298.33984375, 720.703125, - 777.34375, 258.7890625, 560.05859375, - 715.8203125, 385.25390625, 579.58984375, - -715.8203125, 385.25390625, 579.58984375, - -777.34375, 258.7890625, 560.05859375, - -636.71875, 298.33984375, 720.703125, - 768.5546875, 383.30078125, 423.828125, - 681.640625, 495.1171875, 299.8046875, - 626.953125, 504.39453125, 509.765625, - -626.953125, 504.39453125, 509.765625, - -681.640625, 495.1171875, 299.8046875, - -768.5546875, 383.30078125, 423.828125, - 523.92578125, 610.83984375, 388.671875, - 545.8984375, 407.71484375, 732.91015625, - -545.8984375, 407.71484375, 732.91015625, - -523.92578125, 610.83984375, 388.671875, - 546.875, 133.30078125, 823.73046875, - -546.875, 133.30078125, 823.73046875, - 546.875, -136.23046875, 749.0234375, - -546.875, -136.23046875, 749.0234375, - 422.36328125, -323.73046875, 679.6875, - 551.26953125, -350.09765625, 526.3671875, - -551.26953125, -350.09765625, 526.3671875, - -422.36328125, -323.73046875, 679.6875, - 443.359375, -491.2109375, 525.390625, - -443.359375, -491.2109375, 525.390625, - 0.0, -405.2734375, 722.65625, - 238.28125, -480.46875, 583.0078125, - -238.28125, -480.46875, 583.0078125, - 284.66796875, -574.70703125, 533.69140625, - -284.66796875, -574.70703125, 533.69140625, - 102.3763045668602, -578.61328125, 509.4401240348816, - -102.3763045668602, -578.61328125, 509.4401240348816, - 0.0, -589.84375, 483.7239980697632, - 793.45703125, -203.61328125, 331.0546875, - -793.45703125, -203.61328125, 331.0546875, - 828.125, -31.73828125, 265.625, - 820.80078125, -33.69140625, 430.17578125, - -820.80078125, -33.69140625, 430.17578125, - -828.125, -31.73828125, 265.625, - 832.03125, 119.62890625, 347.65625, - 808.10546875, 165.0390625, 459.9609375, - -808.10546875, 165.0390625, 459.9609375, - -832.03125, 119.62890625, 347.65625, - 806.640625, 308.59375, 344.23828125, - -806.640625, 308.59375, 344.23828125, - 307.9427182674408, -129.7200620174408, -277.83203125, - 362.79296875, 227.05078125, -233.3984375, - 428.22265625, 35.64453125, -192.3828125, - -428.22265625, 35.64453125, -192.3828125, - -362.79296875, 227.05078125, -233.3984375, - -307.9427182674408, -129.7200620174408, -277.83203125, - 640.625, 54.19921875, -88.8671875, - 556.640625, -113.76953125, -107.91015625, - 525.390625, 187.98828125, -132.8125, - -525.390625, 187.98828125, -132.8125, - -556.640625, -113.76953125, -107.91015625, - -640.625, 54.19921875, -88.8671875, - 426.7578125, -317.87109375, -134.27734375, - -426.7578125, -317.87109375, -134.27734375, - 312.6627802848816, -448.8932490348816, -169.43359375, - 305.5013120174408, -301.1067807674408, -231.93359375, - -305.5013120174408, -301.1067807674408, -231.93359375, - -312.6627802848816, -448.8932490348816, -169.43359375, - 702.1484375, 440.4296875, 134.765625, - 572.75390625, 453.61328125, 22.94921875, - 551.26953125, 564.453125, 178.7109375, - -551.26953125, 564.453125, 178.7109375, - -572.75390625, 453.61328125, 22.94921875, - -702.1484375, 440.4296875, 134.765625, - 420.7356870174408, 604.8177480697632, 66.40625, - -420.7356870174408, 604.8177480697632, 66.40625, - 617.67578125, 298.33984375, -77.1484375, - 459.9609375, 371.58203125, -101.5625, - -459.9609375, 371.58203125, -101.5625, - -617.67578125, 298.33984375, -77.1484375, - 401.2044370174408, 514.9739980697632, -76.66015625, - -401.2044370174408, 514.9739980697632, -76.66015625, - 1029.296875, 304.6875, 440.91796875, - 956.54296875, 291.015625, 430.6640625, - 911.1328125, 233.3984375, 381.34765625, - 969.23828125, 265.13671875, 385.7421875, - -969.23828125, 265.13671875, 385.7421875, - -911.1328125, 233.3984375, 381.34765625, - -956.54296875, 291.015625, 430.6640625, - -1029.296875, 304.6875, 440.91796875, - 1126.46484375, 382.32421875, 479.00390625, - 1104.4921875, 350.5859375, 424.8046875, - 1199.21875, 394.04296875, 448.2421875, - -1199.21875, 394.04296875, 448.2421875, - -1104.4921875, 350.5859375, 424.8046875, - -1126.46484375, 382.32421875, 479.00390625, - 1286.62109375, 431.640625, 403.80859375, - 1231.93359375, 406.73828125, 362.3046875, - 1288.57421875, 413.57421875, 295.8984375, - -1288.57421875, 413.57421875, 295.8984375, - -1231.93359375, 406.73828125, 362.3046875, - -1286.62109375, 431.640625, 403.80859375, - 1309.5703125, 434.5703125, 185.546875, - 1244.62890625, 413.57421875, 182.6171875, - 1227.5390625, 404.78515625, 79.1015625, - -1227.5390625, 404.78515625, 79.1015625, - -1244.62890625, 413.57421875, 182.6171875, - -1309.5703125, 434.5703125, 185.546875, - 1157.2265625, 392.578125, -17.08984375, - 1125.0, 364.74609375, 17.578125, - 1032.2265625, 305.6640625, -57.6171875, - -1032.2265625, 305.6640625, -57.6171875, - -1125.0, 364.74609375, 17.578125, - -1157.2265625, 392.578125, -17.08984375, - 910.15625, 248.53515625, -110.83984375, - 930.6640625, 228.515625, -57.6171875, - 812.01171875, 157.2265625, -97.16796875, - -812.01171875, 157.2265625, -97.16796875, - -930.6640625, 228.515625, -57.6171875, - -910.15625, 248.53515625, -110.83984375, - 1033.203125, 326.66015625, -9.765625, - 957.51953125, 287.109375, -16.6015625, - 866.69921875, 198.73046875, -40.0390625, - -866.69921875, 198.73046875, -40.0390625, - -957.51953125, 287.109375, -16.6015625, - -1033.203125, 326.66015625, -9.765625, - 1185.05859375, 414.55078125, 95.703125, - 1116.2109375, 405.76171875, 42.96875, - -1116.2109375, 405.76171875, 42.96875, - -1185.05859375, 414.55078125, 95.703125, - 1234.86328125, 424.31640625, 262.6953125, - 1217.28515625, 445.80078125, 172.36328125, - -1217.28515625, 445.80078125, 172.36328125, - -1234.86328125, 424.31640625, 262.6953125, - 1168.45703125, 404.296875, 379.8828125, - 1208.49609375, 441.89453125, 310.546875, - -1208.49609375, 441.89453125, 310.546875, - -1168.45703125, 404.296875, 379.8828125, - 1028.80859375, 326.66015625, 375.48828125, - 1100.09765625, 397.4609375, 358.88671875, - -1100.09765625, 397.4609375, 358.88671875, - -1028.80859375, 326.66015625, 375.48828125, - 936.03515625, 260.7421875, 329.58984375, - 983.88671875, 322.265625, 330.078125, - -983.88671875, 322.265625, 330.078125, - -936.03515625, 260.7421875, 329.58984375, - 736.81640625, 20.5078125, 7.8125, - 683.59375, 142.08984375, -71.77734375, - 715.0065302848816, 117.3502653837204, -16.76432229578495, - -715.0065302848816, 117.3502653837204, -16.76432229578495, - -683.59375, 142.08984375, -71.77734375, - -736.81640625, 20.5078125, 7.8125, - 698.73046875, 174.8046875, -113.76953125, - 771.484375, 162.59765625, -54.19921875, - -771.484375, 162.59765625, -54.19921875, - -698.73046875, 174.8046875, -113.76953125, - 788.57421875, 61.03515625, 146.97265625, - -788.57421875, 61.03515625, 146.97265625, - 854.00390625, 242.1875, 356.4453125, - 840.8203125, 199.70703125, 312.01171875, - 883.7890625, 223.14453125, 323.2421875, - -883.7890625, 223.14453125, 323.2421875, - -840.8203125, 199.70703125, 312.01171875, - -854.00390625, 242.1875, 356.4453125, - 838.37890625, 237.3046875, -22.4609375, - 778.80859375, 217.28515625, -17.08984375, - -778.80859375, 217.28515625, -17.08984375, - -838.37890625, 237.3046875, -22.4609375, - 814.94140625, 267.578125, 0.9765625, - 780.2734375, 234.86328125, 29.296875, - 733.0729365348816, 182.2916716337204, 6.184895988553762, - -733.0729365348816, 182.2916716337204, 6.184895988553762, - -780.2734375, 234.86328125, 29.296875, - -814.94140625, 267.578125, 0.9765625, - 789.0625, 273.92578125, 81.54296875, - 759.765625, 237.3046875, 79.58984375, - 821.2890625, 273.92578125, 52.24609375, - -821.2890625, 273.92578125, 52.24609375, - -759.765625, 237.3046875, 79.58984375, - -789.0625, 273.92578125, 81.54296875, - 792.96875, 270.01953125, 131.34765625, - 812.98828125, 240.234375, 182.12890625, - 767.08984375, 190.91796875, 127.44140625, - -767.08984375, 190.91796875, 127.44140625, - -812.98828125, 240.234375, 182.12890625, - -792.96875, 270.01953125, 131.34765625, - 869.140625, 240.72265625, 264.16015625, - 828.125, 207.51953125, 250.9765625, - 858.3984375, 268.5546875, 211.42578125, - -858.3984375, 268.5546875, 211.42578125, - -828.125, 207.51953125, 250.9765625, - -869.140625, 240.72265625, 264.16015625, - 914.0625, 276.3671875, 278.3203125, - -914.0625, 276.3671875, 278.3203125, - 815.4296875, 138.671875, 237.3046875, - -815.4296875, 138.671875, 237.3046875, - 735.5143427848816, 132.4869841337204, 46.2239570915699, - -735.5143427848816, 132.4869841337204, 46.2239570915699, - 952.1484375, 322.265625, 294.43359375, - 891.6015625, 296.38671875, 237.3046875, - 929.6875, 329.1015625, 255.859375, - -929.6875, 329.1015625, 255.859375, - -891.6015625, 296.38671875, 237.3046875, - -952.1484375, 322.265625, 294.43359375, - 836.42578125, 296.38671875, 170.41015625, - 874.0234375, 316.40625, 195.80078125, - -874.0234375, 316.40625, 195.80078125, - -836.42578125, 296.38671875, 170.41015625, - 779.296875, 296.875, 102.05078125, - 810.546875, 314.94140625, 127.9296875, - -810.546875, 314.94140625, 127.9296875, - -779.296875, 296.875, 102.05078125, - 819.3359375, 296.875, 75.1953125, - 804.6875, 314.94140625, 93.26171875, - -804.6875, 314.94140625, 93.26171875, - -819.3359375, 296.875, 75.1953125, - 840.33203125, 296.875, 20.01953125, - 848.14453125, 315.91796875, 52.24609375, - -848.14453125, 315.91796875, 52.24609375, - -840.33203125, 296.875, 20.01953125, - 825.68359375, 289.55078125, -12.20703125, - 841.30859375, 312.01171875, 2.9296875, - -841.30859375, 312.01171875, 2.9296875, - -825.68359375, 289.55078125, -12.20703125, - 894.04296875, 265.13671875, -16.6015625, - 853.515625, 291.015625, -9.27734375, - -853.515625, 291.015625, -9.27734375, - -894.04296875, 265.13671875, -16.6015625, - 1039.55078125, 387.20703125, 333.0078125, - 1001.46484375, 372.55859375, 303.7109375, - -1001.46484375, 372.55859375, 303.7109375, - -1039.55078125, 387.20703125, 333.0078125, - 1169.43359375, 452.63671875, 336.42578125, - 1109.0495586395264, 437.98828125, 332.6823115348816, - -1109.0495586395264, 437.98828125, 332.6823115348816, - -1169.43359375, 452.63671875, 336.42578125, - 1231.93359375, 467.28515625, 239.74609375, - 1204.58984375, 470.21484375, 288.0859375, - -1204.58984375, 470.21484375, 288.0859375, - -1231.93359375, 467.28515625, 239.74609375, - 1185.546875, 456.54296875, 98.14453125, - 1212.40234375, 470.21484375, 169.43359375, - -1212.40234375, 470.21484375, 169.43359375, - -1185.546875, 456.54296875, 98.14453125, - 1042.48046875, 383.7890625, 8.7890625, - 1114.2578125, 437.5, 57.6171875, - -1114.2578125, 437.5, 57.6171875, - -1042.48046875, 383.7890625, 8.7890625, - 964.84375, 337.890625, 4.39453125, - -964.84375, 337.890625, 4.39453125, - 856.93359375, 324.21875, 91.796875, - 884.27734375, 323.2421875, 39.0625, - 913.0859375, 333.984375, 88.8671875, - -913.0859375, 333.984375, 88.8671875, - -884.27734375, 323.2421875, 39.0625, - -856.93359375, 324.21875, 91.796875, - 923.828125, 338.8671875, 142.578125, - 962.890625, 349.12109375, 86.9140625, - 979.00390625, 358.3984375, 148.4375, - -979.00390625, 358.3984375, 148.4375, - -962.890625, 349.12109375, 86.9140625, - -923.828125, 338.8671875, 142.578125, - 984.86328125, 360.83984375, 204.58984375, - 1035.15625, 383.30078125, 147.94921875, - 1036.1328125, 377.9296875, 207.03125, - -1036.1328125, 377.9296875, 207.03125, - -1035.15625, 383.30078125, 147.94921875, - -984.86328125, 360.83984375, 204.58984375, - 1047.8515625, 382.8125, 253.90625, - 1097.16796875, 398.92578125, 201.66015625, - 1105.46875, 401.3671875, 244.62890625, - -1105.46875, 401.3671875, 244.62890625, - -1097.16796875, 398.92578125, 201.66015625, - -1047.8515625, 382.8125, 253.90625, - 1063.1511211395264, 403.80859375, 299.4791865348816, - 986.81640625, 361.81640625, 259.27734375, - -986.81640625, 361.81640625, 259.27734375, - -1063.1511211395264, 403.80859375, 299.4791865348816, - 925.78125, 337.40234375, 202.63671875, - -925.78125, 337.40234375, 202.63671875, - 865.72265625, 325.1953125, 141.6015625, - -865.72265625, 325.1953125, 141.6015625, - 914.55078125, 314.94140625, 25.390625, - -914.55078125, 314.94140625, 25.390625, - 1022.94921875, 387.6953125, 66.89453125, - -1022.94921875, 387.6953125, 66.89453125, - 1125.48828125, 429.6875, 138.671875, - -1125.48828125, 429.6875, 138.671875, - 1171.38671875, 439.94140625, 225.5859375, - -1171.38671875, 439.94140625, 225.5859375, - 1134.4401836395264, 436.03515625, 299.9674677848816, - -1134.4401836395264, 436.03515625, 299.9674677848816, - 1039.0625, 395.99609375, -80.078125, - 792.96875, 258.30078125, -119.62890625, - 916.50390625, 390.13671875, -42.96875, - -916.50390625, 390.13671875, -42.96875, - -792.96875, 258.30078125, -119.62890625, - -1039.0625, 395.99609375, -80.078125, - 1272.4609375, 469.23828125, 67.87109375, - 1168.9453125, 495.60546875, 41.9921875, - -1168.9453125, 495.60546875, 41.9921875, - -1272.4609375, 469.23828125, 67.87109375, - 1336.9140625, 466.30859375, 299.31640625, - 1329.4271230697632, 506.9987177848816, 201.66015625, - -1329.4271230697632, 506.9987177848816, 201.66015625, - -1336.9140625, 466.30859375, 299.31640625, - 1229.4921875, 470.703125, 461.9140625, - 1306.9661855697632, 511.3932490348816, 359.375, - -1306.9661855697632, 511.3932490348816, 359.375, - -1229.4921875, 470.703125, 461.9140625, - 1032.2265625, 397.94921875, 453.125, - 1140.625, 496.58203125, 399.4140625, - -1140.625, 496.58203125, 399.4140625, - -1032.2265625, 397.94921875, 453.125, - 883.7890625, 321.2890625, 390.13671875, - 939.94140625, 410.64453125, 349.609375, - -939.94140625, 410.64453125, 349.609375, - -883.7890625, 321.2890625, 390.13671875, - 1036.62109375, 478.02734375, 180.6640625, - 835.44921875, 381.8359375, 134.765625, - -835.44921875, 381.8359375, 134.765625, - -1036.62109375, 478.02734375, 180.6640625, - 1257.1614980697632, 529.4596552848816, 253.90625, - -1257.1614980697632, 529.4596552848816, 253.90625, - 808.59375, 382.32421875, 280.76171875, - -808.59375, 382.32421875, 280.76171875, - 723.6328125, 353.515625, -25.87890625, - -723.6328125, 353.515625, -25.87890625, - 438.8427734375, -759.033203125, 160.7666015625, - -438.8427734375, -759.033203125, 160.7666015625, - 487.3046875, -685.546875, 108.154296875, - -487.3046875, -685.546875, 108.154296875, - 532.2265625, -581.0546875, 68.359375, - -532.2265625, -581.0546875, 68.359375, - 351.5625, -616.2109375, -3.90625, - -351.5625, -616.2109375, -3.90625, - 351.6845703125, -713.0126953125, 52.24609375, - -351.6845703125, -713.0126953125, 52.24609375, - 352.4169921875, -776.123046875, 127.197265625, - -352.4169921875, -776.123046875, 127.197265625, - 270.1416015625, -790.8935546875, 160.7666015625, - -270.1416015625, -790.8935546875, 160.7666015625, - 216.6748046875, -734.4970703125, 108.154296875, - -216.6748046875, -734.4970703125, 108.154296875, - 170.8984375, -645.5078125, 68.359375, - -170.8984375, -645.5078125, 68.359375, - 97.65625, -654.296875, 243.1640625, - -97.65625, -654.296875, 243.1640625, - 160.64453125, -738.037109375, 242.431640625, - -160.64453125, -738.037109375, 242.431640625, - 236.572265625, -792.96875, 243.0419921875, - -236.572265625, -792.96875, 243.0419921875, - 270.1416015625, -790.8935546875, 329.58984375, - -270.1416015625, -790.8935546875, 329.58984375, - 216.6748046875, -734.4970703125, 377.9296875, - -216.6748046875, -734.4970703125, 377.9296875, - 170.8984375, -645.5078125, 422.8515625, - -170.8984375, -645.5078125, 422.8515625, - 351.5625, -616.2109375, 496.09375, - -351.5625, -616.2109375, 496.09375, - 351.6845703125, -713.0126953125, 434.08203125, - -351.6845703125, -713.0126953125, 434.08203125, - 352.4169921875, -776.123046875, 364.013671875, - -352.4169921875, -776.123046875, 364.013671875, - 438.8427734375, -759.033203125, 329.58984375, - -438.8427734375, -759.033203125, 329.58984375, - 487.3046875, -685.546875, 377.9296875, - -487.3046875, -685.546875, 377.9296875, - 532.2265625, -581.0546875, 422.8515625, - -532.2265625, -581.0546875, 422.8515625, - 605.46875, -566.40625, 243.1640625, - -605.46875, -566.40625, 243.1640625, - 543.45703125, -672.607421875, 242.431640625, - -543.45703125, -672.607421875, 242.431640625, - 472.65625, -751.220703125, 243.0419921875, - -472.65625, -751.220703125, 243.0419921875, - 455.4036557674408, -778.9713740348816, 243.0826872587204, - -455.4036557674408, -778.9713740348816, 243.0826872587204, - 427.5309443473816, -785.8480215072632, 318.9290463924408, - -427.5309443473816, -785.8480215072632, 318.9290463924408, - 352.4577021598816, -803.4261465072632, 350.5045771598816, - -352.4577021598816, -803.4261465072632, 350.5045771598816, - 280.9244990348816, -816.40625, 318.9290463924408, - -280.9244990348816, -816.40625, 318.9290463924408, - 250.244140625, -818.1966543197632, 243.0826872587204, - -250.244140625, -818.1966543197632, 243.0826872587204, - 280.9244990348816, -816.40625, 171.5494841337204, - -280.9244990348816, -816.40625, 171.5494841337204, - 351.9693911075592, -822.4284052848816, 242.7978515625, - -351.9693911075592, -822.4284052848816, 242.7978515625, - 352.4577021598816, -803.4261465072632, 140.869140625, - -352.4577021598816, -803.4261465072632, 140.869140625, - 427.5309443473816, -785.8480215072632, 171.5494841337204, - -427.5309443473816, -785.8480215072632, 171.5494841337204, - 0.0, -736.81640625, 432.861328125, - 0.0, -809.6787929534912, 352.4305820465088, - 0.0, -736.328125, -661.1328125, - 0.0, -779.296875, -306.15234375, - 0.0, -791.259765625, -175.29296875, - 0.0, -714.599609375, -765.13671875, - 0.0, -617.67578125, 439.0462338924408, - 0.0, -546.8750596046448, 566.5509700775146, - 0.0, 490.72265625, 855.712890625, - 0.0, 772.4609375, 518.06640625, - 0.0, 771.97265625, 93.26171875, - 0.0, 304.6875, -352.294921875, - 226.9287109375, -577.5146484375, -177.24609375, - -226.9287109375, -577.5146484375, -177.24609375, - 288.6962890625, -565.673828125, -443.359375, - -288.6962890625, -565.673828125, -443.359375, - 323.974609375, -558.9599609375, -664.794921875, - -323.974609375, -558.9599609375, -664.794921875, - 338.8671875, -532.470703125, -845.703125, - -338.8671875, -532.470703125, -845.703125, - 302.3681640625, -526.0009765625, -930.6640625, - -302.3681640625, -526.0009765625, -930.6640625, - 171.38671875, -548.9501953125, -960.205078125, - -171.38671875, -548.9501953125, -960.205078125, - 0.0, -565.91796875, -974.12109375, - 427.001953125, -545.7763671875, -116.943359375, - -427.001953125, -545.7763671875, -116.943359375, - 625.3662109375, -525.2685546875, -12.5732421875, - -625.3662109375, -525.2685546875, -12.5732421875, - 789.4287109375, -481.93359375, 167.6025390625, - -789.4287109375, -481.93359375, 167.6025390625, - 816.7724609375, -573.3642578125, 393.5546875, - -816.7724609375, -573.3642578125, 393.5546875, - 693.2373046875, -624.51171875, 479.8583984375, - -693.2373046875, -624.51171875, 479.8583984375, - 491.455078125, -682.2509765625, 592.4072265625, - -491.455078125, -682.2509765625, 592.4072265625, - 322.3876953125, -726.6845703125, 711.7919921875, - -322.3876953125, -726.6845703125, 711.7919921875, - 174.560546875, -748.1689453125, 676.26953125, - -174.560546875, -748.1689453125, 676.26953125, - 75.8056640625, -743.896484375, 499.8779296875, - -75.8056640625, -743.896484375, 499.8779296875, - 166.9921875, -780.6396484375, 407.2265625, - -166.9921875, -780.6396484375, 407.2265625, - 122.55859375, -773.92578125, 310.05859375, - -122.55859375, -773.92578125, 310.05859375, - 212.7685546875, -748.6572265625, 71.533203125, - -212.7685546875, -748.6572265625, 71.533203125, - 371.2158203125, -706.54296875, 27.4658203125, - -371.2158203125, -706.54296875, 27.4658203125, - 505.615234375, -672.7294921875, 75.3173828125, - -505.615234375, -672.7294921875, 75.3173828125, - 617.919921875, -650.634765625, 189.3310546875, - -617.919921875, -650.634765625, 189.3310546875, - 639.7705078125, -656.005859375, 300.1708984375, - -639.7705078125, -656.005859375, 300.1708984375, - 590.087890625, -680.5419921875, 376.708984375, - -590.087890625, -680.5419921875, 376.708984375, - 439.0869140625, -730.46875, 443.2373046875, - -439.0869140625, -730.46875, 443.2373046875, - 246.4599609375, -770.99609375, 473.876953125, - -246.4599609375, -770.99609375, 473.876953125, - 0.0, -732.666015625, -746.337890625, - 112.50000447034836, -726.4062762260437, -737.1875643730164, - -112.50000447034836, -726.4062762260437, -737.1875643730164, - 121.7041015625, -702.2705078125, -835.44921875, - -121.7041015625, -702.2705078125, -835.44921875, - 71.044921875, -687.744140625, -882.4462890625, - -71.044921875, -687.744140625, -882.4462890625, - 0.0, -682.861328125, -893.310546875, - 0.0, -768.5546875, -163.0859375, - 0.0, -747.3958730697632, -134.4401240348816, - 96.0693359375, -753.90625, -148.4375, - -96.0693359375, -753.90625, -148.4375, - 123.6572265625, -750.6103515625, -225.2197265625, - -123.6572265625, -750.6103515625, -225.2197265625, - 89.53125029802322, -743.9844012260437, -299.84375834465027, - -89.53125029802322, -743.9844012260437, -299.84375834465027, - 393.798828125, -667.724609375, -43.5791015625, - -393.798828125, -667.724609375, -43.5791015625, - 593.505859375, -620.849609375, 50.9033203125, - -593.505859375, -620.849609375, 50.9033203125, - 713.37890625, -599.365234375, 197.75390625, - -713.37890625, -599.365234375, 197.75390625, - 733.88671875, -647.3388671875, 355.5908203125, - -733.88671875, -647.3388671875, 355.5908203125, - 658.203125, -707.1533203125, 427.490234375, - -658.203125, -707.1533203125, 427.490234375, - 456.9091796875, -769.775390625, 536.62109375, - -456.9091796875, -769.775390625, 536.62109375, - 317.3828125, -808.837890625, 619.9951171875, - -317.3828125, -808.837890625, 619.9951171875, - 204.833984375, -825.439453125, 592.28515625, - -204.833984375, -825.439453125, 592.28515625, - 105.712890625, -821.4111328125, 447.509765625, - -105.712890625, -821.4111328125, 447.509765625, - 142.4153745174408, -776.6927480697632, -96.2999165058136, - -142.4153745174408, -776.6927480697632, -96.2999165058136, - 208.251953125, -695.4345703125, -459.47265625, - -208.251953125, -695.4345703125, -459.47265625, - 242.7978515625, -678.3447265625, -682.7392578125, - -242.7978515625, -678.3447265625, -682.7392578125, - 253.7841796875, -655.6396484375, -813.3544921875, - -253.7841796875, -655.6396484375, -813.3544921875, - 225.09765625, -632.568359375, -899.2919921875, - -225.09765625, -632.568359375, -899.2919921875, - 143.9208984375, -631.591796875, -927.978515625, - -143.9208984375, -631.591796875, -927.978515625, - 0.0, -636.71875, -939.697265625, - 0.0, -738.8238310813904, 41.5581613779068, - 0.0, -765.13671875, 209.47265625, - 329.9560546875, -755.2490234375, 484.375, - -329.9560546875, -755.2490234375, 484.375, - 149.5361328125, -752.197265625, 133.544921875, - -149.5361328125, -752.197265625, 133.544921875, - 123.6572265625, -761.8408203125, 213.9892578125, - -123.6572265625, -761.8408203125, 213.9892578125, - 114.3798828125, -730.224609375, -664.1845703125, - -114.3798828125, -730.224609375, -664.1845703125, - 89.4775390625, -742.1875, -457.1533203125, - -89.4775390625, -742.1875, -457.1533203125, - 0.0, -747.0703125, -458.984375, - 0.0, -748.046875, -333.0078125, - 84.228515625, -781.25, -272.3388671875, - -84.228515625, -781.25, -272.3388671875, - 121.337890625, -791.1376953125, -221.19140625, - -121.337890625, -791.1376953125, -221.19140625, - 100.341796875, -782.1044921875, -147.8271484375, - -100.341796875, -782.1044921875, -147.8271484375, - 39.6728515625, -782.1044921875, -138.427734375, - -39.6728515625, -782.1044921875, -138.427734375, - 0.0, -823.3507871627808, -202.3654580116272, - 47.743059694767, -809.0278506278992, -157.769113779068, - -47.743059694767, -809.0278506278992, -157.769113779068, - 88.1076455116272, -809.0278506278992, -165.1475727558136, - -88.1076455116272, -809.0278506278992, -165.1475727558136, - 93.994140625, -819.4580078125, -218.994140625, - -93.994140625, -819.4580078125, -218.994140625, - 70.095494389534, -804.4705390930176, -256.5104365348816, - -70.095494389534, -804.4705390930176, -256.5104365348816, - 0.0, -804.6875, -274.169921875, - 246.4599609375, -560.302734375, -315.673828125, - -246.4599609375, -560.302734375, -315.673828125, - 164.6728515625, -705.6884765625, -234.375, - -164.6728515625, -705.6884765625, -234.375, - 180.17578125, -695.80078125, -317.87109375, - -180.17578125, -695.80078125, -317.87109375, - 221.5576171875, -565.673828125, -244.9951171875, - -221.5576171875, -565.673828125, -244.9951171875, - 0.0, -680.908203125, -873.046875, - 48.7060546875, -684.08203125, -862.4267578125, - -48.7060546875, -684.08203125, -862.4267578125, - 90.576171875, -701.7822265625, -816.89453125, - -90.576171875, -701.7822265625, -816.89453125, - 83.8623046875, -716.6748046875, -754.5166015625, - -83.8623046875, -716.6748046875, -754.5166015625, - 0.0, -662.841796875, -782.958984375, - 77.392578125, -664.8763418197632, -771.6064453125, - -77.392578125, -664.8763418197632, -771.6064453125, - 84.2013955116272, -658.781886100769, -809.2448115348816, - -84.2013955116272, -658.781886100769, -809.2448115348816, - 51.025390625, -644.2464590072632, -838.623046875, - -51.025390625, -644.2464590072632, -838.623046875, - 0.0, -642.822265625, -848.876953125, - 172.607421875, -773.8037109375, 220.8251953125, - -172.607421875, -773.8037109375, 220.8251953125, - 189.3310546875, -769.1650390625, 158.203125, - -189.3310546875, -769.1650390625, 158.203125, - 337.890625, -757.9345703125, 427.8564453125, - -337.890625, -757.9345703125, 427.8564453125, - 271.484375, -769.4091796875, 419.921875, - -271.484375, -769.4091796875, 419.921875, - 428.7109375, -753.2958984375, 399.90234375, - -428.7109375, -753.2958984375, 399.90234375, - 548.9501953125, -697.6318359375, 350.830078125, - -548.9501953125, -697.6318359375, 350.830078125, - 584.5947265625, -681.0302734375, 285.400390625, - -584.5947265625, -681.0302734375, 285.400390625, - 568.2373046875, -680.0537109375, 195.6787109375, - -568.2373046875, -680.0537109375, 195.6787109375, - 476.806640625, -709.47265625, 105.95703125, - -476.806640625, -709.47265625, 105.95703125, - 369.0185546875, -737.060546875, 70.6787109375, - -369.0185546875, -737.060546875, 70.6787109375, - 239.3798828125, -767.9443359375, 109.0087890625, - -239.3798828125, -767.9443359375, 109.0087890625, - 178.3447265625, -776.2451171875, 297.9736328125, - -178.3447265625, -776.2451171875, 297.9736328125, - 211.7919921875, -776.3671875, 373.779296875, - -211.7919921875, -776.3671875, 373.779296875, - 235.3515625, -758.7890625, 356.4453125, - -235.3515625, -758.7890625, 356.4453125, - 200.1953125, -756.8359375, 295.8984375, - -200.1953125, -756.8359375, 295.8984375, - 253.90625, -752.9296875, 125.9765625, - -253.90625, -752.9296875, 125.9765625, - 369.140625, -727.5390625, 94.7265625, - -369.140625, -727.5390625, 94.7265625, - 460.9375, -702.1484375, 125.0, - -460.9375, -702.1484375, 125.0, - 537.109375, -675.78125, 208.0078125, - -537.109375, -675.78125, 208.0078125, - 550.78125, -672.8515625, 279.296875, - -550.78125, -672.8515625, 279.296875, - 519.53125, -687.5, 335.9375, - -519.53125, -687.5, 335.9375, - 418.9453125, -741.2109375, 385.7421875, - -418.9453125, -741.2109375, 385.7421875, - 282.2265625, -762.6953125, 394.53125, - -282.2265625, -762.6953125, 394.53125, - 338.8671875, -751.953125, 403.3203125, - -338.8671875, -751.953125, 403.3203125, - 207.03125, -750.9765625, 172.8515625, - -207.03125, -750.9765625, 172.8515625, - 196.2890625, -750.9765625, 228.515625, - -196.2890625, -750.9765625, 228.515625, - 125.52084028720856, -612.8906607627869, 489.24484848976135, - -125.52084028720856, -612.8906607627869, 489.24484848976135, - 205.7291716337204, -640.6250596046448, 638.0208730697632, - -205.7291716337204, -640.6250596046448, 638.0208730697632, - 327.6910185813904, -622.1789121627808, 665.3646230697632, - -327.6910185813904, -622.1789121627808, 665.3646230697632, - 458.1250250339508, -557.5781464576721, 553.4375309944153, - -458.1250250339508, -557.5781464576721, 553.4375309944153, - 668.0908203125, -489.013671875, 463.5009765625, - -668.0908203125, -489.013671875, 463.5009765625, - 780.3955078125, -449.70703125, 385.3759765625, - -780.3955078125, -449.70703125, 385.3759765625, - 769.775390625, -363.8916015625, 177.978515625, - -769.775390625, -363.8916015625, 177.978515625, - 619.5068359375, -387.5732421875, -0.3662109375, - -619.5068359375, -387.5732421875, -0.3662109375, - 416.6666567325592, -449.24479722976685, -110.78125238418579, - -416.6666567325592, -449.24479722976685, -110.78125238418579, - 0.0, -263.916015625, 856.201171875, - 0.0, 85.9375, 950.1953125, - 0.0, 618.65234375, -175.048828125, - 0.0, -129.39453125, -436.5234375, - 0.0, -456.54296875, -948.2421875, - 0.0, -360.3515625, -786.1328125, - 0.0, -325.68359375, -579.345703125, - 0.0, -270.5078125, -475.830078125, - 814.697265625, -114.1357421875, 226.07421875, - -814.697265625, -114.1357421875, 226.07421875, - 836.3281488418579, 49.84375461935997, 300.9375035762787, - -836.3281488418579, 49.84375461935997, 300.9375035762787, - 762.8125548362732, 418.75001788139343, 282.890647649765, - -762.8125548362732, 418.75001788139343, 282.890647649765, - 408.69140625, 665.4052734375, 442.138671875, - -408.69140625, 665.4052734375, 442.138671875, - 700.3124952316284, -72.81249761581421, -32.5000025331974, - -700.3124952316284, -72.81249761581421, -32.5000025331974, - 616.0937547683716, 167.96875, -109.53124612569809, - -616.0937547683716, 167.96875, -109.53124612569809, - 649.7802734375, 400.5126953125, 5.126953125, - -649.7802734375, 400.5126953125, 5.126953125, - 325.5208432674408, 660.9700918197632, 77.1484375, - -325.5208432674408, 660.9700918197632, 77.1484375, - 236.6943359375, -408.8134765625, -381.103515625, - -236.6943359375, -408.8134765625, -381.103515625, - 161.865234375, -279.296875, -426.7578125, - -161.865234375, -279.296875, -426.7578125, - 279.541015625, -403.076171875, -735.83984375, - -279.541015625, -403.076171875, -735.83984375, - 250.0, -407.8369140625, -535.64453125, - -250.0, -407.8369140625, -535.64453125, - 286.0243320465088, -430.3385615348816, -887.1528506278992, - -286.0243320465088, -430.3385615348816, -887.1528506278992, - 142.333984375, -373.9013671875, -753.7841796875, - -142.333984375, -373.9013671875, -753.7841796875, - 131.9580078125, -349.4873046875, -550.1708984375, - -131.9580078125, -349.4873046875, -550.1708984375, - 162.7197265625, -441.650390625, -924.6826171875, - -162.7197265625, -441.650390625, -924.6826171875, - 235.8333319425583, -404.81773018836975, -284.7656309604645, - -235.8333319425583, -404.81773018836975, -284.7656309604645, - 239.1764372587204, -474.0397334098816, -215.2099609375, - -239.1764372587204, -474.0397334098816, -215.2099609375, - 253.11055779457092, -501.8085241317749, -171.6580092906952, - -253.11055779457092, -501.8085241317749, -171.6580092906952, - 212.63019740581512, -155.83334863185883, -369.2968785762787, - -212.63019740581512, -155.83334863185883, -369.2968785762787, - 273.193359375, 251.0986328125, -293.0908203125, - -273.193359375, 251.0986328125, -293.0908203125, - 310.8724057674408, 535.4818105697632, -132.080078125, - -310.8724057674408, 535.4818105697632, -132.080078125, - 420.2880859375, 407.5927734375, 804.931640625, - -420.2880859375, 407.5927734375, 804.931640625, - 419.921875, 89.2333984375, 896.3623046875, - -419.921875, 89.2333984375, 896.3623046875, - 420.5322265625, -206.787109375, 808.4716796875, - -420.5322265625, -206.787109375, 808.4716796875, - 428.8330078125, -418.0908203125, 561.5234375, - -428.8330078125, -418.0908203125, 561.5234375, - 743.408203125, -289.0625, 409.423828125, - -743.408203125, -289.0625, 409.423828125, - 630.615234375, -302.734375, 487.548828125, - -630.615234375, -302.734375, 487.548828125, - 635.009765625, -81.54296875, 679.5654296875, - -635.009765625, -81.54296875, 679.5654296875, - 777.7099609375, -90.576171875, 535.888671875, - -777.7099609375, -90.576171875, 535.888671875, - 780.1513671875, 138.916015625, 582.275390625, - -780.1513671875, 138.916015625, 582.275390625, - 636.71875, 170.0439453125, 740.6005859375, - -636.71875, 170.0439453125, 740.6005859375, - 634.27734375, 414.0625, 650.390625, - -634.27734375, 414.0625, 650.390625, - 758.2466006278992, 343.75, 524.0886211395264, - -758.2466006278992, 343.75, 524.0886211395264, - 603.1494140625, 558.2275390625, 339.111328125, - -603.1494140625, 558.2275390625, 339.111328125, - 482.00520873069763, 522.7864980697632, 19.53125, - -482.00520873069763, 522.7864980697632, 19.53125, - 824.7656226158142, 205.31249046325684, 347.65625, - -824.7656226158142, 205.31249046325684, 347.65625, - 405.75525164604187, -158.8020771741867, -181.640625, - -405.75525164604187, -158.8020771741867, -181.640625, - 438.8427734375, 207.763671875, -174.072265625, - -438.8427734375, 207.763671875, -174.072265625, - 897.94921875, 258.7890625, 395.5078125, - -897.94921875, 258.7890625, 395.5078125, - 793.3349609375, 181.5185546875, -121.09375, - -793.3349609375, 181.5185546875, -121.09375, - 1035.888671875, 333.1298828125, -77.880859375, - -1035.888671875, 333.1298828125, -77.880859375, - 1254.8828125, 426.513671875, 70.9228515625, - -1254.8828125, 426.513671875, 70.9228515625, - 1320.4345703125, 431.396484375, 304.0771484375, - -1320.4345703125, 431.396484375, 304.0771484375, - 1218.505859375, 420.2880859375, 467.7734375, - -1218.505859375, 420.2880859375, 467.7734375, - 1031.982421875, 333.8623046875, 459.3505859375, - -1031.982421875, 333.8623046875, 459.3505859375, - 1027.2216796875, 304.3212890625, 409.1796875, - -1027.2216796875, 304.3212890625, 409.1796875, - 1179.8095703125, 389.5263671875, 415.0390625, - -1179.8095703125, 389.5263671875, 415.0390625, - 1255.37109375, 411.62109375, 280.2734375, - -1255.37109375, 411.62109375, 280.2734375, - 1200.8056640625, 401.611328125, 88.623046875, - -1200.8056640625, 401.611328125, 88.623046875, - 1030.517578125, 306.0302734375, -31.005859375, - -1030.517578125, 306.0302734375, -31.005859375, - 839.599609375, 168.5791015625, -64.5751953125, - -839.599609375, 168.5791015625, -64.5751953125, - 923.7060546875, 236.81640625, 356.4453125, - -923.7060546875, 236.81640625, 356.4453125, - 946.1669921875, 293.212890625, 306.884765625, - -946.1669921875, 293.212890625, 306.884765625, - 886.962890625, 235.107421875, -23.92578125, - -886.962890625, 235.107421875, -23.92578125, - 1037.9638671875, 356.3232421875, 4.150390625, - -1037.9638671875, 356.3232421875, 4.150390625, - 1180.0537109375, 435.546875, 99.2431640625, - -1180.0537109375, 435.546875, 99.2431640625, - 1227.05078125, 445.068359375, 247.6806640625, - -1227.05078125, 445.068359375, 247.6806640625, - 1165.0390625, 428.5888671875, 350.9521484375, - -1165.0390625, 428.5888671875, 350.9521484375, - 1033.203125, 358.642578125, 347.5341796875, - -1033.203125, 358.642578125, 347.5341796875, - 851.318359375, 216.064453125, 287.59765625, - -851.318359375, 216.064453125, 287.59765625, - 828.857421875, 270.3857421875, 173.583984375, - -828.857421875, 270.3857421875, 173.583984375, - 772.4609375, 270.263671875, 96.6796875, - -772.4609375, 270.263671875, 96.6796875, - 811.6320371627808, 281.4670205116272, 71.180559694767, - -811.6320371627808, 281.4670205116272, 71.180559694767, - 823.6083984375, 269.6533203125, 22.5830078125, - -823.6083984375, 269.6533203125, 22.5830078125, - 813.720703125, 259.521484375, -13.671875, - -813.720703125, 259.521484375, -13.671875, - 739.1764521598816, 78.2877653837204, 32.0638008415699, - -739.1764521598816, 78.2877653837204, 32.0638008415699, - 727.5261282920837, 168.22917759418488, -27.44791842997074, - -727.5261282920837, 168.22917759418488, -27.44791842997074, - 738.3072972297668, 191.97916984558105, 48.41145873069763, - -738.3072972297668, 191.97916984558105, 48.41145873069763, - 803.5888671875, 198.73046875, 201.5380859375, - -803.5888671875, 198.73046875, 201.5380859375, - 885.498046875, 269.04296875, 245.9716796875, - -885.498046875, 269.04296875, 245.9716796875, - 900.634765625, 320.068359375, 226.6845703125, - -900.634765625, 320.068359375, 226.6845703125, - 837.0226621627808, 299.4791865348816, -7.595486473292112, - -837.0226621627808, 299.4791865348816, -7.595486473292112, - 853.02734375, 315.185546875, 24.5361328125, - -853.02734375, 315.185546875, 24.5361328125, - 830.6884765625, 315.4296875, 77.880859375, - -830.6884765625, 315.4296875, 77.880859375, - 794.7049140930176, 310.112863779068, 106.5538227558136, - -794.7049140930176, 310.112863779068, 106.5538227558136, - 845.458984375, 315.5517578125, 162.9638671875, - -845.458984375, 315.5517578125, 162.9638671875, - 1049.1130352020264, 404.78515625, 320.7194209098816, - -1049.1130352020264, 404.78515625, 320.7194209098816, - 1164.8356914520264, 460.44921875, 323.6491084098816, - -1164.8356914520264, 460.44921875, 323.6491084098816, - 1222.412109375, 471.923828125, 234.0087890625, - -1222.412109375, 471.923828125, 234.0087890625, - 1175.9033203125, 460.3271484375, 106.5673828125, - -1175.9033203125, 460.3271484375, 106.5673828125, - 1039.794921875, 397.94921875, 23.3154296875, - -1039.794921875, 397.94921875, 23.3154296875, - 899.4140625, 291.015625, -4.638671875, - -899.4140625, 291.015625, -4.638671875, - 962.7685546875, 345.8251953125, 281.982421875, - -962.7685546875, 345.8251953125, 281.982421875, - 890.5029296875, 329.833984375, 114.2578125, - -890.5029296875, 329.833984375, 114.2578125, - 924.1943359375, 331.1767578125, 60.791015625, - -924.1943359375, 331.1767578125, 60.791015625, - 1000.0, 369.140625, 116.3330078125, - -1000.0, 369.140625, 116.3330078125, - 955.6884765625, 349.7314453125, 173.7060546875, - -955.6884765625, 349.7314453125, 173.7060546875, - 1014.5263671875, 371.9482421875, 232.2998046875, - -1014.5263671875, 371.9482421875, 232.2998046875, - 1067.7490234375, 392.822265625, 177.734375, - -1067.7490234375, 392.822265625, 177.734375, - 1123.481035232544, 411.0243320465088, 223.5243171453476, - -1123.481035232544, 411.0243320465088, 223.5243171453476, - 1087.0769023895264, 401.4892578125, 274.6989130973816, - -1087.0769023895264, 401.4892578125, 274.6989130973816, - 1032.8369140625, 458.740234375, 375.732421875, - -1032.8369140625, 458.740234375, 375.732421875, - 1239.8275136947632, 516.6422724723816, 400.634765625, - -1239.8275136947632, 516.6422724723816, 400.634765625, - 1328.2697200775146, 496.6001510620117, 287.5434160232544, - -1328.2697200775146, 496.6001510620117, 287.5434160232544, - 1274.9837636947632, 510.9049677848816, 114.1357421875, - -1274.9837636947632, 510.9049677848816, 114.1357421875, - 1039.9169921875, 456.787109375, -11.474609375, - -1039.9169921875, 456.787109375, -11.474609375, - 807.9833984375, 340.6982421875, -48.9501953125, - -807.9833984375, 340.6982421875, -48.9501953125, - 864.3798828125, 376.953125, 318.7255859375, - -864.3798828125, 376.953125, 318.7255859375 -}; - -static int indices[] = { - 501, 1552, 502, - 1, 502, 1506, - 503, 1508, 504, - 1, 504, 1550, - 505, 1509, 506, - 2, 506, 1507, - 507, 1553, 508, - 2, 508, 1551, - 509, 1550, 504, - 3, 504, 1508, - 510, 1510, 511, - 3, 511, 1548, - 512, 1511, 513, - 4, 513, 1509, - 505, 1551, 514, - 4, 514, 1549, - 510, 1508, 515, - 5, 515, 1514, - 516, 1512, 517, - 5, 517, 1510, - 518, 1513, 519, - 6, 519, 1515, - 520, 1509, 513, - 6, 513, 1511, - 503, 1506, 521, - 7, 521, 1516, - 522, 1514, 515, - 7, 515, 1508, - 520, 1515, 523, - 8, 523, 1517, - 524, 1507, 506, - 8, 506, 1509, - 522, 1516, 525, - 9, 525, 1518, - 526, 1520, 527, - 9, 527, 1514, - 528, 1521, 529, - 10, 529, 1519, - 530, 1517, 523, - 10, 523, 1515, - 516, 1514, 527, - 11, 527, 1520, - 531, 1522, 532, - 11, 532, 1512, - 533, 1523, 534, - 12, 534, 1521, - 528, 1515, 519, - 12, 519, 1513, - 531, 1520, 535, - 535, 1526, 536, - 13, 536, 1524, - 13, 537, 1522, - 14, 538, 1525, - 539, 1527, 540, - 540, 1521, 534, - 14, 534, 1523, - 526, 1518, 541, - 15, 541, 1528, - 15, 542, 1526, - 15, 535, 1520, - 16, 540, 1527, - 16, 543, 1529, - 544, 1519, 529, - 16, 529, 1521, - 542, 1528, 545, - 545, 1530, 546, - 17, 546, 1532, - 17, 547, 1526, - 18, 548, 1533, - 549, 1531, 550, - 550, 1529, 543, - 18, 543, 1527, - 19, 536, 1526, - 547, 1532, 551, - 19, 551, 1534, - 552, 1524, 536, - 20, 553, 1535, - 554, 1533, 548, - 20, 548, 1527, - 539, 1525, 553, - 21, 551, 1532, - 555, 1538, 556, - 21, 556, 1536, - 557, 1534, 551, - 22, 558, 1537, - 559, 1539, 560, - 22, 560, 1533, - 554, 1535, 558, - 23, 546, 1530, - 561, 1540, 562, - 23, 562, 1538, - 555, 1532, 546, - 24, 560, 1539, - 563, 1541, 564, - 24, 564, 1531, - 549, 1533, 560, - 25, 562, 1540, - 565, 1542, 566, - 25, 566, 1544, - 567, 1538, 562, - 26, 568, 1545, - 569, 1543, 570, - 26, 570, 1541, - 563, 1539, 568, - 27, 556, 1538, - 567, 1544, 571, - 27, 571, 1546, - 572, 1536, 556, - 28, 573, 1547, - 574, 1545, 568, - 28, 568, 1539, - 559, 1537, 573, - 29, 571, 1544, - 575, 1550, 509, - 29, 509, 1548, - 576, 1546, 571, - 30, 577, 1549, - 514, 1551, 578, - 30, 578, 1545, - 574, 1547, 577, - 31, 566, 1542, - 579, 1552, 501, - 31, 501, 1550, - 575, 1544, 566, - 32, 578, 1551, - 508, 1553, 580, - 32, 580, 1543, - 569, 1545, 578, - 33, 581, 1552, - 579, 1542, 582, - 33, 582, 1556, - 583, 1554, 581, - 34, 584, 1557, - 585, 1543, 580, - 34, 580, 1553, - 586, 1555, 584, - 35, 582, 1542, - 565, 1540, 587, - 35, 587, 1558, - 588, 1556, 582, - 36, 589, 1559, - 590, 1541, 570, - 36, 570, 1543, - 585, 1557, 589, - 37, 587, 1540, - 561, 1530, 591, - 37, 591, 1560, - 592, 1558, 587, - 38, 593, 1561, - 594, 1531, 564, - 38, 564, 1541, - 590, 1559, 593, - 39, 591, 1530, - 39, 545, 1528, - 39, 595, 1562, - 596, 1560, 591, - 40, 597, 1563, - 40, 598, 1529, - 40, 550, 1531, - 594, 1561, 597, - 595, 1528, 541, - 41, 541, 1518, - 599, 1564, 600, - 41, 600, 1562, - 601, 1565, 602, - 42, 602, 1519, - 544, 1529, 598, - 42, 598, 1563, - 599, 1518, 525, - 43, 525, 1516, - 603, 1568, 604, - 43, 604, 1564, - 605, 1569, 606, - 44, 606, 1517, - 530, 1519, 602, - 44, 602, 1565, - 603, 1516, 521, - 45, 521, 1506, - 607, 1570, 608, - 45, 608, 1568, - 609, 1571, 610, - 46, 610, 1507, - 524, 1517, 606, - 46, 606, 1569, - 607, 1506, 502, - 47, 502, 1552, - 581, 1554, 611, - 47, 611, 1570, - 612, 1555, 586, - 48, 586, 1553, - 507, 1507, 610, - 48, 610, 1571, - 49, 613, 1566, - 614, 1570, 611, - 611, 1554, 613, - 615, 1555, 612, - 612, 1571, 616, - 50, 616, 1567, - 617, 1568, 608, - 608, 1570, 614, - 51, 614, 1566, - 52, 618, 1567, - 616, 1571, 609, - 609, 1569, 618, - 53, 617, 1566, - 619, 1564, 604, - 604, 1568, 617, - 618, 1569, 605, - 605, 1565, 620, - 54, 620, 1567, - 55, 619, 1566, - 621, 1562, 600, - 600, 1564, 619, - 620, 1565, 601, - 601, 1563, 622, - 56, 622, 1567, - 57, 621, 1566, - 623, 1560, 596, - 596, 1562, 621, - 622, 1563, 597, - 597, 1561, 624, - 58, 624, 1567, - 59, 623, 1566, - 625, 1558, 592, - 592, 1560, 623, - 624, 1561, 593, - 593, 1559, 626, - 60, 626, 1567, - 61, 625, 1566, - 627, 1556, 588, - 588, 1558, 625, - 626, 1559, 589, - 589, 1557, 628, - 62, 628, 1567, - 63, 627, 1566, - 613, 1554, 583, - 583, 1556, 627, - 628, 1557, 584, - 584, 1555, 615, - 64, 615, 1567, - 65, 629, 1594, - 630, 1679, 631, - 65, 631, 1681, - 632, 1596, 629, - 66, 632, 1681, - 633, 1680, 634, - 66, 634, 1595, - 635, 1596, 632, - 67, 636, 1592, - 637, 1677, 638, - 67, 638, 1679, - 630, 1594, 636, - 68, 634, 1680, - 639, 1678, 640, - 68, 640, 1593, - 641, 1595, 634, - 642, 1590, 643, - 69, 643, 1675, - 644, 1677, 637, - 637, 1592, 642, - 640, 1678, 645, - 70, 645, 1676, - 646, 1591, 647, - 647, 1593, 640, - 71, 648, 1588, - 71, 649, 1673, - 650, 1675, 643, - 71, 643, 1590, - 646, 1676, 651, - 72, 651, 1674, - 72, 652, 1589, - 72, 653, 1591, - 73, 654, 1586, - 73, 655, 1671, - 656, 1673, 649, - 649, 1588, 654, - 652, 1674, 657, - 74, 657, 1672, - 74, 658, 1587, - 659, 1589, 652, - 660, 1584, 661, - 75, 661, 1597, - 662, 1651, 663, - 75, 663, 1669, - 664, 1652, 665, - 76, 665, 1598, - 666, 1585, 667, - 76, 667, 1670, - 662, 1597, 668, - 668, 1599, 669, - 669, 1653, 670, - 77, 670, 1651, - 671, 1654, 672, - 672, 1600, 673, - 673, 1598, 665, - 78, 665, 1652, - 669, 1599, 674, - 79, 674, 1601, - 675, 1655, 676, - 79, 676, 1653, - 677, 1656, 678, - 80, 678, 1602, - 679, 1600, 672, - 80, 672, 1654, - 81, 675, 1601, - 680, 1603, 681, - 81, 681, 1657, - 682, 1655, 675, - 82, 683, 1658, - 684, 1604, 685, - 82, 685, 1602, - 678, 1656, 683, - 83, 681, 1603, - 686, 1605, 687, - 83, 687, 1659, - 688, 1657, 681, - 84, 689, 1660, - 690, 1606, 691, - 84, 691, 1604, - 684, 1658, 689, - 85, 687, 1605, - 692, 1607, 693, - 85, 693, 1661, - 694, 1659, 687, - 86, 695, 1662, - 696, 1608, 697, - 86, 697, 1606, - 690, 1660, 695, - 87, 693, 1607, - 698, 1609, 699, - 699, 1663, 700, - 87, 700, 1661, - 701, 1664, 702, - 702, 1610, 703, - 88, 703, 1608, - 88, 696, 1662, - 89, 699, 1609, - 704, 1611, 705, - 89, 705, 1665, - 89, 706, 1663, - 90, 707, 1666, - 708, 1612, 709, - 90, 709, 1610, - 90, 702, 1664, - 91, 705, 1611, - 710, 1613, 711, - 91, 711, 1667, - 712, 1665, 705, - 92, 713, 1668, - 714, 1614, 715, - 92, 715, 1612, - 708, 1666, 713, - 93, 711, 1613, - 716, 1572, 717, - 93, 717, 1573, - 718, 1667, 711, - 94, 719, 1573, - 717, 1572, 720, - 94, 720, 1614, - 714, 1668, 719, - 95, 721, 1615, - 722, 1633, 723, - 95, 723, 1665, - 712, 1667, 721, - 96, 713, 1666, - 724, 1634, 725, - 96, 725, 1616, - 726, 1668, 713, - 97, 723, 1633, - 97, 727, 1684, - 728, 1663, 706, - 706, 1665, 723, - 707, 1664, 729, - 98, 729, 1685, - 98, 730, 1634, - 724, 1666, 707, - 99, 731, 1631, - 732, 1661, 700, - 99, 700, 1663, - 728, 1684, 731, - 100, 729, 1664, - 701, 1662, 733, - 100, 733, 1632, - 734, 1685, 729, - 735, 1629, 736, - 101, 736, 1659, - 101, 694, 1661, - 732, 1631, 735, - 102, 733, 1662, - 102, 695, 1660, - 737, 1630, 738, - 738, 1632, 733, - 103, 739, 1627, - 740, 1657, 688, - 688, 1659, 736, - 103, 736, 1629, - 737, 1660, 689, - 689, 1658, 741, - 104, 741, 1628, - 104, 742, 1630, - 105, 743, 1625, - 744, 1655, 682, - 105, 682, 1657, - 740, 1627, 743, - 106, 741, 1658, - 683, 1656, 745, - 106, 745, 1626, - 746, 1628, 741, - 107, 747, 1623, - 748, 1653, 676, - 107, 676, 1655, - 744, 1625, 747, - 108, 745, 1656, - 677, 1654, 749, - 108, 749, 1624, - 750, 1626, 745, - 109, 751, 1621, - 752, 1651, 670, - 109, 670, 1653, - 748, 1623, 751, - 110, 749, 1654, - 671, 1652, 753, - 110, 753, 1622, - 754, 1624, 749, - 755, 1619, 756, - 111, 756, 1669, - 111, 663, 1651, - 752, 1621, 755, - 112, 753, 1652, - 112, 664, 1670, - 757, 1620, 758, - 758, 1622, 753, - 756, 1619, 759, - 113, 759, 1686, - 760, 1682, 761, - 113, 761, 1669, - 762, 1682, 763, - 114, 763, 1687, - 764, 1620, 757, - 114, 757, 1670, - 115, 765, 1615, - 721, 1667, 718, - 115, 718, 1573, - 766, 1617, 765, - 116, 767, 1573, - 719, 1668, 726, - 116, 726, 1616, - 768, 1618, 767, - 769, 1617, 766, - 117, 766, 1573, - 770, 1683, 771, - 117, 771, 1688, - 772, 1683, 770, - 118, 770, 1573, - 767, 1618, 773, - 118, 773, 1689, - 119, 774, 1682, - 760, 1686, 775, - 119, 775, 1688, - 771, 1683, 774, - 120, 772, 1689, - 776, 1687, 763, - 120, 763, 1682, - 774, 1683, 772, - 777, 1640, 778, - 121, 778, 1642, - 779, 1681, 631, - 121, 631, 1679, - 633, 1681, 779, - 122, 779, 1642, - 780, 1641, 781, - 122, 781, 1680, - 782, 1638, 783, - 123, 783, 1640, - 777, 1679, 638, - 123, 638, 1677, - 639, 1680, 781, - 124, 781, 1641, - 784, 1639, 785, - 124, 785, 1678, - 125, 786, 1636, - 787, 1638, 782, - 125, 782, 1677, - 644, 1675, 786, - 126, 645, 1678, - 785, 1639, 788, - 126, 788, 1637, - 789, 1676, 645, - 656, 1671, 790, - 127, 790, 1692, - 791, 1690, 792, - 127, 792, 1673, - 793, 1691, 794, - 128, 794, 1693, - 795, 1672, 657, - 128, 657, 1674, - 796, 1636, 786, - 129, 786, 1675, - 650, 1673, 792, - 129, 792, 1690, - 793, 1674, 651, - 130, 651, 1676, - 789, 1637, 797, - 130, 797, 1691, - 131, 798, 1649, - 799, 1695, 800, - 131, 800, 1694, - 801, 1692, 798, - 132, 802, 1694, - 800, 1695, 803, - 132, 803, 1650, - 804, 1693, 802, - 133, 805, 1690, - 791, 1692, 801, - 133, 801, 1694, - 806, 1574, 805, - 134, 806, 1694, - 802, 1693, 794, - 134, 794, 1691, - 807, 1574, 806, - 135, 808, 1635, - 809, 1636, 796, - 796, 1690, 805, - 805, 1574, 808, - 807, 1691, 797, - 797, 1637, 810, - 136, 810, 1635, - 808, 1574, 807, - 811, 1647, 812, - 137, 812, 1698, - 813, 1696, 814, - 137, 814, 1649, - 815, 1697, 816, - 138, 816, 1699, - 817, 1648, 818, - 138, 818, 1650, - 139, 819, 1645, - 820, 1700, 821, - 139, 821, 1698, - 139, 812, 1647, - 140, 817, 1699, - 822, 1701, 823, - 140, 823, 1646, - 140, 824, 1648, - 141, 825, 1644, - 826, 1702, 827, - 141, 827, 1700, - 820, 1645, 825, - 142, 823, 1701, - 828, 1703, 829, - 142, 829, 1644, - 830, 1646, 823, - 831, 1643, 832, - 832, 1576, 833, - 143, 833, 1702, - 826, 1644, 831, - 144, 829, 1703, - 834, 1576, 832, - 832, 1643, 831, - 831, 1644, 829, - 145, 835, 1695, - 799, 1649, 814, - 145, 814, 1696, - 836, 1575, 835, - 146, 837, 1697, - 815, 1650, 803, - 146, 803, 1695, - 835, 1575, 837, - 147, 838, 1575, - 836, 1696, 839, - 839, 1711, 840, - 840, 1713, 838, - 841, 1712, 842, - 842, 1697, 837, - 148, 837, 1575, - 838, 1713, 841, - 833, 1576, 843, - 149, 843, 1704, - 844, 1705, 845, - 149, 845, 1702, - 846, 1706, 847, - 150, 847, 1704, - 843, 1576, 834, - 150, 834, 1703, - 151, 827, 1702, - 151, 845, 1705, - 151, 848, 1707, - 849, 1700, 827, - 152, 850, 1708, - 152, 851, 1706, - 152, 846, 1703, - 828, 1701, 850, - 153, 821, 1700, - 849, 1707, 852, - 153, 852, 1709, - 853, 1698, 821, - 154, 854, 1710, - 855, 1708, 850, - 154, 850, 1701, - 822, 1699, 854, - 813, 1698, 853, - 853, 1709, 856, - 155, 856, 1711, - 155, 839, 1696, - 156, 842, 1712, - 857, 1710, 854, - 854, 1699, 816, - 156, 816, 1697, - 157, 844, 1704, - 858, 1709, 852, - 852, 1707, 848, - 848, 1705, 844, - 851, 1708, 855, - 855, 1710, 859, - 158, 859, 1704, - 847, 1706, 851, - 858, 1704, 860, - 159, 860, 1713, - 840, 1711, 856, - 159, 856, 1709, - 857, 1712, 841, - 160, 841, 1713, - 860, 1704, 859, - 160, 859, 1710, - 861, 1644, 825, - 161, 825, 1645, - 862, 1669, 761, - 161, 761, 1682, - 762, 1670, 863, - 162, 863, 1646, - 830, 1644, 861, - 162, 861, 1682, - 862, 1645, 819, - 819, 1647, 864, - 163, 864, 1716, - 865, 1669, 862, - 164, 866, 1717, - 867, 1648, 824, - 824, 1646, 863, - 863, 1670, 866, - 165, 864, 1647, - 165, 811, 1649, - 165, 868, 1718, - 869, 1716, 864, - 166, 870, 1719, - 166, 871, 1650, - 166, 818, 1648, - 867, 1717, 870, - 167, 868, 1649, - 798, 1692, 790, - 167, 790, 1671, - 872, 1718, 868, - 168, 873, 1672, - 795, 1693, 804, - 168, 804, 1650, - 871, 1719, 873, - 655, 1586, 874, - 169, 874, 1714, - 169, 875, 1718, - 872, 1671, 655, - 170, 873, 1719, - 170, 876, 1715, - 877, 1587, 658, - 658, 1672, 873, - 171, 875, 1714, - 878, 1720, 879, - 171, 879, 1716, - 869, 1718, 875, - 172, 870, 1717, - 880, 1721, 881, - 172, 881, 1715, - 876, 1719, 870, - 882, 1584, 660, - 173, 660, 1669, - 865, 1716, 879, - 173, 879, 1720, - 880, 1717, 866, - 174, 866, 1670, - 667, 1585, 883, - 174, 883, 1721, - 175, 884, 1636, - 809, 1635, 885, - 175, 885, 1577, - 886, 1727, 884, - 176, 887, 1577, - 885, 1635, 810, - 176, 810, 1637, - 888, 1728, 887, - 177, 889, 1638, - 787, 1636, 884, - 884, 1727, 890, - 177, 890, 1725, - 891, 1728, 888, - 888, 1637, 788, - 178, 788, 1639, - 178, 892, 1726, - 893, 1640, 783, - 783, 1638, 889, - 889, 1725, 894, - 179, 894, 1723, - 895, 1726, 892, - 892, 1639, 784, - 784, 1641, 896, - 180, 896, 1724, - 897, 1642, 778, - 181, 778, 1640, - 893, 1723, 898, - 181, 898, 1722, - 899, 1724, 896, - 182, 896, 1641, - 780, 1642, 897, - 182, 897, 1722, - 183, 900, 1722, - 183, 898, 1723, - 183, 901, 1734, - 902, 1736, 900, - 184, 903, 1735, - 184, 904, 1724, - 184, 899, 1722, - 900, 1736, 903, - 901, 1723, 894, - 185, 894, 1725, - 905, 1732, 906, - 906, 1734, 901, - 907, 1733, 908, - 186, 908, 1726, - 895, 1724, 904, - 904, 1735, 907, - 905, 1725, 890, - 187, 890, 1727, - 909, 1730, 910, - 187, 910, 1732, - 911, 1731, 912, - 188, 912, 1728, - 891, 1726, 908, - 188, 908, 1733, - 189, 909, 1727, - 886, 1577, 913, - 189, 913, 1729, - 914, 1730, 909, - 190, 915, 1729, - 913, 1577, 887, - 190, 887, 1728, - 912, 1731, 915, - 914, 1729, 916, - 191, 916, 1736, - 902, 1734, 917, - 191, 917, 1730, - 918, 1735, 903, - 192, 903, 1736, - 916, 1729, 915, - 192, 915, 1731, - 193, 910, 1730, - 193, 917, 1734, - 906, 1732, 910, - 911, 1733, 907, - 194, 907, 1735, - 194, 918, 1731, - 919, 1688, 775, - 195, 775, 1686, - 920, 1739, 921, - 195, 921, 1737, - 922, 1740, 923, - 196, 923, 1687, - 776, 1689, 924, - 196, 924, 1738, - 197, 925, 1617, - 769, 1688, 919, - 919, 1737, 926, - 197, 926, 1759, - 927, 1738, 924, - 924, 1689, 773, - 198, 773, 1618, - 198, 928, 1760, - 929, 1615, 765, - 765, 1617, 925, - 925, 1759, 930, - 930, 1761, 929, - 931, 1760, 928, - 928, 1618, 768, - 768, 1616, 932, - 932, 1762, 931, - 920, 1686, 759, - 759, 1619, 933, - 201, 933, 1757, - 201, 934, 1739, - 202, 935, 1758, - 936, 1620, 764, - 764, 1687, 923, - 202, 923, 1740, - 933, 1619, 755, - 203, 755, 1621, - 937, 1755, 938, - 203, 938, 1757, - 939, 1756, 940, - 204, 940, 1622, - 758, 1620, 936, - 204, 936, 1758, - 937, 1621, 751, - 205, 751, 1623, - 941, 1753, 942, - 205, 942, 1755, - 943, 1754, 944, - 206, 944, 1624, - 754, 1622, 940, - 206, 940, 1756, - 941, 1623, 747, - 207, 747, 1625, - 945, 1751, 946, - 207, 946, 1753, - 947, 1752, 948, - 208, 948, 1626, - 750, 1624, 944, - 208, 944, 1754, - 945, 1625, 743, - 209, 743, 1627, - 949, 1749, 950, - 209, 950, 1751, - 951, 1750, 952, - 210, 952, 1628, - 746, 1626, 948, - 210, 948, 1752, - 949, 1627, 739, - 739, 1629, 953, - 211, 953, 1747, - 954, 1749, 949, - 212, 955, 1748, - 956, 1630, 742, - 742, 1628, 952, - 952, 1750, 955, - 213, 953, 1629, - 735, 1631, 957, - 213, 957, 1745, - 958, 1747, 953, - 214, 959, 1746, - 960, 1632, 738, - 214, 738, 1630, - 956, 1748, 959, - 957, 1631, 731, - 215, 731, 1684, - 961, 1741, 962, - 215, 962, 1745, - 963, 1742, 964, - 216, 964, 1685, - 734, 1632, 960, - 216, 960, 1746, - 961, 1684, 727, - 217, 727, 1633, - 965, 1743, 966, - 217, 966, 1741, - 967, 1744, 968, - 218, 968, 1634, - 730, 1685, 964, - 218, 964, 1742, - 965, 1633, 722, - 219, 722, 1615, - 929, 1761, 969, - 219, 969, 1743, - 970, 1762, 932, - 220, 932, 1616, - 725, 1634, 968, - 220, 968, 1744, - 971, 1743, 969, - 221, 969, 1761, - 221, 972, 1763, - 973, 1781, 971, - 222, 974, 1764, - 222, 975, 1762, - 970, 1744, 976, - 976, 1782, 974, - 977, 1741, 966, - 223, 966, 1743, - 971, 1781, 978, - 223, 978, 1783, - 979, 1782, 976, - 224, 976, 1744, - 967, 1742, 980, - 224, 980, 1784, - 981, 1745, 962, - 225, 962, 1741, - 977, 1783, 982, - 225, 982, 1779, - 983, 1784, 980, - 226, 980, 1742, - 963, 1746, 984, - 226, 984, 1780, - 227, 985, 1747, - 958, 1745, 981, - 227, 981, 1779, - 986, 1777, 985, - 228, 987, 1780, - 984, 1746, 959, - 228, 959, 1748, - 988, 1778, 987, - 989, 1749, 954, - 954, 1747, 985, - 229, 985, 1777, - 229, 990, 1775, - 230, 991, 1778, - 988, 1748, 955, - 955, 1750, 992, - 230, 992, 1776, - 993, 1751, 950, - 231, 950, 1749, - 989, 1775, 994, - 231, 994, 1773, - 995, 1776, 992, - 232, 992, 1750, - 951, 1752, 996, - 232, 996, 1774, - 997, 1753, 946, - 233, 946, 1751, - 993, 1773, 998, - 233, 998, 1771, - 999, 1774, 996, - 234, 996, 1752, - 947, 1754, 1000, - 234, 1000, 1772, - 235, 1001, 1755, - 942, 1753, 997, - 235, 997, 1771, - 1002, 1769, 1001, - 236, 1003, 1772, - 1000, 1754, 943, - 236, 943, 1756, - 1004, 1770, 1003, - 237, 1005, 1757, - 938, 1755, 1001, - 237, 1001, 1769, - 1006, 1767, 1005, - 238, 1007, 1770, - 1004, 1756, 939, - 238, 939, 1758, - 1008, 1768, 1007, - 1009, 1739, 934, - 934, 1757, 1005, - 239, 1005, 1767, - 239, 1010, 1785, - 240, 1011, 1768, - 1008, 1758, 935, - 935, 1740, 1012, - 240, 1012, 1786, - 972, 1761, 930, - 241, 930, 1759, - 1013, 1765, 1014, - 241, 1014, 1763, - 1015, 1766, 1016, - 242, 1016, 1760, - 931, 1762, 975, - 242, 975, 1764, - 1013, 1759, 926, - 243, 926, 1737, - 1017, 1787, 1018, - 243, 1018, 1765, - 1019, 1788, 1020, - 244, 1020, 1738, - 927, 1760, 1016, - 244, 1016, 1766, - 1017, 1737, 921, - 245, 921, 1739, - 1009, 1785, 1021, - 245, 1021, 1787, - 1022, 1786, 1012, - 246, 1012, 1740, - 922, 1738, 1020, - 246, 1020, 1788, - 1023, 1572, 716, - 247, 716, 1613, - 247, 1024, 1789, - 1025, 1578, 1023, - 248, 1026, 1790, - 248, 1027, 1614, - 720, 1572, 1023, - 1023, 1578, 1026, - 1024, 1613, 710, - 249, 710, 1611, - 1028, 1791, 1029, - 1029, 1789, 1024, - 1030, 1792, 1031, - 250, 1031, 1612, - 715, 1614, 1027, - 1027, 1790, 1030, - 251, 1028, 1611, - 704, 1609, 1032, - 251, 1032, 1793, - 1033, 1791, 1028, - 252, 1034, 1794, - 1035, 1610, 709, - 252, 709, 1612, - 1031, 1792, 1034, - 253, 1032, 1609, - 698, 1607, 1036, - 253, 1036, 1795, - 1037, 1793, 1032, - 254, 1038, 1796, - 1039, 1608, 703, - 254, 703, 1610, - 1035, 1794, 1038, - 255, 1036, 1607, - 692, 1605, 1040, - 255, 1040, 1797, - 1041, 1795, 1036, - 256, 1042, 1798, - 1043, 1606, 697, - 256, 697, 1608, - 1039, 1796, 1042, - 257, 1040, 1605, - 686, 1603, 1044, - 257, 1044, 1799, - 1045, 1797, 1040, - 258, 1046, 1800, - 1047, 1604, 691, - 258, 691, 1606, - 1043, 1798, 1046, - 259, 1044, 1603, - 680, 1601, 1048, - 259, 1048, 1801, - 1049, 1799, 1044, - 260, 1050, 1802, - 1051, 1602, 685, - 260, 685, 1604, - 1047, 1800, 1050, - 261, 1048, 1601, - 261, 674, 1599, - 1052, 1803, 1053, - 261, 1053, 1801, - 1054, 1804, 1055, - 262, 1055, 1600, - 262, 679, 1602, - 262, 1051, 1802, - 1052, 1599, 668, - 263, 668, 1597, - 1056, 1805, 1057, - 263, 1057, 1803, - 1058, 1806, 1059, - 264, 1059, 1598, - 673, 1600, 1055, - 264, 1055, 1804, - 265, 1060, 1813, - 1061, 1814, 1062, - 265, 1062, 1833, - 1063, 1843, 1060, - 266, 1064, 1834, - 1065, 1814, 1061, - 266, 1061, 1813, - 1066, 1844, 1064, - 267, 1067, 1812, - 1068, 1813, 1060, - 267, 1060, 1843, - 1069, 1841, 1067, - 268, 1070, 1844, - 1066, 1813, 1068, - 268, 1068, 1812, - 1071, 1842, 1070, - 269, 1072, 1811, - 1073, 1812, 1067, - 269, 1067, 1841, - 1074, 1845, 1072, - 270, 1075, 1842, - 1071, 1812, 1073, - 270, 1073, 1811, - 1076, 1846, 1075, - 1077, 1594, 629, - 271, 629, 1596, - 1078, 1811, 1072, - 271, 1072, 1845, - 1076, 1811, 1078, - 272, 1078, 1596, - 635, 1595, 1079, - 272, 1079, 1846, - 1080, 1592, 636, - 273, 636, 1594, - 1077, 1845, 1081, - 273, 1081, 1839, - 1082, 1846, 1079, - 274, 1079, 1595, - 641, 1593, 1083, - 274, 1083, 1840, - 1084, 1590, 642, - 275, 642, 1592, - 1080, 1839, 1085, - 275, 1085, 1835, - 1086, 1840, 1083, - 276, 1083, 1593, - 647, 1591, 1087, - 276, 1087, 1836, - 1088, 1588, 648, - 277, 648, 1590, - 1084, 1835, 1089, - 277, 1089, 1837, - 1090, 1836, 1087, - 278, 1087, 1591, - 653, 1589, 1091, - 278, 1091, 1838, - 279, 1089, 1835, - 279, 1092, 1841, - 1069, 1843, 1093, - 1093, 1837, 1089, - 1094, 1844, 1070, - 280, 1070, 1842, - 280, 1095, 1836, - 1090, 1838, 1094, - 1092, 1835, 1085, - 1085, 1839, 1081, - 281, 1081, 1845, - 1074, 1841, 1092, - 282, 1075, 1846, - 1082, 1840, 1086, - 1086, 1836, 1095, - 1095, 1842, 1075, - 1096, 1831, 1097, - 283, 1097, 1837, - 283, 1093, 1843, - 1063, 1833, 1096, - 284, 1064, 1844, - 284, 1094, 1838, - 1098, 1832, 1099, - 1099, 1834, 1064, - 1100, 1586, 654, - 285, 654, 1588, - 1088, 1837, 1097, - 285, 1097, 1831, - 1098, 1838, 1091, - 286, 1091, 1589, - 659, 1587, 1101, - 286, 1101, 1832, - 287, 878, 1714, - 287, 1102, 1847, - 1103, 1849, 1104, - 287, 1104, 1720, - 1105, 1850, 1106, - 288, 1106, 1848, - 288, 1107, 1715, - 288, 881, 1721, - 289, 874, 1586, - 1100, 1831, 1108, - 289, 1108, 1847, - 1102, 1714, 874, - 290, 1107, 1848, - 1109, 1832, 1101, - 290, 1101, 1587, - 877, 1715, 1107, - 291, 1110, 1584, - 882, 1720, 1104, - 291, 1104, 1849, - 291, 1111, 1851, - 292, 1112, 1850, - 1105, 1721, 883, - 292, 883, 1585, - 292, 1113, 1852, - 293, 661, 1584, - 1110, 1851, 1114, - 1114, 1805, 1056, - 1056, 1597, 661, - 1059, 1806, 1115, - 1115, 1852, 1113, - 294, 1113, 1585, - 666, 1598, 1059, - 295, 1116, 1582, - 1117, 1829, 1118, - 295, 1118, 1857, - 1119, 1809, 1116, - 296, 1120, 1858, - 1121, 1830, 1122, - 296, 1122, 1582, - 1116, 1809, 1120, - 297, 1123, 1809, - 1119, 1857, 1124, - 297, 1124, 1855, - 1125, 1583, 1123, - 298, 1126, 1856, - 1127, 1858, 1120, - 298, 1120, 1809, - 1123, 1583, 1126, - 299, 1128, 1583, - 299, 1125, 1855, - 299, 1129, 1853, - 299, 1130, 1810, - 300, 1131, 1854, - 300, 1132, 1856, - 300, 1126, 1583, - 300, 1128, 1810, - 1133, 1810, 1130, - 301, 1130, 1853, - 1134, 1833, 1062, - 301, 1062, 1814, - 1065, 1834, 1135, - 302, 1135, 1854, - 1131, 1810, 1133, - 302, 1133, 1814, - 303, 1108, 1831, - 1096, 1833, 1134, - 303, 1134, 1853, - 1136, 1847, 1108, - 304, 1137, 1854, - 1135, 1834, 1099, - 304, 1099, 1832, - 1109, 1848, 1137, - 1138, 1801, 1053, - 305, 1053, 1803, - 1139, 1823, 1140, - 305, 1140, 1815, - 1141, 1824, 1142, - 306, 1142, 1804, - 1054, 1802, 1143, - 306, 1143, 1816, - 307, 1144, 1581, - 1145, 1821, 1146, - 307, 1146, 1829, - 1117, 1582, 1144, - 308, 1122, 1830, - 1147, 1822, 1148, - 308, 1148, 1581, - 1144, 1582, 1122, - 309, 1149, 1807, - 1150, 1863, 1151, - 309, 1151, 1861, - 309, 1152, 1808, - 310, 1153, 1862, - 1154, 1864, 1155, - 310, 1155, 1807, - 310, 1149, 1808, - 1156, 1808, 1152, - 311, 1152, 1861, - 1157, 1859, 1158, - 311, 1158, 1580, - 1159, 1860, 1160, - 312, 1160, 1862, - 1153, 1808, 1156, - 312, 1156, 1580, - 1161, 1580, 1158, - 313, 1158, 1859, - 313, 1162, 1821, - 313, 1145, 1581, - 314, 1148, 1822, - 314, 1163, 1860, - 1159, 1580, 1161, - 314, 1161, 1581, - 1164, 1797, 1045, - 1045, 1799, 1165, - 1165, 1867, 1166, - 315, 1166, 1869, - 1167, 1868, 1168, - 1168, 1800, 1046, - 1046, 1798, 1169, - 316, 1169, 1870, - 1170, 1869, 1166, - 317, 1166, 1867, - 1171, 1873, 1172, - 317, 1172, 1871, - 1173, 1874, 1174, - 318, 1174, 1868, - 1167, 1870, 1175, - 318, 1175, 1872, - 1176, 1871, 1172, - 319, 1172, 1873, - 1177, 1875, 1178, - 319, 1178, 1877, - 1179, 1876, 1180, - 320, 1180, 1874, - 1173, 1872, 1181, - 320, 1181, 1878, - 1182, 1877, 1178, - 321, 1178, 1875, - 1183, 1881, 1184, - 1184, 1879, 1182, - 1185, 1882, 1186, - 322, 1186, 1876, - 1179, 1878, 1187, - 1187, 1880, 1185, - 1188, 1819, 1189, - 1189, 1883, 1190, - 323, 1190, 1879, - 1184, 1881, 1188, - 324, 1185, 1880, - 1191, 1884, 1192, - 1192, 1820, 1193, - 1193, 1882, 1185, - 1194, 1821, 1162, - 325, 1162, 1859, - 1195, 1879, 1190, - 325, 1190, 1883, - 1191, 1880, 1196, - 326, 1196, 1860, - 1163, 1822, 1197, - 326, 1197, 1884, - 1195, 1859, 1157, - 327, 1157, 1861, - 1198, 1877, 1182, - 327, 1182, 1879, - 1187, 1878, 1199, - 328, 1199, 1862, - 1160, 1860, 1196, - 328, 1196, 1880, - 1198, 1861, 1151, - 329, 1151, 1863, - 1200, 1871, 1176, - 329, 1176, 1877, - 1181, 1872, 1201, - 330, 1201, 1864, - 1154, 1862, 1199, - 330, 1199, 1878, - 1200, 1863, 1202, - 331, 1202, 1865, - 1203, 1869, 1170, - 1170, 1871, 1200, - 1175, 1870, 1204, - 332, 1204, 1866, - 1205, 1864, 1201, - 1201, 1872, 1175, - 333, 1206, 1795, - 1041, 1797, 1164, - 333, 1164, 1869, - 1203, 1865, 1206, - 334, 1204, 1870, - 1169, 1798, 1042, - 334, 1042, 1796, - 1207, 1866, 1204, - 335, 1208, 1579, - 1209, 1865, 1202, - 335, 1202, 1863, - 1150, 1807, 1208, - 336, 1155, 1864, - 1205, 1866, 1210, - 336, 1210, 1579, - 1208, 1807, 1155, - 337, 1211, 1789, - 1029, 1791, 1033, - 1033, 1793, 1037, - 337, 1037, 1795, - 1038, 1794, 1034, - 1034, 1792, 1030, - 338, 1030, 1790, - 338, 1212, 1796, - 1213, 1789, 1211, - 339, 1211, 1795, - 1206, 1865, 1209, - 339, 1209, 1579, - 1210, 1866, 1207, - 340, 1207, 1796, - 1212, 1790, 1214, - 340, 1214, 1579, - 1215, 1578, 1025, - 1025, 1789, 1213, - 1213, 1579, 1215, - 1215, 1579, 1214, - 1214, 1790, 1026, - 1026, 1578, 1215, - 343, 1165, 1799, - 1049, 1801, 1138, - 343, 1138, 1815, - 1216, 1867, 1165, - 344, 1217, 1816, - 1143, 1802, 1050, - 344, 1050, 1800, - 1168, 1868, 1217, - 1216, 1815, 1218, - 345, 1218, 1817, - 1219, 1873, 1171, - 345, 1171, 1867, - 1174, 1874, 1220, - 346, 1220, 1818, - 1221, 1816, 1217, - 346, 1217, 1868, - 1219, 1817, 1222, - 347, 1222, 1887, - 1223, 1875, 1177, - 347, 1177, 1873, - 1180, 1876, 1224, - 348, 1224, 1888, - 1225, 1818, 1220, - 348, 1220, 1874, - 349, 1226, 1819, - 1188, 1881, 1183, - 349, 1183, 1875, - 1223, 1887, 1226, - 350, 1224, 1876, - 1186, 1882, 1193, - 350, 1193, 1820, - 1227, 1888, 1224, - 351, 1228, 1853, - 1129, 1855, 1229, - 351, 1229, 1891, - 351, 1230, 1889, - 352, 1231, 1892, - 1232, 1856, 1132, - 352, 1132, 1854, - 352, 1233, 1890, - 353, 1234, 1823, - 353, 1235, 1889, - 353, 1230, 1891, - 1236, 1825, 1234, - 354, 1237, 1892, - 354, 1231, 1890, - 354, 1238, 1824, - 1239, 1826, 1237, - 1139, 1803, 1057, - 355, 1057, 1805, - 1240, 1889, 1235, - 355, 1235, 1823, - 1238, 1890, 1241, - 356, 1241, 1806, - 1058, 1804, 1142, - 356, 1142, 1824, - 1240, 1805, 1242, - 357, 1242, 1849, - 1103, 1847, 1243, - 357, 1243, 1889, - 1244, 1848, 1106, - 358, 1106, 1850, - 1245, 1806, 1241, - 358, 1241, 1890, - 359, 1243, 1847, - 1136, 1853, 1228, - 1228, 1889, 1243, - 1244, 1890, 1233, - 1233, 1854, 1137, - 360, 1137, 1848, - 361, 1242, 1805, - 1114, 1851, 1111, - 1111, 1849, 1242, - 1245, 1850, 1112, - 1112, 1852, 1115, - 362, 1115, 1806, - 363, 1189, 1819, - 363, 1246, 1827, - 363, 1247, 1885, - 363, 1248, 1883, - 364, 1249, 1886, - 364, 1250, 1828, - 364, 1251, 1820, - 364, 1192, 1884, - 365, 1146, 1821, - 1194, 1883, 1248, - 365, 1248, 1885, - 365, 1252, 1829, - 366, 1253, 1886, - 1249, 1884, 1197, - 366, 1197, 1822, - 366, 1147, 1830, - 367, 1254, 1825, - 1236, 1891, 1255, - 367, 1255, 1885, - 1247, 1827, 1254, - 368, 1250, 1886, - 1256, 1892, 1237, - 368, 1237, 1826, - 1257, 1828, 1250, - 369, 1229, 1855, - 1124, 1857, 1258, - 369, 1258, 1885, - 1255, 1891, 1229, - 370, 1256, 1886, - 1259, 1858, 1127, - 370, 1127, 1856, - 1232, 1892, 1256, - 1118, 1829, 1252, - 1252, 1885, 1258, - 1258, 1857, 1118, - 1121, 1858, 1259, - 1259, 1886, 1253, - 1253, 1830, 1121, - 373, 1260, 1905, - 1261, 1893, 1262, - 373, 1262, 1919, - 1263, 1907, 1260, - 374, 1264, 1920, - 1265, 1894, 1266, - 374, 1266, 1906, - 1267, 1908, 1264, - 1268, 1905, 1260, - 375, 1260, 1907, - 1269, 1909, 1270, - 375, 1270, 1903, - 1271, 1910, 1272, - 376, 1272, 1908, - 1267, 1906, 1273, - 376, 1273, 1904, - 1274, 1903, 1270, - 1270, 1909, 1275, - 377, 1275, 1911, - 1276, 1901, 1274, - 378, 1277, 1912, - 1278, 1910, 1271, - 1271, 1904, 1279, - 1279, 1902, 1277, - 379, 1280, 1901, - 1276, 1911, 1281, - 379, 1281, 1913, - 1282, 1899, 1280, - 380, 1283, 1914, - 1284, 1912, 1277, - 380, 1277, 1902, - 1285, 1900, 1283, - 381, 1286, 1899, - 1282, 1913, 1287, - 1287, 1915, 1288, - 1288, 1897, 1286, - 1289, 1916, 1290, - 1290, 1914, 1283, - 382, 1283, 1900, - 1291, 1898, 1289, - 383, 1292, 1897, - 383, 1288, 1915, - 1293, 1917, 1294, - 383, 1294, 1895, - 1295, 1918, 1296, - 384, 1296, 1916, - 384, 1289, 1898, - 384, 1297, 1896, - 1293, 1915, 1298, - 385, 1298, 1925, - 1299, 1923, 1300, - 385, 1300, 1917, - 1301, 1924, 1302, - 386, 1302, 1926, - 1303, 1916, 1296, - 386, 1296, 1918, - 1287, 1913, 1304, - 387, 1304, 1927, - 1305, 1925, 1298, - 387, 1298, 1915, - 1303, 1926, 1306, - 388, 1306, 1928, - 1307, 1914, 1290, - 388, 1290, 1916, - 389, 1281, 1911, - 1308, 1929, 1309, - 389, 1309, 1927, - 1304, 1913, 1281, - 390, 1307, 1928, - 1310, 1930, 1311, - 390, 1311, 1912, - 1284, 1914, 1307, - 391, 1275, 1909, - 1312, 1931, 1313, - 391, 1313, 1929, - 1308, 1911, 1275, - 392, 1311, 1930, - 1314, 1932, 1315, - 392, 1315, 1910, - 1278, 1912, 1311, - 393, 1269, 1907, - 1316, 1933, 1317, - 393, 1317, 1931, - 1312, 1909, 1269, - 394, 1315, 1932, - 1318, 1934, 1319, - 394, 1319, 1908, - 1272, 1910, 1315, - 1316, 1907, 1263, - 395, 1263, 1919, - 1320, 1921, 1321, - 395, 1321, 1933, - 1322, 1922, 1323, - 396, 1323, 1920, - 1264, 1908, 1319, - 396, 1319, 1934, - 397, 1324, 1823, - 397, 1234, 1825, - 397, 1325, 1949, - 1326, 1947, 1324, - 398, 1327, 1950, - 398, 1328, 1826, - 398, 1239, 1824, - 1329, 1948, 1327, - 399, 1325, 1825, - 1330, 1895, 1294, - 399, 1294, 1917, - 1331, 1949, 1325, - 400, 1332, 1918, - 1295, 1896, 1333, - 400, 1333, 1826, - 1328, 1950, 1332, - 1218, 1815, 1140, - 401, 1140, 1823, - 1324, 1947, 1334, - 401, 1334, 1817, - 1335, 1948, 1329, - 402, 1329, 1824, - 1141, 1816, 1221, - 402, 1221, 1818, - 1336, 1887, 1337, - 403, 1337, 1935, - 1338, 1919, 1262, - 403, 1262, 1893, - 1265, 1920, 1339, - 404, 1339, 1936, - 1340, 1888, 1341, - 404, 1341, 1894, - 1331, 1917, 1300, - 405, 1300, 1923, - 405, 1342, 1945, - 405, 1343, 1949, - 406, 1344, 1946, - 406, 1345, 1924, - 1301, 1918, 1332, - 406, 1332, 1950, - 407, 1346, 1943, - 1347, 1951, 1348, - 407, 1348, 1949, - 1343, 1945, 1346, - 408, 1344, 1950, - 1349, 1952, 1350, - 408, 1350, 1944, - 1351, 1946, 1344, - 1352, 1939, 1353, - 409, 1353, 1951, - 1347, 1943, 1354, - 1354, 1941, 1352, - 1355, 1944, 1350, - 410, 1350, 1952, - 1356, 1940, 1357, - 1357, 1942, 1355, - 411, 1358, 1937, - 411, 1359, 1953, - 411, 1360, 1951, - 1353, 1939, 1358, - 412, 1356, 1952, - 412, 1361, 1954, - 412, 1362, 1938, - 1363, 1940, 1356, - 413, 1364, 1935, - 1365, 1953, 1359, - 413, 1359, 1937, - 1366, 1955, 1364, - 414, 1367, 1938, - 1362, 1954, 1368, - 414, 1368, 1936, - 1369, 1956, 1367, - 1320, 1919, 1338, - 1338, 1935, 1364, - 415, 1364, 1955, - 415, 1370, 1921, - 416, 1371, 1956, - 1369, 1936, 1339, - 1339, 1920, 1323, - 416, 1323, 1922, - 1222, 1817, 1372, - 417, 1372, 1953, - 1365, 1935, 1337, - 417, 1337, 1887, - 1340, 1936, 1368, - 418, 1368, 1954, - 1373, 1818, 1225, - 418, 1225, 1888, - 419, 1372, 1817, - 1334, 1947, 1374, - 419, 1374, 1951, - 1360, 1953, 1372, - 420, 1361, 1952, - 1375, 1948, 1335, - 420, 1335, 1818, - 1373, 1954, 1361, - 1374, 1947, 1326, - 1326, 1949, 1348, - 421, 1348, 1951, - 422, 1375, 1952, - 1349, 1950, 1327, - 1327, 1948, 1375, - 1376, 1921, 1370, - 423, 1370, 1955, - 1377, 1957, 1378, - 423, 1378, 1981, - 1379, 1958, 1380, - 424, 1380, 1956, - 1371, 1922, 1381, - 424, 1381, 1982, - 425, 1377, 1955, - 1366, 1937, 1382, - 425, 1382, 1967, - 1383, 1957, 1377, - 426, 1384, 1968, - 1385, 1938, 1367, - 426, 1367, 1956, - 1380, 1958, 1384, - 1382, 1937, 1358, - 427, 1358, 1939, - 1386, 1965, 1387, - 427, 1387, 1967, - 1388, 1966, 1389, - 428, 1389, 1940, - 1363, 1938, 1385, - 428, 1385, 1968, - 429, 1386, 1939, - 1352, 1941, 1390, - 429, 1390, 1963, - 1391, 1965, 1386, - 430, 1392, 1964, - 1393, 1942, 1357, - 430, 1357, 1940, - 1389, 1966, 1392, - 431, 1390, 1941, - 1354, 1943, 1394, - 1394, 1961, 1395, - 1395, 1963, 1390, - 1396, 1962, 1397, - 1397, 1944, 1355, - 432, 1355, 1942, - 1393, 1964, 1396, - 1394, 1943, 1346, - 433, 1346, 1945, - 1398, 1959, 1399, - 433, 1399, 1961, - 1400, 1960, 1401, - 434, 1401, 1946, - 1351, 1944, 1397, - 434, 1397, 1962, - 1398, 1945, 1342, - 1342, 1923, 1402, - 435, 1402, 1979, - 435, 1403, 1959, - 436, 1404, 1980, - 1405, 1924, 1345, - 1345, 1946, 1401, - 436, 1401, 1960, - 1406, 1933, 1321, - 437, 1321, 1921, - 1376, 1981, 1407, - 437, 1407, 1969, - 1408, 1982, 1381, - 438, 1381, 1922, - 1322, 1934, 1409, - 438, 1409, 1970, - 1410, 1931, 1317, - 439, 1317, 1933, - 1406, 1969, 1411, - 439, 1411, 1971, - 1412, 1970, 1409, - 440, 1409, 1934, - 1318, 1932, 1413, - 440, 1413, 1972, - 1414, 1929, 1313, - 441, 1313, 1931, - 1410, 1971, 1415, - 441, 1415, 1973, - 1416, 1972, 1413, - 442, 1413, 1932, - 1314, 1930, 1417, - 442, 1417, 1974, - 443, 1418, 1927, - 443, 1309, 1929, - 1414, 1973, 1419, - 443, 1419, 1975, - 1420, 1974, 1417, - 444, 1417, 1930, - 444, 1310, 1928, - 444, 1421, 1976, - 445, 1422, 1925, - 1305, 1927, 1418, - 445, 1418, 1975, - 1423, 1977, 1422, - 446, 1424, 1976, - 1421, 1928, 1306, - 446, 1306, 1926, - 1425, 1978, 1424, - 447, 1402, 1923, - 1299, 1925, 1422, - 447, 1422, 1977, - 1426, 1979, 1402, - 448, 1427, 1978, - 1425, 1926, 1302, - 448, 1302, 1924, - 1405, 1980, 1427, - 449, 1428, 1963, - 449, 1395, 1961, - 1429, 1985, 1430, - 1430, 1983, 1428, - 1431, 1986, 1432, - 450, 1432, 1962, - 450, 1396, 1964, - 1433, 1984, 1431, - 451, 1434, 1983, - 451, 1430, 1985, - 1435, 1987, 1436, - 1436, 1989, 1434, - 1437, 1988, 1438, - 452, 1438, 1986, - 452, 1431, 1984, - 1439, 1990, 1437, - 1440, 1989, 1436, - 453, 1436, 1987, - 453, 1441, 1993, - 1442, 1991, 1440, - 454, 1443, 1994, - 454, 1444, 1988, - 1437, 1990, 1445, - 1445, 1992, 1443, - 455, 1446, 1991, - 1442, 1993, 1447, - 455, 1447, 1995, - 1448, 1997, 1446, - 456, 1449, 1996, - 1450, 1994, 1443, - 456, 1443, 1992, - 1451, 1998, 1449, - 1452, 1969, 1407, - 457, 1407, 1981, - 1453, 1991, 1446, - 457, 1446, 1997, - 1451, 1992, 1454, - 458, 1454, 1982, - 1408, 1970, 1455, - 458, 1455, 1998, - 459, 1378, 1957, - 1456, 1989, 1440, - 459, 1440, 1991, - 1453, 1981, 1378, - 460, 1454, 1992, - 1445, 1990, 1457, - 460, 1457, 1958, - 1379, 1982, 1454, - 1456, 1957, 1383, - 1383, 1967, 1458, - 1458, 1983, 1434, - 461, 1434, 1989, - 1439, 1984, 1459, - 1459, 1968, 1384, - 1384, 1958, 1457, - 462, 1457, 1990, - 1391, 1963, 1428, - 463, 1428, 1983, - 1458, 1967, 1387, - 463, 1387, 1965, - 1388, 1968, 1459, - 464, 1459, 1984, - 1433, 1964, 1392, - 464, 1392, 1966, - 465, 1399, 1959, - 1403, 1979, 1460, - 465, 1460, 1985, - 1429, 1961, 1399, - 466, 1432, 1986, - 1461, 1980, 1404, - 466, 1404, 1960, - 1400, 1962, 1432, - 1426, 1977, 1462, - 467, 1462, 1987, - 1435, 1985, 1460, - 467, 1460, 1979, - 1461, 1986, 1438, - 468, 1438, 1988, - 1463, 1978, 1427, - 468, 1427, 1980, - 469, 1423, 1975, - 1464, 1993, 1441, - 469, 1441, 1987, - 1462, 1977, 1423, - 470, 1463, 1988, - 1444, 1994, 1465, - 470, 1465, 1976, - 1424, 1978, 1463, - 471, 1419, 1973, - 1466, 1995, 1447, - 471, 1447, 1993, - 1464, 1975, 1419, - 472, 1465, 1994, - 1450, 1996, 1467, - 472, 1467, 1974, - 1420, 1976, 1465, - 1415, 1971, 1468, - 473, 1468, 1997, - 1448, 1995, 1466, - 473, 1466, 1973, - 1467, 1996, 1449, - 474, 1449, 1998, - 1469, 1972, 1416, - 474, 1416, 1974, - 1411, 1969, 1452, - 1452, 1997, 1468, - 475, 1468, 1971, - 476, 1412, 1972, - 1469, 1998, 1455, - 1455, 1970, 1412, - 1470, 1897, 1292, - 477, 1292, 1895, - 1471, 2009, 1472, - 477, 1472, 2007, - 1473, 2010, 1474, - 478, 1474, 1896, - 1297, 1898, 1475, - 478, 1475, 2008, - 1476, 1899, 1286, - 479, 1286, 1897, - 1470, 2007, 1477, - 479, 1477, 2005, - 1478, 2008, 1475, - 480, 1475, 1898, - 1291, 1900, 1479, - 480, 1479, 2006, - 481, 1480, 1901, - 481, 1280, 1899, - 1476, 2005, 1481, - 1481, 2003, 1480, - 1482, 2006, 1479, - 482, 1479, 1900, - 482, 1285, 1902, - 1483, 2004, 1482, - 483, 1484, 1903, - 1274, 1901, 1480, - 483, 1480, 2003, - 1485, 2001, 1484, - 484, 1486, 2004, - 1483, 1902, 1279, - 484, 1279, 1904, - 1487, 2002, 1486, - 485, 1488, 1905, - 1268, 1903, 1484, - 485, 1484, 2001, - 1489, 1999, 1488, - 486, 1490, 2002, - 1487, 1904, 1273, - 486, 1273, 1906, - 1491, 2000, 1490, - 487, 1492, 1893, - 1261, 1905, 1488, - 487, 1488, 1999, - 487, 1493, 2011, - 488, 1494, 2000, - 1491, 1906, 1266, - 488, 1266, 1894, - 488, 1495, 2012, - 489, 1493, 1999, - 1496, 2007, 1472, - 489, 1472, 2009, - 1497, 2011, 1493, - 490, 1498, 2010, - 1473, 2008, 1499, - 490, 1499, 2000, - 1494, 2012, 1498, - 1496, 1999, 1489, - 491, 1489, 2001, - 1500, 2005, 1477, - 491, 1477, 2007, - 1478, 2006, 1501, - 492, 1501, 2002, - 1490, 2000, 1499, - 492, 1499, 2008, - 493, 1500, 2001, - 1485, 2003, 1481, - 493, 1481, 2005, - 494, 1501, 2006, - 1482, 2004, 1486, - 494, 1486, 2002, - 495, 1502, 1819, - 495, 1226, 1887, - 495, 1336, 1893, - 1492, 2011, 1502, - 496, 1495, 1894, - 496, 1341, 1888, - 496, 1227, 1820, - 1503, 2012, 1495, - 1246, 1819, 1502, - 497, 1502, 2011, - 1497, 2009, 1504, - 1504, 1827, 1246, - 1505, 2010, 1498, - 498, 1498, 2012, - 1503, 1820, 1251, - 1251, 1828, 1505, - 1330, 1825, 1254, - 499, 1254, 1827, - 1504, 2009, 1471, - 1471, 1895, 1330, - 1474, 2010, 1505, - 500, 1505, 1828, - 1257, 1826, 1333, - 1333, 1896, 1474, - 1, 501, 502, - 503, 1, 1506, - 1, 503, 504, - 501, 1, 1550, - 2, 505, 506, - 507, 2, 1507, - 2, 507, 508, - 505, 2, 1551, - 3, 509, 504, - 510, 3, 1508, - 3, 510, 511, - 509, 3, 1548, - 4, 512, 513, - 505, 4, 1509, - 4, 505, 514, - 512, 4, 1549, - 5, 510, 515, - 516, 5, 1514, - 5, 516, 517, - 510, 5, 1510, - 6, 518, 519, - 520, 6, 1515, - 6, 520, 513, - 518, 6, 1511, - 7, 503, 521, - 522, 7, 1516, - 7, 522, 515, - 503, 7, 1508, - 8, 520, 523, - 524, 8, 1517, - 8, 524, 506, - 520, 8, 1509, - 9, 522, 525, - 526, 9, 1518, - 9, 526, 527, - 522, 9, 1514, - 10, 528, 529, - 530, 10, 1519, - 10, 530, 523, - 528, 10, 1515, - 11, 516, 527, - 531, 11, 1520, - 11, 531, 532, - 516, 11, 1512, - 12, 533, 534, - 528, 12, 1521, - 12, 528, 519, - 533, 12, 1513, - 13, 531, 535, - 13, 535, 536, - 537, 13, 1524, - 531, 13, 1522, - 539, 14, 1525, - 14, 539, 540, - 14, 540, 534, - 538, 14, 1523, - 15, 526, 541, - 542, 15, 1528, - 535, 15, 1526, - 526, 15, 1520, - 543, 16, 1527, - 544, 16, 1529, - 16, 544, 529, - 540, 16, 1521, - 17, 542, 545, - 17, 545, 546, - 547, 17, 1532, - 542, 17, 1526, - 549, 18, 1533, - 18, 549, 550, - 18, 550, 543, - 548, 18, 1527, - 547, 19, 1526, - 19, 547, 551, - 552, 19, 1534, - 19, 552, 536, - 554, 20, 1535, - 20, 554, 548, - 539, 20, 1527, - 20, 539, 553, - 555, 21, 1532, - 21, 555, 556, - 557, 21, 1536, - 21, 557, 551, - 559, 22, 1537, - 22, 559, 560, - 554, 22, 1533, - 22, 554, 558, - 561, 23, 1530, - 23, 561, 562, - 555, 23, 1538, - 23, 555, 546, - 563, 24, 1539, - 24, 563, 564, - 549, 24, 1531, - 24, 549, 560, - 565, 25, 1540, - 25, 565, 566, - 567, 25, 1544, - 25, 567, 562, - 569, 26, 1545, - 26, 569, 570, - 563, 26, 1541, - 26, 563, 568, - 567, 27, 1538, - 27, 567, 571, - 572, 27, 1546, - 27, 572, 556, - 574, 28, 1547, - 28, 574, 568, - 559, 28, 1539, - 28, 559, 573, - 575, 29, 1544, - 29, 575, 509, - 576, 29, 1548, - 29, 576, 571, - 514, 30, 1549, - 30, 514, 578, - 574, 30, 1545, - 30, 574, 577, - 579, 31, 1542, - 31, 579, 501, - 575, 31, 1550, - 31, 575, 566, - 508, 32, 1551, - 32, 508, 580, - 569, 32, 1543, - 32, 569, 578, - 579, 33, 1552, - 33, 579, 582, - 583, 33, 1556, - 33, 583, 581, - 585, 34, 1557, - 34, 585, 580, - 586, 34, 1553, - 34, 586, 584, - 565, 35, 1542, - 35, 565, 587, - 588, 35, 1558, - 35, 588, 582, - 590, 36, 1559, - 36, 590, 570, - 585, 36, 1543, - 36, 585, 589, - 561, 37, 1540, - 37, 561, 591, - 592, 37, 1560, - 37, 592, 587, - 594, 38, 1561, - 38, 594, 564, - 590, 38, 1541, - 38, 590, 593, - 545, 39, 1530, - 595, 39, 1528, - 596, 39, 1562, - 39, 596, 591, - 598, 40, 1563, - 550, 40, 1529, - 594, 40, 1531, - 40, 594, 597, - 41, 595, 541, - 599, 41, 1518, - 41, 599, 600, - 595, 41, 1562, - 42, 601, 602, - 544, 42, 1519, - 42, 544, 598, - 601, 42, 1563, - 43, 599, 525, - 603, 43, 1516, - 43, 603, 604, - 599, 43, 1564, - 44, 605, 606, - 530, 44, 1517, - 44, 530, 602, - 605, 44, 1565, - 45, 603, 521, - 607, 45, 1506, - 45, 607, 608, - 603, 45, 1568, - 46, 609, 610, - 524, 46, 1507, - 46, 524, 606, - 609, 46, 1569, - 47, 607, 502, - 581, 47, 1552, - 47, 581, 611, - 607, 47, 1570, - 48, 612, 586, - 507, 48, 1553, - 48, 507, 610, - 612, 48, 1571, - 614, 49, 1566, - 49, 614, 611, - 49, 611, 613, - 50, 615, 612, - 50, 612, 616, - 615, 50, 1567, - 51, 617, 608, - 51, 608, 614, - 617, 51, 1566, - 616, 52, 1567, - 52, 616, 609, - 52, 609, 618, - 619, 53, 1566, - 53, 619, 604, - 53, 604, 617, - 54, 618, 605, - 54, 605, 620, - 618, 54, 1567, - 621, 55, 1566, - 55, 621, 600, - 55, 600, 619, - 56, 620, 601, - 56, 601, 622, - 620, 56, 1567, - 623, 57, 1566, - 57, 623, 596, - 57, 596, 621, - 58, 622, 597, - 58, 597, 624, - 622, 58, 1567, - 625, 59, 1566, - 59, 625, 592, - 59, 592, 623, - 60, 624, 593, - 60, 593, 626, - 624, 60, 1567, - 627, 61, 1566, - 61, 627, 588, - 61, 588, 625, - 62, 626, 589, - 62, 589, 628, - 626, 62, 1567, - 613, 63, 1566, - 63, 613, 583, - 63, 583, 627, - 64, 628, 584, - 64, 584, 615, - 628, 64, 1567, - 630, 65, 1594, - 65, 630, 631, - 632, 65, 1681, - 65, 632, 629, - 633, 66, 1681, - 66, 633, 634, - 635, 66, 1595, - 66, 635, 632, - 637, 67, 1592, - 67, 637, 638, - 630, 67, 1679, - 67, 630, 636, - 639, 68, 1680, - 68, 639, 640, - 641, 68, 1593, - 68, 641, 634, - 69, 642, 643, - 644, 69, 1675, - 69, 644, 637, - 69, 637, 642, - 70, 640, 645, - 646, 70, 1676, - 70, 646, 647, - 70, 647, 640, - 649, 71, 1588, - 650, 71, 1673, - 71, 650, 643, - 648, 71, 1590, - 72, 646, 651, - 652, 72, 1674, - 653, 72, 1589, - 646, 72, 1591, - 655, 73, 1586, - 656, 73, 1671, - 73, 656, 649, - 73, 649, 654, - 74, 652, 657, - 658, 74, 1672, - 659, 74, 1587, - 74, 659, 652, - 75, 660, 661, - 662, 75, 1597, - 75, 662, 663, - 660, 75, 1669, - 76, 664, 665, - 666, 76, 1598, - 76, 666, 667, - 664, 76, 1670, - 77, 662, 668, - 77, 668, 669, - 77, 669, 670, - 662, 77, 1651, - 78, 671, 672, - 78, 672, 673, - 78, 673, 665, - 671, 78, 1652, - 79, 669, 674, - 675, 79, 1601, - 79, 675, 676, - 669, 79, 1653, - 80, 677, 678, - 679, 80, 1602, - 80, 679, 672, - 677, 80, 1654, - 680, 81, 1601, - 81, 680, 681, - 682, 81, 1657, - 81, 682, 675, - 684, 82, 1658, - 82, 684, 685, - 678, 82, 1602, - 82, 678, 683, - 686, 83, 1603, - 83, 686, 687, - 688, 83, 1659, - 83, 688, 681, - 690, 84, 1660, - 84, 690, 691, - 684, 84, 1604, - 84, 684, 689, - 692, 85, 1605, - 85, 692, 693, - 694, 85, 1661, - 85, 694, 687, - 696, 86, 1662, - 86, 696, 697, - 690, 86, 1606, - 86, 690, 695, - 698, 87, 1607, - 87, 698, 699, - 87, 699, 700, - 693, 87, 1661, - 88, 701, 702, - 88, 702, 703, - 696, 88, 1608, - 701, 88, 1662, - 704, 89, 1609, - 89, 704, 705, - 706, 89, 1665, - 699, 89, 1663, - 708, 90, 1666, - 90, 708, 709, - 702, 90, 1610, - 707, 90, 1664, - 710, 91, 1611, - 91, 710, 711, - 712, 91, 1667, - 91, 712, 705, - 714, 92, 1668, - 92, 714, 715, - 708, 92, 1612, - 92, 708, 713, - 716, 93, 1613, - 93, 716, 717, - 718, 93, 1573, - 93, 718, 711, - 717, 94, 1573, - 94, 717, 720, - 714, 94, 1614, - 94, 714, 719, - 722, 95, 1615, - 95, 722, 723, - 712, 95, 1665, - 95, 712, 721, - 724, 96, 1666, - 96, 724, 725, - 726, 96, 1616, - 96, 726, 713, - 727, 97, 1633, - 728, 97, 1684, - 97, 728, 706, - 97, 706, 723, - 98, 707, 729, - 730, 98, 1685, - 724, 98, 1634, - 98, 724, 707, - 732, 99, 1631, - 99, 732, 700, - 728, 99, 1663, - 99, 728, 731, - 701, 100, 1664, - 100, 701, 733, - 734, 100, 1632, - 100, 734, 729, - 101, 735, 736, - 694, 101, 1659, - 732, 101, 1661, - 101, 732, 735, - 695, 102, 1662, - 737, 102, 1660, - 102, 737, 738, - 102, 738, 733, - 740, 103, 1627, - 103, 740, 688, - 103, 688, 736, - 739, 103, 1629, - 104, 737, 689, - 104, 689, 741, - 742, 104, 1628, - 737, 104, 1630, - 744, 105, 1625, - 105, 744, 682, - 740, 105, 1657, - 105, 740, 743, - 683, 106, 1658, - 106, 683, 745, - 746, 106, 1626, - 106, 746, 741, - 748, 107, 1623, - 107, 748, 676, - 744, 107, 1655, - 107, 744, 747, - 677, 108, 1656, - 108, 677, 749, - 750, 108, 1624, - 108, 750, 745, - 752, 109, 1621, - 109, 752, 670, - 748, 109, 1653, - 109, 748, 751, - 671, 110, 1654, - 110, 671, 753, - 754, 110, 1622, - 110, 754, 749, - 111, 755, 756, - 663, 111, 1669, - 752, 111, 1651, - 111, 752, 755, - 664, 112, 1652, - 757, 112, 1670, - 112, 757, 758, - 112, 758, 753, - 113, 756, 759, - 760, 113, 1686, - 113, 760, 761, - 756, 113, 1669, - 114, 762, 763, - 764, 114, 1687, - 114, 764, 757, - 762, 114, 1670, - 721, 115, 1615, - 115, 721, 718, - 766, 115, 1573, - 115, 766, 765, - 719, 116, 1573, - 116, 719, 726, - 768, 116, 1616, - 116, 768, 767, - 117, 769, 766, - 770, 117, 1573, - 117, 770, 771, - 769, 117, 1688, - 118, 772, 770, - 767, 118, 1573, - 118, 767, 773, - 772, 118, 1689, - 760, 119, 1682, - 119, 760, 775, - 771, 119, 1688, - 119, 771, 774, - 776, 120, 1689, - 120, 776, 763, - 774, 120, 1682, - 120, 774, 772, - 121, 777, 778, - 779, 121, 1642, - 121, 779, 631, - 777, 121, 1679, - 122, 633, 779, - 780, 122, 1642, - 122, 780, 781, - 633, 122, 1680, - 123, 782, 783, - 777, 123, 1640, - 123, 777, 638, - 782, 123, 1677, - 124, 639, 781, - 784, 124, 1641, - 124, 784, 785, - 639, 124, 1678, - 787, 125, 1636, - 125, 787, 782, - 644, 125, 1677, - 125, 644, 786, - 785, 126, 1678, - 126, 785, 788, - 789, 126, 1637, - 126, 789, 645, - 127, 656, 790, - 791, 127, 1692, - 127, 791, 792, - 656, 127, 1673, - 128, 793, 794, - 795, 128, 1693, - 128, 795, 657, - 793, 128, 1674, - 129, 796, 786, - 650, 129, 1675, - 129, 650, 792, - 796, 129, 1690, - 130, 793, 651, - 789, 130, 1676, - 130, 789, 797, - 793, 130, 1691, - 799, 131, 1649, - 131, 799, 800, - 801, 131, 1694, - 131, 801, 798, - 800, 132, 1694, - 132, 800, 803, - 804, 132, 1650, - 132, 804, 802, - 791, 133, 1690, - 133, 791, 801, - 806, 133, 1694, - 133, 806, 805, - 802, 134, 1694, - 134, 802, 794, - 807, 134, 1691, - 134, 807, 806, - 809, 135, 1635, - 135, 809, 796, - 135, 796, 805, - 135, 805, 808, - 136, 807, 797, - 136, 797, 810, - 808, 136, 1635, - 136, 808, 807, - 137, 811, 812, - 813, 137, 1698, - 137, 813, 814, - 811, 137, 1649, - 138, 815, 816, - 817, 138, 1699, - 138, 817, 818, - 815, 138, 1650, - 820, 139, 1645, - 139, 820, 821, - 812, 139, 1698, - 819, 139, 1647, - 822, 140, 1699, - 140, 822, 823, - 824, 140, 1646, - 817, 140, 1648, - 826, 141, 1644, - 141, 826, 827, - 820, 141, 1700, - 141, 820, 825, - 828, 142, 1701, - 142, 828, 829, - 830, 142, 1644, - 142, 830, 823, - 143, 831, 832, - 143, 832, 833, - 826, 143, 1702, - 143, 826, 831, - 834, 144, 1703, - 144, 834, 832, - 144, 832, 831, - 144, 831, 829, - 799, 145, 1695, - 145, 799, 814, - 836, 145, 1696, - 145, 836, 835, - 815, 146, 1697, - 146, 815, 803, - 835, 146, 1695, - 146, 835, 837, - 836, 147, 1575, - 147, 836, 839, - 147, 839, 840, - 147, 840, 838, - 148, 841, 842, - 148, 842, 837, - 838, 148, 1575, - 148, 838, 841, - 149, 833, 843, - 844, 149, 1704, - 149, 844, 845, - 833, 149, 1702, - 150, 846, 847, - 843, 150, 1704, - 150, 843, 834, - 846, 150, 1703, - 845, 151, 1702, - 848, 151, 1705, - 849, 151, 1707, - 151, 849, 827, - 851, 152, 1708, - 846, 152, 1706, - 828, 152, 1703, - 152, 828, 850, - 849, 153, 1700, - 153, 849, 852, - 853, 153, 1709, - 153, 853, 821, - 855, 154, 1710, - 154, 855, 850, - 822, 154, 1701, - 154, 822, 854, - 155, 813, 853, - 155, 853, 856, - 839, 155, 1711, - 813, 155, 1696, - 857, 156, 1712, - 156, 857, 854, - 156, 854, 816, - 842, 156, 1697, - 858, 157, 1704, - 157, 858, 852, - 157, 852, 848, - 157, 848, 844, - 158, 851, 855, - 158, 855, 859, - 847, 158, 1704, - 158, 847, 851, - 159, 858, 860, - 840, 159, 1713, - 159, 840, 856, - 858, 159, 1709, - 160, 857, 841, - 860, 160, 1713, - 160, 860, 859, - 857, 160, 1710, - 161, 861, 825, - 862, 161, 1645, - 161, 862, 761, - 861, 161, 1682, - 162, 762, 863, - 830, 162, 1646, - 162, 830, 861, - 762, 162, 1682, - 163, 862, 819, - 163, 819, 864, - 865, 163, 1716, - 163, 865, 862, - 867, 164, 1717, - 164, 867, 824, - 164, 824, 863, - 164, 863, 866, - 811, 165, 1647, - 868, 165, 1649, - 869, 165, 1718, - 165, 869, 864, - 871, 166, 1719, - 818, 166, 1650, - 867, 166, 1648, - 166, 867, 870, - 798, 167, 1649, - 167, 798, 790, - 872, 167, 1671, - 167, 872, 868, - 795, 168, 1672, - 168, 795, 804, - 871, 168, 1650, - 168, 871, 873, - 169, 655, 874, - 875, 169, 1714, - 872, 169, 1718, - 169, 872, 655, - 876, 170, 1719, - 877, 170, 1715, - 170, 877, 658, - 170, 658, 873, - 878, 171, 1714, - 171, 878, 879, - 869, 171, 1716, - 171, 869, 875, - 880, 172, 1717, - 172, 880, 881, - 876, 172, 1715, - 172, 876, 870, - 173, 882, 660, - 865, 173, 1669, - 173, 865, 879, - 882, 173, 1720, - 174, 880, 866, - 667, 174, 1670, - 174, 667, 883, - 880, 174, 1721, - 809, 175, 1636, - 175, 809, 885, - 886, 175, 1577, - 175, 886, 884, - 885, 176, 1577, - 176, 885, 810, - 888, 176, 1637, - 176, 888, 887, - 787, 177, 1638, - 177, 787, 884, - 177, 884, 890, - 889, 177, 1725, - 178, 891, 888, - 178, 888, 788, - 892, 178, 1639, - 891, 178, 1726, - 179, 893, 783, - 179, 783, 889, - 179, 889, 894, - 893, 179, 1723, - 180, 895, 892, - 180, 892, 784, - 180, 784, 896, - 895, 180, 1724, - 181, 897, 778, - 893, 181, 1640, - 181, 893, 898, - 897, 181, 1722, - 182, 899, 896, - 780, 182, 1641, - 182, 780, 897, - 899, 182, 1722, - 898, 183, 1722, - 901, 183, 1723, - 902, 183, 1734, - 183, 902, 900, - 904, 184, 1735, - 899, 184, 1724, - 900, 184, 1722, - 184, 900, 903, - 185, 901, 894, - 905, 185, 1725, - 185, 905, 906, - 185, 906, 901, - 186, 907, 908, - 895, 186, 1726, - 186, 895, 904, - 186, 904, 907, - 187, 905, 890, - 909, 187, 1727, - 187, 909, 910, - 905, 187, 1732, - 188, 911, 912, - 891, 188, 1728, - 188, 891, 908, - 911, 188, 1733, - 886, 189, 1727, - 189, 886, 913, - 914, 189, 1729, - 189, 914, 909, - 913, 190, 1729, - 190, 913, 887, - 912, 190, 1728, - 190, 912, 915, - 191, 914, 916, - 902, 191, 1736, - 191, 902, 917, - 914, 191, 1730, - 192, 918, 903, - 916, 192, 1736, - 192, 916, 915, - 918, 192, 1731, - 917, 193, 1730, - 906, 193, 1734, - 193, 906, 910, - 194, 911, 907, - 918, 194, 1735, - 911, 194, 1731, - 195, 919, 775, - 920, 195, 1686, - 195, 920, 921, - 919, 195, 1737, - 196, 922, 923, - 776, 196, 1687, - 196, 776, 924, - 922, 196, 1738, - 769, 197, 1617, - 197, 769, 919, - 197, 919, 926, - 925, 197, 1759, - 198, 927, 924, - 198, 924, 773, - 928, 198, 1618, - 927, 198, 1760, - 199, 929, 765, - 199, 765, 925, - 199, 925, 930, - 199, 930, 929, - 200, 931, 928, - 200, 928, 768, - 200, 768, 932, - 200, 932, 931, - 201, 920, 759, - 201, 759, 933, - 934, 201, 1757, - 920, 201, 1739, - 936, 202, 1758, - 202, 936, 764, - 202, 764, 923, - 935, 202, 1740, - 203, 933, 755, - 937, 203, 1621, - 203, 937, 938, - 933, 203, 1757, - 204, 939, 940, - 758, 204, 1622, - 204, 758, 936, - 939, 204, 1758, - 205, 937, 751, - 941, 205, 1623, - 205, 941, 942, - 937, 205, 1755, - 206, 943, 944, - 754, 206, 1624, - 206, 754, 940, - 943, 206, 1756, - 207, 941, 747, - 945, 207, 1625, - 207, 945, 946, - 941, 207, 1753, - 208, 947, 948, - 750, 208, 1626, - 208, 750, 944, - 947, 208, 1754, - 209, 945, 743, - 949, 209, 1627, - 209, 949, 950, - 945, 209, 1751, - 210, 951, 952, - 746, 210, 1628, - 210, 746, 948, - 951, 210, 1752, - 211, 949, 739, - 211, 739, 953, - 954, 211, 1747, - 211, 954, 949, - 956, 212, 1748, - 212, 956, 742, - 212, 742, 952, - 212, 952, 955, - 735, 213, 1629, - 213, 735, 957, - 958, 213, 1745, - 213, 958, 953, - 960, 214, 1746, - 214, 960, 738, - 956, 214, 1630, - 214, 956, 959, - 215, 957, 731, - 961, 215, 1684, - 215, 961, 962, - 957, 215, 1745, - 216, 963, 964, - 734, 216, 1685, - 216, 734, 960, - 963, 216, 1746, - 217, 961, 727, - 965, 217, 1633, - 217, 965, 966, - 961, 217, 1741, - 218, 967, 968, - 730, 218, 1634, - 218, 730, 964, - 967, 218, 1742, - 219, 965, 722, - 929, 219, 1615, - 219, 929, 969, - 965, 219, 1743, - 220, 970, 932, - 725, 220, 1616, - 220, 725, 968, - 970, 220, 1744, - 221, 971, 969, - 972, 221, 1761, - 973, 221, 1763, - 221, 973, 971, - 975, 222, 1764, - 970, 222, 1762, - 222, 970, 976, - 222, 976, 974, - 223, 977, 966, - 971, 223, 1743, - 223, 971, 978, - 977, 223, 1783, - 224, 979, 976, - 967, 224, 1744, - 224, 967, 980, - 979, 224, 1784, - 225, 981, 962, - 977, 225, 1741, - 225, 977, 982, - 981, 225, 1779, - 226, 983, 980, - 963, 226, 1742, - 226, 963, 984, - 983, 226, 1780, - 958, 227, 1747, - 227, 958, 981, - 986, 227, 1779, - 227, 986, 985, - 984, 228, 1780, - 228, 984, 959, - 988, 228, 1748, - 228, 988, 987, - 229, 989, 954, - 229, 954, 985, - 990, 229, 1777, - 989, 229, 1775, - 988, 230, 1778, - 230, 988, 955, - 230, 955, 992, - 991, 230, 1776, - 231, 993, 950, - 989, 231, 1749, - 231, 989, 994, - 993, 231, 1773, - 232, 995, 992, - 951, 232, 1750, - 232, 951, 996, - 995, 232, 1774, - 233, 997, 946, - 993, 233, 1751, - 233, 993, 998, - 997, 233, 1771, - 234, 999, 996, - 947, 234, 1752, - 234, 947, 1000, - 999, 234, 1772, - 942, 235, 1755, - 235, 942, 997, - 1002, 235, 1771, - 235, 1002, 1001, - 1000, 236, 1772, - 236, 1000, 943, - 1004, 236, 1756, - 236, 1004, 1003, - 938, 237, 1757, - 237, 938, 1001, - 1006, 237, 1769, - 237, 1006, 1005, - 1004, 238, 1770, - 238, 1004, 939, - 1008, 238, 1758, - 238, 1008, 1007, - 239, 1009, 934, - 239, 934, 1005, - 1010, 239, 1767, - 1009, 239, 1785, - 1008, 240, 1768, - 240, 1008, 935, - 240, 935, 1012, - 1011, 240, 1786, - 241, 972, 930, - 1013, 241, 1759, - 241, 1013, 1014, - 972, 241, 1763, - 242, 1015, 1016, - 931, 242, 1760, - 242, 931, 975, - 1015, 242, 1764, - 243, 1013, 926, - 1017, 243, 1737, - 243, 1017, 1018, - 1013, 243, 1765, - 244, 1019, 1020, - 927, 244, 1738, - 244, 927, 1016, - 1019, 244, 1766, - 245, 1017, 921, - 1009, 245, 1739, - 245, 1009, 1021, - 1017, 245, 1787, - 246, 1022, 1012, - 922, 246, 1740, - 246, 922, 1020, - 1022, 246, 1788, - 247, 1023, 716, - 1024, 247, 1613, - 1025, 247, 1789, - 247, 1025, 1023, - 1027, 248, 1790, - 720, 248, 1614, - 248, 720, 1023, - 248, 1023, 1026, - 249, 1024, 710, - 1028, 249, 1611, - 249, 1028, 1029, - 249, 1029, 1024, - 250, 1030, 1031, - 715, 250, 1612, - 250, 715, 1027, - 250, 1027, 1030, - 704, 251, 1611, - 251, 704, 1032, - 1033, 251, 1793, - 251, 1033, 1028, - 1035, 252, 1794, - 252, 1035, 709, - 1031, 252, 1612, - 252, 1031, 1034, - 698, 253, 1609, - 253, 698, 1036, - 1037, 253, 1795, - 253, 1037, 1032, - 1039, 254, 1796, - 254, 1039, 703, - 1035, 254, 1610, - 254, 1035, 1038, - 692, 255, 1607, - 255, 692, 1040, - 1041, 255, 1797, - 255, 1041, 1036, - 1043, 256, 1798, - 256, 1043, 697, - 1039, 256, 1608, - 256, 1039, 1042, - 686, 257, 1605, - 257, 686, 1044, - 1045, 257, 1799, - 257, 1045, 1040, - 1047, 258, 1800, - 258, 1047, 691, - 1043, 258, 1606, - 258, 1043, 1046, - 680, 259, 1603, - 259, 680, 1048, - 1049, 259, 1801, - 259, 1049, 1044, - 1051, 260, 1802, - 260, 1051, 685, - 1047, 260, 1604, - 260, 1047, 1050, - 674, 261, 1601, - 1052, 261, 1599, - 261, 1052, 1053, - 1048, 261, 1801, - 262, 1054, 1055, - 679, 262, 1600, - 1051, 262, 1602, - 1054, 262, 1802, - 263, 1052, 668, - 1056, 263, 1597, - 263, 1056, 1057, - 1052, 263, 1803, - 264, 1058, 1059, - 673, 264, 1598, - 264, 673, 1055, - 1058, 264, 1804, - 1061, 265, 1813, - 265, 1061, 1062, - 1063, 265, 1833, - 265, 1063, 1060, - 1065, 266, 1834, - 266, 1065, 1061, - 1066, 266, 1813, - 266, 1066, 1064, - 1068, 267, 1812, - 267, 1068, 1060, - 1069, 267, 1843, - 267, 1069, 1067, - 1066, 268, 1844, - 268, 1066, 1068, - 1071, 268, 1812, - 268, 1071, 1070, - 1073, 269, 1811, - 269, 1073, 1067, - 1074, 269, 1841, - 269, 1074, 1072, - 1071, 270, 1842, - 270, 1071, 1073, - 1076, 270, 1811, - 270, 1076, 1075, - 271, 1077, 629, - 1078, 271, 1596, - 271, 1078, 1072, - 1077, 271, 1845, - 272, 1076, 1078, - 635, 272, 1596, - 272, 635, 1079, - 1076, 272, 1846, - 273, 1080, 636, - 1077, 273, 1594, - 273, 1077, 1081, - 1080, 273, 1839, - 274, 1082, 1079, - 641, 274, 1595, - 274, 641, 1083, - 1082, 274, 1840, - 275, 1084, 642, - 1080, 275, 1592, - 275, 1080, 1085, - 1084, 275, 1835, - 276, 1086, 1083, - 647, 276, 1593, - 276, 647, 1087, - 1086, 276, 1836, - 277, 1088, 648, - 1084, 277, 1590, - 277, 1084, 1089, - 1088, 277, 1837, - 278, 1090, 1087, - 653, 278, 1591, - 278, 653, 1091, - 1090, 278, 1838, - 1092, 279, 1835, - 1069, 279, 1841, - 279, 1069, 1093, - 279, 1093, 1089, - 280, 1094, 1070, - 1095, 280, 1842, - 1090, 280, 1836, - 280, 1090, 1094, - 281, 1092, 1085, - 281, 1085, 1081, - 1074, 281, 1845, - 281, 1074, 1092, - 1082, 282, 1846, - 282, 1082, 1086, - 282, 1086, 1095, - 282, 1095, 1075, - 283, 1096, 1097, - 1093, 283, 1837, - 1063, 283, 1843, - 283, 1063, 1096, - 1094, 284, 1844, - 1098, 284, 1838, - 284, 1098, 1099, - 284, 1099, 1064, - 285, 1100, 654, - 1088, 285, 1588, - 285, 1088, 1097, - 1100, 285, 1831, - 286, 1098, 1091, - 659, 286, 1589, - 286, 659, 1101, - 1098, 286, 1832, - 1102, 287, 1714, - 1103, 287, 1847, - 287, 1103, 1104, - 878, 287, 1720, - 288, 1105, 1106, - 1107, 288, 1848, - 881, 288, 1715, - 1105, 288, 1721, - 1100, 289, 1586, - 289, 1100, 1108, - 1102, 289, 1847, - 289, 1102, 874, - 1109, 290, 1848, - 290, 1109, 1101, - 877, 290, 1587, - 290, 877, 1107, - 882, 291, 1584, - 291, 882, 1104, - 1111, 291, 1849, - 1110, 291, 1851, - 1105, 292, 1850, - 292, 1105, 883, - 1113, 292, 1585, - 1112, 292, 1852, - 1110, 293, 1584, - 293, 1110, 1114, - 293, 1114, 1056, - 293, 1056, 661, - 294, 1059, 1115, - 294, 1115, 1113, - 666, 294, 1585, - 294, 666, 1059, - 1117, 295, 1582, - 295, 1117, 1118, - 1119, 295, 1857, - 295, 1119, 1116, - 1121, 296, 1858, - 296, 1121, 1122, - 1116, 296, 1582, - 296, 1116, 1120, - 1119, 297, 1809, - 297, 1119, 1124, - 1125, 297, 1855, - 297, 1125, 1123, - 1127, 298, 1856, - 298, 1127, 1120, - 1123, 298, 1809, - 298, 1123, 1126, - 1125, 299, 1583, - 1129, 299, 1855, - 1130, 299, 1853, - 1128, 299, 1810, - 1132, 300, 1854, - 1126, 300, 1856, - 1128, 300, 1583, - 1131, 300, 1810, - 301, 1133, 1130, - 1134, 301, 1853, - 301, 1134, 1062, - 1133, 301, 1814, - 302, 1065, 1135, - 1131, 302, 1854, - 302, 1131, 1133, - 1065, 302, 1814, - 1096, 303, 1831, - 303, 1096, 1134, - 1136, 303, 1853, - 303, 1136, 1108, - 1135, 304, 1854, - 304, 1135, 1099, - 1109, 304, 1832, - 304, 1109, 1137, - 305, 1138, 1053, - 1139, 305, 1803, - 305, 1139, 1140, - 1138, 305, 1815, - 306, 1141, 1142, - 1054, 306, 1804, - 306, 1054, 1143, - 1141, 306, 1816, - 1145, 307, 1581, - 307, 1145, 1146, - 1117, 307, 1829, - 307, 1117, 1144, - 1147, 308, 1830, - 308, 1147, 1148, - 1144, 308, 1581, - 308, 1144, 1122, - 1150, 309, 1807, - 309, 1150, 1151, - 1152, 309, 1861, - 1149, 309, 1808, - 1154, 310, 1862, - 310, 1154, 1155, - 1149, 310, 1807, - 1153, 310, 1808, - 311, 1156, 1152, - 1157, 311, 1861, - 311, 1157, 1158, - 1156, 311, 1580, - 312, 1159, 1160, - 1153, 312, 1862, - 312, 1153, 1156, - 1159, 312, 1580, - 313, 1161, 1158, - 1162, 313, 1859, - 1145, 313, 1821, - 1161, 313, 1581, - 1163, 314, 1822, - 1159, 314, 1860, - 314, 1159, 1161, - 1148, 314, 1581, - 315, 1164, 1045, - 315, 1045, 1165, - 315, 1165, 1166, - 1164, 315, 1869, - 316, 1167, 1168, - 316, 1168, 1046, - 316, 1046, 1169, - 1167, 316, 1870, - 317, 1170, 1166, - 1171, 317, 1867, - 317, 1171, 1172, - 1170, 317, 1871, - 318, 1173, 1174, - 1167, 318, 1868, - 318, 1167, 1175, - 1173, 318, 1872, - 319, 1176, 1172, - 1177, 319, 1873, - 319, 1177, 1178, - 1176, 319, 1877, - 320, 1179, 1180, - 1173, 320, 1874, - 320, 1173, 1181, - 1179, 320, 1878, - 321, 1182, 1178, - 1183, 321, 1875, - 321, 1183, 1184, - 321, 1184, 1182, - 322, 1185, 1186, - 1179, 322, 1876, - 322, 1179, 1187, - 322, 1187, 1185, - 323, 1188, 1189, - 323, 1189, 1190, - 1184, 323, 1879, - 323, 1184, 1188, - 1191, 324, 1880, - 324, 1191, 1192, - 324, 1192, 1193, - 324, 1193, 1185, - 325, 1194, 1162, - 1195, 325, 1859, - 325, 1195, 1190, - 1194, 325, 1883, - 326, 1191, 1196, - 1163, 326, 1860, - 326, 1163, 1197, - 1191, 326, 1884, - 327, 1195, 1157, - 1198, 327, 1861, - 327, 1198, 1182, - 1195, 327, 1879, - 328, 1187, 1199, - 1160, 328, 1862, - 328, 1160, 1196, - 1187, 328, 1880, - 329, 1198, 1151, - 1200, 329, 1863, - 329, 1200, 1176, - 1198, 329, 1877, - 330, 1181, 1201, - 1154, 330, 1864, - 330, 1154, 1199, - 1181, 330, 1878, - 331, 1200, 1202, - 1203, 331, 1865, - 331, 1203, 1170, - 331, 1170, 1200, - 332, 1175, 1204, - 1205, 332, 1866, - 332, 1205, 1201, - 332, 1201, 1175, - 1041, 333, 1795, - 333, 1041, 1164, - 1203, 333, 1869, - 333, 1203, 1206, - 1169, 334, 1870, - 334, 1169, 1042, - 1207, 334, 1796, - 334, 1207, 1204, - 1209, 335, 1579, - 335, 1209, 1202, - 1150, 335, 1863, - 335, 1150, 1208, - 1205, 336, 1864, - 336, 1205, 1210, - 1208, 336, 1579, - 336, 1208, 1155, - 1029, 337, 1789, - 337, 1029, 1033, - 337, 1033, 1037, - 1211, 337, 1795, - 338, 1038, 1034, - 338, 1034, 1030, - 1212, 338, 1790, - 1038, 338, 1796, - 339, 1213, 1211, - 1206, 339, 1795, - 339, 1206, 1209, - 1213, 339, 1579, - 340, 1210, 1207, - 1212, 340, 1796, - 340, 1212, 1214, - 1210, 340, 1579, - 341, 1215, 1025, - 341, 1025, 1213, - 341, 1213, 1215, - 342, 1215, 1214, - 342, 1214, 1026, - 342, 1026, 1215, - 1049, 343, 1799, - 343, 1049, 1138, - 1216, 343, 1815, - 343, 1216, 1165, - 1143, 344, 1816, - 344, 1143, 1050, - 1168, 344, 1800, - 344, 1168, 1217, - 345, 1216, 1218, - 1219, 345, 1817, - 345, 1219, 1171, - 1216, 345, 1867, - 346, 1174, 1220, - 1221, 346, 1818, - 346, 1221, 1217, - 1174, 346, 1868, - 347, 1219, 1222, - 1223, 347, 1887, - 347, 1223, 1177, - 1219, 347, 1873, - 348, 1180, 1224, - 1225, 348, 1888, - 348, 1225, 1220, - 1180, 348, 1874, - 1188, 349, 1819, - 349, 1188, 1183, - 1223, 349, 1875, - 349, 1223, 1226, - 1186, 350, 1876, - 350, 1186, 1193, - 1227, 350, 1820, - 350, 1227, 1224, - 1129, 351, 1853, - 351, 1129, 1229, - 1230, 351, 1891, - 1228, 351, 1889, - 1232, 352, 1892, - 352, 1232, 1132, - 1233, 352, 1854, - 1231, 352, 1890, - 1235, 353, 1823, - 1230, 353, 1889, - 1236, 353, 1891, - 353, 1236, 1234, - 1231, 354, 1892, - 1238, 354, 1890, - 1239, 354, 1824, - 354, 1239, 1237, - 355, 1139, 1057, - 1240, 355, 1805, - 355, 1240, 1235, - 1139, 355, 1823, - 356, 1238, 1241, - 1058, 356, 1806, - 356, 1058, 1142, - 1238, 356, 1824, - 357, 1240, 1242, - 1103, 357, 1849, - 357, 1103, 1243, - 1240, 357, 1889, - 358, 1244, 1106, - 1245, 358, 1850, - 358, 1245, 1241, - 1244, 358, 1890, - 1136, 359, 1847, - 359, 1136, 1228, - 359, 1228, 1243, - 360, 1244, 1233, - 360, 1233, 1137, - 1244, 360, 1848, - 1114, 361, 1805, - 361, 1114, 1111, - 361, 1111, 1242, - 362, 1245, 1112, - 362, 1112, 1115, - 1245, 362, 1806, - 1246, 363, 1819, - 1247, 363, 1827, - 1248, 363, 1885, - 1189, 363, 1883, - 1250, 364, 1886, - 1251, 364, 1828, - 1192, 364, 1820, - 1249, 364, 1884, - 1194, 365, 1821, - 365, 1194, 1248, - 1252, 365, 1885, - 1146, 365, 1829, - 1249, 366, 1886, - 366, 1249, 1197, - 1147, 366, 1822, - 1253, 366, 1830, - 1236, 367, 1825, - 367, 1236, 1255, - 1247, 367, 1885, - 367, 1247, 1254, - 1256, 368, 1886, - 368, 1256, 1237, - 1257, 368, 1826, - 368, 1257, 1250, - 1124, 369, 1855, - 369, 1124, 1258, - 1255, 369, 1885, - 369, 1255, 1229, - 1259, 370, 1886, - 370, 1259, 1127, - 1232, 370, 1856, - 370, 1232, 1256, - 371, 1118, 1252, - 371, 1252, 1258, - 371, 1258, 1118, - 372, 1121, 1259, - 372, 1259, 1253, - 372, 1253, 1121, - 1261, 373, 1905, - 373, 1261, 1262, - 1263, 373, 1919, - 373, 1263, 1260, - 1265, 374, 1920, - 374, 1265, 1266, - 1267, 374, 1906, - 374, 1267, 1264, - 375, 1268, 1260, - 1269, 375, 1907, - 375, 1269, 1270, - 1268, 375, 1903, - 376, 1271, 1272, - 1267, 376, 1908, - 376, 1267, 1273, - 1271, 376, 1904, - 377, 1274, 1270, - 377, 1270, 1275, - 1276, 377, 1911, - 377, 1276, 1274, - 1278, 378, 1912, - 378, 1278, 1271, - 378, 1271, 1279, - 378, 1279, 1277, - 1276, 379, 1901, - 379, 1276, 1281, - 1282, 379, 1913, - 379, 1282, 1280, - 1284, 380, 1914, - 380, 1284, 1277, - 1285, 380, 1902, - 380, 1285, 1283, - 1282, 381, 1899, - 381, 1282, 1287, - 381, 1287, 1288, - 381, 1288, 1286, - 382, 1289, 1290, - 382, 1290, 1283, - 1291, 382, 1900, - 382, 1291, 1289, - 1288, 383, 1897, - 1293, 383, 1915, - 383, 1293, 1294, - 1292, 383, 1895, - 384, 1295, 1296, - 1289, 384, 1916, - 1297, 384, 1898, - 1295, 384, 1896, - 385, 1293, 1298, - 1299, 385, 1925, - 385, 1299, 1300, - 1293, 385, 1917, - 386, 1301, 1302, - 1303, 386, 1926, - 386, 1303, 1296, - 1301, 386, 1918, - 387, 1287, 1304, - 1305, 387, 1927, - 387, 1305, 1298, - 1287, 387, 1915, - 388, 1303, 1306, - 1307, 388, 1928, - 388, 1307, 1290, - 1303, 388, 1916, - 1308, 389, 1911, - 389, 1308, 1309, - 1304, 389, 1927, - 389, 1304, 1281, - 1310, 390, 1928, - 390, 1310, 1311, - 1284, 390, 1912, - 390, 1284, 1307, - 1312, 391, 1909, - 391, 1312, 1313, - 1308, 391, 1929, - 391, 1308, 1275, - 1314, 392, 1930, - 392, 1314, 1315, - 1278, 392, 1910, - 392, 1278, 1311, - 1316, 393, 1907, - 393, 1316, 1317, - 1312, 393, 1931, - 393, 1312, 1269, - 1318, 394, 1932, - 394, 1318, 1319, - 1272, 394, 1908, - 394, 1272, 1315, - 395, 1316, 1263, - 1320, 395, 1919, - 395, 1320, 1321, - 1316, 395, 1933, - 396, 1322, 1323, - 1264, 396, 1920, - 396, 1264, 1319, - 1322, 396, 1934, - 1234, 397, 1823, - 1325, 397, 1825, - 1326, 397, 1949, - 397, 1326, 1324, - 1328, 398, 1950, - 1239, 398, 1826, - 1329, 398, 1824, - 398, 1329, 1327, - 1330, 399, 1825, - 399, 1330, 1294, - 1331, 399, 1917, - 399, 1331, 1325, - 1295, 400, 1918, - 400, 1295, 1333, - 1328, 400, 1826, - 400, 1328, 1332, - 401, 1218, 1140, - 1324, 401, 1823, - 401, 1324, 1334, - 1218, 401, 1817, - 402, 1335, 1329, - 1141, 402, 1824, - 402, 1141, 1221, - 1335, 402, 1818, - 403, 1336, 1337, - 1338, 403, 1935, - 403, 1338, 1262, - 1336, 403, 1893, - 404, 1265, 1339, - 1340, 404, 1936, - 404, 1340, 1341, - 1265, 404, 1894, - 405, 1331, 1300, - 1342, 405, 1923, - 1343, 405, 1945, - 1331, 405, 1949, - 1345, 406, 1946, - 1301, 406, 1924, - 406, 1301, 1332, - 1344, 406, 1950, - 1347, 407, 1943, - 407, 1347, 1348, - 1343, 407, 1949, - 407, 1343, 1346, - 1349, 408, 1950, - 408, 1349, 1350, - 1351, 408, 1944, - 408, 1351, 1344, - 409, 1352, 1353, - 1347, 409, 1951, - 409, 1347, 1354, - 409, 1354, 1352, - 410, 1355, 1350, - 1356, 410, 1952, - 410, 1356, 1357, - 410, 1357, 1355, - 1359, 411, 1937, - 1360, 411, 1953, - 1353, 411, 1951, - 411, 1353, 1358, - 1361, 412, 1952, - 1362, 412, 1954, - 1363, 412, 1938, - 412, 1363, 1356, - 1365, 413, 1935, - 413, 1365, 1359, - 1366, 413, 1937, - 413, 1366, 1364, - 1362, 414, 1938, - 414, 1362, 1368, - 1369, 414, 1936, - 414, 1369, 1367, - 415, 1320, 1338, - 415, 1338, 1364, - 1370, 415, 1955, - 1320, 415, 1921, - 1369, 416, 1956, - 416, 1369, 1339, - 416, 1339, 1323, - 1371, 416, 1922, - 417, 1222, 1372, - 1365, 417, 1953, - 417, 1365, 1337, - 1222, 417, 1887, - 418, 1340, 1368, - 1373, 418, 1954, - 418, 1373, 1225, - 1340, 418, 1888, - 1334, 419, 1817, - 419, 1334, 1374, - 1360, 419, 1951, - 419, 1360, 1372, - 1375, 420, 1952, - 420, 1375, 1335, - 1373, 420, 1818, - 420, 1373, 1361, - 421, 1374, 1326, - 421, 1326, 1348, - 1374, 421, 1951, - 1349, 422, 1952, - 422, 1349, 1327, - 422, 1327, 1375, - 423, 1376, 1370, - 1377, 423, 1955, - 423, 1377, 1378, - 1376, 423, 1981, - 424, 1379, 1380, - 1371, 424, 1956, - 424, 1371, 1381, - 1379, 424, 1982, - 1366, 425, 1955, - 425, 1366, 1382, - 1383, 425, 1967, - 425, 1383, 1377, - 1385, 426, 1968, - 426, 1385, 1367, - 1380, 426, 1956, - 426, 1380, 1384, - 427, 1382, 1358, - 1386, 427, 1939, - 427, 1386, 1387, - 1382, 427, 1967, - 428, 1388, 1389, - 1363, 428, 1940, - 428, 1363, 1385, - 1388, 428, 1968, - 1352, 429, 1939, - 429, 1352, 1390, - 1391, 429, 1963, - 429, 1391, 1386, - 1393, 430, 1964, - 430, 1393, 1357, - 1389, 430, 1940, - 430, 1389, 1392, - 1354, 431, 1941, - 431, 1354, 1394, - 431, 1394, 1395, - 431, 1395, 1390, - 432, 1396, 1397, - 432, 1397, 1355, - 1393, 432, 1942, - 432, 1393, 1396, - 433, 1394, 1346, - 1398, 433, 1945, - 433, 1398, 1399, - 1394, 433, 1961, - 434, 1400, 1401, - 1351, 434, 1946, - 434, 1351, 1397, - 1400, 434, 1962, - 435, 1398, 1342, - 435, 1342, 1402, - 1403, 435, 1979, - 1398, 435, 1959, - 1405, 436, 1980, - 436, 1405, 1345, - 436, 1345, 1401, - 1404, 436, 1960, - 437, 1406, 1321, - 1376, 437, 1921, - 437, 1376, 1407, - 1406, 437, 1969, - 438, 1408, 1381, - 1322, 438, 1922, - 438, 1322, 1409, - 1408, 438, 1970, - 439, 1410, 1317, - 1406, 439, 1933, - 439, 1406, 1411, - 1410, 439, 1971, - 440, 1412, 1409, - 1318, 440, 1934, - 440, 1318, 1413, - 1412, 440, 1972, - 441, 1414, 1313, - 1410, 441, 1931, - 441, 1410, 1415, - 1414, 441, 1973, - 442, 1416, 1413, - 1314, 442, 1932, - 442, 1314, 1417, - 1416, 442, 1974, - 1309, 443, 1927, - 1414, 443, 1929, - 443, 1414, 1419, - 1418, 443, 1975, - 444, 1420, 1417, - 1310, 444, 1930, - 1421, 444, 1928, - 1420, 444, 1976, - 1305, 445, 1925, - 445, 1305, 1418, - 1423, 445, 1975, - 445, 1423, 1422, - 1421, 446, 1976, - 446, 1421, 1306, - 1425, 446, 1926, - 446, 1425, 1424, - 1299, 447, 1923, - 447, 1299, 1422, - 1426, 447, 1977, - 447, 1426, 1402, - 1425, 448, 1978, - 448, 1425, 1302, - 1405, 448, 1924, - 448, 1405, 1427, - 1395, 449, 1963, - 1429, 449, 1961, - 449, 1429, 1430, - 449, 1430, 1428, - 450, 1431, 1432, - 1396, 450, 1962, - 1433, 450, 1964, - 450, 1433, 1431, - 1430, 451, 1983, - 1435, 451, 1985, - 451, 1435, 1436, - 451, 1436, 1434, - 452, 1437, 1438, - 1431, 452, 1986, - 1439, 452, 1984, - 452, 1439, 1437, - 453, 1440, 1436, - 1441, 453, 1987, - 1442, 453, 1993, - 453, 1442, 1440, - 1444, 454, 1994, - 1437, 454, 1988, - 454, 1437, 1445, - 454, 1445, 1443, - 1442, 455, 1991, - 455, 1442, 1447, - 1448, 455, 1995, - 455, 1448, 1446, - 1450, 456, 1996, - 456, 1450, 1443, - 1451, 456, 1992, - 456, 1451, 1449, - 457, 1452, 1407, - 1453, 457, 1981, - 457, 1453, 1446, - 1452, 457, 1997, - 458, 1451, 1454, - 1408, 458, 1982, - 458, 1408, 1455, - 1451, 458, 1998, - 1456, 459, 1957, - 459, 1456, 1440, - 1453, 459, 1991, - 459, 1453, 1378, - 1445, 460, 1992, - 460, 1445, 1457, - 1379, 460, 1958, - 460, 1379, 1454, - 461, 1456, 1383, - 461, 1383, 1458, - 461, 1458, 1434, - 1456, 461, 1989, - 462, 1439, 1459, - 462, 1459, 1384, - 462, 1384, 1457, - 1439, 462, 1990, - 463, 1391, 1428, - 1458, 463, 1983, - 463, 1458, 1387, - 1391, 463, 1965, - 464, 1388, 1459, - 1433, 464, 1984, - 464, 1433, 1392, - 1388, 464, 1966, - 1403, 465, 1959, - 465, 1403, 1460, - 1429, 465, 1985, - 465, 1429, 1399, - 1461, 466, 1986, - 466, 1461, 1404, - 1400, 466, 1960, - 466, 1400, 1432, - 467, 1426, 1462, - 1435, 467, 1987, - 467, 1435, 1460, - 1426, 467, 1979, - 468, 1461, 1438, - 1463, 468, 1988, - 468, 1463, 1427, - 1461, 468, 1980, - 1464, 469, 1975, - 469, 1464, 1441, - 1462, 469, 1987, - 469, 1462, 1423, - 1444, 470, 1988, - 470, 1444, 1465, - 1424, 470, 1976, - 470, 1424, 1463, - 1466, 471, 1973, - 471, 1466, 1447, - 1464, 471, 1993, - 471, 1464, 1419, - 1450, 472, 1994, - 472, 1450, 1467, - 1420, 472, 1974, - 472, 1420, 1465, - 473, 1415, 1468, - 1448, 473, 1997, - 473, 1448, 1466, - 1415, 473, 1973, - 474, 1467, 1449, - 1469, 474, 1998, - 474, 1469, 1416, - 1467, 474, 1974, - 475, 1411, 1452, - 475, 1452, 1468, - 1411, 475, 1971, - 1469, 476, 1972, - 476, 1469, 1455, - 476, 1455, 1412, - 477, 1470, 1292, - 1471, 477, 1895, - 477, 1471, 1472, - 1470, 477, 2007, - 478, 1473, 1474, - 1297, 478, 1896, - 478, 1297, 1475, - 1473, 478, 2008, - 479, 1476, 1286, - 1470, 479, 1897, - 479, 1470, 1477, - 1476, 479, 2005, - 480, 1478, 1475, - 1291, 480, 1898, - 480, 1291, 1479, - 1478, 480, 2006, - 1280, 481, 1901, - 1476, 481, 1899, - 481, 1476, 1481, - 481, 1481, 1480, - 482, 1482, 1479, - 1285, 482, 1900, - 1483, 482, 1902, - 482, 1483, 1482, - 1274, 483, 1903, - 483, 1274, 1480, - 1485, 483, 2003, - 483, 1485, 1484, - 1483, 484, 2004, - 484, 1483, 1279, - 1487, 484, 1904, - 484, 1487, 1486, - 1268, 485, 1905, - 485, 1268, 1484, - 1489, 485, 2001, - 485, 1489, 1488, - 1487, 486, 2002, - 486, 1487, 1273, - 1491, 486, 1906, - 486, 1491, 1490, - 1261, 487, 1893, - 487, 1261, 1488, - 1493, 487, 1999, - 1492, 487, 2011, - 1491, 488, 2000, - 488, 1491, 1266, - 1495, 488, 1894, - 1494, 488, 2012, - 1496, 489, 1999, - 489, 1496, 1472, - 1497, 489, 2009, - 489, 1497, 1493, - 1473, 490, 2010, - 490, 1473, 1499, - 1494, 490, 2000, - 490, 1494, 1498, - 491, 1496, 1489, - 1500, 491, 2001, - 491, 1500, 1477, - 1496, 491, 2007, - 492, 1478, 1501, - 1490, 492, 2002, - 492, 1490, 1499, - 1478, 492, 2008, - 1485, 493, 2001, - 493, 1485, 1481, - 1500, 493, 2005, - 1482, 494, 2006, - 494, 1482, 1486, - 1501, 494, 2002, - 1226, 495, 1819, - 1336, 495, 1887, - 1492, 495, 1893, - 495, 1492, 1502, - 1341, 496, 1894, - 1227, 496, 1888, - 1503, 496, 1820, - 496, 1503, 1495, - 497, 1246, 1502, - 1497, 497, 2011, - 497, 1497, 1504, - 497, 1504, 1246, - 498, 1505, 1498, - 1503, 498, 2012, - 498, 1503, 1251, - 498, 1251, 1505, - 499, 1330, 1254, - 1504, 499, 1827, - 499, 1504, 1471, - 499, 1471, 1330, - 500, 1474, 1505, - 1257, 500, 1828, - 500, 1257, 1333, - 500, 1333, 1474 -}; diff --git a/src/examples/triangulated_faceset.cpp b/src/examples/triangulated_faceset.cpp deleted file mode 100644 index 8384b8d0c7..0000000000 --- a/src/examples/triangulated_faceset.cpp +++ /dev/null @@ -1,96 +0,0 @@ -/******************************************************************************** - * * - * This file is part of IfcOpenShell. * - * * - * IfcOpenShell is free software: you can redistribute it and/or modify * - * it under the terms of the Lesser GNU General Public License as published by * - * the Free Software Foundation, either version 3.0 of the License, or * - * (at your option) any later version. * - * * - * IfcOpenShell 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 * - * Lesser GNU General Public License for more details. * - * * - * You should have received a copy of the Lesser GNU General Public License * - * along with this program. If not, see . * - * * - ********************************************************************************/ - -/******************************************************************************** - * * - * Example that generates an IfcTriangulatedFaceSet * - * * - ********************************************************************************/ - -#include -#include -#include - -#include "ifcparse/macros.h" - -#ifndef IfcSchema -#define IfcSchema Ifc4 -#endif - -#include INCLUDE_SCHEMA(ifcparse/schemas, IfcSchema) -#include INCLUDE_SCHEMA_DEFINITIONS(ifcparse/schemas, IfcSchema) - -#include "ifcparse/hierarchy_helper.h" - -#include "suzanne_geometry.h" - -#include - -typedef std::string S; -typedef ifcopenshell::global_id guid; - -template -std::vector< std::vector > create_vector_from_array(const T* arr, unsigned size) { - std::vector< std::vector > result; - result.reserve(size); - - for (unsigned i = 0; i < size; ) { - std::vector ts; ts.reserve(3); - for (unsigned j = 0; j < 3; ++i, ++j) { - ts.push_back(arr[i]); - } - result.push_back(ts); - } - - return result; -} - -int main(int argc, char** argv) { - hierarchy_helper file; - - Ifc4::IfcBuildingElementProxy product = file.create().initialize( - guid(), std::nullopt, S("Blender's Suzanne"), std::nullopt, std::nullopt, std::nullopt, std::nullopt, std::nullopt, std::nullopt); - file.addBuildingProduct(product); - product.setOwnerHistory(file.getSingle()); - - product.setObjectPlacement(file.addLocalPlacement()); - - std::vector< std::vector< double > > vertices_vector = create_vector_from_array(vertices, sizeof(vertices) / sizeof(vertices[0])); - std::vector< std::vector< int > > indices_vector = create_vector_from_array(indices, sizeof(indices) / sizeof(indices[0])); - - IfcSchema::IfcCartesianPointList3D* coordinates = new IfcSchema::IfcCartesianPointList3D(vertices_vector -#ifdef SCHEMA_IfcCartesianPointList3D_HAS_TagList - , boost::none -#endif - ); - IfcSchema::IfcTriangulatedFaceSet* faceset = new IfcSchema::IfcTriangulatedFaceSet(coordinates, null, null, indices_vector, null); - - Ifc4::IfcShapeRepresentation rep = file.create().initialize( - file.getRepresentationContext("Model"), "Body", "SurfaceModel", {faceset}); - - Ifc4::IfcProductDefinitionShape shape = file.create().initialize(std::nullopt, std::nullopt, {rep}); - file.add_entity(shape); - - product.setRepresentation(shape); - - const std::string filename = "tesselated_faceset.ifc"; - file.header().file_name().setname(filename); - std::ofstream f(filename.c_str()); - f << file; -}