[jboss-svn-commits] JBL Code SVN: r13417 - in labs/jbossrules/trunk: drools-examples and 38 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jul 12 15:19:16 EDT 2007
Author: fmeyer
Date: 2007-07-12 15:19:16 -0400 (Thu, 12 Jul 2007)
New Revision: 13417
Added:
labs/jbossrules/trunk/drools-examples/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/.classpath
labs/jbossrules/trunk/drools-examples/drools-examples-drl/.project
labs/jbossrules/trunk/drools-examples/drools-examples-drl/build.xml
labs/jbossrules/trunk/drools-examples/drools-examples-drl/lib/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/lib/foxtrot-2.0.jar
labs/jbossrules/trunk/drools-examples/drools-examples-drl/lib/jgoodies-forms-1.0.4.jar
labs/jbossrules/trunk/drools-examples/drools-examples-drl/log/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/pom.xml
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Chosen.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Context.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Count.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Guest.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Hobby.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/LastSeat.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/MannersBenchmark.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Path.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Seating.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Sex.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/Account.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/Address.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/GroupTransaction.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/Security.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/SubTransaction.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/Transaction.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/Edge.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/Junction.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/Line.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/Stage.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/WaltzBenchmark.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/WaltzUtil.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/Edge.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/EdgeLabel.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/Illegal.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/Junction.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/Label.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/Line.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/Stage.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/WaltzDbBenchmark.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/FibonacciExample.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/GolfingExample.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HelloWorldExample.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HonestPoliticianExample.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/PricingRuleDTExample.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/State.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/StateExampleUsingAgendGroup.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/StateExampleUsingSalience.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/StateExampleWithDynamicRules.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/TroubleTicketExample.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/TroubleTicketExampleWithDSL.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/Cell.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/CellGrid.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/CellState.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/ConwayApplicationProperties.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/ConwayRuleBaseFactory.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/Neighbor.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/Phase.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/Border.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/ConwayPattern.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/Hi.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/Pentadecathalon.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/Pulsar.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/SimpleGlider.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/ui/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/ui/CellGridCanvas.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/ui/ConwayGUI.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/decisiontable/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/decisiontable/Driver.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/decisiontable/Policy.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/Field.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/FieldGenerator.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/PossibleValue.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/SudokuExample.java
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/manners128.dat
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/manners16.dat
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/manners32.dat
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/manners5.dat
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/manners64.dat
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/manners8.dat
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltz/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltz/waltz12.dat
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltz/waltz50.dat
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltzdb/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltzdb/waltzdb12.dat
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltzdb/waltzdb16.dat
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltzdb/waltzdb4.dat
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltzdb/waltzdb8.dat
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/examples/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/examples/conway/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/examples/conway/conway.properties
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/examples/conway/liveCellImage.gif
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/benchmark/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/benchmark/manners/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/benchmark/manners/manners.drl
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/benchmark/waltz/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/benchmark/waltz/waltz.drl
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/benchmark/waltzdb/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/benchmark/waltzdb/waltzdb.drl
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/ExamplePolicyPricing.xls
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/Fibonacci.drl
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/HelloWorld.drl
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/HonestPolitician.drl
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/LogicalAssertionsNotPingPong.drl
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/StateExampleDynamicRule.drl
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/StateExampleUsingAgendGroup.drl
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/StateExampleUsingSalience.drl
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/TroubleTicket.drl
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/TroubleTicketWithDSL.drl
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/conway/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/conway/conway.drl
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/conway/conway.dsl
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/golf.drl
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/sudoku/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/sudoku/sudoku.drl
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/ticketing.dsl
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/test/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/test/java/
labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/test/resources/
Log:
Moving drools-examples
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/.classpath (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/.classpath 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,24 @@
+<classpath>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
+ <classpathentry kind="src" path="src/main/rules" excluding="**/*.java"/>
+ <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
+ <classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
+ <classpathentry kind="output" path="target/classes"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.2.3.v_686_R32x/core-3.2.3.v_686_R32x.jar"/>
+ <classpathentry kind="var" path="M2_REPO/foxtrot/foxtrot/2.0/foxtrot-2.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jexcelapi/jxl/2.4.2/jxl-2.4.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.7/janino-2.5.7.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/drools/drools-compiler/4.0.0.SNAPSHOT/drools-compiler-4.0.0.SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel14/1.2pre2/mvel14-1.2pre2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.4.0/xercesImpl-2.4.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.0/antlr-runtime-3.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/drools/drools-core/4.0.0.SNAPSHOT/drools-core-4.0.0.SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/jgoodies/forms/1.0.7/forms-1.0.7.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xstream/xstream/1.1.3/xstream-1.1.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/drools/drools-decisiontables/4.0.0.SNAPSHOT/drools-decisiontables-4.0.0.SNAPSHOT.jar"/>
+</classpath>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/.project
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/.project (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/.project 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,16 @@
+<projectDescription>
+ <name>drools-examples</name>
+ <comment>A rule production system</comment>
+ <projects/>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ </buildCommand>
+ <buildCommand>
+ <name>org.drools.eclipse.droolsbuilder</name>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/build.xml
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/build.xml (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/build.xml 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,93 @@
+<project name="Drools" basedir="." xmlns:artifact="urn:maven-artifact-ant" default="help">
+ <property name="version" value="3.0.3"/>
+
+ <target name="clean">
+ <delete>
+ <fileset dir="target" includes="**/**"/>
+ </delete>
+ </target>
+
+ <target name="compile">
+ <mkdir dir="target"/>
+ <mkdir dir="target/classes"/>
+
+ <copy todir="target/classes">
+ <fileset dir="src/main/resources"/>
+ <fileset dir="src/main/rules"/>
+ </copy>
+
+ <javac srcdir="src/main/java"
+ destdir="target/classes"
+ source="1.4">
+ <classpath>
+ <fileset dir="lib">
+ <include name="*.jar"/>
+ </fileset>
+ </classpath>
+ </javac>
+ </target>
+
+ <target name="run-waltz12">
+ <java classname="org.drools.benchmark.waltz.WaltzBenchmark"
+ fork="true">
+ <classpath>
+ <pathelement path="target/classes" />
+ <fileset dir="lib">
+ <include name="*.jar"/>
+ </fileset>
+ </classpath>
+ <arg value="waltz12.dat"/>
+ <jvmarg value="-Xmx1024M" />
+ <jvmarg value="-Xms1024M" />
+ </java>
+ </target>
+
+ <target name="run-waltz50">
+ <java classname="org.drools.benchmark.waltz.WaltzBenchmark"
+ fork="true">
+ <classpath>
+ <pathelement path="target/classes" />
+ <fileset dir="lib">
+ <include name="*.jar"/>
+ </fileset>
+ </classpath>
+ <arg value="waltz50.dat"/>
+ <jvmarg value="-Xmx1024M" />
+ <jvmarg value="-Xms1024M" />
+ </java>
+ </target>
+
+
+ <target name="run-manners64">
+ <java classname="org.drools.benchmark.manners.MannersBenchmark"
+ fork="true">
+ <classpath>
+ <pathelement path="target/classes" />
+ <fileset dir="lib">
+ <include name="*.jar"/>
+ </fileset>
+ </classpath>
+ <arg value="manners64.dat"/>
+ <jvmarg value="-Xmx1024M" />
+ <jvmarg value="-Xms1024M" />
+ </java>
+ </target>
+
+ <target name="run-manners128">
+ <java classname="org.drools.benchmark.manners.MannersBenchmark"
+ fork="true">
+ <classpath>
+ <pathelement path="target/classes" />
+ <fileset dir="lib">
+ <include name="*.jar"/>
+ </fileset>
+ </classpath>
+ <arg value="manners128.dat"/>
+ <jvmarg value="-Xmx1024M" />
+ <jvmarg value="-Xms1024M" />
+ </java>
+ </target>
+
+
+
+</project>
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/lib/foxtrot-2.0.jar
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/drools-examples/drools-examples-drl/lib/foxtrot-2.0.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/lib/jgoodies-forms-1.0.4.jar
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/drools-examples/drools-examples-drl/lib/jgoodies-forms-1.0.4.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/pom.xml (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/pom.xml 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>drools</artifactId>
+ <groupId>org.drools</groupId>
+ <version>4.0.0.SNAPSHOT</version>
+ </parent>
+
+ <!--
+ TODO make this packing pom and make 2 submodules: example-waltz and example-manners
+ (and possibly example-common too)
+ -->
+ <artifactId>drools-examples</artifactId>
+ <packaging>jar</packaging>
+ <name>Drools :: examples</name>
+
+ <repositories>
+ <repository>
+ <id>basedir</id>
+ <url>file://${basedir}/../m2_repo</url>
+ </repository>
+ </repositories>
+
+ <dependencies>
+ <!-- Internal dependencies -->
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-compiler</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-decisiontables</artifactId>
+ </dependency>
+
+ <!-- External dependencies -->
+ <dependency>
+ <groupId>foxtrot</groupId>
+ <artifactId>foxtrot</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.jgoodies</groupId>
+ <artifactId>forms</artifactId>
+ </dependency>
+ </dependencies>
+
+ <properties>
+ <project.mainClass>org.drools.benchmark.waltz.WaltzBenchmark</project.mainClass>
+ </properties>
+ <build>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ </resource>
+ <resource>
+ <directory>src/main/rules</directory>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-eclipse-plugin</artifactId>
+ <configuration>
+ <additionalBuildcommands>
+ <buildcommand>org.drools.eclipse.droolsbuilder</buildcommand>
+ </additionalBuildcommands>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <archive>
+ <manifest>
+ <mainClass>${project.mainClass}</mainClass>
+ <addClasspath>true</addClasspath>
+ </manifest>
+ </archive>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <version>1.0.2</version>
+ <configuration>
+ <executable>java</executable>
+ <!-- only waltz12 is configured at the moment -->
+ <!-- TODO waltz50, manners64 and manners128 -->
+ <arguments>
+ <argument>-Xms1024M</argument>
+ <argument>-Xmx1024M</argument>
+ <argument>-cp</argument>
+ <classpath/>
+ <argument>${project.mainClass}</argument>
+ <argument>waltz12.dat</argument>
+ </arguments>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Chosen.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Chosen.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Chosen.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,55 @@
+package org.drools.benchmark.manners;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.Serializable;
+
+public class Chosen implements Serializable {
+
+ private int id;
+
+ private String guestName;
+
+ private Hobby hobby;
+
+ public Chosen() {
+
+ }
+
+ public Chosen(int id, String guestName, Hobby hobby) {
+ this.id = id;
+ this.guestName = guestName;
+ this.hobby = hobby;
+ }
+
+ public int getId() {
+ return this.id;
+ }
+
+ public String getGuestName() {
+ return this.guestName;
+ }
+
+ public Hobby getHobby() {
+ return this.hobby;
+ }
+
+ public String toString() {
+ return "{Chosen id=" + this.id + ", name=" + this.guestName
+ + ", hobbies=" + this.hobby + "}";
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Context.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Context.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Context.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,74 @@
+package org.drools.benchmark.manners;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.Serializable;
+
+public class Context implements Serializable {
+
+ public static final int START_UP = 0;
+
+ public static final int ASSIGN_SEATS = 1;
+
+ public static final int MAKE_PATH = 2;
+
+ public static final int CHECK_DONE = 3;
+
+ public static final int PRINT_RESULTS = 4;
+
+ public static final String[] stateStrings = { "START_UP", "ASSIGN_SEATS",
+ "MAKE_PATH", "CHECK_DONE", "PRINT_RESULTS" };
+
+ private int state;
+
+ public Context() {
+
+ }
+
+ public Context(String state) {
+ if ("start".equals(state)) {
+ this.state = Context.START_UP;
+ } else {
+ throw new RuntimeException("Context '" + state
+ + "' does not exist for Context Enum");
+ }
+ }
+
+ public Context(int state) {
+ this.state = state;
+ }
+
+ public void setState(int state) {
+ this.state = state;
+ }
+
+ public boolean isState(int state) {
+ return this.state == state;
+ }
+
+ public int getState() {
+ return this.state;
+ }
+
+ public String getStringValue() {
+ return stateStrings[this.state];
+ }
+
+ public String toString() {
+ return "[Context state=" + getStringValue() + "]";
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Count.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Count.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Count.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,59 @@
+package org.drools.benchmark.manners;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+public class Count {
+ private int value;
+
+ public Count() {
+
+ }
+
+ public Count(int value) {
+ super();
+ this.value = value;
+ }
+
+ public int getValue() {
+ return this.value;
+ }
+
+ public void setValue(int value) {
+ this.value = value;
+ }
+
+ public String toString() {
+ return "[Count value=" + this.value + "]";
+ }
+
+ public boolean equals(Object object) {
+ if (object == this) {
+ return true;
+ }
+
+ if ((object == null) || !(object instanceof Count)) {
+ return false;
+ }
+
+ return this.value == ((Count) object).value;
+ }
+
+ public int hashCode() {
+ return this.value;
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Guest.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Guest.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Guest.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,54 @@
+package org.drools.benchmark.manners;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.Serializable;
+
+public class Guest implements Serializable {
+ private String name;
+
+ private Sex sex;
+
+ private Hobby hobby;
+
+ public Guest() {
+
+ }
+
+ public Guest(String name, Sex sex, Hobby hobby) {
+ this.name = name;
+ this.sex = sex;
+ this.hobby = hobby;
+ }
+
+ public String getName() {
+ return this.name;
+ }
+
+ public Hobby getHobby() {
+ return this.hobby;
+ }
+
+ public Sex getSex() {
+ return this.sex;
+ }
+
+ public String toString() {
+ return "[Guest name=" + this.name + ", sex=" + this.sex + ", hobbies="
+ + this.hobby + "]";
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Hobby.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Hobby.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Hobby.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,89 @@
+package org.drools.benchmark.manners;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+public class Hobby {
+ public static final String stringH1 = "h1";
+
+ public static final String stringH2 = "h2";
+
+ public static final String stringH3 = "h3";
+
+ public static final String stringH4 = "h4";
+
+ public static final String stringH5 = "h5";
+
+ public static final String[] hobbyStrings = new String[] { stringH1,
+ stringH2, stringH3, stringH4, stringH5 };
+
+ public static final Hobby H1 = new Hobby(1);
+
+ public static final Hobby H2 = new Hobby(2);
+
+ public static final Hobby H3 = new Hobby(3);
+
+ public static final Hobby H4 = new Hobby(4);
+
+ public static final Hobby H5 = new Hobby(5);
+
+ private String hobbyStr;
+
+ private int hobbyIndex;
+
+ public Hobby() {
+
+ }
+
+ private Hobby(int hobby) {
+ this.hobbyIndex = hobby - 1;
+ this.hobbyStr = hobbyStrings[this.hobbyIndex];
+ }
+
+ public String getHobby() {
+ return this.hobbyStr;
+ }
+
+ public static Hobby resolve(String hobby) {
+ if (stringH1.equals(hobby)) {
+ return Hobby.H1;
+ } else if (stringH2.equals(hobby)) {
+ return Hobby.H2;
+ } else if (stringH3.equals(hobby)) {
+ return Hobby.H3;
+ } else if (stringH4.equals(hobby)) {
+ return Hobby.H4;
+ } else if (stringH5.equals(hobby)) {
+ return Hobby.H5;
+ } else {
+ throw new RuntimeException("Hobby '" + hobby
+ + "' does not exist for Hobby Enum");
+ }
+ }
+
+ public String toString() {
+ return getHobby();
+ }
+
+ public boolean equals(Object object) {
+ return (this == object);
+ }
+
+ public int hashCode() {
+ return this.hobbyIndex;
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/LastSeat.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/LastSeat.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/LastSeat.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,39 @@
+package org.drools.benchmark.manners;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.Serializable;
+
+public class LastSeat implements Serializable {
+ private int seat;
+
+ public LastSeat() {
+
+ }
+
+ public LastSeat(int seat) {
+ this.seat = seat;
+ }
+
+ public int getSeat() {
+ return this.seat;
+ }
+
+ public String toString() {
+ return "[LastSeat seat=" + this.seat + "]";
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/MannersBenchmark.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/MannersBenchmark.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/MannersBenchmark.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,181 @@
+package org.drools.benchmark.manners;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Random;
+import java.util.StringTokenizer;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.compiler.PackageBuilder;
+import org.drools.rule.Package;
+
+public class MannersBenchmark {
+ /** Number of guests at the dinner (default: 16). */
+ private int numGuests = 16;
+
+ /** Number of seats at the table (default: 16). */
+ private int numSeats = 16;
+
+ /** Minimum number of hobbies each guest should have (default: 2). */
+ private int minHobbies = 2;
+
+ /** Maximun number of hobbies each guest should have (default: 3). */
+ private int maxHobbies = 3;
+
+ public static void main(final String[] args) throws Exception {
+ PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl(new InputStreamReader(MannersBenchmark.class
+ .getResourceAsStream("manners.drl")));
+ Package pkg = builder.getPackage();
+
+ // add the package to a rulebase
+ final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage(pkg);
+
+ StatefulSession session = ruleBase.newStatefulSession();
+
+ String filename;
+ if (args.length != 0) {
+ String arg = args[0];
+ filename = arg;
+ } else {
+ filename = "manners64.dat";
+ }
+
+ InputStream is = MannersBenchmark.class.getResourceAsStream(filename);
+ List list = getInputObjects(is);
+ for (Iterator it = list.iterator(); it.hasNext();) {
+ Object object = it.next();
+ session.insert(object);
+ }
+
+ session.insert(new Count(1));
+
+ long start = System.currentTimeMillis();
+ session.fireAllRules();
+ System.err.println(System.currentTimeMillis() - start);
+ session.dispose();
+ }
+
+ /**
+ * Convert the facts from the <code>InputStream</code> to a list of
+ * objects.
+ */
+ protected static List getInputObjects(InputStream inputStream)
+ throws IOException {
+ List list = new ArrayList();
+
+ BufferedReader br = new BufferedReader(new InputStreamReader(
+ inputStream));
+
+ String line;
+ while ((line = br.readLine()) != null) {
+ if (line.trim().length() == 0 || line.trim().startsWith(";")) {
+ continue;
+ }
+ StringTokenizer st = new StringTokenizer(line, "() ");
+ String type = st.nextToken();
+
+ if ("guest".equals(type)) {
+ if (!"name".equals(st.nextToken())) {
+ throw new IOException("expected 'name' in: " + line);
+ }
+ String name = st.nextToken();
+ if (!"sex".equals(st.nextToken())) {
+ throw new IOException("expected 'sex' in: " + line);
+ }
+ String sex = st.nextToken();
+ if (!"hobby".equals(st.nextToken())) {
+ throw new IOException("expected 'hobby' in: " + line);
+ }
+ String hobby = st.nextToken();
+
+ Guest guest = new Guest(name, Sex.resolve(sex), Hobby
+ .resolve(hobby));
+
+ list.add(guest);
+ }
+
+ if ("last_seat".equals(type)) {
+ if (!"seat".equals(st.nextToken())) {
+ throw new IOException("expected 'seat' in: " + line);
+ }
+ list.add(new LastSeat(new Integer(st.nextToken()).intValue()));
+ }
+
+ if ("context".equals(type)) {
+ if (!"state".equals(st.nextToken())) {
+ throw new IOException("expected 'state' in: " + line);
+ }
+ list.add(new Context(st.nextToken()));
+ }
+ }
+ inputStream.close();
+
+ return list;
+ }
+
+ private InputStream generateData() {
+ final String LINE_SEPARATOR = System.getProperty("line.separator");
+
+ StringWriter writer = new StringWriter();
+
+ int maxMale = numGuests / 2;
+ int maxFemale = numGuests / 2;
+
+ int maleCount = 0;
+ int femaleCount = 0;
+
+ // init hobbies
+ List hobbyList = new ArrayList();
+ for (int i = 1; i <= maxHobbies; i++) {
+ hobbyList.add("h" + i);
+ }
+
+ Random rnd = new Random();
+ for (int i = 1; i <= numGuests; i++) {
+ char sex = rnd.nextBoolean() ? 'm' : 'f';
+ if (sex == 'm' && maleCount == maxMale) {
+ sex = 'f';
+ }
+ if (sex == 'f' && femaleCount == maxFemale) {
+ sex = 'm';
+ }
+ if (sex == 'm') {
+ maleCount++;
+ }
+ if (sex == 'f') {
+ femaleCount++;
+ }
+
+ List guestHobbies = new ArrayList(hobbyList);
+
+ int numHobbies = minHobbies
+ + rnd.nextInt(maxHobbies - minHobbies + 1);
+ for (int j = 0; j < numHobbies; j++) {
+ int hobbyIndex = rnd.nextInt(guestHobbies.size());
+ String hobby = (String) guestHobbies.get(hobbyIndex);
+ writer.write("(guest (name n" + i + ") (sex " + sex
+ + ") (hobby " + hobby + "))" + LINE_SEPARATOR);
+ guestHobbies.remove(hobbyIndex);
+ }
+ }
+ writer.write("(last_seat (seat " + numSeats + "))" + LINE_SEPARATOR);
+
+ writer.write(LINE_SEPARATOR);
+ writer.write("(context (state start))" + LINE_SEPARATOR);
+
+ return new ByteArrayInputStream(writer.getBuffer().toString()
+ .getBytes());
+ }
+
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Path.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Path.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Path.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,53 @@
+package org.drools.benchmark.manners;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+public class Path {
+ private int id;
+
+ private String guestName;
+
+ private int seat;
+
+ public Path() {
+
+ }
+
+ public Path(int id, int seat, String guestName) {
+ this.id = id;
+ this.seat = seat;
+ this.guestName = guestName;
+ }
+
+ public int getSeat() {
+ return this.seat;
+ }
+
+ public String getGuestName() {
+ return this.guestName;
+ }
+
+ public int getId() {
+ return this.id;
+ }
+
+ public String toString() {
+ return "[Path id=" + this.id + ", seat=" + this.seat + ", guest="
+ + this.guestName + "]";
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Seating.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Seating.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Seating.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,86 @@
+package org.drools.benchmark.manners;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.Serializable;
+
+public class Seating implements Serializable {
+ private int id, pid;
+
+ private int leftSeat, rightSeat;
+
+ private String leftGuestName, rightGuestName;
+
+ private boolean pathDone;
+
+ public Seating() {
+
+ }
+
+ public Seating( int id, int pid, boolean pathDone,
+ int leftSeat, String leftGuestName,
+ int rightSeat, String rightGuestName) {
+ super();
+ this.id = id;
+ this.pid = pid;
+ this.pathDone = pathDone;
+ this.leftSeat = leftSeat;
+ this.leftGuestName = leftGuestName;
+ this.rightSeat = rightSeat;
+ this.rightGuestName = rightGuestName;
+ }
+
+ public boolean isPathDone() {
+ return this.pathDone;
+ }
+
+ public void setPathDone(boolean pathDone) {
+ this.pathDone = pathDone;
+ }
+
+ public int getId() {
+ return this.id;
+ }
+
+ public String getLeftGuestName() {
+ return this.leftGuestName;
+ }
+
+ public int getLeftSeat() {
+ return this.leftSeat;
+ }
+
+ public int getPid() {
+ return this.pid;
+ }
+
+ public String getRightGuestName() {
+ return this.rightGuestName;
+ }
+
+ public int getRightSeat() {
+ return this.rightSeat;
+ }
+
+ public String toString() {
+ return "[Seating id=" + this.id + " , pid=" + this.pid + " , pathDone="
+ + this.pathDone + " , leftSeat=" + this.leftSeat
+ + ", leftGuestName=" + this.leftGuestName + ", rightSeat="
+ + this.rightSeat + ", rightGuestName=" + this.rightGuestName
+ + "]";
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Sex.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Sex.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/manners/Sex.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,67 @@
+package org.drools.benchmark.manners;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+public class Sex {
+ public static final Sex M = new Sex(0);
+
+ public static final Sex F = new Sex(1);
+
+ public static final String stringM = "m";
+
+ public static final String stringF = "f";
+
+ public static final String[] sexList = new String[] { stringM, stringF };
+
+ private int sex;
+
+ public Sex() {
+
+ }
+
+ private Sex(int sex) {
+ this.sex = sex;
+ }
+
+ public String getSex() {
+ return sexList[this.sex];
+ }
+
+ public static Sex resolve(String sex) {
+ if (stringM.equals(sex)) {
+ return Sex.M;
+ } else if (stringF.equals(sex)) {
+ return Sex.F;
+ } else {
+ throw new RuntimeException("Sex '" + sex
+ + "' does not exist for Sex Enum");
+ }
+ }
+
+ public String toString() {
+ return getSex();
+ }
+
+ public boolean equals(Object object) {
+ return this == object;
+ }
+
+ public int hashCode() {
+ return this.sex;
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/Account.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/Account.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/Account.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,274 @@
+package org.drools.benchmark.models;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.Serializable;
+import java.util.ArrayList;
+
+/**
+ * @author Peter Lin
+ *
+ * A simple test bean that represents a generic account. It could be
+ * a bank account, shopping card account, or any type of membership
+ * account with a nationwide company.
+ */
+public class Account
+ implements
+ Serializable {
+
+ protected String first = null;
+ protected String middle = null;
+ protected String last = null;
+ /**
+ * mr, mrs, ms, junior, etc
+ */
+ protected String title = null;
+ protected String accountId = null;
+ protected String accountType = null;
+ protected String status = null;
+ protected String username = null;
+ /**
+ * this would represent the region of the office the account
+ * was opened at.
+ */
+ protected String regionCode = null;
+ /**
+ * the code for the office where the account was opened.
+ */
+ protected String officeCode = null;
+ protected String areaCode = null;
+ protected String exchange = null;
+ protected String number = null;
+ protected String ext = null;
+
+ protected ArrayList listeners = new ArrayList();
+
+ /**
+ *
+ */
+ public Account() {
+ super();
+ }
+
+ public void setTitle(String val) {
+ if ( !val.equals( this.title ) ) {
+ String old = this.title;
+ this.title = val;
+ notifyListener( "title",
+ old,
+ this.title );
+ }
+ }
+
+ public String getTitle() {
+ return this.title;
+ }
+
+ public void setFirst(String val) {
+ if ( !val.equals( this.first ) ) {
+ String old = this.first;
+ this.first = val;
+ notifyListener( "first",
+ old,
+ this.first );
+ }
+ }
+
+ public String getFirst() {
+ return this.first;
+ }
+
+ public void setLast(String val) {
+ if ( !val.equals( this.last ) ) {
+ String old = this.last;
+ this.last = val;
+ notifyListener( "last",
+ old,
+ this.last );
+ }
+ }
+
+ public String getLast() {
+ return this.last;
+ }
+
+ public void setMiddle(String val) {
+ if ( !val.equals( this.middle ) ) {
+ String old = this.middle;
+ this.middle = val;
+ notifyListener( "middle",
+ old,
+ this.middle );
+ }
+ }
+
+ public String getMiddle() {
+ return this.middle;
+ }
+
+ public void setOfficeCode(String val) {
+ if ( !val.equals( this.officeCode ) ) {
+ String old = this.officeCode;
+ this.officeCode = val;
+ notifyListener( "officeCode",
+ old,
+ this.officeCode );
+ }
+ }
+
+ public String getOfficeCode() {
+ return this.officeCode;
+ }
+
+ public void setRegionCode(String val) {
+ if ( !val.equals( this.regionCode ) ) {
+ String old = this.regionCode;
+ this.regionCode = val;
+ notifyListener( "regionCode",
+ old,
+ this.regionCode );
+ }
+ }
+
+ public String getRegionCode() {
+ return this.regionCode;
+ }
+
+ public void setStatus(String val) {
+ if ( !val.equals( this.status ) ) {
+ String old = this.status;
+ this.status = val;
+ notifyListener( "status",
+ old,
+ this.status );
+ }
+ }
+
+ public String getStatus() {
+ return this.status;
+ }
+
+ public void setAccountId(String val) {
+ if ( !val.equals( this.accountId ) ) {
+ String old = this.accountId;
+ this.accountId = val;
+ notifyListener( "accountId",
+ old,
+ this.accountId );
+ }
+ }
+
+ public String getAccountId() {
+ return this.accountId;
+ }
+
+ public void setAccountType(String val) {
+ if ( !val.equals( this.accountType ) ) {
+ String old = this.accountType;
+ this.accountType = val;
+ notifyListener( "accountType",
+ old,
+ this.accountType );
+ }
+ }
+
+ public String getAccountType() {
+ return this.accountType;
+ }
+
+ public void setUsername(String val) {
+ if ( !val.equals( this.username ) ) {
+ String old = this.username;
+ this.username = val;
+ notifyListener( "username",
+ old,
+ this.username );
+ }
+ }
+
+ public String getUsername() {
+ return this.username;
+ }
+
+ public String getAreaCode() {
+ return this.areaCode;
+ }
+
+ public void setAreaCode(String val) {
+ if ( !val.equals( this.areaCode ) ) {
+ String old = this.areaCode;
+ this.areaCode = val;
+ notifyListener( "areaCode",
+ old,
+ this.areaCode );
+ }
+ }
+
+ public String getExchange() {
+ return this.exchange;
+ }
+
+ public void setExchange(String val) {
+ if ( !val.equals( this.exchange ) ) {
+ String old = this.exchange;
+ this.exchange = val;
+ notifyListener( "exchange",
+ old,
+ this.exchange );
+ }
+ }
+
+ public String getNumber() {
+ return this.number;
+ }
+
+ public void setNumber(String val) {
+ if ( !val.equals( this.number ) ) {
+ String old = this.number;
+ this.number = val;
+ notifyListener( "number",
+ old,
+ this.number );
+ }
+ }
+
+ public String getExt() {
+ return this.ext;
+ }
+
+ public void setExt(String val) {
+ if ( !val.equals( this.ext ) ) {
+ String old = this.ext;
+ this.ext = val;
+ notifyListener( "ext",
+ old,
+ this.ext );
+ }
+ }
+
+ public void addPropertyChangeListener(PropertyChangeListener listener) {
+ this.listeners.add( listener );
+ }
+
+ public void removePropertyChangeListener(PropertyChangeListener listener) {
+ this.listeners.remove( listener );
+ }
+
+ protected void notifyListener(String field,
+ Object oldValue,
+ Object newValue) {
+ if ( listeners == null || listeners.size() == 0 ) {
+ return;
+ } else {
+ PropertyChangeEvent event = new PropertyChangeEvent( this,
+ field,
+ oldValue,
+ newValue );
+
+ for ( int i = 0; i < listeners.size(); i++ ) {
+ ((java.beans.PropertyChangeListener) listeners.get( i )).propertyChange( event );
+ }
+ }
+
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/Address.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/Address.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/Address.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,202 @@
+package org.drools.benchmark.models;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.Serializable;
+import java.util.ArrayList;
+
+/**
+ * @author Peter Lin
+ *
+ * A simple address class that represents a house a person owns.
+ */
+public class Address
+ implements
+ Serializable {
+
+ protected String title = null;
+ protected String accountId = null;
+ protected String street = null;
+ protected String street2 = null;
+ protected String status = null;
+ protected String city = null;
+ protected String state = null;
+ protected String postalCode = null;
+ protected String houseType = null;
+ protected String country = null;
+
+ protected ArrayList listeners = new ArrayList();
+
+ /**
+ *
+ */
+ public Address() {
+ super();
+ }
+
+ public void setTitle(String val) {
+ if ( !val.equals( this.title ) ) {
+ String old = this.title;
+ this.title = val;
+ notifyListener( "title",
+ old,
+ this.title );
+ }
+ }
+
+ public String getTitle() {
+ return this.title;
+ }
+
+ public void setState(String val) {
+ if ( !val.equals( this.state ) ) {
+ String old = this.state;
+ this.state = val;
+ notifyListener( "officeCode",
+ old,
+ this.state );
+ }
+ }
+
+ public String getState() {
+ return this.state;
+ }
+
+ public void setCity(String val) {
+ if ( !val.equals( this.city ) ) {
+ String old = this.city;
+ this.city = val;
+ notifyListener( "regionCode",
+ old,
+ this.city );
+ }
+ }
+
+ public String getCity() {
+ return this.city;
+ }
+
+ public void setStreet2(String val) {
+ if ( !val.equals( this.street2 ) ) {
+ String old = this.street2;
+ this.street2 = val;
+ notifyListener( "status",
+ old,
+ this.street2 );
+ }
+ }
+
+ public String getStreet2() {
+ return this.street2;
+ }
+
+ public void setAccountId(String val) {
+ if ( !val.equals( this.accountId ) ) {
+ String old = this.accountId;
+ this.accountId = val;
+ notifyListener( "accountId",
+ old,
+ this.accountId );
+ }
+ }
+
+ public String getAccountId() {
+ return this.accountId;
+ }
+
+ public void setStreet(String val) {
+ if ( !val.equals( this.street ) ) {
+ String old = this.street;
+ this.street = val;
+ notifyListener( "accountType",
+ old,
+ this.street );
+ }
+ }
+
+ public String getStreet() {
+ return this.street;
+ }
+
+ public void setStatus(String val) {
+ if ( !val.equals( this.status ) ) {
+ String old = this.status;
+ this.status = val;
+ notifyListener( "username",
+ old,
+ this.status );
+ }
+ }
+
+ public String getStatus() {
+ return this.status;
+ }
+
+ public String getPostalCode() {
+ return this.postalCode;
+ }
+
+ public void setPostalCode(String val) {
+ if ( !val.equals( this.postalCode ) ) {
+ String old = this.postalCode;
+ this.postalCode = val;
+ notifyListener( "areaCode",
+ old,
+ this.postalCode );
+ }
+ }
+
+ public String getHouseType() {
+ return this.houseType;
+ }
+
+ public void setHouseType(String val) {
+ if ( !val.equals( this.houseType ) ) {
+ String old = this.houseType;
+ this.houseType = val;
+ notifyListener( "exchange",
+ old,
+ this.houseType );
+ }
+ }
+
+ public String getCountry() {
+ return this.country;
+ }
+
+ public void setCountry(String val) {
+ if ( !val.equals( this.country ) ) {
+ String old = this.country;
+ this.country = val;
+ notifyListener( "number",
+ old,
+ this.country );
+ }
+ }
+
+ public void addPropertyChangeListener(PropertyChangeListener listener) {
+ this.listeners.add( listener );
+ }
+
+ public void removePropertyChangeListener(PropertyChangeListener listener) {
+ this.listeners.remove( listener );
+ }
+
+ protected void notifyListener(String field,
+ Object oldValue,
+ Object newValue) {
+ if ( listeners == null || listeners.size() == 0 ) {
+ return;
+ } else {
+ PropertyChangeEvent event = new PropertyChangeEvent( this,
+ field,
+ oldValue,
+ newValue );
+
+ for ( int i = 0; i < listeners.size(); i++ ) {
+ ((java.beans.PropertyChangeListener) listeners.get( i )).propertyChange( event );
+ }
+ }
+
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/GroupTransaction.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/GroupTransaction.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/GroupTransaction.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,135 @@
+package org.drools.benchmark.models;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.ArrayList;
+
+/**
+ * @author Peter Lin
+ *
+ */
+public class GroupTransaction extends Security {
+
+ protected String[] accountIds = null;
+ protected double buyPrice;
+ protected String purchaseDate = null;
+ protected double shares;
+ protected double total;
+ protected String transactionId = null;
+
+ protected ArrayList listeners = new ArrayList();
+
+ public GroupTransaction() {
+ super();
+ }
+
+ public void setAccountIds(String[] id) {
+ if ( id != this.accountIds ) {
+ String[] old = this.accountIds;
+ this.accountIds = id;
+ this.notifyListener( "accountIds",
+ old,
+ this.accountIds );
+ }
+ }
+
+ public String[] getAccountIds() {
+ return this.accountIds;
+ }
+
+ public void setBuyPrice(double price) {
+ if ( price != this.buyPrice ) {
+ Double old = new Double( this.buyPrice );
+ this.buyPrice = price;
+ this.notifyListener( "buyPrice",
+ old,
+ new Double( this.buyPrice ) );
+ }
+ }
+
+ public double getBuyPrice() {
+ return this.buyPrice;
+ }
+
+ public void setPurchaseDate(String date) {
+ if ( !date.equals( this.purchaseDate ) ) {
+ String old = this.purchaseDate;
+ this.purchaseDate = date;
+ this.notifyListener( "purchaseDate",
+ old,
+ this.purchaseDate );
+ }
+ }
+
+ public String getPurchaseDate() {
+ return this.purchaseDate;
+ }
+
+ public void setShares(double shares) {
+ if ( shares != this.shares ) {
+ Double old = new Double( this.shares );
+ this.shares = shares;
+ this.notifyListener( "shares",
+ old,
+ new Double( this.shares ) );
+ }
+ }
+
+ public double getShares() {
+ return this.shares;
+ }
+
+ public void setTotal(double value) {
+ if ( value != this.total ) {
+ Double old = new Double( this.total );
+ this.total = value;
+ this.notifyListener( "total",
+ old,
+ new Double( this.total ) );
+ }
+ }
+
+ public double getTotal() {
+ return this.total;
+ }
+
+ public void setTransactionId(String id) {
+ if ( !id.equals( this.transactionId ) ) {
+ String old = this.transactionId;
+ this.transactionId = id;
+ this.notifyListener( "transactionId",
+ old,
+ this.transactionId );
+ }
+ }
+
+ public String getTransactionId() {
+ return this.transactionId;
+ }
+
+ public void addPropertyChangeListener(PropertyChangeListener listener) {
+ this.listeners.add( listener );
+ }
+
+ public void removePropertyChangeListener(PropertyChangeListener listener) {
+ this.listeners.remove( listener );
+ }
+
+ protected void notifyListener(String field,
+ Object oldValue,
+ Object newValue) {
+ if ( listeners == null || listeners.size() == 0 ) {
+ return;
+ } else {
+ PropertyChangeEvent event = new PropertyChangeEvent( this,
+ field,
+ oldValue,
+ newValue );
+
+ for ( int i = 0; i < listeners.size(); i++ ) {
+ ((java.beans.PropertyChangeListener) listeners.get( i )).propertyChange( event );
+ }
+ }
+
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/Security.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/Security.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/Security.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,198 @@
+package org.drools.benchmark.models;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.Serializable;
+import java.util.ArrayList;
+
+/**
+ * @author Peter Lin
+ *
+ */
+public class Security
+ implements
+ Serializable {
+
+ protected String countryCode = null;
+ protected double currentPrice;
+ protected int cusip;
+ protected String exchange = null;
+ protected int industryGroupID;
+ protected int industryID;
+ protected String issuer = null;
+ protected double lastPrice;
+ protected int sectorID;
+ protected int subIndustryID;
+
+ protected ArrayList listeners = new ArrayList();
+
+ public Security() {
+ super();
+ }
+
+ public void setCountryCode(String code) {
+ if ( !code.equals( this.countryCode ) ) {
+ String old = this.countryCode;
+ this.countryCode = code;
+ this.notifyListener( "countryCode",
+ old,
+ this.countryCode );
+ }
+ }
+
+ public String getCountryCode() {
+ return this.countryCode;
+ }
+
+ public void setCurrentPrice(double price) {
+ if ( price != this.currentPrice ) {
+ Double old = new Double( this.currentPrice );
+ this.currentPrice = price;
+ this.notifyListener( "currentPrice",
+ old,
+ new Double( this.currentPrice ) );
+ }
+ }
+
+ public double getCurrentPrice() {
+ return this.currentPrice;
+ }
+
+ public void setCusip(int value) {
+ if ( value != this.cusip ) {
+ Integer old = new Integer( this.cusip );
+ this.cusip = value;
+ this.notifyListener( "cusip",
+ old,
+ new Integer( this.cusip ) );
+ }
+ }
+
+ public int getCusip() {
+ return this.cusip;
+ }
+
+ public void setExchange(String exc) {
+ if ( !exc.equals( this.exchange ) ) {
+ String old = this.exchange;
+ this.exchange = exc;
+ this.notifyListener( "exchange",
+ old,
+ this.exchange );
+ }
+ }
+
+ public String getExchange() {
+ return this.exchange;
+ }
+
+ public void setIndustryGroupID(int id) {
+ if ( id != this.industryGroupID ) {
+ int old = this.industryGroupID;
+ this.industryGroupID = id;
+ this.notifyListener( "industryGroupID",
+ new Integer( old ),
+ new Integer( this.industryGroupID ) );
+ }
+ }
+
+ public int getIndustryGroupID() {
+ return this.industryGroupID;
+ }
+
+ public void setIndustryID(int id) {
+ if ( id != this.industryID ) {
+ int old = this.industryID;
+ this.industryID = id;
+ this.notifyListener( "industryID",
+ new Integer( old ),
+ new Integer( this.industryID ) );
+ }
+ }
+
+ public int getIndustryID() {
+ return this.industryID;
+ }
+
+ public void setIssuer(String name) {
+ if ( !name.equals( this.issuer ) ) {
+ String old = this.issuer;
+ this.issuer = name;
+ this.notifyListener( "issuer",
+ old,
+ this.issuer );
+ }
+ }
+
+ public String getIssuer() {
+ return this.issuer;
+ }
+
+ public void setLastPrice(double price) {
+ if ( price != this.lastPrice ) {
+ Double old = new Double( this.lastPrice );
+ this.lastPrice = price;
+ this.notifyListener( "lastPrice",
+ old,
+ new Double( this.lastPrice ) );
+ }
+ }
+
+ public double getLastPrice() {
+ return this.lastPrice;
+ }
+
+ public void setSectorID(int id) {
+ if ( id != this.sectorID ) {
+ int old = this.sectorID;
+ this.sectorID = id;
+ this.notifyListener( "sectorID",
+ new Integer( old ),
+ new Integer( this.sectorID ) );
+ }
+ }
+
+ public int getSectorID() {
+ return this.sectorID;
+ }
+
+ public void setSubIndustryID(int id) {
+ if ( id != this.subIndustryID ) {
+ int old = this.subIndustryID;
+ this.subIndustryID = id;
+ this.notifyListener( "subIndustryID",
+ new Integer( old ),
+ new Integer( this.subIndustryID ) );
+ }
+ }
+
+ public int getSubIndustryID() {
+ return this.subIndustryID;
+ }
+
+ public void addPropertyChangeListener(PropertyChangeListener listener) {
+ this.listeners.add( listener );
+ }
+
+ public void removePropertyChangeListener(PropertyChangeListener listener) {
+ this.listeners.remove( listener );
+ }
+
+ protected void notifyListener(String field,
+ Object oldValue,
+ Object newValue) {
+ if ( listeners == null || listeners.size() == 0 ) {
+ return;
+ } else {
+ PropertyChangeEvent event = new PropertyChangeEvent( this,
+ field,
+ oldValue,
+ newValue );
+
+ for ( int i = 0; i < listeners.size(); i++ ) {
+ ((java.beans.PropertyChangeListener) listeners.get( i )).propertyChange( event );
+ }
+ }
+
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/SubTransaction.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/SubTransaction.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/SubTransaction.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,59 @@
+package org.drools.benchmark.models;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.ArrayList;
+
+/**
+ * @author Peter Lin
+ *
+ */
+public class SubTransaction extends Security {
+
+ protected String[] transactionSet = null;
+ protected ArrayList listeners = new ArrayList();
+
+ public SubTransaction() {
+ super();
+ }
+
+ public void setTransactionSet(String[] ids) {
+ if ( ids != this.transactionSet ) {
+ String[] old = this.transactionSet;
+ this.transactionSet = ids;
+ this.notifyListener( "transactionSet",
+ old,
+ this.transactionSet );
+ }
+ }
+
+ public String[] getTransactionSet() {
+ return this.transactionSet;
+ }
+
+ public void addPropertyChangeListener(PropertyChangeListener listener) {
+ this.listeners.add( listener );
+ }
+
+ public void removePropertyChangeListener(PropertyChangeListener listener) {
+ this.listeners.remove( listener );
+ }
+
+ protected void notifyListener(String field,
+ Object oldValue,
+ Object newValue) {
+ if ( listeners == null || listeners.size() == 0 ) {
+ return;
+ } else {
+ PropertyChangeEvent event = new PropertyChangeEvent( this,
+ field,
+ oldValue,
+ newValue );
+
+ for ( int i = 0; i < listeners.size(); i++ ) {
+ ((java.beans.PropertyChangeListener) listeners.get( i )).propertyChange( event );
+ }
+ }
+
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/Transaction.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/Transaction.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/models/Transaction.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,135 @@
+package org.drools.benchmark.models;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.ArrayList;
+
+/**
+ * @author Peter Lin
+ *
+ */
+public class Transaction extends Security {
+
+ protected String accountId = null;
+ protected double buyPrice;
+ protected String purchaseDate = null;
+ protected double shares;
+ protected double total;
+ protected String transactionId = null;
+
+ protected ArrayList listeners = new ArrayList();
+
+ public Transaction() {
+ super();
+ }
+
+ public void setAccountId(String id) {
+ if ( !id.equals( this.accountId ) ) {
+ String old = this.accountId;
+ this.accountId = id;
+ this.notifyListener( "accountId",
+ old,
+ this.accountId );
+ }
+ }
+
+ public String getAccountId() {
+ return this.accountId;
+ }
+
+ public void setBuyPrice(double price) {
+ if ( price != this.buyPrice ) {
+ Double old = new Double( this.buyPrice );
+ this.buyPrice = price;
+ this.notifyListener( "buyPrice",
+ old,
+ new Double( this.buyPrice ) );
+ }
+ }
+
+ public double getBuyPrice() {
+ return this.buyPrice;
+ }
+
+ public void setPurchaseDate(String date) {
+ if ( !date.equals( this.purchaseDate ) ) {
+ String old = this.purchaseDate;
+ this.purchaseDate = date;
+ this.notifyListener( "purchaseDate",
+ old,
+ this.purchaseDate );
+ }
+ }
+
+ public String getPurchaseDate() {
+ return this.purchaseDate;
+ }
+
+ public void setShares(double shares) {
+ if ( shares != this.shares ) {
+ Double old = new Double( this.shares );
+ this.shares = shares;
+ this.notifyListener( "shares",
+ old,
+ new Double( this.shares ) );
+ }
+ }
+
+ public double getShares() {
+ return this.shares;
+ }
+
+ public void setTotal(double value) {
+ if ( value != this.total ) {
+ Double old = new Double( this.total );
+ this.total = value;
+ this.notifyListener( "total",
+ old,
+ new Double( this.total ) );
+ }
+ }
+
+ public double getTotal() {
+ return this.total;
+ }
+
+ public void setTransactionId(String id) {
+ if ( !id.equals( this.transactionId ) ) {
+ String old = this.transactionId;
+ this.transactionId = id;
+ this.notifyListener( "transactionId",
+ old,
+ this.transactionId );
+ }
+ }
+
+ public String getTransactionId() {
+ return this.transactionId;
+ }
+
+ public void addPropertyChangeListener(PropertyChangeListener listener) {
+ this.listeners.add( listener );
+ }
+
+ public void removePropertyChangeListener(PropertyChangeListener listener) {
+ this.listeners.remove( listener );
+ }
+
+ protected void notifyListener(String field,
+ Object oldValue,
+ Object newValue) {
+ if ( listeners == null || listeners.size() == 0 ) {
+ return;
+ } else {
+ PropertyChangeEvent event = new PropertyChangeEvent( this,
+ field,
+ oldValue,
+ newValue );
+
+ for ( int i = 0; i < listeners.size(); i++ ) {
+ ((java.beans.PropertyChangeListener) listeners.get( i )).propertyChange( event );
+ }
+ }
+
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/Edge.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/Edge.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/Edge.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,103 @@
+package org.drools.benchmark.waltz;
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+
+
+
+/**
+ * @author Alexander Bagerman
+ *
+ */
+public class Edge {
+ private int p1;
+
+ private int p2;
+
+ private boolean joined;
+
+ private String label;
+
+ private boolean plotted;
+
+ final public static String NIL = "empty";
+
+ final public static String B = "B";
+
+ final public static String PLUS = "+";
+
+ final public static String MINUS = "-";
+
+ public Edge() {
+
+ }
+
+ public Edge(int p1, int p2, boolean joined, String label, boolean plotted) {
+ this.p1 = p1;
+ this.p2 = p2;
+ this.joined = joined;
+ this.label = label;
+ this.plotted = plotted;
+ }
+
+ public int getP1() {
+ return this.p1;
+ }
+
+ public void setP1(int p1) {
+ this.p1 = p1;
+ }
+
+ public int getP2() {
+ return this.p2;
+ }
+
+ public void setP2(int p2) {
+ this.p2 = p2;
+ }
+
+ public String toString() {
+ return "( Edge p1=" + this.p1 + ", p2=" + this.p2 + ", joined="
+ + this.joined + ", label=" + this.label + ", plotted="
+ + this.plotted +" )";
+ }
+
+ public boolean isJoined() {
+ return this.joined;
+ }
+
+ public void setJoined(boolean joined) {
+ this.joined = joined;
+ }
+
+ public String getLabel() {
+ return this.label;
+ }
+
+ public void setLabel(String label) {
+ this.label = label;
+ }
+
+ public boolean getPlotted() {
+ return this.plotted;
+ }
+
+ public void setPlotted(boolean plotted) {
+ this.plotted = plotted;
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/Junction.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/Junction.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/Junction.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,104 @@
+package org.drools.benchmark.waltz;
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+
+
+
+/**
+ * @author Alexander Bagerman
+ *
+ */
+
+public class Junction {
+ public static String TEE = "tee";
+
+ public static String FORK = "fork";
+
+ public static String ARROW = "arrow";
+
+ public static String L = "L";
+
+ private int p1;
+
+ private int p2;
+
+ private int p3;
+
+ private int basePoint;
+
+ private String type;
+
+ public Junction() {
+
+ }
+
+ public Junction(int p1, int p2, int p3, int basePoint, String type) {
+ this.p1 = p1;
+ this.p2 = p2;
+ this.p3 = p3;
+ this.basePoint = basePoint;
+ this.type = type;
+ }
+
+ public int getP1() {
+ return this.p1;
+ }
+
+ public void setP1(int p1) {
+ this.p1 = p1;
+ }
+
+ public int getP2() {
+ return this.p2;
+ }
+
+ public void setP2(int p2) {
+ this.p2 = p2;
+ }
+
+ public String toString() {
+ return "{Junction p1=" + this.p1 + ", p2=" + this.p2 + ", p3="
+ + this.p3 + ", basePoint=" + this.basePoint + ", type="
+ + this.type + "}";
+ }
+
+ public int getBasePoint() {
+ return this.basePoint;
+ }
+
+ public void setBasePoint(int basePoint) {
+ this.basePoint = basePoint;
+ }
+
+ public int getP3() {
+ return this.p3;
+ }
+
+ public void setP3(int p3) {
+ this.p3 = p3;
+ }
+
+ public String getType() {
+ return this.type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/Line.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/Line.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/Line.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,61 @@
+package org.drools.benchmark.waltz;
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+
+
+
+/**
+ * @author Alexander Bagerman
+ *
+ */
+
+public class Line {
+ private int p1;
+
+ private int p2;
+
+ public Line() {
+
+ }
+
+ public Line(int p1, int p2) {
+ this.p1 = p1;
+ this.p2 = p2;
+ }
+
+ public int getP1() {
+ return this.p1;
+ }
+
+ public void setP1(int p1) {
+ this.p1 = p1;
+ }
+
+ public int getP2() {
+ return this.p2;
+ }
+
+ public void setP2(int p2) {
+ this.p2 = p2;
+ }
+
+ public String toString() {
+ return "{Line p1=" + this.p1 + ", p2=" + this.p2 + "}";
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/Stage.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/Stage.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/Stage.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,103 @@
+package org.drools.benchmark.waltz;
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+
+
+
+/**
+ * @author Alexander Bagerman
+ *
+ */
+
+import java.io.Serializable;
+
+/**
+ *
+ * @author Alexander Bagerman
+ *
+ */
+public class Stage implements Serializable {
+ private static final long serialVersionUID = -2143733895059840082L;
+
+ final public static int START = 0;
+
+ final public static int DUPLICATE = 1;
+
+ final public static int DETECT_JUNCTIONS = 2;
+
+ final public static int FIND_INITIAL_BOUNDARY = 3;
+
+ final public static int FIND_SECOND_BOUNDARY = 4;
+
+ final public static int LABELING = 5;
+
+ final public static int PLOT_REMAINING_EDGES = 9;
+
+ final public static int DONE = 10;
+
+ private int value;
+
+ public Stage() {
+
+ }
+
+ public Stage(int value) {
+ this.value = value;
+ }
+
+ public int getValue() {
+ return this.value;
+ }
+
+ public void setValue(int value) {
+ this.value = value;
+ }
+
+ public static int resolveStageValue(String str) {
+ if (str.equals("start")) {
+ return 0;
+
+ } else if (str.equals("duplicate")) {
+ return 1;
+
+ } else if (str.equals("detect_junctions")) {
+ return 2;
+
+ } else if (str.equals("find_initial_boundary")) {
+ return 3;
+
+ } else if (str.equals("find_second_boundary")) {
+ return 4;
+
+ } else if (str.equals("labeling")) {
+ return 5;
+
+ } else if (str.equals("plot_remaining_edges")) {
+ return 9;
+
+ } else if (str.equals("done")) {
+ return 10;
+ }
+ else return -9999999;
+ }
+
+ public String toString() {
+ return "{Stage value=" + this.value + "}";
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/WaltzBenchmark.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/WaltzBenchmark.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/WaltzBenchmark.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,85 @@
+package org.drools.benchmark.waltz;
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.WorkingMemory;
+import org.drools.compiler.PackageBuilder;
+import org.drools.rule.Package;
+
+/**
+ * This is a sample file to launch a rule package from a rule source file.
+ */
+public abstract class WaltzBenchmark {
+
+ public static void main(final String[] args) throws Exception {
+ PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( WaltzBenchmark.class.getResourceAsStream( "waltz.drl" ) ) );
+ Package pkg = builder.getPackage();
+
+ //add the package to a rulebase
+ final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( pkg );
+
+ StatefulSession session = ruleBase.newStatefulSession();
+
+ String filename;
+ if ( args.length != 0 ) {
+ String arg = args[0];
+ filename = arg;
+ } else {
+ filename = "waltz12.dat";
+ }
+
+ loadLines( session, filename );
+
+ Stage stage = new Stage(Stage.DUPLICATE);
+ session.insert( stage );
+
+ long start = System.currentTimeMillis();
+ session.fireAllRules();
+ System.out.println( (System.currentTimeMillis() - start) / 1000 );
+ session.dispose();
+ }
+
+
+ private static void loadLines(WorkingMemory wm, String filename) throws IOException {
+ BufferedReader reader = new BufferedReader(new InputStreamReader( WaltzBenchmark.class.getResourceAsStream( filename ) ));
+ Pattern pat = Pattern.compile( ".*make line \\^p1 ([0-9]*) \\^p2 ([0-9]*).*" );
+ String line = reader.readLine();
+ while(line != null) {
+ Matcher m = pat.matcher( line );
+ if(m.matches()) {
+ Line l = new Line(Integer.parseInt( m.group( 1 ) ),
+ Integer.parseInt( m.group( 2 ) ) );
+ wm.insert( l );
+ }
+ line = reader.readLine();
+ }
+ reader.close();
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/WaltzUtil.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/WaltzUtil.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltz/WaltzUtil.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,159 @@
+package org.drools.benchmark.waltz;
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+
+
+
+
+/**
+ * @author Alexander Bagerman
+ *
+ */
+public class WaltzUtil {
+ private static double PI = 3.1415927;
+
+ private static int MOD_NUM = 100;
+
+ private static int get_y(int val) {
+ return val % MOD_NUM;
+ }
+
+ private static int get_x(int val) {
+ return (int) (val / MOD_NUM);
+ }
+
+ /***************************************************************************
+ * This function is passed two points and calculates the angle between the
+ * line defined by these points and the x-axis.
+ **************************************************************************/
+ private static double get_angle(int p1, int p2) {
+ int delta_x, delta_y;
+ double ret = 0.0;
+ /*
+ * Calculate (x2 - x1) and (y2 - y1). The points are passed in the form
+ * x1y1 and x2y2. get_x() and get_y() are passed these points and return
+ * the x and y values respectively. For example, get_x(1020) returns 10.
+ */
+ delta_x = get_x(p2) - get_x(p1);
+ delta_y = get_y(p2) - get_y(p1);
+
+ if (delta_x == 0) {
+ if (delta_y > 0) {
+ ret = PI / 2;
+ } else if (delta_y < 0) {
+ ret = -PI / 2;
+ }
+ } else if (delta_y == 0) {
+ if (delta_x > 0) {
+ ret = 0.0;
+ } else if (delta_x < 0) {
+ ret = PI;
+ }
+ } else {
+ ret = Math.atan2(delta_y, delta_x);
+ }
+ return ret;
+ }
+
+ /***************************************************************************
+ * This procedure is passed the basepoint of the intersection of two lines
+ * as well as the other two endpoints of the lines and calculates the angle
+ * inscribed by these three points.
+ **************************************************************************/
+ private static double inscribed_angle(int basepoint, int p1, int p2) {
+ double angle1, angle2, temp;
+
+ /*
+ * Get the angle between line #1 and the origin and the angle between
+ * line #2 and the origin, and then subtract these values.
+ */
+ angle1 = get_angle(basepoint, p1);
+ angle2 = get_angle(basepoint, p2);
+ temp = angle1 - angle2;
+ if (temp < 0.0)
+ temp = -temp;
+
+ /*
+ * We always want the smaller of the two angles inscribed, so if the
+ * answer is greater than 180 degrees, calculate the smaller angle and
+ * return it.
+ */
+ if (temp > PI)
+ temp = 2 * PI - temp;
+ if (temp < 0.0)
+ return (-temp);
+ return (temp);
+ }
+
+ public static Junction make_3_junction(int basepoint, int p1, int p2, int p3) {
+ int shaft, barb1, barb2;
+ double angle12, angle13, angle23;
+ double sum, sum1213, sum1223, sum1323;
+ double delta;
+ String j_type;
+
+ angle12 = inscribed_angle(basepoint, p1, p2);
+ angle13 = inscribed_angle(basepoint, p1, p3);
+ angle23 = inscribed_angle(basepoint, p2, p3);
+
+ sum1213 = angle12 + angle13;
+ sum1223 = angle12 + angle23;
+ sum1323 = angle13 + angle23;
+
+ if (sum1213 < sum1223) {
+ if (sum1213 < sum1323) {
+ sum = sum1213;
+ shaft = p1;
+ barb1 = p2;
+ barb2 = p3;
+ } else {
+ sum = sum1323;
+ shaft = p3;
+ barb1 = p1;
+ barb2 = p2;
+ }
+ } else {
+ if (sum1223 < sum1323) {
+ sum = sum1223;
+ shaft = p2;
+ barb1 = p1;
+ barb2 = p3;
+ } else {
+ sum = sum1323;
+ shaft = p3;
+ barb1 = p1;
+ barb2 = p2;
+ }
+ }
+
+ delta = sum - PI;
+ if (delta < 0.0)
+ delta = -delta;
+
+ if (delta < 0.001) {
+ j_type = Junction.TEE;
+ } else if (sum > PI) {
+ j_type = Junction.FORK;
+ } else {
+ j_type = Junction.ARROW;
+ }
+
+ return new Junction(barb1, shaft, barb2, basepoint, j_type);
+
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/Edge.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/Edge.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/Edge.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,87 @@
+package org.drools.benchmark.waltzdb;
+
+
+//(literalize edge type p1 p2 joined)
+public class Edge {
+ private String type;
+ private int p1;
+ private int p2;
+ private boolean joined;
+ public Edge() {
+ super();
+ }
+ public Edge(String type, int p1, int p2, boolean joined) {
+ super();
+ this.type = type;
+ this.p1 = p1;
+ this.p2 = p2;
+ this.joined = joined;
+ }
+ public Edge(int p1, int p2, boolean joined) {
+ super();
+ this.p1 = p1;
+ this.p2 = p2;
+ this.joined = joined;
+ }
+ public Edge(int p1, int p2) {
+ super();
+ this.p1 = p1;
+ this.p2 = p2;
+ }
+
+ public int hashCode() {
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + (joined ? 1231 : 1237);
+ result = PRIME * result + p1;
+ result = PRIME * result + p2;
+ result = PRIME * result + ((type == null) ? 0 : type.hashCode());
+ return result;
+ }
+
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ final Edge other = (Edge) obj;
+ if (joined != other.joined)
+ return false;
+ if (p1 != other.p1)
+ return false;
+ if (p2 != other.p2)
+ return false;
+ if (type == null) {
+ if (other.type != null)
+ return false;
+ } else if (!type.equals(other.type))
+ return false;
+ return true;
+ }
+ public boolean isJoined() {
+ return joined;
+ }
+ public void setJoined(boolean joined) {
+ this.joined = joined;
+ }
+ public int getP1() {
+ return p1;
+ }
+ public void setP1(int p1) {
+ this.p1 = p1;
+ }
+ public int getP2() {
+ return p2;
+ }
+ public void setP2(int p2) {
+ this.p2 = p2;
+ }
+ public String getType() {
+ return type;
+ }
+ public void setType(String type) {
+ this.type = type;
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/EdgeLabel.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/EdgeLabel.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/EdgeLabel.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,77 @@
+package org.drools.benchmark.waltzdb;
+//(literalize edge_label p1 p2 l_name l_id)
+public class EdgeLabel {
+ private int p1;
+ private int p2;
+ private String labelName;
+ private String labelId;
+ public EdgeLabel() {
+ super();
+ }
+ public EdgeLabel(int p1, int p2, String labelName, String labelId) {
+ super();
+ this.p1 = p1;
+ this.p2 = p2;
+ this.labelName = labelName;
+ this.labelId = labelId;
+ }
+
+ public int hashCode() {
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + ((labelId == null) ? 0 : labelId.hashCode());
+ result = PRIME * result + ((labelName == null) ? 0 : labelName.hashCode());
+ result = PRIME * result + p1;
+ result = PRIME * result + p2;
+ return result;
+ }
+
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ final EdgeLabel other = (EdgeLabel) obj;
+ if (labelId == null) {
+ if (other.labelId != null)
+ return false;
+ } else if (!labelId.equals(other.labelId))
+ return false;
+ if (labelName == null) {
+ if (other.labelName != null)
+ return false;
+ } else if (!labelName.equals(other.labelName))
+ return false;
+ if (p1 != other.p1)
+ return false;
+ if (p2 != other.p2)
+ return false;
+ return true;
+ }
+ public String getLabelId() {
+ return labelId;
+ }
+ public void setLabelId(String labelId) {
+ this.labelId = labelId;
+ }
+ public String getLabelName() {
+ return labelName;
+ }
+ public void setLabelName(String labelName) {
+ this.labelName = labelName;
+ }
+ public int getP1() {
+ return p1;
+ }
+ public void setP1(int p1) {
+ this.p1 = p1;
+ }
+ public int getP2() {
+ return p2;
+ }
+ public void setP2(int p2) {
+ this.p2 = p2;
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/Illegal.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/Illegal.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/Illegal.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,52 @@
+package org.drools.benchmark.waltzdb;
+//(literalize illegal bp l_id)
+public class Illegal {
+ private int basePoint;
+ private String labelId;
+ public Illegal() {
+ super();
+ }
+ public Illegal(int basePoint, String labelId) {
+ super();
+ this.basePoint = basePoint;
+ this.labelId = labelId;
+ }
+
+ public int hashCode() {
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + basePoint;
+ result = PRIME * result + ((labelId == null) ? 0 : labelId.hashCode());
+ return result;
+ }
+
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ final Illegal other = (Illegal) obj;
+ if (basePoint != other.basePoint)
+ return false;
+ if (labelId == null) {
+ if (other.labelId != null)
+ return false;
+ } else if (!labelId.equals(other.labelId))
+ return false;
+ return true;
+ }
+ public int getBasePoint() {
+ return basePoint;
+ }
+ public void setBasePoint(int basePoint) {
+ this.basePoint = basePoint;
+ }
+ public String getLabelId() {
+ return labelId;
+ }
+ public void setLabelId(String labelId) {
+ this.labelId = labelId;
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/Junction.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/Junction.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/Junction.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,138 @@
+package org.drools.benchmark.waltzdb;
+//(literalize junction p1 p2 p3 base_point type name visited)
+public class Junction {
+
+ public static String L = "L";
+ public Junction() {
+ super();
+ }
+
+ public String toString() {
+ String result = "JUNCTION: P1=" + p1 + ",P2=" + p2 + ",P3=" +
+ p3 + ",BasePoint=" + basePoint + ", Type=" + type +
+ ",Name=" + name + ",Visited=" + visited;
+ return result;
+ }
+ private int p1;
+ private int p2;
+ private int p3;
+ private int basePoint;
+ private String type;
+ private String name;
+ private String visited;
+ public Junction(String type, String name, int basePoint, int p1,int p2, String visited){
+ super();
+ this.p1 = p1;
+ this.p2 = p2;
+ this.basePoint = basePoint;
+ this.type = type;
+ this.name = name;
+ this.visited = visited;
+ }
+ public Junction(int p1, int p2, int p3, int basePoint, String type, String name, String visited) {
+ super();
+ this.p1 = p1;
+ this.p2 = p2;
+ this.p3 = p3;
+ this.basePoint = basePoint;
+ this.type = type;
+ this.name = name;
+ this.visited = visited;
+ }
+ public Junction(int basePoint, String type, String name, String visited) {
+ super();
+ this.basePoint = basePoint;
+ this.type = type;
+ this.name = name;
+ this.visited = visited;
+ }
+ public int getBasePoint() {
+ return basePoint;
+ }
+ public void setBasePoint(int basePoint) {
+ this.basePoint = basePoint;
+ }
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public int getP1() {
+ return p1;
+ }
+ public void setP1(int p1) {
+ this.p1 = p1;
+ }
+ public int getP2() {
+ return p2;
+ }
+ public void setP2(int p2) {
+ this.p2 = p2;
+ }
+ public int getP3() {
+ return p3;
+ }
+ public void setP3(int p3) {
+ this.p3 = p3;
+ }
+ public String getType() {
+ return type;
+ }
+ public void setType(String type) {
+ this.type = type;
+ }
+ public String getVisited() {
+ return visited;
+ }
+ public void setVisited(String visited) {
+ this.visited = visited;
+ }
+
+ public int hashCode() {
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + basePoint;
+ result = PRIME * result + ((name == null) ? 0 : name.hashCode());
+ result = PRIME * result + p1;
+ result = PRIME * result + p2;
+ result = PRIME * result + p3;
+ result = PRIME * result + ((type == null) ? 0 : type.hashCode());
+ result = PRIME * result + ((visited == null) ? 0 : visited.hashCode());
+ return result;
+ }
+
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ final Junction other = (Junction) obj;
+ if (basePoint != other.basePoint)
+ return false;
+ if (name == null) {
+ if (other.name != null)
+ return false;
+ } else if (!name.equals(other.name))
+ return false;
+ if (p1 != other.p1)
+ return false;
+ if (p2 != other.p2)
+ return false;
+ if (p3 != other.p3)
+ return false;
+ if (type == null) {
+ if (other.type != null)
+ return false;
+ } else if (!type.equals(other.type))
+ return false;
+ if (visited == null) {
+ if (other.visited != null)
+ return false;
+ } else if (!visited.equals(other.visited))
+ return false;
+ return true;
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/Label.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/Label.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/Label.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,111 @@
+package org.drools.benchmark.waltzdb;
+//(literalize label id type name n1 n2 n3)
+public class Label {
+ private String id;
+ private String type;
+ private String name;
+ private String n1;
+ private String n2;
+ private String n3;
+ public Label() {
+ super();
+ }
+ public Label(String id, String type, String name, String n1, String n2, String n3) {
+ super();
+ this.id = id;
+ this.type = type;
+ this.name = name;
+ this.n1 = n1;
+ this.n2 = n2;
+ this.n3 = n3;
+ }
+ public String getId() {
+ return id;
+ }
+ public void setId(String id) {
+ this.id = id;
+ }
+ public String getN1() {
+ return n1;
+ }
+ public void setN1(String n1) {
+ this.n1 = n1;
+ }
+ public String getN2() {
+ return n2;
+ }
+ public void setN2(String n2) {
+ this.n2 = n2;
+ }
+ public String getN3() {
+ return n3;
+ }
+ public void setN3(String n3) {
+ this.n3 = n3;
+ }
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public String getType() {
+ return type;
+ }
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public int hashCode() {
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + ((id == null) ? 0 : id.hashCode());
+ result = PRIME * result + ((n1 == null) ? 0 : n1.hashCode());
+ result = PRIME * result + ((n2 == null) ? 0 : n2.hashCode());
+ result = PRIME * result + ((n3 == null) ? 0 : n3.hashCode());
+ result = PRIME * result + ((name == null) ? 0 : name.hashCode());
+ result = PRIME * result + ((type == null) ? 0 : type.hashCode());
+ return result;
+ }
+
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ final Label other = (Label) obj;
+ if (id == null) {
+ if (other.id != null)
+ return false;
+ } else if (!id.equals(other.id))
+ return false;
+ if (n1 == null) {
+ if (other.n1 != null)
+ return false;
+ } else if (!n1.equals(other.n1))
+ return false;
+ if (n2 == null) {
+ if (other.n2 != null)
+ return false;
+ } else if (!n2.equals(other.n2))
+ return false;
+ if (n3 == null) {
+ if (other.n3 != null)
+ return false;
+ } else if (!n3.equals(other.n3))
+ return false;
+ if (name == null) {
+ if (other.name != null)
+ return false;
+ } else if (!name.equals(other.name))
+ return false;
+ if (type == null) {
+ if (other.type != null)
+ return false;
+ } else if (!type.equals(other.type))
+ return false;
+ return true;
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/Line.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/Line.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/Line.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,49 @@
+package org.drools.benchmark.waltzdb;
+
+public class Line {
+ private int p1;
+ private int p2;
+ public Line() {
+ super();
+ }
+ public int getP1() {
+ return p1;
+ }
+ public void setP1(int p1) {
+ this.p1 = p1;
+ }
+ public int getP2() {
+ return p2;
+ }
+ public void setP2(int p2) {
+ this.p2 = p2;
+ }
+
+ public int hashCode() {
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + p1;
+ result = PRIME * result + p2;
+ return result;
+ }
+
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ final Line other = (Line) obj;
+ if (p1 != other.p1)
+ return false;
+ if (p2 != other.p2)
+ return false;
+ return true;
+ }
+ public Line(int p1, int p2) {
+ super();
+ this.p1 = p1;
+ this.p2 = p2;
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/Stage.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/Stage.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/Stage.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,57 @@
+package org.drools.benchmark.waltzdb;
+
+public class Stage {
+ final public static String DUPLICATE = "A";
+ final public static String DETECT_JUNCTIONS = "B";
+ final public static String FIND_INITIAL_BOUNDARY = "C";
+ final public static String FIND_SECOND_BOUDARY = "D";
+ final public static String LABELING = "E";
+ final public static String VISITING_3J = "F";
+ final public static String VISITING_2J = "G";
+ final public static String MARKING = "H";
+ final public static String CHECKING = "I";
+ final public static String REMOVE_LABEL = "J";
+ final public static String PRINTING = "K";
+
+ private String value;
+
+ public Stage() {
+ super();
+ }
+
+ public Stage(String value) {
+ super();
+ this.value = value;
+ }
+
+ public int hashCode() {
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + ((value == null) ? 0 : value.hashCode());
+ return result;
+ }
+
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ final Stage other = (Stage) obj;
+ if (value == null) {
+ if (other.value != null)
+ return false;
+ } else if (!value.equals(other.value))
+ return false;
+ return true;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/WaltzDbBenchmark.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/WaltzDbBenchmark.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/benchmark/waltzdb/WaltzDbBenchmark.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,89 @@
+package org.drools.benchmark.waltzdb;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Iterator;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseConfiguration;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.compiler.PackageBuilder;
+import org.drools.rule.Package;
+
+
+public class WaltzDbBenchmark {
+ public static void main(final String[] args) throws Exception {
+ PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( WaltzDbBenchmark.class.getResourceAsStream( "waltzdb.drl" ) ) );
+ Package pkg = builder.getPackage();
+
+ RuleBaseConfiguration conf = new RuleBaseConfiguration();
+ conf.setRemoveIdentities( true );
+ final RuleBase ruleBase = RuleBaseFactory.newRuleBase(RuleBase.RETEOO, conf);
+
+ ruleBase.addPackage( pkg );
+
+ StatefulSession session = ruleBase.newStatefulSession();
+
+ java.util.List lines = WaltzDbBenchmark.loadLines("waltzdb16.dat"); //12,8,4
+ java.util.List labels = WaltzDbBenchmark.loadLabels("waltzdb16.dat"); //12,8,4
+ long now = System.currentTimeMillis();
+ Iterator iter =lines.iterator();
+ while(iter.hasNext()){
+ Line line = (Line)iter.next();
+ session.insert(line);
+ System.out.println(line.getP1() + " " + line.getP2());
+ }
+
+ iter =labels.iterator();
+ while(iter.hasNext()){
+ Label label = (Label)iter.next();
+ session.insert(label);
+ System.out.println(label.getId() + " " + label.getType());
+ }
+
+ Stage stage = new Stage(Stage.DUPLICATE);
+ session.insert( stage );
+ session.fireAllRules();
+ System.out.println("Time: " + (System.currentTimeMillis() - now));
+ session.dispose();
+
+ }
+
+ private static java.util.List loadLines(String filename) throws IOException {
+ BufferedReader reader = new BufferedReader(new InputStreamReader( WaltzDbBenchmark.class.getResourceAsStream( filename ) ));
+ Pattern pat = Pattern.compile( ".*make line \\^p1 ([0-9]*) \\^p2 ([0-9]*).*" );
+ String line = reader.readLine();
+ java.util.List result = new java.util.ArrayList();
+ while(line != null) {
+ Matcher m = pat.matcher( line );
+ if(m.matches()) {
+ Line l = new Line(Integer.parseInt( m.group( 1 ) ),
+ Integer.parseInt( m.group( 2 ) ) );
+ result.add(l);
+ }
+ line = reader.readLine();
+ }
+ reader.close();
+ return result;
+ }
+ private static java.util.List loadLabels(String filename) throws IOException {
+ BufferedReader reader = new BufferedReader(new InputStreamReader( WaltzDbBenchmark.class.getResourceAsStream( filename ) ));
+ Pattern pat = Pattern.compile( ".*make label \\^type ([0-9a-z]*) \\^name ([0-9a-zA-Z]*) \\^id ([0-9]*) \\^n1 ([B+-]*) \\^n2 ([B+-]*)( \\^n3 ([B+-]*))?.*" );
+ String line = reader.readLine();
+ java.util.List result = new java.util.ArrayList();
+ while(line != null) {
+ Matcher m = pat.matcher( line );
+ if(m.matches()) {
+ Label l = new Label(m.group( 1 ),m.group( 2 ), m.group(3) , m.group(4), m.group(5), m.group(6) );
+ result.add(l);
+ }
+ line = reader.readLine();
+ }
+ reader.close();
+ return result;
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/FibonacciExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/FibonacciExample.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/FibonacciExample.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,75 @@
+package org.drools.examples;
+
+import java.io.InputStreamReader;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.audit.WorkingMemoryFileLogger;
+import org.drools.compiler.PackageBuilder;
+
+public class FibonacciExample {
+
+ /**
+ * @param args
+ */
+ public static void main(final String[] args) throws Exception {
+
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( FibonacciExample.class.getResourceAsStream( "Fibonacci.drl" ) ) );
+
+ final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( builder.getPackage() );
+
+ final StatefulSession session = ruleBase.newStatefulSession();
+
+ final WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger( session );
+ logger.setFileName( "log/fibonacci" );
+
+ // By setting dynamic to TRUE, Drools will use JavaBean
+ // PropertyChangeListeners so you don't have to call modifyObject().
+ final boolean dynamic = false;
+
+ session.insert( new Fibonacci( 50 ),
+ dynamic );
+
+ session.fireAllRules();
+
+ logger.writeToDisk();
+
+ session.dispose();
+
+ }
+
+ public static class Fibonacci {
+ private int sequence;
+
+ private long value;
+
+ public Fibonacci() {
+
+ }
+
+ public Fibonacci(final int sequence) {
+ this.sequence = sequence;
+ this.value = -1;
+ }
+
+ public int getSequence() {
+ return this.sequence;
+ }
+
+ public void setValue(final long value) {
+ this.value = value;
+ }
+
+ public long getValue() {
+ return this.value;
+ }
+
+ public String toString() {
+ return "Fibonacci(" + this.sequence + "/" + this.value + ")";
+ }
+ }
+
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/GolfingExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/GolfingExample.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/GolfingExample.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,81 @@
+package org.drools.examples;
+
+import java.io.InputStreamReader;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.compiler.PackageBuilder;
+
+public class GolfingExample {
+
+ /**
+ * @param args
+ */
+ public static void main(final String[] args) throws Exception {
+
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( GolfingExample.class.getResourceAsStream( "golf.drl" ) ) );
+
+ final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( builder.getPackage() );
+
+ final StatefulSession session = ruleBase.newStatefulSession();
+
+ String[] names = new String[] { "Fred", "Joe", "Bob", "Tom" };
+ String[] colors = new String[] { "red", "blue", "plaid", "orange" };
+ int[] positions = new int[] { 1, 2, 3, 4 };
+
+ for ( int n = 0; n < names.length; n++ ) {
+ for ( int c = 0; c < colors.length; c++ ) {
+ for ( int p = 0; p < positions.length; p++ ) {
+ session.insert( new Golfer( names[n], colors[c], positions[p]) );
+ }
+ }
+ }
+
+ session.fireAllRules();
+ session.dispose();
+ }
+
+
+ public static class Golfer {
+ private String name;
+ private String color;
+ private int position;
+
+ public Golfer() {
+
+ }
+
+ public Golfer(String name,
+ String color,
+ int position) {
+ super();
+ this.name = name;
+ this.color = color;
+ this.position = position;
+ }
+ /**
+ * @return the color
+ */
+ public String getColor() {
+ return this.color;
+ }
+ /**
+ * @return the name
+ */
+ public String getName() {
+ return this.name;
+ }
+
+ /**
+ * @return the name
+ */
+ public int getPosition() {
+ return this.position;
+ }
+
+ }
+}
+
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HelloWorldExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HelloWorldExample.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HelloWorldExample.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,91 @@
+package org.drools.examples;
+
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.compiler.PackageBuilder;
+import org.drools.rule.Package;
+
+/**
+ * This is a sample file to launch a rule package from a rule source file.
+ */
+public class HelloWorldExample {
+
+ public static final void main(final String[] args) throws Exception {
+ //load up the rulebase
+ final RuleBase ruleBase = readRule();
+ final StatefulSession session = ruleBase.newStatefulSession();
+
+ //go !
+ final Message message = new Message();
+ message.setMessage( "Hello World" );
+ message.setStatus( Message.HELLO );
+ session.insert( message );
+ session.fireAllRules();
+ session.dispose();
+ }
+
+ /**
+ * Please note that this is the "low level" rule assembly API.
+ */
+ private static RuleBase readRule() throws Exception {
+ //read in the source
+ final Reader source = new InputStreamReader( HelloWorldExample.class.getResourceAsStream( "HelloWorld.drl" ) );
+
+ //optionally read in the DSL (if you are using it).
+ //Reader dsl = new InputStreamReader( DroolsTest.class.getResourceAsStream( "/mylang.dsl" ) );
+
+ //Use package builder to build up a rule package.
+ //An alternative lower level class called "DrlParser" can also be used...
+
+ final PackageBuilder builder = new PackageBuilder();
+
+ //this wil parse and compile in one step
+ //NOTE: There are 2 methods here, the one argument one is for normal DRL.
+ builder.addPackageFromDrl( source );
+
+ //Use the following instead of above if you are using a DSL:
+ //builder.addPackageFromDrl( source, dsl );
+
+ //get the compiled package (which is serializable)
+ final Package pkg = builder.getPackage();
+
+ //add the package to a rulebase (deploy the rule package).
+ final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( pkg );
+ return ruleBase;
+ }
+
+ public static class Message {
+ public static final int HELLO = 0;
+ public static final int GOODBYE = 1;
+
+ private String message;
+
+ private int status;
+
+ public Message() {
+
+ }
+
+ public String getMessage() {
+ return this.message;
+ }
+
+ public void setMessage(final String message) {
+ this.message = message;
+ }
+
+ public int getStatus() {
+ return this.status;
+ }
+
+ public void setStatus(final int status) {
+ this.status = status;
+ }
+ }
+
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HonestPoliticianExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HonestPoliticianExample.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/HonestPoliticianExample.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,82 @@
+package org.drools.examples;
+
+import java.io.InputStreamReader;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.audit.WorkingMemoryFileLogger;
+import org.drools.compiler.PackageBuilder;
+
+public class HonestPoliticianExample {
+
+ /**
+ * @param args
+ */
+ public static void main(final String[] args) throws Exception {
+
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( HonestPoliticianExample.class.getResourceAsStream( "HonestPolitician.drl" ) ) );
+
+ final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( builder.getPackage() );
+
+ final StatefulSession session = ruleBase.newStatefulSession();
+
+ final WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger( session );
+ logger.setFileName( "log/honest-politician" );
+
+ final Politician blair = new Politician("blair", true);
+ final Politician bush = new Politician("bush", true);
+ final Politician chirac = new Politician("chirac", true);
+ final Politician schroder = new Politician("schroder", true);
+
+ session.insert( blair );
+ session.insert( bush );
+ session.insert( chirac );
+ session.insert( schroder );
+
+ session.fireAllRules();
+
+ logger.writeToDisk();
+
+ session.dispose();
+ }
+
+ public static class Politician {
+ private String name;
+
+ private boolean honest;
+
+ public Politician() {
+
+ }
+
+ public Politician(String name, boolean honest) {
+ super();
+ this.name = name;
+ this.honest = honest;
+ }
+
+ public boolean isHonest() {
+ return honest;
+ }
+
+ public void setHonest(boolean honest) {
+ this.honest = honest;
+ }
+
+ public String getName() {
+ return name;
+ }
+ }
+
+ public static class Hope {
+
+ public Hope() {
+
+ }
+
+ }
+
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/PricingRuleDTExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/PricingRuleDTExample.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/PricingRuleDTExample.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,77 @@
+package org.drools.examples;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringReader;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.StatelessSession;
+import org.drools.WorkingMemory;
+import org.drools.compiler.DroolsParserException;
+import org.drools.compiler.PackageBuilder;
+import org.drools.decisiontable.InputType;
+import org.drools.decisiontable.SpreadsheetCompiler;
+import org.drools.examples.decisiontable.Driver;
+import org.drools.examples.decisiontable.Policy;
+
+/**
+ * This shows off a decision table.
+ */
+public class PricingRuleDTExample {
+
+ public static final void main(String[] args) throws Exception {
+ PricingRuleDTExample launcher = new PricingRuleDTExample();
+ launcher.executeExample();
+ }
+
+ public int executeExample() throws Exception {
+
+ //first we compile the decision table into a whole lot of rules.
+ SpreadsheetCompiler compiler = new SpreadsheetCompiler();
+ String drl = compiler.compile(getSpreadsheetStream(), InputType.XLS);
+
+ //UNCOMMENT ME TO SEE THE DRL THAT IS GENERATED
+ //System.out.println(drl);
+
+ RuleBase ruleBase = buildRuleBase(drl);
+
+ // typical decision tables are used statelessly
+ StatelessSession session = ruleBase.newStatelessSession();
+
+ //now create some test data
+ Driver driver = new Driver();
+ Policy policy = new Policy();
+
+ session.execute( new Object[] { driver, policy } );
+
+ System.out.println("BASE PRICE IS: " + policy.getBasePrice());
+ System.out.println("DISCOUNT IS: " + policy.getDiscountPercent());
+
+ return policy.getBasePrice();
+
+ }
+
+
+ /** Build the rule base from the generated DRL */
+ private RuleBase buildRuleBase(String drl) throws DroolsParserException, IOException, Exception {
+ //now we build the rule package and rulebase, as if they are normal rules
+ PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new StringReader(drl) );
+
+ //add the package to a rulebase (deploy the rule package).
+ RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( builder.getPackage() );
+ return ruleBase;
+ }
+
+
+ private InputStream getSpreadsheetStream() {
+ return this.getClass().getResourceAsStream("ExamplePolicyPricing.xls");
+ }
+
+
+
+
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/State.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/State.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/State.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,62 @@
+package org.drools.examples;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+
+public class State {
+ public static final int NOTRUN = 0;
+ public static final int FINISHED = 1;
+
+ private final PropertyChangeSupport changes = new PropertyChangeSupport( this );
+
+ private String name;
+ private int state;
+
+ public State() {
+
+ }
+
+ public State(final String name) {
+ this.name = name;
+ this.state = State.NOTRUN;
+ }
+
+ public String getName() {
+ return this.name;
+ }
+
+ public int getState() {
+ return this.state;
+ }
+
+ public void setState(final int newState) {
+ final int oldState = this.state;
+ this.state = newState;
+ this.changes.firePropertyChange( "state",
+ oldState,
+ newState );
+ }
+
+ public boolean inState(final String name,
+ final int state) {
+ return this.name.equals( name ) && this.state == state;
+ }
+
+ public String toString() {
+ switch ( this.state ) {
+ case NOTRUN :
+ return this.name + "[" + "NOTRUN" + "]";
+ case FINISHED :
+ default :
+ return this.name + "[" + "FINISHED" + "]";
+ }
+ }
+
+ public void addPropertyChangeListener(final PropertyChangeListener l) {
+ this.changes.addPropertyChangeListener( l );
+ }
+
+ public void removePropertyChangeListener(final PropertyChangeListener l) {
+ this.changes.removePropertyChangeListener( l );
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/StateExampleUsingAgendGroup.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/StateExampleUsingAgendGroup.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/StateExampleUsingAgendGroup.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,62 @@
+package org.drools.examples;
+
+import java.io.InputStreamReader;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.audit.WorkingMemoryFileLogger;
+import org.drools.compiler.PackageBuilder;
+import org.drools.event.AfterActivationFiredEvent;
+import org.drools.event.DefaultAgendaEventListener;
+
+public class StateExampleUsingAgendGroup {
+
+ /**
+ * @param args
+ */
+ public static void main(final String[] args) throws Exception {
+
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( StateExampleUsingAgendGroup.class.getResourceAsStream( "StateExampleUsingAgendGroup.drl" ) ) );
+
+ final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( builder.getPackage() );
+
+ final StatefulSession session = ruleBase.newStatefulSession();
+
+ session.addEventListener( new DefaultAgendaEventListener() {
+ public void afterActivationFired(final AfterActivationFiredEvent arg0) {
+ super.afterActivationFired( arg0,
+ session );
+ }
+ } );
+
+ final WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger( session );
+ logger.setFileName( "log/state" );
+
+ final State a = new State( "A" );
+ final State b = new State( "B" );
+ final State c = new State( "C" );
+ final State d = new State( "D" );
+
+ // By setting dynamic to TRUE, Drools will use JavaBean
+ // PropertyChangeListeners so you don't have to call modifyObject().
+ final boolean dynamic = true;
+
+ session.insert( a,
+ dynamic );
+ session.insert( b,
+ dynamic );
+ session.insert( c,
+ dynamic );
+ session.insert( d,
+ dynamic );
+
+ session.fireAllRules();
+ session.dispose();
+
+ logger.writeToDisk();
+ }
+
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/StateExampleUsingSalience.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/StateExampleUsingSalience.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/StateExampleUsingSalience.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,53 @@
+package org.drools.examples;
+
+import java.io.InputStreamReader;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.audit.WorkingMemoryFileLogger;
+import org.drools.compiler.PackageBuilder;
+
+public class StateExampleUsingSalience {
+
+ /**
+ * @param args
+ */
+ public static void main(final String[] args) throws Exception {
+
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( StateExampleUsingSalience.class.getResourceAsStream( "StateExampleUsingSalience.drl" ) ) );
+
+ final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( builder.getPackage() );
+
+ final StatefulSession session = ruleBase.newStatefulSession();
+
+ final WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger( session );
+ logger.setFileName( "log/state" );
+
+ final State a = new State( "A" );
+ final State b = new State( "B" );
+ final State c = new State( "C" );
+ final State d = new State( "D" );
+
+ // By setting dynamic to TRUE, Drools will use JavaBean
+ // PropertyChangeListeners so you don't have to call modifyObject().
+ final boolean dynamic = true;
+
+ session.insert( a,
+ dynamic );
+ session.insert( b,
+ dynamic );
+ session.insert( c,
+ dynamic );
+ session.insert( d,
+ dynamic );
+
+ session.fireAllRules();
+ session.dispose();
+
+ logger.writeToDisk();
+ }
+
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/StateExampleWithDynamicRules.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/StateExampleWithDynamicRules.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/StateExampleWithDynamicRules.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,62 @@
+package org.drools.examples;
+
+import java.io.InputStreamReader;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.audit.WorkingMemoryFileLogger;
+import org.drools.compiler.PackageBuilder;
+
+public class StateExampleWithDynamicRules {
+
+ /**
+ * @param args
+ */
+ public static void main(final String[] args) throws Exception {
+
+ PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( StateExampleWithDynamicRules.class.getResourceAsStream( "StateExampleUsingSalience.drl" ) ) );
+
+ final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( builder.getPackage() );
+
+ final StatefulSession session = ruleBase.newStatefulSession();
+
+ final WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger( session );
+ logger.setFileName( "log/state" );
+
+ final State a = new State( "A" );
+ final State b = new State( "B" );
+ final State c = new State( "C" );
+ final State d = new State( "D" );
+ final State e = new State( "E" );
+
+ // By setting dynamic to TRUE, Drools will use JavaBean
+ // PropertyChangeListeners so you don't have to call modifyObject().
+ final boolean dynamic = true;
+
+ session.insert( a,
+ dynamic );
+ session.insert( b,
+ dynamic );
+ session.insert( c,
+ dynamic );
+ session.insert( d,
+ dynamic );
+ session.insert( e,
+ dynamic );
+
+ session.fireAllRules();
+
+ builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( StateExampleWithDynamicRules.class.getResourceAsStream( "StateExampleDynamicRule.drl" ) ) );
+ ruleBase.addPackage( builder.getPackage() );
+
+ session.fireAllRules();
+ session.dispose();
+
+ logger.writeToDisk();
+ }
+
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/TroubleTicketExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/TroubleTicketExample.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/TroubleTicketExample.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,136 @@
+package org.drools.examples;
+
+import java.io.InputStreamReader;
+
+import org.drools.FactHandle;
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.audit.WorkingMemoryFileLogger;
+import org.drools.compiler.PackageBuilder;
+
+public class TroubleTicketExample {
+
+ /**
+ * @param args
+ */
+ public static void main(final String[] args) throws Exception {
+
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( TroubleTicketExample.class.getResourceAsStream( "TroubleTicket.drl" ) ) );
+
+ final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( builder.getPackage() );
+
+ final StatefulSession session = ruleBase.newStatefulSession();
+
+ final WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger( session );
+ logger.setFileName( "log/trouble_ticket" );
+
+ final Customer a = new Customer( "A",
+ "Gold" );
+ final Customer b = new Customer( "B",
+ "Platinum" );
+ final Customer c = new Customer( "C",
+ "Silver" );
+ final Customer d = new Customer( "D",
+ "Silver" );
+
+ final Ticket t1 = new Ticket( a );
+ final Ticket t2 = new Ticket( b );
+ final Ticket t3 = new Ticket( c );
+ final Ticket t4 = new Ticket( d );
+
+ final FactHandle fa = session.insert( a );
+ final FactHandle fb = session.insert( b );
+ final FactHandle fc = session.insert( c );
+ final FactHandle fd = session.insert( d );
+
+ final FactHandle ft1 = session.insert( t1 );
+ final FactHandle ft2 = session.insert( t2 );
+ final FactHandle ft3 = session.insert( t3 );
+ final FactHandle ft4 = session.insert( t4 );
+
+ session.fireAllRules();
+
+ t3.setStatus( "Done" );
+
+ session.update( ft3,
+ t3 );
+
+ try {
+ System.err.println( "[[ Sleeping 5 seconds ]]" );
+ Thread.sleep( 5000 );
+ } catch ( final InterruptedException e ) {
+ e.printStackTrace();
+ }
+
+ System.err.println( "[[ awake ]]" );
+
+ session.dispose();
+
+ logger.writeToDisk();
+ }
+
+ public static class Customer {
+ private String name;
+ private String subscription;
+
+ public Customer() {
+
+ }
+
+ public Customer(final String name,
+ final String subscription) {
+ super();
+ this.name = name;
+ this.subscription = subscription;
+ }
+
+ public String getName() {
+ return this.name;
+ }
+
+ public String getSubscription() {
+ return this.subscription;
+ }
+
+ public String toString() {
+ return "[Customer " + this.name + " : " + this.subscription + "]";
+ }
+
+ }
+
+ public static class Ticket {
+ private Customer customer;
+ private String status;
+
+ public Ticket() {
+
+ }
+
+ public Ticket(final Customer customer) {
+ super();
+ this.customer = customer;
+ this.status = "New";
+ }
+
+ public String getStatus() {
+ return this.status;
+ }
+
+ public void setStatus(final String status) {
+ this.status = status;
+ }
+
+ public Customer getCustomer() {
+ return this.customer;
+ }
+
+ public String toString() {
+ return "[Ticket " + this.customer + " : " + this.status + "]";
+ }
+
+ }
+
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/TroubleTicketExampleWithDSL.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/TroubleTicketExampleWithDSL.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/TroubleTicketExampleWithDSL.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,147 @@
+package org.drools.examples;
+
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+import org.drools.FactHandle;
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.audit.WorkingMemoryFileLogger;
+import org.drools.compiler.PackageBuilder;
+
+public class TroubleTicketExampleWithDSL {
+
+ /**
+ * @param args
+ */
+ public static void main(final String[] args) throws Exception {
+
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( getSource(),
+ getDSL() );
+
+ final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( builder.getPackage() );
+
+ final StatefulSession session = ruleBase.newStatefulSession();
+
+ final WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger( session );
+ logger.setFileName( "log/state" );
+
+ final Customer a = new Customer( "A",
+ "Gold" );
+ final Customer b = new Customer( "B",
+ "Platinum" );
+ final Customer c = new Customer( "C",
+ "Silver" );
+ final Customer d = new Customer( "D",
+ "Silver" );
+
+ final Ticket t1 = new Ticket( a );
+ final Ticket t2 = new Ticket( b );
+ final Ticket t3 = new Ticket( c );
+ final Ticket t4 = new Ticket( d );
+
+ final FactHandle fa = session.insert( a );
+ final FactHandle fb = session.insert( b );
+ final FactHandle fc = session.insert( c );
+ final FactHandle fd = session.insert( d );
+
+ final FactHandle ft1 = session.insert( t1 );
+ final FactHandle ft2 = session.insert( t2 );
+ final FactHandle ft3 = session.insert( t3 );
+ final FactHandle ft4 = session.insert( t4 );
+
+ session.fireAllRules();
+
+ t3.setStatus( "Done" );
+
+ session.update( ft3,
+ t3 );
+
+ try {
+ System.err.println( "[[ Sleeping 5 seconds ]]" );
+ Thread.sleep( 5000 );
+ } catch ( final InterruptedException e ) {
+ e.printStackTrace();
+ }
+
+ session.fireAllRules();
+
+ session.dispose();
+
+ logger.writeToDisk();
+ }
+
+ private static Reader getDSL() {
+ return new InputStreamReader( TroubleTicketExampleWithDSL.class.getResourceAsStream( "ticketing.dsl" ) );
+
+ }
+
+ private static InputStreamReader getSource() {
+ return new InputStreamReader( TroubleTicketExampleWithDSL.class.getResourceAsStream( "TroubleTicketWithDSL.drl" ) );
+ }
+
+ public static class Customer {
+ private String name;
+ private String subscription;
+
+ public Customer() {
+
+ }
+
+ public Customer(final String name,
+ final String subscription) {
+ super();
+ this.name = name;
+ this.subscription = subscription;
+ }
+
+ public String getName() {
+ return this.name;
+ }
+
+ public String getSubscription() {
+ return this.subscription;
+ }
+
+ public String toString() {
+ return "[Customer " + this.name + " : " + this.subscription + "]";
+ }
+
+ }
+
+ public static class Ticket {
+ private Customer customer;
+ private String status;
+
+ public Ticket() {
+
+ }
+
+ public Ticket(final Customer customer) {
+ super();
+ this.customer = customer;
+ this.status = "New";
+ }
+
+ public String getStatus() {
+ return this.status;
+ }
+
+ public void setStatus(final String status) {
+ this.status = status;
+ }
+
+ public Customer getCustomer() {
+ return this.customer;
+ }
+
+ public String toString() {
+ return "[Ticket " + this.customer + " : " + this.status + "]";
+ }
+
+ }
+
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/Cell.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/Cell.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/Cell.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,76 @@
+package org.drools.examples.conway;
+
+/**
+ * A <code>Cell</code> represents a single cell within a <code>CellGrid</code>.
+ * A cell may be either live or dead. <p/>
+ *
+ * @author <a href="mailto:brown_j at ociweb.com">Jeff Brown</a>
+ * @see CellState
+ * @see CellGrid
+ */
+public class Cell {
+
+ private CellState cellState = CellState.DEAD;
+
+ private int phase = Phase.DONE;
+
+ private int liveNeighbors;
+
+ private int col;
+
+ private int row;
+
+ public Cell(int col,
+ int row) {
+ this.col = col;
+ this.row = row;
+ }
+
+ public int getCol() {
+ return col;
+ }
+
+ public int getRow() {
+ return row;
+ }
+
+ public int getPhase() {
+ return this.phase;
+ }
+
+ public void setPhase(int phase) {
+ this.phase = phase;
+ }
+
+ public int getLiveNeighbors() {
+ return this.liveNeighbors;
+ }
+
+ public void setLiveNeighbors(int liveNeighbors) {
+ this.liveNeighbors = liveNeighbors;
+ }
+
+ /**
+ * @return this cell's current life state
+ * @see #queueNextCellState(org.drools.examples.conway.CellState)
+ * @see CellState
+ */
+ public CellState getCellState() {
+ return this.cellState;
+ }
+
+ /**
+ * Sets this cells state
+ *
+ * @param newState
+ * new state for this cell
+ * @see CellState
+ */
+ public void setCellState(final CellState newState) {
+ this.cellState = newState;
+ }
+
+ public String toString() {
+ return cellState + " col=" + this.col + " row=" + this.row + " phase '" + phase + "' liveNeighbors '" + liveNeighbors + "'";
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/CellGrid.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/CellGrid.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/CellGrid.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,185 @@
+package org.drools.examples.conway;
+
+import org.drools.RuleBase;
+import org.drools.StatefulSession;
+import org.drools.WorkingMemory;
+import org.drools.event.AgendaGroupPoppedEvent;
+import org.drools.event.DefaultAgendaEventListener;
+import org.drools.examples.conway.patterns.ConwayPattern;
+
+/**
+ * A <code>CellGrid</code> represents a grid of <code>Cell</code> objects.
+ * <p/>
+ *
+ * @author <a href="mailto:brown_j at ociweb.com">Jeff Brown</a>
+ * @see Cell
+ */
+public class CellGrid {
+
+ private final Cell[][] cells;
+
+ private StatefulSession session;
+
+ /**
+ * Constructs a CellGrid
+ *
+ * @param rows
+ * number of rows in the grid
+ * @param columns
+ * number of columns in the grid
+ */
+ public CellGrid(final int rows,
+ final int columns) {
+ this.cells = new Cell[rows][columns];
+
+ final RuleBase ruleBase = ConwayRuleBaseFactory.getRuleBase();
+ this.session = ruleBase.newStatefulSession();
+
+ DefaultAgendaEventListener listener = new DefaultAgendaEventListener() {
+ public void agendaGroupPopped(AgendaGroupPoppedEvent event,
+ WorkingMemory workingMemory) {
+// System.out.println( "popped AgendaGroup = '" + event.getAgendaGroup().getName() + "'" );
+// System.out.println( CellGrid.this.toString() );
+// System.out.println( "" );
+ }
+ };
+
+ this.session.addEventListener( listener );
+
+ this.session.insert( this );
+
+ // populate the array of Cells and hook each
+ // cell up with its neighbors...
+ for ( int row = 0; row < rows; row++ ) {
+ for ( int column = 0; column < columns; column++ ) {
+ final Cell newCell = new Cell( column,
+ row );
+ this.cells[row][column] = newCell;
+ this.session.insert( newCell );
+ }
+ }
+ this.session.setFocus( "register neighbor" );
+ this.session.fireAllRules();
+ }
+
+ /**
+ * @param row
+ * row of the requested cell
+ * @param column
+ * column of the requested cell
+ * @return the cell at the specified coordinates
+ * @see Cell
+ */
+ public Cell getCellAt(final int row,
+ final int column) {
+ return this.cells[row][column];
+ }
+
+ /**
+ * @return the number of rows in this grid
+ * @see #getNumberOfColumns()
+ */
+ public int getNumberOfRows() {
+ return this.cells.length;
+ }
+
+ /**
+ * @return the number of columns in this grid
+ * @see #getNumberOfRows()
+ */
+ public int getNumberOfColumns() {
+ return this.cells[0].length;
+ }
+
+ /**
+ * Moves this grid to its next generation
+ *
+ * @return <code>true</code> if the state changed, otherwise false
+ * @see #transitionState()
+ */
+ public boolean nextGeneration() {
+ //System.out.println( "next generation" );
+ session.setFocus( "calculate" );
+ session.setFocus( "kill" );
+ session.setFocus( "birth" );
+ session.setFocus( "reset calculate" );
+ session.setFocus( "rest" );
+ session.setFocus( "evaluate" );
+ session.fireAllRules();
+ return session.getAgenda().getAgendaGroup( "evaluate" ).size() != 0;
+ }
+
+ /**
+ * kills all cells in the grid
+ */
+ public void killAll() {
+ this.session.setFocus( "calculate" );
+ this.session.setFocus( "kill all" );
+ this.session.setFocus( "reset calculate" );
+ this.session.fireAllRules();
+ }
+
+ /**
+ * Populates the grid with a <code>ConwayPattern</code>
+ *
+ * @param pattern
+ * pattern to populate the grid with
+ * @see ConwayPattern
+ */
+ public void setPattern(final ConwayPattern pattern) {
+ final boolean[][] gridData = pattern.getPattern();
+ int gridWidth = gridData[0].length;
+ int gridHeight = gridData.length;
+
+ int columnOffset = 0;
+ int rowOffset = 0;
+
+ if ( gridWidth > getNumberOfColumns() ) {
+ gridWidth = getNumberOfColumns();
+ } else {
+ columnOffset = (getNumberOfColumns() - gridWidth) / 2;
+ }
+
+ if ( gridHeight > getNumberOfRows() ) {
+ gridHeight = getNumberOfRows();
+ } else {
+ rowOffset = (getNumberOfRows() - gridHeight) / 2;
+ }
+
+ killAll();
+
+ for ( int column = 0; column < gridWidth; column++ ) {
+ for ( int row = 0; row < gridHeight; row++ ) {
+ if ( gridData[row][column] ) {
+ final Cell cell = getCellAt( row + rowOffset,
+ column + columnOffset );
+ cell.setCellState( CellState.LIVE );
+ this.session.update( this.session.getFactHandle( cell ),
+ cell );
+ }
+ }
+ }
+ session.setFocus( "calculate" );
+ session.fireAllRules();
+ }
+
+ public void dispose() {
+ if ( this.session != null ) {
+ this.session.dispose();
+ }
+ }
+
+ public String toString() {
+ StringBuffer buf = new StringBuffer();
+
+ for ( int i = 0; i < this.cells.length; i++ ) {
+ for ( int j = 0; j < this.cells[i].length; j++ ) {
+ Cell cell = this.cells[i][j];
+ System.out.print( cell.getLiveNeighbors() + ((cell.getCellState() == CellState.DEAD) ? "D" : "L") + " " );
+ }
+ System.out.println( "" );
+ }
+
+ return buf.toString();
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/CellState.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/CellState.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/CellState.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,25 @@
+package org.drools.examples.conway;
+
+/**
+ * <code>CellState</code> enumerates all of the valid states that a Cell may
+ * be in.
+ *
+ * @author <a href="mailto:brown_j at ociweb.com">Jeff Brown</a>
+ * @see Cell
+ * @see CellGrid
+ */
+public class CellState {
+
+ public static final CellState LIVE = new CellState( "LIVE" );
+ public static final CellState DEAD = new CellState( "DEAD" );
+
+ private final String name;
+
+ private CellState(final String name) {
+ this.name = name;
+ }
+
+ public String toString() {
+ return "CellState: " + this.name;
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/ConwayApplicationProperties.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/ConwayApplicationProperties.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/ConwayApplicationProperties.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,26 @@
+package org.drools.examples.conway;
+
+import java.util.ResourceBundle;
+
+/**
+ * A utility class for retrieving application properties
+ *
+ * @author <a href="mailto:brown_j at ociweb.com">Jeff Brown</a>
+ */
+public class ConwayApplicationProperties {
+ private static final ConwayApplicationProperties ourInstance = new ConwayApplicationProperties();
+
+ public static ConwayApplicationProperties getInstance() {
+ return ConwayApplicationProperties.ourInstance;
+ }
+
+ private final ResourceBundle resources;
+
+ private ConwayApplicationProperties() {
+ this.resources = ResourceBundle.getBundle( "org.drools.examples.conway.conway" );
+ }
+
+ public static String getProperty(final String propertyName) {
+ return ConwayApplicationProperties.ourInstance.resources.getString( propertyName );
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/ConwayRuleBaseFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/ConwayRuleBaseFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/ConwayRuleBaseFactory.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,69 @@
+/**
+ *
+ */
+package org.drools.examples.conway;
+
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+import org.drools.RuleBase;
+import org.drools.compiler.PackageBuilder;
+import org.drools.rule.Package;
+
+/**
+ * @author <a href="mailto:brown_j at ociweb.com">Jeff Brown</a>
+ */
+public class ConwayRuleBaseFactory {
+
+ private static final ConwayRuleBaseFactory ourInstance = new ConwayRuleBaseFactory();
+
+ private RuleBase ruleBase;
+
+ public static ConwayRuleBaseFactory getInstance() {
+ return ConwayRuleBaseFactory.ourInstance;
+ }
+
+ private ConwayRuleBaseFactory() {
+ try {
+ /**
+ * Please note that this is the "low level" rule assembly API.
+ */
+ // private static RuleBase readRule() throws Exception {
+ // read in the source
+ final Reader source = new InputStreamReader( ConwayRuleBaseFactory.class.getResourceAsStream( "/org/drools/examples/conway/conway.drl" ) );
+
+ // optionally read in the DSL (if you are using it).
+ //final Reader dsl = new InputStreamReader( ConwayRuleBaseFactory.class.getResourceAsStream( "/org/drools/examples/conway/conway.dsl" ) );
+
+ // Use package builder to build up a rule package.
+ // An alternative lower level class called "DrlParser" can also be
+ // used...
+
+ final PackageBuilder builder = new PackageBuilder();
+
+ // this wil parse and compile in one step
+ // NOTE: There are 2 methods here, the one argument one is for
+ // normal DRL.
+ // builder.addPackageFromDrl( source );
+
+ // Use the following instead of above if you are using a DSL:
+ builder.addPackageFromDrl( source );//,
+ //dsl );
+
+
+
+ // get the compiled package (which is serializable)
+ final Package pkg = builder.getPackage();
+
+ // add the package to a rulebase (deploy the rule package).
+ this.ruleBase = org.drools.RuleBaseFactory.newRuleBase();
+ this.ruleBase.addPackage( pkg );
+ } catch ( final Exception e ) {
+ e.printStackTrace();
+ }
+ }
+
+ public static RuleBase getRuleBase() {
+ return ConwayRuleBaseFactory.ourInstance.ruleBase;
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/Neighbor.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/Neighbor.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/Neighbor.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,24 @@
+package org.drools.examples.conway;
+
+public class Neighbor {
+ private Cell cell;
+ private Cell neighbor;
+
+ public Neighbor(Cell cell, Cell neighbor) {
+ this.cell = cell;
+ this.neighbor = neighbor;
+ }
+
+ public Cell getCell() {
+ return cell;
+ }
+
+ public Cell getNeighbor() {
+ return neighbor;
+ }
+
+ public String toString() {
+ return "cell '"+ this.cell + "' neighbour '" + this.neighbor + "'";
+ }
+
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/Phase.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/Phase.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/Phase.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,8 @@
+package org.drools.examples.conway;
+
+public class Phase {
+ public static final int EVALUATE = 0;
+ public static final int KILL = 1;
+ public static final int BIRTH = 2;
+ public static final int DONE = 3;
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/Border.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/Border.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/Border.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,66 @@
+package org.drools.examples.conway.patterns;
+
+/**
+ * The Border <p/>
+ *
+ * @see ConwayPattern
+ * @see org.drools.examples.conway.CellGrid
+ * @author <a href="mailto:brown_j at ociweb.com">Jeff Brown</a>
+ */
+public class Border
+ implements
+ ConwayPattern {
+
+ private final boolean[][] grid = {{true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
+ {true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true}};
+
+ /**
+ * This method should return a 2 dimensional array of boolean that represent
+ * a conway grid, with <code>true</code> values in the positions where
+ * cells are alive
+ *
+ * @return array representing a conway grid
+ */
+ public boolean[][] getPattern() {
+ return this.grid;
+ }
+
+ /**
+ * @return the name of this pattern
+ */
+ public String getPatternName() {
+ return "Border";
+ }
+
+ public String toString() {
+ return getPatternName();
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/ConwayPattern.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/ConwayPattern.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/ConwayPattern.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,29 @@
+package org.drools.examples.conway.patterns;
+
+import java.io.Serializable;
+
+/**
+ * A <code>ConwayPattern</code> describes the state of a conway grid.
+ * <code>ConwayPattern</code> objects are useful for persisting grid states
+ * for recall later.
+ *
+ * @author <a href="mailto:brown_j at ociweb.com">Jeff Brown</a>
+ */
+public interface ConwayPattern
+ extends
+ Serializable {
+
+ /**
+ * This method should return a 2 dimensional array of boolean that represent
+ * a conway grid, with <code>true</code> values in the positions where
+ * cells are alive
+ *
+ * @return array representing a conway grid
+ */
+ public boolean[][] getPattern();
+
+ /**
+ * @return the name of this pattern
+ */
+ public String getPatternName();
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/Hi.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/Hi.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/Hi.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,42 @@
+package org.drools.examples.conway.patterns;
+
+/**
+ * The Hi pattern <p/>
+ *
+ * @see ConwayPattern
+ * @see org.drools.examples.conway.CellGrid
+ *
+ * @author <a href="mailto:brown_j at ociweb.com">Jeff Brown</a>
+ */
+public class Hi
+ implements
+ ConwayPattern {
+
+ private final boolean[][] grid = {{true, false, false, false, true, false, false, true, true, true, true, true, true, true}, {true, false, false, false, true, false, false, false, false, false, true, false, false, false},
+ {true, false, false, false, true, false, false, false, false, false, true, false, false, false}, {true, false, false, false, true, false, false, false, false, false, true, false, false, false},
+ {true, true, true, true, true, false, false, false, false, false, true, false, false, false}, {true, false, false, false, true, false, false, false, false, false, true, false, false, false},
+ {true, false, false, false, true, false, false, false, false, false, true, false, false, false}, {true, false, false, false, true, false, false, false, false, false, true, false, false, false},
+ {true, false, false, false, true, false, false, true, true, true, true, true, true, true}};
+
+ /**
+ * This method should return a 2 dimensional array of boolean that represent
+ * a conway grid, with <code>true</code> values in the positions where
+ * cells are alive
+ *
+ * @return array representing a conway grid
+ */
+ public boolean[][] getPattern() {
+ return this.grid;
+ }
+
+ /**
+ * @return the name of this pattern
+ */
+ public String getPatternName() {
+ return "Hi";
+ }
+
+ public String toString() {
+ return getPatternName();
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/Pentadecathalon.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/Pentadecathalon.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/Pentadecathalon.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,38 @@
+package org.drools.examples.conway.patterns;
+
+/**
+ * The Pentadecathalon <p/>
+ *
+ * @see ConwayPattern
+ * @see org.drools.examples.conway.CellGrid
+ *
+ * @author <a href="mailto:brown_j at ociweb.com">Jeff Brown</a>
+ */
+public class Pentadecathalon
+ implements
+ ConwayPattern {
+
+ private final boolean[][] grid = {{true, true, true, true, true, true, true, true, true}};
+
+ /**
+ * This method should return a 2 dimensional array of boolean that represent
+ * a conway grid, with <code>true</code> values in the positions where
+ * cells are alive
+ *
+ * @return array representing a conway grid
+ */
+ public boolean[][] getPattern() {
+ return this.grid;
+ }
+
+ /**
+ * @return the name of this pattern
+ */
+ public String getPatternName() {
+ return "Pentadecathalon";
+ }
+
+ public String toString() {
+ return getPatternName();
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/Pulsar.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/Pulsar.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/Pulsar.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,37 @@
+package org.drools.examples.conway.patterns;
+
+/**
+ * The Pulsar <p/>
+ *
+ * @see ConwayPattern
+ * @see org.drools.examples.conway.CellGrid
+ * @author <a href="mailto:brown_j at ociweb.com">Jeff Brown</a>
+ */
+public class Pulsar
+ implements
+ ConwayPattern {
+
+ private final boolean[][] grid = {{false, true, false}, {true, true, true}, {true, false, true}, {true, true, true}, {false, true, false}};
+
+ /**
+ * This method should return a 2 dimensional array of boolean that represent
+ * a conway grid, with <code>true</code> values in the positions where
+ * cells are alive
+ *
+ * @return array representing a conway grid
+ */
+ public boolean[][] getPattern() {
+ return this.grid;
+ }
+
+ /**
+ * @return the name of this pattern
+ */
+ public String getPatternName() {
+ return "Pulsar";
+ }
+
+ public String toString() {
+ return getPatternName();
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/SimpleGlider.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/SimpleGlider.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/patterns/SimpleGlider.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,38 @@
+package org.drools.examples.conway.patterns;
+
+/**
+ * Represents a simple glider
+ *
+ * @author <a href="mailto:brown_j at ociweb.com">Jeff Brown</a>
+ * @see ConwayPattern
+ * @see org.drools.examples.conway.CellGrid
+ */
+public class SimpleGlider
+ implements
+ ConwayPattern {
+
+ private final boolean[][] grid = {{false, true, false}, {true, false, false}, {true, true, true}};
+ //private final boolean[][] grid = {{false, false, false}, {true, true, false}, {false, false, false}};
+
+ /**
+ * This method should return a 2 dimensional array of boolean that represent
+ * a conway grid, with <code>true</code> values in the positions where
+ * cells are alive
+ *
+ * @return array representing a conway grid
+ */
+ public boolean[][] getPattern() {
+ return this.grid;
+ }
+
+ /**
+ * @return the name of this pattern
+ */
+ public String getPatternName() {
+ return "Simple Glider";
+ }
+
+ public String toString() {
+ return getPatternName();
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/ui/CellGridCanvas.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/ui/CellGridCanvas.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/ui/CellGridCanvas.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,196 @@
+package org.drools.examples.conway.ui;
+
+import java.awt.Canvas;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseMotionAdapter;
+
+import javax.swing.ImageIcon;
+
+import org.drools.examples.conway.Cell;
+import org.drools.examples.conway.CellGrid;
+import org.drools.examples.conway.CellState;
+
+/**
+ * @author <a href="mailto:brown_j at ociweb.com">Jeff Brown</a>
+ */
+public class CellGridCanvas extends Canvas {
+ private Image offScreenImage;
+ private Image backgroundImage;
+ private final int cellSize;
+ private final CellGrid cellGrid;
+ private final Image liveCellImage = new ImageIcon( CellGridCanvas.class.getResource( "/org/drools/examples/conway/liveCellImage.gif" ) ).getImage();
+
+ private static final Color BACKGROUND_COLOR = Color.gray;
+ private static final Color GRID_COLOR = CellGridCanvas.BACKGROUND_COLOR.brighter();
+
+ /**
+ * Constructs a CellGridCanvas.
+ *
+ * @param cellGrid
+ * the GoL cellgrid
+ */
+ public CellGridCanvas(final CellGrid cellGrid) {
+ this.cellGrid = cellGrid;
+ this.cellSize = this.liveCellImage.getWidth( this );
+
+ setBackground( CellGridCanvas.GRID_COLOR );
+
+ addMouseListener( new MouseAdapter() {
+ /**
+ * Invoked when a mouse button has been pressed on a component.
+ */
+ public void mousePressed(final MouseEvent e) {
+ toggleCellAt( e.getX(),
+ e.getY() );
+ }
+ } );
+
+ addMouseMotionListener( new MouseMotionAdapter() {
+
+ public void mouseDragged(final MouseEvent e) {
+ final Cell cell = getCellAtPoint( e.getX(),
+ e.getY() );
+ if ( cell != null ) {
+ cell.setCellState( CellState.LIVE );
+ repaint();
+ }
+ }
+ } );
+ }
+
+ private void toggleCellAt(final int x,
+ final int y) {
+ final Cell cell = getCellAtPoint( x,
+ y );
+ if ( cell != null ) {
+ if ( cell.getCellState() == CellState.LIVE ) {
+ cell.setCellState( CellState.DEAD );
+ } else {
+ cell.setCellState( CellState.LIVE );
+ }
+ repaint();
+ }
+ }
+
+ private Cell getCellAtPoint(final int x,
+ final int y) {
+ Cell cell = null;
+
+ final int column = x / this.cellSize;
+ final int row = y / this.cellSize;
+ final int numberOfColumns = this.cellGrid.getNumberOfColumns();
+ final int numberOfRows = this.cellGrid.getNumberOfRows();
+
+ if ( column >= 0 && column < numberOfColumns && row >= 0 && row < numberOfRows ) {
+ cell = this.cellGrid.getCellAt( row,
+ column );
+ }
+
+ return cell;
+ }
+
+ /**
+ * Use double buffering.
+ *
+ * @see java.awt.Component#update(java.awt.Graphics)
+ */
+ public void update(final Graphics g) {
+ final Dimension d = getSize();
+ if ( (this.offScreenImage == null) ) {
+ this.offScreenImage = createImage( d.width,
+ d.height );
+ }
+ paint( this.offScreenImage.getGraphics() );
+ g.drawImage( this.offScreenImage,
+ 0,
+ 0,
+ null );
+ }
+
+ /**
+ * Draw this generation.
+ *
+ * @see java.awt.Component#paint(java.awt.Graphics)
+ */
+ public void paint(final Graphics g) {
+ // Draw grid on background image, which is faster
+ final int numberOfColumns = this.cellGrid.getNumberOfColumns();
+ final int numberOfRows = this.cellGrid.getNumberOfRows();
+ if ( this.backgroundImage == null ) {
+ final Dimension d = getSize();
+ this.backgroundImage = createImage( d.width,
+ d.height );
+ final Graphics backgroundImageGraphics = this.backgroundImage.getGraphics();
+ // draw background (MSIE doesn't do that)
+ backgroundImageGraphics.setColor( getBackground() );
+ backgroundImageGraphics.fillRect( 0,
+ 0,
+ d.width,
+ d.height );
+ backgroundImageGraphics.setColor( CellGridCanvas.BACKGROUND_COLOR );
+ backgroundImageGraphics.fillRect( 0,
+ 0,
+ this.cellSize * numberOfColumns - 1,
+ this.cellSize * numberOfRows - 1 );
+ backgroundImageGraphics.setColor( CellGridCanvas.GRID_COLOR );
+ for ( int x = 1; x < numberOfColumns; x++ ) {
+ backgroundImageGraphics.drawLine( x * this.cellSize - 1,
+ 0,
+ x * this.cellSize - 1,
+ this.cellSize * numberOfRows - 1 );
+ }
+ for ( int y = 1; y < numberOfRows; y++ ) {
+ backgroundImageGraphics.drawLine( 0,
+ y * this.cellSize - 1,
+ this.cellSize * numberOfColumns - 1,
+ y * this.cellSize - 1 );
+ }
+ }
+ g.drawImage( this.backgroundImage,
+ 0,
+ 0,
+ null );
+
+ // draw populated cells
+ for ( int row = 0; row < numberOfRows; row++ ) {
+ for ( int column = 0; column < numberOfColumns; column++ ) {
+ final Cell cell = this.cellGrid.getCellAt( row,
+ column );
+ if ( cell.getCellState() == CellState.LIVE ) {
+ g.drawImage( this.liveCellImage,
+ column * this.cellSize,
+ row * this.cellSize,
+ this );
+ }
+ }
+ }
+ }
+
+ /**
+ * This is the preferred size.
+ *
+ * @see java.awt.Component#getPreferredSize()
+ */
+ public Dimension getPreferredSize() {
+ final int numberOfColumns = this.cellGrid.getNumberOfColumns();
+ final int numberOfRows = this.cellGrid.getNumberOfRows();
+ return new Dimension( this.cellSize * numberOfColumns,
+ this.cellSize * numberOfRows );
+ }
+
+ /**
+ * This is the minimum size (size of one cell).
+ *
+ * @see java.awt.Component#getMinimumSize()
+ */
+ public Dimension getMinimumSize() {
+ return new Dimension( this.cellSize,
+ this.cellSize );
+ }
+
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/ui/ConwayGUI.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/ui/ConwayGUI.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/conway/ui/ConwayGUI.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,258 @@
+package org.drools.examples.conway.ui;
+
+import java.awt.BorderLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.util.StringTokenizer;
+
+import javax.swing.BorderFactory;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.Timer;
+import javax.swing.border.Border;
+import javax.swing.border.EtchedBorder;
+
+import org.drools.examples.conway.CellGrid;
+import org.drools.examples.conway.ConwayApplicationProperties;
+import org.drools.examples.conway.patterns.ConwayPattern;
+
+import com.jgoodies.forms.builder.PanelBuilder;
+import com.jgoodies.forms.factories.ButtonBarFactory;
+import com.jgoodies.forms.layout.CellConstraints;
+import com.jgoodies.forms.layout.FormLayout;
+
+import foxtrot.Job;
+import foxtrot.Worker;
+
+/**
+ * @author <a href="mailto:brown_j at ociweb.com">Jeff Brown</a>
+ */
+public class ConwayGUI extends JPanel {
+ private final JButton nextGenerationButton;
+ private final JButton startStopButton;
+ private final JButton clearButton;
+ private final JComboBox patternSelector = new JComboBox();
+ private final Timer timer;
+ private final CellGrid grid;
+
+ public ConwayGUI() {
+ super( new BorderLayout() );
+ final String nextGenerationLabel = ConwayApplicationProperties.getProperty( "next.generation.label" );
+ this.nextGenerationButton = new JButton( nextGenerationLabel );
+ final String startLabel = ConwayApplicationProperties.getProperty( "start.label" );
+ this.startStopButton = new JButton( startLabel );
+ final String clearLabel = ConwayApplicationProperties.getProperty( "clear.label" );
+ this.clearButton = new JButton( clearLabel );
+ this.grid = new CellGrid( 30,
+ 30 );
+ final CellGridCanvas canvas = new CellGridCanvas( grid );
+ final JPanel panel = new JPanel( new BorderLayout() );
+ panel.add( BorderLayout.CENTER,
+ canvas );
+ final Border etchedBorder = BorderFactory.createEtchedBorder( EtchedBorder.LOWERED );
+ final Border outerBlankBorder = BorderFactory.createEmptyBorder( 5,
+ 5,
+ 5,
+ 5 );
+ final Border innerBlankBorder = BorderFactory.createEmptyBorder( 5,
+ 5,
+ 5,
+ 5 );
+ final Border border = BorderFactory.createCompoundBorder( BorderFactory.createCompoundBorder( outerBlankBorder,
+ etchedBorder ),
+ innerBlankBorder );
+ panel.setBorder( border );
+ add( BorderLayout.CENTER,
+ panel );
+ add( BorderLayout.EAST,
+ createControlPanel() );
+ this.nextGenerationButton.addActionListener( new ActionListener() {
+ public void actionPerformed(final ActionEvent e) {
+ Worker.post( new Job() {
+ public Object run() {
+ grid.nextGeneration();
+ return null;
+ }
+ } );
+ canvas.repaint();
+ }
+ } );
+ this.clearButton.addActionListener( new ActionListener() {
+ public void actionPerformed(final ActionEvent e) {
+ Worker.post( new Job() {
+ public Object run() {
+ grid.killAll();
+ return null;
+ }
+ } );
+ canvas.repaint();
+ }
+ } );
+
+ final ActionListener timerAction = new ActionListener() {
+ public void actionPerformed(ActionEvent ae) {
+ Worker.post( new Job() {
+ public Object run() {
+ if ( !grid.nextGeneration() ) {
+ stopTimer();
+ }
+ return null;
+ }
+ } );
+ canvas.repaint();
+ }
+ };
+ this.timer = new Timer( 500,
+ timerAction );
+ this.startStopButton.addActionListener( new ActionListener() {
+ public void actionPerformed(final ActionEvent e) {
+ if ( ConwayGUI.this.timer.isRunning() ) {
+ stopTimer();
+ } else {
+ startTimer();
+ }
+ }
+ } );
+
+ populatePatternSelector();
+
+ this.patternSelector.addActionListener( new ActionListener() {
+ public void actionPerformed(final ActionEvent e) {
+ final ConwayPattern pattern = (ConwayPattern) ConwayGUI.this.patternSelector.getSelectedItem();
+ if ( pattern != null ) {
+ grid.setPattern( pattern );
+ canvas.repaint();
+ }
+ }
+ } );
+
+ this.patternSelector.setSelectedIndex( -1 );
+ }
+
+ public void dispose() {
+ this.grid.dispose();
+ }
+ private void populatePatternSelector() {
+ final String patternClassNames = ConwayApplicationProperties.getProperty( "conway.pattern.classnames" );
+ final StringTokenizer tokenizer = new StringTokenizer( patternClassNames );
+
+ String className = null;
+ while ( tokenizer.hasMoreTokens() ) {
+ className = tokenizer.nextToken().trim();
+ try {
+ final Class clazz = Class.forName( className );
+ if ( ConwayPattern.class.isAssignableFrom( clazz ) ) {
+ this.patternSelector.addItem( clazz.newInstance() );
+ } else {
+ System.err.println( "Invalid pattern class name: " + className );
+ }
+ } catch ( final Exception e ) {
+ System.err.println( "An error occurred populating patterns: " );
+ e.printStackTrace();
+ }
+ }
+ }
+
+ private void startTimer() {
+ final String stopLabel = ConwayApplicationProperties.getProperty( "stop.label" );
+ this.startStopButton.setText( stopLabel );
+ this.nextGenerationButton.setEnabled( false );
+ this.clearButton.setEnabled( false );
+ this.patternSelector.setEnabled( false );
+ this.timer.start();
+ }
+
+ private void stopTimer() {
+ this.timer.stop();
+ final String startLabel = ConwayApplicationProperties.getProperty( "start.label" );
+ this.startStopButton.setText( startLabel );
+ this.nextGenerationButton.setEnabled( true );
+ this.clearButton.setEnabled( true );
+ this.patternSelector.setEnabled( true );
+ }
+
+ private JPanel createControlPanel() {
+ final FormLayout layout = new FormLayout( "pref, 3dlu, pref, 3dlu:grow",
+ "pref, 15dlu, pref, 15dlu, pref, 3dlu:grow, pref" );
+ final PanelBuilder builder = new PanelBuilder( layout );
+ final CellConstraints cc = new CellConstraints();
+
+ final String title = ConwayApplicationProperties.getProperty( "app.title" );
+ builder.addLabel( title,
+ cc.xywh( 1,
+ 1,
+ layout.getColumnCount(),
+ 1 ) );
+
+ final String info = ConwayApplicationProperties.getProperty( "app.description" );
+ builder.addLabel( info,
+ cc.xywh( 1,
+ 3,
+ layout.getColumnCount(),
+ 1 ) );
+
+ final String patternLabel = ConwayApplicationProperties.getProperty( "pattern.label" );
+ builder.addLabel( patternLabel,
+ cc.xy( 1,
+ 5 ) );
+
+ builder.add( this.patternSelector,
+ cc.xy( 3,
+ 5 ) );
+ final JPanel buttonPanel = ButtonBarFactory.buildLeftAlignedBar( this.nextGenerationButton,
+ this.startStopButton,
+ this.clearButton );
+ builder.add( buttonPanel,
+ cc.xywh( 1,
+ 7,
+ layout.getColumnCount(),
+ 1 ) );
+
+ final Border etchedBorder = BorderFactory.createEtchedBorder( EtchedBorder.LOWERED );
+ final Border outerBlankBorder = BorderFactory.createEmptyBorder( 5,
+ 5,
+ 5,
+ 5 );
+ final Border innerBlankBorder = BorderFactory.createEmptyBorder( 5,
+ 5,
+ 5,
+ 5 );
+ final Border border = BorderFactory.createCompoundBorder( BorderFactory.createCompoundBorder( outerBlankBorder,
+ etchedBorder ),
+ innerBlankBorder );
+ builder.setBorder( border );
+ return builder.getPanel();
+ }
+
+ public static void main(final String[] args) {
+ // if ( args.length != 1 )
+ // {
+ // System.out.println( "Usage: " + ConwayGUI.class.getName( ) + " [drl file]" );
+ // return;
+ // }
+ // System.out.println( "Using drl: " + args[0] );
+ //
+ // System.setProperty( "conway.drl.file",
+ // args[0] );
+
+ final ConwayGUI gui = new ConwayGUI();
+ final String appTitle = ConwayApplicationProperties.getProperty( "app.title" );
+ final JFrame f = new JFrame( appTitle );
+ f.setResizable( false );
+ f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
+ f.getContentPane().add( BorderLayout.CENTER,
+ gui );
+
+ f.addWindowListener( new WindowAdapter() {
+ public void windowClosing(WindowEvent we) {
+ gui.dispose();
+ }
+ } );
+ f.pack();
+ f.setVisible( true );
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/decisiontable/Driver.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/decisiontable/Driver.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/decisiontable/Driver.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,41 @@
+package org.drools.examples.decisiontable;
+
+/**
+ * This represents obviously a driver who is applying for an insurance Policy.
+ * @author Michael Neale
+ *
+ */
+public class Driver {
+
+ private String name = "Mr Joe Blogs";
+ private Integer age = new Integer(30);
+ private Integer priorClaims = new Integer(0);
+ private String locationRiskProfile = "LOW";
+
+ public Integer getAge() {
+ return age;
+ }
+ public void setAge(Integer age) {
+ this.age = age;
+ }
+ public String getLocationRiskProfile() {
+ return locationRiskProfile;
+ }
+ public void setLocationRiskProfile(String locationRiskProfile) {
+ this.locationRiskProfile = locationRiskProfile;
+ }
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public Integer getPriorClaims() {
+ return priorClaims;
+ }
+ public void setPriorClaims(Integer priorClaims) {
+ this.priorClaims = priorClaims;
+ }
+
+
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/decisiontable/Policy.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/decisiontable/Policy.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/decisiontable/Policy.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,49 @@
+package org.drools.examples.decisiontable;
+
+/**
+ * This represents a policy that a driver is applying for.
+ *
+ * Obviously in the real world, there are actuaries to mess things up, but lets just pretend there is
+ * some simple base price and discount that we can calculate with relatively simple rules !
+ *
+ * @author Michael Neale
+ */
+public class Policy {
+
+ private String type = "COMPREHENSIVE";
+ private boolean approved = false;
+ private int discountPercent = 0;
+ private int basePrice;
+
+ public boolean isApproved() {
+ return approved;
+ }
+ public void setApproved(boolean approved) {
+ this.approved = approved;
+ }
+ public int getDiscountPercent() {
+ return discountPercent;
+ }
+ public void setDiscountPercent(int discountPercent) {
+ this.discountPercent = discountPercent;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public void applyDiscount(int discount) {
+ discountPercent += discount;
+ }
+ public int getBasePrice() {
+ return basePrice;
+ }
+ public void setBasePrice(int basePrice) {
+ this.basePrice = basePrice;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/Field.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/Field.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/Field.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,49 @@
+package org.drools.examples.sudoku;
+/**
+ *
+ * @author <a href="mailto:michael.frandsen at syngenio.de">Michael Frandsen</a>
+ */
+public class Field {
+
+ private String value;
+ private int column;
+ private int row;
+ private int zone;
+ public Field() {
+ super();
+ }
+ public Field(String value, int column, int row, int zone) {
+ super();
+ this.value = value;
+ this.column = column;
+ this.row = row;
+ this.zone = zone;
+ }
+ public int getColumn() {
+ return column;
+ }
+ public void setColumn(int column) {
+ this.column = column;
+ }
+ public int getRow() {
+ return row;
+ }
+ public void setRow(int row) {
+ this.row = row;
+ }
+ public String getValue() {
+ return value;
+ }
+ public void setValue(String value) {
+ this.value = value;
+ }
+ public int getZone() {
+ return zone;
+ }
+ public void setZone(int zone) {
+ this.zone = zone;
+ }
+ public String toString(){
+ return "Value=" + value + " Column=" + column + " Row=" + row + " Zone=" + zone;
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/FieldGenerator.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/FieldGenerator.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/FieldGenerator.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,79 @@
+package org.drools.examples.sudoku;
+/**
+ * @author <a href="mailto:michael.frandsen at syngenio.de">Michael Frandsen</a>
+ */
+public class FieldGenerator {
+
+ private static FieldGenerator fieldGenerator = new FieldGenerator();
+ public static FieldGenerator getInstance(){
+ return fieldGenerator;
+ }
+ public int[][] getField(){
+ return new int[][]{{0, 5, 6, 8, 0, 1, 9, 4, 0},
+ {9, 0, 0, 6, 0, 5, 0, 0, 3},
+ {7, 0, 0, 4, 9, 3, 0, 0, 8},
+ {8, 9, 7, 0, 4, 0, 6, 3, 5},
+ {0, 0, 3, 9, 0, 6, 8, 0, 0},
+ {4, 6, 5, 0, 8, 0, 2, 9, 1},
+ {5, 0, 0, 2, 6, 9, 0, 0, 7},
+ {6, 0, 0, 5, 0, 4, 0, 0, 9},
+ {0, 4, 9, 7, 0, 8, 3, 5, 0}};
+ }
+ public int[][] getFieldMiddle(){
+ return new int[][]{{8, 4, 7, 0, 0, 0, 2, 5, 6},
+ {5, 0, 0, 0, 8, 0, 0, 0, 4},
+ {2, 0, 0, 0, 7, 0, 0, 0, 8},
+ {0, 0, 0, 3, 0, 8, 0, 0, 0},
+ {0, 5, 1, 0, 0, 0, 8, 7, 2},
+ {0, 0, 0, 5, 0, 7, 0, 0, 0},
+ {4, 0, 0, 0, 5, 0, 0, 0, 7},
+ {6, 0, 0, 0, 3, 0, 0, 0, 9},
+ {1, 3, 2, 0, 0, 0, 4, 8, 5}};
+ }
+ public int[][] getFieldHard(){
+ return new int[][]{{0, 0, 0, 0, 5, 1, 0, 8, 0},
+ {0, 8, 0, 0, 4, 0, 0, 0, 5},
+ {0, 0, 3, 0, 0, 0, 2, 0, 0},
+ {0, 0, 0, 0, 6, 0, 0, 0, 9},
+ {6, 7, 0, 4, 0, 9, 0, 1, 3},
+ {8, 0, 0, 0, 3, 0, 0, 0, 0},
+ {0, 0, 2, 0, 0, 0, 4, 0, 0},
+ {5, 0, 0, 0, 9, 0, 0, 2, 0},
+ {0, 9, 0, 7, 1, 0, 0, 0, 0}};
+ }
+
+ public int[][] getFieldHard2(){
+ return new int[][]{{0,0,0,6,0,0,1,0,0},
+ {0,0,0,0,0,5,0,0,6},
+ {5,0,7,0,0,0,2,3,0},
+ {0,8,0,9,0,7,0,0,0},
+ {9,3,0,0,0,0,0,6,7},
+ {0,0,0,4,0,6,0,1,0},
+ {0,7,4,0,0,0,9,0,1},
+ {8,0,0,7,0,0,0,0,0},
+ {0,0,3,0,0,8,0,0,0}};
+ }
+
+ public int[][] getFieldHard3(){
+ return new int[][]{{0,8,0,0,0,6,0,0,5},
+ {2,0,0,0,0,0,4,8,0},
+ {0,0,9,0,0,8,0,1,0},
+ {0,0,0,0,8,0,1,0,2},
+ {0,0,0,3,0,1,0,0,0},
+ {6,0,1,0,9,0,0,0,0},
+ {0,9,0,4,0,0,8,0,0},
+ {0,7,6,0,0,0,0,0,3},
+ {1,0,0,7,0,0,0,5,0}};
+ }
+ public int[][] getFieldHard4(){
+ return new int[][]{{0,0,0,0,0,4,0,9,5},
+ {6,7,0,5,0,0,0,1,0},
+ {0,0,0,6,0,9,0,0,0},
+ {0,2,0,0,0,0,4,0,0},
+ {8,1,0,0,0,0,0,7,2},
+ {0,0,7,0,0,0,0,8,0},
+ {0,0,0,3,0,5,0,0,0},
+ {0,6,0,0,0,1,0,5,8},
+ {7,3,0,9,0,0,0,0,0}};
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/PossibleValue.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/PossibleValue.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/PossibleValue.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,52 @@
+package org.drools.examples.sudoku;
+/**
+ * @author <a href="mailto:michael.frandsen at syngenio.de">Michael Frandsen</a>
+ */
+public class PossibleValue {
+
+ private String value;
+ private int column;
+ private int row;
+ private int zone;
+ public PossibleValue() {
+ super();
+ }
+ public PossibleValue(String value, int column, int row, int zone) {
+ super();
+ this.value = value;
+ this.column = column;
+ this.row = row;
+ this.zone = zone;
+ }
+ public PossibleValue(String value, Field field) {
+ super();
+ this.value = value;
+ this.column = field.getColumn();
+ this.row = field.getRow();
+ this.zone = field.getZone();
+ }
+ public int getColumn() {
+ return column;
+ }
+ public void setColumn(int column) {
+ this.column = column;
+ }
+ public int getRow() {
+ return row;
+ }
+ public void setRow(int row) {
+ this.row = row;
+ }
+ public String getValue() {
+ return value;
+ }
+ public void setValue(String value) {
+ this.value = value;
+ }
+ public int getZone() {
+ return zone;
+ }
+ public void setZone(int zone) {
+ this.zone = zone;
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/SudokuExample.java
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/SudokuExample.java (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/java/org/drools/examples/sudoku/SudokuExample.java 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,166 @@
+package org.drools.examples.sudoku;
+
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseConfiguration;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.compiler.PackageBuilder;
+import org.drools.rule.Package;
+
+/**
+ * This example shows, how a Sudoku puzzle can be solved using JBoss Rules
+ *
+ * @author <a href="mailto:michael.frandsen at syngenio.de">Michael Frandsen</a>
+ */
+public class SudokuExample {
+
+ public static void testWithInput(int[][] field) {
+ StatefulSession session = null;
+ try {
+ Collection fields = new ArrayList();
+ //create Fields for every element of the matrix
+ //Print Sudoku, which is to solve
+ for ( int i = 0; i < field.length; i++ ) {
+ String row = "{";
+ for ( int j = 0; j < field[i].length; j++ ) {
+ row += field[i][j] + ",";
+ fields.add( new Field( "" + field[i][j],
+ j + 1,
+ i + 1,
+ getZone( i,
+ j ) ) );
+ }
+ row += "}";
+ System.out.println( row );
+ }
+ //load up the rulebase
+ RuleBase ruleBase = readRule();
+ session = ruleBase.newStatefulSession();
+
+ //go !
+ Iterator iter = fields.iterator();
+
+ Collection handles = new ArrayList();
+ while ( iter.hasNext() ) {
+ handles.add( session.insert( iter.next() ) );
+ }
+ session.fireAllRules();
+
+ System.out.println( "Size: " + iteratorToList( session.iterateObjects() ).size() );
+
+ //Get Result
+ iter = session.iterateObjects();
+ //Copy the values of the fields into the matrix
+ while ( iter.hasNext() ) {
+ Object next = iter.next();
+ if ( next instanceof Field ) {
+ field[((Field) next).getRow() - 1][((Field) next).getColumn() - 1] = Integer.parseInt( ((Field) next).getValue() );
+ }
+ }
+
+ //Pr
+ for ( int i = 0; i < field.length; i++ ) {
+ String row = "{";
+ for ( int j = 0; j < field[i].length; j++ ) {
+ row += field[i][j] + ",";
+ fields.add( new Field( "" + field[i][j],
+ j + 1,
+ i + 1,
+ getZone( i,
+ j ) ) );
+ }
+ row += "}";
+ System.out.println( row );
+ }
+
+ } catch ( Throwable t ) {
+ t.printStackTrace();
+ } finally {
+ if ( session != null ) {
+ session.dispose();
+ }
+ }
+ }
+
+ public static final void main(String[] args) {
+ // testWithInput(FieldGenerator.getInstance().getField());
+ // testWithInput(FieldGenerator.getInstance().getFieldMiddle());
+ // testWithInput(FieldGenerator.getInstance().getFieldHard());
+ // testWithInput(FieldGenerator.getInstance().getFieldHard2());
+ // testWithInput(FieldGenerator.getInstance().getFieldHard3());
+ testWithInput( FieldGenerator.getInstance().getFieldHard4() );
+ }
+
+ private static int getZone(int row,
+ int column) {
+ if ( column < 3 && row < 3 ) {
+ return 1;
+ } else if ( column < 6 && row < 3 ) {
+ return 2;
+ } else if ( column < 9 && row < 3 ) {
+ return 3;
+ } else if ( column < 3 && row < 6 ) {
+ return 4;
+ } else if ( column < 6 && row < 6 ) {
+ return 5;
+ } else if ( column < 9 && row < 6 ) {
+ return 6;
+ } else if ( column < 3 ) {
+ return 7;
+ } else if ( column < 6 ) {
+ return 8;
+ } else if ( column < 9 ) {
+ return 9;
+ }
+ return 0;
+ }
+
+ /**
+ * Please note that this is the "low level" rule assembly API.
+ */
+ private static RuleBase readRule() throws Exception {
+ //read in the source
+ Reader source = new InputStreamReader( SudokuExample.class.getResourceAsStream( "sudoku.drl" ) );
+
+ //optionally read in the DSL (if you are using it).
+ //Reader dsl = new InputStreamReader( DroolsTest.class.getResourceAsStream( "/mylang.dsl" ) );
+
+ //Use package builder to build up a rule package.
+ //An alternative lower level class called "DrlParser" can also be used...
+
+ PackageBuilder builder = new PackageBuilder();
+
+ //this wil parse and compile in one step
+ //NOTE: There are 2 methods here, the one argument one is for normal DRL.
+ builder.addPackageFromDrl( source );
+
+ //Use the following instead of above if you are using a DSL:
+ //builder.addPackageFromDrl( source, dsl );
+
+ //get the compiled package (which is serializable)
+ Package pkg = builder.getPackage();
+
+ //add the package to a rulebase (deploy the rule package).
+ RuleBaseConfiguration conf = new RuleBaseConfiguration();
+ conf.setRemoveIdentities( true );
+ RuleBase ruleBase = RuleBaseFactory.newRuleBase( RuleBase.RETEOO,
+ conf );
+ ruleBase.addPackage( pkg );
+ return ruleBase;
+ }
+
+ private static List iteratorToList(Iterator it) {
+ List list = new ArrayList();
+ for ( ; it.hasNext(); ) {
+ list.add( it.next() );
+ }
+ return list;
+ }
+}
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/manners128.dat
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/manners128.dat (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/manners128.dat 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,440 @@
+(guest (name 1) (sex m) (hobby h2) )
+(guest (name 1) (sex m) (hobby h3) )
+(guest (name 1) (sex m) (hobby h1) )
+(guest (name 1) (sex m) (hobby h4) )
+(guest (name 1) (sex m) (hobby h5) )
+(guest (name 2) (sex f) (hobby h3) )
+(guest (name 2) (sex f) (hobby h2) )
+(guest (name 2) (sex f) (hobby h1) )
+(guest (name 2) (sex f) (hobby h4) )
+(guest (name 2) (sex f) (hobby h5) )
+(guest (name 3) (sex f) (hobby h5) )
+(guest (name 3) (sex f) (hobby h4) )
+(guest (name 3) (sex f) (hobby h2) )
+(guest (name 4) (sex m) (hobby h3) )
+(guest (name 4) (sex m) (hobby h2) )
+(guest (name 4) (sex m) (hobby h1) )
+(guest (name 4) (sex m) (hobby h4) )
+(guest (name 5) (sex m) (hobby h2) )
+(guest (name 5) (sex m) (hobby h5) )
+(guest (name 5) (sex m) (hobby h3) )
+(guest (name 6) (sex f) (hobby h1) )
+(guest (name 6) (sex f) (hobby h4) )
+(guest (name 6) (sex f) (hobby h2) )
+(guest (name 6) (sex f) (hobby h5) )
+(guest (name 6) (sex f) (hobby h3) )
+(guest (name 7) (sex f) (hobby h1) )
+(guest (name 7) (sex f) (hobby h2) )
+(guest (name 7) (sex f) (hobby h3) )
+(guest (name 7) (sex f) (hobby h5) )
+(guest (name 8) (sex m) (hobby h3) )
+(guest (name 8) (sex m) (hobby h5) )
+(guest (name 9) (sex m) (hobby h3) )
+(guest (name 9) (sex m) (hobby h5) )
+(guest (name 9) (sex m) (hobby h2) )
+(guest (name 9) (sex m) (hobby h4) )
+(guest (name 10) (sex m) (hobby h2) )
+(guest (name 10) (sex m) (hobby h3) )
+(guest (name 10) (sex m) (hobby h4) )
+(guest (name 10) (sex m) (hobby h5) )
+(guest (name 10) (sex m) (hobby h1) )
+(guest (name 11) (sex m) (hobby h2) )
+(guest (name 11) (sex m) (hobby h4) )
+(guest (name 11) (sex m) (hobby h5) )
+(guest (name 11) (sex m) (hobby h1) )
+(guest (name 12) (sex f) (hobby h3) )
+(guest (name 12) (sex f) (hobby h5) )
+(guest (name 12) (sex f) (hobby h2) )
+(guest (name 13) (sex f) (hobby h5) )
+(guest (name 13) (sex f) (hobby h1) )
+(guest (name 14) (sex m) (hobby h3) )
+(guest (name 14) (sex m) (hobby h5) )
+(guest (name 14) (sex m) (hobby h1) )
+(guest (name 14) (sex m) (hobby h4) )
+(guest (name 15) (sex m) (hobby h5) )
+(guest (name 15) (sex m) (hobby h2) )
+(guest (name 15) (sex m) (hobby h1) )
+(guest (name 15) (sex m) (hobby h3) )
+(guest (name 15) (sex m) (hobby h4) )
+(guest (name 16) (sex m) (hobby h2) )
+(guest (name 16) (sex m) (hobby h5) )
+(guest (name 16) (sex m) (hobby h4) )
+(guest (name 17) (sex m) (hobby h4) )
+(guest (name 17) (sex m) (hobby h3) )
+(guest (name 18) (sex f) (hobby h2) )
+(guest (name 18) (sex f) (hobby h4) )
+(guest (name 18) (sex f) (hobby h5) )
+(guest (name 18) (sex f) (hobby h1) )
+(guest (name 19) (sex m) (hobby h5) )
+(guest (name 19) (sex m) (hobby h2) )
+(guest (name 20) (sex m) (hobby h2) )
+(guest (name 20) (sex m) (hobby h3) )
+(guest (name 21) (sex m) (hobby h4) )
+(guest (name 21) (sex m) (hobby h3) )
+(guest (name 21) (sex m) (hobby h2) )
+(guest (name 21) (sex m) (hobby h1) )
+(guest (name 22) (sex m) (hobby h1) )
+(guest (name 22) (sex m) (hobby h2) )
+(guest (name 22) (sex m) (hobby h4) )
+(guest (name 23) (sex f) (hobby h4) )
+(guest (name 23) (sex f) (hobby h5) )
+(guest (name 23) (sex f) (hobby h2) )
+(guest (name 24) (sex f) (hobby h4) )
+(guest (name 24) (sex f) (hobby h3) )
+(guest (name 24) (sex f) (hobby h2) )
+(guest (name 24) (sex f) (hobby h1) )
+(guest (name 24) (sex f) (hobby h5) )
+(guest (name 25) (sex m) (hobby h4) )
+(guest (name 25) (sex m) (hobby h5) )
+(guest (name 26) (sex m) (hobby h1) )
+(guest (name 26) (sex m) (hobby h2) )
+(guest (name 27) (sex m) (hobby h3) )
+(guest (name 27) (sex m) (hobby h5) )
+(guest (name 27) (sex m) (hobby h2) )
+(guest (name 28) (sex f) (hobby h4) )
+(guest (name 28) (sex f) (hobby h1) )
+(guest (name 28) (sex f) (hobby h3) )
+(guest (name 28) (sex f) (hobby h2) )
+(guest (name 28) (sex f) (hobby h5) )
+(guest (name 29) (sex f) (hobby h3) )
+(guest (name 29) (sex f) (hobby h5) )
+(guest (name 30) (sex m) (hobby h2) )
+(guest (name 30) (sex m) (hobby h1) )
+(guest (name 31) (sex m) (hobby h3) )
+(guest (name 31) (sex m) (hobby h1) )
+(guest (name 31) (sex m) (hobby h4) )
+(guest (name 32) (sex f) (hobby h2) )
+(guest (name 32) (sex f) (hobby h1) )
+(guest (name 32) (sex f) (hobby h5) )
+(guest (name 33) (sex f) (hobby h5) )
+(guest (name 33) (sex f) (hobby h4) )
+(guest (name 34) (sex m) (hobby h4) )
+(guest (name 34) (sex m) (hobby h5) )
+(guest (name 34) (sex m) (hobby h2) )
+(guest (name 35) (sex f) (hobby h3) )
+(guest (name 35) (sex f) (hobby h1) )
+(guest (name 35) (sex f) (hobby h4) )
+(guest (name 35) (sex f) (hobby h5) )
+(guest (name 35) (sex f) (hobby h2) )
+(guest (name 36) (sex m) (hobby h1) )
+(guest (name 36) (sex m) (hobby h4) )
+(guest (name 36) (sex m) (hobby h2) )
+(guest (name 36) (sex m) (hobby h3) )
+(guest (name 37) (sex f) (hobby h4) )
+(guest (name 37) (sex f) (hobby h2) )
+(guest (name 37) (sex f) (hobby h1) )
+(guest (name 38) (sex f) (hobby h3) )
+(guest (name 38) (sex f) (hobby h1) )
+(guest (name 38) (sex f) (hobby h2) )
+(guest (name 38) (sex f) (hobby h4) )
+(guest (name 39) (sex m) (hobby h5) )
+(guest (name 39) (sex m) (hobby h2) )
+(guest (name 40) (sex m) (hobby h2) )
+(guest (name 40) (sex m) (hobby h3) )
+(guest (name 41) (sex f) (hobby h5) )
+(guest (name 41) (sex f) (hobby h3) )
+(guest (name 42) (sex m) (hobby h5) )
+(guest (name 42) (sex m) (hobby h4) )
+(guest (name 43) (sex m) (hobby h3) )
+(guest (name 43) (sex m) (hobby h4) )
+(guest (name 43) (sex m) (hobby h5) )
+(guest (name 44) (sex f) (hobby h2) )
+(guest (name 44) (sex f) (hobby h4) )
+(guest (name 44) (sex f) (hobby h3) )
+(guest (name 44) (sex f) (hobby h1) )
+(guest (name 45) (sex m) (hobby h2) )
+(guest (name 45) (sex m) (hobby h4) )
+(guest (name 46) (sex m) (hobby h4) )
+(guest (name 46) (sex m) (hobby h1) )
+(guest (name 46) (sex m) (hobby h5) )
+(guest (name 47) (sex m) (hobby h2) )
+(guest (name 47) (sex m) (hobby h5) )
+(guest (name 47) (sex m) (hobby h4) )
+(guest (name 48) (sex f) (hobby h3) )
+(guest (name 48) (sex f) (hobby h1) )
+(guest (name 49) (sex m) (hobby h1) )
+(guest (name 49) (sex m) (hobby h5) )
+(guest (name 49) (sex m) (hobby h4) )
+(guest (name 49) (sex m) (hobby h3) )
+(guest (name 49) (sex m) (hobby h2) )
+(guest (name 50) (sex m) (hobby h2) )
+(guest (name 50) (sex m) (hobby h4) )
+(guest (name 50) (sex m) (hobby h3) )
+(guest (name 51) (sex m) (hobby h1) )
+(guest (name 51) (sex m) (hobby h2) )
+(guest (name 51) (sex m) (hobby h5) )
+(guest (name 51) (sex m) (hobby h4) )
+(guest (name 52) (sex f) (hobby h5) )
+(guest (name 52) (sex f) (hobby h3) )
+(guest (name 52) (sex f) (hobby h1) )
+(guest (name 52) (sex f) (hobby h4) )
+(guest (name 53) (sex f) (hobby h5) )
+(guest (name 53) (sex f) (hobby h1) )
+(guest (name 53) (sex f) (hobby h4) )
+(guest (name 53) (sex f) (hobby h2) )
+(guest (name 53) (sex f) (hobby h3) )
+(guest (name 54) (sex f) (hobby h1) )
+(guest (name 54) (sex f) (hobby h3) )
+(guest (name 55) (sex m) (hobby h2) )
+(guest (name 55) (sex m) (hobby h4) )
+(guest (name 56) (sex m) (hobby h2) )
+(guest (name 56) (sex m) (hobby h3) )
+(guest (name 57) (sex f) (hobby h2) )
+(guest (name 57) (sex f) (hobby h1) )
+(guest (name 57) (sex f) (hobby h4) )
+(guest (name 58) (sex m) (hobby h5) )
+(guest (name 58) (sex m) (hobby h3) )
+(guest (name 58) (sex m) (hobby h2) )
+(guest (name 58) (sex m) (hobby h1) )
+(guest (name 58) (sex m) (hobby h4) )
+(guest (name 59) (sex f) (hobby h2) )
+(guest (name 59) (sex f) (hobby h3) )
+(guest (name 59) (sex f) (hobby h5) )
+(guest (name 60) (sex f) (hobby h4) )
+(guest (name 60) (sex f) (hobby h2) )
+(guest (name 60) (sex f) (hobby h3) )
+(guest (name 60) (sex f) (hobby h5) )
+(guest (name 61) (sex m) (hobby h1) )
+(guest (name 61) (sex m) (hobby h2) )
+(guest (name 61) (sex m) (hobby h4) )
+(guest (name 61) (sex m) (hobby h3) )
+(guest (name 62) (sex f) (hobby h3) )
+(guest (name 62) (sex f) (hobby h2) )
+(guest (name 62) (sex f) (hobby h5) )
+(guest (name 62) (sex f) (hobby h4) )
+(guest (name 62) (sex f) (hobby h1) )
+(guest (name 63) (sex f) (hobby h2) )
+(guest (name 63) (sex f) (hobby h3) )
+(guest (name 63) (sex f) (hobby h4) )
+(guest (name 63) (sex f) (hobby h1) )
+(guest (name 63) (sex f) (hobby h5) )
+(guest (name 64) (sex f) (hobby h2) )
+(guest (name 64) (sex f) (hobby h4) )
+(guest (name 64) (sex f) (hobby h1) )
+(guest (name 64) (sex f) (hobby h5) )
+(guest (name 64) (sex f) (hobby h3) )
+(guest (name 65) (sex m) (hobby h5) )
+(guest (name 65) (sex m) (hobby h3) )
+(guest (name 65) (sex m) (hobby h2) )
+(guest (name 65) (sex m) (hobby h1) )
+(guest (name 65) (sex m) (hobby h4) )
+(guest (name 66) (sex f) (hobby h5) )
+(guest (name 66) (sex f) (hobby h3) )
+(guest (name 66) (sex f) (hobby h4) )
+(guest (name 67) (sex f) (hobby h1) )
+(guest (name 67) (sex f) (hobby h4) )
+(guest (name 68) (sex m) (hobby h4) )
+(guest (name 68) (sex m) (hobby h2) )
+(guest (name 68) (sex m) (hobby h1) )
+(guest (name 68) (sex m) (hobby h5) )
+(guest (name 69) (sex m) (hobby h3) )
+(guest (name 69) (sex m) (hobby h4) )
+(guest (name 69) (sex m) (hobby h1) )
+(guest (name 70) (sex f) (hobby h3) )
+(guest (name 70) (sex f) (hobby h5) )
+(guest (name 70) (sex f) (hobby h1) )
+(guest (name 70) (sex f) (hobby h4) )
+(guest (name 70) (sex f) (hobby h2) )
+(guest (name 71) (sex m) (hobby h3) )
+(guest (name 71) (sex m) (hobby h1) )
+(guest (name 71) (sex m) (hobby h4) )
+(guest (name 72) (sex m) (hobby h4) )
+(guest (name 72) (sex m) (hobby h3) )
+(guest (name 72) (sex m) (hobby h1) )
+(guest (name 73) (sex f) (hobby h4) )
+(guest (name 73) (sex f) (hobby h1) )
+(guest (name 73) (sex f) (hobby h3) )
+(guest (name 74) (sex f) (hobby h1) )
+(guest (name 74) (sex f) (hobby h4) )
+(guest (name 74) (sex f) (hobby h2) )
+(guest (name 74) (sex f) (hobby h5) )
+(guest (name 74) (sex f) (hobby h3) )
+(guest (name 75) (sex f) (hobby h4) )
+(guest (name 75) (sex f) (hobby h2) )
+(guest (name 76) (sex f) (hobby h5) )
+(guest (name 76) (sex f) (hobby h4) )
+(guest (name 76) (sex f) (hobby h3) )
+(guest (name 76) (sex f) (hobby h2) )
+(guest (name 76) (sex f) (hobby h1) )
+(guest (name 77) (sex m) (hobby h1) )
+(guest (name 77) (sex m) (hobby h5) )
+(guest (name 78) (sex m) (hobby h5) )
+(guest (name 78) (sex m) (hobby h1) )
+(guest (name 79) (sex f) (hobby h1) )
+(guest (name 79) (sex f) (hobby h3) )
+(guest (name 79) (sex f) (hobby h4) )
+(guest (name 79) (sex f) (hobby h2) )
+(guest (name 79) (sex f) (hobby h5) )
+(guest (name 80) (sex m) (hobby h5) )
+(guest (name 80) (sex m) (hobby h1) )
+(guest (name 80) (sex m) (hobby h2) )
+(guest (name 80) (sex m) (hobby h4) )
+(guest (name 81) (sex m) (hobby h4) )
+(guest (name 81) (sex m) (hobby h1) )
+(guest (name 82) (sex m) (hobby h3) )
+(guest (name 82) (sex m) (hobby h4) )
+(guest (name 82) (sex m) (hobby h1) )
+(guest (name 82) (sex m) (hobby h2) )
+(guest (name 82) (sex m) (hobby h5) )
+(guest (name 83) (sex f) (hobby h1) )
+(guest (name 83) (sex f) (hobby h3) )
+(guest (name 83) (sex f) (hobby h4) )
+(guest (name 84) (sex m) (hobby h3) )
+(guest (name 84) (sex m) (hobby h4) )
+(guest (name 85) (sex f) (hobby h4) )
+(guest (name 85) (sex f) (hobby h1) )
+(guest (name 86) (sex m) (hobby h3) )
+(guest (name 86) (sex m) (hobby h4) )
+(guest (name 87) (sex m) (hobby h5) )
+(guest (name 87) (sex m) (hobby h4) )
+(guest (name 87) (sex m) (hobby h2) )
+(guest (name 87) (sex m) (hobby h3) )
+(guest (name 88) (sex m) (hobby h2) )
+(guest (name 88) (sex m) (hobby h5) )
+(guest (name 88) (sex m) (hobby h3) )
+(guest (name 88) (sex m) (hobby h1) )
+(guest (name 88) (sex m) (hobby h4) )
+(guest (name 89) (sex f) (hobby h5) )
+(guest (name 89) (sex f) (hobby h2) )
+(guest (name 89) (sex f) (hobby h4) )
+(guest (name 89) (sex f) (hobby h1) )
+(guest (name 90) (sex m) (hobby h2) )
+(guest (name 90) (sex m) (hobby h4) )
+(guest (name 90) (sex m) (hobby h5) )
+(guest (name 91) (sex f) (hobby h2) )
+(guest (name 91) (sex f) (hobby h3) )
+(guest (name 91) (sex f) (hobby h5) )
+(guest (name 91) (sex f) (hobby h1) )
+(guest (name 91) (sex f) (hobby h4) )
+(guest (name 92) (sex f) (hobby h3) )
+(guest (name 92) (sex f) (hobby h1) )
+(guest (name 92) (sex f) (hobby h2) )
+(guest (name 92) (sex f) (hobby h5) )
+(guest (name 93) (sex f) (hobby h3) )
+(guest (name 93) (sex f) (hobby h1) )
+(guest (name 93) (sex f) (hobby h2) )
+(guest (name 94) (sex f) (hobby h2) )
+(guest (name 94) (sex f) (hobby h5) )
+(guest (name 95) (sex f) (hobby h3) )
+(guest (name 95) (sex f) (hobby h4) )
+(guest (name 96) (sex m) (hobby h1) )
+(guest (name 96) (sex m) (hobby h4) )
+(guest (name 96) (sex m) (hobby h2) )
+(guest (name 96) (sex m) (hobby h5) )
+(guest (name 96) (sex m) (hobby h3) )
+(guest (name 97) (sex f) (hobby h4) )
+(guest (name 97) (sex f) (hobby h2) )
+(guest (name 97) (sex f) (hobby h5) )
+(guest (name 98) (sex m) (hobby h5) )
+(guest (name 98) (sex m) (hobby h4) )
+(guest (name 99) (sex f) (hobby h2) )
+(guest (name 99) (sex f) (hobby h5) )
+(guest (name 100) (sex m) (hobby h2) )
+(guest (name 100) (sex m) (hobby h3) )
+(guest (name 100) (sex m) (hobby h5) )
+(guest (name 100) (sex m) (hobby h4) )
+(guest (name 101) (sex f) (hobby h2) )
+(guest (name 101) (sex f) (hobby h1) )
+(guest (name 101) (sex f) (hobby h5) )
+(guest (name 101) (sex f) (hobby h3) )
+(guest (name 101) (sex f) (hobby h4) )
+(guest (name 102) (sex f) (hobby h2) )
+(guest (name 102) (sex f) (hobby h1) )
+(guest (name 102) (sex f) (hobby h5) )
+(guest (name 102) (sex f) (hobby h3) )
+(guest (name 102) (sex f) (hobby h4) )
+(guest (name 103) (sex m) (hobby h2) )
+(guest (name 103) (sex m) (hobby h1) )
+(guest (name 103) (sex m) (hobby h4) )
+(guest (name 103) (sex m) (hobby h3) )
+(guest (name 103) (sex m) (hobby h5) )
+(guest (name 104) (sex m) (hobby h5) )
+(guest (name 104) (sex m) (hobby h3) )
+(guest (name 104) (sex m) (hobby h4) )
+(guest (name 104) (sex m) (hobby h1) )
+(guest (name 104) (sex m) (hobby h2) )
+(guest (name 105) (sex f) (hobby h4) )
+(guest (name 105) (sex f) (hobby h2) )
+(guest (name 106) (sex f) (hobby h4) )
+(guest (name 106) (sex f) (hobby h5) )
+(guest (name 106) (sex f) (hobby h1) )
+(guest (name 107) (sex f) (hobby h3) )
+(guest (name 107) (sex f) (hobby h1) )
+(guest (name 107) (sex f) (hobby h2) )
+(guest (name 107) (sex f) (hobby h5) )
+(guest (name 107) (sex f) (hobby h4) )
+(guest (name 108) (sex f) (hobby h4) )
+(guest (name 108) (sex f) (hobby h5) )
+(guest (name 108) (sex f) (hobby h1) )
+(guest (name 108) (sex f) (hobby h2) )
+(guest (name 108) (sex f) (hobby h3) )
+(guest (name 109) (sex f) (hobby h1) )
+(guest (name 109) (sex f) (hobby h2) )
+(guest (name 110) (sex m) (hobby h5) )
+(guest (name 110) (sex m) (hobby h4) )
+(guest (name 110) (sex m) (hobby h1) )
+(guest (name 110) (sex m) (hobby h2) )
+(guest (name 111) (sex f) (hobby h3) )
+(guest (name 111) (sex f) (hobby h2) )
+(guest (name 112) (sex f) (hobby h4) )
+(guest (name 112) (sex f) (hobby h3) )
+(guest (name 112) (sex f) (hobby h5) )
+(guest (name 112) (sex f) (hobby h2) )
+(guest (name 112) (sex f) (hobby h1) )
+(guest (name 113) (sex f) (hobby h1) )
+(guest (name 113) (sex f) (hobby h3) )
+(guest (name 113) (sex f) (hobby h5) )
+(guest (name 113) (sex f) (hobby h2) )
+(guest (name 114) (sex m) (hobby h3) )
+(guest (name 114) (sex m) (hobby h2) )
+(guest (name 115) (sex m) (hobby h2) )
+(guest (name 115) (sex m) (hobby h1) )
+(guest (name 115) (sex m) (hobby h5) )
+(guest (name 115) (sex m) (hobby h4) )
+(guest (name 116) (sex m) (hobby h3) )
+(guest (name 116) (sex m) (hobby h4) )
+(guest (name 116) (sex m) (hobby h5) )
+(guest (name 116) (sex m) (hobby h1) )
+(guest (name 117) (sex f) (hobby h4) )
+(guest (name 117) (sex f) (hobby h5) )
+(guest (name 117) (sex f) (hobby h2) )
+(guest (name 118) (sex f) (hobby h2) )
+(guest (name 118) (sex f) (hobby h4) )
+(guest (name 118) (sex f) (hobby h3) )
+(guest (name 119) (sex m) (hobby h5) )
+(guest (name 119) (sex m) (hobby h3) )
+(guest (name 120) (sex m) (hobby h5) )
+(guest (name 120) (sex m) (hobby h1) )
+(guest (name 120) (sex m) (hobby h3) )
+(guest (name 120) (sex m) (hobby h2) )
+(guest (name 120) (sex m) (hobby h4) )
+(guest (name 121) (sex f) (hobby h4) )
+(guest (name 121) (sex f) (hobby h2) )
+(guest (name 121) (sex f) (hobby h3) )
+(guest (name 121) (sex f) (hobby h5) )
+(guest (name 122) (sex m) (hobby h1) )
+(guest (name 122) (sex m) (hobby h2) )
+(guest (name 122) (sex m) (hobby h5) )
+(guest (name 123) (sex m) (hobby h2) )
+(guest (name 123) (sex m) (hobby h3) )
+(guest (name 123) (sex m) (hobby h1) )
+(guest (name 123) (sex m) (hobby h5) )
+(guest (name 124) (sex f) (hobby h2) )
+(guest (name 124) (sex f) (hobby h3) )
+(guest (name 124) (sex f) (hobby h4) )
+(guest (name 125) (sex f) (hobby h3) )
+(guest (name 125) (sex f) (hobby h5) )
+(guest (name 125) (sex f) (hobby h2) )
+(guest (name 125) (sex f) (hobby h4) )
+(guest (name 126) (sex f) (hobby h2) )
+(guest (name 126) (sex f) (hobby h3) )
+(guest (name 126) (sex f) (hobby h1) )
+(guest (name 126) (sex f) (hobby h4) )
+(guest (name 127) (sex f) (hobby h5) )
+(guest (name 127) (sex f) (hobby h1) )
+(guest (name 128) (sex f) (hobby h2) )
+(guest (name 128) (sex f) (hobby h4) )
+(guest (name 128) (sex f) (hobby h1) )
+(guest (name 128) (sex f) (hobby h3) )
+(last_seat (seat 128) )
+(context (state start) )
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/manners16.dat
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/manners16.dat (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/manners16.dat 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,42 @@
+(guest (name n1) (sex f) (hobby h3))
+(guest (name n1) (sex f) (hobby h1))
+(guest (name n1) (sex f) (hobby h2))
+(guest (name n2) (sex f) (hobby h3))
+(guest (name n2) (sex f) (hobby h2))
+(guest (name n3) (sex m) (hobby h1))
+(guest (name n3) (sex m) (hobby h3))
+(guest (name n4) (sex m) (hobby h2))
+(guest (name n4) (sex m) (hobby h1))
+(guest (name n5) (sex m) (hobby h2))
+(guest (name n5) (sex m) (hobby h3))
+(guest (name n6) (sex m) (hobby h2))
+(guest (name n6) (sex m) (hobby h1))
+(guest (name n7) (sex f) (hobby h2))
+(guest (name n7) (sex f) (hobby h1))
+(guest (name n7) (sex f) (hobby h3))
+(guest (name n8) (sex f) (hobby h3))
+(guest (name n8) (sex f) (hobby h2))
+(guest (name n9) (sex f) (hobby h1))
+(guest (name n9) (sex f) (hobby h3))
+(guest (name n9) (sex f) (hobby h2))
+(guest (name n10) (sex m) (hobby h2))
+(guest (name n10) (sex m) (hobby h3))
+(guest (name n11) (sex m) (hobby h3))
+(guest (name n11) (sex m) (hobby h2))
+(guest (name n11) (sex m) (hobby h1))
+(guest (name n12) (sex m) (hobby h3))
+(guest (name n12) (sex m) (hobby h1))
+(guest (name n13) (sex m) (hobby h2))
+(guest (name n13) (sex m) (hobby h3))
+(guest (name n13) (sex m) (hobby h1))
+(guest (name n14) (sex f) (hobby h3))
+(guest (name n14) (sex f) (hobby h1))
+(guest (name n15) (sex f) (hobby h3))
+(guest (name n15) (sex f) (hobby h1))
+(guest (name n15) (sex f) (hobby h2))
+(guest (name n16) (sex f) (hobby h3))
+(guest (name n16) (sex f) (hobby h2))
+(guest (name n16) (sex f) (hobby h1))
+(last_seat (seat 16))
+
+(context (state start))
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/manners32.dat
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/manners32.dat (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/manners32.dat 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,84 @@
+(guest (name n1) (sex m) (hobby h1))
+(guest (name n1) (sex m) (hobby h3))
+(guest (name n2) (sex f) (hobby h3))
+(guest (name n2) (sex f) (hobby h2))
+(guest (name n2) (sex f) (hobby h1))
+(guest (name n3) (sex f) (hobby h1))
+(guest (name n3) (sex f) (hobby h2))
+(guest (name n4) (sex f) (hobby h3))
+(guest (name n4) (sex f) (hobby h1))
+(guest (name n5) (sex f) (hobby h1))
+(guest (name n5) (sex f) (hobby h2))
+(guest (name n6) (sex m) (hobby h1))
+(guest (name n6) (sex m) (hobby h2))
+(guest (name n6) (sex m) (hobby h3))
+(guest (name n7) (sex f) (hobby h2))
+(guest (name n7) (sex f) (hobby h1))
+(guest (name n7) (sex f) (hobby h3))
+(guest (name n8) (sex f) (hobby h1))
+(guest (name n8) (sex f) (hobby h3))
+(guest (name n8) (sex f) (hobby h2))
+(guest (name n9) (sex f) (hobby h1))
+(guest (name n9) (sex f) (hobby h3))
+(guest (name n9) (sex f) (hobby h2))
+(guest (name n10) (sex m) (hobby h2))
+(guest (name n10) (sex m) (hobby h1))
+(guest (name n11) (sex m) (hobby h2))
+(guest (name n11) (sex m) (hobby h1))
+(guest (name n12) (sex m) (hobby h3))
+(guest (name n12) (sex m) (hobby h2))
+(guest (name n13) (sex m) (hobby h1))
+(guest (name n13) (sex m) (hobby h3))
+(guest (name n14) (sex m) (hobby h3))
+(guest (name n14) (sex m) (hobby h2))
+(guest (name n15) (sex f) (hobby h2))
+(guest (name n15) (sex f) (hobby h1))
+(guest (name n15) (sex f) (hobby h3))
+(guest (name n16) (sex f) (hobby h3))
+(guest (name n16) (sex f) (hobby h2))
+(guest (name n16) (sex f) (hobby h1))
+(guest (name n17) (sex m) (hobby h3))
+(guest (name n17) (sex m) (hobby h2))
+(guest (name n18) (sex f) (hobby h2))
+(guest (name n18) (sex f) (hobby h1))
+(guest (name n19) (sex f) (hobby h1))
+(guest (name n19) (sex f) (hobby h2))
+(guest (name n19) (sex f) (hobby h3))
+(guest (name n20) (sex f) (hobby h1))
+(guest (name n20) (sex f) (hobby h2))
+(guest (name n20) (sex f) (hobby h3))
+(guest (name n21) (sex m) (hobby h2))
+(guest (name n21) (sex m) (hobby h3))
+(guest (name n21) (sex m) (hobby h1))
+(guest (name n22) (sex f) (hobby h1))
+(guest (name n22) (sex f) (hobby h2))
+(guest (name n22) (sex f) (hobby h3))
+(guest (name n23) (sex f) (hobby h3))
+(guest (name n23) (sex f) (hobby h1))
+(guest (name n23) (sex f) (hobby h2))
+(guest (name n24) (sex m) (hobby h1))
+(guest (name n24) (sex m) (hobby h3))
+(guest (name n25) (sex f) (hobby h3))
+(guest (name n25) (sex f) (hobby h2))
+(guest (name n25) (sex f) (hobby h1))
+(guest (name n26) (sex f) (hobby h3))
+(guest (name n26) (sex f) (hobby h2))
+(guest (name n26) (sex f) (hobby h1))
+(guest (name n27) (sex m) (hobby h3))
+(guest (name n27) (sex m) (hobby h1))
+(guest (name n27) (sex m) (hobby h2))
+(guest (name n28) (sex m) (hobby h3))
+(guest (name n28) (sex m) (hobby h1))
+(guest (name n29) (sex m) (hobby h3))
+(guest (name n29) (sex m) (hobby h2))
+(guest (name n29) (sex m) (hobby h1))
+(guest (name n30) (sex m) (hobby h2))
+(guest (name n30) (sex m) (hobby h1))
+(guest (name n30) (sex m) (hobby h3))
+(guest (name n31) (sex m) (hobby h2))
+(guest (name n31) (sex m) (hobby h1))
+(guest (name n32) (sex m) (hobby h1))
+(guest (name n32) (sex m) (hobby h3))
+(guest (name n32) (sex m) (hobby h2))
+(last_seat (seat 32))
+(context (state start))
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/manners5.dat
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/manners5.dat (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/manners5.dat 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,11 @@
+(guest (name n1) (sex m) (hobby h1) )
+(guest (name n2) (sex f) (hobby h1) )
+(guest (name n2) (sex f) (hobby h3) )
+(guest (name n3) (sex m) (hobby h3) )
+(guest (name n3) (sex m) (hobby h1) )
+(guest (name n4) (sex f) (hobby h1) )
+(guest (name n4) (sex f) (hobby h3) )
+(guest (name n5) (sex f) (hobby h2) )
+(guest (name n5) (sex f) (hobby h1) )
+(last_seat (seat 5) )
+(context (state start))
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/manners64.dat
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/manners64.dat (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/manners64.dat 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,169 @@
+(guest (name 1) (sex m) (hobby h2) )
+(guest (name 1) (sex m) (hobby h1) )
+(guest (name 1) (sex m) (hobby h3) )
+(guest (name 2) (sex f) (hobby h2) )
+(guest (name 2) (sex f) (hobby h1) )
+(guest (name 2) (sex f) (hobby h3) )
+(guest (name 3) (sex m) (hobby h3) )
+(guest (name 3) (sex m) (hobby h2) )
+(guest (name 4) (sex m) (hobby h3) )
+(guest (name 4) (sex m) (hobby h2) )
+(guest (name 4) (sex m) (hobby h1) )
+(guest (name 5) (sex m) (hobby h2) )
+(guest (name 5) (sex m) (hobby h1) )
+(guest (name 5) (sex m) (hobby h3) )
+(guest (name 6) (sex m) (hobby h2) )
+(guest (name 6) (sex m) (hobby h3) )
+(guest (name 6) (sex m) (hobby h1) )
+(guest (name 7) (sex f) (hobby h1) )
+(guest (name 7) (sex f) (hobby h2) )
+(guest (name 7) (sex f) (hobby h3) )
+(guest (name 8) (sex m) (hobby h3) )
+(guest (name 8) (sex m) (hobby h1) )
+(guest (name 9) (sex m) (hobby h2) )
+(guest (name 9) (sex m) (hobby h3) )
+(guest (name 9) (sex m) (hobby h1) )
+(guest (name 10) (sex m) (hobby h3) )
+(guest (name 10) (sex m) (hobby h2) )
+(guest (name 10) (sex m) (hobby h1) )
+(guest (name 11) (sex m) (hobby h1) )
+(guest (name 11) (sex m) (hobby h3) )
+(guest (name 11) (sex m) (hobby h2) )
+(guest (name 12) (sex f) (hobby h3) )
+(guest (name 12) (sex f) (hobby h1) )
+(guest (name 12) (sex f) (hobby h2) )
+(guest (name 13) (sex m) (hobby h2) )
+(guest (name 13) (sex m) (hobby h3) )
+(guest (name 14) (sex m) (hobby h1) )
+(guest (name 14) (sex m) (hobby h2) )
+(guest (name 15) (sex m) (hobby h2) )
+(guest (name 15) (sex m) (hobby h3) )
+(guest (name 15) (sex m) (hobby h1) )
+(guest (name 16) (sex f) (hobby h2) )
+(guest (name 16) (sex f) (hobby h3) )
+(guest (name 17) (sex f) (hobby h3) )
+(guest (name 17) (sex f) (hobby h2) )
+(guest (name 18) (sex m) (hobby h1) )
+(guest (name 18) (sex m) (hobby h3) )
+(guest (name 18) (sex m) (hobby h2) )
+(guest (name 19) (sex f) (hobby h3) )
+(guest (name 19) (sex f) (hobby h1) )
+(guest (name 20) (sex f) (hobby h1) )
+(guest (name 20) (sex f) (hobby h3) )
+(guest (name 20) (sex f) (hobby h2) )
+(guest (name 21) (sex m) (hobby h2) )
+(guest (name 21) (sex m) (hobby h3) )
+(guest (name 22) (sex m) (hobby h2) )
+(guest (name 22) (sex m) (hobby h3) )
+(guest (name 23) (sex f) (hobby h1) )
+(guest (name 23) (sex f) (hobby h2) )
+(guest (name 24) (sex f) (hobby h3) )
+(guest (name 24) (sex f) (hobby h1) )
+(guest (name 24) (sex f) (hobby h2) )
+(guest (name 25) (sex f) (hobby h3) )
+(guest (name 25) (sex f) (hobby h1) )
+(guest (name 25) (sex f) (hobby h2) )
+(guest (name 26) (sex m) (hobby h2) )
+(guest (name 26) (sex m) (hobby h1) )
+(guest (name 26) (sex m) (hobby h3) )
+(guest (name 27) (sex f) (hobby h2) )
+(guest (name 27) (sex f) (hobby h3) )
+(guest (name 27) (sex f) (hobby h1) )
+(guest (name 28) (sex m) (hobby h1) )
+(guest (name 28) (sex m) (hobby h2) )
+(guest (name 29) (sex f) (hobby h2) )
+(guest (name 29) (sex f) (hobby h3) )
+(guest (name 29) (sex f) (hobby h1) )
+(guest (name 30) (sex f) (hobby h2) )
+(guest (name 30) (sex f) (hobby h1) )
+(guest (name 30) (sex f) (hobby h3) )
+(guest (name 31) (sex m) (hobby h1) )
+(guest (name 31) (sex m) (hobby h2) )
+(guest (name 31) (sex m) (hobby h3) )
+(guest (name 32) (sex m) (hobby h1) )
+(guest (name 32) (sex m) (hobby h2) )
+(guest (name 33) (sex m) (hobby h2) )
+(guest (name 33) (sex m) (hobby h3) )
+(guest (name 33) (sex m) (hobby h1) )
+(guest (name 34) (sex f) (hobby h2) )
+(guest (name 34) (sex f) (hobby h1) )
+(guest (name 34) (sex f) (hobby h3) )
+(guest (name 35) (sex f) (hobby h2) )
+(guest (name 35) (sex f) (hobby h3) )
+(guest (name 36) (sex m) (hobby h2) )
+(guest (name 36) (sex m) (hobby h1) )
+(guest (name 37) (sex m) (hobby h2) )
+(guest (name 37) (sex m) (hobby h1) )
+(guest (name 38) (sex f) (hobby h1) )
+(guest (name 38) (sex f) (hobby h3) )
+(guest (name 38) (sex f) (hobby h2) )
+(guest (name 39) (sex m) (hobby h3) )
+(guest (name 39) (sex m) (hobby h1) )
+(guest (name 39) (sex m) (hobby h2) )
+(guest (name 40) (sex f) (hobby h1) )
+(guest (name 40) (sex f) (hobby h2) )
+(guest (name 40) (sex f) (hobby h3) )
+(guest (name 41) (sex m) (hobby h2) )
+(guest (name 41) (sex m) (hobby h1) )
+(guest (name 41) (sex m) (hobby h3) )
+(guest (name 42) (sex m) (hobby h3) )
+(guest (name 42) (sex m) (hobby h1) )
+(guest (name 43) (sex m) (hobby h1) )
+(guest (name 43) (sex m) (hobby h3) )
+(guest (name 43) (sex m) (hobby h2) )
+(guest (name 44) (sex m) (hobby h3) )
+(guest (name 44) (sex m) (hobby h1) )
+(guest (name 44) (sex m) (hobby h2) )
+(guest (name 45) (sex m) (hobby h1) )
+(guest (name 45) (sex m) (hobby h2) )
+(guest (name 46) (sex f) (hobby h1) )
+(guest (name 46) (sex f) (hobby h2) )
+(guest (name 46) (sex f) (hobby h3) )
+(guest (name 47) (sex m) (hobby h1) )
+(guest (name 47) (sex m) (hobby h2) )
+(guest (name 48) (sex f) (hobby h3) )
+(guest (name 48) (sex f) (hobby h2) )
+(guest (name 49) (sex m) (hobby h3) )
+(guest (name 49) (sex m) (hobby h2) )
+(guest (name 50) (sex m) (hobby h2) )
+(guest (name 50) (sex m) (hobby h3) )
+(guest (name 51) (sex f) (hobby h2) )
+(guest (name 51) (sex f) (hobby h1) )
+(guest (name 51) (sex f) (hobby h3) )
+(guest (name 52) (sex m) (hobby h1) )
+(guest (name 52) (sex m) (hobby h2) )
+(guest (name 52) (sex m) (hobby h3) )
+(guest (name 53) (sex f) (hobby h2) )
+(guest (name 53) (sex f) (hobby h1) )
+(guest (name 54) (sex f) (hobby h1) )
+(guest (name 54) (sex f) (hobby h2) )
+(guest (name 54) (sex f) (hobby h3) )
+(guest (name 55) (sex f) (hobby h1) )
+(guest (name 55) (sex f) (hobby h2) )
+(guest (name 55) (sex f) (hobby h3) )
+(guest (name 56) (sex f) (hobby h2) )
+(guest (name 56) (sex f) (hobby h1) )
+(guest (name 56) (sex f) (hobby h3) )
+(guest (name 57) (sex f) (hobby h3) )
+(guest (name 57) (sex f) (hobby h2) )
+(guest (name 57) (sex f) (hobby h1) )
+(guest (name 58) (sex f) (hobby h3) )
+(guest (name 58) (sex f) (hobby h1) )
+(guest (name 58) (sex f) (hobby h2) )
+(guest (name 59) (sex f) (hobby h1) )
+(guest (name 59) (sex f) (hobby h2) )
+(guest (name 59) (sex f) (hobby h3) )
+(guest (name 60) (sex f) (hobby h3) )
+(guest (name 60) (sex f) (hobby h1) )
+(guest (name 61) (sex f) (hobby h3) )
+(guest (name 61) (sex f) (hobby h2) )
+(guest (name 62) (sex f) (hobby h1) )
+(guest (name 62) (sex f) (hobby h2) )
+(guest (name 62) (sex f) (hobby h3) )
+(guest (name 63) (sex f) (hobby h3) )
+(guest (name 63) (sex f) (hobby h1) )
+(guest (name 63) (sex f) (hobby h2) )
+(guest (name 64) (sex f) (hobby h3) )
+(guest (name 64) (sex f) (hobby h2) )
+(last_seat (seat 64) )
+(context (state start))
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/manners8.dat
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/manners8.dat (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/manners/manners8.dat 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,21 @@
+(guest (name n1) (sex m) (hobby h3) )
+(guest (name n1) (sex m) (hobby h2) )
+(guest (name n2) (sex m) (hobby h2) )
+(guest (name n2) (sex m) (hobby h3) )
+(guest (name n3) (sex m) (hobby h1) )
+(guest (name n3) (sex m) (hobby h2) )
+(guest (name n3) (sex m) (hobby h3) )
+(guest (name n4) (sex f) (hobby h3) )
+(guest (name n4) (sex f) (hobby h2) )
+(guest (name n5) (sex f) (hobby h1) )
+(guest (name n5) (sex f) (hobby h2) )
+(guest (name n5) (sex f) (hobby h3) )
+(guest (name n6) (sex f) (hobby h3) )
+(guest (name n6) (sex f) (hobby h1) )
+(guest (name n6) (sex f) (hobby h2) )
+(guest (name n7) (sex f) (hobby h3) )
+(guest (name n7) (sex f) (hobby h2) )
+(guest (name n8) (sex m) (hobby h3) )
+(guest (name n8) (sex m) (hobby h1) )
+(last_seat (seat 8) )
+(context (state start))
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltz/waltz12.dat
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltz/waltz12.dat (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltz/waltz12.dat 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,985 @@
+(make stage ^value duplicate)
+(make line ^p1 50003 ^p2 60003)
+(make line ^p1 30005 ^p2 30006)
+(make line ^p1 80005 ^p2 80006)
+(make line ^p1 50008 ^p2 60008)
+(make line ^p1 0 ^p2 20000)
+(make line ^p1 20000 ^p2 30000)
+(make line ^p1 30000 ^p2 40000)
+(make line ^p1 0 ^p2 2)
+(make line ^p1 2 ^p2 3)
+(make line ^p1 3 ^p2 4)
+(make line ^p1 4 ^p2 40004)
+(make line ^p1 40004 ^p2 40000)
+(make line ^p1 40000 ^p2 50001)
+(make line ^p1 50001 ^p2 50002)
+(make line ^p1 50002 ^p2 50003)
+(make line ^p1 50003 ^p2 50005)
+(make line ^p1 50005 ^p2 40004)
+(make line ^p1 50005 ^p2 30005)
+(make line ^p1 30005 ^p2 20005)
+(make line ^p1 20005 ^p2 10005)
+(make line ^p1 10005 ^p2 4)
+(make line ^p1 60000 ^p2 80000)
+(make line ^p1 80000 ^p2 90000)
+(make line ^p1 90000 ^p2 100000)
+(make line ^p1 60000 ^p2 60002)
+(make line ^p1 60002 ^p2 60003)
+(make line ^p1 60003 ^p2 60004)
+(make line ^p1 60004 ^p2 100004)
+(make line ^p1 100004 ^p2 100000)
+(make line ^p1 100000 ^p2 110001)
+(make line ^p1 110001 ^p2 110002)
+(make line ^p1 110002 ^p2 110003)
+(make line ^p1 110003 ^p2 110005)
+(make line ^p1 110005 ^p2 100004)
+(make line ^p1 110005 ^p2 90005)
+(make line ^p1 90005 ^p2 80005)
+(make line ^p1 80005 ^p2 70005)
+(make line ^p1 70005 ^p2 60004)
+(make line ^p1 6 ^p2 20006)
+(make line ^p1 20006 ^p2 30006)
+(make line ^p1 30006 ^p2 40006)
+(make line ^p1 6 ^p2 8)
+(make line ^p1 8 ^p2 9)
+(make line ^p1 9 ^p2 10)
+(make line ^p1 10 ^p2 40010)
+(make line ^p1 40010 ^p2 40006)
+(make line ^p1 40006 ^p2 50007)
+(make line ^p1 50007 ^p2 50008)
+(make line ^p1 50008 ^p2 50009)
+(make line ^p1 50009 ^p2 50011)
+(make line ^p1 50011 ^p2 40010)
+(make line ^p1 50011 ^p2 30011)
+(make line ^p1 30011 ^p2 20011)
+(make line ^p1 20011 ^p2 10011)
+(make line ^p1 10011 ^p2 10)
+(make line ^p1 60006 ^p2 80006)
+(make line ^p1 80006 ^p2 90006)
+(make line ^p1 90006 ^p2 100006)
+(make line ^p1 60006 ^p2 60008)
+(make line ^p1 60008 ^p2 60009)
+(make line ^p1 60009 ^p2 60010)
+(make line ^p1 60010 ^p2 100010)
+(make line ^p1 100010 ^p2 100006)
+(make line ^p1 100006 ^p2 110007)
+(make line ^p1 110007 ^p2 110008)
+(make line ^p1 110008 ^p2 110009)
+(make line ^p1 110009 ^p2 110011)
+(make line ^p1 110011 ^p2 100010)
+(make line ^p1 110011 ^p2 90011)
+(make line ^p1 90011 ^p2 80011)
+(make line ^p1 80011 ^p2 70011)
+(make line ^p1 70011 ^p2 60010)
+(make line ^p1 170003 ^p2 180003)
+(make line ^p1 150005 ^p2 150006)
+(make line ^p1 200005 ^p2 200006)
+(make line ^p1 170008 ^p2 180008)
+(make line ^p1 120000 ^p2 140000)
+(make line ^p1 140000 ^p2 150000)
+(make line ^p1 150000 ^p2 160000)
+(make line ^p1 120000 ^p2 120002)
+(make line ^p1 120002 ^p2 120003)
+(make line ^p1 120003 ^p2 120004)
+(make line ^p1 120004 ^p2 160004)
+(make line ^p1 160004 ^p2 160000)
+(make line ^p1 160000 ^p2 170001)
+(make line ^p1 170001 ^p2 170002)
+(make line ^p1 170002 ^p2 170003)
+(make line ^p1 170003 ^p2 170005)
+(make line ^p1 170005 ^p2 160004)
+(make line ^p1 170005 ^p2 150005)
+(make line ^p1 150005 ^p2 140005)
+(make line ^p1 140005 ^p2 130005)
+(make line ^p1 130005 ^p2 120004)
+(make line ^p1 180000 ^p2 200000)
+(make line ^p1 200000 ^p2 210000)
+(make line ^p1 210000 ^p2 220000)
+(make line ^p1 180000 ^p2 180002)
+(make line ^p1 180002 ^p2 180003)
+(make line ^p1 180003 ^p2 180004)
+(make line ^p1 180004 ^p2 220004)
+(make line ^p1 220004 ^p2 220000)
+(make line ^p1 220000 ^p2 230001)
+(make line ^p1 230001 ^p2 230002)
+(make line ^p1 230002 ^p2 230003)
+(make line ^p1 230003 ^p2 230005)
+(make line ^p1 230005 ^p2 220004)
+(make line ^p1 230005 ^p2 210005)
+(make line ^p1 210005 ^p2 200005)
+(make line ^p1 200005 ^p2 190005)
+(make line ^p1 190005 ^p2 180004)
+(make line ^p1 120006 ^p2 140006)
+(make line ^p1 140006 ^p2 150006)
+(make line ^p1 150006 ^p2 160006)
+(make line ^p1 120006 ^p2 120008)
+(make line ^p1 120008 ^p2 120009)
+(make line ^p1 120009 ^p2 120010)
+(make line ^p1 120010 ^p2 160010)
+(make line ^p1 160010 ^p2 160006)
+(make line ^p1 160006 ^p2 170007)
+(make line ^p1 170007 ^p2 170008)
+(make line ^p1 170008 ^p2 170009)
+(make line ^p1 170009 ^p2 170011)
+(make line ^p1 170011 ^p2 160010)
+(make line ^p1 170011 ^p2 150011)
+(make line ^p1 150011 ^p2 140011)
+(make line ^p1 140011 ^p2 130011)
+(make line ^p1 130011 ^p2 120010)
+(make line ^p1 180006 ^p2 200006)
+(make line ^p1 200006 ^p2 210006)
+(make line ^p1 210006 ^p2 220006)
+(make line ^p1 180006 ^p2 180008)
+(make line ^p1 180008 ^p2 180009)
+(make line ^p1 180009 ^p2 180010)
+(make line ^p1 180010 ^p2 220010)
+(make line ^p1 220010 ^p2 220006)
+(make line ^p1 220006 ^p2 230007)
+(make line ^p1 230007 ^p2 230008)
+(make line ^p1 230008 ^p2 230009)
+(make line ^p1 230009 ^p2 230011)
+(make line ^p1 230011 ^p2 220010)
+(make line ^p1 230011 ^p2 210011)
+(make line ^p1 210011 ^p2 200011)
+(make line ^p1 200011 ^p2 190011)
+(make line ^p1 190011 ^p2 180010)
+(make line ^p1 110003 ^p2 120003)
+(make line ^p1 90005 ^p2 90006)
+(make line ^p1 140005 ^p2 140006)
+(make line ^p1 110008 ^p2 120008)
+(make line ^p1 290003 ^p2 300003)
+(make line ^p1 270005 ^p2 270006)
+(make line ^p1 320005 ^p2 320006)
+(make line ^p1 290008 ^p2 300008)
+(make line ^p1 240000 ^p2 260000)
+(make line ^p1 260000 ^p2 270000)
+(make line ^p1 270000 ^p2 280000)
+(make line ^p1 240000 ^p2 240002)
+(make line ^p1 240002 ^p2 240003)
+(make line ^p1 240003 ^p2 240004)
+(make line ^p1 240004 ^p2 280004)
+(make line ^p1 280004 ^p2 280000)
+(make line ^p1 280000 ^p2 290001)
+(make line ^p1 290001 ^p2 290002)
+(make line ^p1 290002 ^p2 290003)
+(make line ^p1 290003 ^p2 290005)
+(make line ^p1 290005 ^p2 280004)
+(make line ^p1 290005 ^p2 270005)
+(make line ^p1 270005 ^p2 260005)
+(make line ^p1 260005 ^p2 250005)
+(make line ^p1 250005 ^p2 240004)
+(make line ^p1 300000 ^p2 320000)
+(make line ^p1 320000 ^p2 330000)
+(make line ^p1 330000 ^p2 340000)
+(make line ^p1 300000 ^p2 300002)
+(make line ^p1 300002 ^p2 300003)
+(make line ^p1 300003 ^p2 300004)
+(make line ^p1 300004 ^p2 340004)
+(make line ^p1 340004 ^p2 340000)
+(make line ^p1 340000 ^p2 350001)
+(make line ^p1 350001 ^p2 350002)
+(make line ^p1 350002 ^p2 350003)
+(make line ^p1 350003 ^p2 350005)
+(make line ^p1 350005 ^p2 340004)
+(make line ^p1 350005 ^p2 330005)
+(make line ^p1 330005 ^p2 320005)
+(make line ^p1 320005 ^p2 310005)
+(make line ^p1 310005 ^p2 300004)
+(make line ^p1 240006 ^p2 260006)
+(make line ^p1 260006 ^p2 270006)
+(make line ^p1 270006 ^p2 280006)
+(make line ^p1 240006 ^p2 240008)
+(make line ^p1 240008 ^p2 240009)
+(make line ^p1 240009 ^p2 240010)
+(make line ^p1 240010 ^p2 280010)
+(make line ^p1 280010 ^p2 280006)
+(make line ^p1 280006 ^p2 290007)
+(make line ^p1 290007 ^p2 290008)
+(make line ^p1 290008 ^p2 290009)
+(make line ^p1 290009 ^p2 290011)
+(make line ^p1 290011 ^p2 280010)
+(make line ^p1 290011 ^p2 270011)
+(make line ^p1 270011 ^p2 260011)
+(make line ^p1 260011 ^p2 250011)
+(make line ^p1 250011 ^p2 240010)
+(make line ^p1 300006 ^p2 320006)
+(make line ^p1 320006 ^p2 330006)
+(make line ^p1 330006 ^p2 340006)
+(make line ^p1 300006 ^p2 300008)
+(make line ^p1 300008 ^p2 300009)
+(make line ^p1 300009 ^p2 300010)
+(make line ^p1 300010 ^p2 340010)
+(make line ^p1 340010 ^p2 340006)
+(make line ^p1 340006 ^p2 350007)
+(make line ^p1 350007 ^p2 350008)
+(make line ^p1 350008 ^p2 350009)
+(make line ^p1 350009 ^p2 350011)
+(make line ^p1 350011 ^p2 340010)
+(make line ^p1 350011 ^p2 330011)
+(make line ^p1 330011 ^p2 320011)
+(make line ^p1 320011 ^p2 310011)
+(make line ^p1 310011 ^p2 300010)
+(make line ^p1 230003 ^p2 240003)
+(make line ^p1 210005 ^p2 210006)
+(make line ^p1 260005 ^p2 260006)
+(make line ^p1 230008 ^p2 240008)
+(make line ^p1 410003 ^p2 420003)
+(make line ^p1 390005 ^p2 390006)
+(make line ^p1 440005 ^p2 440006)
+(make line ^p1 410008 ^p2 420008)
+(make line ^p1 360000 ^p2 380000)
+(make line ^p1 380000 ^p2 390000)
+(make line ^p1 390000 ^p2 400000)
+(make line ^p1 360000 ^p2 360002)
+(make line ^p1 360002 ^p2 360003)
+(make line ^p1 360003 ^p2 360004)
+(make line ^p1 360004 ^p2 400004)
+(make line ^p1 400004 ^p2 400000)
+(make line ^p1 400000 ^p2 410001)
+(make line ^p1 410001 ^p2 410002)
+(make line ^p1 410002 ^p2 410003)
+(make line ^p1 410003 ^p2 410005)
+(make line ^p1 410005 ^p2 400004)
+(make line ^p1 410005 ^p2 390005)
+(make line ^p1 390005 ^p2 380005)
+(make line ^p1 380005 ^p2 370005)
+(make line ^p1 370005 ^p2 360004)
+(make line ^p1 420000 ^p2 440000)
+(make line ^p1 440000 ^p2 450000)
+(make line ^p1 450000 ^p2 460000)
+(make line ^p1 420000 ^p2 420002)
+(make line ^p1 420002 ^p2 420003)
+(make line ^p1 420003 ^p2 420004)
+(make line ^p1 420004 ^p2 460004)
+(make line ^p1 460004 ^p2 460000)
+(make line ^p1 460000 ^p2 470001)
+(make line ^p1 470001 ^p2 470002)
+(make line ^p1 470002 ^p2 470003)
+(make line ^p1 470003 ^p2 470005)
+(make line ^p1 470005 ^p2 460004)
+(make line ^p1 470005 ^p2 450005)
+(make line ^p1 450005 ^p2 440005)
+(make line ^p1 440005 ^p2 430005)
+(make line ^p1 430005 ^p2 420004)
+(make line ^p1 360006 ^p2 380006)
+(make line ^p1 380006 ^p2 390006)
+(make line ^p1 390006 ^p2 400006)
+(make line ^p1 360006 ^p2 360008)
+(make line ^p1 360008 ^p2 360009)
+(make line ^p1 360009 ^p2 360010)
+(make line ^p1 360010 ^p2 400010)
+(make line ^p1 400010 ^p2 400006)
+(make line ^p1 400006 ^p2 410007)
+(make line ^p1 410007 ^p2 410008)
+(make line ^p1 410008 ^p2 410009)
+(make line ^p1 410009 ^p2 410011)
+(make line ^p1 410011 ^p2 400010)
+(make line ^p1 410011 ^p2 390011)
+(make line ^p1 390011 ^p2 380011)
+(make line ^p1 380011 ^p2 370011)
+(make line ^p1 370011 ^p2 360010)
+(make line ^p1 420006 ^p2 440006)
+(make line ^p1 440006 ^p2 450006)
+(make line ^p1 450006 ^p2 460006)
+(make line ^p1 420006 ^p2 420008)
+(make line ^p1 420008 ^p2 420009)
+(make line ^p1 420009 ^p2 420010)
+(make line ^p1 420010 ^p2 460010)
+(make line ^p1 460010 ^p2 460006)
+(make line ^p1 460006 ^p2 470007)
+(make line ^p1 470007 ^p2 470008)
+(make line ^p1 470008 ^p2 470009)
+(make line ^p1 470009 ^p2 470011)
+(make line ^p1 470011 ^p2 460010)
+(make line ^p1 470011 ^p2 450011)
+(make line ^p1 450011 ^p2 440011)
+(make line ^p1 440011 ^p2 430011)
+(make line ^p1 430011 ^p2 420010)
+(make line ^p1 350003 ^p2 360003)
+(make line ^p1 330005 ^p2 330006)
+(make line ^p1 380005 ^p2 380006)
+(make line ^p1 350008 ^p2 360008)
+(make line ^p1 530003 ^p2 540003)
+(make line ^p1 510005 ^p2 510006)
+(make line ^p1 560005 ^p2 560006)
+(make line ^p1 530008 ^p2 540008)
+(make line ^p1 480000 ^p2 500000)
+(make line ^p1 500000 ^p2 510000)
+(make line ^p1 510000 ^p2 520000)
+(make line ^p1 480000 ^p2 480002)
+(make line ^p1 480002 ^p2 480003)
+(make line ^p1 480003 ^p2 480004)
+(make line ^p1 480004 ^p2 520004)
+(make line ^p1 520004 ^p2 520000)
+(make line ^p1 520000 ^p2 530001)
+(make line ^p1 530001 ^p2 530002)
+(make line ^p1 530002 ^p2 530003)
+(make line ^p1 530003 ^p2 530005)
+(make line ^p1 530005 ^p2 520004)
+(make line ^p1 530005 ^p2 510005)
+(make line ^p1 510005 ^p2 500005)
+(make line ^p1 500005 ^p2 490005)
+(make line ^p1 490005 ^p2 480004)
+(make line ^p1 540000 ^p2 560000)
+(make line ^p1 560000 ^p2 570000)
+(make line ^p1 570000 ^p2 580000)
+(make line ^p1 540000 ^p2 540002)
+(make line ^p1 540002 ^p2 540003)
+(make line ^p1 540003 ^p2 540004)
+(make line ^p1 540004 ^p2 580004)
+(make line ^p1 580004 ^p2 580000)
+(make line ^p1 580000 ^p2 590001)
+(make line ^p1 590001 ^p2 590002)
+(make line ^p1 590002 ^p2 590003)
+(make line ^p1 590003 ^p2 590005)
+(make line ^p1 590005 ^p2 580004)
+(make line ^p1 590005 ^p2 570005)
+(make line ^p1 570005 ^p2 560005)
+(make line ^p1 560005 ^p2 550005)
+(make line ^p1 550005 ^p2 540004)
+(make line ^p1 480006 ^p2 500006)
+(make line ^p1 500006 ^p2 510006)
+(make line ^p1 510006 ^p2 520006)
+(make line ^p1 480006 ^p2 480008)
+(make line ^p1 480008 ^p2 480009)
+(make line ^p1 480009 ^p2 480010)
+(make line ^p1 480010 ^p2 520010)
+(make line ^p1 520010 ^p2 520006)
+(make line ^p1 520006 ^p2 530007)
+(make line ^p1 530007 ^p2 530008)
+(make line ^p1 530008 ^p2 530009)
+(make line ^p1 530009 ^p2 530011)
+(make line ^p1 530011 ^p2 520010)
+(make line ^p1 530011 ^p2 510011)
+(make line ^p1 510011 ^p2 500011)
+(make line ^p1 500011 ^p2 490011)
+(make line ^p1 490011 ^p2 480010)
+(make line ^p1 540006 ^p2 560006)
+(make line ^p1 560006 ^p2 570006)
+(make line ^p1 570006 ^p2 580006)
+(make line ^p1 540006 ^p2 540008)
+(make line ^p1 540008 ^p2 540009)
+(make line ^p1 540009 ^p2 540010)
+(make line ^p1 540010 ^p2 580010)
+(make line ^p1 580010 ^p2 580006)
+(make line ^p1 580006 ^p2 590007)
+(make line ^p1 590007 ^p2 590008)
+(make line ^p1 590008 ^p2 590009)
+(make line ^p1 590009 ^p2 590011)
+(make line ^p1 590011 ^p2 580010)
+(make line ^p1 590011 ^p2 570011)
+(make line ^p1 570011 ^p2 560011)
+(make line ^p1 560011 ^p2 550011)
+(make line ^p1 550011 ^p2 540010)
+(make line ^p1 470003 ^p2 480003)
+(make line ^p1 450005 ^p2 450006)
+(make line ^p1 500005 ^p2 500006)
+(make line ^p1 470008 ^p2 480008)
+(make line ^p1 650003 ^p2 660003)
+(make line ^p1 630005 ^p2 630006)
+(make line ^p1 680005 ^p2 680006)
+(make line ^p1 650008 ^p2 660008)
+(make line ^p1 600000 ^p2 620000)
+(make line ^p1 620000 ^p2 630000)
+(make line ^p1 630000 ^p2 640000)
+(make line ^p1 600000 ^p2 600002)
+(make line ^p1 600002 ^p2 600003)
+(make line ^p1 600003 ^p2 600004)
+(make line ^p1 600004 ^p2 640004)
+(make line ^p1 640004 ^p2 640000)
+(make line ^p1 640000 ^p2 650001)
+(make line ^p1 650001 ^p2 650002)
+(make line ^p1 650002 ^p2 650003)
+(make line ^p1 650003 ^p2 650005)
+(make line ^p1 650005 ^p2 640004)
+(make line ^p1 650005 ^p2 630005)
+(make line ^p1 630005 ^p2 620005)
+(make line ^p1 620005 ^p2 610005)
+(make line ^p1 610005 ^p2 600004)
+(make line ^p1 660000 ^p2 680000)
+(make line ^p1 680000 ^p2 690000)
+(make line ^p1 690000 ^p2 700000)
+(make line ^p1 660000 ^p2 660002)
+(make line ^p1 660002 ^p2 660003)
+(make line ^p1 660003 ^p2 660004)
+(make line ^p1 660004 ^p2 700004)
+(make line ^p1 700004 ^p2 700000)
+(make line ^p1 700000 ^p2 710001)
+(make line ^p1 710001 ^p2 710002)
+(make line ^p1 710002 ^p2 710003)
+(make line ^p1 710003 ^p2 710005)
+(make line ^p1 710005 ^p2 700004)
+(make line ^p1 710005 ^p2 690005)
+(make line ^p1 690005 ^p2 680005)
+(make line ^p1 680005 ^p2 670005)
+(make line ^p1 670005 ^p2 660004)
+(make line ^p1 600006 ^p2 620006)
+(make line ^p1 620006 ^p2 630006)
+(make line ^p1 630006 ^p2 640006)
+(make line ^p1 600006 ^p2 600008)
+(make line ^p1 600008 ^p2 600009)
+(make line ^p1 600009 ^p2 600010)
+(make line ^p1 600010 ^p2 640010)
+(make line ^p1 640010 ^p2 640006)
+(make line ^p1 640006 ^p2 650007)
+(make line ^p1 650007 ^p2 650008)
+(make line ^p1 650008 ^p2 650009)
+(make line ^p1 650009 ^p2 650011)
+(make line ^p1 650011 ^p2 640010)
+(make line ^p1 650011 ^p2 630011)
+(make line ^p1 630011 ^p2 620011)
+(make line ^p1 620011 ^p2 610011)
+(make line ^p1 610011 ^p2 600010)
+(make line ^p1 660006 ^p2 680006)
+(make line ^p1 680006 ^p2 690006)
+(make line ^p1 690006 ^p2 700006)
+(make line ^p1 660006 ^p2 660008)
+(make line ^p1 660008 ^p2 660009)
+(make line ^p1 660009 ^p2 660010)
+(make line ^p1 660010 ^p2 700010)
+(make line ^p1 700010 ^p2 700006)
+(make line ^p1 700006 ^p2 710007)
+(make line ^p1 710007 ^p2 710008)
+(make line ^p1 710008 ^p2 710009)
+(make line ^p1 710009 ^p2 710011)
+(make line ^p1 710011 ^p2 700010)
+(make line ^p1 710011 ^p2 690011)
+(make line ^p1 690011 ^p2 680011)
+(make line ^p1 680011 ^p2 670011)
+(make line ^p1 670011 ^p2 660010)
+(make line ^p1 590003 ^p2 600003)
+(make line ^p1 570005 ^p2 570006)
+(make line ^p1 620005 ^p2 620006)
+(make line ^p1 590008 ^p2 600008)
+(make line ^p1 770003 ^p2 780003)
+(make line ^p1 750005 ^p2 750006)
+(make line ^p1 800005 ^p2 800006)
+(make line ^p1 770008 ^p2 780008)
+(make line ^p1 720000 ^p2 740000)
+(make line ^p1 740000 ^p2 750000)
+(make line ^p1 750000 ^p2 760000)
+(make line ^p1 720000 ^p2 720002)
+(make line ^p1 720002 ^p2 720003)
+(make line ^p1 720003 ^p2 720004)
+(make line ^p1 720004 ^p2 760004)
+(make line ^p1 760004 ^p2 760000)
+(make line ^p1 760000 ^p2 770001)
+(make line ^p1 770001 ^p2 770002)
+(make line ^p1 770002 ^p2 770003)
+(make line ^p1 770003 ^p2 770005)
+(make line ^p1 770005 ^p2 760004)
+(make line ^p1 770005 ^p2 750005)
+(make line ^p1 750005 ^p2 740005)
+(make line ^p1 740005 ^p2 730005)
+(make line ^p1 730005 ^p2 720004)
+(make line ^p1 780000 ^p2 800000)
+(make line ^p1 800000 ^p2 810000)
+(make line ^p1 810000 ^p2 820000)
+(make line ^p1 780000 ^p2 780002)
+(make line ^p1 780002 ^p2 780003)
+(make line ^p1 780003 ^p2 780004)
+(make line ^p1 780004 ^p2 820004)
+(make line ^p1 820004 ^p2 820000)
+(make line ^p1 820000 ^p2 830001)
+(make line ^p1 830001 ^p2 830002)
+(make line ^p1 830002 ^p2 830003)
+(make line ^p1 830003 ^p2 830005)
+(make line ^p1 830005 ^p2 820004)
+(make line ^p1 830005 ^p2 810005)
+(make line ^p1 810005 ^p2 800005)
+(make line ^p1 800005 ^p2 790005)
+(make line ^p1 790005 ^p2 780004)
+(make line ^p1 720006 ^p2 740006)
+(make line ^p1 740006 ^p2 750006)
+(make line ^p1 750006 ^p2 760006)
+(make line ^p1 720006 ^p2 720008)
+(make line ^p1 720008 ^p2 720009)
+(make line ^p1 720009 ^p2 720010)
+(make line ^p1 720010 ^p2 760010)
+(make line ^p1 760010 ^p2 760006)
+(make line ^p1 760006 ^p2 770007)
+(make line ^p1 770007 ^p2 770008)
+(make line ^p1 770008 ^p2 770009)
+(make line ^p1 770009 ^p2 770011)
+(make line ^p1 770011 ^p2 760010)
+(make line ^p1 770011 ^p2 750011)
+(make line ^p1 750011 ^p2 740011)
+(make line ^p1 740011 ^p2 730011)
+(make line ^p1 730011 ^p2 720010)
+(make line ^p1 780006 ^p2 800006)
+(make line ^p1 800006 ^p2 810006)
+(make line ^p1 810006 ^p2 820006)
+(make line ^p1 780006 ^p2 780008)
+(make line ^p1 780008 ^p2 780009)
+(make line ^p1 780009 ^p2 780010)
+(make line ^p1 780010 ^p2 820010)
+(make line ^p1 820010 ^p2 820006)
+(make line ^p1 820006 ^p2 830007)
+(make line ^p1 830007 ^p2 830008)
+(make line ^p1 830008 ^p2 830009)
+(make line ^p1 830009 ^p2 830011)
+(make line ^p1 830011 ^p2 820010)
+(make line ^p1 830011 ^p2 810011)
+(make line ^p1 810011 ^p2 800011)
+(make line ^p1 800011 ^p2 790011)
+(make line ^p1 790011 ^p2 780010)
+(make line ^p1 710003 ^p2 720003)
+(make line ^p1 690005 ^p2 690006)
+(make line ^p1 740005 ^p2 740006)
+(make line ^p1 710008 ^p2 720008)
+(make line ^p1 890003 ^p2 900003)
+(make line ^p1 870005 ^p2 870006)
+(make line ^p1 920005 ^p2 920006)
+(make line ^p1 890008 ^p2 900008)
+(make line ^p1 840000 ^p2 860000)
+(make line ^p1 860000 ^p2 870000)
+(make line ^p1 870000 ^p2 880000)
+(make line ^p1 840000 ^p2 840002)
+(make line ^p1 840002 ^p2 840003)
+(make line ^p1 840003 ^p2 840004)
+(make line ^p1 840004 ^p2 880004)
+(make line ^p1 880004 ^p2 880000)
+(make line ^p1 880000 ^p2 890001)
+(make line ^p1 890001 ^p2 890002)
+(make line ^p1 890002 ^p2 890003)
+(make line ^p1 890003 ^p2 890005)
+(make line ^p1 890005 ^p2 880004)
+(make line ^p1 890005 ^p2 870005)
+(make line ^p1 870005 ^p2 860005)
+(make line ^p1 860005 ^p2 850005)
+(make line ^p1 850005 ^p2 840004)
+(make line ^p1 900000 ^p2 920000)
+(make line ^p1 920000 ^p2 930000)
+(make line ^p1 930000 ^p2 940000)
+(make line ^p1 900000 ^p2 900002)
+(make line ^p1 900002 ^p2 900003)
+(make line ^p1 900003 ^p2 900004)
+(make line ^p1 900004 ^p2 940004)
+(make line ^p1 940004 ^p2 940000)
+(make line ^p1 940000 ^p2 950001)
+(make line ^p1 950001 ^p2 950002)
+(make line ^p1 950002 ^p2 950003)
+(make line ^p1 950003 ^p2 950005)
+(make line ^p1 950005 ^p2 940004)
+(make line ^p1 950005 ^p2 930005)
+(make line ^p1 930005 ^p2 920005)
+(make line ^p1 920005 ^p2 910005)
+(make line ^p1 910005 ^p2 900004)
+(make line ^p1 840006 ^p2 860006)
+(make line ^p1 860006 ^p2 870006)
+(make line ^p1 870006 ^p2 880006)
+(make line ^p1 840006 ^p2 840008)
+(make line ^p1 840008 ^p2 840009)
+(make line ^p1 840009 ^p2 840010)
+(make line ^p1 840010 ^p2 880010)
+(make line ^p1 880010 ^p2 880006)
+(make line ^p1 880006 ^p2 890007)
+(make line ^p1 890007 ^p2 890008)
+(make line ^p1 890008 ^p2 890009)
+(make line ^p1 890009 ^p2 890011)
+(make line ^p1 890011 ^p2 880010)
+(make line ^p1 890011 ^p2 870011)
+(make line ^p1 870011 ^p2 860011)
+(make line ^p1 860011 ^p2 850011)
+(make line ^p1 850011 ^p2 840010)
+(make line ^p1 900006 ^p2 920006)
+(make line ^p1 920006 ^p2 930006)
+(make line ^p1 930006 ^p2 940006)
+(make line ^p1 900006 ^p2 900008)
+(make line ^p1 900008 ^p2 900009)
+(make line ^p1 900009 ^p2 900010)
+(make line ^p1 900010 ^p2 940010)
+(make line ^p1 940010 ^p2 940006)
+(make line ^p1 940006 ^p2 950007)
+(make line ^p1 950007 ^p2 950008)
+(make line ^p1 950008 ^p2 950009)
+(make line ^p1 950009 ^p2 950011)
+(make line ^p1 950011 ^p2 940010)
+(make line ^p1 950011 ^p2 930011)
+(make line ^p1 930011 ^p2 920011)
+(make line ^p1 920011 ^p2 910011)
+(make line ^p1 910011 ^p2 900010)
+(make line ^p1 830003 ^p2 840003)
+(make line ^p1 810005 ^p2 810006)
+(make line ^p1 860005 ^p2 860006)
+(make line ^p1 830008 ^p2 840008)
+(make line ^p1 1010003 ^p2 1020003)
+(make line ^p1 990005 ^p2 990006)
+(make line ^p1 1040005 ^p2 1040006)
+(make line ^p1 1010008 ^p2 1020008)
+(make line ^p1 960000 ^p2 980000)
+(make line ^p1 980000 ^p2 990000)
+(make line ^p1 990000 ^p2 1000000)
+(make line ^p1 960000 ^p2 960002)
+(make line ^p1 960002 ^p2 960003)
+(make line ^p1 960003 ^p2 960004)
+(make line ^p1 960004 ^p2 1000004)
+(make line ^p1 1000004 ^p2 1000000)
+(make line ^p1 1000000 ^p2 1010001)
+(make line ^p1 1010001 ^p2 1010002)
+(make line ^p1 1010002 ^p2 1010003)
+(make line ^p1 1010003 ^p2 1010005)
+(make line ^p1 1010005 ^p2 1000004)
+(make line ^p1 1010005 ^p2 990005)
+(make line ^p1 990005 ^p2 980005)
+(make line ^p1 980005 ^p2 970005)
+(make line ^p1 970005 ^p2 960004)
+(make line ^p1 1020000 ^p2 1040000)
+(make line ^p1 1040000 ^p2 1050000)
+(make line ^p1 1050000 ^p2 1060000)
+(make line ^p1 1020000 ^p2 1020002)
+(make line ^p1 1020002 ^p2 1020003)
+(make line ^p1 1020003 ^p2 1020004)
+(make line ^p1 1020004 ^p2 1060004)
+(make line ^p1 1060004 ^p2 1060000)
+(make line ^p1 1060000 ^p2 1070001)
+(make line ^p1 1070001 ^p2 1070002)
+(make line ^p1 1070002 ^p2 1070003)
+(make line ^p1 1070003 ^p2 1070005)
+(make line ^p1 1070005 ^p2 1060004)
+(make line ^p1 1070005 ^p2 1050005)
+(make line ^p1 1050005 ^p2 1040005)
+(make line ^p1 1040005 ^p2 1030005)
+(make line ^p1 1030005 ^p2 1020004)
+(make line ^p1 960006 ^p2 980006)
+(make line ^p1 980006 ^p2 990006)
+(make line ^p1 990006 ^p2 1000006)
+(make line ^p1 960006 ^p2 960008)
+(make line ^p1 960008 ^p2 960009)
+(make line ^p1 960009 ^p2 960010)
+(make line ^p1 960010 ^p2 1000010)
+(make line ^p1 1000010 ^p2 1000006)
+(make line ^p1 1000006 ^p2 1010007)
+(make line ^p1 1010007 ^p2 1010008)
+(make line ^p1 1010008 ^p2 1010009)
+(make line ^p1 1010009 ^p2 1010011)
+(make line ^p1 1010011 ^p2 1000010)
+(make line ^p1 1010011 ^p2 990011)
+(make line ^p1 990011 ^p2 980011)
+(make line ^p1 980011 ^p2 970011)
+(make line ^p1 970011 ^p2 960010)
+(make line ^p1 1020006 ^p2 1040006)
+(make line ^p1 1040006 ^p2 1050006)
+(make line ^p1 1050006 ^p2 1060006)
+(make line ^p1 1020006 ^p2 1020008)
+(make line ^p1 1020008 ^p2 1020009)
+(make line ^p1 1020009 ^p2 1020010)
+(make line ^p1 1020010 ^p2 1060010)
+(make line ^p1 1060010 ^p2 1060006)
+(make line ^p1 1060006 ^p2 1070007)
+(make line ^p1 1070007 ^p2 1070008)
+(make line ^p1 1070008 ^p2 1070009)
+(make line ^p1 1070009 ^p2 1070011)
+(make line ^p1 1070011 ^p2 1060010)
+(make line ^p1 1070011 ^p2 1050011)
+(make line ^p1 1050011 ^p2 1040011)
+(make line ^p1 1040011 ^p2 1030011)
+(make line ^p1 1030011 ^p2 1020010)
+(make line ^p1 950003 ^p2 960003)
+(make line ^p1 930005 ^p2 930006)
+(make line ^p1 980005 ^p2 980006)
+(make line ^p1 950008 ^p2 960008)
+(make line ^p1 1130003 ^p2 1140003)
+(make line ^p1 1110005 ^p2 1110006)
+(make line ^p1 1160005 ^p2 1160006)
+(make line ^p1 1130008 ^p2 1140008)
+(make line ^p1 1080000 ^p2 1100000)
+(make line ^p1 1100000 ^p2 1110000)
+(make line ^p1 1110000 ^p2 1120000)
+(make line ^p1 1080000 ^p2 1080002)
+(make line ^p1 1080002 ^p2 1080003)
+(make line ^p1 1080003 ^p2 1080004)
+(make line ^p1 1080004 ^p2 1120004)
+(make line ^p1 1120004 ^p2 1120000)
+(make line ^p1 1120000 ^p2 1130001)
+(make line ^p1 1130001 ^p2 1130002)
+(make line ^p1 1130002 ^p2 1130003)
+(make line ^p1 1130003 ^p2 1130005)
+(make line ^p1 1130005 ^p2 1120004)
+(make line ^p1 1130005 ^p2 1110005)
+(make line ^p1 1110005 ^p2 1100005)
+(make line ^p1 1100005 ^p2 1090005)
+(make line ^p1 1090005 ^p2 1080004)
+(make line ^p1 1140000 ^p2 1160000)
+(make line ^p1 1160000 ^p2 1170000)
+(make line ^p1 1170000 ^p2 1180000)
+(make line ^p1 1140000 ^p2 1140002)
+(make line ^p1 1140002 ^p2 1140003)
+(make line ^p1 1140003 ^p2 1140004)
+(make line ^p1 1140004 ^p2 1180004)
+(make line ^p1 1180004 ^p2 1180000)
+(make line ^p1 1180000 ^p2 1190001)
+(make line ^p1 1190001 ^p2 1190002)
+(make line ^p1 1190002 ^p2 1190003)
+(make line ^p1 1190003 ^p2 1190005)
+(make line ^p1 1190005 ^p2 1180004)
+(make line ^p1 1190005 ^p2 1170005)
+(make line ^p1 1170005 ^p2 1160005)
+(make line ^p1 1160005 ^p2 1150005)
+(make line ^p1 1150005 ^p2 1140004)
+(make line ^p1 1080006 ^p2 1100006)
+(make line ^p1 1100006 ^p2 1110006)
+(make line ^p1 1110006 ^p2 1120006)
+(make line ^p1 1080006 ^p2 1080008)
+(make line ^p1 1080008 ^p2 1080009)
+(make line ^p1 1080009 ^p2 1080010)
+(make line ^p1 1080010 ^p2 1120010)
+(make line ^p1 1120010 ^p2 1120006)
+(make line ^p1 1120006 ^p2 1130007)
+(make line ^p1 1130007 ^p2 1130008)
+(make line ^p1 1130008 ^p2 1130009)
+(make line ^p1 1130009 ^p2 1130011)
+(make line ^p1 1130011 ^p2 1120010)
+(make line ^p1 1130011 ^p2 1110011)
+(make line ^p1 1110011 ^p2 1100011)
+(make line ^p1 1100011 ^p2 1090011)
+(make line ^p1 1090011 ^p2 1080010)
+(make line ^p1 1140006 ^p2 1160006)
+(make line ^p1 1160006 ^p2 1170006)
+(make line ^p1 1170006 ^p2 1180006)
+(make line ^p1 1140006 ^p2 1140008)
+(make line ^p1 1140008 ^p2 1140009)
+(make line ^p1 1140009 ^p2 1140010)
+(make line ^p1 1140010 ^p2 1180010)
+(make line ^p1 1180010 ^p2 1180006)
+(make line ^p1 1180006 ^p2 1190007)
+(make line ^p1 1190007 ^p2 1190008)
+(make line ^p1 1190008 ^p2 1190009)
+(make line ^p1 1190009 ^p2 1190011)
+(make line ^p1 1190011 ^p2 1180010)
+(make line ^p1 1190011 ^p2 1170011)
+(make line ^p1 1170011 ^p2 1160011)
+(make line ^p1 1160011 ^p2 1150011)
+(make line ^p1 1150011 ^p2 1140010)
+(make line ^p1 1070003 ^p2 1080003)
+(make line ^p1 1050005 ^p2 1050006)
+(make line ^p1 1100005 ^p2 1100006)
+(make line ^p1 1070008 ^p2 1080008)
+(make line ^p1 1250003 ^p2 1260003)
+(make line ^p1 1230005 ^p2 1230006)
+(make line ^p1 1280005 ^p2 1280006)
+(make line ^p1 1250008 ^p2 1260008)
+(make line ^p1 1200000 ^p2 1220000)
+(make line ^p1 1220000 ^p2 1230000)
+(make line ^p1 1230000 ^p2 1240000)
+(make line ^p1 1200000 ^p2 1200002)
+(make line ^p1 1200002 ^p2 1200003)
+(make line ^p1 1200003 ^p2 1200004)
+(make line ^p1 1200004 ^p2 1240004)
+(make line ^p1 1240004 ^p2 1240000)
+(make line ^p1 1240000 ^p2 1250001)
+(make line ^p1 1250001 ^p2 1250002)
+(make line ^p1 1250002 ^p2 1250003)
+(make line ^p1 1250003 ^p2 1250005)
+(make line ^p1 1250005 ^p2 1240004)
+(make line ^p1 1250005 ^p2 1230005)
+(make line ^p1 1230005 ^p2 1220005)
+(make line ^p1 1220005 ^p2 1210005)
+(make line ^p1 1210005 ^p2 1200004)
+(make line ^p1 1260000 ^p2 1280000)
+(make line ^p1 1280000 ^p2 1290000)
+(make line ^p1 1290000 ^p2 1300000)
+(make line ^p1 1260000 ^p2 1260002)
+(make line ^p1 1260002 ^p2 1260003)
+(make line ^p1 1260003 ^p2 1260004)
+(make line ^p1 1260004 ^p2 1300004)
+(make line ^p1 1300004 ^p2 1300000)
+(make line ^p1 1300000 ^p2 1310001)
+(make line ^p1 1310001 ^p2 1310002)
+(make line ^p1 1310002 ^p2 1310003)
+(make line ^p1 1310003 ^p2 1310005)
+(make line ^p1 1310005 ^p2 1300004)
+(make line ^p1 1310005 ^p2 1290005)
+(make line ^p1 1290005 ^p2 1280005)
+(make line ^p1 1280005 ^p2 1270005)
+(make line ^p1 1270005 ^p2 1260004)
+(make line ^p1 1200006 ^p2 1220006)
+(make line ^p1 1220006 ^p2 1230006)
+(make line ^p1 1230006 ^p2 1240006)
+(make line ^p1 1200006 ^p2 1200008)
+(make line ^p1 1200008 ^p2 1200009)
+(make line ^p1 1200009 ^p2 1200010)
+(make line ^p1 1200010 ^p2 1240010)
+(make line ^p1 1240010 ^p2 1240006)
+(make line ^p1 1240006 ^p2 1250007)
+(make line ^p1 1250007 ^p2 1250008)
+(make line ^p1 1250008 ^p2 1250009)
+(make line ^p1 1250009 ^p2 1250011)
+(make line ^p1 1250011 ^p2 1240010)
+(make line ^p1 1250011 ^p2 1230011)
+(make line ^p1 1230011 ^p2 1220011)
+(make line ^p1 1220011 ^p2 1210011)
+(make line ^p1 1210011 ^p2 1200010)
+(make line ^p1 1260006 ^p2 1280006)
+(make line ^p1 1280006 ^p2 1290006)
+(make line ^p1 1290006 ^p2 1300006)
+(make line ^p1 1260006 ^p2 1260008)
+(make line ^p1 1260008 ^p2 1260009)
+(make line ^p1 1260009 ^p2 1260010)
+(make line ^p1 1260010 ^p2 1300010)
+(make line ^p1 1300010 ^p2 1300006)
+(make line ^p1 1300006 ^p2 1310007)
+(make line ^p1 1310007 ^p2 1310008)
+(make line ^p1 1310008 ^p2 1310009)
+(make line ^p1 1310009 ^p2 1310011)
+(make line ^p1 1310011 ^p2 1300010)
+(make line ^p1 1310011 ^p2 1290011)
+(make line ^p1 1290011 ^p2 1280011)
+(make line ^p1 1280011 ^p2 1270011)
+(make line ^p1 1270011 ^p2 1260010)
+(make line ^p1 1190003 ^p2 1200003)
+(make line ^p1 1170005 ^p2 1170006)
+(make line ^p1 1220005 ^p2 1220006)
+(make line ^p1 1190008 ^p2 1200008)
+(make line ^p1 1370003 ^p2 1380003)
+(make line ^p1 1350005 ^p2 1350006)
+(make line ^p1 1400005 ^p2 1400006)
+(make line ^p1 1370008 ^p2 1380008)
+(make line ^p1 1320000 ^p2 1340000)
+(make line ^p1 1340000 ^p2 1350000)
+(make line ^p1 1350000 ^p2 1360000)
+(make line ^p1 1320000 ^p2 1320002)
+(make line ^p1 1320002 ^p2 1320003)
+(make line ^p1 1320003 ^p2 1320004)
+(make line ^p1 1320004 ^p2 1360004)
+(make line ^p1 1360004 ^p2 1360000)
+(make line ^p1 1360000 ^p2 1370001)
+(make line ^p1 1370001 ^p2 1370002)
+(make line ^p1 1370002 ^p2 1370003)
+(make line ^p1 1370003 ^p2 1370005)
+(make line ^p1 1370005 ^p2 1360004)
+(make line ^p1 1370005 ^p2 1350005)
+(make line ^p1 1350005 ^p2 1340005)
+(make line ^p1 1340005 ^p2 1330005)
+(make line ^p1 1330005 ^p2 1320004)
+(make line ^p1 1380000 ^p2 1400000)
+(make line ^p1 1400000 ^p2 1410000)
+(make line ^p1 1410000 ^p2 1420000)
+(make line ^p1 1380000 ^p2 1380002)
+(make line ^p1 1380002 ^p2 1380003)
+(make line ^p1 1380003 ^p2 1380004)
+(make line ^p1 1380004 ^p2 1420004)
+(make line ^p1 1420004 ^p2 1420000)
+(make line ^p1 1420000 ^p2 1430001)
+(make line ^p1 1430001 ^p2 1430002)
+(make line ^p1 1430002 ^p2 1430003)
+(make line ^p1 1430003 ^p2 1430005)
+(make line ^p1 1430005 ^p2 1420004)
+(make line ^p1 1430005 ^p2 1410005)
+(make line ^p1 1410005 ^p2 1400005)
+(make line ^p1 1400005 ^p2 1390005)
+(make line ^p1 1390005 ^p2 1380004)
+(make line ^p1 1320006 ^p2 1340006)
+(make line ^p1 1340006 ^p2 1350006)
+(make line ^p1 1350006 ^p2 1360006)
+(make line ^p1 1320006 ^p2 1320008)
+(make line ^p1 1320008 ^p2 1320009)
+(make line ^p1 1320009 ^p2 1320010)
+(make line ^p1 1320010 ^p2 1360010)
+(make line ^p1 1360010 ^p2 1360006)
+(make line ^p1 1360006 ^p2 1370007)
+(make line ^p1 1370007 ^p2 1370008)
+(make line ^p1 1370008 ^p2 1370009)
+(make line ^p1 1370009 ^p2 1370011)
+(make line ^p1 1370011 ^p2 1360010)
+(make line ^p1 1370011 ^p2 1350011)
+(make line ^p1 1350011 ^p2 1340011)
+(make line ^p1 1340011 ^p2 1330011)
+(make line ^p1 1330011 ^p2 1320010)
+(make line ^p1 1380006 ^p2 1400006)
+(make line ^p1 1400006 ^p2 1410006)
+(make line ^p1 1410006 ^p2 1420006)
+(make line ^p1 1380006 ^p2 1380008)
+(make line ^p1 1380008 ^p2 1380009)
+(make line ^p1 1380009 ^p2 1380010)
+(make line ^p1 1380010 ^p2 1420010)
+(make line ^p1 1420010 ^p2 1420006)
+(make line ^p1 1420006 ^p2 1430007)
+(make line ^p1 1430007 ^p2 1430008)
+(make line ^p1 1430008 ^p2 1430009)
+(make line ^p1 1430009 ^p2 1430011)
+(make line ^p1 1430011 ^p2 1420010)
+(make line ^p1 1430011 ^p2 1410011)
+(make line ^p1 1410011 ^p2 1400011)
+(make line ^p1 1400011 ^p2 1390011)
+(make line ^p1 1390011 ^p2 1380010)
+(make line ^p1 1310003 ^p2 1320003)
+(make line ^p1 1290005 ^p2 1290006)
+(make line ^p1 1340005 ^p2 1340006)
+(make line ^p1 1310008 ^p2 1320008)
+(make line ^p1 1490003 ^p2 1500003)
+(make line ^p1 1470005 ^p2 1470006)
+(make line ^p1 1520005 ^p2 1520006)
+(make line ^p1 1490008 ^p2 1500008)
+(make line ^p1 1440000 ^p2 1460000)
+(make line ^p1 1460000 ^p2 1470000)
+(make line ^p1 1470000 ^p2 1480000)
+(make line ^p1 1440000 ^p2 1440002)
+(make line ^p1 1440002 ^p2 1440003)
+(make line ^p1 1440003 ^p2 1440004)
+(make line ^p1 1440004 ^p2 1480004)
+(make line ^p1 1480004 ^p2 1480000)
+(make line ^p1 1480000 ^p2 1490001)
+(make line ^p1 1490001 ^p2 1490002)
+(make line ^p1 1490002 ^p2 1490003)
+(make line ^p1 1490003 ^p2 1490005)
+(make line ^p1 1490005 ^p2 1480004)
+(make line ^p1 1490005 ^p2 1470005)
+(make line ^p1 1470005 ^p2 1460005)
+(make line ^p1 1460005 ^p2 1450005)
+(make line ^p1 1450005 ^p2 1440004)
+(make line ^p1 1500000 ^p2 1520000)
+(make line ^p1 1520000 ^p2 1530000)
+(make line ^p1 1530000 ^p2 1540000)
+(make line ^p1 1500000 ^p2 1500002)
+(make line ^p1 1500002 ^p2 1500003)
+(make line ^p1 1500003 ^p2 1500004)
+(make line ^p1 1500004 ^p2 1540004)
+(make line ^p1 1540004 ^p2 1540000)
+(make line ^p1 1540000 ^p2 1550001)
+(make line ^p1 1550001 ^p2 1550002)
+(make line ^p1 1550002 ^p2 1550003)
+(make line ^p1 1550003 ^p2 1550005)
+(make line ^p1 1550005 ^p2 1540004)
+(make line ^p1 1550005 ^p2 1530005)
+(make line ^p1 1530005 ^p2 1520005)
+(make line ^p1 1520005 ^p2 1510005)
+(make line ^p1 1510005 ^p2 1500004)
+(make line ^p1 1440006 ^p2 1460006)
+(make line ^p1 1460006 ^p2 1470006)
+(make line ^p1 1470006 ^p2 1480006)
+(make line ^p1 1440006 ^p2 1440008)
+(make line ^p1 1440008 ^p2 1440009)
+(make line ^p1 1440009 ^p2 1440010)
+(make line ^p1 1440010 ^p2 1480010)
+(make line ^p1 1480010 ^p2 1480006)
+(make line ^p1 1480006 ^p2 1490007)
+(make line ^p1 1490007 ^p2 1490008)
+(make line ^p1 1490008 ^p2 1490009)
+(make line ^p1 1490009 ^p2 1490011)
+(make line ^p1 1490011 ^p2 1480010)
+(make line ^p1 1490011 ^p2 1470011)
+(make line ^p1 1470011 ^p2 1460011)
+(make line ^p1 1460011 ^p2 1450011)
+(make line ^p1 1450011 ^p2 1440010)
+(make line ^p1 1500006 ^p2 1520006)
+(make line ^p1 1520006 ^p2 1530006)
+(make line ^p1 1530006 ^p2 1540006)
+(make line ^p1 1500006 ^p2 1500008)
+(make line ^p1 1500008 ^p2 1500009)
+(make line ^p1 1500009 ^p2 1500010)
+(make line ^p1 1500010 ^p2 1540010)
+(make line ^p1 1540010 ^p2 1540006)
+(make line ^p1 1540006 ^p2 1550007)
+(make line ^p1 1550007 ^p2 1550008)
+(make line ^p1 1550008 ^p2 1550009)
+(make line ^p1 1550009 ^p2 1550011)
+(make line ^p1 1550011 ^p2 1540010)
+(make line ^p1 1550011 ^p2 1530011)
+(make line ^p1 1530011 ^p2 1520011)
+(make line ^p1 1520011 ^p2 1510011)
+(make line ^p1 1510011 ^p2 1500010)
+(make line ^p1 1430003 ^p2 1440003)
+(make line ^p1 1410005 ^p2 1410006)
+(make line ^p1 1460005 ^p2 1460006)
+(make line ^p1 1430008 ^p2 1440008)
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltz/waltz50.dat
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltz/waltz50.dat (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltz/waltz50.dat 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,3873 @@
+(make line ^p1 50003 ^p2 60003)
+(make line ^p1 30005 ^p2 30006)
+(make line ^p1 80005 ^p2 80006)
+(make line ^p1 50008 ^p2 60008)
+(make line ^p1 0 ^p2 20000)
+(make line ^p1 20000 ^p2 30000)
+(make line ^p1 30000 ^p2 40000)
+(make line ^p1 0 ^p2 2)
+(make line ^p1 2 ^p2 3)
+(make line ^p1 3 ^p2 4)
+(make line ^p1 4 ^p2 40004)
+(make line ^p1 40004 ^p2 40000)
+(make line ^p1 40000 ^p2 50001)
+(make line ^p1 50001 ^p2 50002)
+(make line ^p1 50002 ^p2 50003)
+(make line ^p1 50003 ^p2 50005)
+(make line ^p1 50005 ^p2 40004)
+(make line ^p1 50005 ^p2 30005)
+(make line ^p1 30005 ^p2 20005)
+(make line ^p1 20005 ^p2 10005)
+(make line ^p1 10005 ^p2 4)
+(make line ^p1 60000 ^p2 80000)
+(make line ^p1 80000 ^p2 90000)
+(make line ^p1 90000 ^p2 100000)
+(make line ^p1 60000 ^p2 60002)
+(make line ^p1 60002 ^p2 60003)
+(make line ^p1 60003 ^p2 60004)
+(make line ^p1 60004 ^p2 100004)
+(make line ^p1 100004 ^p2 100000)
+(make line ^p1 100000 ^p2 110001)
+(make line ^p1 110001 ^p2 110002)
+(make line ^p1 110002 ^p2 110003)
+(make line ^p1 110003 ^p2 110005)
+(make line ^p1 110005 ^p2 100004)
+(make line ^p1 110005 ^p2 90005)
+(make line ^p1 90005 ^p2 80005)
+(make line ^p1 80005 ^p2 70005)
+(make line ^p1 70005 ^p2 60004)
+(make line ^p1 6 ^p2 20006)
+(make line ^p1 20006 ^p2 30006)
+(make line ^p1 30006 ^p2 40006)
+(make line ^p1 6 ^p2 8)
+(make line ^p1 8 ^p2 9)
+(make line ^p1 9 ^p2 10)
+(make line ^p1 10 ^p2 40010)
+(make line ^p1 40010 ^p2 40006)
+(make line ^p1 40006 ^p2 50007)
+(make line ^p1 50007 ^p2 50008)
+(make line ^p1 50008 ^p2 50009)
+(make line ^p1 50009 ^p2 50011)
+(make line ^p1 50011 ^p2 40010)
+(make line ^p1 50011 ^p2 30011)
+(make line ^p1 30011 ^p2 20011)
+(make line ^p1 20011 ^p2 10011)
+(make line ^p1 10011 ^p2 10)
+(make line ^p1 60006 ^p2 80006)
+(make line ^p1 80006 ^p2 90006)
+(make line ^p1 90006 ^p2 100006)
+(make line ^p1 60006 ^p2 60008)
+(make line ^p1 60008 ^p2 60009)
+(make line ^p1 60009 ^p2 60010)
+(make line ^p1 60010 ^p2 100010)
+(make line ^p1 100010 ^p2 100006)
+(make line ^p1 100006 ^p2 110007)
+(make line ^p1 110007 ^p2 110008)
+(make line ^p1 110008 ^p2 110009)
+(make line ^p1 110009 ^p2 110011)
+(make line ^p1 110011 ^p2 100010)
+(make line ^p1 110011 ^p2 90011)
+(make line ^p1 90011 ^p2 80011)
+(make line ^p1 80011 ^p2 70011)
+(make line ^p1 70011 ^p2 60010)
+(make line ^p1 170003 ^p2 180003)
+(make line ^p1 150005 ^p2 150006)
+(make line ^p1 200005 ^p2 200006)
+(make line ^p1 170008 ^p2 180008)
+(make line ^p1 120000 ^p2 140000)
+(make line ^p1 140000 ^p2 150000)
+(make line ^p1 150000 ^p2 160000)
+(make line ^p1 120000 ^p2 120002)
+(make line ^p1 120002 ^p2 120003)
+(make line ^p1 120003 ^p2 120004)
+(make line ^p1 120004 ^p2 160004)
+(make line ^p1 160004 ^p2 160000)
+(make line ^p1 160000 ^p2 170001)
+(make line ^p1 170001 ^p2 170002)
+(make line ^p1 170002 ^p2 170003)
+(make line ^p1 170003 ^p2 170005)
+(make line ^p1 170005 ^p2 160004)
+(make line ^p1 170005 ^p2 150005)
+(make line ^p1 150005 ^p2 140005)
+(make line ^p1 140005 ^p2 130005)
+(make line ^p1 130005 ^p2 120004)
+(make line ^p1 180000 ^p2 200000)
+(make line ^p1 200000 ^p2 210000)
+(make line ^p1 210000 ^p2 220000)
+(make line ^p1 180000 ^p2 180002)
+(make line ^p1 180002 ^p2 180003)
+(make line ^p1 180003 ^p2 180004)
+(make line ^p1 180004 ^p2 220004)
+(make line ^p1 220004 ^p2 220000)
+(make line ^p1 220000 ^p2 230001)
+(make line ^p1 230001 ^p2 230002)
+(make line ^p1 230002 ^p2 230003)
+(make line ^p1 230003 ^p2 230005)
+(make line ^p1 230005 ^p2 220004)
+(make line ^p1 230005 ^p2 210005)
+(make line ^p1 210005 ^p2 200005)
+(make line ^p1 200005 ^p2 190005)
+(make line ^p1 190005 ^p2 180004)
+(make line ^p1 120006 ^p2 140006)
+(make line ^p1 140006 ^p2 150006)
+(make line ^p1 150006 ^p2 160006)
+(make line ^p1 120006 ^p2 120008)
+(make line ^p1 120008 ^p2 120009)
+(make line ^p1 120009 ^p2 120010)
+(make line ^p1 120010 ^p2 160010)
+(make line ^p1 160010 ^p2 160006)
+(make line ^p1 160006 ^p2 170007)
+(make line ^p1 170007 ^p2 170008)
+(make line ^p1 170008 ^p2 170009)
+(make line ^p1 170009 ^p2 170011)
+(make line ^p1 170011 ^p2 160010)
+(make line ^p1 170011 ^p2 150011)
+(make line ^p1 150011 ^p2 140011)
+(make line ^p1 140011 ^p2 130011)
+(make line ^p1 130011 ^p2 120010)
+(make line ^p1 180006 ^p2 200006)
+(make line ^p1 200006 ^p2 210006)
+(make line ^p1 210006 ^p2 220006)
+(make line ^p1 180006 ^p2 180008)
+(make line ^p1 180008 ^p2 180009)
+(make line ^p1 180009 ^p2 180010)
+(make line ^p1 180010 ^p2 220010)
+(make line ^p1 220010 ^p2 220006)
+(make line ^p1 220006 ^p2 230007)
+(make line ^p1 230007 ^p2 230008)
+(make line ^p1 230008 ^p2 230009)
+(make line ^p1 230009 ^p2 230011)
+(make line ^p1 230011 ^p2 220010)
+(make line ^p1 230011 ^p2 210011)
+(make line ^p1 210011 ^p2 200011)
+(make line ^p1 200011 ^p2 190011)
+(make line ^p1 190011 ^p2 180010)
+(make line ^p1 110003 ^p2 120003)
+(make line ^p1 90005 ^p2 90006)
+(make line ^p1 140005 ^p2 140006)
+(make line ^p1 110008 ^p2 120008)
+(make line ^p1 290003 ^p2 300003)
+(make line ^p1 270005 ^p2 270006)
+(make line ^p1 320005 ^p2 320006)
+(make line ^p1 290008 ^p2 300008)
+(make line ^p1 240000 ^p2 260000)
+(make line ^p1 260000 ^p2 270000)
+(make line ^p1 270000 ^p2 280000)
+(make line ^p1 240000 ^p2 240002)
+(make line ^p1 240002 ^p2 240003)
+(make line ^p1 240003 ^p2 240004)
+(make line ^p1 240004 ^p2 280004)
+(make line ^p1 280004 ^p2 280000)
+(make line ^p1 280000 ^p2 290001)
+(make line ^p1 290001 ^p2 290002)
+(make line ^p1 290002 ^p2 290003)
+(make line ^p1 290003 ^p2 290005)
+(make line ^p1 290005 ^p2 280004)
+(make line ^p1 290005 ^p2 270005)
+(make line ^p1 270005 ^p2 260005)
+(make line ^p1 260005 ^p2 250005)
+(make line ^p1 250005 ^p2 240004)
+(make line ^p1 300000 ^p2 320000)
+(make line ^p1 320000 ^p2 330000)
+(make line ^p1 330000 ^p2 340000)
+(make line ^p1 300000 ^p2 300002)
+(make line ^p1 300002 ^p2 300003)
+(make line ^p1 300003 ^p2 300004)
+(make line ^p1 300004 ^p2 340004)
+(make line ^p1 340004 ^p2 340000)
+(make line ^p1 340000 ^p2 350001)
+(make line ^p1 350001 ^p2 350002)
+(make line ^p1 350002 ^p2 350003)
+(make line ^p1 350003 ^p2 350005)
+(make line ^p1 350005 ^p2 340004)
+(make line ^p1 350005 ^p2 330005)
+(make line ^p1 330005 ^p2 320005)
+(make line ^p1 320005 ^p2 310005)
+(make line ^p1 310005 ^p2 300004)
+(make line ^p1 240006 ^p2 260006)
+(make line ^p1 260006 ^p2 270006)
+(make line ^p1 270006 ^p2 280006)
+(make line ^p1 240006 ^p2 240008)
+(make line ^p1 240008 ^p2 240009)
+(make line ^p1 240009 ^p2 240010)
+(make line ^p1 240010 ^p2 280010)
+(make line ^p1 280010 ^p2 280006)
+(make line ^p1 280006 ^p2 290007)
+(make line ^p1 290007 ^p2 290008)
+(make line ^p1 290008 ^p2 290009)
+(make line ^p1 290009 ^p2 290011)
+(make line ^p1 290011 ^p2 280010)
+(make line ^p1 290011 ^p2 270011)
+(make line ^p1 270011 ^p2 260011)
+(make line ^p1 260011 ^p2 250011)
+(make line ^p1 250011 ^p2 240010)
+(make line ^p1 300006 ^p2 320006)
+(make line ^p1 320006 ^p2 330006)
+(make line ^p1 330006 ^p2 340006)
+(make line ^p1 300006 ^p2 300008)
+(make line ^p1 300008 ^p2 300009)
+(make line ^p1 300009 ^p2 300010)
+(make line ^p1 300010 ^p2 340010)
+(make line ^p1 340010 ^p2 340006)
+(make line ^p1 340006 ^p2 350007)
+(make line ^p1 350007 ^p2 350008)
+(make line ^p1 350008 ^p2 350009)
+(make line ^p1 350009 ^p2 350011)
+(make line ^p1 350011 ^p2 340010)
+(make line ^p1 350011 ^p2 330011)
+(make line ^p1 330011 ^p2 320011)
+(make line ^p1 320011 ^p2 310011)
+(make line ^p1 310011 ^p2 300010)
+(make line ^p1 230003 ^p2 240003)
+(make line ^p1 210005 ^p2 210006)
+(make line ^p1 260005 ^p2 260006)
+(make line ^p1 230008 ^p2 240008)
+(make line ^p1 410003 ^p2 420003)
+(make line ^p1 390005 ^p2 390006)
+(make line ^p1 440005 ^p2 440006)
+(make line ^p1 410008 ^p2 420008)
+(make line ^p1 360000 ^p2 380000)
+(make line ^p1 380000 ^p2 390000)
+(make line ^p1 390000 ^p2 400000)
+(make line ^p1 360000 ^p2 360002)
+(make line ^p1 360002 ^p2 360003)
+(make line ^p1 360003 ^p2 360004)
+(make line ^p1 360004 ^p2 400004)
+(make line ^p1 400004 ^p2 400000)
+(make line ^p1 400000 ^p2 410001)
+(make line ^p1 410001 ^p2 410002)
+(make line ^p1 410002 ^p2 410003)
+(make line ^p1 410003 ^p2 410005)
+(make line ^p1 410005 ^p2 400004)
+(make line ^p1 410005 ^p2 390005)
+(make line ^p1 390005 ^p2 380005)
+(make line ^p1 380005 ^p2 370005)
+(make line ^p1 370005 ^p2 360004)
+(make line ^p1 420000 ^p2 440000)
+(make line ^p1 440000 ^p2 450000)
+(make line ^p1 450000 ^p2 460000)
+(make line ^p1 420000 ^p2 420002)
+(make line ^p1 420002 ^p2 420003)
+(make line ^p1 420003 ^p2 420004)
+(make line ^p1 420004 ^p2 460004)
+(make line ^p1 460004 ^p2 460000)
+(make line ^p1 460000 ^p2 470001)
+(make line ^p1 470001 ^p2 470002)
+(make line ^p1 470002 ^p2 470003)
+(make line ^p1 470003 ^p2 470005)
+(make line ^p1 470005 ^p2 460004)
+(make line ^p1 470005 ^p2 450005)
+(make line ^p1 450005 ^p2 440005)
+(make line ^p1 440005 ^p2 430005)
+(make line ^p1 430005 ^p2 420004)
+(make line ^p1 360006 ^p2 380006)
+(make line ^p1 380006 ^p2 390006)
+(make line ^p1 390006 ^p2 400006)
+(make line ^p1 360006 ^p2 360008)
+(make line ^p1 360008 ^p2 360009)
+(make line ^p1 360009 ^p2 360010)
+(make line ^p1 360010 ^p2 400010)
+(make line ^p1 400010 ^p2 400006)
+(make line ^p1 400006 ^p2 410007)
+(make line ^p1 410007 ^p2 410008)
+(make line ^p1 410008 ^p2 410009)
+(make line ^p1 410009 ^p2 410011)
+(make line ^p1 410011 ^p2 400010)
+(make line ^p1 410011 ^p2 390011)
+(make line ^p1 390011 ^p2 380011)
+(make line ^p1 380011 ^p2 370011)
+(make line ^p1 370011 ^p2 360010)
+(make line ^p1 420006 ^p2 440006)
+(make line ^p1 440006 ^p2 450006)
+(make line ^p1 450006 ^p2 460006)
+(make line ^p1 420006 ^p2 420008)
+(make line ^p1 420008 ^p2 420009)
+(make line ^p1 420009 ^p2 420010)
+(make line ^p1 420010 ^p2 460010)
+(make line ^p1 460010 ^p2 460006)
+(make line ^p1 460006 ^p2 470007)
+(make line ^p1 470007 ^p2 470008)
+(make line ^p1 470008 ^p2 470009)
+(make line ^p1 470009 ^p2 470011)
+(make line ^p1 470011 ^p2 460010)
+(make line ^p1 470011 ^p2 450011)
+(make line ^p1 450011 ^p2 440011)
+(make line ^p1 440011 ^p2 430011)
+(make line ^p1 430011 ^p2 420010)
+(make line ^p1 350003 ^p2 360003)
+(make line ^p1 330005 ^p2 330006)
+(make line ^p1 380005 ^p2 380006)
+(make line ^p1 350008 ^p2 360008)
+(make line ^p1 530003 ^p2 540003)
+(make line ^p1 510005 ^p2 510006)
+(make line ^p1 560005 ^p2 560006)
+(make line ^p1 530008 ^p2 540008)
+(make line ^p1 480000 ^p2 500000)
+(make line ^p1 500000 ^p2 510000)
+(make line ^p1 510000 ^p2 520000)
+(make line ^p1 480000 ^p2 480002)
+(make line ^p1 480002 ^p2 480003)
+(make line ^p1 480003 ^p2 480004)
+(make line ^p1 480004 ^p2 520004)
+(make line ^p1 520004 ^p2 520000)
+(make line ^p1 520000 ^p2 530001)
+(make line ^p1 530001 ^p2 530002)
+(make line ^p1 530002 ^p2 530003)
+(make line ^p1 530003 ^p2 530005)
+(make line ^p1 530005 ^p2 520004)
+(make line ^p1 530005 ^p2 510005)
+(make line ^p1 510005 ^p2 500005)
+(make line ^p1 500005 ^p2 490005)
+(make line ^p1 490005 ^p2 480004)
+(make line ^p1 540000 ^p2 560000)
+(make line ^p1 560000 ^p2 570000)
+(make line ^p1 570000 ^p2 580000)
+(make line ^p1 540000 ^p2 540002)
+(make line ^p1 540002 ^p2 540003)
+(make line ^p1 540003 ^p2 540004)
+(make line ^p1 540004 ^p2 580004)
+(make line ^p1 580004 ^p2 580000)
+(make line ^p1 580000 ^p2 590001)
+(make line ^p1 590001 ^p2 590002)
+(make line ^p1 590002 ^p2 590003)
+(make line ^p1 590003 ^p2 590005)
+(make line ^p1 590005 ^p2 580004)
+(make line ^p1 590005 ^p2 570005)
+(make line ^p1 570005 ^p2 560005)
+(make line ^p1 560005 ^p2 550005)
+(make line ^p1 550005 ^p2 540004)
+(make line ^p1 480006 ^p2 500006)
+(make line ^p1 500006 ^p2 510006)
+(make line ^p1 510006 ^p2 520006)
+(make line ^p1 480006 ^p2 480008)
+(make line ^p1 480008 ^p2 480009)
+(make line ^p1 480009 ^p2 480010)
+(make line ^p1 480010 ^p2 520010)
+(make line ^p1 520010 ^p2 520006)
+(make line ^p1 520006 ^p2 530007)
+(make line ^p1 530007 ^p2 530008)
+(make line ^p1 530008 ^p2 530009)
+(make line ^p1 530009 ^p2 530011)
+(make line ^p1 530011 ^p2 520010)
+(make line ^p1 530011 ^p2 510011)
+(make line ^p1 510011 ^p2 500011)
+(make line ^p1 500011 ^p2 490011)
+(make line ^p1 490011 ^p2 480010)
+(make line ^p1 540006 ^p2 560006)
+(make line ^p1 560006 ^p2 570006)
+(make line ^p1 570006 ^p2 580006)
+(make line ^p1 540006 ^p2 540008)
+(make line ^p1 540008 ^p2 540009)
+(make line ^p1 540009 ^p2 540010)
+(make line ^p1 540010 ^p2 580010)
+(make line ^p1 580010 ^p2 580006)
+(make line ^p1 580006 ^p2 590007)
+(make line ^p1 590007 ^p2 590008)
+(make line ^p1 590008 ^p2 590009)
+(make line ^p1 590009 ^p2 590011)
+(make line ^p1 590011 ^p2 580010)
+(make line ^p1 590011 ^p2 570011)
+(make line ^p1 570011 ^p2 560011)
+(make line ^p1 560011 ^p2 550011)
+(make line ^p1 550011 ^p2 540010)
+(make line ^p1 470003 ^p2 480003)
+(make line ^p1 450005 ^p2 450006)
+(make line ^p1 500005 ^p2 500006)
+(make line ^p1 470008 ^p2 480008)
+(make line ^p1 650003 ^p2 660003)
+(make line ^p1 630005 ^p2 630006)
+(make line ^p1 680005 ^p2 680006)
+(make line ^p1 650008 ^p2 660008)
+(make line ^p1 600000 ^p2 620000)
+(make line ^p1 620000 ^p2 630000)
+(make line ^p1 630000 ^p2 640000)
+(make line ^p1 600000 ^p2 600002)
+(make line ^p1 600002 ^p2 600003)
+(make line ^p1 600003 ^p2 600004)
+(make line ^p1 600004 ^p2 640004)
+(make line ^p1 640004 ^p2 640000)
+(make line ^p1 640000 ^p2 650001)
+(make line ^p1 650001 ^p2 650002)
+(make line ^p1 650002 ^p2 650003)
+(make line ^p1 650003 ^p2 650005)
+(make line ^p1 650005 ^p2 640004)
+(make line ^p1 650005 ^p2 630005)
+(make line ^p1 630005 ^p2 620005)
+(make line ^p1 620005 ^p2 610005)
+(make line ^p1 610005 ^p2 600004)
+(make line ^p1 660000 ^p2 680000)
+(make line ^p1 680000 ^p2 690000)
+(make line ^p1 690000 ^p2 700000)
+(make line ^p1 660000 ^p2 660002)
+(make line ^p1 660002 ^p2 660003)
+(make line ^p1 660003 ^p2 660004)
+(make line ^p1 660004 ^p2 700004)
+(make line ^p1 700004 ^p2 700000)
+(make line ^p1 700000 ^p2 710001)
+(make line ^p1 710001 ^p2 710002)
+(make line ^p1 710002 ^p2 710003)
+(make line ^p1 710003 ^p2 710005)
+(make line ^p1 710005 ^p2 700004)
+(make line ^p1 710005 ^p2 690005)
+(make line ^p1 690005 ^p2 680005)
+(make line ^p1 680005 ^p2 670005)
+(make line ^p1 670005 ^p2 660004)
+(make line ^p1 600006 ^p2 620006)
+(make line ^p1 620006 ^p2 630006)
+(make line ^p1 630006 ^p2 640006)
+(make line ^p1 600006 ^p2 600008)
+(make line ^p1 600008 ^p2 600009)
+(make line ^p1 600009 ^p2 600010)
+(make line ^p1 600010 ^p2 640010)
+(make line ^p1 640010 ^p2 640006)
+(make line ^p1 640006 ^p2 650007)
+(make line ^p1 650007 ^p2 650008)
+(make line ^p1 650008 ^p2 650009)
+(make line ^p1 650009 ^p2 650011)
+(make line ^p1 650011 ^p2 640010)
+(make line ^p1 650011 ^p2 630011)
+(make line ^p1 630011 ^p2 620011)
+(make line ^p1 620011 ^p2 610011)
+(make line ^p1 610011 ^p2 600010)
+(make line ^p1 660006 ^p2 680006)
+(make line ^p1 680006 ^p2 690006)
+(make line ^p1 690006 ^p2 700006)
+(make line ^p1 660006 ^p2 660008)
+(make line ^p1 660008 ^p2 660009)
+(make line ^p1 660009 ^p2 660010)
+(make line ^p1 660010 ^p2 700010)
+(make line ^p1 700010 ^p2 700006)
+(make line ^p1 700006 ^p2 710007)
+(make line ^p1 710007 ^p2 710008)
+(make line ^p1 710008 ^p2 710009)
+(make line ^p1 710009 ^p2 710011)
+(make line ^p1 710011 ^p2 700010)
+(make line ^p1 710011 ^p2 690011)
+(make line ^p1 690011 ^p2 680011)
+(make line ^p1 680011 ^p2 670011)
+(make line ^p1 670011 ^p2 660010)
+(make line ^p1 590003 ^p2 600003)
+(make line ^p1 570005 ^p2 570006)
+(make line ^p1 620005 ^p2 620006)
+(make line ^p1 590008 ^p2 600008)
+(make line ^p1 770003 ^p2 780003)
+(make line ^p1 750005 ^p2 750006)
+(make line ^p1 800005 ^p2 800006)
+(make line ^p1 770008 ^p2 780008)
+(make line ^p1 720000 ^p2 740000)
+(make line ^p1 740000 ^p2 750000)
+(make line ^p1 750000 ^p2 760000)
+(make line ^p1 720000 ^p2 720002)
+(make line ^p1 720002 ^p2 720003)
+(make line ^p1 720003 ^p2 720004)
+(make line ^p1 720004 ^p2 760004)
+(make line ^p1 760004 ^p2 760000)
+(make line ^p1 760000 ^p2 770001)
+(make line ^p1 770001 ^p2 770002)
+(make line ^p1 770002 ^p2 770003)
+(make line ^p1 770003 ^p2 770005)
+(make line ^p1 770005 ^p2 760004)
+(make line ^p1 770005 ^p2 750005)
+(make line ^p1 750005 ^p2 740005)
+(make line ^p1 740005 ^p2 730005)
+(make line ^p1 730005 ^p2 720004)
+(make line ^p1 780000 ^p2 800000)
+(make line ^p1 800000 ^p2 810000)
+(make line ^p1 810000 ^p2 820000)
+(make line ^p1 780000 ^p2 780002)
+(make line ^p1 780002 ^p2 780003)
+(make line ^p1 780003 ^p2 780004)
+(make line ^p1 780004 ^p2 820004)
+(make line ^p1 820004 ^p2 820000)
+(make line ^p1 820000 ^p2 830001)
+(make line ^p1 830001 ^p2 830002)
+(make line ^p1 830002 ^p2 830003)
+(make line ^p1 830003 ^p2 830005)
+(make line ^p1 830005 ^p2 820004)
+(make line ^p1 830005 ^p2 810005)
+(make line ^p1 810005 ^p2 800005)
+(make line ^p1 800005 ^p2 790005)
+(make line ^p1 790005 ^p2 780004)
+(make line ^p1 720006 ^p2 740006)
+(make line ^p1 740006 ^p2 750006)
+(make line ^p1 750006 ^p2 760006)
+(make line ^p1 720006 ^p2 720008)
+(make line ^p1 720008 ^p2 720009)
+(make line ^p1 720009 ^p2 720010)
+(make line ^p1 720010 ^p2 760010)
+(make line ^p1 760010 ^p2 760006)
+(make line ^p1 760006 ^p2 770007)
+(make line ^p1 770007 ^p2 770008)
+(make line ^p1 770008 ^p2 770009)
+(make line ^p1 770009 ^p2 770011)
+(make line ^p1 770011 ^p2 760010)
+(make line ^p1 770011 ^p2 750011)
+(make line ^p1 750011 ^p2 740011)
+(make line ^p1 740011 ^p2 730011)
+(make line ^p1 730011 ^p2 720010)
+(make line ^p1 780006 ^p2 800006)
+(make line ^p1 800006 ^p2 810006)
+(make line ^p1 810006 ^p2 820006)
+(make line ^p1 780006 ^p2 780008)
+(make line ^p1 780008 ^p2 780009)
+(make line ^p1 780009 ^p2 780010)
+(make line ^p1 780010 ^p2 820010)
+(make line ^p1 820010 ^p2 820006)
+(make line ^p1 820006 ^p2 830007)
+(make line ^p1 830007 ^p2 830008)
+(make line ^p1 830008 ^p2 830009)
+(make line ^p1 830009 ^p2 830011)
+(make line ^p1 830011 ^p2 820010)
+(make line ^p1 830011 ^p2 810011)
+(make line ^p1 810011 ^p2 800011)
+(make line ^p1 800011 ^p2 790011)
+(make line ^p1 790011 ^p2 780010)
+(make line ^p1 710003 ^p2 720003)
+(make line ^p1 690005 ^p2 690006)
+(make line ^p1 740005 ^p2 740006)
+(make line ^p1 710008 ^p2 720008)
+(make line ^p1 890003 ^p2 900003)
+(make line ^p1 870005 ^p2 870006)
+(make line ^p1 920005 ^p2 920006)
+(make line ^p1 890008 ^p2 900008)
+(make line ^p1 840000 ^p2 860000)
+(make line ^p1 860000 ^p2 870000)
+(make line ^p1 870000 ^p2 880000)
+(make line ^p1 840000 ^p2 840002)
+(make line ^p1 840002 ^p2 840003)
+(make line ^p1 840003 ^p2 840004)
+(make line ^p1 840004 ^p2 880004)
+(make line ^p1 880004 ^p2 880000)
+(make line ^p1 880000 ^p2 890001)
+(make line ^p1 890001 ^p2 890002)
+(make line ^p1 890002 ^p2 890003)
+(make line ^p1 890003 ^p2 890005)
+(make line ^p1 890005 ^p2 880004)
+(make line ^p1 890005 ^p2 870005)
+(make line ^p1 870005 ^p2 860005)
+(make line ^p1 860005 ^p2 850005)
+(make line ^p1 850005 ^p2 840004)
+(make line ^p1 900000 ^p2 920000)
+(make line ^p1 920000 ^p2 930000)
+(make line ^p1 930000 ^p2 940000)
+(make line ^p1 900000 ^p2 900002)
+(make line ^p1 900002 ^p2 900003)
+(make line ^p1 900003 ^p2 900004)
+(make line ^p1 900004 ^p2 940004)
+(make line ^p1 940004 ^p2 940000)
+(make line ^p1 940000 ^p2 950001)
+(make line ^p1 950001 ^p2 950002)
+(make line ^p1 950002 ^p2 950003)
+(make line ^p1 950003 ^p2 950005)
+(make line ^p1 950005 ^p2 940004)
+(make line ^p1 950005 ^p2 930005)
+(make line ^p1 930005 ^p2 920005)
+(make line ^p1 920005 ^p2 910005)
+(make line ^p1 910005 ^p2 900004)
+(make line ^p1 840006 ^p2 860006)
+(make line ^p1 860006 ^p2 870006)
+(make line ^p1 870006 ^p2 880006)
+(make line ^p1 840006 ^p2 840008)
+(make line ^p1 840008 ^p2 840009)
+(make line ^p1 840009 ^p2 840010)
+(make line ^p1 840010 ^p2 880010)
+(make line ^p1 880010 ^p2 880006)
+(make line ^p1 880006 ^p2 890007)
+(make line ^p1 890007 ^p2 890008)
+(make line ^p1 890008 ^p2 890009)
+(make line ^p1 890009 ^p2 890011)
+(make line ^p1 890011 ^p2 880010)
+(make line ^p1 890011 ^p2 870011)
+(make line ^p1 870011 ^p2 860011)
+(make line ^p1 860011 ^p2 850011)
+(make line ^p1 850011 ^p2 840010)
+(make line ^p1 900006 ^p2 920006)
+(make line ^p1 920006 ^p2 930006)
+(make line ^p1 930006 ^p2 940006)
+(make line ^p1 900006 ^p2 900008)
+(make line ^p1 900008 ^p2 900009)
+(make line ^p1 900009 ^p2 900010)
+(make line ^p1 900010 ^p2 940010)
+(make line ^p1 940010 ^p2 940006)
+(make line ^p1 940006 ^p2 950007)
+(make line ^p1 950007 ^p2 950008)
+(make line ^p1 950008 ^p2 950009)
+(make line ^p1 950009 ^p2 950011)
+(make line ^p1 950011 ^p2 940010)
+(make line ^p1 950011 ^p2 930011)
+(make line ^p1 930011 ^p2 920011)
+(make line ^p1 920011 ^p2 910011)
+(make line ^p1 910011 ^p2 900010)
+(make line ^p1 830003 ^p2 840003)
+(make line ^p1 810005 ^p2 810006)
+(make line ^p1 860005 ^p2 860006)
+(make line ^p1 830008 ^p2 840008)
+(make line ^p1 1010003 ^p2 1020003)
+(make line ^p1 990005 ^p2 990006)
+(make line ^p1 1040005 ^p2 1040006)
+(make line ^p1 1010008 ^p2 1020008)
+(make line ^p1 960000 ^p2 980000)
+(make line ^p1 980000 ^p2 990000)
+(make line ^p1 990000 ^p2 1000000)
+(make line ^p1 960000 ^p2 960002)
+(make line ^p1 960002 ^p2 960003)
+(make line ^p1 960003 ^p2 960004)
+(make line ^p1 960004 ^p2 1000004)
+(make line ^p1 1000004 ^p2 1000000)
+(make line ^p1 1000000 ^p2 1010001)
+(make line ^p1 1010001 ^p2 1010002)
+(make line ^p1 1010002 ^p2 1010003)
+(make line ^p1 1010003 ^p2 1010005)
+(make line ^p1 1010005 ^p2 1000004)
+(make line ^p1 1010005 ^p2 990005)
+(make line ^p1 990005 ^p2 980005)
+(make line ^p1 980005 ^p2 970005)
+(make line ^p1 970005 ^p2 960004)
+(make line ^p1 1020000 ^p2 1040000)
+(make line ^p1 1040000 ^p2 1050000)
+(make line ^p1 1050000 ^p2 1060000)
+(make line ^p1 1020000 ^p2 1020002)
+(make line ^p1 1020002 ^p2 1020003)
+(make line ^p1 1020003 ^p2 1020004)
+(make line ^p1 1020004 ^p2 1060004)
+(make line ^p1 1060004 ^p2 1060000)
+(make line ^p1 1060000 ^p2 1070001)
+(make line ^p1 1070001 ^p2 1070002)
+(make line ^p1 1070002 ^p2 1070003)
+(make line ^p1 1070003 ^p2 1070005)
+(make line ^p1 1070005 ^p2 1060004)
+(make line ^p1 1070005 ^p2 1050005)
+(make line ^p1 1050005 ^p2 1040005)
+(make line ^p1 1040005 ^p2 1030005)
+(make line ^p1 1030005 ^p2 1020004)
+(make line ^p1 960006 ^p2 980006)
+(make line ^p1 980006 ^p2 990006)
+(make line ^p1 990006 ^p2 1000006)
+(make line ^p1 960006 ^p2 960008)
+(make line ^p1 960008 ^p2 960009)
+(make line ^p1 960009 ^p2 960010)
+(make line ^p1 960010 ^p2 1000010)
+(make line ^p1 1000010 ^p2 1000006)
+(make line ^p1 1000006 ^p2 1010007)
+(make line ^p1 1010007 ^p2 1010008)
+(make line ^p1 1010008 ^p2 1010009)
+(make line ^p1 1010009 ^p2 1010011)
+(make line ^p1 1010011 ^p2 1000010)
+(make line ^p1 1010011 ^p2 990011)
+(make line ^p1 990011 ^p2 980011)
+(make line ^p1 980011 ^p2 970011)
+(make line ^p1 970011 ^p2 960010)
+(make line ^p1 1020006 ^p2 1040006)
+(make line ^p1 1040006 ^p2 1050006)
+(make line ^p1 1050006 ^p2 1060006)
+(make line ^p1 1020006 ^p2 1020008)
+(make line ^p1 1020008 ^p2 1020009)
+(make line ^p1 1020009 ^p2 1020010)
+(make line ^p1 1020010 ^p2 1060010)
+(make line ^p1 1060010 ^p2 1060006)
+(make line ^p1 1060006 ^p2 1070007)
+(make line ^p1 1070007 ^p2 1070008)
+(make line ^p1 1070008 ^p2 1070009)
+(make line ^p1 1070009 ^p2 1070011)
+(make line ^p1 1070011 ^p2 1060010)
+(make line ^p1 1070011 ^p2 1050011)
+(make line ^p1 1050011 ^p2 1040011)
+(make line ^p1 1040011 ^p2 1030011)
+(make line ^p1 1030011 ^p2 1020010)
+(make line ^p1 950003 ^p2 960003)
+(make line ^p1 930005 ^p2 930006)
+(make line ^p1 980005 ^p2 980006)
+(make line ^p1 950008 ^p2 960008)
+(make line ^p1 1130003 ^p2 1140003)
+(make line ^p1 1110005 ^p2 1110006)
+(make line ^p1 1160005 ^p2 1160006)
+(make line ^p1 1130008 ^p2 1140008)
+(make line ^p1 1080000 ^p2 1100000)
+(make line ^p1 1100000 ^p2 1110000)
+(make line ^p1 1110000 ^p2 1120000)
+(make line ^p1 1080000 ^p2 1080002)
+(make line ^p1 1080002 ^p2 1080003)
+(make line ^p1 1080003 ^p2 1080004)
+(make line ^p1 1080004 ^p2 1120004)
+(make line ^p1 1120004 ^p2 1120000)
+(make line ^p1 1120000 ^p2 1130001)
+(make line ^p1 1130001 ^p2 1130002)
+(make line ^p1 1130002 ^p2 1130003)
+(make line ^p1 1130003 ^p2 1130005)
+(make line ^p1 1130005 ^p2 1120004)
+(make line ^p1 1130005 ^p2 1110005)
+(make line ^p1 1110005 ^p2 1100005)
+(make line ^p1 1100005 ^p2 1090005)
+(make line ^p1 1090005 ^p2 1080004)
+(make line ^p1 1140000 ^p2 1160000)
+(make line ^p1 1160000 ^p2 1170000)
+(make line ^p1 1170000 ^p2 1180000)
+(make line ^p1 1140000 ^p2 1140002)
+(make line ^p1 1140002 ^p2 1140003)
+(make line ^p1 1140003 ^p2 1140004)
+(make line ^p1 1140004 ^p2 1180004)
+(make line ^p1 1180004 ^p2 1180000)
+(make line ^p1 1180000 ^p2 1190001)
+(make line ^p1 1190001 ^p2 1190002)
+(make line ^p1 1190002 ^p2 1190003)
+(make line ^p1 1190003 ^p2 1190005)
+(make line ^p1 1190005 ^p2 1180004)
+(make line ^p1 1190005 ^p2 1170005)
+(make line ^p1 1170005 ^p2 1160005)
+(make line ^p1 1160005 ^p2 1150005)
+(make line ^p1 1150005 ^p2 1140004)
+(make line ^p1 1080006 ^p2 1100006)
+(make line ^p1 1100006 ^p2 1110006)
+(make line ^p1 1110006 ^p2 1120006)
+(make line ^p1 1080006 ^p2 1080008)
+(make line ^p1 1080008 ^p2 1080009)
+(make line ^p1 1080009 ^p2 1080010)
+(make line ^p1 1080010 ^p2 1120010)
+(make line ^p1 1120010 ^p2 1120006)
+(make line ^p1 1120006 ^p2 1130007)
+(make line ^p1 1130007 ^p2 1130008)
+(make line ^p1 1130008 ^p2 1130009)
+(make line ^p1 1130009 ^p2 1130011)
+(make line ^p1 1130011 ^p2 1120010)
+(make line ^p1 1130011 ^p2 1110011)
+(make line ^p1 1110011 ^p2 1100011)
+(make line ^p1 1100011 ^p2 1090011)
+(make line ^p1 1090011 ^p2 1080010)
+(make line ^p1 1140006 ^p2 1160006)
+(make line ^p1 1160006 ^p2 1170006)
+(make line ^p1 1170006 ^p2 1180006)
+(make line ^p1 1140006 ^p2 1140008)
+(make line ^p1 1140008 ^p2 1140009)
+(make line ^p1 1140009 ^p2 1140010)
+(make line ^p1 1140010 ^p2 1180010)
+(make line ^p1 1180010 ^p2 1180006)
+(make line ^p1 1180006 ^p2 1190007)
+(make line ^p1 1190007 ^p2 1190008)
+(make line ^p1 1190008 ^p2 1190009)
+(make line ^p1 1190009 ^p2 1190011)
+(make line ^p1 1190011 ^p2 1180010)
+(make line ^p1 1190011 ^p2 1170011)
+(make line ^p1 1170011 ^p2 1160011)
+(make line ^p1 1160011 ^p2 1150011)
+(make line ^p1 1150011 ^p2 1140010)
+(make line ^p1 1070003 ^p2 1080003)
+(make line ^p1 1050005 ^p2 1050006)
+(make line ^p1 1100005 ^p2 1100006)
+(make line ^p1 1070008 ^p2 1080008)
+(make line ^p1 1250003 ^p2 1260003)
+(make line ^p1 1230005 ^p2 1230006)
+(make line ^p1 1280005 ^p2 1280006)
+(make line ^p1 1250008 ^p2 1260008)
+(make line ^p1 1200000 ^p2 1220000)
+(make line ^p1 1220000 ^p2 1230000)
+(make line ^p1 1230000 ^p2 1240000)
+(make line ^p1 1200000 ^p2 1200002)
+(make line ^p1 1200002 ^p2 1200003)
+(make line ^p1 1200003 ^p2 1200004)
+(make line ^p1 1200004 ^p2 1240004)
+(make line ^p1 1240004 ^p2 1240000)
+(make line ^p1 1240000 ^p2 1250001)
+(make line ^p1 1250001 ^p2 1250002)
+(make line ^p1 1250002 ^p2 1250003)
+(make line ^p1 1250003 ^p2 1250005)
+(make line ^p1 1250005 ^p2 1240004)
+(make line ^p1 1250005 ^p2 1230005)
+(make line ^p1 1230005 ^p2 1220005)
+(make line ^p1 1220005 ^p2 1210005)
+(make line ^p1 1210005 ^p2 1200004)
+(make line ^p1 1260000 ^p2 1280000)
+(make line ^p1 1280000 ^p2 1290000)
+(make line ^p1 1290000 ^p2 1300000)
+(make line ^p1 1260000 ^p2 1260002)
+(make line ^p1 1260002 ^p2 1260003)
+(make line ^p1 1260003 ^p2 1260004)
+(make line ^p1 1260004 ^p2 1300004)
+(make line ^p1 1300004 ^p2 1300000)
+(make line ^p1 1300000 ^p2 1310001)
+(make line ^p1 1310001 ^p2 1310002)
+(make line ^p1 1310002 ^p2 1310003)
+(make line ^p1 1310003 ^p2 1310005)
+(make line ^p1 1310005 ^p2 1300004)
+(make line ^p1 1310005 ^p2 1290005)
+(make line ^p1 1290005 ^p2 1280005)
+(make line ^p1 1280005 ^p2 1270005)
+(make line ^p1 1270005 ^p2 1260004)
+(make line ^p1 1200006 ^p2 1220006)
+(make line ^p1 1220006 ^p2 1230006)
+(make line ^p1 1230006 ^p2 1240006)
+(make line ^p1 1200006 ^p2 1200008)
+(make line ^p1 1200008 ^p2 1200009)
+(make line ^p1 1200009 ^p2 1200010)
+(make line ^p1 1200010 ^p2 1240010)
+(make line ^p1 1240010 ^p2 1240006)
+(make line ^p1 1240006 ^p2 1250007)
+(make line ^p1 1250007 ^p2 1250008)
+(make line ^p1 1250008 ^p2 1250009)
+(make line ^p1 1250009 ^p2 1250011)
+(make line ^p1 1250011 ^p2 1240010)
+(make line ^p1 1250011 ^p2 1230011)
+(make line ^p1 1230011 ^p2 1220011)
+(make line ^p1 1220011 ^p2 1210011)
+(make line ^p1 1210011 ^p2 1200010)
+(make line ^p1 1260006 ^p2 1280006)
+(make line ^p1 1280006 ^p2 1290006)
+(make line ^p1 1290006 ^p2 1300006)
+(make line ^p1 1260006 ^p2 1260008)
+(make line ^p1 1260008 ^p2 1260009)
+(make line ^p1 1260009 ^p2 1260010)
+(make line ^p1 1260010 ^p2 1300010)
+(make line ^p1 1300010 ^p2 1300006)
+(make line ^p1 1300006 ^p2 1310007)
+(make line ^p1 1310007 ^p2 1310008)
+(make line ^p1 1310008 ^p2 1310009)
+(make line ^p1 1310009 ^p2 1310011)
+(make line ^p1 1310011 ^p2 1300010)
+(make line ^p1 1310011 ^p2 1290011)
+(make line ^p1 1290011 ^p2 1280011)
+(make line ^p1 1280011 ^p2 1270011)
+(make line ^p1 1270011 ^p2 1260010)
+(make line ^p1 1190003 ^p2 1200003)
+(make line ^p1 1170005 ^p2 1170006)
+(make line ^p1 1220005 ^p2 1220006)
+(make line ^p1 1190008 ^p2 1200008)
+(make line ^p1 1370003 ^p2 1380003)
+(make line ^p1 1350005 ^p2 1350006)
+(make line ^p1 1400005 ^p2 1400006)
+(make line ^p1 1370008 ^p2 1380008)
+(make line ^p1 1320000 ^p2 1340000)
+(make line ^p1 1340000 ^p2 1350000)
+(make line ^p1 1350000 ^p2 1360000)
+(make line ^p1 1320000 ^p2 1320002)
+(make line ^p1 1320002 ^p2 1320003)
+(make line ^p1 1320003 ^p2 1320004)
+(make line ^p1 1320004 ^p2 1360004)
+(make line ^p1 1360004 ^p2 1360000)
+(make line ^p1 1360000 ^p2 1370001)
+(make line ^p1 1370001 ^p2 1370002)
+(make line ^p1 1370002 ^p2 1370003)
+(make line ^p1 1370003 ^p2 1370005)
+(make line ^p1 1370005 ^p2 1360004)
+(make line ^p1 1370005 ^p2 1350005)
+(make line ^p1 1350005 ^p2 1340005)
+(make line ^p1 1340005 ^p2 1330005)
+(make line ^p1 1330005 ^p2 1320004)
+(make line ^p1 1380000 ^p2 1400000)
+(make line ^p1 1400000 ^p2 1410000)
+(make line ^p1 1410000 ^p2 1420000)
+(make line ^p1 1380000 ^p2 1380002)
+(make line ^p1 1380002 ^p2 1380003)
+(make line ^p1 1380003 ^p2 1380004)
+(make line ^p1 1380004 ^p2 1420004)
+(make line ^p1 1420004 ^p2 1420000)
+(make line ^p1 1420000 ^p2 1430001)
+(make line ^p1 1430001 ^p2 1430002)
+(make line ^p1 1430002 ^p2 1430003)
+(make line ^p1 1430003 ^p2 1430005)
+(make line ^p1 1430005 ^p2 1420004)
+(make line ^p1 1430005 ^p2 1410005)
+(make line ^p1 1410005 ^p2 1400005)
+(make line ^p1 1400005 ^p2 1390005)
+(make line ^p1 1390005 ^p2 1380004)
+(make line ^p1 1320006 ^p2 1340006)
+(make line ^p1 1340006 ^p2 1350006)
+(make line ^p1 1350006 ^p2 1360006)
+(make line ^p1 1320006 ^p2 1320008)
+(make line ^p1 1320008 ^p2 1320009)
+(make line ^p1 1320009 ^p2 1320010)
+(make line ^p1 1320010 ^p2 1360010)
+(make line ^p1 1360010 ^p2 1360006)
+(make line ^p1 1360006 ^p2 1370007)
+(make line ^p1 1370007 ^p2 1370008)
+(make line ^p1 1370008 ^p2 1370009)
+(make line ^p1 1370009 ^p2 1370011)
+(make line ^p1 1370011 ^p2 1360010)
+(make line ^p1 1370011 ^p2 1350011)
+(make line ^p1 1350011 ^p2 1340011)
+(make line ^p1 1340011 ^p2 1330011)
+(make line ^p1 1330011 ^p2 1320010)
+(make line ^p1 1380006 ^p2 1400006)
+(make line ^p1 1400006 ^p2 1410006)
+(make line ^p1 1410006 ^p2 1420006)
+(make line ^p1 1380006 ^p2 1380008)
+(make line ^p1 1380008 ^p2 1380009)
+(make line ^p1 1380009 ^p2 1380010)
+(make line ^p1 1380010 ^p2 1420010)
+(make line ^p1 1420010 ^p2 1420006)
+(make line ^p1 1420006 ^p2 1430007)
+(make line ^p1 1430007 ^p2 1430008)
+(make line ^p1 1430008 ^p2 1430009)
+(make line ^p1 1430009 ^p2 1430011)
+(make line ^p1 1430011 ^p2 1420010)
+(make line ^p1 1430011 ^p2 1410011)
+(make line ^p1 1410011 ^p2 1400011)
+(make line ^p1 1400011 ^p2 1390011)
+(make line ^p1 1390011 ^p2 1380010)
+(make line ^p1 1310003 ^p2 1320003)
+(make line ^p1 1290005 ^p2 1290006)
+(make line ^p1 1340005 ^p2 1340006)
+(make line ^p1 1310008 ^p2 1320008)
+(make line ^p1 1490003 ^p2 1500003)
+(make line ^p1 1470005 ^p2 1470006)
+(make line ^p1 1520005 ^p2 1520006)
+(make line ^p1 1490008 ^p2 1500008)
+(make line ^p1 1440000 ^p2 1460000)
+(make line ^p1 1460000 ^p2 1470000)
+(make line ^p1 1470000 ^p2 1480000)
+(make line ^p1 1440000 ^p2 1440002)
+(make line ^p1 1440002 ^p2 1440003)
+(make line ^p1 1440003 ^p2 1440004)
+(make line ^p1 1440004 ^p2 1480004)
+(make line ^p1 1480004 ^p2 1480000)
+(make line ^p1 1480000 ^p2 1490001)
+(make line ^p1 1490001 ^p2 1490002)
+(make line ^p1 1490002 ^p2 1490003)
+(make line ^p1 1490003 ^p2 1490005)
+(make line ^p1 1490005 ^p2 1480004)
+(make line ^p1 1490005 ^p2 1470005)
+(make line ^p1 1470005 ^p2 1460005)
+(make line ^p1 1460005 ^p2 1450005)
+(make line ^p1 1450005 ^p2 1440004)
+(make line ^p1 1500000 ^p2 1520000)
+(make line ^p1 1520000 ^p2 1530000)
+(make line ^p1 1530000 ^p2 1540000)
+(make line ^p1 1500000 ^p2 1500002)
+(make line ^p1 1500002 ^p2 1500003)
+(make line ^p1 1500003 ^p2 1500004)
+(make line ^p1 1500004 ^p2 1540004)
+(make line ^p1 1540004 ^p2 1540000)
+(make line ^p1 1540000 ^p2 1550001)
+(make line ^p1 1550001 ^p2 1550002)
+(make line ^p1 1550002 ^p2 1550003)
+(make line ^p1 1550003 ^p2 1550005)
+(make line ^p1 1550005 ^p2 1540004)
+(make line ^p1 1550005 ^p2 1530005)
+(make line ^p1 1530005 ^p2 1520005)
+(make line ^p1 1520005 ^p2 1510005)
+(make line ^p1 1510005 ^p2 1500004)
+(make line ^p1 1440006 ^p2 1460006)
+(make line ^p1 1460006 ^p2 1470006)
+(make line ^p1 1470006 ^p2 1480006)
+(make line ^p1 1440006 ^p2 1440008)
+(make line ^p1 1440008 ^p2 1440009)
+(make line ^p1 1440009 ^p2 1440010)
+(make line ^p1 1440010 ^p2 1480010)
+(make line ^p1 1480010 ^p2 1480006)
+(make line ^p1 1480006 ^p2 1490007)
+(make line ^p1 1490007 ^p2 1490008)
+(make line ^p1 1490008 ^p2 1490009)
+(make line ^p1 1490009 ^p2 1490011)
+(make line ^p1 1490011 ^p2 1480010)
+(make line ^p1 1490011 ^p2 1470011)
+(make line ^p1 1470011 ^p2 1460011)
+(make line ^p1 1460011 ^p2 1450011)
+(make line ^p1 1450011 ^p2 1440010)
+(make line ^p1 1500006 ^p2 1520006)
+(make line ^p1 1520006 ^p2 1530006)
+(make line ^p1 1530006 ^p2 1540006)
+(make line ^p1 1500006 ^p2 1500008)
+(make line ^p1 1500008 ^p2 1500009)
+(make line ^p1 1500009 ^p2 1500010)
+(make line ^p1 1500010 ^p2 1540010)
+(make line ^p1 1540010 ^p2 1540006)
+(make line ^p1 1540006 ^p2 1550007)
+(make line ^p1 1550007 ^p2 1550008)
+(make line ^p1 1550008 ^p2 1550009)
+(make line ^p1 1550009 ^p2 1550011)
+(make line ^p1 1550011 ^p2 1540010)
+(make line ^p1 1550011 ^p2 1530011)
+(make line ^p1 1530011 ^p2 1520011)
+(make line ^p1 1520011 ^p2 1510011)
+(make line ^p1 1510011 ^p2 1500010)
+(make line ^p1 1430003 ^p2 1440003)
+(make line ^p1 1410005 ^p2 1410006)
+(make line ^p1 1460005 ^p2 1460006)
+(make line ^p1 1430008 ^p2 1440008)
+(make line ^p1 1610003 ^p2 1620003)
+(make line ^p1 1590005 ^p2 1590006)
+(make line ^p1 1640005 ^p2 1640006)
+(make line ^p1 1610008 ^p2 1620008)
+(make line ^p1 1560000 ^p2 1580000)
+(make line ^p1 1580000 ^p2 1590000)
+(make line ^p1 1590000 ^p2 1600000)
+(make line ^p1 1560000 ^p2 1560002)
+(make line ^p1 1560002 ^p2 1560003)
+(make line ^p1 1560003 ^p2 1560004)
+(make line ^p1 1560004 ^p2 1600004)
+(make line ^p1 1600004 ^p2 1600000)
+(make line ^p1 1600000 ^p2 1610001)
+(make line ^p1 1610001 ^p2 1610002)
+(make line ^p1 1610002 ^p2 1610003)
+(make line ^p1 1610003 ^p2 1610005)
+(make line ^p1 1610005 ^p2 1600004)
+(make line ^p1 1610005 ^p2 1590005)
+(make line ^p1 1590005 ^p2 1580005)
+(make line ^p1 1580005 ^p2 1570005)
+(make line ^p1 1570005 ^p2 1560004)
+(make line ^p1 1620000 ^p2 1640000)
+(make line ^p1 1640000 ^p2 1650000)
+(make line ^p1 1650000 ^p2 1660000)
+(make line ^p1 1620000 ^p2 1620002)
+(make line ^p1 1620002 ^p2 1620003)
+(make line ^p1 1620003 ^p2 1620004)
+(make line ^p1 1620004 ^p2 1660004)
+(make line ^p1 1660004 ^p2 1660000)
+(make line ^p1 1660000 ^p2 1670001)
+(make line ^p1 1670001 ^p2 1670002)
+(make line ^p1 1670002 ^p2 1670003)
+(make line ^p1 1670003 ^p2 1670005)
+(make line ^p1 1670005 ^p2 1660004)
+(make line ^p1 1670005 ^p2 1650005)
+(make line ^p1 1650005 ^p2 1640005)
+(make line ^p1 1640005 ^p2 1630005)
+(make line ^p1 1630005 ^p2 1620004)
+(make line ^p1 1560006 ^p2 1580006)
+(make line ^p1 1580006 ^p2 1590006)
+(make line ^p1 1590006 ^p2 1600006)
+(make line ^p1 1560006 ^p2 1560008)
+(make line ^p1 1560008 ^p2 1560009)
+(make line ^p1 1560009 ^p2 1560010)
+(make line ^p1 1560010 ^p2 1600010)
+(make line ^p1 1600010 ^p2 1600006)
+(make line ^p1 1600006 ^p2 1610007)
+(make line ^p1 1610007 ^p2 1610008)
+(make line ^p1 1610008 ^p2 1610009)
+(make line ^p1 1610009 ^p2 1610011)
+(make line ^p1 1610011 ^p2 1600010)
+(make line ^p1 1610011 ^p2 1590011)
+(make line ^p1 1590011 ^p2 1580011)
+(make line ^p1 1580011 ^p2 1570011)
+(make line ^p1 1570011 ^p2 1560010)
+(make line ^p1 1620006 ^p2 1640006)
+(make line ^p1 1640006 ^p2 1650006)
+(make line ^p1 1650006 ^p2 1660006)
+(make line ^p1 1620006 ^p2 1620008)
+(make line ^p1 1620008 ^p2 1620009)
+(make line ^p1 1620009 ^p2 1620010)
+(make line ^p1 1620010 ^p2 1660010)
+(make line ^p1 1660010 ^p2 1660006)
+(make line ^p1 1660006 ^p2 1670007)
+(make line ^p1 1670007 ^p2 1670008)
+(make line ^p1 1670008 ^p2 1670009)
+(make line ^p1 1670009 ^p2 1670011)
+(make line ^p1 1670011 ^p2 1660010)
+(make line ^p1 1670011 ^p2 1650011)
+(make line ^p1 1650011 ^p2 1640011)
+(make line ^p1 1640011 ^p2 1630011)
+(make line ^p1 1630011 ^p2 1620010)
+(make line ^p1 1550003 ^p2 1560003)
+(make line ^p1 1530005 ^p2 1530006)
+(make line ^p1 1580005 ^p2 1580006)
+(make line ^p1 1550008 ^p2 1560008)
+(make line ^p1 1730003 ^p2 1740003)
+(make line ^p1 1710005 ^p2 1710006)
+(make line ^p1 1760005 ^p2 1760006)
+(make line ^p1 1730008 ^p2 1740008)
+(make line ^p1 1680000 ^p2 1700000)
+(make line ^p1 1700000 ^p2 1710000)
+(make line ^p1 1710000 ^p2 1720000)
+(make line ^p1 1680000 ^p2 1680002)
+(make line ^p1 1680002 ^p2 1680003)
+(make line ^p1 1680003 ^p2 1680004)
+(make line ^p1 1680004 ^p2 1720004)
+(make line ^p1 1720004 ^p2 1720000)
+(make line ^p1 1720000 ^p2 1730001)
+(make line ^p1 1730001 ^p2 1730002)
+(make line ^p1 1730002 ^p2 1730003)
+(make line ^p1 1730003 ^p2 1730005)
+(make line ^p1 1730005 ^p2 1720004)
+(make line ^p1 1730005 ^p2 1710005)
+(make line ^p1 1710005 ^p2 1700005)
+(make line ^p1 1700005 ^p2 1690005)
+(make line ^p1 1690005 ^p2 1680004)
+(make line ^p1 1740000 ^p2 1760000)
+(make line ^p1 1760000 ^p2 1770000)
+(make line ^p1 1770000 ^p2 1780000)
+(make line ^p1 1740000 ^p2 1740002)
+(make line ^p1 1740002 ^p2 1740003)
+(make line ^p1 1740003 ^p2 1740004)
+(make line ^p1 1740004 ^p2 1780004)
+(make line ^p1 1780004 ^p2 1780000)
+(make line ^p1 1780000 ^p2 1790001)
+(make line ^p1 1790001 ^p2 1790002)
+(make line ^p1 1790002 ^p2 1790003)
+(make line ^p1 1790003 ^p2 1790005)
+(make line ^p1 1790005 ^p2 1780004)
+(make line ^p1 1790005 ^p2 1770005)
+(make line ^p1 1770005 ^p2 1760005)
+(make line ^p1 1760005 ^p2 1750005)
+(make line ^p1 1750005 ^p2 1740004)
+(make line ^p1 1680006 ^p2 1700006)
+(make line ^p1 1700006 ^p2 1710006)
+(make line ^p1 1710006 ^p2 1720006)
+(make line ^p1 1680006 ^p2 1680008)
+(make line ^p1 1680008 ^p2 1680009)
+(make line ^p1 1680009 ^p2 1680010)
+(make line ^p1 1680010 ^p2 1720010)
+(make line ^p1 1720010 ^p2 1720006)
+(make line ^p1 1720006 ^p2 1730007)
+(make line ^p1 1730007 ^p2 1730008)
+(make line ^p1 1730008 ^p2 1730009)
+(make line ^p1 1730009 ^p2 1730011)
+(make line ^p1 1730011 ^p2 1720010)
+(make line ^p1 1730011 ^p2 1710011)
+(make line ^p1 1710011 ^p2 1700011)
+(make line ^p1 1700011 ^p2 1690011)
+(make line ^p1 1690011 ^p2 1680010)
+(make line ^p1 1740006 ^p2 1760006)
+(make line ^p1 1760006 ^p2 1770006)
+(make line ^p1 1770006 ^p2 1780006)
+(make line ^p1 1740006 ^p2 1740008)
+(make line ^p1 1740008 ^p2 1740009)
+(make line ^p1 1740009 ^p2 1740010)
+(make line ^p1 1740010 ^p2 1780010)
+(make line ^p1 1780010 ^p2 1780006)
+(make line ^p1 1780006 ^p2 1790007)
+(make line ^p1 1790007 ^p2 1790008)
+(make line ^p1 1790008 ^p2 1790009)
+(make line ^p1 1790009 ^p2 1790011)
+(make line ^p1 1790011 ^p2 1780010)
+(make line ^p1 1790011 ^p2 1770011)
+(make line ^p1 1770011 ^p2 1760011)
+(make line ^p1 1760011 ^p2 1750011)
+(make line ^p1 1750011 ^p2 1740010)
+(make line ^p1 1670003 ^p2 1680003)
+(make line ^p1 1650005 ^p2 1650006)
+(make line ^p1 1700005 ^p2 1700006)
+(make line ^p1 1670008 ^p2 1680008)
+(make line ^p1 1850003 ^p2 1860003)
+(make line ^p1 1830005 ^p2 1830006)
+(make line ^p1 1880005 ^p2 1880006)
+(make line ^p1 1850008 ^p2 1860008)
+(make line ^p1 1800000 ^p2 1820000)
+(make line ^p1 1820000 ^p2 1830000)
+(make line ^p1 1830000 ^p2 1840000)
+(make line ^p1 1800000 ^p2 1800002)
+(make line ^p1 1800002 ^p2 1800003)
+(make line ^p1 1800003 ^p2 1800004)
+(make line ^p1 1800004 ^p2 1840004)
+(make line ^p1 1840004 ^p2 1840000)
+(make line ^p1 1840000 ^p2 1850001)
+(make line ^p1 1850001 ^p2 1850002)
+(make line ^p1 1850002 ^p2 1850003)
+(make line ^p1 1850003 ^p2 1850005)
+(make line ^p1 1850005 ^p2 1840004)
+(make line ^p1 1850005 ^p2 1830005)
+(make line ^p1 1830005 ^p2 1820005)
+(make line ^p1 1820005 ^p2 1810005)
+(make line ^p1 1810005 ^p2 1800004)
+(make line ^p1 1860000 ^p2 1880000)
+(make line ^p1 1880000 ^p2 1890000)
+(make line ^p1 1890000 ^p2 1900000)
+(make line ^p1 1860000 ^p2 1860002)
+(make line ^p1 1860002 ^p2 1860003)
+(make line ^p1 1860003 ^p2 1860004)
+(make line ^p1 1860004 ^p2 1900004)
+(make line ^p1 1900004 ^p2 1900000)
+(make line ^p1 1900000 ^p2 1910001)
+(make line ^p1 1910001 ^p2 1910002)
+(make line ^p1 1910002 ^p2 1910003)
+(make line ^p1 1910003 ^p2 1910005)
+(make line ^p1 1910005 ^p2 1900004)
+(make line ^p1 1910005 ^p2 1890005)
+(make line ^p1 1890005 ^p2 1880005)
+(make line ^p1 1880005 ^p2 1870005)
+(make line ^p1 1870005 ^p2 1860004)
+(make line ^p1 1800006 ^p2 1820006)
+(make line ^p1 1820006 ^p2 1830006)
+(make line ^p1 1830006 ^p2 1840006)
+(make line ^p1 1800006 ^p2 1800008)
+(make line ^p1 1800008 ^p2 1800009)
+(make line ^p1 1800009 ^p2 1800010)
+(make line ^p1 1800010 ^p2 1840010)
+(make line ^p1 1840010 ^p2 1840006)
+(make line ^p1 1840006 ^p2 1850007)
+(make line ^p1 1850007 ^p2 1850008)
+(make line ^p1 1850008 ^p2 1850009)
+(make line ^p1 1850009 ^p2 1850011)
+(make line ^p1 1850011 ^p2 1840010)
+(make line ^p1 1850011 ^p2 1830011)
+(make line ^p1 1830011 ^p2 1820011)
+(make line ^p1 1820011 ^p2 1810011)
+(make line ^p1 1810011 ^p2 1800010)
+(make line ^p1 1860006 ^p2 1880006)
+(make line ^p1 1880006 ^p2 1890006)
+(make line ^p1 1890006 ^p2 1900006)
+(make line ^p1 1860006 ^p2 1860008)
+(make line ^p1 1860008 ^p2 1860009)
+(make line ^p1 1860009 ^p2 1860010)
+(make line ^p1 1860010 ^p2 1900010)
+(make line ^p1 1900010 ^p2 1900006)
+(make line ^p1 1900006 ^p2 1910007)
+(make line ^p1 1910007 ^p2 1910008)
+(make line ^p1 1910008 ^p2 1910009)
+(make line ^p1 1910009 ^p2 1910011)
+(make line ^p1 1910011 ^p2 1900010)
+(make line ^p1 1910011 ^p2 1890011)
+(make line ^p1 1890011 ^p2 1880011)
+(make line ^p1 1880011 ^p2 1870011)
+(make line ^p1 1870011 ^p2 1860010)
+(make line ^p1 1790003 ^p2 1800003)
+(make line ^p1 1770005 ^p2 1770006)
+(make line ^p1 1820005 ^p2 1820006)
+(make line ^p1 1790008 ^p2 1800008)
+(make line ^p1 1970003 ^p2 1980003)
+(make line ^p1 1950005 ^p2 1950006)
+(make line ^p1 2000005 ^p2 2000006)
+(make line ^p1 1970008 ^p2 1980008)
+(make line ^p1 1920000 ^p2 1940000)
+(make line ^p1 1940000 ^p2 1950000)
+(make line ^p1 1950000 ^p2 1960000)
+(make line ^p1 1920000 ^p2 1920002)
+(make line ^p1 1920002 ^p2 1920003)
+(make line ^p1 1920003 ^p2 1920004)
+(make line ^p1 1920004 ^p2 1960004)
+(make line ^p1 1960004 ^p2 1960000)
+(make line ^p1 1960000 ^p2 1970001)
+(make line ^p1 1970001 ^p2 1970002)
+(make line ^p1 1970002 ^p2 1970003)
+(make line ^p1 1970003 ^p2 1970005)
+(make line ^p1 1970005 ^p2 1960004)
+(make line ^p1 1970005 ^p2 1950005)
+(make line ^p1 1950005 ^p2 1940005)
+(make line ^p1 1940005 ^p2 1930005)
+(make line ^p1 1930005 ^p2 1920004)
+(make line ^p1 1980000 ^p2 2000000)
+(make line ^p1 2000000 ^p2 2010000)
+(make line ^p1 2010000 ^p2 2020000)
+(make line ^p1 1980000 ^p2 1980002)
+(make line ^p1 1980002 ^p2 1980003)
+(make line ^p1 1980003 ^p2 1980004)
+(make line ^p1 1980004 ^p2 2020004)
+(make line ^p1 2020004 ^p2 2020000)
+(make line ^p1 2020000 ^p2 2030001)
+(make line ^p1 2030001 ^p2 2030002)
+(make line ^p1 2030002 ^p2 2030003)
+(make line ^p1 2030003 ^p2 2030005)
+(make line ^p1 2030005 ^p2 2020004)
+(make line ^p1 2030005 ^p2 2010005)
+(make line ^p1 2010005 ^p2 2000005)
+(make line ^p1 2000005 ^p2 1990005)
+(make line ^p1 1990005 ^p2 1980004)
+(make line ^p1 1920006 ^p2 1940006)
+(make line ^p1 1940006 ^p2 1950006)
+(make line ^p1 1950006 ^p2 1960006)
+(make line ^p1 1920006 ^p2 1920008)
+(make line ^p1 1920008 ^p2 1920009)
+(make line ^p1 1920009 ^p2 1920010)
+(make line ^p1 1920010 ^p2 1960010)
+(make line ^p1 1960010 ^p2 1960006)
+(make line ^p1 1960006 ^p2 1970007)
+(make line ^p1 1970007 ^p2 1970008)
+(make line ^p1 1970008 ^p2 1970009)
+(make line ^p1 1970009 ^p2 1970011)
+(make line ^p1 1970011 ^p2 1960010)
+(make line ^p1 1970011 ^p2 1950011)
+(make line ^p1 1950011 ^p2 1940011)
+(make line ^p1 1940011 ^p2 1930011)
+(make line ^p1 1930011 ^p2 1920010)
+(make line ^p1 1980006 ^p2 2000006)
+(make line ^p1 2000006 ^p2 2010006)
+(make line ^p1 2010006 ^p2 2020006)
+(make line ^p1 1980006 ^p2 1980008)
+(make line ^p1 1980008 ^p2 1980009)
+(make line ^p1 1980009 ^p2 1980010)
+(make line ^p1 1980010 ^p2 2020010)
+(make line ^p1 2020010 ^p2 2020006)
+(make line ^p1 2020006 ^p2 2030007)
+(make line ^p1 2030007 ^p2 2030008)
+(make line ^p1 2030008 ^p2 2030009)
+(make line ^p1 2030009 ^p2 2030011)
+(make line ^p1 2030011 ^p2 2020010)
+(make line ^p1 2030011 ^p2 2010011)
+(make line ^p1 2010011 ^p2 2000011)
+(make line ^p1 2000011 ^p2 1990011)
+(make line ^p1 1990011 ^p2 1980010)
+(make line ^p1 1910003 ^p2 1920003)
+(make line ^p1 1890005 ^p2 1890006)
+(make line ^p1 1940005 ^p2 1940006)
+(make line ^p1 1910008 ^p2 1920008)
+(make line ^p1 2090003 ^p2 2100003)
+(make line ^p1 2070005 ^p2 2070006)
+(make line ^p1 2120005 ^p2 2120006)
+(make line ^p1 2090008 ^p2 2100008)
+(make line ^p1 2040000 ^p2 2060000)
+(make line ^p1 2060000 ^p2 2070000)
+(make line ^p1 2070000 ^p2 2080000)
+(make line ^p1 2040000 ^p2 2040002)
+(make line ^p1 2040002 ^p2 2040003)
+(make line ^p1 2040003 ^p2 2040004)
+(make line ^p1 2040004 ^p2 2080004)
+(make line ^p1 2080004 ^p2 2080000)
+(make line ^p1 2080000 ^p2 2090001)
+(make line ^p1 2090001 ^p2 2090002)
+(make line ^p1 2090002 ^p2 2090003)
+(make line ^p1 2090003 ^p2 2090005)
+(make line ^p1 2090005 ^p2 2080004)
+(make line ^p1 2090005 ^p2 2070005)
+(make line ^p1 2070005 ^p2 2060005)
+(make line ^p1 2060005 ^p2 2050005)
+(make line ^p1 2050005 ^p2 2040004)
+(make line ^p1 2100000 ^p2 2120000)
+(make line ^p1 2120000 ^p2 2130000)
+(make line ^p1 2130000 ^p2 2140000)
+(make line ^p1 2100000 ^p2 2100002)
+(make line ^p1 2100002 ^p2 2100003)
+(make line ^p1 2100003 ^p2 2100004)
+(make line ^p1 2100004 ^p2 2140004)
+(make line ^p1 2140004 ^p2 2140000)
+(make line ^p1 2140000 ^p2 2150001)
+(make line ^p1 2150001 ^p2 2150002)
+(make line ^p1 2150002 ^p2 2150003)
+(make line ^p1 2150003 ^p2 2150005)
+(make line ^p1 2150005 ^p2 2140004)
+(make line ^p1 2150005 ^p2 2130005)
+(make line ^p1 2130005 ^p2 2120005)
+(make line ^p1 2120005 ^p2 2110005)
+(make line ^p1 2110005 ^p2 2100004)
+(make line ^p1 2040006 ^p2 2060006)
+(make line ^p1 2060006 ^p2 2070006)
+(make line ^p1 2070006 ^p2 2080006)
+(make line ^p1 2040006 ^p2 2040008)
+(make line ^p1 2040008 ^p2 2040009)
+(make line ^p1 2040009 ^p2 2040010)
+(make line ^p1 2040010 ^p2 2080010)
+(make line ^p1 2080010 ^p2 2080006)
+(make line ^p1 2080006 ^p2 2090007)
+(make line ^p1 2090007 ^p2 2090008)
+(make line ^p1 2090008 ^p2 2090009)
+(make line ^p1 2090009 ^p2 2090011)
+(make line ^p1 2090011 ^p2 2080010)
+(make line ^p1 2090011 ^p2 2070011)
+(make line ^p1 2070011 ^p2 2060011)
+(make line ^p1 2060011 ^p2 2050011)
+(make line ^p1 2050011 ^p2 2040010)
+(make line ^p1 2100006 ^p2 2120006)
+(make line ^p1 2120006 ^p2 2130006)
+(make line ^p1 2130006 ^p2 2140006)
+(make line ^p1 2100006 ^p2 2100008)
+(make line ^p1 2100008 ^p2 2100009)
+(make line ^p1 2100009 ^p2 2100010)
+(make line ^p1 2100010 ^p2 2140010)
+(make line ^p1 2140010 ^p2 2140006)
+(make line ^p1 2140006 ^p2 2150007)
+(make line ^p1 2150007 ^p2 2150008)
+(make line ^p1 2150008 ^p2 2150009)
+(make line ^p1 2150009 ^p2 2150011)
+(make line ^p1 2150011 ^p2 2140010)
+(make line ^p1 2150011 ^p2 2130011)
+(make line ^p1 2130011 ^p2 2120011)
+(make line ^p1 2120011 ^p2 2110011)
+(make line ^p1 2110011 ^p2 2100010)
+(make line ^p1 2030003 ^p2 2040003)
+(make line ^p1 2010005 ^p2 2010006)
+(make line ^p1 2060005 ^p2 2060006)
+(make line ^p1 2030008 ^p2 2040008)
+(make line ^p1 2210003 ^p2 2220003)
+(make line ^p1 2190005 ^p2 2190006)
+(make line ^p1 2240005 ^p2 2240006)
+(make line ^p1 2210008 ^p2 2220008)
+(make line ^p1 2160000 ^p2 2180000)
+(make line ^p1 2180000 ^p2 2190000)
+(make line ^p1 2190000 ^p2 2200000)
+(make line ^p1 2160000 ^p2 2160002)
+(make line ^p1 2160002 ^p2 2160003)
+(make line ^p1 2160003 ^p2 2160004)
+(make line ^p1 2160004 ^p2 2200004)
+(make line ^p1 2200004 ^p2 2200000)
+(make line ^p1 2200000 ^p2 2210001)
+(make line ^p1 2210001 ^p2 2210002)
+(make line ^p1 2210002 ^p2 2210003)
+(make line ^p1 2210003 ^p2 2210005)
+(make line ^p1 2210005 ^p2 2200004)
+(make line ^p1 2210005 ^p2 2190005)
+(make line ^p1 2190005 ^p2 2180005)
+(make line ^p1 2180005 ^p2 2170005)
+(make line ^p1 2170005 ^p2 2160004)
+(make line ^p1 2220000 ^p2 2240000)
+(make line ^p1 2240000 ^p2 2250000)
+(make line ^p1 2250000 ^p2 2260000)
+(make line ^p1 2220000 ^p2 2220002)
+(make line ^p1 2220002 ^p2 2220003)
+(make line ^p1 2220003 ^p2 2220004)
+(make line ^p1 2220004 ^p2 2260004)
+(make line ^p1 2260004 ^p2 2260000)
+(make line ^p1 2260000 ^p2 2270001)
+(make line ^p1 2270001 ^p2 2270002)
+(make line ^p1 2270002 ^p2 2270003)
+(make line ^p1 2270003 ^p2 2270005)
+(make line ^p1 2270005 ^p2 2260004)
+(make line ^p1 2270005 ^p2 2250005)
+(make line ^p1 2250005 ^p2 2240005)
+(make line ^p1 2240005 ^p2 2230005)
+(make line ^p1 2230005 ^p2 2220004)
+(make line ^p1 2160006 ^p2 2180006)
+(make line ^p1 2180006 ^p2 2190006)
+(make line ^p1 2190006 ^p2 2200006)
+(make line ^p1 2160006 ^p2 2160008)
+(make line ^p1 2160008 ^p2 2160009)
+(make line ^p1 2160009 ^p2 2160010)
+(make line ^p1 2160010 ^p2 2200010)
+(make line ^p1 2200010 ^p2 2200006)
+(make line ^p1 2200006 ^p2 2210007)
+(make line ^p1 2210007 ^p2 2210008)
+(make line ^p1 2210008 ^p2 2210009)
+(make line ^p1 2210009 ^p2 2210011)
+(make line ^p1 2210011 ^p2 2200010)
+(make line ^p1 2210011 ^p2 2190011)
+(make line ^p1 2190011 ^p2 2180011)
+(make line ^p1 2180011 ^p2 2170011)
+(make line ^p1 2170011 ^p2 2160010)
+(make line ^p1 2220006 ^p2 2240006)
+(make line ^p1 2240006 ^p2 2250006)
+(make line ^p1 2250006 ^p2 2260006)
+(make line ^p1 2220006 ^p2 2220008)
+(make line ^p1 2220008 ^p2 2220009)
+(make line ^p1 2220009 ^p2 2220010)
+(make line ^p1 2220010 ^p2 2260010)
+(make line ^p1 2260010 ^p2 2260006)
+(make line ^p1 2260006 ^p2 2270007)
+(make line ^p1 2270007 ^p2 2270008)
+(make line ^p1 2270008 ^p2 2270009)
+(make line ^p1 2270009 ^p2 2270011)
+(make line ^p1 2270011 ^p2 2260010)
+(make line ^p1 2270011 ^p2 2250011)
+(make line ^p1 2250011 ^p2 2240011)
+(make line ^p1 2240011 ^p2 2230011)
+(make line ^p1 2230011 ^p2 2220010)
+(make line ^p1 2150003 ^p2 2160003)
+(make line ^p1 2130005 ^p2 2130006)
+(make line ^p1 2180005 ^p2 2180006)
+(make line ^p1 2150008 ^p2 2160008)
+(make line ^p1 2330003 ^p2 2340003)
+(make line ^p1 2310005 ^p2 2310006)
+(make line ^p1 2360005 ^p2 2360006)
+(make line ^p1 2330008 ^p2 2340008)
+(make line ^p1 2280000 ^p2 2300000)
+(make line ^p1 2300000 ^p2 2310000)
+(make line ^p1 2310000 ^p2 2320000)
+(make line ^p1 2280000 ^p2 2280002)
+(make line ^p1 2280002 ^p2 2280003)
+(make line ^p1 2280003 ^p2 2280004)
+(make line ^p1 2280004 ^p2 2320004)
+(make line ^p1 2320004 ^p2 2320000)
+(make line ^p1 2320000 ^p2 2330001)
+(make line ^p1 2330001 ^p2 2330002)
+(make line ^p1 2330002 ^p2 2330003)
+(make line ^p1 2330003 ^p2 2330005)
+(make line ^p1 2330005 ^p2 2320004)
+(make line ^p1 2330005 ^p2 2310005)
+(make line ^p1 2310005 ^p2 2300005)
+(make line ^p1 2300005 ^p2 2290005)
+(make line ^p1 2290005 ^p2 2280004)
+(make line ^p1 2340000 ^p2 2360000)
+(make line ^p1 2360000 ^p2 2370000)
+(make line ^p1 2370000 ^p2 2380000)
+(make line ^p1 2340000 ^p2 2340002)
+(make line ^p1 2340002 ^p2 2340003)
+(make line ^p1 2340003 ^p2 2340004)
+(make line ^p1 2340004 ^p2 2380004)
+(make line ^p1 2380004 ^p2 2380000)
+(make line ^p1 2380000 ^p2 2390001)
+(make line ^p1 2390001 ^p2 2390002)
+(make line ^p1 2390002 ^p2 2390003)
+(make line ^p1 2390003 ^p2 2390005)
+(make line ^p1 2390005 ^p2 2380004)
+(make line ^p1 2390005 ^p2 2370005)
+(make line ^p1 2370005 ^p2 2360005)
+(make line ^p1 2360005 ^p2 2350005)
+(make line ^p1 2350005 ^p2 2340004)
+(make line ^p1 2280006 ^p2 2300006)
+(make line ^p1 2300006 ^p2 2310006)
+(make line ^p1 2310006 ^p2 2320006)
+(make line ^p1 2280006 ^p2 2280008)
+(make line ^p1 2280008 ^p2 2280009)
+(make line ^p1 2280009 ^p2 2280010)
+(make line ^p1 2280010 ^p2 2320010)
+(make line ^p1 2320010 ^p2 2320006)
+(make line ^p1 2320006 ^p2 2330007)
+(make line ^p1 2330007 ^p2 2330008)
+(make line ^p1 2330008 ^p2 2330009)
+(make line ^p1 2330009 ^p2 2330011)
+(make line ^p1 2330011 ^p2 2320010)
+(make line ^p1 2330011 ^p2 2310011)
+(make line ^p1 2310011 ^p2 2300011)
+(make line ^p1 2300011 ^p2 2290011)
+(make line ^p1 2290011 ^p2 2280010)
+(make line ^p1 2340006 ^p2 2360006)
+(make line ^p1 2360006 ^p2 2370006)
+(make line ^p1 2370006 ^p2 2380006)
+(make line ^p1 2340006 ^p2 2340008)
+(make line ^p1 2340008 ^p2 2340009)
+(make line ^p1 2340009 ^p2 2340010)
+(make line ^p1 2340010 ^p2 2380010)
+(make line ^p1 2380010 ^p2 2380006)
+(make line ^p1 2380006 ^p2 2390007)
+(make line ^p1 2390007 ^p2 2390008)
+(make line ^p1 2390008 ^p2 2390009)
+(make line ^p1 2390009 ^p2 2390011)
+(make line ^p1 2390011 ^p2 2380010)
+(make line ^p1 2390011 ^p2 2370011)
+(make line ^p1 2370011 ^p2 2360011)
+(make line ^p1 2360011 ^p2 2350011)
+(make line ^p1 2350011 ^p2 2340010)
+(make line ^p1 2270003 ^p2 2280003)
+(make line ^p1 2250005 ^p2 2250006)
+(make line ^p1 2300005 ^p2 2300006)
+(make line ^p1 2270008 ^p2 2280008)
+(make line ^p1 2450003 ^p2 2460003)
+(make line ^p1 2430005 ^p2 2430006)
+(make line ^p1 2480005 ^p2 2480006)
+(make line ^p1 2450008 ^p2 2460008)
+(make line ^p1 2400000 ^p2 2420000)
+(make line ^p1 2420000 ^p2 2430000)
+(make line ^p1 2430000 ^p2 2440000)
+(make line ^p1 2400000 ^p2 2400002)
+(make line ^p1 2400002 ^p2 2400003)
+(make line ^p1 2400003 ^p2 2400004)
+(make line ^p1 2400004 ^p2 2440004)
+(make line ^p1 2440004 ^p2 2440000)
+(make line ^p1 2440000 ^p2 2450001)
+(make line ^p1 2450001 ^p2 2450002)
+(make line ^p1 2450002 ^p2 2450003)
+(make line ^p1 2450003 ^p2 2450005)
+(make line ^p1 2450005 ^p2 2440004)
+(make line ^p1 2450005 ^p2 2430005)
+(make line ^p1 2430005 ^p2 2420005)
+(make line ^p1 2420005 ^p2 2410005)
+(make line ^p1 2410005 ^p2 2400004)
+(make line ^p1 2460000 ^p2 2480000)
+(make line ^p1 2480000 ^p2 2490000)
+(make line ^p1 2490000 ^p2 2500000)
+(make line ^p1 2460000 ^p2 2460002)
+(make line ^p1 2460002 ^p2 2460003)
+(make line ^p1 2460003 ^p2 2460004)
+(make line ^p1 2460004 ^p2 2500004)
+(make line ^p1 2500004 ^p2 2500000)
+(make line ^p1 2500000 ^p2 2510001)
+(make line ^p1 2510001 ^p2 2510002)
+(make line ^p1 2510002 ^p2 2510003)
+(make line ^p1 2510003 ^p2 2510005)
+(make line ^p1 2510005 ^p2 2500004)
+(make line ^p1 2510005 ^p2 2490005)
+(make line ^p1 2490005 ^p2 2480005)
+(make line ^p1 2480005 ^p2 2470005)
+(make line ^p1 2470005 ^p2 2460004)
+(make line ^p1 2400006 ^p2 2420006)
+(make line ^p1 2420006 ^p2 2430006)
+(make line ^p1 2430006 ^p2 2440006)
+(make line ^p1 2400006 ^p2 2400008)
+(make line ^p1 2400008 ^p2 2400009)
+(make line ^p1 2400009 ^p2 2400010)
+(make line ^p1 2400010 ^p2 2440010)
+(make line ^p1 2440010 ^p2 2440006)
+(make line ^p1 2440006 ^p2 2450007)
+(make line ^p1 2450007 ^p2 2450008)
+(make line ^p1 2450008 ^p2 2450009)
+(make line ^p1 2450009 ^p2 2450011)
+(make line ^p1 2450011 ^p2 2440010)
+(make line ^p1 2450011 ^p2 2430011)
+(make line ^p1 2430011 ^p2 2420011)
+(make line ^p1 2420011 ^p2 2410011)
+(make line ^p1 2410011 ^p2 2400010)
+(make line ^p1 2460006 ^p2 2480006)
+(make line ^p1 2480006 ^p2 2490006)
+(make line ^p1 2490006 ^p2 2500006)
+(make line ^p1 2460006 ^p2 2460008)
+(make line ^p1 2460008 ^p2 2460009)
+(make line ^p1 2460009 ^p2 2460010)
+(make line ^p1 2460010 ^p2 2500010)
+(make line ^p1 2500010 ^p2 2500006)
+(make line ^p1 2500006 ^p2 2510007)
+(make line ^p1 2510007 ^p2 2510008)
+(make line ^p1 2510008 ^p2 2510009)
+(make line ^p1 2510009 ^p2 2510011)
+(make line ^p1 2510011 ^p2 2500010)
+(make line ^p1 2510011 ^p2 2490011)
+(make line ^p1 2490011 ^p2 2480011)
+(make line ^p1 2480011 ^p2 2470011)
+(make line ^p1 2470011 ^p2 2460010)
+(make line ^p1 2390003 ^p2 2400003)
+(make line ^p1 2370005 ^p2 2370006)
+(make line ^p1 2420005 ^p2 2420006)
+(make line ^p1 2390008 ^p2 2400008)
+(make line ^p1 2570003 ^p2 2580003)
+(make line ^p1 2550005 ^p2 2550006)
+(make line ^p1 2600005 ^p2 2600006)
+(make line ^p1 2570008 ^p2 2580008)
+(make line ^p1 2520000 ^p2 2540000)
+(make line ^p1 2540000 ^p2 2550000)
+(make line ^p1 2550000 ^p2 2560000)
+(make line ^p1 2520000 ^p2 2520002)
+(make line ^p1 2520002 ^p2 2520003)
+(make line ^p1 2520003 ^p2 2520004)
+(make line ^p1 2520004 ^p2 2560004)
+(make line ^p1 2560004 ^p2 2560000)
+(make line ^p1 2560000 ^p2 2570001)
+(make line ^p1 2570001 ^p2 2570002)
+(make line ^p1 2570002 ^p2 2570003)
+(make line ^p1 2570003 ^p2 2570005)
+(make line ^p1 2570005 ^p2 2560004)
+(make line ^p1 2570005 ^p2 2550005)
+(make line ^p1 2550005 ^p2 2540005)
+(make line ^p1 2540005 ^p2 2530005)
+(make line ^p1 2530005 ^p2 2520004)
+(make line ^p1 2580000 ^p2 2600000)
+(make line ^p1 2600000 ^p2 2610000)
+(make line ^p1 2610000 ^p2 2620000)
+(make line ^p1 2580000 ^p2 2580002)
+(make line ^p1 2580002 ^p2 2580003)
+(make line ^p1 2580003 ^p2 2580004)
+(make line ^p1 2580004 ^p2 2620004)
+(make line ^p1 2620004 ^p2 2620000)
+(make line ^p1 2620000 ^p2 2630001)
+(make line ^p1 2630001 ^p2 2630002)
+(make line ^p1 2630002 ^p2 2630003)
+(make line ^p1 2630003 ^p2 2630005)
+(make line ^p1 2630005 ^p2 2620004)
+(make line ^p1 2630005 ^p2 2610005)
+(make line ^p1 2610005 ^p2 2600005)
+(make line ^p1 2600005 ^p2 2590005)
+(make line ^p1 2590005 ^p2 2580004)
+(make line ^p1 2520006 ^p2 2540006)
+(make line ^p1 2540006 ^p2 2550006)
+(make line ^p1 2550006 ^p2 2560006)
+(make line ^p1 2520006 ^p2 2520008)
+(make line ^p1 2520008 ^p2 2520009)
+(make line ^p1 2520009 ^p2 2520010)
+(make line ^p1 2520010 ^p2 2560010)
+(make line ^p1 2560010 ^p2 2560006)
+(make line ^p1 2560006 ^p2 2570007)
+(make line ^p1 2570007 ^p2 2570008)
+(make line ^p1 2570008 ^p2 2570009)
+(make line ^p1 2570009 ^p2 2570011)
+(make line ^p1 2570011 ^p2 2560010)
+(make line ^p1 2570011 ^p2 2550011)
+(make line ^p1 2550011 ^p2 2540011)
+(make line ^p1 2540011 ^p2 2530011)
+(make line ^p1 2530011 ^p2 2520010)
+(make line ^p1 2580006 ^p2 2600006)
+(make line ^p1 2600006 ^p2 2610006)
+(make line ^p1 2610006 ^p2 2620006)
+(make line ^p1 2580006 ^p2 2580008)
+(make line ^p1 2580008 ^p2 2580009)
+(make line ^p1 2580009 ^p2 2580010)
+(make line ^p1 2580010 ^p2 2620010)
+(make line ^p1 2620010 ^p2 2620006)
+(make line ^p1 2620006 ^p2 2630007)
+(make line ^p1 2630007 ^p2 2630008)
+(make line ^p1 2630008 ^p2 2630009)
+(make line ^p1 2630009 ^p2 2630011)
+(make line ^p1 2630011 ^p2 2620010)
+(make line ^p1 2630011 ^p2 2610011)
+(make line ^p1 2610011 ^p2 2600011)
+(make line ^p1 2600011 ^p2 2590011)
+(make line ^p1 2590011 ^p2 2580010)
+(make line ^p1 2510003 ^p2 2520003)
+(make line ^p1 2490005 ^p2 2490006)
+(make line ^p1 2540005 ^p2 2540006)
+(make line ^p1 2510008 ^p2 2520008)
+(make line ^p1 2690003 ^p2 2700003)
+(make line ^p1 2670005 ^p2 2670006)
+(make line ^p1 2720005 ^p2 2720006)
+(make line ^p1 2690008 ^p2 2700008)
+(make line ^p1 2640000 ^p2 2660000)
+(make line ^p1 2660000 ^p2 2670000)
+(make line ^p1 2670000 ^p2 2680000)
+(make line ^p1 2640000 ^p2 2640002)
+(make line ^p1 2640002 ^p2 2640003)
+(make line ^p1 2640003 ^p2 2640004)
+(make line ^p1 2640004 ^p2 2680004)
+(make line ^p1 2680004 ^p2 2680000)
+(make line ^p1 2680000 ^p2 2690001)
+(make line ^p1 2690001 ^p2 2690002)
+(make line ^p1 2690002 ^p2 2690003)
+(make line ^p1 2690003 ^p2 2690005)
+(make line ^p1 2690005 ^p2 2680004)
+(make line ^p1 2690005 ^p2 2670005)
+(make line ^p1 2670005 ^p2 2660005)
+(make line ^p1 2660005 ^p2 2650005)
+(make line ^p1 2650005 ^p2 2640004)
+(make line ^p1 2700000 ^p2 2720000)
+(make line ^p1 2720000 ^p2 2730000)
+(make line ^p1 2730000 ^p2 2740000)
+(make line ^p1 2700000 ^p2 2700002)
+(make line ^p1 2700002 ^p2 2700003)
+(make line ^p1 2700003 ^p2 2700004)
+(make line ^p1 2700004 ^p2 2740004)
+(make line ^p1 2740004 ^p2 2740000)
+(make line ^p1 2740000 ^p2 2750001)
+(make line ^p1 2750001 ^p2 2750002)
+(make line ^p1 2750002 ^p2 2750003)
+(make line ^p1 2750003 ^p2 2750005)
+(make line ^p1 2750005 ^p2 2740004)
+(make line ^p1 2750005 ^p2 2730005)
+(make line ^p1 2730005 ^p2 2720005)
+(make line ^p1 2720005 ^p2 2710005)
+(make line ^p1 2710005 ^p2 2700004)
+(make line ^p1 2640006 ^p2 2660006)
+(make line ^p1 2660006 ^p2 2670006)
+(make line ^p1 2670006 ^p2 2680006)
+(make line ^p1 2640006 ^p2 2640008)
+(make line ^p1 2640008 ^p2 2640009)
+(make line ^p1 2640009 ^p2 2640010)
+(make line ^p1 2640010 ^p2 2680010)
+(make line ^p1 2680010 ^p2 2680006)
+(make line ^p1 2680006 ^p2 2690007)
+(make line ^p1 2690007 ^p2 2690008)
+(make line ^p1 2690008 ^p2 2690009)
+(make line ^p1 2690009 ^p2 2690011)
+(make line ^p1 2690011 ^p2 2680010)
+(make line ^p1 2690011 ^p2 2670011)
+(make line ^p1 2670011 ^p2 2660011)
+(make line ^p1 2660011 ^p2 2650011)
+(make line ^p1 2650011 ^p2 2640010)
+(make line ^p1 2700006 ^p2 2720006)
+(make line ^p1 2720006 ^p2 2730006)
+(make line ^p1 2730006 ^p2 2740006)
+(make line ^p1 2700006 ^p2 2700008)
+(make line ^p1 2700008 ^p2 2700009)
+(make line ^p1 2700009 ^p2 2700010)
+(make line ^p1 2700010 ^p2 2740010)
+(make line ^p1 2740010 ^p2 2740006)
+(make line ^p1 2740006 ^p2 2750007)
+(make line ^p1 2750007 ^p2 2750008)
+(make line ^p1 2750008 ^p2 2750009)
+(make line ^p1 2750009 ^p2 2750011)
+(make line ^p1 2750011 ^p2 2740010)
+(make line ^p1 2750011 ^p2 2730011)
+(make line ^p1 2730011 ^p2 2720011)
+(make line ^p1 2720011 ^p2 2710011)
+(make line ^p1 2710011 ^p2 2700010)
+(make line ^p1 2630003 ^p2 2640003)
+(make line ^p1 2610005 ^p2 2610006)
+(make line ^p1 2660005 ^p2 2660006)
+(make line ^p1 2630008 ^p2 2640008)
+(make line ^p1 2810003 ^p2 2820003)
+(make line ^p1 2790005 ^p2 2790006)
+(make line ^p1 2840005 ^p2 2840006)
+(make line ^p1 2810008 ^p2 2820008)
+(make line ^p1 2760000 ^p2 2780000)
+(make line ^p1 2780000 ^p2 2790000)
+(make line ^p1 2790000 ^p2 2800000)
+(make line ^p1 2760000 ^p2 2760002)
+(make line ^p1 2760002 ^p2 2760003)
+(make line ^p1 2760003 ^p2 2760004)
+(make line ^p1 2760004 ^p2 2800004)
+(make line ^p1 2800004 ^p2 2800000)
+(make line ^p1 2800000 ^p2 2810001)
+(make line ^p1 2810001 ^p2 2810002)
+(make line ^p1 2810002 ^p2 2810003)
+(make line ^p1 2810003 ^p2 2810005)
+(make line ^p1 2810005 ^p2 2800004)
+(make line ^p1 2810005 ^p2 2790005)
+(make line ^p1 2790005 ^p2 2780005)
+(make line ^p1 2780005 ^p2 2770005)
+(make line ^p1 2770005 ^p2 2760004)
+(make line ^p1 2820000 ^p2 2840000)
+(make line ^p1 2840000 ^p2 2850000)
+(make line ^p1 2850000 ^p2 2860000)
+(make line ^p1 2820000 ^p2 2820002)
+(make line ^p1 2820002 ^p2 2820003)
+(make line ^p1 2820003 ^p2 2820004)
+(make line ^p1 2820004 ^p2 2860004)
+(make line ^p1 2860004 ^p2 2860000)
+(make line ^p1 2860000 ^p2 2870001)
+(make line ^p1 2870001 ^p2 2870002)
+(make line ^p1 2870002 ^p2 2870003)
+(make line ^p1 2870003 ^p2 2870005)
+(make line ^p1 2870005 ^p2 2860004)
+(make line ^p1 2870005 ^p2 2850005)
+(make line ^p1 2850005 ^p2 2840005)
+(make line ^p1 2840005 ^p2 2830005)
+(make line ^p1 2830005 ^p2 2820004)
+(make line ^p1 2760006 ^p2 2780006)
+(make line ^p1 2780006 ^p2 2790006)
+(make line ^p1 2790006 ^p2 2800006)
+(make line ^p1 2760006 ^p2 2760008)
+(make line ^p1 2760008 ^p2 2760009)
+(make line ^p1 2760009 ^p2 2760010)
+(make line ^p1 2760010 ^p2 2800010)
+(make line ^p1 2800010 ^p2 2800006)
+(make line ^p1 2800006 ^p2 2810007)
+(make line ^p1 2810007 ^p2 2810008)
+(make line ^p1 2810008 ^p2 2810009)
+(make line ^p1 2810009 ^p2 2810011)
+(make line ^p1 2810011 ^p2 2800010)
+(make line ^p1 2810011 ^p2 2790011)
+(make line ^p1 2790011 ^p2 2780011)
+(make line ^p1 2780011 ^p2 2770011)
+(make line ^p1 2770011 ^p2 2760010)
+(make line ^p1 2820006 ^p2 2840006)
+(make line ^p1 2840006 ^p2 2850006)
+(make line ^p1 2850006 ^p2 2860006)
+(make line ^p1 2820006 ^p2 2820008)
+(make line ^p1 2820008 ^p2 2820009)
+(make line ^p1 2820009 ^p2 2820010)
+(make line ^p1 2820010 ^p2 2860010)
+(make line ^p1 2860010 ^p2 2860006)
+(make line ^p1 2860006 ^p2 2870007)
+(make line ^p1 2870007 ^p2 2870008)
+(make line ^p1 2870008 ^p2 2870009)
+(make line ^p1 2870009 ^p2 2870011)
+(make line ^p1 2870011 ^p2 2860010)
+(make line ^p1 2870011 ^p2 2850011)
+(make line ^p1 2850011 ^p2 2840011)
+(make line ^p1 2840011 ^p2 2830011)
+(make line ^p1 2830011 ^p2 2820010)
+(make line ^p1 2750003 ^p2 2760003)
+(make line ^p1 2730005 ^p2 2730006)
+(make line ^p1 2780005 ^p2 2780006)
+(make line ^p1 2750008 ^p2 2760008)
+(make line ^p1 2930003 ^p2 2940003)
+(make line ^p1 2910005 ^p2 2910006)
+(make line ^p1 2960005 ^p2 2960006)
+(make line ^p1 2930008 ^p2 2940008)
+(make line ^p1 2880000 ^p2 2900000)
+(make line ^p1 2900000 ^p2 2910000)
+(make line ^p1 2910000 ^p2 2920000)
+(make line ^p1 2880000 ^p2 2880002)
+(make line ^p1 2880002 ^p2 2880003)
+(make line ^p1 2880003 ^p2 2880004)
+(make line ^p1 2880004 ^p2 2920004)
+(make line ^p1 2920004 ^p2 2920000)
+(make line ^p1 2920000 ^p2 2930001)
+(make line ^p1 2930001 ^p2 2930002)
+(make line ^p1 2930002 ^p2 2930003)
+(make line ^p1 2930003 ^p2 2930005)
+(make line ^p1 2930005 ^p2 2920004)
+(make line ^p1 2930005 ^p2 2910005)
+(make line ^p1 2910005 ^p2 2900005)
+(make line ^p1 2900005 ^p2 2890005)
+(make line ^p1 2890005 ^p2 2880004)
+(make line ^p1 2940000 ^p2 2960000)
+(make line ^p1 2960000 ^p2 2970000)
+(make line ^p1 2970000 ^p2 2980000)
+(make line ^p1 2940000 ^p2 2940002)
+(make line ^p1 2940002 ^p2 2940003)
+(make line ^p1 2940003 ^p2 2940004)
+(make line ^p1 2940004 ^p2 2980004)
+(make line ^p1 2980004 ^p2 2980000)
+(make line ^p1 2980000 ^p2 2990001)
+(make line ^p1 2990001 ^p2 2990002)
+(make line ^p1 2990002 ^p2 2990003)
+(make line ^p1 2990003 ^p2 2990005)
+(make line ^p1 2990005 ^p2 2980004)
+(make line ^p1 2990005 ^p2 2970005)
+(make line ^p1 2970005 ^p2 2960005)
+(make line ^p1 2960005 ^p2 2950005)
+(make line ^p1 2950005 ^p2 2940004)
+(make line ^p1 2880006 ^p2 2900006)
+(make line ^p1 2900006 ^p2 2910006)
+(make line ^p1 2910006 ^p2 2920006)
+(make line ^p1 2880006 ^p2 2880008)
+(make line ^p1 2880008 ^p2 2880009)
+(make line ^p1 2880009 ^p2 2880010)
+(make line ^p1 2880010 ^p2 2920010)
+(make line ^p1 2920010 ^p2 2920006)
+(make line ^p1 2920006 ^p2 2930007)
+(make line ^p1 2930007 ^p2 2930008)
+(make line ^p1 2930008 ^p2 2930009)
+(make line ^p1 2930009 ^p2 2930011)
+(make line ^p1 2930011 ^p2 2920010)
+(make line ^p1 2930011 ^p2 2910011)
+(make line ^p1 2910011 ^p2 2900011)
+(make line ^p1 2900011 ^p2 2890011)
+(make line ^p1 2890011 ^p2 2880010)
+(make line ^p1 2940006 ^p2 2960006)
+(make line ^p1 2960006 ^p2 2970006)
+(make line ^p1 2970006 ^p2 2980006)
+(make line ^p1 2940006 ^p2 2940008)
+(make line ^p1 2940008 ^p2 2940009)
+(make line ^p1 2940009 ^p2 2940010)
+(make line ^p1 2940010 ^p2 2980010)
+(make line ^p1 2980010 ^p2 2980006)
+(make line ^p1 2980006 ^p2 2990007)
+(make line ^p1 2990007 ^p2 2990008)
+(make line ^p1 2990008 ^p2 2990009)
+(make line ^p1 2990009 ^p2 2990011)
+(make line ^p1 2990011 ^p2 2980010)
+(make line ^p1 2990011 ^p2 2970011)
+(make line ^p1 2970011 ^p2 2960011)
+(make line ^p1 2960011 ^p2 2950011)
+(make line ^p1 2950011 ^p2 2940010)
+(make line ^p1 2870003 ^p2 2880003)
+(make line ^p1 2850005 ^p2 2850006)
+(make line ^p1 2900005 ^p2 2900006)
+(make line ^p1 2870008 ^p2 2880008)
+(make line ^p1 3050003 ^p2 3060003)
+(make line ^p1 3030005 ^p2 3030006)
+(make line ^p1 3080005 ^p2 3080006)
+(make line ^p1 3050008 ^p2 3060008)
+(make line ^p1 3000000 ^p2 3020000)
+(make line ^p1 3020000 ^p2 3030000)
+(make line ^p1 3030000 ^p2 3040000)
+(make line ^p1 3000000 ^p2 3000002)
+(make line ^p1 3000002 ^p2 3000003)
+(make line ^p1 3000003 ^p2 3000004)
+(make line ^p1 3000004 ^p2 3040004)
+(make line ^p1 3040004 ^p2 3040000)
+(make line ^p1 3040000 ^p2 3050001)
+(make line ^p1 3050001 ^p2 3050002)
+(make line ^p1 3050002 ^p2 3050003)
+(make line ^p1 3050003 ^p2 3050005)
+(make line ^p1 3050005 ^p2 3040004)
+(make line ^p1 3050005 ^p2 3030005)
+(make line ^p1 3030005 ^p2 3020005)
+(make line ^p1 3020005 ^p2 3010005)
+(make line ^p1 3010005 ^p2 3000004)
+(make line ^p1 3060000 ^p2 3080000)
+(make line ^p1 3080000 ^p2 3090000)
+(make line ^p1 3090000 ^p2 3100000)
+(make line ^p1 3060000 ^p2 3060002)
+(make line ^p1 3060002 ^p2 3060003)
+(make line ^p1 3060003 ^p2 3060004)
+(make line ^p1 3060004 ^p2 3100004)
+(make line ^p1 3100004 ^p2 3100000)
+(make line ^p1 3100000 ^p2 3110001)
+(make line ^p1 3110001 ^p2 3110002)
+(make line ^p1 3110002 ^p2 3110003)
+(make line ^p1 3110003 ^p2 3110005)
+(make line ^p1 3110005 ^p2 3100004)
+(make line ^p1 3110005 ^p2 3090005)
+(make line ^p1 3090005 ^p2 3080005)
+(make line ^p1 3080005 ^p2 3070005)
+(make line ^p1 3070005 ^p2 3060004)
+(make line ^p1 3000006 ^p2 3020006)
+(make line ^p1 3020006 ^p2 3030006)
+(make line ^p1 3030006 ^p2 3040006)
+(make line ^p1 3000006 ^p2 3000008)
+(make line ^p1 3000008 ^p2 3000009)
+(make line ^p1 3000009 ^p2 3000010)
+(make line ^p1 3000010 ^p2 3040010)
+(make line ^p1 3040010 ^p2 3040006)
+(make line ^p1 3040006 ^p2 3050007)
+(make line ^p1 3050007 ^p2 3050008)
+(make line ^p1 3050008 ^p2 3050009)
+(make line ^p1 3050009 ^p2 3050011)
+(make line ^p1 3050011 ^p2 3040010)
+(make line ^p1 3050011 ^p2 3030011)
+(make line ^p1 3030011 ^p2 3020011)
+(make line ^p1 3020011 ^p2 3010011)
+(make line ^p1 3010011 ^p2 3000010)
+(make line ^p1 3060006 ^p2 3080006)
+(make line ^p1 3080006 ^p2 3090006)
+(make line ^p1 3090006 ^p2 3100006)
+(make line ^p1 3060006 ^p2 3060008)
+(make line ^p1 3060008 ^p2 3060009)
+(make line ^p1 3060009 ^p2 3060010)
+(make line ^p1 3060010 ^p2 3100010)
+(make line ^p1 3100010 ^p2 3100006)
+(make line ^p1 3100006 ^p2 3110007)
+(make line ^p1 3110007 ^p2 3110008)
+(make line ^p1 3110008 ^p2 3110009)
+(make line ^p1 3110009 ^p2 3110011)
+(make line ^p1 3110011 ^p2 3100010)
+(make line ^p1 3110011 ^p2 3090011)
+(make line ^p1 3090011 ^p2 3080011)
+(make line ^p1 3080011 ^p2 3070011)
+(make line ^p1 3070011 ^p2 3060010)
+(make line ^p1 2990003 ^p2 3000003)
+(make line ^p1 2970005 ^p2 2970006)
+(make line ^p1 3020005 ^p2 3020006)
+(make line ^p1 2990008 ^p2 3000008)
+(make line ^p1 3170003 ^p2 3180003)
+(make line ^p1 3150005 ^p2 3150006)
+(make line ^p1 3200005 ^p2 3200006)
+(make line ^p1 3170008 ^p2 3180008)
+(make line ^p1 3120000 ^p2 3140000)
+(make line ^p1 3140000 ^p2 3150000)
+(make line ^p1 3150000 ^p2 3160000)
+(make line ^p1 3120000 ^p2 3120002)
+(make line ^p1 3120002 ^p2 3120003)
+(make line ^p1 3120003 ^p2 3120004)
+(make line ^p1 3120004 ^p2 3160004)
+(make line ^p1 3160004 ^p2 3160000)
+(make line ^p1 3160000 ^p2 3170001)
+(make line ^p1 3170001 ^p2 3170002)
+(make line ^p1 3170002 ^p2 3170003)
+(make line ^p1 3170003 ^p2 3170005)
+(make line ^p1 3170005 ^p2 3160004)
+(make line ^p1 3170005 ^p2 3150005)
+(make line ^p1 3150005 ^p2 3140005)
+(make line ^p1 3140005 ^p2 3130005)
+(make line ^p1 3130005 ^p2 3120004)
+(make line ^p1 3180000 ^p2 3200000)
+(make line ^p1 3200000 ^p2 3210000)
+(make line ^p1 3210000 ^p2 3220000)
+(make line ^p1 3180000 ^p2 3180002)
+(make line ^p1 3180002 ^p2 3180003)
+(make line ^p1 3180003 ^p2 3180004)
+(make line ^p1 3180004 ^p2 3220004)
+(make line ^p1 3220004 ^p2 3220000)
+(make line ^p1 3220000 ^p2 3230001)
+(make line ^p1 3230001 ^p2 3230002)
+(make line ^p1 3230002 ^p2 3230003)
+(make line ^p1 3230003 ^p2 3230005)
+(make line ^p1 3230005 ^p2 3220004)
+(make line ^p1 3230005 ^p2 3210005)
+(make line ^p1 3210005 ^p2 3200005)
+(make line ^p1 3200005 ^p2 3190005)
+(make line ^p1 3190005 ^p2 3180004)
+(make line ^p1 3120006 ^p2 3140006)
+(make line ^p1 3140006 ^p2 3150006)
+(make line ^p1 3150006 ^p2 3160006)
+(make line ^p1 3120006 ^p2 3120008)
+(make line ^p1 3120008 ^p2 3120009)
+(make line ^p1 3120009 ^p2 3120010)
+(make line ^p1 3120010 ^p2 3160010)
+(make line ^p1 3160010 ^p2 3160006)
+(make line ^p1 3160006 ^p2 3170007)
+(make line ^p1 3170007 ^p2 3170008)
+(make line ^p1 3170008 ^p2 3170009)
+(make line ^p1 3170009 ^p2 3170011)
+(make line ^p1 3170011 ^p2 3160010)
+(make line ^p1 3170011 ^p2 3150011)
+(make line ^p1 3150011 ^p2 3140011)
+(make line ^p1 3140011 ^p2 3130011)
+(make line ^p1 3130011 ^p2 3120010)
+(make line ^p1 3180006 ^p2 3200006)
+(make line ^p1 3200006 ^p2 3210006)
+(make line ^p1 3210006 ^p2 3220006)
+(make line ^p1 3180006 ^p2 3180008)
+(make line ^p1 3180008 ^p2 3180009)
+(make line ^p1 3180009 ^p2 3180010)
+(make line ^p1 3180010 ^p2 3220010)
+(make line ^p1 3220010 ^p2 3220006)
+(make line ^p1 3220006 ^p2 3230007)
+(make line ^p1 3230007 ^p2 3230008)
+(make line ^p1 3230008 ^p2 3230009)
+(make line ^p1 3230009 ^p2 3230011)
+(make line ^p1 3230011 ^p2 3220010)
+(make line ^p1 3230011 ^p2 3210011)
+(make line ^p1 3210011 ^p2 3200011)
+(make line ^p1 3200011 ^p2 3190011)
+(make line ^p1 3190011 ^p2 3180010)
+(make line ^p1 3110003 ^p2 3120003)
+(make line ^p1 3090005 ^p2 3090006)
+(make line ^p1 3140005 ^p2 3140006)
+(make line ^p1 3110008 ^p2 3120008)
+(make line ^p1 3290003 ^p2 3300003)
+(make line ^p1 3270005 ^p2 3270006)
+(make line ^p1 3320005 ^p2 3320006)
+(make line ^p1 3290008 ^p2 3300008)
+(make line ^p1 3240000 ^p2 3260000)
+(make line ^p1 3260000 ^p2 3270000)
+(make line ^p1 3270000 ^p2 3280000)
+(make line ^p1 3240000 ^p2 3240002)
+(make line ^p1 3240002 ^p2 3240003)
+(make line ^p1 3240003 ^p2 3240004)
+(make line ^p1 3240004 ^p2 3280004)
+(make line ^p1 3280004 ^p2 3280000)
+(make line ^p1 3280000 ^p2 3290001)
+(make line ^p1 3290001 ^p2 3290002)
+(make line ^p1 3290002 ^p2 3290003)
+(make line ^p1 3290003 ^p2 3290005)
+(make line ^p1 3290005 ^p2 3280004)
+(make line ^p1 3290005 ^p2 3270005)
+(make line ^p1 3270005 ^p2 3260005)
+(make line ^p1 3260005 ^p2 3250005)
+(make line ^p1 3250005 ^p2 3240004)
+(make line ^p1 3300000 ^p2 3320000)
+(make line ^p1 3320000 ^p2 3330000)
+(make line ^p1 3330000 ^p2 3340000)
+(make line ^p1 3300000 ^p2 3300002)
+(make line ^p1 3300002 ^p2 3300003)
+(make line ^p1 3300003 ^p2 3300004)
+(make line ^p1 3300004 ^p2 3340004)
+(make line ^p1 3340004 ^p2 3340000)
+(make line ^p1 3340000 ^p2 3350001)
+(make line ^p1 3350001 ^p2 3350002)
+(make line ^p1 3350002 ^p2 3350003)
+(make line ^p1 3350003 ^p2 3350005)
+(make line ^p1 3350005 ^p2 3340004)
+(make line ^p1 3350005 ^p2 3330005)
+(make line ^p1 3330005 ^p2 3320005)
+(make line ^p1 3320005 ^p2 3310005)
+(make line ^p1 3310005 ^p2 3300004)
+(make line ^p1 3240006 ^p2 3260006)
+(make line ^p1 3260006 ^p2 3270006)
+(make line ^p1 3270006 ^p2 3280006)
+(make line ^p1 3240006 ^p2 3240008)
+(make line ^p1 3240008 ^p2 3240009)
+(make line ^p1 3240009 ^p2 3240010)
+(make line ^p1 3240010 ^p2 3280010)
+(make line ^p1 3280010 ^p2 3280006)
+(make line ^p1 3280006 ^p2 3290007)
+(make line ^p1 3290007 ^p2 3290008)
+(make line ^p1 3290008 ^p2 3290009)
+(make line ^p1 3290009 ^p2 3290011)
+(make line ^p1 3290011 ^p2 3280010)
+(make line ^p1 3290011 ^p2 3270011)
+(make line ^p1 3270011 ^p2 3260011)
+(make line ^p1 3260011 ^p2 3250011)
+(make line ^p1 3250011 ^p2 3240010)
+(make line ^p1 3300006 ^p2 3320006)
+(make line ^p1 3320006 ^p2 3330006)
+(make line ^p1 3330006 ^p2 3340006)
+(make line ^p1 3300006 ^p2 3300008)
+(make line ^p1 3300008 ^p2 3300009)
+(make line ^p1 3300009 ^p2 3300010)
+(make line ^p1 3300010 ^p2 3340010)
+(make line ^p1 3340010 ^p2 3340006)
+(make line ^p1 3340006 ^p2 3350007)
+(make line ^p1 3350007 ^p2 3350008)
+(make line ^p1 3350008 ^p2 3350009)
+(make line ^p1 3350009 ^p2 3350011)
+(make line ^p1 3350011 ^p2 3340010)
+(make line ^p1 3350011 ^p2 3330011)
+(make line ^p1 3330011 ^p2 3320011)
+(make line ^p1 3320011 ^p2 3310011)
+(make line ^p1 3310011 ^p2 3300010)
+(make line ^p1 3230003 ^p2 3240003)
+(make line ^p1 3210005 ^p2 3210006)
+(make line ^p1 3260005 ^p2 3260006)
+(make line ^p1 3230008 ^p2 3240008)
+(make line ^p1 3410003 ^p2 3420003)
+(make line ^p1 3390005 ^p2 3390006)
+(make line ^p1 3440005 ^p2 3440006)
+(make line ^p1 3410008 ^p2 3420008)
+(make line ^p1 3360000 ^p2 3380000)
+(make line ^p1 3380000 ^p2 3390000)
+(make line ^p1 3390000 ^p2 3400000)
+(make line ^p1 3360000 ^p2 3360002)
+(make line ^p1 3360002 ^p2 3360003)
+(make line ^p1 3360003 ^p2 3360004)
+(make line ^p1 3360004 ^p2 3400004)
+(make line ^p1 3400004 ^p2 3400000)
+(make line ^p1 3400000 ^p2 3410001)
+(make line ^p1 3410001 ^p2 3410002)
+(make line ^p1 3410002 ^p2 3410003)
+(make line ^p1 3410003 ^p2 3410005)
+(make line ^p1 3410005 ^p2 3400004)
+(make line ^p1 3410005 ^p2 3390005)
+(make line ^p1 3390005 ^p2 3380005)
+(make line ^p1 3380005 ^p2 3370005)
+(make line ^p1 3370005 ^p2 3360004)
+(make line ^p1 3420000 ^p2 3440000)
+(make line ^p1 3440000 ^p2 3450000)
+(make line ^p1 3450000 ^p2 3460000)
+(make line ^p1 3420000 ^p2 3420002)
+(make line ^p1 3420002 ^p2 3420003)
+(make line ^p1 3420003 ^p2 3420004)
+(make line ^p1 3420004 ^p2 3460004)
+(make line ^p1 3460004 ^p2 3460000)
+(make line ^p1 3460000 ^p2 3470001)
+(make line ^p1 3470001 ^p2 3470002)
+(make line ^p1 3470002 ^p2 3470003)
+(make line ^p1 3470003 ^p2 3470005)
+(make line ^p1 3470005 ^p2 3460004)
+(make line ^p1 3470005 ^p2 3450005)
+(make line ^p1 3450005 ^p2 3440005)
+(make line ^p1 3440005 ^p2 3430005)
+(make line ^p1 3430005 ^p2 3420004)
+(make line ^p1 3360006 ^p2 3380006)
+(make line ^p1 3380006 ^p2 3390006)
+(make line ^p1 3390006 ^p2 3400006)
+(make line ^p1 3360006 ^p2 3360008)
+(make line ^p1 3360008 ^p2 3360009)
+(make line ^p1 3360009 ^p2 3360010)
+(make line ^p1 3360010 ^p2 3400010)
+(make line ^p1 3400010 ^p2 3400006)
+(make line ^p1 3400006 ^p2 3410007)
+(make line ^p1 3410007 ^p2 3410008)
+(make line ^p1 3410008 ^p2 3410009)
+(make line ^p1 3410009 ^p2 3410011)
+(make line ^p1 3410011 ^p2 3400010)
+(make line ^p1 3410011 ^p2 3390011)
+(make line ^p1 3390011 ^p2 3380011)
+(make line ^p1 3380011 ^p2 3370011)
+(make line ^p1 3370011 ^p2 3360010)
+(make line ^p1 3420006 ^p2 3440006)
+(make line ^p1 3440006 ^p2 3450006)
+(make line ^p1 3450006 ^p2 3460006)
+(make line ^p1 3420006 ^p2 3420008)
+(make line ^p1 3420008 ^p2 3420009)
+(make line ^p1 3420009 ^p2 3420010)
+(make line ^p1 3420010 ^p2 3460010)
+(make line ^p1 3460010 ^p2 3460006)
+(make line ^p1 3460006 ^p2 3470007)
+(make line ^p1 3470007 ^p2 3470008)
+(make line ^p1 3470008 ^p2 3470009)
+(make line ^p1 3470009 ^p2 3470011)
+(make line ^p1 3470011 ^p2 3460010)
+(make line ^p1 3470011 ^p2 3450011)
+(make line ^p1 3450011 ^p2 3440011)
+(make line ^p1 3440011 ^p2 3430011)
+(make line ^p1 3430011 ^p2 3420010)
+(make line ^p1 3350003 ^p2 3360003)
+(make line ^p1 3330005 ^p2 3330006)
+(make line ^p1 3380005 ^p2 3380006)
+(make line ^p1 3350008 ^p2 3360008)
+(make line ^p1 3530003 ^p2 3540003)
+(make line ^p1 3510005 ^p2 3510006)
+(make line ^p1 3560005 ^p2 3560006)
+(make line ^p1 3530008 ^p2 3540008)
+(make line ^p1 3480000 ^p2 3500000)
+(make line ^p1 3500000 ^p2 3510000)
+(make line ^p1 3510000 ^p2 3520000)
+(make line ^p1 3480000 ^p2 3480002)
+(make line ^p1 3480002 ^p2 3480003)
+(make line ^p1 3480003 ^p2 3480004)
+(make line ^p1 3480004 ^p2 3520004)
+(make line ^p1 3520004 ^p2 3520000)
+(make line ^p1 3520000 ^p2 3530001)
+(make line ^p1 3530001 ^p2 3530002)
+(make line ^p1 3530002 ^p2 3530003)
+(make line ^p1 3530003 ^p2 3530005)
+(make line ^p1 3530005 ^p2 3520004)
+(make line ^p1 3530005 ^p2 3510005)
+(make line ^p1 3510005 ^p2 3500005)
+(make line ^p1 3500005 ^p2 3490005)
+(make line ^p1 3490005 ^p2 3480004)
+(make line ^p1 3540000 ^p2 3560000)
+(make line ^p1 3560000 ^p2 3570000)
+(make line ^p1 3570000 ^p2 3580000)
+(make line ^p1 3540000 ^p2 3540002)
+(make line ^p1 3540002 ^p2 3540003)
+(make line ^p1 3540003 ^p2 3540004)
+(make line ^p1 3540004 ^p2 3580004)
+(make line ^p1 3580004 ^p2 3580000)
+(make line ^p1 3580000 ^p2 3590001)
+(make line ^p1 3590001 ^p2 3590002)
+(make line ^p1 3590002 ^p2 3590003)
+(make line ^p1 3590003 ^p2 3590005)
+(make line ^p1 3590005 ^p2 3580004)
+(make line ^p1 3590005 ^p2 3570005)
+(make line ^p1 3570005 ^p2 3560005)
+(make line ^p1 3560005 ^p2 3550005)
+(make line ^p1 3550005 ^p2 3540004)
+(make line ^p1 3480006 ^p2 3500006)
+(make line ^p1 3500006 ^p2 3510006)
+(make line ^p1 3510006 ^p2 3520006)
+(make line ^p1 3480006 ^p2 3480008)
+(make line ^p1 3480008 ^p2 3480009)
+(make line ^p1 3480009 ^p2 3480010)
+(make line ^p1 3480010 ^p2 3520010)
+(make line ^p1 3520010 ^p2 3520006)
+(make line ^p1 3520006 ^p2 3530007)
+(make line ^p1 3530007 ^p2 3530008)
+(make line ^p1 3530008 ^p2 3530009)
+(make line ^p1 3530009 ^p2 3530011)
+(make line ^p1 3530011 ^p2 3520010)
+(make line ^p1 3530011 ^p2 3510011)
+(make line ^p1 3510011 ^p2 3500011)
+(make line ^p1 3500011 ^p2 3490011)
+(make line ^p1 3490011 ^p2 3480010)
+(make line ^p1 3540006 ^p2 3560006)
+(make line ^p1 3560006 ^p2 3570006)
+(make line ^p1 3570006 ^p2 3580006)
+(make line ^p1 3540006 ^p2 3540008)
+(make line ^p1 3540008 ^p2 3540009)
+(make line ^p1 3540009 ^p2 3540010)
+(make line ^p1 3540010 ^p2 3580010)
+(make line ^p1 3580010 ^p2 3580006)
+(make line ^p1 3580006 ^p2 3590007)
+(make line ^p1 3590007 ^p2 3590008)
+(make line ^p1 3590008 ^p2 3590009)
+(make line ^p1 3590009 ^p2 3590011)
+(make line ^p1 3590011 ^p2 3580010)
+(make line ^p1 3590011 ^p2 3570011)
+(make line ^p1 3570011 ^p2 3560011)
+(make line ^p1 3560011 ^p2 3550011)
+(make line ^p1 3550011 ^p2 3540010)
+(make line ^p1 3470003 ^p2 3480003)
+(make line ^p1 3450005 ^p2 3450006)
+(make line ^p1 3500005 ^p2 3500006)
+(make line ^p1 3470008 ^p2 3480008)
+(make line ^p1 3650003 ^p2 3660003)
+(make line ^p1 3630005 ^p2 3630006)
+(make line ^p1 3680005 ^p2 3680006)
+(make line ^p1 3650008 ^p2 3660008)
+(make line ^p1 3600000 ^p2 3620000)
+(make line ^p1 3620000 ^p2 3630000)
+(make line ^p1 3630000 ^p2 3640000)
+(make line ^p1 3600000 ^p2 3600002)
+(make line ^p1 3600002 ^p2 3600003)
+(make line ^p1 3600003 ^p2 3600004)
+(make line ^p1 3600004 ^p2 3640004)
+(make line ^p1 3640004 ^p2 3640000)
+(make line ^p1 3640000 ^p2 3650001)
+(make line ^p1 3650001 ^p2 3650002)
+(make line ^p1 3650002 ^p2 3650003)
+(make line ^p1 3650003 ^p2 3650005)
+(make line ^p1 3650005 ^p2 3640004)
+(make line ^p1 3650005 ^p2 3630005)
+(make line ^p1 3630005 ^p2 3620005)
+(make line ^p1 3620005 ^p2 3610005)
+(make line ^p1 3610005 ^p2 3600004)
+(make line ^p1 3660000 ^p2 3680000)
+(make line ^p1 3680000 ^p2 3690000)
+(make line ^p1 3690000 ^p2 3700000)
+(make line ^p1 3660000 ^p2 3660002)
+(make line ^p1 3660002 ^p2 3660003)
+(make line ^p1 3660003 ^p2 3660004)
+(make line ^p1 3660004 ^p2 3700004)
+(make line ^p1 3700004 ^p2 3700000)
+(make line ^p1 3700000 ^p2 3710001)
+(make line ^p1 3710001 ^p2 3710002)
+(make line ^p1 3710002 ^p2 3710003)
+(make line ^p1 3710003 ^p2 3710005)
+(make line ^p1 3710005 ^p2 3700004)
+(make line ^p1 3710005 ^p2 3690005)
+(make line ^p1 3690005 ^p2 3680005)
+(make line ^p1 3680005 ^p2 3670005)
+(make line ^p1 3670005 ^p2 3660004)
+(make line ^p1 3600006 ^p2 3620006)
+(make line ^p1 3620006 ^p2 3630006)
+(make line ^p1 3630006 ^p2 3640006)
+(make line ^p1 3600006 ^p2 3600008)
+(make line ^p1 3600008 ^p2 3600009)
+(make line ^p1 3600009 ^p2 3600010)
+(make line ^p1 3600010 ^p2 3640010)
+(make line ^p1 3640010 ^p2 3640006)
+(make line ^p1 3640006 ^p2 3650007)
+(make line ^p1 3650007 ^p2 3650008)
+(make line ^p1 3650008 ^p2 3650009)
+(make line ^p1 3650009 ^p2 3650011)
+(make line ^p1 3650011 ^p2 3640010)
+(make line ^p1 3650011 ^p2 3630011)
+(make line ^p1 3630011 ^p2 3620011)
+(make line ^p1 3620011 ^p2 3610011)
+(make line ^p1 3610011 ^p2 3600010)
+(make line ^p1 3660006 ^p2 3680006)
+(make line ^p1 3680006 ^p2 3690006)
+(make line ^p1 3690006 ^p2 3700006)
+(make line ^p1 3660006 ^p2 3660008)
+(make line ^p1 3660008 ^p2 3660009)
+(make line ^p1 3660009 ^p2 3660010)
+(make line ^p1 3660010 ^p2 3700010)
+(make line ^p1 3700010 ^p2 3700006)
+(make line ^p1 3700006 ^p2 3710007)
+(make line ^p1 3710007 ^p2 3710008)
+(make line ^p1 3710008 ^p2 3710009)
+(make line ^p1 3710009 ^p2 3710011)
+(make line ^p1 3710011 ^p2 3700010)
+(make line ^p1 3710011 ^p2 3690011)
+(make line ^p1 3690011 ^p2 3680011)
+(make line ^p1 3680011 ^p2 3670011)
+(make line ^p1 3670011 ^p2 3660010)
+(make line ^p1 3590003 ^p2 3600003)
+(make line ^p1 3570005 ^p2 3570006)
+(make line ^p1 3620005 ^p2 3620006)
+(make line ^p1 3590008 ^p2 3600008)
+(make line ^p1 3770003 ^p2 3780003)
+(make line ^p1 3750005 ^p2 3750006)
+(make line ^p1 3800005 ^p2 3800006)
+(make line ^p1 3770008 ^p2 3780008)
+(make line ^p1 3720000 ^p2 3740000)
+(make line ^p1 3740000 ^p2 3750000)
+(make line ^p1 3750000 ^p2 3760000)
+(make line ^p1 3720000 ^p2 3720002)
+(make line ^p1 3720002 ^p2 3720003)
+(make line ^p1 3720003 ^p2 3720004)
+(make line ^p1 3720004 ^p2 3760004)
+(make line ^p1 3760004 ^p2 3760000)
+(make line ^p1 3760000 ^p2 3770001)
+(make line ^p1 3770001 ^p2 3770002)
+(make line ^p1 3770002 ^p2 3770003)
+(make line ^p1 3770003 ^p2 3770005)
+(make line ^p1 3770005 ^p2 3760004)
+(make line ^p1 3770005 ^p2 3750005)
+(make line ^p1 3750005 ^p2 3740005)
+(make line ^p1 3740005 ^p2 3730005)
+(make line ^p1 3730005 ^p2 3720004)
+(make line ^p1 3780000 ^p2 3800000)
+(make line ^p1 3800000 ^p2 3810000)
+(make line ^p1 3810000 ^p2 3820000)
+(make line ^p1 3780000 ^p2 3780002)
+(make line ^p1 3780002 ^p2 3780003)
+(make line ^p1 3780003 ^p2 3780004)
+(make line ^p1 3780004 ^p2 3820004)
+(make line ^p1 3820004 ^p2 3820000)
+(make line ^p1 3820000 ^p2 3830001)
+(make line ^p1 3830001 ^p2 3830002)
+(make line ^p1 3830002 ^p2 3830003)
+(make line ^p1 3830003 ^p2 3830005)
+(make line ^p1 3830005 ^p2 3820004)
+(make line ^p1 3830005 ^p2 3810005)
+(make line ^p1 3810005 ^p2 3800005)
+(make line ^p1 3800005 ^p2 3790005)
+(make line ^p1 3790005 ^p2 3780004)
+(make line ^p1 3720006 ^p2 3740006)
+(make line ^p1 3740006 ^p2 3750006)
+(make line ^p1 3750006 ^p2 3760006)
+(make line ^p1 3720006 ^p2 3720008)
+(make line ^p1 3720008 ^p2 3720009)
+(make line ^p1 3720009 ^p2 3720010)
+(make line ^p1 3720010 ^p2 3760010)
+(make line ^p1 3760010 ^p2 3760006)
+(make line ^p1 3760006 ^p2 3770007)
+(make line ^p1 3770007 ^p2 3770008)
+(make line ^p1 3770008 ^p2 3770009)
+(make line ^p1 3770009 ^p2 3770011)
+(make line ^p1 3770011 ^p2 3760010)
+(make line ^p1 3770011 ^p2 3750011)
+(make line ^p1 3750011 ^p2 3740011)
+(make line ^p1 3740011 ^p2 3730011)
+(make line ^p1 3730011 ^p2 3720010)
+(make line ^p1 3780006 ^p2 3800006)
+(make line ^p1 3800006 ^p2 3810006)
+(make line ^p1 3810006 ^p2 3820006)
+(make line ^p1 3780006 ^p2 3780008)
+(make line ^p1 3780008 ^p2 3780009)
+(make line ^p1 3780009 ^p2 3780010)
+(make line ^p1 3780010 ^p2 3820010)
+(make line ^p1 3820010 ^p2 3820006)
+(make line ^p1 3820006 ^p2 3830007)
+(make line ^p1 3830007 ^p2 3830008)
+(make line ^p1 3830008 ^p2 3830009)
+(make line ^p1 3830009 ^p2 3830011)
+(make line ^p1 3830011 ^p2 3820010)
+(make line ^p1 3830011 ^p2 3810011)
+(make line ^p1 3810011 ^p2 3800011)
+(make line ^p1 3800011 ^p2 3790011)
+(make line ^p1 3790011 ^p2 3780010)
+(make line ^p1 3710003 ^p2 3720003)
+(make line ^p1 3690005 ^p2 3690006)
+(make line ^p1 3740005 ^p2 3740006)
+(make line ^p1 3710008 ^p2 3720008)
+(make line ^p1 3890003 ^p2 3900003)
+(make line ^p1 3870005 ^p2 3870006)
+(make line ^p1 3920005 ^p2 3920006)
+(make line ^p1 3890008 ^p2 3900008)
+(make line ^p1 3840000 ^p2 3860000)
+(make line ^p1 3860000 ^p2 3870000)
+(make line ^p1 3870000 ^p2 3880000)
+(make line ^p1 3840000 ^p2 3840002)
+(make line ^p1 3840002 ^p2 3840003)
+(make line ^p1 3840003 ^p2 3840004)
+(make line ^p1 3840004 ^p2 3880004)
+(make line ^p1 3880004 ^p2 3880000)
+(make line ^p1 3880000 ^p2 3890001)
+(make line ^p1 3890001 ^p2 3890002)
+(make line ^p1 3890002 ^p2 3890003)
+(make line ^p1 3890003 ^p2 3890005)
+(make line ^p1 3890005 ^p2 3880004)
+(make line ^p1 3890005 ^p2 3870005)
+(make line ^p1 3870005 ^p2 3860005)
+(make line ^p1 3860005 ^p2 3850005)
+(make line ^p1 3850005 ^p2 3840004)
+(make line ^p1 3900000 ^p2 3920000)
+(make line ^p1 3920000 ^p2 3930000)
+(make line ^p1 3930000 ^p2 3940000)
+(make line ^p1 3900000 ^p2 3900002)
+(make line ^p1 3900002 ^p2 3900003)
+(make line ^p1 3900003 ^p2 3900004)
+(make line ^p1 3900004 ^p2 3940004)
+(make line ^p1 3940004 ^p2 3940000)
+(make line ^p1 3940000 ^p2 3950001)
+(make line ^p1 3950001 ^p2 3950002)
+(make line ^p1 3950002 ^p2 3950003)
+(make line ^p1 3950003 ^p2 3950005)
+(make line ^p1 3950005 ^p2 3940004)
+(make line ^p1 3950005 ^p2 3930005)
+(make line ^p1 3930005 ^p2 3920005)
+(make line ^p1 3920005 ^p2 3910005)
+(make line ^p1 3910005 ^p2 3900004)
+(make line ^p1 3840006 ^p2 3860006)
+(make line ^p1 3860006 ^p2 3870006)
+(make line ^p1 3870006 ^p2 3880006)
+(make line ^p1 3840006 ^p2 3840008)
+(make line ^p1 3840008 ^p2 3840009)
+(make line ^p1 3840009 ^p2 3840010)
+(make line ^p1 3840010 ^p2 3880010)
+(make line ^p1 3880010 ^p2 3880006)
+(make line ^p1 3880006 ^p2 3890007)
+(make line ^p1 3890007 ^p2 3890008)
+(make line ^p1 3890008 ^p2 3890009)
+(make line ^p1 3890009 ^p2 3890011)
+(make line ^p1 3890011 ^p2 3880010)
+(make line ^p1 3890011 ^p2 3870011)
+(make line ^p1 3870011 ^p2 3860011)
+(make line ^p1 3860011 ^p2 3850011)
+(make line ^p1 3850011 ^p2 3840010)
+(make line ^p1 3900006 ^p2 3920006)
+(make line ^p1 3920006 ^p2 3930006)
+(make line ^p1 3930006 ^p2 3940006)
+(make line ^p1 3900006 ^p2 3900008)
+(make line ^p1 3900008 ^p2 3900009)
+(make line ^p1 3900009 ^p2 3900010)
+(make line ^p1 3900010 ^p2 3940010)
+(make line ^p1 3940010 ^p2 3940006)
+(make line ^p1 3940006 ^p2 3950007)
+(make line ^p1 3950007 ^p2 3950008)
+(make line ^p1 3950008 ^p2 3950009)
+(make line ^p1 3950009 ^p2 3950011)
+(make line ^p1 3950011 ^p2 3940010)
+(make line ^p1 3950011 ^p2 3930011)
+(make line ^p1 3930011 ^p2 3920011)
+(make line ^p1 3920011 ^p2 3910011)
+(make line ^p1 3910011 ^p2 3900010)
+(make line ^p1 3830003 ^p2 3840003)
+(make line ^p1 3810005 ^p2 3810006)
+(make line ^p1 3860005 ^p2 3860006)
+(make line ^p1 3830008 ^p2 3840008)
+(make line ^p1 4010003 ^p2 4020003)
+(make line ^p1 3990005 ^p2 3990006)
+(make line ^p1 4040005 ^p2 4040006)
+(make line ^p1 4010008 ^p2 4020008)
+(make line ^p1 3960000 ^p2 3980000)
+(make line ^p1 3980000 ^p2 3990000)
+(make line ^p1 3990000 ^p2 4000000)
+(make line ^p1 3960000 ^p2 3960002)
+(make line ^p1 3960002 ^p2 3960003)
+(make line ^p1 3960003 ^p2 3960004)
+(make line ^p1 3960004 ^p2 4000004)
+(make line ^p1 4000004 ^p2 4000000)
+(make line ^p1 4000000 ^p2 4010001)
+(make line ^p1 4010001 ^p2 4010002)
+(make line ^p1 4010002 ^p2 4010003)
+(make line ^p1 4010003 ^p2 4010005)
+(make line ^p1 4010005 ^p2 4000004)
+(make line ^p1 4010005 ^p2 3990005)
+(make line ^p1 3990005 ^p2 3980005)
+(make line ^p1 3980005 ^p2 3970005)
+(make line ^p1 3970005 ^p2 3960004)
+(make line ^p1 4020000 ^p2 4040000)
+(make line ^p1 4040000 ^p2 4050000)
+(make line ^p1 4050000 ^p2 4060000)
+(make line ^p1 4020000 ^p2 4020002)
+(make line ^p1 4020002 ^p2 4020003)
+(make line ^p1 4020003 ^p2 4020004)
+(make line ^p1 4020004 ^p2 4060004)
+(make line ^p1 4060004 ^p2 4060000)
+(make line ^p1 4060000 ^p2 4070001)
+(make line ^p1 4070001 ^p2 4070002)
+(make line ^p1 4070002 ^p2 4070003)
+(make line ^p1 4070003 ^p2 4070005)
+(make line ^p1 4070005 ^p2 4060004)
+(make line ^p1 4070005 ^p2 4050005)
+(make line ^p1 4050005 ^p2 4040005)
+(make line ^p1 4040005 ^p2 4030005)
+(make line ^p1 4030005 ^p2 4020004)
+(make line ^p1 3960006 ^p2 3980006)
+(make line ^p1 3980006 ^p2 3990006)
+(make line ^p1 3990006 ^p2 4000006)
+(make line ^p1 3960006 ^p2 3960008)
+(make line ^p1 3960008 ^p2 3960009)
+(make line ^p1 3960009 ^p2 3960010)
+(make line ^p1 3960010 ^p2 4000010)
+(make line ^p1 4000010 ^p2 4000006)
+(make line ^p1 4000006 ^p2 4010007)
+(make line ^p1 4010007 ^p2 4010008)
+(make line ^p1 4010008 ^p2 4010009)
+(make line ^p1 4010009 ^p2 4010011)
+(make line ^p1 4010011 ^p2 4000010)
+(make line ^p1 4010011 ^p2 3990011)
+(make line ^p1 3990011 ^p2 3980011)
+(make line ^p1 3980011 ^p2 3970011)
+(make line ^p1 3970011 ^p2 3960010)
+(make line ^p1 4020006 ^p2 4040006)
+(make line ^p1 4040006 ^p2 4050006)
+(make line ^p1 4050006 ^p2 4060006)
+(make line ^p1 4020006 ^p2 4020008)
+(make line ^p1 4020008 ^p2 4020009)
+(make line ^p1 4020009 ^p2 4020010)
+(make line ^p1 4020010 ^p2 4060010)
+(make line ^p1 4060010 ^p2 4060006)
+(make line ^p1 4060006 ^p2 4070007)
+(make line ^p1 4070007 ^p2 4070008)
+(make line ^p1 4070008 ^p2 4070009)
+(make line ^p1 4070009 ^p2 4070011)
+(make line ^p1 4070011 ^p2 4060010)
+(make line ^p1 4070011 ^p2 4050011)
+(make line ^p1 4050011 ^p2 4040011)
+(make line ^p1 4040011 ^p2 4030011)
+(make line ^p1 4030011 ^p2 4020010)
+(make line ^p1 3950003 ^p2 3960003)
+(make line ^p1 3930005 ^p2 3930006)
+(make line ^p1 3980005 ^p2 3980006)
+(make line ^p1 3950008 ^p2 3960008)
+(make line ^p1 4130003 ^p2 4140003)
+(make line ^p1 4110005 ^p2 4110006)
+(make line ^p1 4160005 ^p2 4160006)
+(make line ^p1 4130008 ^p2 4140008)
+(make line ^p1 4080000 ^p2 4100000)
+(make line ^p1 4100000 ^p2 4110000)
+(make line ^p1 4110000 ^p2 4120000)
+(make line ^p1 4080000 ^p2 4080002)
+(make line ^p1 4080002 ^p2 4080003)
+(make line ^p1 4080003 ^p2 4080004)
+(make line ^p1 4080004 ^p2 4120004)
+(make line ^p1 4120004 ^p2 4120000)
+(make line ^p1 4120000 ^p2 4130001)
+(make line ^p1 4130001 ^p2 4130002)
+(make line ^p1 4130002 ^p2 4130003)
+(make line ^p1 4130003 ^p2 4130005)
+(make line ^p1 4130005 ^p2 4120004)
+(make line ^p1 4130005 ^p2 4110005)
+(make line ^p1 4110005 ^p2 4100005)
+(make line ^p1 4100005 ^p2 4090005)
+(make line ^p1 4090005 ^p2 4080004)
+(make line ^p1 4140000 ^p2 4160000)
+(make line ^p1 4160000 ^p2 4170000)
+(make line ^p1 4170000 ^p2 4180000)
+(make line ^p1 4140000 ^p2 4140002)
+(make line ^p1 4140002 ^p2 4140003)
+(make line ^p1 4140003 ^p2 4140004)
+(make line ^p1 4140004 ^p2 4180004)
+(make line ^p1 4180004 ^p2 4180000)
+(make line ^p1 4180000 ^p2 4190001)
+(make line ^p1 4190001 ^p2 4190002)
+(make line ^p1 4190002 ^p2 4190003)
+(make line ^p1 4190003 ^p2 4190005)
+(make line ^p1 4190005 ^p2 4180004)
+(make line ^p1 4190005 ^p2 4170005)
+(make line ^p1 4170005 ^p2 4160005)
+(make line ^p1 4160005 ^p2 4150005)
+(make line ^p1 4150005 ^p2 4140004)
+(make line ^p1 4080006 ^p2 4100006)
+(make line ^p1 4100006 ^p2 4110006)
+(make line ^p1 4110006 ^p2 4120006)
+(make line ^p1 4080006 ^p2 4080008)
+(make line ^p1 4080008 ^p2 4080009)
+(make line ^p1 4080009 ^p2 4080010)
+(make line ^p1 4080010 ^p2 4120010)
+(make line ^p1 4120010 ^p2 4120006)
+(make line ^p1 4120006 ^p2 4130007)
+(make line ^p1 4130007 ^p2 4130008)
+(make line ^p1 4130008 ^p2 4130009)
+(make line ^p1 4130009 ^p2 4130011)
+(make line ^p1 4130011 ^p2 4120010)
+(make line ^p1 4130011 ^p2 4110011)
+(make line ^p1 4110011 ^p2 4100011)
+(make line ^p1 4100011 ^p2 4090011)
+(make line ^p1 4090011 ^p2 4080010)
+(make line ^p1 4140006 ^p2 4160006)
+(make line ^p1 4160006 ^p2 4170006)
+(make line ^p1 4170006 ^p2 4180006)
+(make line ^p1 4140006 ^p2 4140008)
+(make line ^p1 4140008 ^p2 4140009)
+(make line ^p1 4140009 ^p2 4140010)
+(make line ^p1 4140010 ^p2 4180010)
+(make line ^p1 4180010 ^p2 4180006)
+(make line ^p1 4180006 ^p2 4190007)
+(make line ^p1 4190007 ^p2 4190008)
+(make line ^p1 4190008 ^p2 4190009)
+(make line ^p1 4190009 ^p2 4190011)
+(make line ^p1 4190011 ^p2 4180010)
+(make line ^p1 4190011 ^p2 4170011)
+(make line ^p1 4170011 ^p2 4160011)
+(make line ^p1 4160011 ^p2 4150011)
+(make line ^p1 4150011 ^p2 4140010)
+(make line ^p1 4070003 ^p2 4080003)
+(make line ^p1 4050005 ^p2 4050006)
+(make line ^p1 4100005 ^p2 4100006)
+(make line ^p1 4070008 ^p2 4080008)
+(make line ^p1 4250003 ^p2 4260003)
+(make line ^p1 4230005 ^p2 4230006)
+(make line ^p1 4280005 ^p2 4280006)
+(make line ^p1 4250008 ^p2 4260008)
+(make line ^p1 4200000 ^p2 4220000)
+(make line ^p1 4220000 ^p2 4230000)
+(make line ^p1 4230000 ^p2 4240000)
+(make line ^p1 4200000 ^p2 4200002)
+(make line ^p1 4200002 ^p2 4200003)
+(make line ^p1 4200003 ^p2 4200004)
+(make line ^p1 4200004 ^p2 4240004)
+(make line ^p1 4240004 ^p2 4240000)
+(make line ^p1 4240000 ^p2 4250001)
+(make line ^p1 4250001 ^p2 4250002)
+(make line ^p1 4250002 ^p2 4250003)
+(make line ^p1 4250003 ^p2 4250005)
+(make line ^p1 4250005 ^p2 4240004)
+(make line ^p1 4250005 ^p2 4230005)
+(make line ^p1 4230005 ^p2 4220005)
+(make line ^p1 4220005 ^p2 4210005)
+(make line ^p1 4210005 ^p2 4200004)
+(make line ^p1 4260000 ^p2 4280000)
+(make line ^p1 4280000 ^p2 4290000)
+(make line ^p1 4290000 ^p2 4300000)
+(make line ^p1 4260000 ^p2 4260002)
+(make line ^p1 4260002 ^p2 4260003)
+(make line ^p1 4260003 ^p2 4260004)
+(make line ^p1 4260004 ^p2 4300004)
+(make line ^p1 4300004 ^p2 4300000)
+(make line ^p1 4300000 ^p2 4310001)
+(make line ^p1 4310001 ^p2 4310002)
+(make line ^p1 4310002 ^p2 4310003)
+(make line ^p1 4310003 ^p2 4310005)
+(make line ^p1 4310005 ^p2 4300004)
+(make line ^p1 4310005 ^p2 4290005)
+(make line ^p1 4290005 ^p2 4280005)
+(make line ^p1 4280005 ^p2 4270005)
+(make line ^p1 4270005 ^p2 4260004)
+(make line ^p1 4200006 ^p2 4220006)
+(make line ^p1 4220006 ^p2 4230006)
+(make line ^p1 4230006 ^p2 4240006)
+(make line ^p1 4200006 ^p2 4200008)
+(make line ^p1 4200008 ^p2 4200009)
+(make line ^p1 4200009 ^p2 4200010)
+(make line ^p1 4200010 ^p2 4240010)
+(make line ^p1 4240010 ^p2 4240006)
+(make line ^p1 4240006 ^p2 4250007)
+(make line ^p1 4250007 ^p2 4250008)
+(make line ^p1 4250008 ^p2 4250009)
+(make line ^p1 4250009 ^p2 4250011)
+(make line ^p1 4250011 ^p2 4240010)
+(make line ^p1 4250011 ^p2 4230011)
+(make line ^p1 4230011 ^p2 4220011)
+(make line ^p1 4220011 ^p2 4210011)
+(make line ^p1 4210011 ^p2 4200010)
+(make line ^p1 4260006 ^p2 4280006)
+(make line ^p1 4280006 ^p2 4290006)
+(make line ^p1 4290006 ^p2 4300006)
+(make line ^p1 4260006 ^p2 4260008)
+(make line ^p1 4260008 ^p2 4260009)
+(make line ^p1 4260009 ^p2 4260010)
+(make line ^p1 4260010 ^p2 4300010)
+(make line ^p1 4300010 ^p2 4300006)
+(make line ^p1 4300006 ^p2 4310007)
+(make line ^p1 4310007 ^p2 4310008)
+(make line ^p1 4310008 ^p2 4310009)
+(make line ^p1 4310009 ^p2 4310011)
+(make line ^p1 4310011 ^p2 4300010)
+(make line ^p1 4310011 ^p2 4290011)
+(make line ^p1 4290011 ^p2 4280011)
+(make line ^p1 4280011 ^p2 4270011)
+(make line ^p1 4270011 ^p2 4260010)
+(make line ^p1 4190003 ^p2 4200003)
+(make line ^p1 4170005 ^p2 4170006)
+(make line ^p1 4220005 ^p2 4220006)
+(make line ^p1 4190008 ^p2 4200008)
+(make line ^p1 4370003 ^p2 4380003)
+(make line ^p1 4350005 ^p2 4350006)
+(make line ^p1 4400005 ^p2 4400006)
+(make line ^p1 4370008 ^p2 4380008)
+(make line ^p1 4320000 ^p2 4340000)
+(make line ^p1 4340000 ^p2 4350000)
+(make line ^p1 4350000 ^p2 4360000)
+(make line ^p1 4320000 ^p2 4320002)
+(make line ^p1 4320002 ^p2 4320003)
+(make line ^p1 4320003 ^p2 4320004)
+(make line ^p1 4320004 ^p2 4360004)
+(make line ^p1 4360004 ^p2 4360000)
+(make line ^p1 4360000 ^p2 4370001)
+(make line ^p1 4370001 ^p2 4370002)
+(make line ^p1 4370002 ^p2 4370003)
+(make line ^p1 4370003 ^p2 4370005)
+(make line ^p1 4370005 ^p2 4360004)
+(make line ^p1 4370005 ^p2 4350005)
+(make line ^p1 4350005 ^p2 4340005)
+(make line ^p1 4340005 ^p2 4330005)
+(make line ^p1 4330005 ^p2 4320004)
+(make line ^p1 4380000 ^p2 4400000)
+(make line ^p1 4400000 ^p2 4410000)
+(make line ^p1 4410000 ^p2 4420000)
+(make line ^p1 4380000 ^p2 4380002)
+(make line ^p1 4380002 ^p2 4380003)
+(make line ^p1 4380003 ^p2 4380004)
+(make line ^p1 4380004 ^p2 4420004)
+(make line ^p1 4420004 ^p2 4420000)
+(make line ^p1 4420000 ^p2 4430001)
+(make line ^p1 4430001 ^p2 4430002)
+(make line ^p1 4430002 ^p2 4430003)
+(make line ^p1 4430003 ^p2 4430005)
+(make line ^p1 4430005 ^p2 4420004)
+(make line ^p1 4430005 ^p2 4410005)
+(make line ^p1 4410005 ^p2 4400005)
+(make line ^p1 4400005 ^p2 4390005)
+(make line ^p1 4390005 ^p2 4380004)
+(make line ^p1 4320006 ^p2 4340006)
+(make line ^p1 4340006 ^p2 4350006)
+(make line ^p1 4350006 ^p2 4360006)
+(make line ^p1 4320006 ^p2 4320008)
+(make line ^p1 4320008 ^p2 4320009)
+(make line ^p1 4320009 ^p2 4320010)
+(make line ^p1 4320010 ^p2 4360010)
+(make line ^p1 4360010 ^p2 4360006)
+(make line ^p1 4360006 ^p2 4370007)
+(make line ^p1 4370007 ^p2 4370008)
+(make line ^p1 4370008 ^p2 4370009)
+(make line ^p1 4370009 ^p2 4370011)
+(make line ^p1 4370011 ^p2 4360010)
+(make line ^p1 4370011 ^p2 4350011)
+(make line ^p1 4350011 ^p2 4340011)
+(make line ^p1 4340011 ^p2 4330011)
+(make line ^p1 4330011 ^p2 4320010)
+(make line ^p1 4380006 ^p2 4400006)
+(make line ^p1 4400006 ^p2 4410006)
+(make line ^p1 4410006 ^p2 4420006)
+(make line ^p1 4380006 ^p2 4380008)
+(make line ^p1 4380008 ^p2 4380009)
+(make line ^p1 4380009 ^p2 4380010)
+(make line ^p1 4380010 ^p2 4420010)
+(make line ^p1 4420010 ^p2 4420006)
+(make line ^p1 4420006 ^p2 4430007)
+(make line ^p1 4430007 ^p2 4430008)
+(make line ^p1 4430008 ^p2 4430009)
+(make line ^p1 4430009 ^p2 4430011)
+(make line ^p1 4430011 ^p2 4420010)
+(make line ^p1 4430011 ^p2 4410011)
+(make line ^p1 4410011 ^p2 4400011)
+(make line ^p1 4400011 ^p2 4390011)
+(make line ^p1 4390011 ^p2 4380010)
+(make line ^p1 4310003 ^p2 4320003)
+(make line ^p1 4290005 ^p2 4290006)
+(make line ^p1 4340005 ^p2 4340006)
+(make line ^p1 4310008 ^p2 4320008)
+(make line ^p1 4490003 ^p2 4500003)
+(make line ^p1 4470005 ^p2 4470006)
+(make line ^p1 4520005 ^p2 4520006)
+(make line ^p1 4490008 ^p2 4500008)
+(make line ^p1 4440000 ^p2 4460000)
+(make line ^p1 4460000 ^p2 4470000)
+(make line ^p1 4470000 ^p2 4480000)
+(make line ^p1 4440000 ^p2 4440002)
+(make line ^p1 4440002 ^p2 4440003)
+(make line ^p1 4440003 ^p2 4440004)
+(make line ^p1 4440004 ^p2 4480004)
+(make line ^p1 4480004 ^p2 4480000)
+(make line ^p1 4480000 ^p2 4490001)
+(make line ^p1 4490001 ^p2 4490002)
+(make line ^p1 4490002 ^p2 4490003)
+(make line ^p1 4490003 ^p2 4490005)
+(make line ^p1 4490005 ^p2 4480004)
+(make line ^p1 4490005 ^p2 4470005)
+(make line ^p1 4470005 ^p2 4460005)
+(make line ^p1 4460005 ^p2 4450005)
+(make line ^p1 4450005 ^p2 4440004)
+(make line ^p1 4500000 ^p2 4520000)
+(make line ^p1 4520000 ^p2 4530000)
+(make line ^p1 4530000 ^p2 4540000)
+(make line ^p1 4500000 ^p2 4500002)
+(make line ^p1 4500002 ^p2 4500003)
+(make line ^p1 4500003 ^p2 4500004)
+(make line ^p1 4500004 ^p2 4540004)
+(make line ^p1 4540004 ^p2 4540000)
+(make line ^p1 4540000 ^p2 4550001)
+(make line ^p1 4550001 ^p2 4550002)
+(make line ^p1 4550002 ^p2 4550003)
+(make line ^p1 4550003 ^p2 4550005)
+(make line ^p1 4550005 ^p2 4540004)
+(make line ^p1 4550005 ^p2 4530005)
+(make line ^p1 4530005 ^p2 4520005)
+(make line ^p1 4520005 ^p2 4510005)
+(make line ^p1 4510005 ^p2 4500004)
+(make line ^p1 4440006 ^p2 4460006)
+(make line ^p1 4460006 ^p2 4470006)
+(make line ^p1 4470006 ^p2 4480006)
+(make line ^p1 4440006 ^p2 4440008)
+(make line ^p1 4440008 ^p2 4440009)
+(make line ^p1 4440009 ^p2 4440010)
+(make line ^p1 4440010 ^p2 4480010)
+(make line ^p1 4480010 ^p2 4480006)
+(make line ^p1 4480006 ^p2 4490007)
+(make line ^p1 4490007 ^p2 4490008)
+(make line ^p1 4490008 ^p2 4490009)
+(make line ^p1 4490009 ^p2 4490011)
+(make line ^p1 4490011 ^p2 4480010)
+(make line ^p1 4490011 ^p2 4470011)
+(make line ^p1 4470011 ^p2 4460011)
+(make line ^p1 4460011 ^p2 4450011)
+(make line ^p1 4450011 ^p2 4440010)
+(make line ^p1 4500006 ^p2 4520006)
+(make line ^p1 4520006 ^p2 4530006)
+(make line ^p1 4530006 ^p2 4540006)
+(make line ^p1 4500006 ^p2 4500008)
+(make line ^p1 4500008 ^p2 4500009)
+(make line ^p1 4500009 ^p2 4500010)
+(make line ^p1 4500010 ^p2 4540010)
+(make line ^p1 4540010 ^p2 4540006)
+(make line ^p1 4540006 ^p2 4550007)
+(make line ^p1 4550007 ^p2 4550008)
+(make line ^p1 4550008 ^p2 4550009)
+(make line ^p1 4550009 ^p2 4550011)
+(make line ^p1 4550011 ^p2 4540010)
+(make line ^p1 4550011 ^p2 4530011)
+(make line ^p1 4530011 ^p2 4520011)
+(make line ^p1 4520011 ^p2 4510011)
+(make line ^p1 4510011 ^p2 4500010)
+(make line ^p1 4430003 ^p2 4440003)
+(make line ^p1 4410005 ^p2 4410006)
+(make line ^p1 4460005 ^p2 4460006)
+(make line ^p1 4430008 ^p2 4440008)
+(make line ^p1 4610003 ^p2 4620003)
+(make line ^p1 4590005 ^p2 4590006)
+(make line ^p1 4640005 ^p2 4640006)
+(make line ^p1 4610008 ^p2 4620008)
+(make line ^p1 4560000 ^p2 4580000)
+(make line ^p1 4580000 ^p2 4590000)
+(make line ^p1 4590000 ^p2 4600000)
+(make line ^p1 4560000 ^p2 4560002)
+(make line ^p1 4560002 ^p2 4560003)
+(make line ^p1 4560003 ^p2 4560004)
+(make line ^p1 4560004 ^p2 4600004)
+(make line ^p1 4600004 ^p2 4600000)
+(make line ^p1 4600000 ^p2 4610001)
+(make line ^p1 4610001 ^p2 4610002)
+(make line ^p1 4610002 ^p2 4610003)
+(make line ^p1 4610003 ^p2 4610005)
+(make line ^p1 4610005 ^p2 4600004)
+(make line ^p1 4610005 ^p2 4590005)
+(make line ^p1 4590005 ^p2 4580005)
+(make line ^p1 4580005 ^p2 4570005)
+(make line ^p1 4570005 ^p2 4560004)
+(make line ^p1 4620000 ^p2 4640000)
+(make line ^p1 4640000 ^p2 4650000)
+(make line ^p1 4650000 ^p2 4660000)
+(make line ^p1 4620000 ^p2 4620002)
+(make line ^p1 4620002 ^p2 4620003)
+(make line ^p1 4620003 ^p2 4620004)
+(make line ^p1 4620004 ^p2 4660004)
+(make line ^p1 4660004 ^p2 4660000)
+(make line ^p1 4660000 ^p2 4670001)
+(make line ^p1 4670001 ^p2 4670002)
+(make line ^p1 4670002 ^p2 4670003)
+(make line ^p1 4670003 ^p2 4670005)
+(make line ^p1 4670005 ^p2 4660004)
+(make line ^p1 4670005 ^p2 4650005)
+(make line ^p1 4650005 ^p2 4640005)
+(make line ^p1 4640005 ^p2 4630005)
+(make line ^p1 4630005 ^p2 4620004)
+(make line ^p1 4560006 ^p2 4580006)
+(make line ^p1 4580006 ^p2 4590006)
+(make line ^p1 4590006 ^p2 4600006)
+(make line ^p1 4560006 ^p2 4560008)
+(make line ^p1 4560008 ^p2 4560009)
+(make line ^p1 4560009 ^p2 4560010)
+(make line ^p1 4560010 ^p2 4600010)
+(make line ^p1 4600010 ^p2 4600006)
+(make line ^p1 4600006 ^p2 4610007)
+(make line ^p1 4610007 ^p2 4610008)
+(make line ^p1 4610008 ^p2 4610009)
+(make line ^p1 4610009 ^p2 4610011)
+(make line ^p1 4610011 ^p2 4600010)
+(make line ^p1 4610011 ^p2 4590011)
+(make line ^p1 4590011 ^p2 4580011)
+(make line ^p1 4580011 ^p2 4570011)
+(make line ^p1 4570011 ^p2 4560010)
+(make line ^p1 4620006 ^p2 4640006)
+(make line ^p1 4640006 ^p2 4650006)
+(make line ^p1 4650006 ^p2 4660006)
+(make line ^p1 4620006 ^p2 4620008)
+(make line ^p1 4620008 ^p2 4620009)
+(make line ^p1 4620009 ^p2 4620010)
+(make line ^p1 4620010 ^p2 4660010)
+(make line ^p1 4660010 ^p2 4660006)
+(make line ^p1 4660006 ^p2 4670007)
+(make line ^p1 4670007 ^p2 4670008)
+(make line ^p1 4670008 ^p2 4670009)
+(make line ^p1 4670009 ^p2 4670011)
+(make line ^p1 4670011 ^p2 4660010)
+(make line ^p1 4670011 ^p2 4650011)
+(make line ^p1 4650011 ^p2 4640011)
+(make line ^p1 4640011 ^p2 4630011)
+(make line ^p1 4630011 ^p2 4620010)
+(make line ^p1 4550003 ^p2 4560003)
+(make line ^p1 4530005 ^p2 4530006)
+(make line ^p1 4580005 ^p2 4580006)
+(make line ^p1 4550008 ^p2 4560008)
+(make line ^p1 4730003 ^p2 4740003)
+(make line ^p1 4710005 ^p2 4710006)
+(make line ^p1 4760005 ^p2 4760006)
+(make line ^p1 4730008 ^p2 4740008)
+(make line ^p1 4680000 ^p2 4700000)
+(make line ^p1 4700000 ^p2 4710000)
+(make line ^p1 4710000 ^p2 4720000)
+(make line ^p1 4680000 ^p2 4680002)
+(make line ^p1 4680002 ^p2 4680003)
+(make line ^p1 4680003 ^p2 4680004)
+(make line ^p1 4680004 ^p2 4720004)
+(make line ^p1 4720004 ^p2 4720000)
+(make line ^p1 4720000 ^p2 4730001)
+(make line ^p1 4730001 ^p2 4730002)
+(make line ^p1 4730002 ^p2 4730003)
+(make line ^p1 4730003 ^p2 4730005)
+(make line ^p1 4730005 ^p2 4720004)
+(make line ^p1 4730005 ^p2 4710005)
+(make line ^p1 4710005 ^p2 4700005)
+(make line ^p1 4700005 ^p2 4690005)
+(make line ^p1 4690005 ^p2 4680004)
+(make line ^p1 4740000 ^p2 4760000)
+(make line ^p1 4760000 ^p2 4770000)
+(make line ^p1 4770000 ^p2 4780000)
+(make line ^p1 4740000 ^p2 4740002)
+(make line ^p1 4740002 ^p2 4740003)
+(make line ^p1 4740003 ^p2 4740004)
+(make line ^p1 4740004 ^p2 4780004)
+(make line ^p1 4780004 ^p2 4780000)
+(make line ^p1 4780000 ^p2 4790001)
+(make line ^p1 4790001 ^p2 4790002)
+(make line ^p1 4790002 ^p2 4790003)
+(make line ^p1 4790003 ^p2 4790005)
+(make line ^p1 4790005 ^p2 4780004)
+(make line ^p1 4790005 ^p2 4770005)
+(make line ^p1 4770005 ^p2 4760005)
+(make line ^p1 4760005 ^p2 4750005)
+(make line ^p1 4750005 ^p2 4740004)
+(make line ^p1 4680006 ^p2 4700006)
+(make line ^p1 4700006 ^p2 4710006)
+(make line ^p1 4710006 ^p2 4720006)
+(make line ^p1 4680006 ^p2 4680008)
+(make line ^p1 4680008 ^p2 4680009)
+(make line ^p1 4680009 ^p2 4680010)
+(make line ^p1 4680010 ^p2 4720010)
+(make line ^p1 4720010 ^p2 4720006)
+(make line ^p1 4720006 ^p2 4730007)
+(make line ^p1 4730007 ^p2 4730008)
+(make line ^p1 4730008 ^p2 4730009)
+(make line ^p1 4730009 ^p2 4730011)
+(make line ^p1 4730011 ^p2 4720010)
+(make line ^p1 4730011 ^p2 4710011)
+(make line ^p1 4710011 ^p2 4700011)
+(make line ^p1 4700011 ^p2 4690011)
+(make line ^p1 4690011 ^p2 4680010)
+(make line ^p1 4740006 ^p2 4760006)
+(make line ^p1 4760006 ^p2 4770006)
+(make line ^p1 4770006 ^p2 4780006)
+(make line ^p1 4740006 ^p2 4740008)
+(make line ^p1 4740008 ^p2 4740009)
+(make line ^p1 4740009 ^p2 4740010)
+(make line ^p1 4740010 ^p2 4780010)
+(make line ^p1 4780010 ^p2 4780006)
+(make line ^p1 4780006 ^p2 4790007)
+(make line ^p1 4790007 ^p2 4790008)
+(make line ^p1 4790008 ^p2 4790009)
+(make line ^p1 4790009 ^p2 4790011)
+(make line ^p1 4790011 ^p2 4780010)
+(make line ^p1 4790011 ^p2 4770011)
+(make line ^p1 4770011 ^p2 4760011)
+(make line ^p1 4760011 ^p2 4750011)
+(make line ^p1 4750011 ^p2 4740010)
+(make line ^p1 4670003 ^p2 4680003)
+(make line ^p1 4650005 ^p2 4650006)
+(make line ^p1 4700005 ^p2 4700006)
+(make line ^p1 4670008 ^p2 4680008)
+(make line ^p1 4850003 ^p2 4860003)
+(make line ^p1 4830005 ^p2 4830006)
+(make line ^p1 4880005 ^p2 4880006)
+(make line ^p1 4850008 ^p2 4860008)
+(make line ^p1 4800000 ^p2 4820000)
+(make line ^p1 4820000 ^p2 4830000)
+(make line ^p1 4830000 ^p2 4840000)
+(make line ^p1 4800000 ^p2 4800002)
+(make line ^p1 4800002 ^p2 4800003)
+(make line ^p1 4800003 ^p2 4800004)
+(make line ^p1 4800004 ^p2 4840004)
+(make line ^p1 4840004 ^p2 4840000)
+(make line ^p1 4840000 ^p2 4850001)
+(make line ^p1 4850001 ^p2 4850002)
+(make line ^p1 4850002 ^p2 4850003)
+(make line ^p1 4850003 ^p2 4850005)
+(make line ^p1 4850005 ^p2 4840004)
+(make line ^p1 4850005 ^p2 4830005)
+(make line ^p1 4830005 ^p2 4820005)
+(make line ^p1 4820005 ^p2 4810005)
+(make line ^p1 4810005 ^p2 4800004)
+(make line ^p1 4860000 ^p2 4880000)
+(make line ^p1 4880000 ^p2 4890000)
+(make line ^p1 4890000 ^p2 4900000)
+(make line ^p1 4860000 ^p2 4860002)
+(make line ^p1 4860002 ^p2 4860003)
+(make line ^p1 4860003 ^p2 4860004)
+(make line ^p1 4860004 ^p2 4900004)
+(make line ^p1 4900004 ^p2 4900000)
+(make line ^p1 4900000 ^p2 4910001)
+(make line ^p1 4910001 ^p2 4910002)
+(make line ^p1 4910002 ^p2 4910003)
+(make line ^p1 4910003 ^p2 4910005)
+(make line ^p1 4910005 ^p2 4900004)
+(make line ^p1 4910005 ^p2 4890005)
+(make line ^p1 4890005 ^p2 4880005)
+(make line ^p1 4880005 ^p2 4870005)
+(make line ^p1 4870005 ^p2 4860004)
+(make line ^p1 4800006 ^p2 4820006)
+(make line ^p1 4820006 ^p2 4830006)
+(make line ^p1 4830006 ^p2 4840006)
+(make line ^p1 4800006 ^p2 4800008)
+(make line ^p1 4800008 ^p2 4800009)
+(make line ^p1 4800009 ^p2 4800010)
+(make line ^p1 4800010 ^p2 4840010)
+(make line ^p1 4840010 ^p2 4840006)
+(make line ^p1 4840006 ^p2 4850007)
+(make line ^p1 4850007 ^p2 4850008)
+(make line ^p1 4850008 ^p2 4850009)
+(make line ^p1 4850009 ^p2 4850011)
+(make line ^p1 4850011 ^p2 4840010)
+(make line ^p1 4850011 ^p2 4830011)
+(make line ^p1 4830011 ^p2 4820011)
+(make line ^p1 4820011 ^p2 4810011)
+(make line ^p1 4810011 ^p2 4800010)
+(make line ^p1 4860006 ^p2 4880006)
+(make line ^p1 4880006 ^p2 4890006)
+(make line ^p1 4890006 ^p2 4900006)
+(make line ^p1 4860006 ^p2 4860008)
+(make line ^p1 4860008 ^p2 4860009)
+(make line ^p1 4860009 ^p2 4860010)
+(make line ^p1 4860010 ^p2 4900010)
+(make line ^p1 4900010 ^p2 4900006)
+(make line ^p1 4900006 ^p2 4910007)
+(make line ^p1 4910007 ^p2 4910008)
+(make line ^p1 4910008 ^p2 4910009)
+(make line ^p1 4910009 ^p2 4910011)
+(make line ^p1 4910011 ^p2 4900010)
+(make line ^p1 4910011 ^p2 4890011)
+(make line ^p1 4890011 ^p2 4880011)
+(make line ^p1 4880011 ^p2 4870011)
+(make line ^p1 4870011 ^p2 4860010)
+(make line ^p1 4790003 ^p2 4800003)
+(make line ^p1 4770005 ^p2 4770006)
+(make line ^p1 4820005 ^p2 4820006)
+(make line ^p1 4790008 ^p2 4800008)
+(make line ^p1 4970003 ^p2 4980003)
+(make line ^p1 4950005 ^p2 4950006)
+(make line ^p1 5000005 ^p2 5000006)
+(make line ^p1 4970008 ^p2 4980008)
+(make line ^p1 4920000 ^p2 4940000)
+(make line ^p1 4940000 ^p2 4950000)
+(make line ^p1 4950000 ^p2 4960000)
+(make line ^p1 4920000 ^p2 4920002)
+(make line ^p1 4920002 ^p2 4920003)
+(make line ^p1 4920003 ^p2 4920004)
+(make line ^p1 4920004 ^p2 4960004)
+(make line ^p1 4960004 ^p2 4960000)
+(make line ^p1 4960000 ^p2 4970001)
+(make line ^p1 4970001 ^p2 4970002)
+(make line ^p1 4970002 ^p2 4970003)
+(make line ^p1 4970003 ^p2 4970005)
+(make line ^p1 4970005 ^p2 4960004)
+(make line ^p1 4970005 ^p2 4950005)
+(make line ^p1 4950005 ^p2 4940005)
+(make line ^p1 4940005 ^p2 4930005)
+(make line ^p1 4930005 ^p2 4920004)
+(make line ^p1 4980000 ^p2 5000000)
+(make line ^p1 5000000 ^p2 5010000)
+(make line ^p1 5010000 ^p2 5020000)
+(make line ^p1 4980000 ^p2 4980002)
+(make line ^p1 4980002 ^p2 4980003)
+(make line ^p1 4980003 ^p2 4980004)
+(make line ^p1 4980004 ^p2 5020004)
+(make line ^p1 5020004 ^p2 5020000)
+(make line ^p1 5020000 ^p2 5030001)
+(make line ^p1 5030001 ^p2 5030002)
+(make line ^p1 5030002 ^p2 5030003)
+(make line ^p1 5030003 ^p2 5030005)
+(make line ^p1 5030005 ^p2 5020004)
+(make line ^p1 5030005 ^p2 5010005)
+(make line ^p1 5010005 ^p2 5000005)
+(make line ^p1 5000005 ^p2 4990005)
+(make line ^p1 4990005 ^p2 4980004)
+(make line ^p1 4920006 ^p2 4940006)
+(make line ^p1 4940006 ^p2 4950006)
+(make line ^p1 4950006 ^p2 4960006)
+(make line ^p1 4920006 ^p2 4920008)
+(make line ^p1 4920008 ^p2 4920009)
+(make line ^p1 4920009 ^p2 4920010)
+(make line ^p1 4920010 ^p2 4960010)
+(make line ^p1 4960010 ^p2 4960006)
+(make line ^p1 4960006 ^p2 4970007)
+(make line ^p1 4970007 ^p2 4970008)
+(make line ^p1 4970008 ^p2 4970009)
+(make line ^p1 4970009 ^p2 4970011)
+(make line ^p1 4970011 ^p2 4960010)
+(make line ^p1 4970011 ^p2 4950011)
+(make line ^p1 4950011 ^p2 4940011)
+(make line ^p1 4940011 ^p2 4930011)
+(make line ^p1 4930011 ^p2 4920010)
+(make line ^p1 4980006 ^p2 5000006)
+(make line ^p1 5000006 ^p2 5010006)
+(make line ^p1 5010006 ^p2 5020006)
+(make line ^p1 4980006 ^p2 4980008)
+(make line ^p1 4980008 ^p2 4980009)
+(make line ^p1 4980009 ^p2 4980010)
+(make line ^p1 4980010 ^p2 5020010)
+(make line ^p1 5020010 ^p2 5020006)
+(make line ^p1 5020006 ^p2 5030007)
+(make line ^p1 5030007 ^p2 5030008)
+(make line ^p1 5030008 ^p2 5030009)
+(make line ^p1 5030009 ^p2 5030011)
+(make line ^p1 5030011 ^p2 5020010)
+(make line ^p1 5030011 ^p2 5010011)
+(make line ^p1 5010011 ^p2 5000011)
+(make line ^p1 5000011 ^p2 4990011)
+(make line ^p1 4990011 ^p2 4980010)
+(make line ^p1 4910003 ^p2 4920003)
+(make line ^p1 4890005 ^p2 4890006)
+(make line ^p1 4940005 ^p2 4940006)
+(make line ^p1 4910008 ^p2 4920008)
+(make line ^p1 5090003 ^p2 5100003)
+(make line ^p1 5070005 ^p2 5070006)
+(make line ^p1 5120005 ^p2 5120006)
+(make line ^p1 5090008 ^p2 5100008)
+(make line ^p1 5040000 ^p2 5060000)
+(make line ^p1 5060000 ^p2 5070000)
+(make line ^p1 5070000 ^p2 5080000)
+(make line ^p1 5040000 ^p2 5040002)
+(make line ^p1 5040002 ^p2 5040003)
+(make line ^p1 5040003 ^p2 5040004)
+(make line ^p1 5040004 ^p2 5080004)
+(make line ^p1 5080004 ^p2 5080000)
+(make line ^p1 5080000 ^p2 5090001)
+(make line ^p1 5090001 ^p2 5090002)
+(make line ^p1 5090002 ^p2 5090003)
+(make line ^p1 5090003 ^p2 5090005)
+(make line ^p1 5090005 ^p2 5080004)
+(make line ^p1 5090005 ^p2 5070005)
+(make line ^p1 5070005 ^p2 5060005)
+(make line ^p1 5060005 ^p2 5050005)
+(make line ^p1 5050005 ^p2 5040004)
+(make line ^p1 5100000 ^p2 5120000)
+(make line ^p1 5120000 ^p2 5130000)
+(make line ^p1 5130000 ^p2 5140000)
+(make line ^p1 5100000 ^p2 5100002)
+(make line ^p1 5100002 ^p2 5100003)
+(make line ^p1 5100003 ^p2 5100004)
+(make line ^p1 5100004 ^p2 5140004)
+(make line ^p1 5140004 ^p2 5140000)
+(make line ^p1 5140000 ^p2 5150001)
+(make line ^p1 5150001 ^p2 5150002)
+(make line ^p1 5150002 ^p2 5150003)
+(make line ^p1 5150003 ^p2 5150005)
+(make line ^p1 5150005 ^p2 5140004)
+(make line ^p1 5150005 ^p2 5130005)
+(make line ^p1 5130005 ^p2 5120005)
+(make line ^p1 5120005 ^p2 5110005)
+(make line ^p1 5110005 ^p2 5100004)
+(make line ^p1 5040006 ^p2 5060006)
+(make line ^p1 5060006 ^p2 5070006)
+(make line ^p1 5070006 ^p2 5080006)
+(make line ^p1 5040006 ^p2 5040008)
+(make line ^p1 5040008 ^p2 5040009)
+(make line ^p1 5040009 ^p2 5040010)
+(make line ^p1 5040010 ^p2 5080010)
+(make line ^p1 5080010 ^p2 5080006)
+(make line ^p1 5080006 ^p2 5090007)
+(make line ^p1 5090007 ^p2 5090008)
+(make line ^p1 5090008 ^p2 5090009)
+(make line ^p1 5090009 ^p2 5090011)
+(make line ^p1 5090011 ^p2 5080010)
+(make line ^p1 5090011 ^p2 5070011)
+(make line ^p1 5070011 ^p2 5060011)
+(make line ^p1 5060011 ^p2 5050011)
+(make line ^p1 5050011 ^p2 5040010)
+(make line ^p1 5100006 ^p2 5120006)
+(make line ^p1 5120006 ^p2 5130006)
+(make line ^p1 5130006 ^p2 5140006)
+(make line ^p1 5100006 ^p2 5100008)
+(make line ^p1 5100008 ^p2 5100009)
+(make line ^p1 5100009 ^p2 5100010)
+(make line ^p1 5100010 ^p2 5140010)
+(make line ^p1 5140010 ^p2 5140006)
+(make line ^p1 5140006 ^p2 5150007)
+(make line ^p1 5150007 ^p2 5150008)
+(make line ^p1 5150008 ^p2 5150009)
+(make line ^p1 5150009 ^p2 5150011)
+(make line ^p1 5150011 ^p2 5140010)
+(make line ^p1 5150011 ^p2 5130011)
+(make line ^p1 5130011 ^p2 5120011)
+(make line ^p1 5120011 ^p2 5110011)
+(make line ^p1 5110011 ^p2 5100010)
+(make line ^p1 5030003 ^p2 5040003)
+(make line ^p1 5010005 ^p2 5010006)
+(make line ^p1 5060005 ^p2 5060006)
+(make line ^p1 5030008 ^p2 5040008)
+(make line ^p1 5210003 ^p2 5220003)
+(make line ^p1 5190005 ^p2 5190006)
+(make line ^p1 5240005 ^p2 5240006)
+(make line ^p1 5210008 ^p2 5220008)
+(make line ^p1 5160000 ^p2 5180000)
+(make line ^p1 5180000 ^p2 5190000)
+(make line ^p1 5190000 ^p2 5200000)
+(make line ^p1 5160000 ^p2 5160002)
+(make line ^p1 5160002 ^p2 5160003)
+(make line ^p1 5160003 ^p2 5160004)
+(make line ^p1 5160004 ^p2 5200004)
+(make line ^p1 5200004 ^p2 5200000)
+(make line ^p1 5200000 ^p2 5210001)
+(make line ^p1 5210001 ^p2 5210002)
+(make line ^p1 5210002 ^p2 5210003)
+(make line ^p1 5210003 ^p2 5210005)
+(make line ^p1 5210005 ^p2 5200004)
+(make line ^p1 5210005 ^p2 5190005)
+(make line ^p1 5190005 ^p2 5180005)
+(make line ^p1 5180005 ^p2 5170005)
+(make line ^p1 5170005 ^p2 5160004)
+(make line ^p1 5220000 ^p2 5240000)
+(make line ^p1 5240000 ^p2 5250000)
+(make line ^p1 5250000 ^p2 5260000)
+(make line ^p1 5220000 ^p2 5220002)
+(make line ^p1 5220002 ^p2 5220003)
+(make line ^p1 5220003 ^p2 5220004)
+(make line ^p1 5220004 ^p2 5260004)
+(make line ^p1 5260004 ^p2 5260000)
+(make line ^p1 5260000 ^p2 5270001)
+(make line ^p1 5270001 ^p2 5270002)
+(make line ^p1 5270002 ^p2 5270003)
+(make line ^p1 5270003 ^p2 5270005)
+(make line ^p1 5270005 ^p2 5260004)
+(make line ^p1 5270005 ^p2 5250005)
+(make line ^p1 5250005 ^p2 5240005)
+(make line ^p1 5240005 ^p2 5230005)
+(make line ^p1 5230005 ^p2 5220004)
+(make line ^p1 5160006 ^p2 5180006)
+(make line ^p1 5180006 ^p2 5190006)
+(make line ^p1 5190006 ^p2 5200006)
+(make line ^p1 5160006 ^p2 5160008)
+(make line ^p1 5160008 ^p2 5160009)
+(make line ^p1 5160009 ^p2 5160010)
+(make line ^p1 5160010 ^p2 5200010)
+(make line ^p1 5200010 ^p2 5200006)
+(make line ^p1 5200006 ^p2 5210007)
+(make line ^p1 5210007 ^p2 5210008)
+(make line ^p1 5210008 ^p2 5210009)
+(make line ^p1 5210009 ^p2 5210011)
+(make line ^p1 5210011 ^p2 5200010)
+(make line ^p1 5210011 ^p2 5190011)
+(make line ^p1 5190011 ^p2 5180011)
+(make line ^p1 5180011 ^p2 5170011)
+(make line ^p1 5170011 ^p2 5160010)
+(make line ^p1 5220006 ^p2 5240006)
+(make line ^p1 5240006 ^p2 5250006)
+(make line ^p1 5250006 ^p2 5260006)
+(make line ^p1 5220006 ^p2 5220008)
+(make line ^p1 5220008 ^p2 5220009)
+(make line ^p1 5220009 ^p2 5220010)
+(make line ^p1 5220010 ^p2 5260010)
+(make line ^p1 5260010 ^p2 5260006)
+(make line ^p1 5260006 ^p2 5270007)
+(make line ^p1 5270007 ^p2 5270008)
+(make line ^p1 5270008 ^p2 5270009)
+(make line ^p1 5270009 ^p2 5270011)
+(make line ^p1 5270011 ^p2 5260010)
+(make line ^p1 5270011 ^p2 5250011)
+(make line ^p1 5250011 ^p2 5240011)
+(make line ^p1 5240011 ^p2 5230011)
+(make line ^p1 5230011 ^p2 5220010)
+(make line ^p1 5150003 ^p2 5160003)
+(make line ^p1 5130005 ^p2 5130006)
+(make line ^p1 5180005 ^p2 5180006)
+(make line ^p1 5150008 ^p2 5160008)
+(make line ^p1 5330003 ^p2 5340003)
+(make line ^p1 5310005 ^p2 5310006)
+(make line ^p1 5360005 ^p2 5360006)
+(make line ^p1 5330008 ^p2 5340008)
+(make line ^p1 5280000 ^p2 5300000)
+(make line ^p1 5300000 ^p2 5310000)
+(make line ^p1 5310000 ^p2 5320000)
+(make line ^p1 5280000 ^p2 5280002)
+(make line ^p1 5280002 ^p2 5280003)
+(make line ^p1 5280003 ^p2 5280004)
+(make line ^p1 5280004 ^p2 5320004)
+(make line ^p1 5320004 ^p2 5320000)
+(make line ^p1 5320000 ^p2 5330001)
+(make line ^p1 5330001 ^p2 5330002)
+(make line ^p1 5330002 ^p2 5330003)
+(make line ^p1 5330003 ^p2 5330005)
+(make line ^p1 5330005 ^p2 5320004)
+(make line ^p1 5330005 ^p2 5310005)
+(make line ^p1 5310005 ^p2 5300005)
+(make line ^p1 5300005 ^p2 5290005)
+(make line ^p1 5290005 ^p2 5280004)
+(make line ^p1 5340000 ^p2 5360000)
+(make line ^p1 5360000 ^p2 5370000)
+(make line ^p1 5370000 ^p2 5380000)
+(make line ^p1 5340000 ^p2 5340002)
+(make line ^p1 5340002 ^p2 5340003)
+(make line ^p1 5340003 ^p2 5340004)
+(make line ^p1 5340004 ^p2 5380004)
+(make line ^p1 5380004 ^p2 5380000)
+(make line ^p1 5380000 ^p2 5390001)
+(make line ^p1 5390001 ^p2 5390002)
+(make line ^p1 5390002 ^p2 5390003)
+(make line ^p1 5390003 ^p2 5390005)
+(make line ^p1 5390005 ^p2 5380004)
+(make line ^p1 5390005 ^p2 5370005)
+(make line ^p1 5370005 ^p2 5360005)
+(make line ^p1 5360005 ^p2 5350005)
+(make line ^p1 5350005 ^p2 5340004)
+(make line ^p1 5280006 ^p2 5300006)
+(make line ^p1 5300006 ^p2 5310006)
+(make line ^p1 5310006 ^p2 5320006)
+(make line ^p1 5280006 ^p2 5280008)
+(make line ^p1 5280008 ^p2 5280009)
+(make line ^p1 5280009 ^p2 5280010)
+(make line ^p1 5280010 ^p2 5320010)
+(make line ^p1 5320010 ^p2 5320006)
+(make line ^p1 5320006 ^p2 5330007)
+(make line ^p1 5330007 ^p2 5330008)
+(make line ^p1 5330008 ^p2 5330009)
+(make line ^p1 5330009 ^p2 5330011)
+(make line ^p1 5330011 ^p2 5320010)
+(make line ^p1 5330011 ^p2 5310011)
+(make line ^p1 5310011 ^p2 5300011)
+(make line ^p1 5300011 ^p2 5290011)
+(make line ^p1 5290011 ^p2 5280010)
+(make line ^p1 5340006 ^p2 5360006)
+(make line ^p1 5360006 ^p2 5370006)
+(make line ^p1 5370006 ^p2 5380006)
+(make line ^p1 5340006 ^p2 5340008)
+(make line ^p1 5340008 ^p2 5340009)
+(make line ^p1 5340009 ^p2 5340010)
+(make line ^p1 5340010 ^p2 5380010)
+(make line ^p1 5380010 ^p2 5380006)
+(make line ^p1 5380006 ^p2 5390007)
+(make line ^p1 5390007 ^p2 5390008)
+(make line ^p1 5390008 ^p2 5390009)
+(make line ^p1 5390009 ^p2 5390011)
+(make line ^p1 5390011 ^p2 5380010)
+(make line ^p1 5390011 ^p2 5370011)
+(make line ^p1 5370011 ^p2 5360011)
+(make line ^p1 5360011 ^p2 5350011)
+(make line ^p1 5350011 ^p2 5340010)
+(make line ^p1 5270003 ^p2 5280003)
+(make line ^p1 5250005 ^p2 5250006)
+(make line ^p1 5300005 ^p2 5300006)
+(make line ^p1 5270008 ^p2 5280008)
+(make line ^p1 5450003 ^p2 5460003)
+(make line ^p1 5430005 ^p2 5430006)
+(make line ^p1 5480005 ^p2 5480006)
+(make line ^p1 5450008 ^p2 5460008)
+(make line ^p1 5400000 ^p2 5420000)
+(make line ^p1 5420000 ^p2 5430000)
+(make line ^p1 5430000 ^p2 5440000)
+(make line ^p1 5400000 ^p2 5400002)
+(make line ^p1 5400002 ^p2 5400003)
+(make line ^p1 5400003 ^p2 5400004)
+(make line ^p1 5400004 ^p2 5440004)
+(make line ^p1 5440004 ^p2 5440000)
+(make line ^p1 5440000 ^p2 5450001)
+(make line ^p1 5450001 ^p2 5450002)
+(make line ^p1 5450002 ^p2 5450003)
+(make line ^p1 5450003 ^p2 5450005)
+(make line ^p1 5450005 ^p2 5440004)
+(make line ^p1 5450005 ^p2 5430005)
+(make line ^p1 5430005 ^p2 5420005)
+(make line ^p1 5420005 ^p2 5410005)
+(make line ^p1 5410005 ^p2 5400004)
+(make line ^p1 5460000 ^p2 5480000)
+(make line ^p1 5480000 ^p2 5490000)
+(make line ^p1 5490000 ^p2 5500000)
+(make line ^p1 5460000 ^p2 5460002)
+(make line ^p1 5460002 ^p2 5460003)
+(make line ^p1 5460003 ^p2 5460004)
+(make line ^p1 5460004 ^p2 5500004)
+(make line ^p1 5500004 ^p2 5500000)
+(make line ^p1 5500000 ^p2 5510001)
+(make line ^p1 5510001 ^p2 5510002)
+(make line ^p1 5510002 ^p2 5510003)
+(make line ^p1 5510003 ^p2 5510005)
+(make line ^p1 5510005 ^p2 5500004)
+(make line ^p1 5510005 ^p2 5490005)
+(make line ^p1 5490005 ^p2 5480005)
+(make line ^p1 5480005 ^p2 5470005)
+(make line ^p1 5470005 ^p2 5460004)
+(make line ^p1 5400006 ^p2 5420006)
+(make line ^p1 5420006 ^p2 5430006)
+(make line ^p1 5430006 ^p2 5440006)
+(make line ^p1 5400006 ^p2 5400008)
+(make line ^p1 5400008 ^p2 5400009)
+(make line ^p1 5400009 ^p2 5400010)
+(make line ^p1 5400010 ^p2 5440010)
+(make line ^p1 5440010 ^p2 5440006)
+(make line ^p1 5440006 ^p2 5450007)
+(make line ^p1 5450007 ^p2 5450008)
+(make line ^p1 5450008 ^p2 5450009)
+(make line ^p1 5450009 ^p2 5450011)
+(make line ^p1 5450011 ^p2 5440010)
+(make line ^p1 5450011 ^p2 5430011)
+(make line ^p1 5430011 ^p2 5420011)
+(make line ^p1 5420011 ^p2 5410011)
+(make line ^p1 5410011 ^p2 5400010)
+(make line ^p1 5460006 ^p2 5480006)
+(make line ^p1 5480006 ^p2 5490006)
+(make line ^p1 5490006 ^p2 5500006)
+(make line ^p1 5460006 ^p2 5460008)
+(make line ^p1 5460008 ^p2 5460009)
+(make line ^p1 5460009 ^p2 5460010)
+(make line ^p1 5460010 ^p2 5500010)
+(make line ^p1 5500010 ^p2 5500006)
+(make line ^p1 5500006 ^p2 5510007)
+(make line ^p1 5510007 ^p2 5510008)
+(make line ^p1 5510008 ^p2 5510009)
+(make line ^p1 5510009 ^p2 5510011)
+(make line ^p1 5510011 ^p2 5500010)
+(make line ^p1 5510011 ^p2 5490011)
+(make line ^p1 5490011 ^p2 5480011)
+(make line ^p1 5480011 ^p2 5470011)
+(make line ^p1 5470011 ^p2 5460010)
+(make line ^p1 5390003 ^p2 5400003)
+(make line ^p1 5370005 ^p2 5370006)
+(make line ^p1 5420005 ^p2 5420006)
+(make line ^p1 5390008 ^p2 5400008)
+(make line ^p1 5570003 ^p2 5580003)
+(make line ^p1 5550005 ^p2 5550006)
+(make line ^p1 5600005 ^p2 5600006)
+(make line ^p1 5570008 ^p2 5580008)
+(make line ^p1 5520000 ^p2 5540000)
+(make line ^p1 5540000 ^p2 5550000)
+(make line ^p1 5550000 ^p2 5560000)
+(make line ^p1 5520000 ^p2 5520002)
+(make line ^p1 5520002 ^p2 5520003)
+(make line ^p1 5520003 ^p2 5520004)
+(make line ^p1 5520004 ^p2 5560004)
+(make line ^p1 5560004 ^p2 5560000)
+(make line ^p1 5560000 ^p2 5570001)
+(make line ^p1 5570001 ^p2 5570002)
+(make line ^p1 5570002 ^p2 5570003)
+(make line ^p1 5570003 ^p2 5570005)
+(make line ^p1 5570005 ^p2 5560004)
+(make line ^p1 5570005 ^p2 5550005)
+(make line ^p1 5550005 ^p2 5540005)
+(make line ^p1 5540005 ^p2 5530005)
+(make line ^p1 5530005 ^p2 5520004)
+(make line ^p1 5580000 ^p2 5600000)
+(make line ^p1 5600000 ^p2 5610000)
+(make line ^p1 5610000 ^p2 5620000)
+(make line ^p1 5580000 ^p2 5580002)
+(make line ^p1 5580002 ^p2 5580003)
+(make line ^p1 5580003 ^p2 5580004)
+(make line ^p1 5580004 ^p2 5620004)
+(make line ^p1 5620004 ^p2 5620000)
+(make line ^p1 5620000 ^p2 5630001)
+(make line ^p1 5630001 ^p2 5630002)
+(make line ^p1 5630002 ^p2 5630003)
+(make line ^p1 5630003 ^p2 5630005)
+(make line ^p1 5630005 ^p2 5620004)
+(make line ^p1 5630005 ^p2 5610005)
+(make line ^p1 5610005 ^p2 5600005)
+(make line ^p1 5600005 ^p2 5590005)
+(make line ^p1 5590005 ^p2 5580004)
+(make line ^p1 5520006 ^p2 5540006)
+(make line ^p1 5540006 ^p2 5550006)
+(make line ^p1 5550006 ^p2 5560006)
+(make line ^p1 5520006 ^p2 5520008)
+(make line ^p1 5520008 ^p2 5520009)
+(make line ^p1 5520009 ^p2 5520010)
+(make line ^p1 5520010 ^p2 5560010)
+(make line ^p1 5560010 ^p2 5560006)
+(make line ^p1 5560006 ^p2 5570007)
+(make line ^p1 5570007 ^p2 5570008)
+(make line ^p1 5570008 ^p2 5570009)
+(make line ^p1 5570009 ^p2 5570011)
+(make line ^p1 5570011 ^p2 5560010)
+(make line ^p1 5570011 ^p2 5550011)
+(make line ^p1 5550011 ^p2 5540011)
+(make line ^p1 5540011 ^p2 5530011)
+(make line ^p1 5530011 ^p2 5520010)
+(make line ^p1 5580006 ^p2 5600006)
+(make line ^p1 5600006 ^p2 5610006)
+(make line ^p1 5610006 ^p2 5620006)
+(make line ^p1 5580006 ^p2 5580008)
+(make line ^p1 5580008 ^p2 5580009)
+(make line ^p1 5580009 ^p2 5580010)
+(make line ^p1 5580010 ^p2 5620010)
+(make line ^p1 5620010 ^p2 5620006)
+(make line ^p1 5620006 ^p2 5630007)
+(make line ^p1 5630007 ^p2 5630008)
+(make line ^p1 5630008 ^p2 5630009)
+(make line ^p1 5630009 ^p2 5630011)
+(make line ^p1 5630011 ^p2 5620010)
+(make line ^p1 5630011 ^p2 5610011)
+(make line ^p1 5610011 ^p2 5600011)
+(make line ^p1 5600011 ^p2 5590011)
+(make line ^p1 5590011 ^p2 5580010)
+(make line ^p1 5510003 ^p2 5520003)
+(make line ^p1 5490005 ^p2 5490006)
+(make line ^p1 5540005 ^p2 5540006)
+(make line ^p1 5510008 ^p2 5520008)
+(make line ^p1 5690003 ^p2 5700003)
+(make line ^p1 5670005 ^p2 5670006)
+(make line ^p1 5720005 ^p2 5720006)
+(make line ^p1 5690008 ^p2 5700008)
+(make line ^p1 5640000 ^p2 5660000)
+(make line ^p1 5660000 ^p2 5670000)
+(make line ^p1 5670000 ^p2 5680000)
+(make line ^p1 5640000 ^p2 5640002)
+(make line ^p1 5640002 ^p2 5640003)
+(make line ^p1 5640003 ^p2 5640004)
+(make line ^p1 5640004 ^p2 5680004)
+(make line ^p1 5680004 ^p2 5680000)
+(make line ^p1 5680000 ^p2 5690001)
+(make line ^p1 5690001 ^p2 5690002)
+(make line ^p1 5690002 ^p2 5690003)
+(make line ^p1 5690003 ^p2 5690005)
+(make line ^p1 5690005 ^p2 5680004)
+(make line ^p1 5690005 ^p2 5670005)
+(make line ^p1 5670005 ^p2 5660005)
+(make line ^p1 5660005 ^p2 5650005)
+(make line ^p1 5650005 ^p2 5640004)
+(make line ^p1 5700000 ^p2 5720000)
+(make line ^p1 5720000 ^p2 5730000)
+(make line ^p1 5730000 ^p2 5740000)
+(make line ^p1 5700000 ^p2 5700002)
+(make line ^p1 5700002 ^p2 5700003)
+(make line ^p1 5700003 ^p2 5700004)
+(make line ^p1 5700004 ^p2 5740004)
+(make line ^p1 5740004 ^p2 5740000)
+(make line ^p1 5740000 ^p2 5750001)
+(make line ^p1 5750001 ^p2 5750002)
+(make line ^p1 5750002 ^p2 5750003)
+(make line ^p1 5750003 ^p2 5750005)
+(make line ^p1 5750005 ^p2 5740004)
+(make line ^p1 5750005 ^p2 5730005)
+(make line ^p1 5730005 ^p2 5720005)
+(make line ^p1 5720005 ^p2 5710005)
+(make line ^p1 5710005 ^p2 5700004)
+(make line ^p1 5640006 ^p2 5660006)
+(make line ^p1 5660006 ^p2 5670006)
+(make line ^p1 5670006 ^p2 5680006)
+(make line ^p1 5640006 ^p2 5640008)
+(make line ^p1 5640008 ^p2 5640009)
+(make line ^p1 5640009 ^p2 5640010)
+(make line ^p1 5640010 ^p2 5680010)
+(make line ^p1 5680010 ^p2 5680006)
+(make line ^p1 5680006 ^p2 5690007)
+(make line ^p1 5690007 ^p2 5690008)
+(make line ^p1 5690008 ^p2 5690009)
+(make line ^p1 5690009 ^p2 5690011)
+(make line ^p1 5690011 ^p2 5680010)
+(make line ^p1 5690011 ^p2 5670011)
+(make line ^p1 5670011 ^p2 5660011)
+(make line ^p1 5660011 ^p2 5650011)
+(make line ^p1 5650011 ^p2 5640010)
+(make line ^p1 5700006 ^p2 5720006)
+(make line ^p1 5720006 ^p2 5730006)
+(make line ^p1 5730006 ^p2 5740006)
+(make line ^p1 5700006 ^p2 5700008)
+(make line ^p1 5700008 ^p2 5700009)
+(make line ^p1 5700009 ^p2 5700010)
+(make line ^p1 5700010 ^p2 5740010)
+(make line ^p1 5740010 ^p2 5740006)
+(make line ^p1 5740006 ^p2 5750007)
+(make line ^p1 5750007 ^p2 5750008)
+(make line ^p1 5750008 ^p2 5750009)
+(make line ^p1 5750009 ^p2 5750011)
+(make line ^p1 5750011 ^p2 5740010)
+(make line ^p1 5750011 ^p2 5730011)
+(make line ^p1 5730011 ^p2 5720011)
+(make line ^p1 5720011 ^p2 5710011)
+(make line ^p1 5710011 ^p2 5700010)
+(make line ^p1 5630003 ^p2 5640003)
+(make line ^p1 5610005 ^p2 5610006)
+(make line ^p1 5660005 ^p2 5660006)
+(make line ^p1 5630008 ^p2 5640008)
+(make line ^p1 5810003 ^p2 5820003)
+(make line ^p1 5790005 ^p2 5790006)
+(make line ^p1 5840005 ^p2 5840006)
+(make line ^p1 5810008 ^p2 5820008)
+(make line ^p1 5760000 ^p2 5780000)
+(make line ^p1 5780000 ^p2 5790000)
+(make line ^p1 5790000 ^p2 5800000)
+(make line ^p1 5760000 ^p2 5760002)
+(make line ^p1 5760002 ^p2 5760003)
+(make line ^p1 5760003 ^p2 5760004)
+(make line ^p1 5760004 ^p2 5800004)
+(make line ^p1 5800004 ^p2 5800000)
+(make line ^p1 5800000 ^p2 5810001)
+(make line ^p1 5810001 ^p2 5810002)
+(make line ^p1 5810002 ^p2 5810003)
+(make line ^p1 5810003 ^p2 5810005)
+(make line ^p1 5810005 ^p2 5800004)
+(make line ^p1 5810005 ^p2 5790005)
+(make line ^p1 5790005 ^p2 5780005)
+(make line ^p1 5780005 ^p2 5770005)
+(make line ^p1 5770005 ^p2 5760004)
+(make line ^p1 5820000 ^p2 5840000)
+(make line ^p1 5840000 ^p2 5850000)
+(make line ^p1 5850000 ^p2 5860000)
+(make line ^p1 5820000 ^p2 5820002)
+(make line ^p1 5820002 ^p2 5820003)
+(make line ^p1 5820003 ^p2 5820004)
+(make line ^p1 5820004 ^p2 5860004)
+(make line ^p1 5860004 ^p2 5860000)
+(make line ^p1 5860000 ^p2 5870001)
+(make line ^p1 5870001 ^p2 5870002)
+(make line ^p1 5870002 ^p2 5870003)
+(make line ^p1 5870003 ^p2 5870005)
+(make line ^p1 5870005 ^p2 5860004)
+(make line ^p1 5870005 ^p2 5850005)
+(make line ^p1 5850005 ^p2 5840005)
+(make line ^p1 5840005 ^p2 5830005)
+(make line ^p1 5830005 ^p2 5820004)
+(make line ^p1 5760006 ^p2 5780006)
+(make line ^p1 5780006 ^p2 5790006)
+(make line ^p1 5790006 ^p2 5800006)
+(make line ^p1 5760006 ^p2 5760008)
+(make line ^p1 5760008 ^p2 5760009)
+(make line ^p1 5760009 ^p2 5760010)
+(make line ^p1 5760010 ^p2 5800010)
+(make line ^p1 5800010 ^p2 5800006)
+(make line ^p1 5800006 ^p2 5810007)
+(make line ^p1 5810007 ^p2 5810008)
+(make line ^p1 5810008 ^p2 5810009)
+(make line ^p1 5810009 ^p2 5810011)
+(make line ^p1 5810011 ^p2 5800010)
+(make line ^p1 5810011 ^p2 5790011)
+(make line ^p1 5790011 ^p2 5780011)
+(make line ^p1 5780011 ^p2 5770011)
+(make line ^p1 5770011 ^p2 5760010)
+(make line ^p1 5820006 ^p2 5840006)
+(make line ^p1 5840006 ^p2 5850006)
+(make line ^p1 5850006 ^p2 5860006)
+(make line ^p1 5820006 ^p2 5820008)
+(make line ^p1 5820008 ^p2 5820009)
+(make line ^p1 5820009 ^p2 5820010)
+(make line ^p1 5820010 ^p2 5860010)
+(make line ^p1 5860010 ^p2 5860006)
+(make line ^p1 5860006 ^p2 5870007)
+(make line ^p1 5870007 ^p2 5870008)
+(make line ^p1 5870008 ^p2 5870009)
+(make line ^p1 5870009 ^p2 5870011)
+(make line ^p1 5870011 ^p2 5860010)
+(make line ^p1 5870011 ^p2 5850011)
+(make line ^p1 5850011 ^p2 5840011)
+(make line ^p1 5840011 ^p2 5830011)
+(make line ^p1 5830011 ^p2 5820010)
+(make line ^p1 5750003 ^p2 5760003)
+(make line ^p1 5730005 ^p2 5730006)
+(make line ^p1 5780005 ^p2 5780006)
+(make line ^p1 5750008 ^p2 5760008)
+(make line ^p1 5930003 ^p2 5940003)
+(make line ^p1 5910005 ^p2 5910006)
+(make line ^p1 5960005 ^p2 5960006)
+(make line ^p1 5930008 ^p2 5940008)
+(make line ^p1 5880000 ^p2 5900000)
+(make line ^p1 5900000 ^p2 5910000)
+(make line ^p1 5910000 ^p2 5920000)
+(make line ^p1 5880000 ^p2 5880002)
+(make line ^p1 5880002 ^p2 5880003)
+(make line ^p1 5880003 ^p2 5880004)
+(make line ^p1 5880004 ^p2 5920004)
+(make line ^p1 5920004 ^p2 5920000)
+(make line ^p1 5920000 ^p2 5930001)
+(make line ^p1 5930001 ^p2 5930002)
+(make line ^p1 5930002 ^p2 5930003)
+(make line ^p1 5930003 ^p2 5930005)
+(make line ^p1 5930005 ^p2 5920004)
+(make line ^p1 5930005 ^p2 5910005)
+(make line ^p1 5910005 ^p2 5900005)
+(make line ^p1 5900005 ^p2 5890005)
+(make line ^p1 5890005 ^p2 5880004)
+(make line ^p1 5940000 ^p2 5960000)
+(make line ^p1 5960000 ^p2 5970000)
+(make line ^p1 5970000 ^p2 5980000)
+(make line ^p1 5940000 ^p2 5940002)
+(make line ^p1 5940002 ^p2 5940003)
+(make line ^p1 5940003 ^p2 5940004)
+(make line ^p1 5940004 ^p2 5980004)
+(make line ^p1 5980004 ^p2 5980000)
+(make line ^p1 5980000 ^p2 5990001)
+(make line ^p1 5990001 ^p2 5990002)
+(make line ^p1 5990002 ^p2 5990003)
+(make line ^p1 5990003 ^p2 5990005)
+(make line ^p1 5990005 ^p2 5980004)
+(make line ^p1 5990005 ^p2 5970005)
+(make line ^p1 5970005 ^p2 5960005)
+(make line ^p1 5960005 ^p2 5950005)
+(make line ^p1 5950005 ^p2 5940004)
+(make line ^p1 5880006 ^p2 5900006)
+(make line ^p1 5900006 ^p2 5910006)
+(make line ^p1 5910006 ^p2 5920006)
+(make line ^p1 5880006 ^p2 5880008)
+(make line ^p1 5880008 ^p2 5880009)
+(make line ^p1 5880009 ^p2 5880010)
+(make line ^p1 5880010 ^p2 5920010)
+(make line ^p1 5920010 ^p2 5920006)
+(make line ^p1 5920006 ^p2 5930007)
+(make line ^p1 5930007 ^p2 5930008)
+(make line ^p1 5930008 ^p2 5930009)
+(make line ^p1 5930009 ^p2 5930011)
+(make line ^p1 5930011 ^p2 5920010)
+(make line ^p1 5930011 ^p2 5910011)
+(make line ^p1 5910011 ^p2 5900011)
+(make line ^p1 5900011 ^p2 5890011)
+(make line ^p1 5890011 ^p2 5880010)
+(make line ^p1 5940006 ^p2 5960006)
+(make line ^p1 5960006 ^p2 5970006)
+(make line ^p1 5970006 ^p2 5980006)
+(make line ^p1 5940006 ^p2 5940008)
+(make line ^p1 5940008 ^p2 5940009)
+(make line ^p1 5940009 ^p2 5940010)
+(make line ^p1 5940010 ^p2 5980010)
+(make line ^p1 5980010 ^p2 5980006)
+(make line ^p1 5980006 ^p2 5990007)
+(make line ^p1 5990007 ^p2 5990008)
+(make line ^p1 5990008 ^p2 5990009)
+(make line ^p1 5990009 ^p2 5990011)
+(make line ^p1 5990011 ^p2 5980010)
+(make line ^p1 5990011 ^p2 5970011)
+(make line ^p1 5970011 ^p2 5960011)
+(make line ^p1 5960011 ^p2 5950011)
+(make line ^p1 5950011 ^p2 5940010)
+(make line ^p1 5870003 ^p2 5880003)
+(make line ^p1 5850005 ^p2 5850006)
+(make line ^p1 5900005 ^p2 5900006)
+(make line ^p1 5870008 ^p2 5880008)
+(make line ^p1 6050003 ^p2 6060003)
+(make line ^p1 6030005 ^p2 6030006)
+(make line ^p1 6080005 ^p2 6080006)
+(make line ^p1 6050008 ^p2 6060008)
+(make line ^p1 6000000 ^p2 6020000)
+(make line ^p1 6020000 ^p2 6030000)
+(make line ^p1 6030000 ^p2 6040000)
+(make line ^p1 6000000 ^p2 6000002)
+(make line ^p1 6000002 ^p2 6000003)
+(make line ^p1 6000003 ^p2 6000004)
+(make line ^p1 6000004 ^p2 6040004)
+(make line ^p1 6040004 ^p2 6040000)
+(make line ^p1 6040000 ^p2 6050001)
+(make line ^p1 6050001 ^p2 6050002)
+(make line ^p1 6050002 ^p2 6050003)
+(make line ^p1 6050003 ^p2 6050005)
+(make line ^p1 6050005 ^p2 6040004)
+(make line ^p1 6050005 ^p2 6030005)
+(make line ^p1 6030005 ^p2 6020005)
+(make line ^p1 6020005 ^p2 6010005)
+(make line ^p1 6010005 ^p2 6000004)
+(make line ^p1 6060000 ^p2 6080000)
+(make line ^p1 6080000 ^p2 6090000)
+(make line ^p1 6090000 ^p2 6100000)
+(make line ^p1 6060000 ^p2 6060002)
+(make line ^p1 6060002 ^p2 6060003)
+(make line ^p1 6060003 ^p2 6060004)
+(make line ^p1 6060004 ^p2 6100004)
+(make line ^p1 6100004 ^p2 6100000)
+(make line ^p1 6100000 ^p2 6110001)
+(make line ^p1 6110001 ^p2 6110002)
+(make line ^p1 6110002 ^p2 6110003)
+(make line ^p1 6110003 ^p2 6110005)
+(make line ^p1 6110005 ^p2 6100004)
+(make line ^p1 6110005 ^p2 6090005)
+(make line ^p1 6090005 ^p2 6080005)
+(make line ^p1 6080005 ^p2 6070005)
+(make line ^p1 6070005 ^p2 6060004)
+(make line ^p1 6000006 ^p2 6020006)
+(make line ^p1 6020006 ^p2 6030006)
+(make line ^p1 6030006 ^p2 6040006)
+(make line ^p1 6000006 ^p2 6000008)
+(make line ^p1 6000008 ^p2 6000009)
+(make line ^p1 6000009 ^p2 6000010)
+(make line ^p1 6000010 ^p2 6040010)
+(make line ^p1 6040010 ^p2 6040006)
+(make line ^p1 6040006 ^p2 6050007)
+(make line ^p1 6050007 ^p2 6050008)
+(make line ^p1 6050008 ^p2 6050009)
+(make line ^p1 6050009 ^p2 6050011)
+(make line ^p1 6050011 ^p2 6040010)
+(make line ^p1 6050011 ^p2 6030011)
+(make line ^p1 6030011 ^p2 6020011)
+(make line ^p1 6020011 ^p2 6010011)
+(make line ^p1 6010011 ^p2 6000010)
+(make line ^p1 6060006 ^p2 6080006)
+(make line ^p1 6080006 ^p2 6090006)
+(make line ^p1 6090006 ^p2 6100006)
+(make line ^p1 6060006 ^p2 6060008)
+(make line ^p1 6060008 ^p2 6060009)
+(make line ^p1 6060009 ^p2 6060010)
+(make line ^p1 6060010 ^p2 6100010)
+(make line ^p1 6100010 ^p2 6100006)
+(make line ^p1 6100006 ^p2 6110007)
+(make line ^p1 6110007 ^p2 6110008)
+(make line ^p1 6110008 ^p2 6110009)
+(make line ^p1 6110009 ^p2 6110011)
+(make line ^p1 6110011 ^p2 6100010)
+(make line ^p1 6110011 ^p2 6090011)
+(make line ^p1 6090011 ^p2 6080011)
+(make line ^p1 6080011 ^p2 6070011)
+(make line ^p1 6070011 ^p2 6060010)
+(make line ^p1 5990003 ^p2 6000003)
+(make line ^p1 5970005 ^p2 5970006)
+(make line ^p1 6020005 ^p2 6020006)
+(make line ^p1 5990008 ^p2 6000008)
+(make stage ^value duplicate)
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltzdb/waltzdb12.dat
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltzdb/waltzdb12.dat (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltzdb/waltzdb12.dat 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,1001 @@
+(make label ^type 2j ^name L ^id 1 ^n1 B ^n2 B)
+(make label ^type 2j ^name L ^id 2 ^n1 + ^n2 B)
+(make label ^type 2j ^name L ^id 3 ^n1 B ^n2 +)
+(make label ^type 2j ^name L ^id 4 ^n1 - ^n2 B)
+(make label ^type 2j ^name L ^id 5 ^n1 B ^n2 -)
+(make label ^type 3j ^name fork ^id 6 ^n1 + ^n2 + ^n3 +)
+(make label ^type 3j ^name fork ^id 7 ^n1 - ^n2 - ^n3 -)
+(make label ^type 3j ^name fork ^id 8 ^n1 B ^n2 - ^n3 B)
+(make label ^type 3j ^name fork ^id 9 ^n1 - ^n2 B ^n3 B)
+(make label ^type 3j ^name fork ^id 10 ^n1 B ^n2 B ^n3 -)
+(make label ^type 3j ^name tee ^id 11 ^n1 B ^n2 + ^n3 B)
+(make label ^type 3j ^name tee ^id 12 ^n1 B ^n2 - ^n3 B)
+(make label ^type 3j ^name tee ^id 13 ^n1 B ^n2 B ^n3 B)
+(make label ^type 3j ^name arrow ^id 14 ^n1 B ^n2 + ^n3 B)
+(make label ^type 3j ^name arrow ^id 15 ^n1 - ^n2 + ^n3 -)
+(make label ^type 3j ^name arrow ^id 16 ^n1 + ^n2 - ^n3 +)
+(make stage ^value duplicate)
+(make line ^p1 50003 ^p2 60003)
+(make line ^p1 30005 ^p2 30006)
+(make line ^p1 80005 ^p2 80006)
+(make line ^p1 50008 ^p2 60008)
+(make line ^p1 0 ^p2 20000)
+(make line ^p1 20000 ^p2 30000)
+(make line ^p1 30000 ^p2 40000)
+(make line ^p1 0 ^p2 2)
+(make line ^p1 2 ^p2 3)
+(make line ^p1 3 ^p2 4)
+(make line ^p1 4 ^p2 40004)
+(make line ^p1 40004 ^p2 40000)
+(make line ^p1 40000 ^p2 50001)
+(make line ^p1 50001 ^p2 50002)
+(make line ^p1 50002 ^p2 50003)
+(make line ^p1 50003 ^p2 50005)
+(make line ^p1 50005 ^p2 40004)
+(make line ^p1 50005 ^p2 30005)
+(make line ^p1 30005 ^p2 20005)
+(make line ^p1 20005 ^p2 10005)
+(make line ^p1 10005 ^p2 4)
+(make line ^p1 60000 ^p2 80000)
+(make line ^p1 80000 ^p2 90000)
+(make line ^p1 90000 ^p2 100000)
+(make line ^p1 60000 ^p2 60002)
+(make line ^p1 60002 ^p2 60003)
+(make line ^p1 60003 ^p2 60004)
+(make line ^p1 60004 ^p2 100004)
+(make line ^p1 100004 ^p2 100000)
+(make line ^p1 100000 ^p2 110001)
+(make line ^p1 110001 ^p2 110002)
+(make line ^p1 110002 ^p2 110003)
+(make line ^p1 110003 ^p2 110005)
+(make line ^p1 110005 ^p2 100004)
+(make line ^p1 110005 ^p2 90005)
+(make line ^p1 90005 ^p2 80005)
+(make line ^p1 80005 ^p2 70005)
+(make line ^p1 70005 ^p2 60004)
+(make line ^p1 6 ^p2 20006)
+(make line ^p1 20006 ^p2 30006)
+(make line ^p1 30006 ^p2 40006)
+(make line ^p1 6 ^p2 8)
+(make line ^p1 8 ^p2 9)
+(make line ^p1 9 ^p2 10)
+(make line ^p1 10 ^p2 40010)
+(make line ^p1 40010 ^p2 40006)
+(make line ^p1 40006 ^p2 50007)
+(make line ^p1 50007 ^p2 50008)
+(make line ^p1 50008 ^p2 50009)
+(make line ^p1 50009 ^p2 50011)
+(make line ^p1 50011 ^p2 40010)
+(make line ^p1 50011 ^p2 30011)
+(make line ^p1 30011 ^p2 20011)
+(make line ^p1 20011 ^p2 10011)
+(make line ^p1 10011 ^p2 10)
+(make line ^p1 60006 ^p2 80006)
+(make line ^p1 80006 ^p2 90006)
+(make line ^p1 90006 ^p2 100006)
+(make line ^p1 60006 ^p2 60008)
+(make line ^p1 60008 ^p2 60009)
+(make line ^p1 60009 ^p2 60010)
+(make line ^p1 60010 ^p2 100010)
+(make line ^p1 100010 ^p2 100006)
+(make line ^p1 100006 ^p2 110007)
+(make line ^p1 110007 ^p2 110008)
+(make line ^p1 110008 ^p2 110009)
+(make line ^p1 110009 ^p2 110011)
+(make line ^p1 110011 ^p2 100010)
+(make line ^p1 110011 ^p2 90011)
+(make line ^p1 90011 ^p2 80011)
+(make line ^p1 80011 ^p2 70011)
+(make line ^p1 70011 ^p2 60010)
+(make line ^p1 170003 ^p2 180003)
+(make line ^p1 150005 ^p2 150006)
+(make line ^p1 200005 ^p2 200006)
+(make line ^p1 170008 ^p2 180008)
+(make line ^p1 120000 ^p2 140000)
+(make line ^p1 140000 ^p2 150000)
+(make line ^p1 150000 ^p2 160000)
+(make line ^p1 120000 ^p2 120002)
+(make line ^p1 120002 ^p2 120003)
+(make line ^p1 120003 ^p2 120004)
+(make line ^p1 120004 ^p2 160004)
+(make line ^p1 160004 ^p2 160000)
+(make line ^p1 160000 ^p2 170001)
+(make line ^p1 170001 ^p2 170002)
+(make line ^p1 170002 ^p2 170003)
+(make line ^p1 170003 ^p2 170005)
+(make line ^p1 170005 ^p2 160004)
+(make line ^p1 170005 ^p2 150005)
+(make line ^p1 150005 ^p2 140005)
+(make line ^p1 140005 ^p2 130005)
+(make line ^p1 130005 ^p2 120004)
+(make line ^p1 180000 ^p2 200000)
+(make line ^p1 200000 ^p2 210000)
+(make line ^p1 210000 ^p2 220000)
+(make line ^p1 180000 ^p2 180002)
+(make line ^p1 180002 ^p2 180003)
+(make line ^p1 180003 ^p2 180004)
+(make line ^p1 180004 ^p2 220004)
+(make line ^p1 220004 ^p2 220000)
+(make line ^p1 220000 ^p2 230001)
+(make line ^p1 230001 ^p2 230002)
+(make line ^p1 230002 ^p2 230003)
+(make line ^p1 230003 ^p2 230005)
+(make line ^p1 230005 ^p2 220004)
+(make line ^p1 230005 ^p2 210005)
+(make line ^p1 210005 ^p2 200005)
+(make line ^p1 200005 ^p2 190005)
+(make line ^p1 190005 ^p2 180004)
+(make line ^p1 120006 ^p2 140006)
+(make line ^p1 140006 ^p2 150006)
+(make line ^p1 150006 ^p2 160006)
+(make line ^p1 120006 ^p2 120008)
+(make line ^p1 120008 ^p2 120009)
+(make line ^p1 120009 ^p2 120010)
+(make line ^p1 120010 ^p2 160010)
+(make line ^p1 160010 ^p2 160006)
+(make line ^p1 160006 ^p2 170007)
+(make line ^p1 170007 ^p2 170008)
+(make line ^p1 170008 ^p2 170009)
+(make line ^p1 170009 ^p2 170011)
+(make line ^p1 170011 ^p2 160010)
+(make line ^p1 170011 ^p2 150011)
+(make line ^p1 150011 ^p2 140011)
+(make line ^p1 140011 ^p2 130011)
+(make line ^p1 130011 ^p2 120010)
+(make line ^p1 180006 ^p2 200006)
+(make line ^p1 200006 ^p2 210006)
+(make line ^p1 210006 ^p2 220006)
+(make line ^p1 180006 ^p2 180008)
+(make line ^p1 180008 ^p2 180009)
+(make line ^p1 180009 ^p2 180010)
+(make line ^p1 180010 ^p2 220010)
+(make line ^p1 220010 ^p2 220006)
+(make line ^p1 220006 ^p2 230007)
+(make line ^p1 230007 ^p2 230008)
+(make line ^p1 230008 ^p2 230009)
+(make line ^p1 230009 ^p2 230011)
+(make line ^p1 230011 ^p2 220010)
+(make line ^p1 230011 ^p2 210011)
+(make line ^p1 210011 ^p2 200011)
+(make line ^p1 200011 ^p2 190011)
+(make line ^p1 190011 ^p2 180010)
+(make line ^p1 110003 ^p2 120003)
+(make line ^p1 90005 ^p2 90006)
+(make line ^p1 140005 ^p2 140006)
+(make line ^p1 110008 ^p2 120008)
+(make line ^p1 290003 ^p2 300003)
+(make line ^p1 270005 ^p2 270006)
+(make line ^p1 320005 ^p2 320006)
+(make line ^p1 290008 ^p2 300008)
+(make line ^p1 240000 ^p2 260000)
+(make line ^p1 260000 ^p2 270000)
+(make line ^p1 270000 ^p2 280000)
+(make line ^p1 240000 ^p2 240002)
+(make line ^p1 240002 ^p2 240003)
+(make line ^p1 240003 ^p2 240004)
+(make line ^p1 240004 ^p2 280004)
+(make line ^p1 280004 ^p2 280000)
+(make line ^p1 280000 ^p2 290001)
+(make line ^p1 290001 ^p2 290002)
+(make line ^p1 290002 ^p2 290003)
+(make line ^p1 290003 ^p2 290005)
+(make line ^p1 290005 ^p2 280004)
+(make line ^p1 290005 ^p2 270005)
+(make line ^p1 270005 ^p2 260005)
+(make line ^p1 260005 ^p2 250005)
+(make line ^p1 250005 ^p2 240004)
+(make line ^p1 300000 ^p2 320000)
+(make line ^p1 320000 ^p2 330000)
+(make line ^p1 330000 ^p2 340000)
+(make line ^p1 300000 ^p2 300002)
+(make line ^p1 300002 ^p2 300003)
+(make line ^p1 300003 ^p2 300004)
+(make line ^p1 300004 ^p2 340004)
+(make line ^p1 340004 ^p2 340000)
+(make line ^p1 340000 ^p2 350001)
+(make line ^p1 350001 ^p2 350002)
+(make line ^p1 350002 ^p2 350003)
+(make line ^p1 350003 ^p2 350005)
+(make line ^p1 350005 ^p2 340004)
+(make line ^p1 350005 ^p2 330005)
+(make line ^p1 330005 ^p2 320005)
+(make line ^p1 320005 ^p2 310005)
+(make line ^p1 310005 ^p2 300004)
+(make line ^p1 240006 ^p2 260006)
+(make line ^p1 260006 ^p2 270006)
+(make line ^p1 270006 ^p2 280006)
+(make line ^p1 240006 ^p2 240008)
+(make line ^p1 240008 ^p2 240009)
+(make line ^p1 240009 ^p2 240010)
+(make line ^p1 240010 ^p2 280010)
+(make line ^p1 280010 ^p2 280006)
+(make line ^p1 280006 ^p2 290007)
+(make line ^p1 290007 ^p2 290008)
+(make line ^p1 290008 ^p2 290009)
+(make line ^p1 290009 ^p2 290011)
+(make line ^p1 290011 ^p2 280010)
+(make line ^p1 290011 ^p2 270011)
+(make line ^p1 270011 ^p2 260011)
+(make line ^p1 260011 ^p2 250011)
+(make line ^p1 250011 ^p2 240010)
+(make line ^p1 300006 ^p2 320006)
+(make line ^p1 320006 ^p2 330006)
+(make line ^p1 330006 ^p2 340006)
+(make line ^p1 300006 ^p2 300008)
+(make line ^p1 300008 ^p2 300009)
+(make line ^p1 300009 ^p2 300010)
+(make line ^p1 300010 ^p2 340010)
+(make line ^p1 340010 ^p2 340006)
+(make line ^p1 340006 ^p2 350007)
+(make line ^p1 350007 ^p2 350008)
+(make line ^p1 350008 ^p2 350009)
+(make line ^p1 350009 ^p2 350011)
+(make line ^p1 350011 ^p2 340010)
+(make line ^p1 350011 ^p2 330011)
+(make line ^p1 330011 ^p2 320011)
+(make line ^p1 320011 ^p2 310011)
+(make line ^p1 310011 ^p2 300010)
+(make line ^p1 230003 ^p2 240003)
+(make line ^p1 210005 ^p2 210006)
+(make line ^p1 260005 ^p2 260006)
+(make line ^p1 230008 ^p2 240008)
+(make line ^p1 410003 ^p2 420003)
+(make line ^p1 390005 ^p2 390006)
+(make line ^p1 440005 ^p2 440006)
+(make line ^p1 410008 ^p2 420008)
+(make line ^p1 360000 ^p2 380000)
+(make line ^p1 380000 ^p2 390000)
+(make line ^p1 390000 ^p2 400000)
+(make line ^p1 360000 ^p2 360002)
+(make line ^p1 360002 ^p2 360003)
+(make line ^p1 360003 ^p2 360004)
+(make line ^p1 360004 ^p2 400004)
+(make line ^p1 400004 ^p2 400000)
+(make line ^p1 400000 ^p2 410001)
+(make line ^p1 410001 ^p2 410002)
+(make line ^p1 410002 ^p2 410003)
+(make line ^p1 410003 ^p2 410005)
+(make line ^p1 410005 ^p2 400004)
+(make line ^p1 410005 ^p2 390005)
+(make line ^p1 390005 ^p2 380005)
+(make line ^p1 380005 ^p2 370005)
+(make line ^p1 370005 ^p2 360004)
+(make line ^p1 420000 ^p2 440000)
+(make line ^p1 440000 ^p2 450000)
+(make line ^p1 450000 ^p2 460000)
+(make line ^p1 420000 ^p2 420002)
+(make line ^p1 420002 ^p2 420003)
+(make line ^p1 420003 ^p2 420004)
+(make line ^p1 420004 ^p2 460004)
+(make line ^p1 460004 ^p2 460000)
+(make line ^p1 460000 ^p2 470001)
+(make line ^p1 470001 ^p2 470002)
+(make line ^p1 470002 ^p2 470003)
+(make line ^p1 470003 ^p2 470005)
+(make line ^p1 470005 ^p2 460004)
+(make line ^p1 470005 ^p2 450005)
+(make line ^p1 450005 ^p2 440005)
+(make line ^p1 440005 ^p2 430005)
+(make line ^p1 430005 ^p2 420004)
+(make line ^p1 360006 ^p2 380006)
+(make line ^p1 380006 ^p2 390006)
+(make line ^p1 390006 ^p2 400006)
+(make line ^p1 360006 ^p2 360008)
+(make line ^p1 360008 ^p2 360009)
+(make line ^p1 360009 ^p2 360010)
+(make line ^p1 360010 ^p2 400010)
+(make line ^p1 400010 ^p2 400006)
+(make line ^p1 400006 ^p2 410007)
+(make line ^p1 410007 ^p2 410008)
+(make line ^p1 410008 ^p2 410009)
+(make line ^p1 410009 ^p2 410011)
+(make line ^p1 410011 ^p2 400010)
+(make line ^p1 410011 ^p2 390011)
+(make line ^p1 390011 ^p2 380011)
+(make line ^p1 380011 ^p2 370011)
+(make line ^p1 370011 ^p2 360010)
+(make line ^p1 420006 ^p2 440006)
+(make line ^p1 440006 ^p2 450006)
+(make line ^p1 450006 ^p2 460006)
+(make line ^p1 420006 ^p2 420008)
+(make line ^p1 420008 ^p2 420009)
+(make line ^p1 420009 ^p2 420010)
+(make line ^p1 420010 ^p2 460010)
+(make line ^p1 460010 ^p2 460006)
+(make line ^p1 460006 ^p2 470007)
+(make line ^p1 470007 ^p2 470008)
+(make line ^p1 470008 ^p2 470009)
+(make line ^p1 470009 ^p2 470011)
+(make line ^p1 470011 ^p2 460010)
+(make line ^p1 470011 ^p2 450011)
+(make line ^p1 450011 ^p2 440011)
+(make line ^p1 440011 ^p2 430011)
+(make line ^p1 430011 ^p2 420010)
+(make line ^p1 350003 ^p2 360003)
+(make line ^p1 330005 ^p2 330006)
+(make line ^p1 380005 ^p2 380006)
+(make line ^p1 350008 ^p2 360008)
+(make line ^p1 530003 ^p2 540003)
+(make line ^p1 510005 ^p2 510006)
+(make line ^p1 560005 ^p2 560006)
+(make line ^p1 530008 ^p2 540008)
+(make line ^p1 480000 ^p2 500000)
+(make line ^p1 500000 ^p2 510000)
+(make line ^p1 510000 ^p2 520000)
+(make line ^p1 480000 ^p2 480002)
+(make line ^p1 480002 ^p2 480003)
+(make line ^p1 480003 ^p2 480004)
+(make line ^p1 480004 ^p2 520004)
+(make line ^p1 520004 ^p2 520000)
+(make line ^p1 520000 ^p2 530001)
+(make line ^p1 530001 ^p2 530002)
+(make line ^p1 530002 ^p2 530003)
+(make line ^p1 530003 ^p2 530005)
+(make line ^p1 530005 ^p2 520004)
+(make line ^p1 530005 ^p2 510005)
+(make line ^p1 510005 ^p2 500005)
+(make line ^p1 500005 ^p2 490005)
+(make line ^p1 490005 ^p2 480004)
+(make line ^p1 540000 ^p2 560000)
+(make line ^p1 560000 ^p2 570000)
+(make line ^p1 570000 ^p2 580000)
+(make line ^p1 540000 ^p2 540002)
+(make line ^p1 540002 ^p2 540003)
+(make line ^p1 540003 ^p2 540004)
+(make line ^p1 540004 ^p2 580004)
+(make line ^p1 580004 ^p2 580000)
+(make line ^p1 580000 ^p2 590001)
+(make line ^p1 590001 ^p2 590002)
+(make line ^p1 590002 ^p2 590003)
+(make line ^p1 590003 ^p2 590005)
+(make line ^p1 590005 ^p2 580004)
+(make line ^p1 590005 ^p2 570005)
+(make line ^p1 570005 ^p2 560005)
+(make line ^p1 560005 ^p2 550005)
+(make line ^p1 550005 ^p2 540004)
+(make line ^p1 480006 ^p2 500006)
+(make line ^p1 500006 ^p2 510006)
+(make line ^p1 510006 ^p2 520006)
+(make line ^p1 480006 ^p2 480008)
+(make line ^p1 480008 ^p2 480009)
+(make line ^p1 480009 ^p2 480010)
+(make line ^p1 480010 ^p2 520010)
+(make line ^p1 520010 ^p2 520006)
+(make line ^p1 520006 ^p2 530007)
+(make line ^p1 530007 ^p2 530008)
+(make line ^p1 530008 ^p2 530009)
+(make line ^p1 530009 ^p2 530011)
+(make line ^p1 530011 ^p2 520010)
+(make line ^p1 530011 ^p2 510011)
+(make line ^p1 510011 ^p2 500011)
+(make line ^p1 500011 ^p2 490011)
+(make line ^p1 490011 ^p2 480010)
+(make line ^p1 540006 ^p2 560006)
+(make line ^p1 560006 ^p2 570006)
+(make line ^p1 570006 ^p2 580006)
+(make line ^p1 540006 ^p2 540008)
+(make line ^p1 540008 ^p2 540009)
+(make line ^p1 540009 ^p2 540010)
+(make line ^p1 540010 ^p2 580010)
+(make line ^p1 580010 ^p2 580006)
+(make line ^p1 580006 ^p2 590007)
+(make line ^p1 590007 ^p2 590008)
+(make line ^p1 590008 ^p2 590009)
+(make line ^p1 590009 ^p2 590011)
+(make line ^p1 590011 ^p2 580010)
+(make line ^p1 590011 ^p2 570011)
+(make line ^p1 570011 ^p2 560011)
+(make line ^p1 560011 ^p2 550011)
+(make line ^p1 550011 ^p2 540010)
+(make line ^p1 470003 ^p2 480003)
+(make line ^p1 450005 ^p2 450006)
+(make line ^p1 500005 ^p2 500006)
+(make line ^p1 470008 ^p2 480008)
+(make line ^p1 650003 ^p2 660003)
+(make line ^p1 630005 ^p2 630006)
+(make line ^p1 680005 ^p2 680006)
+(make line ^p1 650008 ^p2 660008)
+(make line ^p1 600000 ^p2 620000)
+(make line ^p1 620000 ^p2 630000)
+(make line ^p1 630000 ^p2 640000)
+(make line ^p1 600000 ^p2 600002)
+(make line ^p1 600002 ^p2 600003)
+(make line ^p1 600003 ^p2 600004)
+(make line ^p1 600004 ^p2 640004)
+(make line ^p1 640004 ^p2 640000)
+(make line ^p1 640000 ^p2 650001)
+(make line ^p1 650001 ^p2 650002)
+(make line ^p1 650002 ^p2 650003)
+(make line ^p1 650003 ^p2 650005)
+(make line ^p1 650005 ^p2 640004)
+(make line ^p1 650005 ^p2 630005)
+(make line ^p1 630005 ^p2 620005)
+(make line ^p1 620005 ^p2 610005)
+(make line ^p1 610005 ^p2 600004)
+(make line ^p1 660000 ^p2 680000)
+(make line ^p1 680000 ^p2 690000)
+(make line ^p1 690000 ^p2 700000)
+(make line ^p1 660000 ^p2 660002)
+(make line ^p1 660002 ^p2 660003)
+(make line ^p1 660003 ^p2 660004)
+(make line ^p1 660004 ^p2 700004)
+(make line ^p1 700004 ^p2 700000)
+(make line ^p1 700000 ^p2 710001)
+(make line ^p1 710001 ^p2 710002)
+(make line ^p1 710002 ^p2 710003)
+(make line ^p1 710003 ^p2 710005)
+(make line ^p1 710005 ^p2 700004)
+(make line ^p1 710005 ^p2 690005)
+(make line ^p1 690005 ^p2 680005)
+(make line ^p1 680005 ^p2 670005)
+(make line ^p1 670005 ^p2 660004)
+(make line ^p1 600006 ^p2 620006)
+(make line ^p1 620006 ^p2 630006)
+(make line ^p1 630006 ^p2 640006)
+(make line ^p1 600006 ^p2 600008)
+(make line ^p1 600008 ^p2 600009)
+(make line ^p1 600009 ^p2 600010)
+(make line ^p1 600010 ^p2 640010)
+(make line ^p1 640010 ^p2 640006)
+(make line ^p1 640006 ^p2 650007)
+(make line ^p1 650007 ^p2 650008)
+(make line ^p1 650008 ^p2 650009)
+(make line ^p1 650009 ^p2 650011)
+(make line ^p1 650011 ^p2 640010)
+(make line ^p1 650011 ^p2 630011)
+(make line ^p1 630011 ^p2 620011)
+(make line ^p1 620011 ^p2 610011)
+(make line ^p1 610011 ^p2 600010)
+(make line ^p1 660006 ^p2 680006)
+(make line ^p1 680006 ^p2 690006)
+(make line ^p1 690006 ^p2 700006)
+(make line ^p1 660006 ^p2 660008)
+(make line ^p1 660008 ^p2 660009)
+(make line ^p1 660009 ^p2 660010)
+(make line ^p1 660010 ^p2 700010)
+(make line ^p1 700010 ^p2 700006)
+(make line ^p1 700006 ^p2 710007)
+(make line ^p1 710007 ^p2 710008)
+(make line ^p1 710008 ^p2 710009)
+(make line ^p1 710009 ^p2 710011)
+(make line ^p1 710011 ^p2 700010)
+(make line ^p1 710011 ^p2 690011)
+(make line ^p1 690011 ^p2 680011)
+(make line ^p1 680011 ^p2 670011)
+(make line ^p1 670011 ^p2 660010)
+(make line ^p1 590003 ^p2 600003)
+(make line ^p1 570005 ^p2 570006)
+(make line ^p1 620005 ^p2 620006)
+(make line ^p1 590008 ^p2 600008)
+(make line ^p1 770003 ^p2 780003)
+(make line ^p1 750005 ^p2 750006)
+(make line ^p1 800005 ^p2 800006)
+(make line ^p1 770008 ^p2 780008)
+(make line ^p1 720000 ^p2 740000)
+(make line ^p1 740000 ^p2 750000)
+(make line ^p1 750000 ^p2 760000)
+(make line ^p1 720000 ^p2 720002)
+(make line ^p1 720002 ^p2 720003)
+(make line ^p1 720003 ^p2 720004)
+(make line ^p1 720004 ^p2 760004)
+(make line ^p1 760004 ^p2 760000)
+(make line ^p1 760000 ^p2 770001)
+(make line ^p1 770001 ^p2 770002)
+(make line ^p1 770002 ^p2 770003)
+(make line ^p1 770003 ^p2 770005)
+(make line ^p1 770005 ^p2 760004)
+(make line ^p1 770005 ^p2 750005)
+(make line ^p1 750005 ^p2 740005)
+(make line ^p1 740005 ^p2 730005)
+(make line ^p1 730005 ^p2 720004)
+(make line ^p1 780000 ^p2 800000)
+(make line ^p1 800000 ^p2 810000)
+(make line ^p1 810000 ^p2 820000)
+(make line ^p1 780000 ^p2 780002)
+(make line ^p1 780002 ^p2 780003)
+(make line ^p1 780003 ^p2 780004)
+(make line ^p1 780004 ^p2 820004)
+(make line ^p1 820004 ^p2 820000)
+(make line ^p1 820000 ^p2 830001)
+(make line ^p1 830001 ^p2 830002)
+(make line ^p1 830002 ^p2 830003)
+(make line ^p1 830003 ^p2 830005)
+(make line ^p1 830005 ^p2 820004)
+(make line ^p1 830005 ^p2 810005)
+(make line ^p1 810005 ^p2 800005)
+(make line ^p1 800005 ^p2 790005)
+(make line ^p1 790005 ^p2 780004)
+(make line ^p1 720006 ^p2 740006)
+(make line ^p1 740006 ^p2 750006)
+(make line ^p1 750006 ^p2 760006)
+(make line ^p1 720006 ^p2 720008)
+(make line ^p1 720008 ^p2 720009)
+(make line ^p1 720009 ^p2 720010)
+(make line ^p1 720010 ^p2 760010)
+(make line ^p1 760010 ^p2 760006)
+(make line ^p1 760006 ^p2 770007)
+(make line ^p1 770007 ^p2 770008)
+(make line ^p1 770008 ^p2 770009)
+(make line ^p1 770009 ^p2 770011)
+(make line ^p1 770011 ^p2 760010)
+(make line ^p1 770011 ^p2 750011)
+(make line ^p1 750011 ^p2 740011)
+(make line ^p1 740011 ^p2 730011)
+(make line ^p1 730011 ^p2 720010)
+(make line ^p1 780006 ^p2 800006)
+(make line ^p1 800006 ^p2 810006)
+(make line ^p1 810006 ^p2 820006)
+(make line ^p1 780006 ^p2 780008)
+(make line ^p1 780008 ^p2 780009)
+(make line ^p1 780009 ^p2 780010)
+(make line ^p1 780010 ^p2 820010)
+(make line ^p1 820010 ^p2 820006)
+(make line ^p1 820006 ^p2 830007)
+(make line ^p1 830007 ^p2 830008)
+(make line ^p1 830008 ^p2 830009)
+(make line ^p1 830009 ^p2 830011)
+(make line ^p1 830011 ^p2 820010)
+(make line ^p1 830011 ^p2 810011)
+(make line ^p1 810011 ^p2 800011)
+(make line ^p1 800011 ^p2 790011)
+(make line ^p1 790011 ^p2 780010)
+(make line ^p1 710003 ^p2 720003)
+(make line ^p1 690005 ^p2 690006)
+(make line ^p1 740005 ^p2 740006)
+(make line ^p1 710008 ^p2 720008)
+(make line ^p1 890003 ^p2 900003)
+(make line ^p1 870005 ^p2 870006)
+(make line ^p1 920005 ^p2 920006)
+(make line ^p1 890008 ^p2 900008)
+(make line ^p1 840000 ^p2 860000)
+(make line ^p1 860000 ^p2 870000)
+(make line ^p1 870000 ^p2 880000)
+(make line ^p1 840000 ^p2 840002)
+(make line ^p1 840002 ^p2 840003)
+(make line ^p1 840003 ^p2 840004)
+(make line ^p1 840004 ^p2 880004)
+(make line ^p1 880004 ^p2 880000)
+(make line ^p1 880000 ^p2 890001)
+(make line ^p1 890001 ^p2 890002)
+(make line ^p1 890002 ^p2 890003)
+(make line ^p1 890003 ^p2 890005)
+(make line ^p1 890005 ^p2 880004)
+(make line ^p1 890005 ^p2 870005)
+(make line ^p1 870005 ^p2 860005)
+(make line ^p1 860005 ^p2 850005)
+(make line ^p1 850005 ^p2 840004)
+(make line ^p1 900000 ^p2 920000)
+(make line ^p1 920000 ^p2 930000)
+(make line ^p1 930000 ^p2 940000)
+(make line ^p1 900000 ^p2 900002)
+(make line ^p1 900002 ^p2 900003)
+(make line ^p1 900003 ^p2 900004)
+(make line ^p1 900004 ^p2 940004)
+(make line ^p1 940004 ^p2 940000)
+(make line ^p1 940000 ^p2 950001)
+(make line ^p1 950001 ^p2 950002)
+(make line ^p1 950002 ^p2 950003)
+(make line ^p1 950003 ^p2 950005)
+(make line ^p1 950005 ^p2 940004)
+(make line ^p1 950005 ^p2 930005)
+(make line ^p1 930005 ^p2 920005)
+(make line ^p1 920005 ^p2 910005)
+(make line ^p1 910005 ^p2 900004)
+(make line ^p1 840006 ^p2 860006)
+(make line ^p1 860006 ^p2 870006)
+(make line ^p1 870006 ^p2 880006)
+(make line ^p1 840006 ^p2 840008)
+(make line ^p1 840008 ^p2 840009)
+(make line ^p1 840009 ^p2 840010)
+(make line ^p1 840010 ^p2 880010)
+(make line ^p1 880010 ^p2 880006)
+(make line ^p1 880006 ^p2 890007)
+(make line ^p1 890007 ^p2 890008)
+(make line ^p1 890008 ^p2 890009)
+(make line ^p1 890009 ^p2 890011)
+(make line ^p1 890011 ^p2 880010)
+(make line ^p1 890011 ^p2 870011)
+(make line ^p1 870011 ^p2 860011)
+(make line ^p1 860011 ^p2 850011)
+(make line ^p1 850011 ^p2 840010)
+(make line ^p1 900006 ^p2 920006)
+(make line ^p1 920006 ^p2 930006)
+(make line ^p1 930006 ^p2 940006)
+(make line ^p1 900006 ^p2 900008)
+(make line ^p1 900008 ^p2 900009)
+(make line ^p1 900009 ^p2 900010)
+(make line ^p1 900010 ^p2 940010)
+(make line ^p1 940010 ^p2 940006)
+(make line ^p1 940006 ^p2 950007)
+(make line ^p1 950007 ^p2 950008)
+(make line ^p1 950008 ^p2 950009)
+(make line ^p1 950009 ^p2 950011)
+(make line ^p1 950011 ^p2 940010)
+(make line ^p1 950011 ^p2 930011)
+(make line ^p1 930011 ^p2 920011)
+(make line ^p1 920011 ^p2 910011)
+(make line ^p1 910011 ^p2 900010)
+(make line ^p1 830003 ^p2 840003)
+(make line ^p1 810005 ^p2 810006)
+(make line ^p1 860005 ^p2 860006)
+(make line ^p1 830008 ^p2 840008)
+(make line ^p1 1010003 ^p2 1020003)
+(make line ^p1 990005 ^p2 990006)
+(make line ^p1 1040005 ^p2 1040006)
+(make line ^p1 1010008 ^p2 1020008)
+(make line ^p1 960000 ^p2 980000)
+(make line ^p1 980000 ^p2 990000)
+(make line ^p1 990000 ^p2 1000000)
+(make line ^p1 960000 ^p2 960002)
+(make line ^p1 960002 ^p2 960003)
+(make line ^p1 960003 ^p2 960004)
+(make line ^p1 960004 ^p2 1000004)
+(make line ^p1 1000004 ^p2 1000000)
+(make line ^p1 1000000 ^p2 1010001)
+(make line ^p1 1010001 ^p2 1010002)
+(make line ^p1 1010002 ^p2 1010003)
+(make line ^p1 1010003 ^p2 1010005)
+(make line ^p1 1010005 ^p2 1000004)
+(make line ^p1 1010005 ^p2 990005)
+(make line ^p1 990005 ^p2 980005)
+(make line ^p1 980005 ^p2 970005)
+(make line ^p1 970005 ^p2 960004)
+(make line ^p1 1020000 ^p2 1040000)
+(make line ^p1 1040000 ^p2 1050000)
+(make line ^p1 1050000 ^p2 1060000)
+(make line ^p1 1020000 ^p2 1020002)
+(make line ^p1 1020002 ^p2 1020003)
+(make line ^p1 1020003 ^p2 1020004)
+(make line ^p1 1020004 ^p2 1060004)
+(make line ^p1 1060004 ^p2 1060000)
+(make line ^p1 1060000 ^p2 1070001)
+(make line ^p1 1070001 ^p2 1070002)
+(make line ^p1 1070002 ^p2 1070003)
+(make line ^p1 1070003 ^p2 1070005)
+(make line ^p1 1070005 ^p2 1060004)
+(make line ^p1 1070005 ^p2 1050005)
+(make line ^p1 1050005 ^p2 1040005)
+(make line ^p1 1040005 ^p2 1030005)
+(make line ^p1 1030005 ^p2 1020004)
+(make line ^p1 960006 ^p2 980006)
+(make line ^p1 980006 ^p2 990006)
+(make line ^p1 990006 ^p2 1000006)
+(make line ^p1 960006 ^p2 960008)
+(make line ^p1 960008 ^p2 960009)
+(make line ^p1 960009 ^p2 960010)
+(make line ^p1 960010 ^p2 1000010)
+(make line ^p1 1000010 ^p2 1000006)
+(make line ^p1 1000006 ^p2 1010007)
+(make line ^p1 1010007 ^p2 1010008)
+(make line ^p1 1010008 ^p2 1010009)
+(make line ^p1 1010009 ^p2 1010011)
+(make line ^p1 1010011 ^p2 1000010)
+(make line ^p1 1010011 ^p2 990011)
+(make line ^p1 990011 ^p2 980011)
+(make line ^p1 980011 ^p2 970011)
+(make line ^p1 970011 ^p2 960010)
+(make line ^p1 1020006 ^p2 1040006)
+(make line ^p1 1040006 ^p2 1050006)
+(make line ^p1 1050006 ^p2 1060006)
+(make line ^p1 1020006 ^p2 1020008)
+(make line ^p1 1020008 ^p2 1020009)
+(make line ^p1 1020009 ^p2 1020010)
+(make line ^p1 1020010 ^p2 1060010)
+(make line ^p1 1060010 ^p2 1060006)
+(make line ^p1 1060006 ^p2 1070007)
+(make line ^p1 1070007 ^p2 1070008)
+(make line ^p1 1070008 ^p2 1070009)
+(make line ^p1 1070009 ^p2 1070011)
+(make line ^p1 1070011 ^p2 1060010)
+(make line ^p1 1070011 ^p2 1050011)
+(make line ^p1 1050011 ^p2 1040011)
+(make line ^p1 1040011 ^p2 1030011)
+(make line ^p1 1030011 ^p2 1020010)
+(make line ^p1 950003 ^p2 960003)
+(make line ^p1 930005 ^p2 930006)
+(make line ^p1 980005 ^p2 980006)
+(make line ^p1 950008 ^p2 960008)
+(make line ^p1 1130003 ^p2 1140003)
+(make line ^p1 1110005 ^p2 1110006)
+(make line ^p1 1160005 ^p2 1160006)
+(make line ^p1 1130008 ^p2 1140008)
+(make line ^p1 1080000 ^p2 1100000)
+(make line ^p1 1100000 ^p2 1110000)
+(make line ^p1 1110000 ^p2 1120000)
+(make line ^p1 1080000 ^p2 1080002)
+(make line ^p1 1080002 ^p2 1080003)
+(make line ^p1 1080003 ^p2 1080004)
+(make line ^p1 1080004 ^p2 1120004)
+(make line ^p1 1120004 ^p2 1120000)
+(make line ^p1 1120000 ^p2 1130001)
+(make line ^p1 1130001 ^p2 1130002)
+(make line ^p1 1130002 ^p2 1130003)
+(make line ^p1 1130003 ^p2 1130005)
+(make line ^p1 1130005 ^p2 1120004)
+(make line ^p1 1130005 ^p2 1110005)
+(make line ^p1 1110005 ^p2 1100005)
+(make line ^p1 1100005 ^p2 1090005)
+(make line ^p1 1090005 ^p2 1080004)
+(make line ^p1 1140000 ^p2 1160000)
+(make line ^p1 1160000 ^p2 1170000)
+(make line ^p1 1170000 ^p2 1180000)
+(make line ^p1 1140000 ^p2 1140002)
+(make line ^p1 1140002 ^p2 1140003)
+(make line ^p1 1140003 ^p2 1140004)
+(make line ^p1 1140004 ^p2 1180004)
+(make line ^p1 1180004 ^p2 1180000)
+(make line ^p1 1180000 ^p2 1190001)
+(make line ^p1 1190001 ^p2 1190002)
+(make line ^p1 1190002 ^p2 1190003)
+(make line ^p1 1190003 ^p2 1190005)
+(make line ^p1 1190005 ^p2 1180004)
+(make line ^p1 1190005 ^p2 1170005)
+(make line ^p1 1170005 ^p2 1160005)
+(make line ^p1 1160005 ^p2 1150005)
+(make line ^p1 1150005 ^p2 1140004)
+(make line ^p1 1080006 ^p2 1100006)
+(make line ^p1 1100006 ^p2 1110006)
+(make line ^p1 1110006 ^p2 1120006)
+(make line ^p1 1080006 ^p2 1080008)
+(make line ^p1 1080008 ^p2 1080009)
+(make line ^p1 1080009 ^p2 1080010)
+(make line ^p1 1080010 ^p2 1120010)
+(make line ^p1 1120010 ^p2 1120006)
+(make line ^p1 1120006 ^p2 1130007)
+(make line ^p1 1130007 ^p2 1130008)
+(make line ^p1 1130008 ^p2 1130009)
+(make line ^p1 1130009 ^p2 1130011)
+(make line ^p1 1130011 ^p2 1120010)
+(make line ^p1 1130011 ^p2 1110011)
+(make line ^p1 1110011 ^p2 1100011)
+(make line ^p1 1100011 ^p2 1090011)
+(make line ^p1 1090011 ^p2 1080010)
+(make line ^p1 1140006 ^p2 1160006)
+(make line ^p1 1160006 ^p2 1170006)
+(make line ^p1 1170006 ^p2 1180006)
+(make line ^p1 1140006 ^p2 1140008)
+(make line ^p1 1140008 ^p2 1140009)
+(make line ^p1 1140009 ^p2 1140010)
+(make line ^p1 1140010 ^p2 1180010)
+(make line ^p1 1180010 ^p2 1180006)
+(make line ^p1 1180006 ^p2 1190007)
+(make line ^p1 1190007 ^p2 1190008)
+(make line ^p1 1190008 ^p2 1190009)
+(make line ^p1 1190009 ^p2 1190011)
+(make line ^p1 1190011 ^p2 1180010)
+(make line ^p1 1190011 ^p2 1170011)
+(make line ^p1 1170011 ^p2 1160011)
+(make line ^p1 1160011 ^p2 1150011)
+(make line ^p1 1150011 ^p2 1140010)
+(make line ^p1 1070003 ^p2 1080003)
+(make line ^p1 1050005 ^p2 1050006)
+(make line ^p1 1100005 ^p2 1100006)
+(make line ^p1 1070008 ^p2 1080008)
+(make line ^p1 1250003 ^p2 1260003)
+(make line ^p1 1230005 ^p2 1230006)
+(make line ^p1 1280005 ^p2 1280006)
+(make line ^p1 1250008 ^p2 1260008)
+(make line ^p1 1200000 ^p2 1220000)
+(make line ^p1 1220000 ^p2 1230000)
+(make line ^p1 1230000 ^p2 1240000)
+(make line ^p1 1200000 ^p2 1200002)
+(make line ^p1 1200002 ^p2 1200003)
+(make line ^p1 1200003 ^p2 1200004)
+(make line ^p1 1200004 ^p2 1240004)
+(make line ^p1 1240004 ^p2 1240000)
+(make line ^p1 1240000 ^p2 1250001)
+(make line ^p1 1250001 ^p2 1250002)
+(make line ^p1 1250002 ^p2 1250003)
+(make line ^p1 1250003 ^p2 1250005)
+(make line ^p1 1250005 ^p2 1240004)
+(make line ^p1 1250005 ^p2 1230005)
+(make line ^p1 1230005 ^p2 1220005)
+(make line ^p1 1220005 ^p2 1210005)
+(make line ^p1 1210005 ^p2 1200004)
+(make line ^p1 1260000 ^p2 1280000)
+(make line ^p1 1280000 ^p2 1290000)
+(make line ^p1 1290000 ^p2 1300000)
+(make line ^p1 1260000 ^p2 1260002)
+(make line ^p1 1260002 ^p2 1260003)
+(make line ^p1 1260003 ^p2 1260004)
+(make line ^p1 1260004 ^p2 1300004)
+(make line ^p1 1300004 ^p2 1300000)
+(make line ^p1 1300000 ^p2 1310001)
+(make line ^p1 1310001 ^p2 1310002)
+(make line ^p1 1310002 ^p2 1310003)
+(make line ^p1 1310003 ^p2 1310005)
+(make line ^p1 1310005 ^p2 1300004)
+(make line ^p1 1310005 ^p2 1290005)
+(make line ^p1 1290005 ^p2 1280005)
+(make line ^p1 1280005 ^p2 1270005)
+(make line ^p1 1270005 ^p2 1260004)
+(make line ^p1 1200006 ^p2 1220006)
+(make line ^p1 1220006 ^p2 1230006)
+(make line ^p1 1230006 ^p2 1240006)
+(make line ^p1 1200006 ^p2 1200008)
+(make line ^p1 1200008 ^p2 1200009)
+(make line ^p1 1200009 ^p2 1200010)
+(make line ^p1 1200010 ^p2 1240010)
+(make line ^p1 1240010 ^p2 1240006)
+(make line ^p1 1240006 ^p2 1250007)
+(make line ^p1 1250007 ^p2 1250008)
+(make line ^p1 1250008 ^p2 1250009)
+(make line ^p1 1250009 ^p2 1250011)
+(make line ^p1 1250011 ^p2 1240010)
+(make line ^p1 1250011 ^p2 1230011)
+(make line ^p1 1230011 ^p2 1220011)
+(make line ^p1 1220011 ^p2 1210011)
+(make line ^p1 1210011 ^p2 1200010)
+(make line ^p1 1260006 ^p2 1280006)
+(make line ^p1 1280006 ^p2 1290006)
+(make line ^p1 1290006 ^p2 1300006)
+(make line ^p1 1260006 ^p2 1260008)
+(make line ^p1 1260008 ^p2 1260009)
+(make line ^p1 1260009 ^p2 1260010)
+(make line ^p1 1260010 ^p2 1300010)
+(make line ^p1 1300010 ^p2 1300006)
+(make line ^p1 1300006 ^p2 1310007)
+(make line ^p1 1310007 ^p2 1310008)
+(make line ^p1 1310008 ^p2 1310009)
+(make line ^p1 1310009 ^p2 1310011)
+(make line ^p1 1310011 ^p2 1300010)
+(make line ^p1 1310011 ^p2 1290011)
+(make line ^p1 1290011 ^p2 1280011)
+(make line ^p1 1280011 ^p2 1270011)
+(make line ^p1 1270011 ^p2 1260010)
+(make line ^p1 1190003 ^p2 1200003)
+(make line ^p1 1170005 ^p2 1170006)
+(make line ^p1 1220005 ^p2 1220006)
+(make line ^p1 1190008 ^p2 1200008)
+(make line ^p1 1370003 ^p2 1380003)
+(make line ^p1 1350005 ^p2 1350006)
+(make line ^p1 1400005 ^p2 1400006)
+(make line ^p1 1370008 ^p2 1380008)
+(make line ^p1 1320000 ^p2 1340000)
+(make line ^p1 1340000 ^p2 1350000)
+(make line ^p1 1350000 ^p2 1360000)
+(make line ^p1 1320000 ^p2 1320002)
+(make line ^p1 1320002 ^p2 1320003)
+(make line ^p1 1320003 ^p2 1320004)
+(make line ^p1 1320004 ^p2 1360004)
+(make line ^p1 1360004 ^p2 1360000)
+(make line ^p1 1360000 ^p2 1370001)
+(make line ^p1 1370001 ^p2 1370002)
+(make line ^p1 1370002 ^p2 1370003)
+(make line ^p1 1370003 ^p2 1370005)
+(make line ^p1 1370005 ^p2 1360004)
+(make line ^p1 1370005 ^p2 1350005)
+(make line ^p1 1350005 ^p2 1340005)
+(make line ^p1 1340005 ^p2 1330005)
+(make line ^p1 1330005 ^p2 1320004)
+(make line ^p1 1380000 ^p2 1400000)
+(make line ^p1 1400000 ^p2 1410000)
+(make line ^p1 1410000 ^p2 1420000)
+(make line ^p1 1380000 ^p2 1380002)
+(make line ^p1 1380002 ^p2 1380003)
+(make line ^p1 1380003 ^p2 1380004)
+(make line ^p1 1380004 ^p2 1420004)
+(make line ^p1 1420004 ^p2 1420000)
+(make line ^p1 1420000 ^p2 1430001)
+(make line ^p1 1430001 ^p2 1430002)
+(make line ^p1 1430002 ^p2 1430003)
+(make line ^p1 1430003 ^p2 1430005)
+(make line ^p1 1430005 ^p2 1420004)
+(make line ^p1 1430005 ^p2 1410005)
+(make line ^p1 1410005 ^p2 1400005)
+(make line ^p1 1400005 ^p2 1390005)
+(make line ^p1 1390005 ^p2 1380004)
+(make line ^p1 1320006 ^p2 1340006)
+(make line ^p1 1340006 ^p2 1350006)
+(make line ^p1 1350006 ^p2 1360006)
+(make line ^p1 1320006 ^p2 1320008)
+(make line ^p1 1320008 ^p2 1320009)
+(make line ^p1 1320009 ^p2 1320010)
+(make line ^p1 1320010 ^p2 1360010)
+(make line ^p1 1360010 ^p2 1360006)
+(make line ^p1 1360006 ^p2 1370007)
+(make line ^p1 1370007 ^p2 1370008)
+(make line ^p1 1370008 ^p2 1370009)
+(make line ^p1 1370009 ^p2 1370011)
+(make line ^p1 1370011 ^p2 1360010)
+(make line ^p1 1370011 ^p2 1350011)
+(make line ^p1 1350011 ^p2 1340011)
+(make line ^p1 1340011 ^p2 1330011)
+(make line ^p1 1330011 ^p2 1320010)
+(make line ^p1 1380006 ^p2 1400006)
+(make line ^p1 1400006 ^p2 1410006)
+(make line ^p1 1410006 ^p2 1420006)
+(make line ^p1 1380006 ^p2 1380008)
+(make line ^p1 1380008 ^p2 1380009)
+(make line ^p1 1380009 ^p2 1380010)
+(make line ^p1 1380010 ^p2 1420010)
+(make line ^p1 1420010 ^p2 1420006)
+(make line ^p1 1420006 ^p2 1430007)
+(make line ^p1 1430007 ^p2 1430008)
+(make line ^p1 1430008 ^p2 1430009)
+(make line ^p1 1430009 ^p2 1430011)
+(make line ^p1 1430011 ^p2 1420010)
+(make line ^p1 1430011 ^p2 1410011)
+(make line ^p1 1410011 ^p2 1400011)
+(make line ^p1 1400011 ^p2 1390011)
+(make line ^p1 1390011 ^p2 1380010)
+(make line ^p1 1310003 ^p2 1320003)
+(make line ^p1 1290005 ^p2 1290006)
+(make line ^p1 1340005 ^p2 1340006)
+(make line ^p1 1310008 ^p2 1320008)
+(make line ^p1 1490003 ^p2 1500003)
+(make line ^p1 1470005 ^p2 1470006)
+(make line ^p1 1520005 ^p2 1520006)
+(make line ^p1 1490008 ^p2 1500008)
+(make line ^p1 1440000 ^p2 1460000)
+(make line ^p1 1460000 ^p2 1470000)
+(make line ^p1 1470000 ^p2 1480000)
+(make line ^p1 1440000 ^p2 1440002)
+(make line ^p1 1440002 ^p2 1440003)
+(make line ^p1 1440003 ^p2 1440004)
+(make line ^p1 1440004 ^p2 1480004)
+(make line ^p1 1480004 ^p2 1480000)
+(make line ^p1 1480000 ^p2 1490001)
+(make line ^p1 1490001 ^p2 1490002)
+(make line ^p1 1490002 ^p2 1490003)
+(make line ^p1 1490003 ^p2 1490005)
+(make line ^p1 1490005 ^p2 1480004)
+(make line ^p1 1490005 ^p2 1470005)
+(make line ^p1 1470005 ^p2 1460005)
+(make line ^p1 1460005 ^p2 1450005)
+(make line ^p1 1450005 ^p2 1440004)
+(make line ^p1 1500000 ^p2 1520000)
+(make line ^p1 1520000 ^p2 1530000)
+(make line ^p1 1530000 ^p2 1540000)
+(make line ^p1 1500000 ^p2 1500002)
+(make line ^p1 1500002 ^p2 1500003)
+(make line ^p1 1500003 ^p2 1500004)
+(make line ^p1 1500004 ^p2 1540004)
+(make line ^p1 1540004 ^p2 1540000)
+(make line ^p1 1540000 ^p2 1550001)
+(make line ^p1 1550001 ^p2 1550002)
+(make line ^p1 1550002 ^p2 1550003)
+(make line ^p1 1550003 ^p2 1550005)
+(make line ^p1 1550005 ^p2 1540004)
+(make line ^p1 1550005 ^p2 1530005)
+(make line ^p1 1530005 ^p2 1520005)
+(make line ^p1 1520005 ^p2 1510005)
+(make line ^p1 1510005 ^p2 1500004)
+(make line ^p1 1440006 ^p2 1460006)
+(make line ^p1 1460006 ^p2 1470006)
+(make line ^p1 1470006 ^p2 1480006)
+(make line ^p1 1440006 ^p2 1440008)
+(make line ^p1 1440008 ^p2 1440009)
+(make line ^p1 1440009 ^p2 1440010)
+(make line ^p1 1440010 ^p2 1480010)
+(make line ^p1 1480010 ^p2 1480006)
+(make line ^p1 1480006 ^p2 1490007)
+(make line ^p1 1490007 ^p2 1490008)
+(make line ^p1 1490008 ^p2 1490009)
+(make line ^p1 1490009 ^p2 1490011)
+(make line ^p1 1490011 ^p2 1480010)
+(make line ^p1 1490011 ^p2 1470011)
+(make line ^p1 1470011 ^p2 1460011)
+(make line ^p1 1460011 ^p2 1450011)
+(make line ^p1 1450011 ^p2 1440010)
+(make line ^p1 1500006 ^p2 1520006)
+(make line ^p1 1520006 ^p2 1530006)
+(make line ^p1 1530006 ^p2 1540006)
+(make line ^p1 1500006 ^p2 1500008)
+(make line ^p1 1500008 ^p2 1500009)
+(make line ^p1 1500009 ^p2 1500010)
+(make line ^p1 1500010 ^p2 1540010)
+(make line ^p1 1540010 ^p2 1540006)
+(make line ^p1 1540006 ^p2 1550007)
+(make line ^p1 1550007 ^p2 1550008)
+(make line ^p1 1550008 ^p2 1550009)
+(make line ^p1 1550009 ^p2 1550011)
+(make line ^p1 1550011 ^p2 1540010)
+(make line ^p1 1550011 ^p2 1530011)
+(make line ^p1 1530011 ^p2 1520011)
+(make line ^p1 1520011 ^p2 1510011)
+(make line ^p1 1510011 ^p2 1500010)
+(make line ^p1 1430003 ^p2 1440003)
+(make line ^p1 1410005 ^p2 1410006)
+(make line ^p1 1460005 ^p2 1460006)
+(make line ^p1 1430008 ^p2 1440008)
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltzdb/waltzdb16.dat
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltzdb/waltzdb16.dat (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltzdb/waltzdb16.dat 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,1305 @@
+(make label ^type 2j ^name L ^id 1 ^n1 B ^n2 B)
+(make label ^type 2j ^name L ^id 2 ^n1 + ^n2 B)
+(make label ^type 2j ^name L ^id 3 ^n1 B ^n2 +)
+(make label ^type 2j ^name L ^id 4 ^n1 - ^n2 B)
+(make label ^type 2j ^name L ^id 5 ^n1 B ^n2 -)
+(make label ^type 3j ^name fork ^id 6 ^n1 + ^n2 + ^n3 +)
+(make label ^type 3j ^name fork ^id 7 ^n1 - ^n2 - ^n3 -)
+(make label ^type 3j ^name fork ^id 8 ^n1 B ^n2 - ^n3 B)
+(make label ^type 3j ^name fork ^id 9 ^n1 - ^n2 B ^n3 B)
+(make label ^type 3j ^name fork ^id 10 ^n1 B ^n2 B ^n3 -)
+(make label ^type 3j ^name tee ^id 11 ^n1 B ^n2 + ^n3 B)
+(make label ^type 3j ^name tee ^id 12 ^n1 B ^n2 - ^n3 B)
+(make label ^type 3j ^name tee ^id 13 ^n1 B ^n2 B ^n3 B)
+(make label ^type 3j ^name arrow ^id 14 ^n1 B ^n2 + ^n3 B)
+(make label ^type 3j ^name arrow ^id 15 ^n1 - ^n2 + ^n3 -)
+(make label ^type 3j ^name arrow ^id 16 ^n1 + ^n2 - ^n3 +)
+(make stage ^value duplicate)
+(make line ^p1 50003 ^p2 60003)
+(make line ^p1 30005 ^p2 30006)
+(make line ^p1 80005 ^p2 80006)
+(make line ^p1 50008 ^p2 60008)
+(make line ^p1 0 ^p2 20000)
+(make line ^p1 20000 ^p2 30000)
+(make line ^p1 30000 ^p2 40000)
+(make line ^p1 0 ^p2 2)
+(make line ^p1 2 ^p2 3)
+(make line ^p1 3 ^p2 4)
+(make line ^p1 4 ^p2 40004)
+(make line ^p1 40004 ^p2 40000)
+(make line ^p1 40000 ^p2 50001)
+(make line ^p1 50001 ^p2 50002)
+(make line ^p1 50002 ^p2 50003)
+(make line ^p1 50003 ^p2 50005)
+(make line ^p1 50005 ^p2 40004)
+(make line ^p1 50005 ^p2 30005)
+(make line ^p1 30005 ^p2 20005)
+(make line ^p1 20005 ^p2 10005)
+(make line ^p1 10005 ^p2 4)
+(make line ^p1 60000 ^p2 80000)
+(make line ^p1 80000 ^p2 90000)
+(make line ^p1 90000 ^p2 100000)
+(make line ^p1 60000 ^p2 60002)
+(make line ^p1 60002 ^p2 60003)
+(make line ^p1 60003 ^p2 60004)
+(make line ^p1 60004 ^p2 100004)
+(make line ^p1 100004 ^p2 100000)
+(make line ^p1 100000 ^p2 110001)
+(make line ^p1 110001 ^p2 110002)
+(make line ^p1 110002 ^p2 110003)
+(make line ^p1 110003 ^p2 110005)
+(make line ^p1 110005 ^p2 100004)
+(make line ^p1 110005 ^p2 90005)
+(make line ^p1 90005 ^p2 80005)
+(make line ^p1 80005 ^p2 70005)
+(make line ^p1 70005 ^p2 60004)
+(make line ^p1 6 ^p2 20006)
+(make line ^p1 20006 ^p2 30006)
+(make line ^p1 30006 ^p2 40006)
+(make line ^p1 6 ^p2 8)
+(make line ^p1 8 ^p2 9)
+(make line ^p1 9 ^p2 10)
+(make line ^p1 10 ^p2 40010)
+(make line ^p1 40010 ^p2 40006)
+(make line ^p1 40006 ^p2 50007)
+(make line ^p1 50007 ^p2 50008)
+(make line ^p1 50008 ^p2 50009)
+(make line ^p1 50009 ^p2 50011)
+(make line ^p1 50011 ^p2 40010)
+(make line ^p1 50011 ^p2 30011)
+(make line ^p1 30011 ^p2 20011)
+(make line ^p1 20011 ^p2 10011)
+(make line ^p1 10011 ^p2 10)
+(make line ^p1 60006 ^p2 80006)
+(make line ^p1 80006 ^p2 90006)
+(make line ^p1 90006 ^p2 100006)
+(make line ^p1 60006 ^p2 60008)
+(make line ^p1 60008 ^p2 60009)
+(make line ^p1 60009 ^p2 60010)
+(make line ^p1 60010 ^p2 100010)
+(make line ^p1 100010 ^p2 100006)
+(make line ^p1 100006 ^p2 110007)
+(make line ^p1 110007 ^p2 110008)
+(make line ^p1 110008 ^p2 110009)
+(make line ^p1 110009 ^p2 110011)
+(make line ^p1 110011 ^p2 100010)
+(make line ^p1 110011 ^p2 90011)
+(make line ^p1 90011 ^p2 80011)
+(make line ^p1 80011 ^p2 70011)
+(make line ^p1 70011 ^p2 60010)
+(make line ^p1 170003 ^p2 180003)
+(make line ^p1 150005 ^p2 150006)
+(make line ^p1 200005 ^p2 200006)
+(make line ^p1 170008 ^p2 180008)
+(make line ^p1 120000 ^p2 140000)
+(make line ^p1 140000 ^p2 150000)
+(make line ^p1 150000 ^p2 160000)
+(make line ^p1 120000 ^p2 120002)
+(make line ^p1 120002 ^p2 120003)
+(make line ^p1 120003 ^p2 120004)
+(make line ^p1 120004 ^p2 160004)
+(make line ^p1 160004 ^p2 160000)
+(make line ^p1 160000 ^p2 170001)
+(make line ^p1 170001 ^p2 170002)
+(make line ^p1 170002 ^p2 170003)
+(make line ^p1 170003 ^p2 170005)
+(make line ^p1 170005 ^p2 160004)
+(make line ^p1 170005 ^p2 150005)
+(make line ^p1 150005 ^p2 140005)
+(make line ^p1 140005 ^p2 130005)
+(make line ^p1 130005 ^p2 120004)
+(make line ^p1 180000 ^p2 200000)
+(make line ^p1 200000 ^p2 210000)
+(make line ^p1 210000 ^p2 220000)
+(make line ^p1 180000 ^p2 180002)
+(make line ^p1 180002 ^p2 180003)
+(make line ^p1 180003 ^p2 180004)
+(make line ^p1 180004 ^p2 220004)
+(make line ^p1 220004 ^p2 220000)
+(make line ^p1 220000 ^p2 230001)
+(make line ^p1 230001 ^p2 230002)
+(make line ^p1 230002 ^p2 230003)
+(make line ^p1 230003 ^p2 230005)
+(make line ^p1 230005 ^p2 220004)
+(make line ^p1 230005 ^p2 210005)
+(make line ^p1 210005 ^p2 200005)
+(make line ^p1 200005 ^p2 190005)
+(make line ^p1 190005 ^p2 180004)
+(make line ^p1 120006 ^p2 140006)
+(make line ^p1 140006 ^p2 150006)
+(make line ^p1 150006 ^p2 160006)
+(make line ^p1 120006 ^p2 120008)
+(make line ^p1 120008 ^p2 120009)
+(make line ^p1 120009 ^p2 120010)
+(make line ^p1 120010 ^p2 160010)
+(make line ^p1 160010 ^p2 160006)
+(make line ^p1 160006 ^p2 170007)
+(make line ^p1 170007 ^p2 170008)
+(make line ^p1 170008 ^p2 170009)
+(make line ^p1 170009 ^p2 170011)
+(make line ^p1 170011 ^p2 160010)
+(make line ^p1 170011 ^p2 150011)
+(make line ^p1 150011 ^p2 140011)
+(make line ^p1 140011 ^p2 130011)
+(make line ^p1 130011 ^p2 120010)
+(make line ^p1 180006 ^p2 200006)
+(make line ^p1 200006 ^p2 210006)
+(make line ^p1 210006 ^p2 220006)
+(make line ^p1 180006 ^p2 180008)
+(make line ^p1 180008 ^p2 180009)
+(make line ^p1 180009 ^p2 180010)
+(make line ^p1 180010 ^p2 220010)
+(make line ^p1 220010 ^p2 220006)
+(make line ^p1 220006 ^p2 230007)
+(make line ^p1 230007 ^p2 230008)
+(make line ^p1 230008 ^p2 230009)
+(make line ^p1 230009 ^p2 230011)
+(make line ^p1 230011 ^p2 220010)
+(make line ^p1 230011 ^p2 210011)
+(make line ^p1 210011 ^p2 200011)
+(make line ^p1 200011 ^p2 190011)
+(make line ^p1 190011 ^p2 180010)
+(make line ^p1 110003 ^p2 120003)
+(make line ^p1 90005 ^p2 90006)
+(make line ^p1 140005 ^p2 140006)
+(make line ^p1 110008 ^p2 120008)
+(make line ^p1 290003 ^p2 300003)
+(make line ^p1 270005 ^p2 270006)
+(make line ^p1 320005 ^p2 320006)
+(make line ^p1 290008 ^p2 300008)
+(make line ^p1 240000 ^p2 260000)
+(make line ^p1 260000 ^p2 270000)
+(make line ^p1 270000 ^p2 280000)
+(make line ^p1 240000 ^p2 240002)
+(make line ^p1 240002 ^p2 240003)
+(make line ^p1 240003 ^p2 240004)
+(make line ^p1 240004 ^p2 280004)
+(make line ^p1 280004 ^p2 280000)
+(make line ^p1 280000 ^p2 290001)
+(make line ^p1 290001 ^p2 290002)
+(make line ^p1 290002 ^p2 290003)
+(make line ^p1 290003 ^p2 290005)
+(make line ^p1 290005 ^p2 280004)
+(make line ^p1 290005 ^p2 270005)
+(make line ^p1 270005 ^p2 260005)
+(make line ^p1 260005 ^p2 250005)
+(make line ^p1 250005 ^p2 240004)
+(make line ^p1 300000 ^p2 320000)
+(make line ^p1 320000 ^p2 330000)
+(make line ^p1 330000 ^p2 340000)
+(make line ^p1 300000 ^p2 300002)
+(make line ^p1 300002 ^p2 300003)
+(make line ^p1 300003 ^p2 300004)
+(make line ^p1 300004 ^p2 340004)
+(make line ^p1 340004 ^p2 340000)
+(make line ^p1 340000 ^p2 350001)
+(make line ^p1 350001 ^p2 350002)
+(make line ^p1 350002 ^p2 350003)
+(make line ^p1 350003 ^p2 350005)
+(make line ^p1 350005 ^p2 340004)
+(make line ^p1 350005 ^p2 330005)
+(make line ^p1 330005 ^p2 320005)
+(make line ^p1 320005 ^p2 310005)
+(make line ^p1 310005 ^p2 300004)
+(make line ^p1 240006 ^p2 260006)
+(make line ^p1 260006 ^p2 270006)
+(make line ^p1 270006 ^p2 280006)
+(make line ^p1 240006 ^p2 240008)
+(make line ^p1 240008 ^p2 240009)
+(make line ^p1 240009 ^p2 240010)
+(make line ^p1 240010 ^p2 280010)
+(make line ^p1 280010 ^p2 280006)
+(make line ^p1 280006 ^p2 290007)
+(make line ^p1 290007 ^p2 290008)
+(make line ^p1 290008 ^p2 290009)
+(make line ^p1 290009 ^p2 290011)
+(make line ^p1 290011 ^p2 280010)
+(make line ^p1 290011 ^p2 270011)
+(make line ^p1 270011 ^p2 260011)
+(make line ^p1 260011 ^p2 250011)
+(make line ^p1 250011 ^p2 240010)
+(make line ^p1 300006 ^p2 320006)
+(make line ^p1 320006 ^p2 330006)
+(make line ^p1 330006 ^p2 340006)
+(make line ^p1 300006 ^p2 300008)
+(make line ^p1 300008 ^p2 300009)
+(make line ^p1 300009 ^p2 300010)
+(make line ^p1 300010 ^p2 340010)
+(make line ^p1 340010 ^p2 340006)
+(make line ^p1 340006 ^p2 350007)
+(make line ^p1 350007 ^p2 350008)
+(make line ^p1 350008 ^p2 350009)
+(make line ^p1 350009 ^p2 350011)
+(make line ^p1 350011 ^p2 340010)
+(make line ^p1 350011 ^p2 330011)
+(make line ^p1 330011 ^p2 320011)
+(make line ^p1 320011 ^p2 310011)
+(make line ^p1 310011 ^p2 300010)
+(make line ^p1 230003 ^p2 240003)
+(make line ^p1 210005 ^p2 210006)
+(make line ^p1 260005 ^p2 260006)
+(make line ^p1 230008 ^p2 240008)
+(make line ^p1 410003 ^p2 420003)
+(make line ^p1 390005 ^p2 390006)
+(make line ^p1 440005 ^p2 440006)
+(make line ^p1 410008 ^p2 420008)
+(make line ^p1 360000 ^p2 380000)
+(make line ^p1 380000 ^p2 390000)
+(make line ^p1 390000 ^p2 400000)
+(make line ^p1 360000 ^p2 360002)
+(make line ^p1 360002 ^p2 360003)
+(make line ^p1 360003 ^p2 360004)
+(make line ^p1 360004 ^p2 400004)
+(make line ^p1 400004 ^p2 400000)
+(make line ^p1 400000 ^p2 410001)
+(make line ^p1 410001 ^p2 410002)
+(make line ^p1 410002 ^p2 410003)
+(make line ^p1 410003 ^p2 410005)
+(make line ^p1 410005 ^p2 400004)
+(make line ^p1 410005 ^p2 390005)
+(make line ^p1 390005 ^p2 380005)
+(make line ^p1 380005 ^p2 370005)
+(make line ^p1 370005 ^p2 360004)
+(make line ^p1 420000 ^p2 440000)
+(make line ^p1 440000 ^p2 450000)
+(make line ^p1 450000 ^p2 460000)
+(make line ^p1 420000 ^p2 420002)
+(make line ^p1 420002 ^p2 420003)
+(make line ^p1 420003 ^p2 420004)
+(make line ^p1 420004 ^p2 460004)
+(make line ^p1 460004 ^p2 460000)
+(make line ^p1 460000 ^p2 470001)
+(make line ^p1 470001 ^p2 470002)
+(make line ^p1 470002 ^p2 470003)
+(make line ^p1 470003 ^p2 470005)
+(make line ^p1 470005 ^p2 460004)
+(make line ^p1 470005 ^p2 450005)
+(make line ^p1 450005 ^p2 440005)
+(make line ^p1 440005 ^p2 430005)
+(make line ^p1 430005 ^p2 420004)
+(make line ^p1 360006 ^p2 380006)
+(make line ^p1 380006 ^p2 390006)
+(make line ^p1 390006 ^p2 400006)
+(make line ^p1 360006 ^p2 360008)
+(make line ^p1 360008 ^p2 360009)
+(make line ^p1 360009 ^p2 360010)
+(make line ^p1 360010 ^p2 400010)
+(make line ^p1 400010 ^p2 400006)
+(make line ^p1 400006 ^p2 410007)
+(make line ^p1 410007 ^p2 410008)
+(make line ^p1 410008 ^p2 410009)
+(make line ^p1 410009 ^p2 410011)
+(make line ^p1 410011 ^p2 400010)
+(make line ^p1 410011 ^p2 390011)
+(make line ^p1 390011 ^p2 380011)
+(make line ^p1 380011 ^p2 370011)
+(make line ^p1 370011 ^p2 360010)
+(make line ^p1 420006 ^p2 440006)
+(make line ^p1 440006 ^p2 450006)
+(make line ^p1 450006 ^p2 460006)
+(make line ^p1 420006 ^p2 420008)
+(make line ^p1 420008 ^p2 420009)
+(make line ^p1 420009 ^p2 420010)
+(make line ^p1 420010 ^p2 460010)
+(make line ^p1 460010 ^p2 460006)
+(make line ^p1 460006 ^p2 470007)
+(make line ^p1 470007 ^p2 470008)
+(make line ^p1 470008 ^p2 470009)
+(make line ^p1 470009 ^p2 470011)
+(make line ^p1 470011 ^p2 460010)
+(make line ^p1 470011 ^p2 450011)
+(make line ^p1 450011 ^p2 440011)
+(make line ^p1 440011 ^p2 430011)
+(make line ^p1 430011 ^p2 420010)
+(make line ^p1 350003 ^p2 360003)
+(make line ^p1 330005 ^p2 330006)
+(make line ^p1 380005 ^p2 380006)
+(make line ^p1 350008 ^p2 360008)
+(make line ^p1 530003 ^p2 540003)
+(make line ^p1 510005 ^p2 510006)
+(make line ^p1 560005 ^p2 560006)
+(make line ^p1 530008 ^p2 540008)
+(make line ^p1 480000 ^p2 500000)
+(make line ^p1 500000 ^p2 510000)
+(make line ^p1 510000 ^p2 520000)
+(make line ^p1 480000 ^p2 480002)
+(make line ^p1 480002 ^p2 480003)
+(make line ^p1 480003 ^p2 480004)
+(make line ^p1 480004 ^p2 520004)
+(make line ^p1 520004 ^p2 520000)
+(make line ^p1 520000 ^p2 530001)
+(make line ^p1 530001 ^p2 530002)
+(make line ^p1 530002 ^p2 530003)
+(make line ^p1 530003 ^p2 530005)
+(make line ^p1 530005 ^p2 520004)
+(make line ^p1 530005 ^p2 510005)
+(make line ^p1 510005 ^p2 500005)
+(make line ^p1 500005 ^p2 490005)
+(make line ^p1 490005 ^p2 480004)
+(make line ^p1 540000 ^p2 560000)
+(make line ^p1 560000 ^p2 570000)
+(make line ^p1 570000 ^p2 580000)
+(make line ^p1 540000 ^p2 540002)
+(make line ^p1 540002 ^p2 540003)
+(make line ^p1 540003 ^p2 540004)
+(make line ^p1 540004 ^p2 580004)
+(make line ^p1 580004 ^p2 580000)
+(make line ^p1 580000 ^p2 590001)
+(make line ^p1 590001 ^p2 590002)
+(make line ^p1 590002 ^p2 590003)
+(make line ^p1 590003 ^p2 590005)
+(make line ^p1 590005 ^p2 580004)
+(make line ^p1 590005 ^p2 570005)
+(make line ^p1 570005 ^p2 560005)
+(make line ^p1 560005 ^p2 550005)
+(make line ^p1 550005 ^p2 540004)
+(make line ^p1 480006 ^p2 500006)
+(make line ^p1 500006 ^p2 510006)
+(make line ^p1 510006 ^p2 520006)
+(make line ^p1 480006 ^p2 480008)
+(make line ^p1 480008 ^p2 480009)
+(make line ^p1 480009 ^p2 480010)
+(make line ^p1 480010 ^p2 520010)
+(make line ^p1 520010 ^p2 520006)
+(make line ^p1 520006 ^p2 530007)
+(make line ^p1 530007 ^p2 530008)
+(make line ^p1 530008 ^p2 530009)
+(make line ^p1 530009 ^p2 530011)
+(make line ^p1 530011 ^p2 520010)
+(make line ^p1 530011 ^p2 510011)
+(make line ^p1 510011 ^p2 500011)
+(make line ^p1 500011 ^p2 490011)
+(make line ^p1 490011 ^p2 480010)
+(make line ^p1 540006 ^p2 560006)
+(make line ^p1 560006 ^p2 570006)
+(make line ^p1 570006 ^p2 580006)
+(make line ^p1 540006 ^p2 540008)
+(make line ^p1 540008 ^p2 540009)
+(make line ^p1 540009 ^p2 540010)
+(make line ^p1 540010 ^p2 580010)
+(make line ^p1 580010 ^p2 580006)
+(make line ^p1 580006 ^p2 590007)
+(make line ^p1 590007 ^p2 590008)
+(make line ^p1 590008 ^p2 590009)
+(make line ^p1 590009 ^p2 590011)
+(make line ^p1 590011 ^p2 580010)
+(make line ^p1 590011 ^p2 570011)
+(make line ^p1 570011 ^p2 560011)
+(make line ^p1 560011 ^p2 550011)
+(make line ^p1 550011 ^p2 540010)
+(make line ^p1 470003 ^p2 480003)
+(make line ^p1 450005 ^p2 450006)
+(make line ^p1 500005 ^p2 500006)
+(make line ^p1 470008 ^p2 480008)
+(make line ^p1 650003 ^p2 660003)
+(make line ^p1 630005 ^p2 630006)
+(make line ^p1 680005 ^p2 680006)
+(make line ^p1 650008 ^p2 660008)
+(make line ^p1 600000 ^p2 620000)
+(make line ^p1 620000 ^p2 630000)
+(make line ^p1 630000 ^p2 640000)
+(make line ^p1 600000 ^p2 600002)
+(make line ^p1 600002 ^p2 600003)
+(make line ^p1 600003 ^p2 600004)
+(make line ^p1 600004 ^p2 640004)
+(make line ^p1 640004 ^p2 640000)
+(make line ^p1 640000 ^p2 650001)
+(make line ^p1 650001 ^p2 650002)
+(make line ^p1 650002 ^p2 650003)
+(make line ^p1 650003 ^p2 650005)
+(make line ^p1 650005 ^p2 640004)
+(make line ^p1 650005 ^p2 630005)
+(make line ^p1 630005 ^p2 620005)
+(make line ^p1 620005 ^p2 610005)
+(make line ^p1 610005 ^p2 600004)
+(make line ^p1 660000 ^p2 680000)
+(make line ^p1 680000 ^p2 690000)
+(make line ^p1 690000 ^p2 700000)
+(make line ^p1 660000 ^p2 660002)
+(make line ^p1 660002 ^p2 660003)
+(make line ^p1 660003 ^p2 660004)
+(make line ^p1 660004 ^p2 700004)
+(make line ^p1 700004 ^p2 700000)
+(make line ^p1 700000 ^p2 710001)
+(make line ^p1 710001 ^p2 710002)
+(make line ^p1 710002 ^p2 710003)
+(make line ^p1 710003 ^p2 710005)
+(make line ^p1 710005 ^p2 700004)
+(make line ^p1 710005 ^p2 690005)
+(make line ^p1 690005 ^p2 680005)
+(make line ^p1 680005 ^p2 670005)
+(make line ^p1 670005 ^p2 660004)
+(make line ^p1 600006 ^p2 620006)
+(make line ^p1 620006 ^p2 630006)
+(make line ^p1 630006 ^p2 640006)
+(make line ^p1 600006 ^p2 600008)
+(make line ^p1 600008 ^p2 600009)
+(make line ^p1 600009 ^p2 600010)
+(make line ^p1 600010 ^p2 640010)
+(make line ^p1 640010 ^p2 640006)
+(make line ^p1 640006 ^p2 650007)
+(make line ^p1 650007 ^p2 650008)
+(make line ^p1 650008 ^p2 650009)
+(make line ^p1 650009 ^p2 650011)
+(make line ^p1 650011 ^p2 640010)
+(make line ^p1 650011 ^p2 630011)
+(make line ^p1 630011 ^p2 620011)
+(make line ^p1 620011 ^p2 610011)
+(make line ^p1 610011 ^p2 600010)
+(make line ^p1 660006 ^p2 680006)
+(make line ^p1 680006 ^p2 690006)
+(make line ^p1 690006 ^p2 700006)
+(make line ^p1 660006 ^p2 660008)
+(make line ^p1 660008 ^p2 660009)
+(make line ^p1 660009 ^p2 660010)
+(make line ^p1 660010 ^p2 700010)
+(make line ^p1 700010 ^p2 700006)
+(make line ^p1 700006 ^p2 710007)
+(make line ^p1 710007 ^p2 710008)
+(make line ^p1 710008 ^p2 710009)
+(make line ^p1 710009 ^p2 710011)
+(make line ^p1 710011 ^p2 700010)
+(make line ^p1 710011 ^p2 690011)
+(make line ^p1 690011 ^p2 680011)
+(make line ^p1 680011 ^p2 670011)
+(make line ^p1 670011 ^p2 660010)
+(make line ^p1 590003 ^p2 600003)
+(make line ^p1 570005 ^p2 570006)
+(make line ^p1 620005 ^p2 620006)
+(make line ^p1 590008 ^p2 600008)
+(make line ^p1 770003 ^p2 780003)
+(make line ^p1 750005 ^p2 750006)
+(make line ^p1 800005 ^p2 800006)
+(make line ^p1 770008 ^p2 780008)
+(make line ^p1 720000 ^p2 740000)
+(make line ^p1 740000 ^p2 750000)
+(make line ^p1 750000 ^p2 760000)
+(make line ^p1 720000 ^p2 720002)
+(make line ^p1 720002 ^p2 720003)
+(make line ^p1 720003 ^p2 720004)
+(make line ^p1 720004 ^p2 760004)
+(make line ^p1 760004 ^p2 760000)
+(make line ^p1 760000 ^p2 770001)
+(make line ^p1 770001 ^p2 770002)
+(make line ^p1 770002 ^p2 770003)
+(make line ^p1 770003 ^p2 770005)
+(make line ^p1 770005 ^p2 760004)
+(make line ^p1 770005 ^p2 750005)
+(make line ^p1 750005 ^p2 740005)
+(make line ^p1 740005 ^p2 730005)
+(make line ^p1 730005 ^p2 720004)
+(make line ^p1 780000 ^p2 800000)
+(make line ^p1 800000 ^p2 810000)
+(make line ^p1 810000 ^p2 820000)
+(make line ^p1 780000 ^p2 780002)
+(make line ^p1 780002 ^p2 780003)
+(make line ^p1 780003 ^p2 780004)
+(make line ^p1 780004 ^p2 820004)
+(make line ^p1 820004 ^p2 820000)
+(make line ^p1 820000 ^p2 830001)
+(make line ^p1 830001 ^p2 830002)
+(make line ^p1 830002 ^p2 830003)
+(make line ^p1 830003 ^p2 830005)
+(make line ^p1 830005 ^p2 820004)
+(make line ^p1 830005 ^p2 810005)
+(make line ^p1 810005 ^p2 800005)
+(make line ^p1 800005 ^p2 790005)
+(make line ^p1 790005 ^p2 780004)
+(make line ^p1 720006 ^p2 740006)
+(make line ^p1 740006 ^p2 750006)
+(make line ^p1 750006 ^p2 760006)
+(make line ^p1 720006 ^p2 720008)
+(make line ^p1 720008 ^p2 720009)
+(make line ^p1 720009 ^p2 720010)
+(make line ^p1 720010 ^p2 760010)
+(make line ^p1 760010 ^p2 760006)
+(make line ^p1 760006 ^p2 770007)
+(make line ^p1 770007 ^p2 770008)
+(make line ^p1 770008 ^p2 770009)
+(make line ^p1 770009 ^p2 770011)
+(make line ^p1 770011 ^p2 760010)
+(make line ^p1 770011 ^p2 750011)
+(make line ^p1 750011 ^p2 740011)
+(make line ^p1 740011 ^p2 730011)
+(make line ^p1 730011 ^p2 720010)
+(make line ^p1 780006 ^p2 800006)
+(make line ^p1 800006 ^p2 810006)
+(make line ^p1 810006 ^p2 820006)
+(make line ^p1 780006 ^p2 780008)
+(make line ^p1 780008 ^p2 780009)
+(make line ^p1 780009 ^p2 780010)
+(make line ^p1 780010 ^p2 820010)
+(make line ^p1 820010 ^p2 820006)
+(make line ^p1 820006 ^p2 830007)
+(make line ^p1 830007 ^p2 830008)
+(make line ^p1 830008 ^p2 830009)
+(make line ^p1 830009 ^p2 830011)
+(make line ^p1 830011 ^p2 820010)
+(make line ^p1 830011 ^p2 810011)
+(make line ^p1 810011 ^p2 800011)
+(make line ^p1 800011 ^p2 790011)
+(make line ^p1 790011 ^p2 780010)
+(make line ^p1 710003 ^p2 720003)
+(make line ^p1 690005 ^p2 690006)
+(make line ^p1 740005 ^p2 740006)
+(make line ^p1 710008 ^p2 720008)
+(make line ^p1 890003 ^p2 900003)
+(make line ^p1 870005 ^p2 870006)
+(make line ^p1 920005 ^p2 920006)
+(make line ^p1 890008 ^p2 900008)
+(make line ^p1 840000 ^p2 860000)
+(make line ^p1 860000 ^p2 870000)
+(make line ^p1 870000 ^p2 880000)
+(make line ^p1 840000 ^p2 840002)
+(make line ^p1 840002 ^p2 840003)
+(make line ^p1 840003 ^p2 840004)
+(make line ^p1 840004 ^p2 880004)
+(make line ^p1 880004 ^p2 880000)
+(make line ^p1 880000 ^p2 890001)
+(make line ^p1 890001 ^p2 890002)
+(make line ^p1 890002 ^p2 890003)
+(make line ^p1 890003 ^p2 890005)
+(make line ^p1 890005 ^p2 880004)
+(make line ^p1 890005 ^p2 870005)
+(make line ^p1 870005 ^p2 860005)
+(make line ^p1 860005 ^p2 850005)
+(make line ^p1 850005 ^p2 840004)
+(make line ^p1 900000 ^p2 920000)
+(make line ^p1 920000 ^p2 930000)
+(make line ^p1 930000 ^p2 940000)
+(make line ^p1 900000 ^p2 900002)
+(make line ^p1 900002 ^p2 900003)
+(make line ^p1 900003 ^p2 900004)
+(make line ^p1 900004 ^p2 940004)
+(make line ^p1 940004 ^p2 940000)
+(make line ^p1 940000 ^p2 950001)
+(make line ^p1 950001 ^p2 950002)
+(make line ^p1 950002 ^p2 950003)
+(make line ^p1 950003 ^p2 950005)
+(make line ^p1 950005 ^p2 940004)
+(make line ^p1 950005 ^p2 930005)
+(make line ^p1 930005 ^p2 920005)
+(make line ^p1 920005 ^p2 910005)
+(make line ^p1 910005 ^p2 900004)
+(make line ^p1 840006 ^p2 860006)
+(make line ^p1 860006 ^p2 870006)
+(make line ^p1 870006 ^p2 880006)
+(make line ^p1 840006 ^p2 840008)
+(make line ^p1 840008 ^p2 840009)
+(make line ^p1 840009 ^p2 840010)
+(make line ^p1 840010 ^p2 880010)
+(make line ^p1 880010 ^p2 880006)
+(make line ^p1 880006 ^p2 890007)
+(make line ^p1 890007 ^p2 890008)
+(make line ^p1 890008 ^p2 890009)
+(make line ^p1 890009 ^p2 890011)
+(make line ^p1 890011 ^p2 880010)
+(make line ^p1 890011 ^p2 870011)
+(make line ^p1 870011 ^p2 860011)
+(make line ^p1 860011 ^p2 850011)
+(make line ^p1 850011 ^p2 840010)
+(make line ^p1 900006 ^p2 920006)
+(make line ^p1 920006 ^p2 930006)
+(make line ^p1 930006 ^p2 940006)
+(make line ^p1 900006 ^p2 900008)
+(make line ^p1 900008 ^p2 900009)
+(make line ^p1 900009 ^p2 900010)
+(make line ^p1 900010 ^p2 940010)
+(make line ^p1 940010 ^p2 940006)
+(make line ^p1 940006 ^p2 950007)
+(make line ^p1 950007 ^p2 950008)
+(make line ^p1 950008 ^p2 950009)
+(make line ^p1 950009 ^p2 950011)
+(make line ^p1 950011 ^p2 940010)
+(make line ^p1 950011 ^p2 930011)
+(make line ^p1 930011 ^p2 920011)
+(make line ^p1 920011 ^p2 910011)
+(make line ^p1 910011 ^p2 900010)
+(make line ^p1 830003 ^p2 840003)
+(make line ^p1 810005 ^p2 810006)
+(make line ^p1 860005 ^p2 860006)
+(make line ^p1 830008 ^p2 840008)
+(make line ^p1 1010003 ^p2 1020003)
+(make line ^p1 990005 ^p2 990006)
+(make line ^p1 1040005 ^p2 1040006)
+(make line ^p1 1010008 ^p2 1020008)
+(make line ^p1 960000 ^p2 980000)
+(make line ^p1 980000 ^p2 990000)
+(make line ^p1 990000 ^p2 1000000)
+(make line ^p1 960000 ^p2 960002)
+(make line ^p1 960002 ^p2 960003)
+(make line ^p1 960003 ^p2 960004)
+(make line ^p1 960004 ^p2 1000004)
+(make line ^p1 1000004 ^p2 1000000)
+(make line ^p1 1000000 ^p2 1010001)
+(make line ^p1 1010001 ^p2 1010002)
+(make line ^p1 1010002 ^p2 1010003)
+(make line ^p1 1010003 ^p2 1010005)
+(make line ^p1 1010005 ^p2 1000004)
+(make line ^p1 1010005 ^p2 990005)
+(make line ^p1 990005 ^p2 980005)
+(make line ^p1 980005 ^p2 970005)
+(make line ^p1 970005 ^p2 960004)
+(make line ^p1 1020000 ^p2 1040000)
+(make line ^p1 1040000 ^p2 1050000)
+(make line ^p1 1050000 ^p2 1060000)
+(make line ^p1 1020000 ^p2 1020002)
+(make line ^p1 1020002 ^p2 1020003)
+(make line ^p1 1020003 ^p2 1020004)
+(make line ^p1 1020004 ^p2 1060004)
+(make line ^p1 1060004 ^p2 1060000)
+(make line ^p1 1060000 ^p2 1070001)
+(make line ^p1 1070001 ^p2 1070002)
+(make line ^p1 1070002 ^p2 1070003)
+(make line ^p1 1070003 ^p2 1070005)
+(make line ^p1 1070005 ^p2 1060004)
+(make line ^p1 1070005 ^p2 1050005)
+(make line ^p1 1050005 ^p2 1040005)
+(make line ^p1 1040005 ^p2 1030005)
+(make line ^p1 1030005 ^p2 1020004)
+(make line ^p1 960006 ^p2 980006)
+(make line ^p1 980006 ^p2 990006)
+(make line ^p1 990006 ^p2 1000006)
+(make line ^p1 960006 ^p2 960008)
+(make line ^p1 960008 ^p2 960009)
+(make line ^p1 960009 ^p2 960010)
+(make line ^p1 960010 ^p2 1000010)
+(make line ^p1 1000010 ^p2 1000006)
+(make line ^p1 1000006 ^p2 1010007)
+(make line ^p1 1010007 ^p2 1010008)
+(make line ^p1 1010008 ^p2 1010009)
+(make line ^p1 1010009 ^p2 1010011)
+(make line ^p1 1010011 ^p2 1000010)
+(make line ^p1 1010011 ^p2 990011)
+(make line ^p1 990011 ^p2 980011)
+(make line ^p1 980011 ^p2 970011)
+(make line ^p1 970011 ^p2 960010)
+(make line ^p1 1020006 ^p2 1040006)
+(make line ^p1 1040006 ^p2 1050006)
+(make line ^p1 1050006 ^p2 1060006)
+(make line ^p1 1020006 ^p2 1020008)
+(make line ^p1 1020008 ^p2 1020009)
+(make line ^p1 1020009 ^p2 1020010)
+(make line ^p1 1020010 ^p2 1060010)
+(make line ^p1 1060010 ^p2 1060006)
+(make line ^p1 1060006 ^p2 1070007)
+(make line ^p1 1070007 ^p2 1070008)
+(make line ^p1 1070008 ^p2 1070009)
+(make line ^p1 1070009 ^p2 1070011)
+(make line ^p1 1070011 ^p2 1060010)
+(make line ^p1 1070011 ^p2 1050011)
+(make line ^p1 1050011 ^p2 1040011)
+(make line ^p1 1040011 ^p2 1030011)
+(make line ^p1 1030011 ^p2 1020010)
+(make line ^p1 950003 ^p2 960003)
+(make line ^p1 930005 ^p2 930006)
+(make line ^p1 980005 ^p2 980006)
+(make line ^p1 950008 ^p2 960008)
+(make line ^p1 1130003 ^p2 1140003)
+(make line ^p1 1110005 ^p2 1110006)
+(make line ^p1 1160005 ^p2 1160006)
+(make line ^p1 1130008 ^p2 1140008)
+(make line ^p1 1080000 ^p2 1100000)
+(make line ^p1 1100000 ^p2 1110000)
+(make line ^p1 1110000 ^p2 1120000)
+(make line ^p1 1080000 ^p2 1080002)
+(make line ^p1 1080002 ^p2 1080003)
+(make line ^p1 1080003 ^p2 1080004)
+(make line ^p1 1080004 ^p2 1120004)
+(make line ^p1 1120004 ^p2 1120000)
+(make line ^p1 1120000 ^p2 1130001)
+(make line ^p1 1130001 ^p2 1130002)
+(make line ^p1 1130002 ^p2 1130003)
+(make line ^p1 1130003 ^p2 1130005)
+(make line ^p1 1130005 ^p2 1120004)
+(make line ^p1 1130005 ^p2 1110005)
+(make line ^p1 1110005 ^p2 1100005)
+(make line ^p1 1100005 ^p2 1090005)
+(make line ^p1 1090005 ^p2 1080004)
+(make line ^p1 1140000 ^p2 1160000)
+(make line ^p1 1160000 ^p2 1170000)
+(make line ^p1 1170000 ^p2 1180000)
+(make line ^p1 1140000 ^p2 1140002)
+(make line ^p1 1140002 ^p2 1140003)
+(make line ^p1 1140003 ^p2 1140004)
+(make line ^p1 1140004 ^p2 1180004)
+(make line ^p1 1180004 ^p2 1180000)
+(make line ^p1 1180000 ^p2 1190001)
+(make line ^p1 1190001 ^p2 1190002)
+(make line ^p1 1190002 ^p2 1190003)
+(make line ^p1 1190003 ^p2 1190005)
+(make line ^p1 1190005 ^p2 1180004)
+(make line ^p1 1190005 ^p2 1170005)
+(make line ^p1 1170005 ^p2 1160005)
+(make line ^p1 1160005 ^p2 1150005)
+(make line ^p1 1150005 ^p2 1140004)
+(make line ^p1 1080006 ^p2 1100006)
+(make line ^p1 1100006 ^p2 1110006)
+(make line ^p1 1110006 ^p2 1120006)
+(make line ^p1 1080006 ^p2 1080008)
+(make line ^p1 1080008 ^p2 1080009)
+(make line ^p1 1080009 ^p2 1080010)
+(make line ^p1 1080010 ^p2 1120010)
+(make line ^p1 1120010 ^p2 1120006)
+(make line ^p1 1120006 ^p2 1130007)
+(make line ^p1 1130007 ^p2 1130008)
+(make line ^p1 1130008 ^p2 1130009)
+(make line ^p1 1130009 ^p2 1130011)
+(make line ^p1 1130011 ^p2 1120010)
+(make line ^p1 1130011 ^p2 1110011)
+(make line ^p1 1110011 ^p2 1100011)
+(make line ^p1 1100011 ^p2 1090011)
+(make line ^p1 1090011 ^p2 1080010)
+(make line ^p1 1140006 ^p2 1160006)
+(make line ^p1 1160006 ^p2 1170006)
+(make line ^p1 1170006 ^p2 1180006)
+(make line ^p1 1140006 ^p2 1140008)
+(make line ^p1 1140008 ^p2 1140009)
+(make line ^p1 1140009 ^p2 1140010)
+(make line ^p1 1140010 ^p2 1180010)
+(make line ^p1 1180010 ^p2 1180006)
+(make line ^p1 1180006 ^p2 1190007)
+(make line ^p1 1190007 ^p2 1190008)
+(make line ^p1 1190008 ^p2 1190009)
+(make line ^p1 1190009 ^p2 1190011)
+(make line ^p1 1190011 ^p2 1180010)
+(make line ^p1 1190011 ^p2 1170011)
+(make line ^p1 1170011 ^p2 1160011)
+(make line ^p1 1160011 ^p2 1150011)
+(make line ^p1 1150011 ^p2 1140010)
+(make line ^p1 1070003 ^p2 1080003)
+(make line ^p1 1050005 ^p2 1050006)
+(make line ^p1 1100005 ^p2 1100006)
+(make line ^p1 1070008 ^p2 1080008)
+(make line ^p1 1250003 ^p2 1260003)
+(make line ^p1 1230005 ^p2 1230006)
+(make line ^p1 1280005 ^p2 1280006)
+(make line ^p1 1250008 ^p2 1260008)
+(make line ^p1 1200000 ^p2 1220000)
+(make line ^p1 1220000 ^p2 1230000)
+(make line ^p1 1230000 ^p2 1240000)
+(make line ^p1 1200000 ^p2 1200002)
+(make line ^p1 1200002 ^p2 1200003)
+(make line ^p1 1200003 ^p2 1200004)
+(make line ^p1 1200004 ^p2 1240004)
+(make line ^p1 1240004 ^p2 1240000)
+(make line ^p1 1240000 ^p2 1250001)
+(make line ^p1 1250001 ^p2 1250002)
+(make line ^p1 1250002 ^p2 1250003)
+(make line ^p1 1250003 ^p2 1250005)
+(make line ^p1 1250005 ^p2 1240004)
+(make line ^p1 1250005 ^p2 1230005)
+(make line ^p1 1230005 ^p2 1220005)
+(make line ^p1 1220005 ^p2 1210005)
+(make line ^p1 1210005 ^p2 1200004)
+(make line ^p1 1260000 ^p2 1280000)
+(make line ^p1 1280000 ^p2 1290000)
+(make line ^p1 1290000 ^p2 1300000)
+(make line ^p1 1260000 ^p2 1260002)
+(make line ^p1 1260002 ^p2 1260003)
+(make line ^p1 1260003 ^p2 1260004)
+(make line ^p1 1260004 ^p2 1300004)
+(make line ^p1 1300004 ^p2 1300000)
+(make line ^p1 1300000 ^p2 1310001)
+(make line ^p1 1310001 ^p2 1310002)
+(make line ^p1 1310002 ^p2 1310003)
+(make line ^p1 1310003 ^p2 1310005)
+(make line ^p1 1310005 ^p2 1300004)
+(make line ^p1 1310005 ^p2 1290005)
+(make line ^p1 1290005 ^p2 1280005)
+(make line ^p1 1280005 ^p2 1270005)
+(make line ^p1 1270005 ^p2 1260004)
+(make line ^p1 1200006 ^p2 1220006)
+(make line ^p1 1220006 ^p2 1230006)
+(make line ^p1 1230006 ^p2 1240006)
+(make line ^p1 1200006 ^p2 1200008)
+(make line ^p1 1200008 ^p2 1200009)
+(make line ^p1 1200009 ^p2 1200010)
+(make line ^p1 1200010 ^p2 1240010)
+(make line ^p1 1240010 ^p2 1240006)
+(make line ^p1 1240006 ^p2 1250007)
+(make line ^p1 1250007 ^p2 1250008)
+(make line ^p1 1250008 ^p2 1250009)
+(make line ^p1 1250009 ^p2 1250011)
+(make line ^p1 1250011 ^p2 1240010)
+(make line ^p1 1250011 ^p2 1230011)
+(make line ^p1 1230011 ^p2 1220011)
+(make line ^p1 1220011 ^p2 1210011)
+(make line ^p1 1210011 ^p2 1200010)
+(make line ^p1 1260006 ^p2 1280006)
+(make line ^p1 1280006 ^p2 1290006)
+(make line ^p1 1290006 ^p2 1300006)
+(make line ^p1 1260006 ^p2 1260008)
+(make line ^p1 1260008 ^p2 1260009)
+(make line ^p1 1260009 ^p2 1260010)
+(make line ^p1 1260010 ^p2 1300010)
+(make line ^p1 1300010 ^p2 1300006)
+(make line ^p1 1300006 ^p2 1310007)
+(make line ^p1 1310007 ^p2 1310008)
+(make line ^p1 1310008 ^p2 1310009)
+(make line ^p1 1310009 ^p2 1310011)
+(make line ^p1 1310011 ^p2 1300010)
+(make line ^p1 1310011 ^p2 1290011)
+(make line ^p1 1290011 ^p2 1280011)
+(make line ^p1 1280011 ^p2 1270011)
+(make line ^p1 1270011 ^p2 1260010)
+(make line ^p1 1190003 ^p2 1200003)
+(make line ^p1 1170005 ^p2 1170006)
+(make line ^p1 1220005 ^p2 1220006)
+(make line ^p1 1190008 ^p2 1200008)
+(make line ^p1 1370003 ^p2 1380003)
+(make line ^p1 1350005 ^p2 1350006)
+(make line ^p1 1400005 ^p2 1400006)
+(make line ^p1 1370008 ^p2 1380008)
+(make line ^p1 1320000 ^p2 1340000)
+(make line ^p1 1340000 ^p2 1350000)
+(make line ^p1 1350000 ^p2 1360000)
+(make line ^p1 1320000 ^p2 1320002)
+(make line ^p1 1320002 ^p2 1320003)
+(make line ^p1 1320003 ^p2 1320004)
+(make line ^p1 1320004 ^p2 1360004)
+(make line ^p1 1360004 ^p2 1360000)
+(make line ^p1 1360000 ^p2 1370001)
+(make line ^p1 1370001 ^p2 1370002)
+(make line ^p1 1370002 ^p2 1370003)
+(make line ^p1 1370003 ^p2 1370005)
+(make line ^p1 1370005 ^p2 1360004)
+(make line ^p1 1370005 ^p2 1350005)
+(make line ^p1 1350005 ^p2 1340005)
+(make line ^p1 1340005 ^p2 1330005)
+(make line ^p1 1330005 ^p2 1320004)
+(make line ^p1 1380000 ^p2 1400000)
+(make line ^p1 1400000 ^p2 1410000)
+(make line ^p1 1410000 ^p2 1420000)
+(make line ^p1 1380000 ^p2 1380002)
+(make line ^p1 1380002 ^p2 1380003)
+(make line ^p1 1380003 ^p2 1380004)
+(make line ^p1 1380004 ^p2 1420004)
+(make line ^p1 1420004 ^p2 1420000)
+(make line ^p1 1420000 ^p2 1430001)
+(make line ^p1 1430001 ^p2 1430002)
+(make line ^p1 1430002 ^p2 1430003)
+(make line ^p1 1430003 ^p2 1430005)
+(make line ^p1 1430005 ^p2 1420004)
+(make line ^p1 1430005 ^p2 1410005)
+(make line ^p1 1410005 ^p2 1400005)
+(make line ^p1 1400005 ^p2 1390005)
+(make line ^p1 1390005 ^p2 1380004)
+(make line ^p1 1320006 ^p2 1340006)
+(make line ^p1 1340006 ^p2 1350006)
+(make line ^p1 1350006 ^p2 1360006)
+(make line ^p1 1320006 ^p2 1320008)
+(make line ^p1 1320008 ^p2 1320009)
+(make line ^p1 1320009 ^p2 1320010)
+(make line ^p1 1320010 ^p2 1360010)
+(make line ^p1 1360010 ^p2 1360006)
+(make line ^p1 1360006 ^p2 1370007)
+(make line ^p1 1370007 ^p2 1370008)
+(make line ^p1 1370008 ^p2 1370009)
+(make line ^p1 1370009 ^p2 1370011)
+(make line ^p1 1370011 ^p2 1360010)
+(make line ^p1 1370011 ^p2 1350011)
+(make line ^p1 1350011 ^p2 1340011)
+(make line ^p1 1340011 ^p2 1330011)
+(make line ^p1 1330011 ^p2 1320010)
+(make line ^p1 1380006 ^p2 1400006)
+(make line ^p1 1400006 ^p2 1410006)
+(make line ^p1 1410006 ^p2 1420006)
+(make line ^p1 1380006 ^p2 1380008)
+(make line ^p1 1380008 ^p2 1380009)
+(make line ^p1 1380009 ^p2 1380010)
+(make line ^p1 1380010 ^p2 1420010)
+(make line ^p1 1420010 ^p2 1420006)
+(make line ^p1 1420006 ^p2 1430007)
+(make line ^p1 1430007 ^p2 1430008)
+(make line ^p1 1430008 ^p2 1430009)
+(make line ^p1 1430009 ^p2 1430011)
+(make line ^p1 1430011 ^p2 1420010)
+(make line ^p1 1430011 ^p2 1410011)
+(make line ^p1 1410011 ^p2 1400011)
+(make line ^p1 1400011 ^p2 1390011)
+(make line ^p1 1390011 ^p2 1380010)
+(make line ^p1 1310003 ^p2 1320003)
+(make line ^p1 1290005 ^p2 1290006)
+(make line ^p1 1340005 ^p2 1340006)
+(make line ^p1 1310008 ^p2 1320008)
+(make line ^p1 1490003 ^p2 1500003)
+(make line ^p1 1470005 ^p2 1470006)
+(make line ^p1 1520005 ^p2 1520006)
+(make line ^p1 1490008 ^p2 1500008)
+(make line ^p1 1440000 ^p2 1460000)
+(make line ^p1 1460000 ^p2 1470000)
+(make line ^p1 1470000 ^p2 1480000)
+(make line ^p1 1440000 ^p2 1440002)
+(make line ^p1 1440002 ^p2 1440003)
+(make line ^p1 1440003 ^p2 1440004)
+(make line ^p1 1440004 ^p2 1480004)
+(make line ^p1 1480004 ^p2 1480000)
+(make line ^p1 1480000 ^p2 1490001)
+(make line ^p1 1490001 ^p2 1490002)
+(make line ^p1 1490002 ^p2 1490003)
+(make line ^p1 1490003 ^p2 1490005)
+(make line ^p1 1490005 ^p2 1480004)
+(make line ^p1 1490005 ^p2 1470005)
+(make line ^p1 1470005 ^p2 1460005)
+(make line ^p1 1460005 ^p2 1450005)
+(make line ^p1 1450005 ^p2 1440004)
+(make line ^p1 1500000 ^p2 1520000)
+(make line ^p1 1520000 ^p2 1530000)
+(make line ^p1 1530000 ^p2 1540000)
+(make line ^p1 1500000 ^p2 1500002)
+(make line ^p1 1500002 ^p2 1500003)
+(make line ^p1 1500003 ^p2 1500004)
+(make line ^p1 1500004 ^p2 1540004)
+(make line ^p1 1540004 ^p2 1540000)
+(make line ^p1 1540000 ^p2 1550001)
+(make line ^p1 1550001 ^p2 1550002)
+(make line ^p1 1550002 ^p2 1550003)
+(make line ^p1 1550003 ^p2 1550005)
+(make line ^p1 1550005 ^p2 1540004)
+(make line ^p1 1550005 ^p2 1530005)
+(make line ^p1 1530005 ^p2 1520005)
+(make line ^p1 1520005 ^p2 1510005)
+(make line ^p1 1510005 ^p2 1500004)
+(make line ^p1 1440006 ^p2 1460006)
+(make line ^p1 1460006 ^p2 1470006)
+(make line ^p1 1470006 ^p2 1480006)
+(make line ^p1 1440006 ^p2 1440008)
+(make line ^p1 1440008 ^p2 1440009)
+(make line ^p1 1440009 ^p2 1440010)
+(make line ^p1 1440010 ^p2 1480010)
+(make line ^p1 1480010 ^p2 1480006)
+(make line ^p1 1480006 ^p2 1490007)
+(make line ^p1 1490007 ^p2 1490008)
+(make line ^p1 1490008 ^p2 1490009)
+(make line ^p1 1490009 ^p2 1490011)
+(make line ^p1 1490011 ^p2 1480010)
+(make line ^p1 1490011 ^p2 1470011)
+(make line ^p1 1470011 ^p2 1460011)
+(make line ^p1 1460011 ^p2 1450011)
+(make line ^p1 1450011 ^p2 1440010)
+(make line ^p1 1500006 ^p2 1520006)
+(make line ^p1 1520006 ^p2 1530006)
+(make line ^p1 1530006 ^p2 1540006)
+(make line ^p1 1500006 ^p2 1500008)
+(make line ^p1 1500008 ^p2 1500009)
+(make line ^p1 1500009 ^p2 1500010)
+(make line ^p1 1500010 ^p2 1540010)
+(make line ^p1 1540010 ^p2 1540006)
+(make line ^p1 1540006 ^p2 1550007)
+(make line ^p1 1550007 ^p2 1550008)
+(make line ^p1 1550008 ^p2 1550009)
+(make line ^p1 1550009 ^p2 1550011)
+(make line ^p1 1550011 ^p2 1540010)
+(make line ^p1 1550011 ^p2 1530011)
+(make line ^p1 1530011 ^p2 1520011)
+(make line ^p1 1520011 ^p2 1510011)
+(make line ^p1 1510011 ^p2 1500010)
+(make line ^p1 1430003 ^p2 1440003)
+(make line ^p1 1410005 ^p2 1410006)
+(make line ^p1 1460005 ^p2 1460006)
+(make line ^p1 1430008 ^p2 1440008)
+(make line ^p1 1610003 ^p2 1620003)
+(make line ^p1 1590005 ^p2 1590006)
+(make line ^p1 1640005 ^p2 1640006)
+(make line ^p1 1610008 ^p2 1620008)
+(make line ^p1 1560000 ^p2 1580000)
+(make line ^p1 1580000 ^p2 1590000)
+(make line ^p1 1590000 ^p2 1600000)
+(make line ^p1 1560000 ^p2 1560002)
+(make line ^p1 1560002 ^p2 1560003)
+(make line ^p1 1560003 ^p2 1560004)
+(make line ^p1 1560004 ^p2 1600004)
+(make line ^p1 1600004 ^p2 1600000)
+(make line ^p1 1600000 ^p2 1610001)
+(make line ^p1 1610001 ^p2 1610002)
+(make line ^p1 1610002 ^p2 1610003)
+(make line ^p1 1610003 ^p2 1610005)
+(make line ^p1 1610005 ^p2 1600004)
+(make line ^p1 1610005 ^p2 1590005)
+(make line ^p1 1590005 ^p2 1580005)
+(make line ^p1 1580005 ^p2 1570005)
+(make line ^p1 1570005 ^p2 1560004)
+(make line ^p1 1620000 ^p2 1640000)
+(make line ^p1 1640000 ^p2 1650000)
+(make line ^p1 1650000 ^p2 1660000)
+(make line ^p1 1620000 ^p2 1620002)
+(make line ^p1 1620002 ^p2 1620003)
+(make line ^p1 1620003 ^p2 1620004)
+(make line ^p1 1620004 ^p2 1660004)
+(make line ^p1 1660004 ^p2 1660000)
+(make line ^p1 1660000 ^p2 1670001)
+(make line ^p1 1670001 ^p2 1670002)
+(make line ^p1 1670002 ^p2 1670003)
+(make line ^p1 1670003 ^p2 1670005)
+(make line ^p1 1670005 ^p2 1660004)
+(make line ^p1 1670005 ^p2 1650005)
+(make line ^p1 1650005 ^p2 1640005)
+(make line ^p1 1640005 ^p2 1630005)
+(make line ^p1 1630005 ^p2 1620004)
+(make line ^p1 1560006 ^p2 1580006)
+(make line ^p1 1580006 ^p2 1590006)
+(make line ^p1 1590006 ^p2 1600006)
+(make line ^p1 1560006 ^p2 1560008)
+(make line ^p1 1560008 ^p2 1560009)
+(make line ^p1 1560009 ^p2 1560010)
+(make line ^p1 1560010 ^p2 1600010)
+(make line ^p1 1600010 ^p2 1600006)
+(make line ^p1 1600006 ^p2 1610007)
+(make line ^p1 1610007 ^p2 1610008)
+(make line ^p1 1610008 ^p2 1610009)
+(make line ^p1 1610009 ^p2 1610011)
+(make line ^p1 1610011 ^p2 1600010)
+(make line ^p1 1610011 ^p2 1590011)
+(make line ^p1 1590011 ^p2 1580011)
+(make line ^p1 1580011 ^p2 1570011)
+(make line ^p1 1570011 ^p2 1560010)
+(make line ^p1 1620006 ^p2 1640006)
+(make line ^p1 1640006 ^p2 1650006)
+(make line ^p1 1650006 ^p2 1660006)
+(make line ^p1 1620006 ^p2 1620008)
+(make line ^p1 1620008 ^p2 1620009)
+(make line ^p1 1620009 ^p2 1620010)
+(make line ^p1 1620010 ^p2 1660010)
+(make line ^p1 1660010 ^p2 1660006)
+(make line ^p1 1660006 ^p2 1670007)
+(make line ^p1 1670007 ^p2 1670008)
+(make line ^p1 1670008 ^p2 1670009)
+(make line ^p1 1670009 ^p2 1670011)
+(make line ^p1 1670011 ^p2 1660010)
+(make line ^p1 1670011 ^p2 1650011)
+(make line ^p1 1650011 ^p2 1640011)
+(make line ^p1 1640011 ^p2 1630011)
+(make line ^p1 1630011 ^p2 1620010)
+(make line ^p1 1550003 ^p2 1560003)
+(make line ^p1 1530005 ^p2 1530006)
+(make line ^p1 1580005 ^p2 1580006)
+(make line ^p1 1550008 ^p2 1560008)
+(make line ^p1 1730003 ^p2 1740003)
+(make line ^p1 1710005 ^p2 1710006)
+(make line ^p1 1760005 ^p2 1760006)
+(make line ^p1 1730008 ^p2 1740008)
+(make line ^p1 1680000 ^p2 1700000)
+(make line ^p1 1700000 ^p2 1710000)
+(make line ^p1 1710000 ^p2 1720000)
+(make line ^p1 1680000 ^p2 1680002)
+(make line ^p1 1680002 ^p2 1680003)
+(make line ^p1 1680003 ^p2 1680004)
+(make line ^p1 1680004 ^p2 1720004)
+(make line ^p1 1720004 ^p2 1720000)
+(make line ^p1 1720000 ^p2 1730001)
+(make line ^p1 1730001 ^p2 1730002)
+(make line ^p1 1730002 ^p2 1730003)
+(make line ^p1 1730003 ^p2 1730005)
+(make line ^p1 1730005 ^p2 1720004)
+(make line ^p1 1730005 ^p2 1710005)
+(make line ^p1 1710005 ^p2 1700005)
+(make line ^p1 1700005 ^p2 1690005)
+(make line ^p1 1690005 ^p2 1680004)
+(make line ^p1 1740000 ^p2 1760000)
+(make line ^p1 1760000 ^p2 1770000)
+(make line ^p1 1770000 ^p2 1780000)
+(make line ^p1 1740000 ^p2 1740002)
+(make line ^p1 1740002 ^p2 1740003)
+(make line ^p1 1740003 ^p2 1740004)
+(make line ^p1 1740004 ^p2 1780004)
+(make line ^p1 1780004 ^p2 1780000)
+(make line ^p1 1780000 ^p2 1790001)
+(make line ^p1 1790001 ^p2 1790002)
+(make line ^p1 1790002 ^p2 1790003)
+(make line ^p1 1790003 ^p2 1790005)
+(make line ^p1 1790005 ^p2 1780004)
+(make line ^p1 1790005 ^p2 1770005)
+(make line ^p1 1770005 ^p2 1760005)
+(make line ^p1 1760005 ^p2 1750005)
+(make line ^p1 1750005 ^p2 1740004)
+(make line ^p1 1680006 ^p2 1700006)
+(make line ^p1 1700006 ^p2 1710006)
+(make line ^p1 1710006 ^p2 1720006)
+(make line ^p1 1680006 ^p2 1680008)
+(make line ^p1 1680008 ^p2 1680009)
+(make line ^p1 1680009 ^p2 1680010)
+(make line ^p1 1680010 ^p2 1720010)
+(make line ^p1 1720010 ^p2 1720006)
+(make line ^p1 1720006 ^p2 1730007)
+(make line ^p1 1730007 ^p2 1730008)
+(make line ^p1 1730008 ^p2 1730009)
+(make line ^p1 1730009 ^p2 1730011)
+(make line ^p1 1730011 ^p2 1720010)
+(make line ^p1 1730011 ^p2 1710011)
+(make line ^p1 1710011 ^p2 1700011)
+(make line ^p1 1700011 ^p2 1690011)
+(make line ^p1 1690011 ^p2 1680010)
+(make line ^p1 1740006 ^p2 1760006)
+(make line ^p1 1760006 ^p2 1770006)
+(make line ^p1 1770006 ^p2 1780006)
+(make line ^p1 1740006 ^p2 1740008)
+(make line ^p1 1740008 ^p2 1740009)
+(make line ^p1 1740009 ^p2 1740010)
+(make line ^p1 1740010 ^p2 1780010)
+(make line ^p1 1780010 ^p2 1780006)
+(make line ^p1 1780006 ^p2 1790007)
+(make line ^p1 1790007 ^p2 1790008)
+(make line ^p1 1790008 ^p2 1790009)
+(make line ^p1 1790009 ^p2 1790011)
+(make line ^p1 1790011 ^p2 1780010)
+(make line ^p1 1790011 ^p2 1770011)
+(make line ^p1 1770011 ^p2 1760011)
+(make line ^p1 1760011 ^p2 1750011)
+(make line ^p1 1750011 ^p2 1740010)
+(make line ^p1 1670003 ^p2 1680003)
+(make line ^p1 1650005 ^p2 1650006)
+(make line ^p1 1700005 ^p2 1700006)
+(make line ^p1 1670008 ^p2 1680008)
+(make line ^p1 1850003 ^p2 1860003)
+(make line ^p1 1830005 ^p2 1830006)
+(make line ^p1 1880005 ^p2 1880006)
+(make line ^p1 1850008 ^p2 1860008)
+(make line ^p1 1800000 ^p2 1820000)
+(make line ^p1 1820000 ^p2 1830000)
+(make line ^p1 1830000 ^p2 1840000)
+(make line ^p1 1800000 ^p2 1800002)
+(make line ^p1 1800002 ^p2 1800003)
+(make line ^p1 1800003 ^p2 1800004)
+(make line ^p1 1800004 ^p2 1840004)
+(make line ^p1 1840004 ^p2 1840000)
+(make line ^p1 1840000 ^p2 1850001)
+(make line ^p1 1850001 ^p2 1850002)
+(make line ^p1 1850002 ^p2 1850003)
+(make line ^p1 1850003 ^p2 1850005)
+(make line ^p1 1850005 ^p2 1840004)
+(make line ^p1 1850005 ^p2 1830005)
+(make line ^p1 1830005 ^p2 1820005)
+(make line ^p1 1820005 ^p2 1810005)
+(make line ^p1 1810005 ^p2 1800004)
+(make line ^p1 1860000 ^p2 1880000)
+(make line ^p1 1880000 ^p2 1890000)
+(make line ^p1 1890000 ^p2 1900000)
+(make line ^p1 1860000 ^p2 1860002)
+(make line ^p1 1860002 ^p2 1860003)
+(make line ^p1 1860003 ^p2 1860004)
+(make line ^p1 1860004 ^p2 1900004)
+(make line ^p1 1900004 ^p2 1900000)
+(make line ^p1 1900000 ^p2 1910001)
+(make line ^p1 1910001 ^p2 1910002)
+(make line ^p1 1910002 ^p2 1910003)
+(make line ^p1 1910003 ^p2 1910005)
+(make line ^p1 1910005 ^p2 1900004)
+(make line ^p1 1910005 ^p2 1890005)
+(make line ^p1 1890005 ^p2 1880005)
+(make line ^p1 1880005 ^p2 1870005)
+(make line ^p1 1870005 ^p2 1860004)
+(make line ^p1 1800006 ^p2 1820006)
+(make line ^p1 1820006 ^p2 1830006)
+(make line ^p1 1830006 ^p2 1840006)
+(make line ^p1 1800006 ^p2 1800008)
+(make line ^p1 1800008 ^p2 1800009)
+(make line ^p1 1800009 ^p2 1800010)
+(make line ^p1 1800010 ^p2 1840010)
+(make line ^p1 1840010 ^p2 1840006)
+(make line ^p1 1840006 ^p2 1850007)
+(make line ^p1 1850007 ^p2 1850008)
+(make line ^p1 1850008 ^p2 1850009)
+(make line ^p1 1850009 ^p2 1850011)
+(make line ^p1 1850011 ^p2 1840010)
+(make line ^p1 1850011 ^p2 1830011)
+(make line ^p1 1830011 ^p2 1820011)
+(make line ^p1 1820011 ^p2 1810011)
+(make line ^p1 1810011 ^p2 1800010)
+(make line ^p1 1860006 ^p2 1880006)
+(make line ^p1 1880006 ^p2 1890006)
+(make line ^p1 1890006 ^p2 1900006)
+(make line ^p1 1860006 ^p2 1860008)
+(make line ^p1 1860008 ^p2 1860009)
+(make line ^p1 1860009 ^p2 1860010)
+(make line ^p1 1860010 ^p2 1900010)
+(make line ^p1 1900010 ^p2 1900006)
+(make line ^p1 1900006 ^p2 1910007)
+(make line ^p1 1910007 ^p2 1910008)
+(make line ^p1 1910008 ^p2 1910009)
+(make line ^p1 1910009 ^p2 1910011)
+(make line ^p1 1910011 ^p2 1900010)
+(make line ^p1 1910011 ^p2 1890011)
+(make line ^p1 1890011 ^p2 1880011)
+(make line ^p1 1880011 ^p2 1870011)
+(make line ^p1 1870011 ^p2 1860010)
+(make line ^p1 1790003 ^p2 1800003)
+(make line ^p1 1770005 ^p2 1770006)
+(make line ^p1 1820005 ^p2 1820006)
+(make line ^p1 1790008 ^p2 1800008)
+(make line ^p1 1970003 ^p2 1980003)
+(make line ^p1 1950005 ^p2 1950006)
+(make line ^p1 2000005 ^p2 2000006)
+(make line ^p1 1970008 ^p2 1980008)
+(make line ^p1 1920000 ^p2 1940000)
+(make line ^p1 1940000 ^p2 1950000)
+(make line ^p1 1950000 ^p2 1960000)
+(make line ^p1 1920000 ^p2 1920002)
+(make line ^p1 1920002 ^p2 1920003)
+(make line ^p1 1920003 ^p2 1920004)
+(make line ^p1 1920004 ^p2 1960004)
+(make line ^p1 1960004 ^p2 1960000)
+(make line ^p1 1960000 ^p2 1970001)
+(make line ^p1 1970001 ^p2 1970002)
+(make line ^p1 1970002 ^p2 1970003)
+(make line ^p1 1970003 ^p2 1970005)
+(make line ^p1 1970005 ^p2 1960004)
+(make line ^p1 1970005 ^p2 1950005)
+(make line ^p1 1950005 ^p2 1940005)
+(make line ^p1 1940005 ^p2 1930005)
+(make line ^p1 1930005 ^p2 1920004)
+(make line ^p1 1980000 ^p2 2000000)
+(make line ^p1 2000000 ^p2 2010000)
+(make line ^p1 2010000 ^p2 2020000)
+(make line ^p1 1980000 ^p2 1980002)
+(make line ^p1 1980002 ^p2 1980003)
+(make line ^p1 1980003 ^p2 1980004)
+(make line ^p1 1980004 ^p2 2020004)
+(make line ^p1 2020004 ^p2 2020000)
+(make line ^p1 2020000 ^p2 2030001)
+(make line ^p1 2030001 ^p2 2030002)
+(make line ^p1 2030002 ^p2 2030003)
+(make line ^p1 2030003 ^p2 2030005)
+(make line ^p1 2030005 ^p2 2020004)
+(make line ^p1 2030005 ^p2 2010005)
+(make line ^p1 2010005 ^p2 2000005)
+(make line ^p1 2000005 ^p2 1990005)
+(make line ^p1 1990005 ^p2 1980004)
+(make line ^p1 1920006 ^p2 1940006)
+(make line ^p1 1940006 ^p2 1950006)
+(make line ^p1 1950006 ^p2 1960006)
+(make line ^p1 1920006 ^p2 1920008)
+(make line ^p1 1920008 ^p2 1920009)
+(make line ^p1 1920009 ^p2 1920010)
+(make line ^p1 1920010 ^p2 1960010)
+(make line ^p1 1960010 ^p2 1960006)
+(make line ^p1 1960006 ^p2 1970007)
+(make line ^p1 1970007 ^p2 1970008)
+(make line ^p1 1970008 ^p2 1970009)
+(make line ^p1 1970009 ^p2 1970011)
+(make line ^p1 1970011 ^p2 1960010)
+(make line ^p1 1970011 ^p2 1950011)
+(make line ^p1 1950011 ^p2 1940011)
+(make line ^p1 1940011 ^p2 1930011)
+(make line ^p1 1930011 ^p2 1920010)
+(make line ^p1 1980006 ^p2 2000006)
+(make line ^p1 2000006 ^p2 2010006)
+(make line ^p1 2010006 ^p2 2020006)
+(make line ^p1 1980006 ^p2 1980008)
+(make line ^p1 1980008 ^p2 1980009)
+(make line ^p1 1980009 ^p2 1980010)
+(make line ^p1 1980010 ^p2 2020010)
+(make line ^p1 2020010 ^p2 2020006)
+(make line ^p1 2020006 ^p2 2030007)
+(make line ^p1 2030007 ^p2 2030008)
+(make line ^p1 2030008 ^p2 2030009)
+(make line ^p1 2030009 ^p2 2030011)
+(make line ^p1 2030011 ^p2 2020010)
+(make line ^p1 2030011 ^p2 2010011)
+(make line ^p1 2010011 ^p2 2000011)
+(make line ^p1 2000011 ^p2 1990011)
+(make line ^p1 1990011 ^p2 1980010)
+(make line ^p1 1910003 ^p2 1920003)
+(make line ^p1 1890005 ^p2 1890006)
+(make line ^p1 1940005 ^p2 1940006)
+(make line ^p1 1910008 ^p2 1920008)
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltzdb/waltzdb4.dat
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltzdb/waltzdb4.dat (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltzdb/waltzdb4.dat 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,393 @@
+(make label ^type 2j ^name L ^id 1 ^n1 B ^n2 B)
+(make label ^type 2j ^name L ^id 2 ^n1 + ^n2 B)
+(make label ^type 2j ^name L ^id 3 ^n1 B ^n2 +)
+(make label ^type 2j ^name L ^id 4 ^n1 - ^n2 B)
+(make label ^type 2j ^name L ^id 5 ^n1 B ^n2 -)
+(make label ^type 3j ^name fork ^id 6 ^n1 + ^n2 + ^n3 +)
+(make label ^type 3j ^name fork ^id 7 ^n1 - ^n2 - ^n3 -)
+(make label ^type 3j ^name fork ^id 8 ^n1 B ^n2 - ^n3 B)
+(make label ^type 3j ^name fork ^id 9 ^n1 - ^n2 B ^n3 B)
+(make label ^type 3j ^name fork ^id 10 ^n1 B ^n2 B ^n3 -)
+(make label ^type 3j ^name tee ^id 11 ^n1 B ^n2 + ^n3 B)
+(make label ^type 3j ^name tee ^id 12 ^n1 B ^n2 - ^n3 B)
+(make label ^type 3j ^name tee ^id 13 ^n1 B ^n2 B ^n3 B)
+(make label ^type 3j ^name arrow ^id 14 ^n1 B ^n2 + ^n3 B)
+(make label ^type 3j ^name arrow ^id 15 ^n1 - ^n2 + ^n3 -)
+(make label ^type 3j ^name arrow ^id 16 ^n1 + ^n2 - ^n3 +)
+(make stage ^value duplicate)
+(make line ^p1 50003 ^p2 60003)
+(make line ^p1 30005 ^p2 30006)
+(make line ^p1 80005 ^p2 80006)
+(make line ^p1 50008 ^p2 60008)
+(make line ^p1 0 ^p2 20000)
+(make line ^p1 20000 ^p2 30000)
+(make line ^p1 30000 ^p2 40000)
+(make line ^p1 0 ^p2 2)
+(make line ^p1 2 ^p2 3)
+(make line ^p1 3 ^p2 4)
+(make line ^p1 4 ^p2 40004)
+(make line ^p1 40004 ^p2 40000)
+(make line ^p1 40000 ^p2 50001)
+(make line ^p1 50001 ^p2 50002)
+(make line ^p1 50002 ^p2 50003)
+(make line ^p1 50003 ^p2 50005)
+(make line ^p1 50005 ^p2 40004)
+(make line ^p1 50005 ^p2 30005)
+(make line ^p1 30005 ^p2 20005)
+(make line ^p1 20005 ^p2 10005)
+(make line ^p1 10005 ^p2 4)
+(make line ^p1 60000 ^p2 80000)
+(make line ^p1 80000 ^p2 90000)
+(make line ^p1 90000 ^p2 100000)
+(make line ^p1 60000 ^p2 60002)
+(make line ^p1 60002 ^p2 60003)
+(make line ^p1 60003 ^p2 60004)
+(make line ^p1 60004 ^p2 100004)
+(make line ^p1 100004 ^p2 100000)
+(make line ^p1 100000 ^p2 110001)
+(make line ^p1 110001 ^p2 110002)
+(make line ^p1 110002 ^p2 110003)
+(make line ^p1 110003 ^p2 110005)
+(make line ^p1 110005 ^p2 100004)
+(make line ^p1 110005 ^p2 90005)
+(make line ^p1 90005 ^p2 80005)
+(make line ^p1 80005 ^p2 70005)
+(make line ^p1 70005 ^p2 60004)
+(make line ^p1 6 ^p2 20006)
+(make line ^p1 20006 ^p2 30006)
+(make line ^p1 30006 ^p2 40006)
+(make line ^p1 6 ^p2 8)
+(make line ^p1 8 ^p2 9)
+(make line ^p1 9 ^p2 10)
+(make line ^p1 10 ^p2 40010)
+(make line ^p1 40010 ^p2 40006)
+(make line ^p1 40006 ^p2 50007)
+(make line ^p1 50007 ^p2 50008)
+(make line ^p1 50008 ^p2 50009)
+(make line ^p1 50009 ^p2 50011)
+(make line ^p1 50011 ^p2 40010)
+(make line ^p1 50011 ^p2 30011)
+(make line ^p1 30011 ^p2 20011)
+(make line ^p1 20011 ^p2 10011)
+(make line ^p1 10011 ^p2 10)
+(make line ^p1 60006 ^p2 80006)
+(make line ^p1 80006 ^p2 90006)
+(make line ^p1 90006 ^p2 100006)
+(make line ^p1 60006 ^p2 60008)
+(make line ^p1 60008 ^p2 60009)
+(make line ^p1 60009 ^p2 60010)
+(make line ^p1 60010 ^p2 100010)
+(make line ^p1 100010 ^p2 100006)
+(make line ^p1 100006 ^p2 110007)
+(make line ^p1 110007 ^p2 110008)
+(make line ^p1 110008 ^p2 110009)
+(make line ^p1 110009 ^p2 110011)
+(make line ^p1 110011 ^p2 100010)
+(make line ^p1 110011 ^p2 90011)
+(make line ^p1 90011 ^p2 80011)
+(make line ^p1 80011 ^p2 70011)
+(make line ^p1 70011 ^p2 60010)
+(make line ^p1 170003 ^p2 180003)
+(make line ^p1 150005 ^p2 150006)
+(make line ^p1 200005 ^p2 200006)
+(make line ^p1 170008 ^p2 180008)
+(make line ^p1 120000 ^p2 140000)
+(make line ^p1 140000 ^p2 150000)
+(make line ^p1 150000 ^p2 160000)
+(make line ^p1 120000 ^p2 120002)
+(make line ^p1 120002 ^p2 120003)
+(make line ^p1 120003 ^p2 120004)
+(make line ^p1 120004 ^p2 160004)
+(make line ^p1 160004 ^p2 160000)
+(make line ^p1 160000 ^p2 170001)
+(make line ^p1 170001 ^p2 170002)
+(make line ^p1 170002 ^p2 170003)
+(make line ^p1 170003 ^p2 170005)
+(make line ^p1 170005 ^p2 160004)
+(make line ^p1 170005 ^p2 150005)
+(make line ^p1 150005 ^p2 140005)
+(make line ^p1 140005 ^p2 130005)
+(make line ^p1 130005 ^p2 120004)
+(make line ^p1 180000 ^p2 200000)
+(make line ^p1 200000 ^p2 210000)
+(make line ^p1 210000 ^p2 220000)
+(make line ^p1 180000 ^p2 180002)
+(make line ^p1 180002 ^p2 180003)
+(make line ^p1 180003 ^p2 180004)
+(make line ^p1 180004 ^p2 220004)
+(make line ^p1 220004 ^p2 220000)
+(make line ^p1 220000 ^p2 230001)
+(make line ^p1 230001 ^p2 230002)
+(make line ^p1 230002 ^p2 230003)
+(make line ^p1 230003 ^p2 230005)
+(make line ^p1 230005 ^p2 220004)
+(make line ^p1 230005 ^p2 210005)
+(make line ^p1 210005 ^p2 200005)
+(make line ^p1 200005 ^p2 190005)
+(make line ^p1 190005 ^p2 180004)
+(make line ^p1 120006 ^p2 140006)
+(make line ^p1 140006 ^p2 150006)
+(make line ^p1 150006 ^p2 160006)
+(make line ^p1 120006 ^p2 120008)
+(make line ^p1 120008 ^p2 120009)
+(make line ^p1 120009 ^p2 120010)
+(make line ^p1 120010 ^p2 160010)
+(make line ^p1 160010 ^p2 160006)
+(make line ^p1 160006 ^p2 170007)
+(make line ^p1 170007 ^p2 170008)
+(make line ^p1 170008 ^p2 170009)
+(make line ^p1 170009 ^p2 170011)
+(make line ^p1 170011 ^p2 160010)
+(make line ^p1 170011 ^p2 150011)
+(make line ^p1 150011 ^p2 140011)
+(make line ^p1 140011 ^p2 130011)
+(make line ^p1 130011 ^p2 120010)
+(make line ^p1 180006 ^p2 200006)
+(make line ^p1 200006 ^p2 210006)
+(make line ^p1 210006 ^p2 220006)
+(make line ^p1 180006 ^p2 180008)
+(make line ^p1 180008 ^p2 180009)
+(make line ^p1 180009 ^p2 180010)
+(make line ^p1 180010 ^p2 220010)
+(make line ^p1 220010 ^p2 220006)
+(make line ^p1 220006 ^p2 230007)
+(make line ^p1 230007 ^p2 230008)
+(make line ^p1 230008 ^p2 230009)
+(make line ^p1 230009 ^p2 230011)
+(make line ^p1 230011 ^p2 220010)
+(make line ^p1 230011 ^p2 210011)
+(make line ^p1 210011 ^p2 200011)
+(make line ^p1 200011 ^p2 190011)
+(make line ^p1 190011 ^p2 180010)
+(make line ^p1 110003 ^p2 120003)
+(make line ^p1 90005 ^p2 90006)
+(make line ^p1 140005 ^p2 140006)
+(make line ^p1 110008 ^p2 120008)
+(make line ^p1 290003 ^p2 300003)
+(make line ^p1 270005 ^p2 270006)
+(make line ^p1 320005 ^p2 320006)
+(make line ^p1 290008 ^p2 300008)
+(make line ^p1 240000 ^p2 260000)
+(make line ^p1 260000 ^p2 270000)
+(make line ^p1 270000 ^p2 280000)
+(make line ^p1 240000 ^p2 240002)
+(make line ^p1 240002 ^p2 240003)
+(make line ^p1 240003 ^p2 240004)
+(make line ^p1 240004 ^p2 280004)
+(make line ^p1 280004 ^p2 280000)
+(make line ^p1 280000 ^p2 290001)
+(make line ^p1 290001 ^p2 290002)
+(make line ^p1 290002 ^p2 290003)
+(make line ^p1 290003 ^p2 290005)
+(make line ^p1 290005 ^p2 280004)
+(make line ^p1 290005 ^p2 270005)
+(make line ^p1 270005 ^p2 260005)
+(make line ^p1 260005 ^p2 250005)
+(make line ^p1 250005 ^p2 240004)
+(make line ^p1 300000 ^p2 320000)
+(make line ^p1 320000 ^p2 330000)
+(make line ^p1 330000 ^p2 340000)
+(make line ^p1 300000 ^p2 300002)
+(make line ^p1 300002 ^p2 300003)
+(make line ^p1 300003 ^p2 300004)
+(make line ^p1 300004 ^p2 340004)
+(make line ^p1 340004 ^p2 340000)
+(make line ^p1 340000 ^p2 350001)
+(make line ^p1 350001 ^p2 350002)
+(make line ^p1 350002 ^p2 350003)
+(make line ^p1 350003 ^p2 350005)
+(make line ^p1 350005 ^p2 340004)
+(make line ^p1 350005 ^p2 330005)
+(make line ^p1 330005 ^p2 320005)
+(make line ^p1 320005 ^p2 310005)
+(make line ^p1 310005 ^p2 300004)
+(make line ^p1 240006 ^p2 260006)
+(make line ^p1 260006 ^p2 270006)
+(make line ^p1 270006 ^p2 280006)
+(make line ^p1 240006 ^p2 240008)
+(make line ^p1 240008 ^p2 240009)
+(make line ^p1 240009 ^p2 240010)
+(make line ^p1 240010 ^p2 280010)
+(make line ^p1 280010 ^p2 280006)
+(make line ^p1 280006 ^p2 290007)
+(make line ^p1 290007 ^p2 290008)
+(make line ^p1 290008 ^p2 290009)
+(make line ^p1 290009 ^p2 290011)
+(make line ^p1 290011 ^p2 280010)
+(make line ^p1 290011 ^p2 270011)
+(make line ^p1 270011 ^p2 260011)
+(make line ^p1 260011 ^p2 250011)
+(make line ^p1 250011 ^p2 240010)
+(make line ^p1 300006 ^p2 320006)
+(make line ^p1 320006 ^p2 330006)
+(make line ^p1 330006 ^p2 340006)
+(make line ^p1 300006 ^p2 300008)
+(make line ^p1 300008 ^p2 300009)
+(make line ^p1 300009 ^p2 300010)
+(make line ^p1 300010 ^p2 340010)
+(make line ^p1 340010 ^p2 340006)
+(make line ^p1 340006 ^p2 350007)
+(make line ^p1 350007 ^p2 350008)
+(make line ^p1 350008 ^p2 350009)
+(make line ^p1 350009 ^p2 350011)
+(make line ^p1 350011 ^p2 340010)
+(make line ^p1 350011 ^p2 330011)
+(make line ^p1 330011 ^p2 320011)
+(make line ^p1 320011 ^p2 310011)
+(make line ^p1 310011 ^p2 300010)
+(make line ^p1 230003 ^p2 240003)
+(make line ^p1 210005 ^p2 210006)
+(make line ^p1 260005 ^p2 260006)
+(make line ^p1 230008 ^p2 240008)
+(make line ^p1 410003 ^p2 420003)
+(make line ^p1 390005 ^p2 390006)
+(make line ^p1 440005 ^p2 440006)
+(make line ^p1 410008 ^p2 420008)
+(make line ^p1 360000 ^p2 380000)
+(make line ^p1 380000 ^p2 390000)
+(make line ^p1 390000 ^p2 400000)
+(make line ^p1 360000 ^p2 360002)
+(make line ^p1 360002 ^p2 360003)
+(make line ^p1 360003 ^p2 360004)
+(make line ^p1 360004 ^p2 400004)
+(make line ^p1 400004 ^p2 400000)
+(make line ^p1 400000 ^p2 410001)
+(make line ^p1 410001 ^p2 410002)
+(make line ^p1 410002 ^p2 410003)
+(make line ^p1 410003 ^p2 410005)
+(make line ^p1 410005 ^p2 400004)
+(make line ^p1 410005 ^p2 390005)
+(make line ^p1 390005 ^p2 380005)
+(make line ^p1 380005 ^p2 370005)
+(make line ^p1 370005 ^p2 360004)
+(make line ^p1 420000 ^p2 440000)
+(make line ^p1 440000 ^p2 450000)
+(make line ^p1 450000 ^p2 460000)
+(make line ^p1 420000 ^p2 420002)
+(make line ^p1 420002 ^p2 420003)
+(make line ^p1 420003 ^p2 420004)
+(make line ^p1 420004 ^p2 460004)
+(make line ^p1 460004 ^p2 460000)
+(make line ^p1 460000 ^p2 470001)
+(make line ^p1 470001 ^p2 470002)
+(make line ^p1 470002 ^p2 470003)
+(make line ^p1 470003 ^p2 470005)
+(make line ^p1 470005 ^p2 460004)
+(make line ^p1 470005 ^p2 450005)
+(make line ^p1 450005 ^p2 440005)
+(make line ^p1 440005 ^p2 430005)
+(make line ^p1 430005 ^p2 420004)
+(make line ^p1 360006 ^p2 380006)
+(make line ^p1 380006 ^p2 390006)
+(make line ^p1 390006 ^p2 400006)
+(make line ^p1 360006 ^p2 360008)
+(make line ^p1 360008 ^p2 360009)
+(make line ^p1 360009 ^p2 360010)
+(make line ^p1 360010 ^p2 400010)
+(make line ^p1 400010 ^p2 400006)
+(make line ^p1 400006 ^p2 410007)
+(make line ^p1 410007 ^p2 410008)
+(make line ^p1 410008 ^p2 410009)
+(make line ^p1 410009 ^p2 410011)
+(make line ^p1 410011 ^p2 400010)
+(make line ^p1 410011 ^p2 390011)
+(make line ^p1 390011 ^p2 380011)
+(make line ^p1 380011 ^p2 370011)
+(make line ^p1 370011 ^p2 360010)
+(make line ^p1 420006 ^p2 440006)
+(make line ^p1 440006 ^p2 450006)
+(make line ^p1 450006 ^p2 460006)
+(make line ^p1 420006 ^p2 420008)
+(make line ^p1 420008 ^p2 420009)
+(make line ^p1 420009 ^p2 420010)
+(make line ^p1 420010 ^p2 460010)
+(make line ^p1 460010 ^p2 460006)
+(make line ^p1 460006 ^p2 470007)
+(make line ^p1 470007 ^p2 470008)
+(make line ^p1 470008 ^p2 470009)
+(make line ^p1 470009 ^p2 470011)
+(make line ^p1 470011 ^p2 460010)
+(make line ^p1 470011 ^p2 450011)
+(make line ^p1 450011 ^p2 440011)
+(make line ^p1 440011 ^p2 430011)
+(make line ^p1 430011 ^p2 420010)
+(make line ^p1 350003 ^p2 360003)
+(make line ^p1 330005 ^p2 330006)
+(make line ^p1 380005 ^p2 380006)
+(make line ^p1 350008 ^p2 360008)
+(make line ^p1 530003 ^p2 540003)
+(make line ^p1 510005 ^p2 510006)
+(make line ^p1 560005 ^p2 560006)
+(make line ^p1 530008 ^p2 540008)
+(make line ^p1 480000 ^p2 500000)
+(make line ^p1 500000 ^p2 510000)
+(make line ^p1 510000 ^p2 520000)
+(make line ^p1 480000 ^p2 480002)
+(make line ^p1 480002 ^p2 480003)
+(make line ^p1 480003 ^p2 480004)
+(make line ^p1 480004 ^p2 520004)
+(make line ^p1 520004 ^p2 520000)
+(make line ^p1 520000 ^p2 530001)
+(make line ^p1 530001 ^p2 530002)
+(make line ^p1 530002 ^p2 530003)
+(make line ^p1 530003 ^p2 530005)
+(make line ^p1 530005 ^p2 520004)
+(make line ^p1 530005 ^p2 510005)
+(make line ^p1 510005 ^p2 500005)
+(make line ^p1 500005 ^p2 490005)
+(make line ^p1 490005 ^p2 480004)
+(make line ^p1 540000 ^p2 560000)
+(make line ^p1 560000 ^p2 570000)
+(make line ^p1 570000 ^p2 580000)
+(make line ^p1 540000 ^p2 540002)
+(make line ^p1 540002 ^p2 540003)
+(make line ^p1 540003 ^p2 540004)
+(make line ^p1 540004 ^p2 580004)
+(make line ^p1 580004 ^p2 580000)
+(make line ^p1 580000 ^p2 590001)
+(make line ^p1 590001 ^p2 590002)
+(make line ^p1 590002 ^p2 590003)
+(make line ^p1 590003 ^p2 590005)
+(make line ^p1 590005 ^p2 580004)
+(make line ^p1 590005 ^p2 570005)
+(make line ^p1 570005 ^p2 560005)
+(make line ^p1 560005 ^p2 550005)
+(make line ^p1 550005 ^p2 540004)
+(make line ^p1 480006 ^p2 500006)
+(make line ^p1 500006 ^p2 510006)
+(make line ^p1 510006 ^p2 520006)
+(make line ^p1 480006 ^p2 480008)
+(make line ^p1 480008 ^p2 480009)
+(make line ^p1 480009 ^p2 480010)
+(make line ^p1 480010 ^p2 520010)
+(make line ^p1 520010 ^p2 520006)
+(make line ^p1 520006 ^p2 530007)
+(make line ^p1 530007 ^p2 530008)
+(make line ^p1 530008 ^p2 530009)
+(make line ^p1 530009 ^p2 530011)
+(make line ^p1 530011 ^p2 520010)
+(make line ^p1 530011 ^p2 510011)
+(make line ^p1 510011 ^p2 500011)
+(make line ^p1 500011 ^p2 490011)
+(make line ^p1 490011 ^p2 480010)
+(make line ^p1 540006 ^p2 560006)
+(make line ^p1 560006 ^p2 570006)
+(make line ^p1 570006 ^p2 580006)
+(make line ^p1 540006 ^p2 540008)
+(make line ^p1 540008 ^p2 540009)
+(make line ^p1 540009 ^p2 540010)
+(make line ^p1 540010 ^p2 580010)
+(make line ^p1 580010 ^p2 580006)
+(make line ^p1 580006 ^p2 590007)
+(make line ^p1 590007 ^p2 590008)
+(make line ^p1 590008 ^p2 590009)
+(make line ^p1 590009 ^p2 590011)
+(make line ^p1 590011 ^p2 580010)
+(make line ^p1 590011 ^p2 570011)
+(make line ^p1 570011 ^p2 560011)
+(make line ^p1 560011 ^p2 550011)
+(make line ^p1 550011 ^p2 540010)
+(make line ^p1 470003 ^p2 480003)
+(make line ^p1 450005 ^p2 450006)
+(make line ^p1 500005 ^p2 500006)
+(make line ^p1 470008 ^p2 480008)
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltzdb/waltzdb8.dat
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltzdb/waltzdb8.dat (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/benchmark/waltzdb/waltzdb8.dat 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,697 @@
+(make label ^type 2j ^name L ^id 1 ^n1 B ^n2 B)
+(make label ^type 2j ^name L ^id 2 ^n1 + ^n2 B)
+(make label ^type 2j ^name L ^id 3 ^n1 B ^n2 +)
+(make label ^type 2j ^name L ^id 4 ^n1 - ^n2 B)
+(make label ^type 2j ^name L ^id 5 ^n1 B ^n2 -)
+(make label ^type 3j ^name fork ^id 6 ^n1 + ^n2 + ^n3 +)
+(make label ^type 3j ^name fork ^id 7 ^n1 - ^n2 - ^n3 -)
+(make label ^type 3j ^name fork ^id 8 ^n1 B ^n2 - ^n3 B)
+(make label ^type 3j ^name fork ^id 9 ^n1 - ^n2 B ^n3 B)
+(make label ^type 3j ^name fork ^id 10 ^n1 B ^n2 B ^n3 -)
+(make label ^type 3j ^name tee ^id 11 ^n1 B ^n2 + ^n3 B)
+(make label ^type 3j ^name tee ^id 12 ^n1 B ^n2 - ^n3 B)
+(make label ^type 3j ^name tee ^id 13 ^n1 B ^n2 B ^n3 B)
+(make label ^type 3j ^name arrow ^id 14 ^n1 B ^n2 + ^n3 B)
+(make label ^type 3j ^name arrow ^id 15 ^n1 - ^n2 + ^n3 -)
+(make label ^type 3j ^name arrow ^id 16 ^n1 + ^n2 - ^n3 +)
+(make stage ^value duplicate)
+(make line ^p1 50003 ^p2 60003)
+(make line ^p1 30005 ^p2 30006)
+(make line ^p1 80005 ^p2 80006)
+(make line ^p1 50008 ^p2 60008)
+(make line ^p1 0 ^p2 20000)
+(make line ^p1 20000 ^p2 30000)
+(make line ^p1 30000 ^p2 40000)
+(make line ^p1 0 ^p2 2)
+(make line ^p1 2 ^p2 3)
+(make line ^p1 3 ^p2 4)
+(make line ^p1 4 ^p2 40004)
+(make line ^p1 40004 ^p2 40000)
+(make line ^p1 40000 ^p2 50001)
+(make line ^p1 50001 ^p2 50002)
+(make line ^p1 50002 ^p2 50003)
+(make line ^p1 50003 ^p2 50005)
+(make line ^p1 50005 ^p2 40004)
+(make line ^p1 50005 ^p2 30005)
+(make line ^p1 30005 ^p2 20005)
+(make line ^p1 20005 ^p2 10005)
+(make line ^p1 10005 ^p2 4)
+(make line ^p1 60000 ^p2 80000)
+(make line ^p1 80000 ^p2 90000)
+(make line ^p1 90000 ^p2 100000)
+(make line ^p1 60000 ^p2 60002)
+(make line ^p1 60002 ^p2 60003)
+(make line ^p1 60003 ^p2 60004)
+(make line ^p1 60004 ^p2 100004)
+(make line ^p1 100004 ^p2 100000)
+(make line ^p1 100000 ^p2 110001)
+(make line ^p1 110001 ^p2 110002)
+(make line ^p1 110002 ^p2 110003)
+(make line ^p1 110003 ^p2 110005)
+(make line ^p1 110005 ^p2 100004)
+(make line ^p1 110005 ^p2 90005)
+(make line ^p1 90005 ^p2 80005)
+(make line ^p1 80005 ^p2 70005)
+(make line ^p1 70005 ^p2 60004)
+(make line ^p1 6 ^p2 20006)
+(make line ^p1 20006 ^p2 30006)
+(make line ^p1 30006 ^p2 40006)
+(make line ^p1 6 ^p2 8)
+(make line ^p1 8 ^p2 9)
+(make line ^p1 9 ^p2 10)
+(make line ^p1 10 ^p2 40010)
+(make line ^p1 40010 ^p2 40006)
+(make line ^p1 40006 ^p2 50007)
+(make line ^p1 50007 ^p2 50008)
+(make line ^p1 50008 ^p2 50009)
+(make line ^p1 50009 ^p2 50011)
+(make line ^p1 50011 ^p2 40010)
+(make line ^p1 50011 ^p2 30011)
+(make line ^p1 30011 ^p2 20011)
+(make line ^p1 20011 ^p2 10011)
+(make line ^p1 10011 ^p2 10)
+(make line ^p1 60006 ^p2 80006)
+(make line ^p1 80006 ^p2 90006)
+(make line ^p1 90006 ^p2 100006)
+(make line ^p1 60006 ^p2 60008)
+(make line ^p1 60008 ^p2 60009)
+(make line ^p1 60009 ^p2 60010)
+(make line ^p1 60010 ^p2 100010)
+(make line ^p1 100010 ^p2 100006)
+(make line ^p1 100006 ^p2 110007)
+(make line ^p1 110007 ^p2 110008)
+(make line ^p1 110008 ^p2 110009)
+(make line ^p1 110009 ^p2 110011)
+(make line ^p1 110011 ^p2 100010)
+(make line ^p1 110011 ^p2 90011)
+(make line ^p1 90011 ^p2 80011)
+(make line ^p1 80011 ^p2 70011)
+(make line ^p1 70011 ^p2 60010)
+(make line ^p1 170003 ^p2 180003)
+(make line ^p1 150005 ^p2 150006)
+(make line ^p1 200005 ^p2 200006)
+(make line ^p1 170008 ^p2 180008)
+(make line ^p1 120000 ^p2 140000)
+(make line ^p1 140000 ^p2 150000)
+(make line ^p1 150000 ^p2 160000)
+(make line ^p1 120000 ^p2 120002)
+(make line ^p1 120002 ^p2 120003)
+(make line ^p1 120003 ^p2 120004)
+(make line ^p1 120004 ^p2 160004)
+(make line ^p1 160004 ^p2 160000)
+(make line ^p1 160000 ^p2 170001)
+(make line ^p1 170001 ^p2 170002)
+(make line ^p1 170002 ^p2 170003)
+(make line ^p1 170003 ^p2 170005)
+(make line ^p1 170005 ^p2 160004)
+(make line ^p1 170005 ^p2 150005)
+(make line ^p1 150005 ^p2 140005)
+(make line ^p1 140005 ^p2 130005)
+(make line ^p1 130005 ^p2 120004)
+(make line ^p1 180000 ^p2 200000)
+(make line ^p1 200000 ^p2 210000)
+(make line ^p1 210000 ^p2 220000)
+(make line ^p1 180000 ^p2 180002)
+(make line ^p1 180002 ^p2 180003)
+(make line ^p1 180003 ^p2 180004)
+(make line ^p1 180004 ^p2 220004)
+(make line ^p1 220004 ^p2 220000)
+(make line ^p1 220000 ^p2 230001)
+(make line ^p1 230001 ^p2 230002)
+(make line ^p1 230002 ^p2 230003)
+(make line ^p1 230003 ^p2 230005)
+(make line ^p1 230005 ^p2 220004)
+(make line ^p1 230005 ^p2 210005)
+(make line ^p1 210005 ^p2 200005)
+(make line ^p1 200005 ^p2 190005)
+(make line ^p1 190005 ^p2 180004)
+(make line ^p1 120006 ^p2 140006)
+(make line ^p1 140006 ^p2 150006)
+(make line ^p1 150006 ^p2 160006)
+(make line ^p1 120006 ^p2 120008)
+(make line ^p1 120008 ^p2 120009)
+(make line ^p1 120009 ^p2 120010)
+(make line ^p1 120010 ^p2 160010)
+(make line ^p1 160010 ^p2 160006)
+(make line ^p1 160006 ^p2 170007)
+(make line ^p1 170007 ^p2 170008)
+(make line ^p1 170008 ^p2 170009)
+(make line ^p1 170009 ^p2 170011)
+(make line ^p1 170011 ^p2 160010)
+(make line ^p1 170011 ^p2 150011)
+(make line ^p1 150011 ^p2 140011)
+(make line ^p1 140011 ^p2 130011)
+(make line ^p1 130011 ^p2 120010)
+(make line ^p1 180006 ^p2 200006)
+(make line ^p1 200006 ^p2 210006)
+(make line ^p1 210006 ^p2 220006)
+(make line ^p1 180006 ^p2 180008)
+(make line ^p1 180008 ^p2 180009)
+(make line ^p1 180009 ^p2 180010)
+(make line ^p1 180010 ^p2 220010)
+(make line ^p1 220010 ^p2 220006)
+(make line ^p1 220006 ^p2 230007)
+(make line ^p1 230007 ^p2 230008)
+(make line ^p1 230008 ^p2 230009)
+(make line ^p1 230009 ^p2 230011)
+(make line ^p1 230011 ^p2 220010)
+(make line ^p1 230011 ^p2 210011)
+(make line ^p1 210011 ^p2 200011)
+(make line ^p1 200011 ^p2 190011)
+(make line ^p1 190011 ^p2 180010)
+(make line ^p1 110003 ^p2 120003)
+(make line ^p1 90005 ^p2 90006)
+(make line ^p1 140005 ^p2 140006)
+(make line ^p1 110008 ^p2 120008)
+(make line ^p1 290003 ^p2 300003)
+(make line ^p1 270005 ^p2 270006)
+(make line ^p1 320005 ^p2 320006)
+(make line ^p1 290008 ^p2 300008)
+(make line ^p1 240000 ^p2 260000)
+(make line ^p1 260000 ^p2 270000)
+(make line ^p1 270000 ^p2 280000)
+(make line ^p1 240000 ^p2 240002)
+(make line ^p1 240002 ^p2 240003)
+(make line ^p1 240003 ^p2 240004)
+(make line ^p1 240004 ^p2 280004)
+(make line ^p1 280004 ^p2 280000)
+(make line ^p1 280000 ^p2 290001)
+(make line ^p1 290001 ^p2 290002)
+(make line ^p1 290002 ^p2 290003)
+(make line ^p1 290003 ^p2 290005)
+(make line ^p1 290005 ^p2 280004)
+(make line ^p1 290005 ^p2 270005)
+(make line ^p1 270005 ^p2 260005)
+(make line ^p1 260005 ^p2 250005)
+(make line ^p1 250005 ^p2 240004)
+(make line ^p1 300000 ^p2 320000)
+(make line ^p1 320000 ^p2 330000)
+(make line ^p1 330000 ^p2 340000)
+(make line ^p1 300000 ^p2 300002)
+(make line ^p1 300002 ^p2 300003)
+(make line ^p1 300003 ^p2 300004)
+(make line ^p1 300004 ^p2 340004)
+(make line ^p1 340004 ^p2 340000)
+(make line ^p1 340000 ^p2 350001)
+(make line ^p1 350001 ^p2 350002)
+(make line ^p1 350002 ^p2 350003)
+(make line ^p1 350003 ^p2 350005)
+(make line ^p1 350005 ^p2 340004)
+(make line ^p1 350005 ^p2 330005)
+(make line ^p1 330005 ^p2 320005)
+(make line ^p1 320005 ^p2 310005)
+(make line ^p1 310005 ^p2 300004)
+(make line ^p1 240006 ^p2 260006)
+(make line ^p1 260006 ^p2 270006)
+(make line ^p1 270006 ^p2 280006)
+(make line ^p1 240006 ^p2 240008)
+(make line ^p1 240008 ^p2 240009)
+(make line ^p1 240009 ^p2 240010)
+(make line ^p1 240010 ^p2 280010)
+(make line ^p1 280010 ^p2 280006)
+(make line ^p1 280006 ^p2 290007)
+(make line ^p1 290007 ^p2 290008)
+(make line ^p1 290008 ^p2 290009)
+(make line ^p1 290009 ^p2 290011)
+(make line ^p1 290011 ^p2 280010)
+(make line ^p1 290011 ^p2 270011)
+(make line ^p1 270011 ^p2 260011)
+(make line ^p1 260011 ^p2 250011)
+(make line ^p1 250011 ^p2 240010)
+(make line ^p1 300006 ^p2 320006)
+(make line ^p1 320006 ^p2 330006)
+(make line ^p1 330006 ^p2 340006)
+(make line ^p1 300006 ^p2 300008)
+(make line ^p1 300008 ^p2 300009)
+(make line ^p1 300009 ^p2 300010)
+(make line ^p1 300010 ^p2 340010)
+(make line ^p1 340010 ^p2 340006)
+(make line ^p1 340006 ^p2 350007)
+(make line ^p1 350007 ^p2 350008)
+(make line ^p1 350008 ^p2 350009)
+(make line ^p1 350009 ^p2 350011)
+(make line ^p1 350011 ^p2 340010)
+(make line ^p1 350011 ^p2 330011)
+(make line ^p1 330011 ^p2 320011)
+(make line ^p1 320011 ^p2 310011)
+(make line ^p1 310011 ^p2 300010)
+(make line ^p1 230003 ^p2 240003)
+(make line ^p1 210005 ^p2 210006)
+(make line ^p1 260005 ^p2 260006)
+(make line ^p1 230008 ^p2 240008)
+(make line ^p1 410003 ^p2 420003)
+(make line ^p1 390005 ^p2 390006)
+(make line ^p1 440005 ^p2 440006)
+(make line ^p1 410008 ^p2 420008)
+(make line ^p1 360000 ^p2 380000)
+(make line ^p1 380000 ^p2 390000)
+(make line ^p1 390000 ^p2 400000)
+(make line ^p1 360000 ^p2 360002)
+(make line ^p1 360002 ^p2 360003)
+(make line ^p1 360003 ^p2 360004)
+(make line ^p1 360004 ^p2 400004)
+(make line ^p1 400004 ^p2 400000)
+(make line ^p1 400000 ^p2 410001)
+(make line ^p1 410001 ^p2 410002)
+(make line ^p1 410002 ^p2 410003)
+(make line ^p1 410003 ^p2 410005)
+(make line ^p1 410005 ^p2 400004)
+(make line ^p1 410005 ^p2 390005)
+(make line ^p1 390005 ^p2 380005)
+(make line ^p1 380005 ^p2 370005)
+(make line ^p1 370005 ^p2 360004)
+(make line ^p1 420000 ^p2 440000)
+(make line ^p1 440000 ^p2 450000)
+(make line ^p1 450000 ^p2 460000)
+(make line ^p1 420000 ^p2 420002)
+(make line ^p1 420002 ^p2 420003)
+(make line ^p1 420003 ^p2 420004)
+(make line ^p1 420004 ^p2 460004)
+(make line ^p1 460004 ^p2 460000)
+(make line ^p1 460000 ^p2 470001)
+(make line ^p1 470001 ^p2 470002)
+(make line ^p1 470002 ^p2 470003)
+(make line ^p1 470003 ^p2 470005)
+(make line ^p1 470005 ^p2 460004)
+(make line ^p1 470005 ^p2 450005)
+(make line ^p1 450005 ^p2 440005)
+(make line ^p1 440005 ^p2 430005)
+(make line ^p1 430005 ^p2 420004)
+(make line ^p1 360006 ^p2 380006)
+(make line ^p1 380006 ^p2 390006)
+(make line ^p1 390006 ^p2 400006)
+(make line ^p1 360006 ^p2 360008)
+(make line ^p1 360008 ^p2 360009)
+(make line ^p1 360009 ^p2 360010)
+(make line ^p1 360010 ^p2 400010)
+(make line ^p1 400010 ^p2 400006)
+(make line ^p1 400006 ^p2 410007)
+(make line ^p1 410007 ^p2 410008)
+(make line ^p1 410008 ^p2 410009)
+(make line ^p1 410009 ^p2 410011)
+(make line ^p1 410011 ^p2 400010)
+(make line ^p1 410011 ^p2 390011)
+(make line ^p1 390011 ^p2 380011)
+(make line ^p1 380011 ^p2 370011)
+(make line ^p1 370011 ^p2 360010)
+(make line ^p1 420006 ^p2 440006)
+(make line ^p1 440006 ^p2 450006)
+(make line ^p1 450006 ^p2 460006)
+(make line ^p1 420006 ^p2 420008)
+(make line ^p1 420008 ^p2 420009)
+(make line ^p1 420009 ^p2 420010)
+(make line ^p1 420010 ^p2 460010)
+(make line ^p1 460010 ^p2 460006)
+(make line ^p1 460006 ^p2 470007)
+(make line ^p1 470007 ^p2 470008)
+(make line ^p1 470008 ^p2 470009)
+(make line ^p1 470009 ^p2 470011)
+(make line ^p1 470011 ^p2 460010)
+(make line ^p1 470011 ^p2 450011)
+(make line ^p1 450011 ^p2 440011)
+(make line ^p1 440011 ^p2 430011)
+(make line ^p1 430011 ^p2 420010)
+(make line ^p1 350003 ^p2 360003)
+(make line ^p1 330005 ^p2 330006)
+(make line ^p1 380005 ^p2 380006)
+(make line ^p1 350008 ^p2 360008)
+(make line ^p1 530003 ^p2 540003)
+(make line ^p1 510005 ^p2 510006)
+(make line ^p1 560005 ^p2 560006)
+(make line ^p1 530008 ^p2 540008)
+(make line ^p1 480000 ^p2 500000)
+(make line ^p1 500000 ^p2 510000)
+(make line ^p1 510000 ^p2 520000)
+(make line ^p1 480000 ^p2 480002)
+(make line ^p1 480002 ^p2 480003)
+(make line ^p1 480003 ^p2 480004)
+(make line ^p1 480004 ^p2 520004)
+(make line ^p1 520004 ^p2 520000)
+(make line ^p1 520000 ^p2 530001)
+(make line ^p1 530001 ^p2 530002)
+(make line ^p1 530002 ^p2 530003)
+(make line ^p1 530003 ^p2 530005)
+(make line ^p1 530005 ^p2 520004)
+(make line ^p1 530005 ^p2 510005)
+(make line ^p1 510005 ^p2 500005)
+(make line ^p1 500005 ^p2 490005)
+(make line ^p1 490005 ^p2 480004)
+(make line ^p1 540000 ^p2 560000)
+(make line ^p1 560000 ^p2 570000)
+(make line ^p1 570000 ^p2 580000)
+(make line ^p1 540000 ^p2 540002)
+(make line ^p1 540002 ^p2 540003)
+(make line ^p1 540003 ^p2 540004)
+(make line ^p1 540004 ^p2 580004)
+(make line ^p1 580004 ^p2 580000)
+(make line ^p1 580000 ^p2 590001)
+(make line ^p1 590001 ^p2 590002)
+(make line ^p1 590002 ^p2 590003)
+(make line ^p1 590003 ^p2 590005)
+(make line ^p1 590005 ^p2 580004)
+(make line ^p1 590005 ^p2 570005)
+(make line ^p1 570005 ^p2 560005)
+(make line ^p1 560005 ^p2 550005)
+(make line ^p1 550005 ^p2 540004)
+(make line ^p1 480006 ^p2 500006)
+(make line ^p1 500006 ^p2 510006)
+(make line ^p1 510006 ^p2 520006)
+(make line ^p1 480006 ^p2 480008)
+(make line ^p1 480008 ^p2 480009)
+(make line ^p1 480009 ^p2 480010)
+(make line ^p1 480010 ^p2 520010)
+(make line ^p1 520010 ^p2 520006)
+(make line ^p1 520006 ^p2 530007)
+(make line ^p1 530007 ^p2 530008)
+(make line ^p1 530008 ^p2 530009)
+(make line ^p1 530009 ^p2 530011)
+(make line ^p1 530011 ^p2 520010)
+(make line ^p1 530011 ^p2 510011)
+(make line ^p1 510011 ^p2 500011)
+(make line ^p1 500011 ^p2 490011)
+(make line ^p1 490011 ^p2 480010)
+(make line ^p1 540006 ^p2 560006)
+(make line ^p1 560006 ^p2 570006)
+(make line ^p1 570006 ^p2 580006)
+(make line ^p1 540006 ^p2 540008)
+(make line ^p1 540008 ^p2 540009)
+(make line ^p1 540009 ^p2 540010)
+(make line ^p1 540010 ^p2 580010)
+(make line ^p1 580010 ^p2 580006)
+(make line ^p1 580006 ^p2 590007)
+(make line ^p1 590007 ^p2 590008)
+(make line ^p1 590008 ^p2 590009)
+(make line ^p1 590009 ^p2 590011)
+(make line ^p1 590011 ^p2 580010)
+(make line ^p1 590011 ^p2 570011)
+(make line ^p1 570011 ^p2 560011)
+(make line ^p1 560011 ^p2 550011)
+(make line ^p1 550011 ^p2 540010)
+(make line ^p1 470003 ^p2 480003)
+(make line ^p1 450005 ^p2 450006)
+(make line ^p1 500005 ^p2 500006)
+(make line ^p1 470008 ^p2 480008)
+(make line ^p1 650003 ^p2 660003)
+(make line ^p1 630005 ^p2 630006)
+(make line ^p1 680005 ^p2 680006)
+(make line ^p1 650008 ^p2 660008)
+(make line ^p1 600000 ^p2 620000)
+(make line ^p1 620000 ^p2 630000)
+(make line ^p1 630000 ^p2 640000)
+(make line ^p1 600000 ^p2 600002)
+(make line ^p1 600002 ^p2 600003)
+(make line ^p1 600003 ^p2 600004)
+(make line ^p1 600004 ^p2 640004)
+(make line ^p1 640004 ^p2 640000)
+(make line ^p1 640000 ^p2 650001)
+(make line ^p1 650001 ^p2 650002)
+(make line ^p1 650002 ^p2 650003)
+(make line ^p1 650003 ^p2 650005)
+(make line ^p1 650005 ^p2 640004)
+(make line ^p1 650005 ^p2 630005)
+(make line ^p1 630005 ^p2 620005)
+(make line ^p1 620005 ^p2 610005)
+(make line ^p1 610005 ^p2 600004)
+(make line ^p1 660000 ^p2 680000)
+(make line ^p1 680000 ^p2 690000)
+(make line ^p1 690000 ^p2 700000)
+(make line ^p1 660000 ^p2 660002)
+(make line ^p1 660002 ^p2 660003)
+(make line ^p1 660003 ^p2 660004)
+(make line ^p1 660004 ^p2 700004)
+(make line ^p1 700004 ^p2 700000)
+(make line ^p1 700000 ^p2 710001)
+(make line ^p1 710001 ^p2 710002)
+(make line ^p1 710002 ^p2 710003)
+(make line ^p1 710003 ^p2 710005)
+(make line ^p1 710005 ^p2 700004)
+(make line ^p1 710005 ^p2 690005)
+(make line ^p1 690005 ^p2 680005)
+(make line ^p1 680005 ^p2 670005)
+(make line ^p1 670005 ^p2 660004)
+(make line ^p1 600006 ^p2 620006)
+(make line ^p1 620006 ^p2 630006)
+(make line ^p1 630006 ^p2 640006)
+(make line ^p1 600006 ^p2 600008)
+(make line ^p1 600008 ^p2 600009)
+(make line ^p1 600009 ^p2 600010)
+(make line ^p1 600010 ^p2 640010)
+(make line ^p1 640010 ^p2 640006)
+(make line ^p1 640006 ^p2 650007)
+(make line ^p1 650007 ^p2 650008)
+(make line ^p1 650008 ^p2 650009)
+(make line ^p1 650009 ^p2 650011)
+(make line ^p1 650011 ^p2 640010)
+(make line ^p1 650011 ^p2 630011)
+(make line ^p1 630011 ^p2 620011)
+(make line ^p1 620011 ^p2 610011)
+(make line ^p1 610011 ^p2 600010)
+(make line ^p1 660006 ^p2 680006)
+(make line ^p1 680006 ^p2 690006)
+(make line ^p1 690006 ^p2 700006)
+(make line ^p1 660006 ^p2 660008)
+(make line ^p1 660008 ^p2 660009)
+(make line ^p1 660009 ^p2 660010)
+(make line ^p1 660010 ^p2 700010)
+(make line ^p1 700010 ^p2 700006)
+(make line ^p1 700006 ^p2 710007)
+(make line ^p1 710007 ^p2 710008)
+(make line ^p1 710008 ^p2 710009)
+(make line ^p1 710009 ^p2 710011)
+(make line ^p1 710011 ^p2 700010)
+(make line ^p1 710011 ^p2 690011)
+(make line ^p1 690011 ^p2 680011)
+(make line ^p1 680011 ^p2 670011)
+(make line ^p1 670011 ^p2 660010)
+(make line ^p1 590003 ^p2 600003)
+(make line ^p1 570005 ^p2 570006)
+(make line ^p1 620005 ^p2 620006)
+(make line ^p1 590008 ^p2 600008)
+(make line ^p1 770003 ^p2 780003)
+(make line ^p1 750005 ^p2 750006)
+(make line ^p1 800005 ^p2 800006)
+(make line ^p1 770008 ^p2 780008)
+(make line ^p1 720000 ^p2 740000)
+(make line ^p1 740000 ^p2 750000)
+(make line ^p1 750000 ^p2 760000)
+(make line ^p1 720000 ^p2 720002)
+(make line ^p1 720002 ^p2 720003)
+(make line ^p1 720003 ^p2 720004)
+(make line ^p1 720004 ^p2 760004)
+(make line ^p1 760004 ^p2 760000)
+(make line ^p1 760000 ^p2 770001)
+(make line ^p1 770001 ^p2 770002)
+(make line ^p1 770002 ^p2 770003)
+(make line ^p1 770003 ^p2 770005)
+(make line ^p1 770005 ^p2 760004)
+(make line ^p1 770005 ^p2 750005)
+(make line ^p1 750005 ^p2 740005)
+(make line ^p1 740005 ^p2 730005)
+(make line ^p1 730005 ^p2 720004)
+(make line ^p1 780000 ^p2 800000)
+(make line ^p1 800000 ^p2 810000)
+(make line ^p1 810000 ^p2 820000)
+(make line ^p1 780000 ^p2 780002)
+(make line ^p1 780002 ^p2 780003)
+(make line ^p1 780003 ^p2 780004)
+(make line ^p1 780004 ^p2 820004)
+(make line ^p1 820004 ^p2 820000)
+(make line ^p1 820000 ^p2 830001)
+(make line ^p1 830001 ^p2 830002)
+(make line ^p1 830002 ^p2 830003)
+(make line ^p1 830003 ^p2 830005)
+(make line ^p1 830005 ^p2 820004)
+(make line ^p1 830005 ^p2 810005)
+(make line ^p1 810005 ^p2 800005)
+(make line ^p1 800005 ^p2 790005)
+(make line ^p1 790005 ^p2 780004)
+(make line ^p1 720006 ^p2 740006)
+(make line ^p1 740006 ^p2 750006)
+(make line ^p1 750006 ^p2 760006)
+(make line ^p1 720006 ^p2 720008)
+(make line ^p1 720008 ^p2 720009)
+(make line ^p1 720009 ^p2 720010)
+(make line ^p1 720010 ^p2 760010)
+(make line ^p1 760010 ^p2 760006)
+(make line ^p1 760006 ^p2 770007)
+(make line ^p1 770007 ^p2 770008)
+(make line ^p1 770008 ^p2 770009)
+(make line ^p1 770009 ^p2 770011)
+(make line ^p1 770011 ^p2 760010)
+(make line ^p1 770011 ^p2 750011)
+(make line ^p1 750011 ^p2 740011)
+(make line ^p1 740011 ^p2 730011)
+(make line ^p1 730011 ^p2 720010)
+(make line ^p1 780006 ^p2 800006)
+(make line ^p1 800006 ^p2 810006)
+(make line ^p1 810006 ^p2 820006)
+(make line ^p1 780006 ^p2 780008)
+(make line ^p1 780008 ^p2 780009)
+(make line ^p1 780009 ^p2 780010)
+(make line ^p1 780010 ^p2 820010)
+(make line ^p1 820010 ^p2 820006)
+(make line ^p1 820006 ^p2 830007)
+(make line ^p1 830007 ^p2 830008)
+(make line ^p1 830008 ^p2 830009)
+(make line ^p1 830009 ^p2 830011)
+(make line ^p1 830011 ^p2 820010)
+(make line ^p1 830011 ^p2 810011)
+(make line ^p1 810011 ^p2 800011)
+(make line ^p1 800011 ^p2 790011)
+(make line ^p1 790011 ^p2 780010)
+(make line ^p1 710003 ^p2 720003)
+(make line ^p1 690005 ^p2 690006)
+(make line ^p1 740005 ^p2 740006)
+(make line ^p1 710008 ^p2 720008)
+(make line ^p1 890003 ^p2 900003)
+(make line ^p1 870005 ^p2 870006)
+(make line ^p1 920005 ^p2 920006)
+(make line ^p1 890008 ^p2 900008)
+(make line ^p1 840000 ^p2 860000)
+(make line ^p1 860000 ^p2 870000)
+(make line ^p1 870000 ^p2 880000)
+(make line ^p1 840000 ^p2 840002)
+(make line ^p1 840002 ^p2 840003)
+(make line ^p1 840003 ^p2 840004)
+(make line ^p1 840004 ^p2 880004)
+(make line ^p1 880004 ^p2 880000)
+(make line ^p1 880000 ^p2 890001)
+(make line ^p1 890001 ^p2 890002)
+(make line ^p1 890002 ^p2 890003)
+(make line ^p1 890003 ^p2 890005)
+(make line ^p1 890005 ^p2 880004)
+(make line ^p1 890005 ^p2 870005)
+(make line ^p1 870005 ^p2 860005)
+(make line ^p1 860005 ^p2 850005)
+(make line ^p1 850005 ^p2 840004)
+(make line ^p1 900000 ^p2 920000)
+(make line ^p1 920000 ^p2 930000)
+(make line ^p1 930000 ^p2 940000)
+(make line ^p1 900000 ^p2 900002)
+(make line ^p1 900002 ^p2 900003)
+(make line ^p1 900003 ^p2 900004)
+(make line ^p1 900004 ^p2 940004)
+(make line ^p1 940004 ^p2 940000)
+(make line ^p1 940000 ^p2 950001)
+(make line ^p1 950001 ^p2 950002)
+(make line ^p1 950002 ^p2 950003)
+(make line ^p1 950003 ^p2 950005)
+(make line ^p1 950005 ^p2 940004)
+(make line ^p1 950005 ^p2 930005)
+(make line ^p1 930005 ^p2 920005)
+(make line ^p1 920005 ^p2 910005)
+(make line ^p1 910005 ^p2 900004)
+(make line ^p1 840006 ^p2 860006)
+(make line ^p1 860006 ^p2 870006)
+(make line ^p1 870006 ^p2 880006)
+(make line ^p1 840006 ^p2 840008)
+(make line ^p1 840008 ^p2 840009)
+(make line ^p1 840009 ^p2 840010)
+(make line ^p1 840010 ^p2 880010)
+(make line ^p1 880010 ^p2 880006)
+(make line ^p1 880006 ^p2 890007)
+(make line ^p1 890007 ^p2 890008)
+(make line ^p1 890008 ^p2 890009)
+(make line ^p1 890009 ^p2 890011)
+(make line ^p1 890011 ^p2 880010)
+(make line ^p1 890011 ^p2 870011)
+(make line ^p1 870011 ^p2 860011)
+(make line ^p1 860011 ^p2 850011)
+(make line ^p1 850011 ^p2 840010)
+(make line ^p1 900006 ^p2 920006)
+(make line ^p1 920006 ^p2 930006)
+(make line ^p1 930006 ^p2 940006)
+(make line ^p1 900006 ^p2 900008)
+(make line ^p1 900008 ^p2 900009)
+(make line ^p1 900009 ^p2 900010)
+(make line ^p1 900010 ^p2 940010)
+(make line ^p1 940010 ^p2 940006)
+(make line ^p1 940006 ^p2 950007)
+(make line ^p1 950007 ^p2 950008)
+(make line ^p1 950008 ^p2 950009)
+(make line ^p1 950009 ^p2 950011)
+(make line ^p1 950011 ^p2 940010)
+(make line ^p1 950011 ^p2 930011)
+(make line ^p1 930011 ^p2 920011)
+(make line ^p1 920011 ^p2 910011)
+(make line ^p1 910011 ^p2 900010)
+(make line ^p1 830003 ^p2 840003)
+(make line ^p1 810005 ^p2 810006)
+(make line ^p1 860005 ^p2 860006)
+(make line ^p1 830008 ^p2 840008)
+(make line ^p1 1010003 ^p2 1020003)
+(make line ^p1 990005 ^p2 990006)
+(make line ^p1 1040005 ^p2 1040006)
+(make line ^p1 1010008 ^p2 1020008)
+(make line ^p1 960000 ^p2 980000)
+(make line ^p1 980000 ^p2 990000)
+(make line ^p1 990000 ^p2 1000000)
+(make line ^p1 960000 ^p2 960002)
+(make line ^p1 960002 ^p2 960003)
+(make line ^p1 960003 ^p2 960004)
+(make line ^p1 960004 ^p2 1000004)
+(make line ^p1 1000004 ^p2 1000000)
+(make line ^p1 1000000 ^p2 1010001)
+(make line ^p1 1010001 ^p2 1010002)
+(make line ^p1 1010002 ^p2 1010003)
+(make line ^p1 1010003 ^p2 1010005)
+(make line ^p1 1010005 ^p2 1000004)
+(make line ^p1 1010005 ^p2 990005)
+(make line ^p1 990005 ^p2 980005)
+(make line ^p1 980005 ^p2 970005)
+(make line ^p1 970005 ^p2 960004)
+(make line ^p1 1020000 ^p2 1040000)
+(make line ^p1 1040000 ^p2 1050000)
+(make line ^p1 1050000 ^p2 1060000)
+(make line ^p1 1020000 ^p2 1020002)
+(make line ^p1 1020002 ^p2 1020003)
+(make line ^p1 1020003 ^p2 1020004)
+(make line ^p1 1020004 ^p2 1060004)
+(make line ^p1 1060004 ^p2 1060000)
+(make line ^p1 1060000 ^p2 1070001)
+(make line ^p1 1070001 ^p2 1070002)
+(make line ^p1 1070002 ^p2 1070003)
+(make line ^p1 1070003 ^p2 1070005)
+(make line ^p1 1070005 ^p2 1060004)
+(make line ^p1 1070005 ^p2 1050005)
+(make line ^p1 1050005 ^p2 1040005)
+(make line ^p1 1040005 ^p2 1030005)
+(make line ^p1 1030005 ^p2 1020004)
+(make line ^p1 960006 ^p2 980006)
+(make line ^p1 980006 ^p2 990006)
+(make line ^p1 990006 ^p2 1000006)
+(make line ^p1 960006 ^p2 960008)
+(make line ^p1 960008 ^p2 960009)
+(make line ^p1 960009 ^p2 960010)
+(make line ^p1 960010 ^p2 1000010)
+(make line ^p1 1000010 ^p2 1000006)
+(make line ^p1 1000006 ^p2 1010007)
+(make line ^p1 1010007 ^p2 1010008)
+(make line ^p1 1010008 ^p2 1010009)
+(make line ^p1 1010009 ^p2 1010011)
+(make line ^p1 1010011 ^p2 1000010)
+(make line ^p1 1010011 ^p2 990011)
+(make line ^p1 990011 ^p2 980011)
+(make line ^p1 980011 ^p2 970011)
+(make line ^p1 970011 ^p2 960010)
+(make line ^p1 1020006 ^p2 1040006)
+(make line ^p1 1040006 ^p2 1050006)
+(make line ^p1 1050006 ^p2 1060006)
+(make line ^p1 1020006 ^p2 1020008)
+(make line ^p1 1020008 ^p2 1020009)
+(make line ^p1 1020009 ^p2 1020010)
+(make line ^p1 1020010 ^p2 1060010)
+(make line ^p1 1060010 ^p2 1060006)
+(make line ^p1 1060006 ^p2 1070007)
+(make line ^p1 1070007 ^p2 1070008)
+(make line ^p1 1070008 ^p2 1070009)
+(make line ^p1 1070009 ^p2 1070011)
+(make line ^p1 1070011 ^p2 1060010)
+(make line ^p1 1070011 ^p2 1050011)
+(make line ^p1 1050011 ^p2 1040011)
+(make line ^p1 1040011 ^p2 1030011)
+(make line ^p1 1030011 ^p2 1020010)
+(make line ^p1 950003 ^p2 960003)
+(make line ^p1 930005 ^p2 930006)
+(make line ^p1 980005 ^p2 980006)
+(make line ^p1 950008 ^p2 960008)
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/examples/conway/conway.properties
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/examples/conway/conway.properties (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/examples/conway/conway.properties 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,24 @@
+app.title=Conway's Game Of Life
+next.generation.label=Next Generation
+start.label=Start
+stop.label=Stop
+clear.label=Clear
+pattern.label=Pattern :
+app.description=<html>\
+Conway's Game Of Life is a cellular automaton originally<br>\
+conceived by John Conway in the early 1970's. This particular<br>\
+implemenation happens to use the Drools Java Rules Engine<br>\
+to impose the "business rules" that constrain the game.<br><br>\
+Select a predefined pattern from the list below or use the mouse<br>\
+to interactively define a starting grid by clicking on cells in<br>\
+the grid to bring them to life.<br><br>\
+Click the "Next Generation" button to iterate through generations<br>\
+one at a time or click the "Start" button to let the system evolve<br>\
+itself.</html>
+
+conway.pattern.classnames= \
+ org.drools.examples.conway.patterns.Border \
+ org.drools.examples.conway.patterns.Hi \
+ org.drools.examples.conway.patterns.Pentadecathalon \
+ org.drools.examples.conway.patterns.Pulsar \
+ org.drools.examples.conway.patterns.SimpleGlider
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/examples/conway/liveCellImage.gif
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/resources/org/drools/examples/conway/liveCellImage.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/benchmark/manners/manners.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/benchmark/manners/manners.drl (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/benchmark/manners/manners.drl 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,114 @@
+package org.drools.benchmark.manners
+
+rule assignFirstSeat
+ when
+ context : Context( state == Context.START_UP )
+ guest : Guest()
+ count : Count()
+ then
+ String guestName = guest.getName();
+
+ Seating seating = new Seating( count.getValue(), 1, true, 1, guestName, 1, guestName);
+ insert( seating );
+
+ Path path = new Path( count.getValue(), 1, guestName );
+ insert( path );
+
+ count.setValue( count.getValue() + 1 );
+ update( count );
+
+ System.out.println( "assign first seat : " + seating + " : " + path );
+
+ context.setState( Context.ASSIGN_SEATS );
+ update( context );
+end
+
+rule findSeating
+ when
+ context : Context( state == Context.ASSIGN_SEATS )
+ $s:Seating( seatingId:id, seatingPid:pid, pathDone == true, seatingRightSeat:rightSeat, seatingRightGuestName:rightGuestName )
+ Guest( name == seatingRightGuestName, rightGuestSex:sex, rightGuestHobby:hobby )
+ Guest( leftGuestName:name , sex != rightGuestSex, hobby == rightGuestHobby )
+
+ count : Count()
+
+ not ( Path( id == seatingId, guestName == leftGuestName) )
+ not ( Chosen( id == seatingId, guestName == leftGuestName, hobby == rightGuestHobby) )
+ then
+ int rightSeat = seatingRightSeat;
+ int seatId = seatingId;
+ int countValue = count.getValue();
+
+ Seating seating = new Seating( countValue, seatId, false, rightSeat, seatingRightGuestName, rightSeat + 1, leftGuestName );
+ insert( seating );
+
+ Path path = new Path( countValue, rightSeat + 1, leftGuestName );
+ insert( path );
+
+ Chosen chosen = new Chosen( seatId, leftGuestName, rightGuestHobby );
+ insert( chosen );
+
+ System.err.println( "find seating : " + seating + " : " + path + " : " + chosen);
+
+ count.setValue( countValue + 1 );
+ update( count );
+
+ context.setState( Context.MAKE_PATH );
+ update( context );
+
+ retract ( $s );
+end
+
+rule makePath
+ when
+ Context( state == Context.MAKE_PATH )
+ Seating( seatingId:id, seatingPid:pid, pathDone == false )
+ Path( id == seatingPid, pathGuestName:guestName, pathSeat:seat )
+ not Path( id == seatingId, guestName == pathGuestName )
+ then
+ insert( new Path( seatingId, pathSeat, pathGuestName ) );
+end
+
+rule pathDone
+ when
+ context : Context( state == Context.MAKE_PATH )
+ seating : Seating( pathDone == false )
+ then
+ seating.setPathDone( true );
+ update( seating );
+
+ context.setState( Context.CHECK_DONE );
+ update( context );
+end
+
+
+rule areWeDone
+ when
+ context : Context( state == Context.CHECK_DONE )
+ LastSeat( lastSeat: seat )
+ Seating( rightSeat == lastSeat )
+ then
+ context.setState(Context.PRINT_RESULTS );
+ update( context );
+end
+
+rule continue
+ when
+ context : Context( state == Context.CHECK_DONE )
+ then
+ context.setState( Context.ASSIGN_SEATS );
+ update( context );
+end
+
+
+rule allDone
+ when
+ context : Context( state == Context.PRINT_RESULTS )
+ then
+ System.out.println( "All Done" );
+end
+
+//query getResults
+// context : Context( state == Context.PRINT_RESULTS )
+//end
+
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/benchmark/waltz/waltz.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/benchmark/waltz/waltz.drl (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/benchmark/waltz/waltz.drl 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,479 @@
+#created on: 25/03/2006
+package benchmarks.waltz
+
+import org.drools.benchmark.waltz.Stage
+import org.drools.benchmark.waltz.Line
+import org.drools.benchmark.waltz.Edge
+import org.drools.benchmark.waltz.Junction
+import org.drools.benchmark.waltz.WaltzUtil
+
+#If the duplicate flag is set, and there is still a line in WM, delete the line
+#and add two edges. One edge runs from p1 to p2 and the other runs from p2 to
+#p1. We then plot the edge.
+rule "reverse edges"
+ when
+ Stage(value == Stage.DUPLICATE)
+ $line : Line ( $p1:p1, $p2:p2 )
+ then
+ System.out.println("Draw "+$p1+" "+$p2);
+ insert( new Edge ( $p1, $p2, false, Edge.NIL, false ) );
+ insert( new Edge ( $p2, $p1, false, Edge.NIL, false ) );
+ retract( $line );
+end
+
+#If the duplicating flag is set, and there are no more lines, then remove the
+#duplicating flag and set the make junctions flag.
+rule "reversing done" salience -10
+ when
+ $stage: Stage ( value == Stage.DUPLICATE )
+ not ( Line() )
+ then
+ $stage.setValue ( Stage.DETECT_JUNCTIONS );
+ update($stage);
+ System.out.println("reversing done");
+end
+
+#If three edges meet at a point and none of them have already been joined in
+#a junction, then make the corresponding type of junction and label the
+#edges joined. This production calls make-3_junction to determine
+#what type of junction it is based on the angles inscribed by the
+#intersecting edges
+rule "make 3 junction" salience 10
+ when
+ Stage ( value == Stage.DETECT_JUNCTIONS )
+ $edge1: Edge( $basePoint:p1, $edge1P2:p2, joined==false )
+ $edge2: Edge( p1==$basePoint, $edge2P2:p2 != $edge1P2, joined == false )
+ $edge3: Edge( p1==$basePoint, $edge3P2:p2 != $edge1P2, p2 != $edge2P2, joined == false )
+ then
+ Junction junction = WaltzUtil.make_3_junction( $basePoint, $edge1P2, $edge2P2, $edge3P2 );
+ System.out.println( junction );
+ insert( junction );
+ $edge1.setJoined(true);
+ $edge2.setJoined(true);
+ $edge3.setJoined(true);
+ update( $edge1 );
+ update( $edge2 );
+ update( $edge3 );
+end
+
+#If two, and only two, edges meet that have not already been joined, then
+#the junction is an "L"
+rule "make L"
+ when
+ Stage ( value == Stage.DETECT_JUNCTIONS )
+ $edge1: Edge( $basePoint:p1, $edge1P2:p2, joined==false )
+ $edge2: Edge( p1==$basePoint, $edge2P2:p2 != $edge1P2, joined == false )
+ not Edge( p1==$basePoint, p2 != $edge1P2, p2 != $edge2P2 )
+ then
+ insert( new Junction($edge1P2, $edge2P2, 0, $basePoint, Junction.L) );
+ $edge1.setJoined(true);
+ $edge2.setJoined(true);
+ update( $edge1 );
+ update( $edge2 );
+ System.out.println("make L");
+end
+
+#If the detect junctions flag is set, and there are no more un_joined edges,
+#set the find_initial_boundary flag
+rule "detecting done" salience -10
+ when
+ $stage : Stage ( value == Stage.DETECT_JUNCTIONS )
+ then
+ $stage.setValue( Stage.FIND_INITIAL_BOUNDARY );
+ update( $stage );
+ System.out.println("detecting done");
+end
+
+#If the initial boundary junction is an L, then we know it's labelling
+rule "initial boundary junction L"
+ when
+ $stage : Stage ( value == Stage.FIND_INITIAL_BOUNDARY )
+ Junction( type == Junction.L, $basePoint:basePoint, $p1:p1, $p2:p2 )
+ $edge1 : Edge ( p1 == $basePoint, p2 == $p1 )
+ $edge2 : Edge ( p1 == $basePoint, p2 == $p2 )
+ not Junction( basePoint > $basePoint )
+ then
+ $edge1.setLabel( Edge.B );
+ $edge2.setLabel( Edge.B );
+ $stage.setValue( Stage.FIND_SECOND_BOUNDARY );
+ update( $edge1 );
+ update( $edge2 );
+ update( $stage );
+ System.out.println("initial boundary junction L");
+end
+
+# Ditto for an arrow
+rule "initial boundary junction arrow"
+ when
+ $stage : Stage ( value == Stage.FIND_INITIAL_BOUNDARY )
+ Junction( type == Junction.ARROW, $basePoint:basePoint, $p1:p1, $p2:p2, $p3:p3 )
+ $edge1 : Edge ( p1 == $basePoint, p2 == $p1 )
+ $edge2 : Edge ( p1 == $basePoint, p2 == $p2 )
+ $edge3 : Edge ( p1 == $basePoint, p2 == $p3 )
+ not Junction( basePoint > $basePoint )
+ then
+ $edge1.setLabel( Edge.B );
+ $edge2.setLabel( Edge.PLUS );
+ $edge3.setLabel( Edge.B );
+ $stage.setValue( Stage.FIND_SECOND_BOUNDARY );
+ update( $edge1 );
+ update( $edge2 );
+ update( $edge3 );
+ update( $stage );
+ System.out.println("initial boundary junction arrow");
+end
+
+# If we have already found the first boundary point, then find the second
+# boundary point, and label it.
+rule "second boundary junction L"
+ when
+ $stage : Stage ( value == Stage.FIND_SECOND_BOUNDARY )
+ Junction( type == Junction.L, $basePoint:basePoint, $p1:p1, $p2:p2 )
+ $edge1 : Edge ( p1 == $basePoint, p2 == $p1 )
+ $edge2 : Edge ( p1 == $basePoint, p2 == $p2 )
+ not Junction( basePoint < $basePoint )
+ then
+ $edge1.setLabel( Edge.B );
+ $edge2.setLabel( Edge.B );
+ $stage.setValue( Stage.LABELING );
+ update( $edge1 );
+ update( $edge2 );
+ update( $stage );
+ System.out.println("second boundary junction L");
+end
+
+# Ditto for arrow
+rule "second boundary junction arrow"
+ when
+ $stage : Stage ( value == Stage.FIND_SECOND_BOUNDARY )
+ Junction( type == Junction.ARROW, $basePoint:basePoint, $p1:p1, $p2:p2, $p3:p3 )
+ $edge1 : Edge ( p1 == $basePoint, p2 == $p1 )
+ $edge2 : Edge ( p1 == $basePoint, p2 == $p2 )
+ $edge3 : Edge ( p1 == $basePoint, p2 == $p3 )
+ not Junction( basePoint < $basePoint )
+ then
+ $edge1.setLabel( Edge.B );
+ $edge2.setLabel( Edge.PLUS );
+ $edge3.setLabel( Edge.B );
+ $stage.setValue( Stage.LABELING );
+ update( $edge1 );
+ update( $edge2 );
+ update( $edge3 );
+ update( $stage );
+ System.out.println("second boundary junction arrow");
+end
+
+# If we have an edge whose label we already know definitely, then
+# label the corresponding edge in the other direction
+rule "match edge"
+ when
+ Stage( value == Stage.LABELING )
+ $edge1: Edge( $p1:p1, $p2:p2, $label:label in ( Edge.PLUS, Edge.MINUS, Edge.B ) )
+ $edge2: Edge( p1 == $p2, p2 == $p1, label == Edge.NIL )
+ then
+ $edge1.setPlotted( true );
+ $edge2.setLabel( $label );
+ $edge2.setPlotted( true );
+ update( $edge1 );
+ update( $edge2 );
+ System.out.println("match edge - Plot "+$label+" "+$p1+" "+$p2);
+end
+
+# The following productions propogate the possible labellings of the edges
+# based on the labellings of edges incident on adjacent junctions. Since
+# from the initial boundary productions, we have determined the labellings of
+# of atleast two junctions, this propogation will label all of the junctions
+# with the possible labellings. The search space is pruned due to filtering,
+# i.e.(not only label a junction in the ways physically possible based on the
+# labellings of adjacent junctions.
+rule "label L"
+ when
+ Stage( value == Stage.LABELING )
+ Junction( type == Junction.L, $basePoint:basePoint )
+ Edge( p1 == $basePoint, $Edge1P2 : p2, label in ( Edge.PLUS, Edge.MINUS ) )
+ $edge: Edge( p1 == $basePoint, p2 != $Edge1P2, label == Edge.NIL )
+ then
+ $edge.setLabel( Edge.B );
+ update( $edge );
+ System.out.println("Label L");
+end
+
+rule "label tee A" salience 5
+ when
+ Stage( value == Stage.LABELING )
+ Junction( type == Junction.TEE, $basePoint:basePoint, $p1:p1, $p2:p2, $p3:p3 )
+ $edge1: Edge( p1 == $basePoint, p2 == $p1, label == Edge.NIL )
+ $edge2: Edge( p1 == $basePoint, p2 == $p3 )
+ then
+ $edge1.setLabel( Edge.B );
+ $edge2.setLabel( Edge.B );
+ update( $edge1 );
+ update( $edge2 );
+ System.out.println("Label tee A");
+end
+
+
+rule "label tee B"
+ when
+ Stage( value == Stage.LABELING )
+ Junction( type == Junction.TEE, $basePoint:basePoint, $p1:p1, $p2:p2, $p3:p3 )
+ $edge1: Edge( p1 == $basePoint, p2 == $p1 )
+ $edge2: Edge( p1 == $basePoint, p2 == $p3, label == Edge.NIL )
+ then
+ $edge1.setLabel( Edge.B );
+ $edge2.setLabel( Edge.B );
+ update( $edge1 );
+ update( $edge2 );
+ System.out.println("Label tee B");
+end
+
+rule "label fork 1"
+ when
+ Stage( value == Stage.LABELING )
+ Junction( type == Junction.FORK, $basePoint:basePoint )
+ Edge( p1 == $basePoint, $p1:p2, label == Edge.PLUS )
+ $edge1: Edge( p1 == $basePoint, $p2:p2 != $p1, label == Edge.NIL )
+ $edge2: Edge( p1 == $basePoint, p2 != $p1, p2 != $p2 )
+ then
+ $edge1.setLabel( Edge.PLUS );
+ $edge2.setLabel( Edge.PLUS );
+ update( $edge1 );
+ update( $edge2 );
+ System.out.println("label fork 1");
+end
+
+rule "label fork 2"
+ when
+ Stage( value == Stage.LABELING )
+ Junction( type == Junction.FORK, $basePoint:basePoint )
+ Edge( p1 == $basePoint, $p1:p2, label == Edge.B )
+ Edge( p1 == $basePoint, $p2:p2 != $p1, label == Edge.MINUS )
+ $edge: Edge( p1 == $basePoint, p2 != $p1, p2 != $p2, label == Edge.NIL )
+ then
+ $edge.setLabel( Edge.B );
+ update( $edge );
+ System.out.println("label fork 2");
+end
+
+rule "label fork 3"
+ when
+ Stage( value == Stage.LABELING )
+ Junction( type == Junction.FORK, $basePoint:basePoint )
+ Edge( p1 == $basePoint, $p1:p2, label == Edge.B )
+ Edge( p1 == $basePoint, $p2:p2 != $p1, label == Edge.B )
+ $edge: Edge( p1 == $basePoint, p2 != $p1, p2 != $p2, label == Edge.NIL )
+ then
+ $edge.setLabel( Edge.MINUS );
+ update( $edge );
+ System.out.println("label fork 3");
+end
+
+rule "label fork 4"
+ when
+ Stage( value == Stage.LABELING )
+ Junction( type == Junction.FORK, $basePoint:basePoint )
+ Edge( p1 == $basePoint, $p1:p2, label == Edge.MINUS )
+ Edge( p1 == $basePoint, $p2:p2 != $p1, label == Edge.MINUS )
+ $edge: Edge( p1 == $basePoint, p2 != $p1, p2 != $p2, label == Edge.NIL )
+ then
+ $edge.setLabel( Edge.MINUS );
+ update( $edge );
+ System.out.println("label fork 4");
+end
+
+rule "label arrow 1A" salience 5
+ when
+ Stage( value == Stage.LABELING )
+ Junction( type == Junction.ARROW, $basePoint:basePoint, $p1:p1, $p2:p2, $p3:p3 )
+ Edge( p1 == $basePoint, p2 == $p1, $label:label in ( Edge.B, Edge.MINUS ) )
+ $edge1: Edge( p1 == $basePoint, p2 == $p2, label == Edge.NIL )
+ $edge2: Edge( p1 == $basePoint, p2 == $p3 )
+ then
+ $edge1.setLabel( Edge.PLUS );
+ $edge2.setLabel( $label );
+ update( $edge1 );
+ update( $edge2 );
+ System.out.println("label arrow 1A");
+end
+
+rule "label arrow 1B"
+ when
+ Stage( value == Stage.LABELING )
+ Junction( type == Junction.ARROW, $basePoint:basePoint, $p1:p1, $p2:p2, $p3:p3 )
+ Edge( p1 == $basePoint, p2 == $p1, $label:label in ( Edge.B, Edge.MINUS ) )
+ $edge1: Edge( p1 == $basePoint, p2 == $p2 )
+ $edge2: Edge( p1 == $basePoint, p2 == $p3, label == Edge.NIL )
+ then
+ $edge1.setLabel( Edge.PLUS );
+ $edge2.setLabel( $label );
+ update( $edge1 );
+ update( $edge2 );
+ System.out.println("label arrow 1B");
+end
+
+rule "label arrow 2A" salience 5
+ when
+ Stage( value == Stage.LABELING )
+ Junction( type == Junction.ARROW, $basePoint:basePoint, $p1:p1, $p2:p2, $p3:p3 )
+ Edge( p1 == $basePoint, p2 == $p3, $label:label in ( Edge.B, Edge.MINUS ) )
+ $edge1: Edge( p1 == $basePoint, p2 == $p2, label == Edge.NIL )
+ $edge2: Edge( p1 == $basePoint, p2 == $p1 )
+ then
+ $edge1.setLabel( Edge.PLUS );
+ $edge2.setLabel( $label );
+ update( $edge1 );
+ update( $edge2 );
+ System.out.println("label arrow 2A");
+end
+
+rule "label arrow 2B"
+ when
+ Stage( value == Stage.LABELING )
+ Junction( type == Junction.ARROW, $basePoint:basePoint, $p1:p1, $p2:p2, $p3:p3 )
+ Edge( p1 == $basePoint, p2 == $p3, $label:label in ( Edge.B, Edge.MINUS ) )
+ $edge1: Edge( p1 == $basePoint, p2 == $p2 )
+ $edge2: Edge( p1 == $basePoint, p2 == $p1, label == Edge.NIL )
+ then
+ $edge1.setLabel( Edge.PLUS );
+ $edge2.setLabel( $label );
+ update( $edge1 );
+ update( $edge2 );
+ System.out.println("label arrow 2B");
+end
+
+rule "label arrow 3A" salience 5
+ when
+ Stage( value == Stage.LABELING )
+ Junction( type == Junction.ARROW, $basePoint:basePoint, $p1:p1, $p2:p2, $p3:p3 )
+ Edge( p1 == $basePoint, p2 == $p1, label == Edge.PLUS )
+ $edge1: Edge( p1 == $basePoint, p2 == $p2, label == Edge.NIL )
+ $edge2: Edge( p1 == $basePoint, p2 == $p3 )
+ then
+ $edge1.setLabel( Edge.MINUS );
+ $edge2.setLabel( Edge.PLUS );
+ update( $edge1 );
+ update( $edge2 );
+ System.out.println("label arrow 3A");
+end
+
+rule "label arrow 3B"
+ when
+ Stage( value == Stage.LABELING )
+ Junction( type == Junction.ARROW, $basePoint:basePoint, $p1:p1, $p2:p2, $p3:p3 )
+ Edge( p1 == $basePoint, p2 == $p1, label == Edge.PLUS )
+ $edge1: Edge( p1 == $basePoint, p2 == $p2 )
+ $edge2: Edge( p1 == $basePoint, p2 == $p3, label == Edge.NIL )
+ then
+ $edge1.setLabel( Edge.MINUS );
+ $edge2.setLabel( Edge.PLUS );
+ update( $edge1 );
+ update( $edge2 );
+ System.out.println("label arrow 3B");
+end
+
+rule "label arrow 4A" salience 5
+ when
+ Stage( value == Stage.LABELING )
+ Junction( type == Junction.ARROW, $basePoint:basePoint, $p1:p1, $p2:p2, $p3:p3 )
+ Edge( p1 == $basePoint, p2 == $p3, label == Edge.PLUS )
+ $edge1: Edge( p1 == $basePoint, p2 == $p2, label == Edge.NIL )
+ $edge2: Edge( p1 == $basePoint, p2 == $p1 )
+ then
+ $edge1.setLabel( Edge.MINUS );
+ $edge2.setLabel( Edge.PLUS );
+ update( $edge1 );
+ update( $edge2 );
+ System.out.println("label arrow 4A");
+end
+
+rule "label arrow 4B"
+ when
+ Stage( value == Stage.LABELING )
+ Junction( type == Junction.ARROW, $basePoint:basePoint, $p1:p1, $p2:p2, $p3:p3 )
+ Edge( p1 == $basePoint, p2 == $p3, label == Edge.PLUS )
+ $edge1: Edge( p1 == $basePoint, p2 == $p2 )
+ $edge2: Edge( p1 == $basePoint, p2 == $p1, label == Edge.NIL )
+ then
+ $edge1.setLabel( Edge.MINUS );
+ $edge2.setLabel( Edge.PLUS );
+ update( $edge1 );
+ update( $edge2 );
+ System.out.println("label arrow 4B");
+end
+
+rule "label arrow 5A" salience 5
+ when
+ Stage( value == Stage.LABELING )
+ Junction( type == Junction.ARROW, $basePoint:basePoint, $p1:p1, $p2:p2, $p3:p3 )
+ Edge( p1 == $basePoint, p2 == $p2, label == Edge.MINUS )
+ $edge1: Edge( p1 == $basePoint, p2 == $p1 )
+ $edge2: Edge( p1 == $basePoint, p2 == $p3, label == Edge.NIL )
+ then
+ $edge1.setLabel( Edge.PLUS );
+ $edge2.setLabel( Edge.PLUS );
+ update( $edge1 );
+ update( $edge2 );
+ System.out.println("label arrow 5A");
+end
+
+rule "label arrow 5B"
+ when
+ Stage( value == Stage.LABELING )
+ Junction( type == Junction.ARROW, $basePoint:basePoint, $p1:p1, $p2:p2, $p3:p3 )
+ Edge( p1 == $basePoint, p2 == $p2, label == Edge.MINUS )
+ $edge1: Edge( p1 == $basePoint, p2 == $p1, label == Edge.NIL )
+ $edge2: Edge( p1 == $basePoint, p2 == $p3 )
+ then
+ $edge1.setLabel( Edge.PLUS );
+ $edge2.setLabel( Edge.PLUS );
+ update( $edge1 );
+ update( $edge2 );
+ System.out.println("label arrow 5B");
+end
+
+# The conflict resolution mechanism will only execute a production if no
+# productions that are more complicated are satisfied. This production is
+# simple, so all of the above dictionary productions will fire before this
+# change of state production
+rule "done labeling" salience -10
+ when
+ $stage: Stage( value == Stage.LABELING )
+ then
+ $stage.setValue( Stage.PLOT_REMAINING_EDGES );
+ update( $stage );
+ System.out.println("done labeling");
+end
+
+# At this point, some labellings may have not been plotted, so plot them
+rule "plot remaining"
+ when
+ Stage( value == Stage.PLOT_REMAINING_EDGES )
+ $edge: Edge( plotted == false, $label:label != Edge.NIL, $p1:p1, $p2:p2 )
+ then
+ System.out.println("Plot "+$label+" "+$p1+" "+$p2);
+ $edge.setPlotted( true );
+ update( $edge );
+end
+
+# If we have been un able to label an edge, assume that it is a boundary.
+# This is a total Kludge, but what the hell. (if we assume only valid drawings
+# will be given for labeling, this assumption generally is true!)
+rule "plot boundaries"
+ when
+ Stage( value == Stage.PLOT_REMAINING_EDGES )
+ $edge: Edge( plotted == false, label == Edge.NIL, $p1:p1, $p2:p2 )
+ then
+ System.out.println("Plot B "+$p1+" "+$p2);
+ $edge.setPlotted( true );
+ update( $edge );
+end
+
+# If there is no more work to do, then we are done and flag it.
+rule "done plotting" salience -10
+ when
+ $stage: Stage( value == Stage.PLOT_REMAINING_EDGES )
+ then
+ $stage.setValue( Stage.DONE );
+ update( $stage );
+ System.out.println("Stage: done");
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/benchmark/waltzdb/waltzdb.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/benchmark/waltzdb/waltzdb.drl (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/benchmark/waltzdb/waltzdb.drl 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,954 @@
+#created on: 02/11/2006
+package org.drools.benchmark.waltzdb
+
+import org.drools.benchmark.waltzdb.Stage;
+import org.drools.benchmark.waltzdb.Line;
+import org.drools.benchmark.waltzdb.Edge;
+import org.drools.benchmark.waltzdb.EdgeLabel;
+import org.drools.benchmark.waltzdb.Junction;
+import org.drools.benchmark.waltzdb.Label;
+import org.drools.benchmark.waltzdb.Illegal;
+/*
+# Reverse the edges
+#(p reverse_edges
+# (stage ^value duplicate)
+# (line ^p1 <p1> ^p2 <p2>)
+# -->
+# (make edge ^p1 <p1> ^p2 <p2> ^joined false)
+# (make edge ^p1 <p2> ^p2 <p1> ^joined false)
+# (remove 2))
+*/
+rule "reverse_edges"
+ when
+ Stage( value == Stage.DUPLICATE )
+ $line : Line( $p1:p1, $p2:p2 )
+ then
+ System.out.println( "Edge " + $p1 + " " + $p2 );
+ System.out.println( "Edge " + $p2 + " " + $p1 );
+ insert( new Edge( $p1, $p2, false ) );
+ insert( new Edge( $p2, $p1, false ) );
+ retract( $line );
+end
+# Reversing is done
+#(p done_reversing
+# (stage ^value duplicate)
+# - (line)
+# -->
+# (modify 1 ^value detect_junctions))
+rule "done_reversing"
+ when
+ $stage : Stage( value == Stage.DUPLICATE )
+ not ( Line( ) )
+ then
+ $stage.setValue( Stage.DETECT_JUNCTIONS );
+ update( $stage );
+ System.out.println( "Stage.DETECT_JUNCTIONS" );
+end
+
+/*
+(p make_3_junction
+ (stage ^value detect_junctions)
+ (edge ^p1 <base_point> ^p2 <p1> ^joined false)
+ (edge ^p1 <base_point> ^p2 {<p2> <> <p1>} ^joined false)
+ (edge ^p1 <base_point> ^p2 {<p3> <> <p1> <> <p2>} ^joined false)
+ -->
+ (make junction
+ ^type 3j
+ ^name (make_3_junction <base_point> <p1> <p2> <p3>)
+ ^base_point <base_point>
+ ^visited no)
+ (modify 2 ^type 3j ^joined true)
+ (modify 3 ^type 3j ^joined true)
+ (modify 4 ^type 3j ^joined true))
+*/
+rule "make_3_junction"
+ when
+ Stage( value == Stage.DETECT_JUNCTIONS )
+ $edge1 : Edge( $basePoint : p1, $p1 : p2, joined == false )
+ $edge2 : Edge( p1 == $basePoint, $p2 : p2 != $p1, joined == false )
+ $edge3 : Edge( p1 == $basePoint, $p3 : p2 != $p1, p2 != $p2, joined == false )
+ then
+ Junction junction = new Junction( $basePoint, "3j", "make_3_junction " + $basePoint + " " + $p1 + " " + " " + $p2 + " " + $p3, "no" );
+ insert( junction );
+ System.out.println( junction.toString( ) );
+ $edge1.setJoined( true );
+ $edge1.setType( "3j" );
+ $edge2.setJoined( true );
+ $edge2.setType( "3j" );
+ $edge3.setJoined( true );
+ $edge3.setType( "3j" );
+ update( $edge1 );
+ update( $edge2 );
+ update( $edge3 );
+end
+/*
+(p make_L
+ (stage ^value detect_junctions)
+ (edge ^p1 <base_point> ^p2 <p2> ^joined false)
+ (edge ^p1 <base_point> ^p2 {<p3> <> <p2>} ^joined false)
+ - (edge ^p1 <base_point> ^p2 {<> <p2> <> <p3>})
+ -->
+ (make junction
+ ^type 2j
+ ^name L
+ ^base_point <base_point>
+ ^p1 <p2>
+ ^p2 <p3>
+ ^visited no)
+ (modify 2 ^type 2j ^joined true)
+ (modify 3 ^type 2j ^joined true))
+
+*/
+rule "make_L"
+ when
+ Stage( value == Stage.DETECT_JUNCTIONS )
+ $edge1 : Edge( $basePoint : p1, $p2 : p2, joined == false )
+ $edge2 : Edge( p1 == $basePoint, $p3 : p2 != $p2, joined == false )
+ not( Edge( p1 == $basePoint, p2 != $p2, p2 != $p3 ) )
+ then
+ Junction junction = new Junction( "2j", "L", $basePoint, $p2, $p3, "no" );
+ insert( junction );
+ System.out.println( junction.toString() );
+ $edge1.setJoined( true );
+ $edge1.setType( "2j" );
+ $edge2.setJoined( true );
+ $edge2.setType( "2j" );
+ update( $edge1 );
+ update( $edge2 );
+end
+
+/*
+(p done_detecting
+ (stage ^value detect_junctions)
+ - (edge ^joined false)
+ -->
+ (modify 1 ^value find_initial_boundary))
+
+*/
+rule "done_detecting"
+ when
+ $stage : Stage( value == Stage.DETECT_JUNCTIONS )
+ not( Edge ( joined == false ) )
+ then
+ $stage.setValue( Stage.FIND_INITIAL_BOUNDARY );
+ update( $stage );
+ System.out.println( "Stage: FIND_INITIAL_BOUNDARY" );
+end
+
+/*
+(p initial_boundary_junction_L
+ (stage ^value find_initial_boundary)
+ (junction ^type 2j ^base_point <bp> ^p1 <p1> ^p2 <p2>)
+ (edge ^p1 <bp> ^p2 <p1>)
+ (edge ^p1 <bp> ^p2 <p2>)
+ -(junction ^base_point > <bp>)
+ -->
+ (modify 2 ^visited yes)
+ (make edge_label ^p1 <bp> ^p2 <p1> ^l_name B ^l_id 1)
+ (make edge_label ^p1 <bp> ^p2 <p2> ^l_name B ^l_id 1)
+ (modify 1 ^value find_second_boundary))
+*/
+rule "initial_boundary_junction_L"
+ when
+ $stage : Stage( value == Stage.FIND_INITIAL_BOUNDARY )
+ $junction : Junction( type == "2j", $basePoint : basePoint, $p1 : p1, $p2 : p2 )
+ Edge( p1 == $basePoint, p2 == $p1 )
+ Edge( p1 == $basePoint, p2 == $p2 )
+ not Junction( type == "2j", basePoint > $basePoint )//type == "2j" not in original
+ then
+ $junction.setVisited( "yes" );
+ update( $junction );
+ insert( new EdgeLabel( $basePoint, $p1, "B", "1" ) );
+ insert( new EdgeLabel( $basePoint, $p2, "B", "1" ) );
+ $stage.setValue( Stage.FIND_SECOND_BOUDARY );
+ update( $stage );
+ System.out.println( "Stage.FIND_SECOND_BOUDARY" );
+end
+/*
+
+(p initial_boundary_junction_arrow
+ (stage ^value find_initial_boundary)
+ (junction ^type 3j ^name arrow ^base_point <bp> ^p1 <p1> ^p2 <p2> ^p3 <p3>)
+ (edge ^p1 <bp> ^p2 <p1>)
+ (edge ^p1 <bp> ^p2 <p2>)
+ (edge ^p1 <bp> ^p2 <p3>)
+ -(junction ^base_point > <bp>)
+ -->
+ (modify 2 ^visited yes)
+ (make edge_label ^p1 <bp> ^p2 <p1> ^l_name B ^l_id 14)
+ (make edge_label ^p1 <bp> ^p2 <p2> ^l_name + ^l_id 14)
+ (make edge_label ^p1 <bp> ^p2 <p3> ^l_name B ^l_id 14)
+ (modify 1 ^value find_second_boundary))
+
+*/
+rule "initial_boundary_junction_arrow"
+ when
+ $stage : Stage( value == Stage.FIND_INITIAL_BOUNDARY )
+ $junction : Junction( type == "3j", name == "arrow", $basePoint : basePoint, $p1 : p1, $p2 : p2, $p3 : p3 )
+ $edge1 : Edge( p1 == $basePoint, p2 == $p1 )
+ $edge2 : Edge( p1 == $basePoint, p2 == $p2 )
+ $edge3 : Edge( p1 == $basePoint, p2 == $p3 ) //@FIXME, is this correct? I changed edge2 to edge3
+ not ( Junction( basePoint > $basePoint ) )
+ then
+ $junction.setVisited( "yes" );
+ update( $junction );
+ insert( new EdgeLabel( $basePoint, $p1, "B", "14" ) );
+ insert( new EdgeLabel( $basePoint, $p2, "+", "14" ) );
+ insert( new EdgeLabel( $basePoint, $p3, "B", "14" ) );
+ $stage.setValue( Stage.FIND_SECOND_BOUDARY );
+ update( $stage );
+ System.out.println( "Stage.FIND_SECOND_BOUDARY" );
+end
+
+/*
+(p second_boundary_junction_L
+ (stage ^value find_second_boundary)
+ (junction ^type 2j ^base_point <bp> ^p1 <p1> ^p2 <p2>)
+ (edge ^p1 <bp> ^p2 <p1>)
+ (edge ^p1 <bp> ^p2 <p2>)
+ -(junction ^base_point < <bp>)
+ -->
+ (modify 2 ^visited yes)
+ (make edge_label ^p1 <bp> ^p2 <p1> ^l_name B ^l_id 1)
+ (make edge_label ^p1 <bp> ^p2 <p2> ^l_name B ^l_id 1)
+ (modify 1 ^value labeling))
+
+
+*/
+rule "second_boundary_junction_L"
+ when
+ $stage : Stage( value == Stage.FIND_SECOND_BOUDARY )
+ $junction : Junction( type == "2j", $basePoint : basePoint, $p1 : p1, $p2 : p2 )
+ Edge( p1 == $basePoint, p2 == $p1)
+ Edge( p1 == $basePoint, p2 == $p2)
+ not (Junction ( basePoint < $basePoint ) )
+ then
+ $junction.setVisited( "yes" );
+ update( $junction );
+ insert( new EdgeLabel( $basePoint, $p1, "B", "1" ) );
+ insert( new EdgeLabel($basePoint, $p2, "B", "1" ) );
+ $stage.setValue( Stage.LABELING );
+ update( $stage );
+ System.out.println( "Stage.LABELING" );
+end
+
+/*
+
+(p second_boundary_junction_arrow
+ (stage ^value find_second_boundary)
+ (junction ^type 3j ^name arrow ^base_point <bp> ^p1 <p1> ^p2 <p2> ^p3 <p3>)
+ (edge ^p1 <bp> ^p2 <p1>)
+ (edge ^p1 <bp> ^p2 <p2>)
+ (edge ^p1 <bp> ^p2 <p3>)
+ -(junction ^base_point < <bp>)
+ -->
+ (modify 2 ^visited yes)
+ (make edge_label ^p1 <bp> ^p2 <p1> ^l_name B ^l_id 14)
+ (make edge_label ^p1 <bp> ^p2 <p2> ^l_name + ^l_id 14)
+ (make edge_label ^p1 <bp> ^p2 <p3> ^l_name B ^l_id 14)
+ (modify 1 ^value labeling))
+
+*/
+rule "second_boundary_junction_arrow"
+ when
+ $stage : Stage( value == Stage.FIND_SECOND_BOUDARY )
+ $junction : Junction( type == "3j", name == "arrow", $basePoint : basePoint, $p1 : p1, $p2 : p2, $p3 : p3 )
+ Edge( p1 == $basePoint, p2 == $p1 )
+ Edge( p1 == $basePoint, p2 == $p2 )
+ Edge( p1 == $basePoint, p2 == $p3 )
+ not ( Junction( basePoint < $basePoint ) )
+ then
+ $junction.setVisited( "yes" );
+ update( $junction );
+ insert( new EdgeLabel( $basePoint, $p1, "B", "14" ) );
+ insert( new EdgeLabel( $basePoint, $p2, "+", "14" ) );
+ insert( new EdgeLabel( $basePoint, $p3, "B", "14" ) );
+ $stage.setValue( Stage.LABELING );
+ update( $stage );
+ System.out.println( "Stage.LABELING" );
+end
+
+/*
+(p start_visit_3_junction
+ (stage ^value labeling)
+ (junction ^base_point <bp> ^type 3j ^p1 <p1> ^p2 <p2> ^p3 <p3> ^visited no)
+ -->
+ (modify 1 ^value visiting_3j)
+ (modify 2 ^visited now))
+
+*/
+rule "start_visit_3_junction"
+ when
+ $stage : Stage( value == Stage.LABELING )
+ $junction : Junction( type == "3j", $basePoint : basePoint, $p1 : p1, $p2 : p2, $p3 : p3, visited == "no" )
+ then
+ $stage.setValue( Stage.VISITING_3J );
+ update( $stage );
+ $junction.setVisited( "now" );
+ update( $junction );
+ System.out.println( "Stage.VISITING_3J" );
+end
+
+/*
+(p visit_3j_0
+ (stage ^value visiting_3j)
+ (junction ^name <n> ^base_point <bp> ^p1 <p1> ^p2 <p2> ^p3 <p3> ^visited now)
+ (label ^name <n> ^id <id> ^n1 <n1> ^n2 <n2> ^n3 <n3>)
+ (edge_label ^p1 <p1> ^p2 <bp> ^l_name <n1>)
+ (edge_label ^p1 <p2> ^p2 <bp> ^l_name <n2>)
+ (edge_label ^p1 <p3> ^p2 <bp> ^l_name <n3>)
+ -(edge_label ^p1 <bp> ^l_id <id>)
+ -->
+ ; (write edge_label <bp> <p1> <n1> <id> (crlf))
+ ; (write edge_label <bp> <p2> <n2> <id> (crlf))
+ ; (write edge_label <bp> <p3> <n3> <id> (crlf))
+ (make edge_label ^p1 <bp> ^p2 <p1> ^l_name <n1> ^l_id <id>)
+ (make edge_label ^p1 <bp> ^p2 <p2> ^l_name <n2> ^l_id <id>)
+ (make edge_label ^p1 <bp> ^p2 <p3> ^l_name <n3> ^l_id <id>))
+
+*/
+rule "visit_3j_0"
+ when
+ Stage( value == Stage.VISITING_3J )
+ Junction( $name : name, $basePoint : basePoint, $p1 : p1, $p2 : p2, $p3 : p3, visited == "now" )
+ Label(name == $name, $id : id, $n1 : n1, $n2 : n2, $n3 : n3 )
+ EdgeLabel( p1 == $p1, p2 == $basePoint, labelName == $n1 )
+ EdgeLabel( p1 == $p2, p2 == $basePoint, labelName == $n2 )
+ EdgeLabel( p1 == $p3, p2 == $basePoint, labelName == $n3 )
+ not ( EdgeLabel( p1 == $basePoint, labelId == $id ) )
+ then
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p1 + " " + $n1 + " " + $id );
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p2 + " " + $n2 + " " + $id );
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p3 + " " + $n3 + " " + $id );
+ insert( new EdgeLabel( $basePoint, $p1, $n1, $id ) );
+ insert( new EdgeLabel( $basePoint, $p2, $n2, $id ) );
+ insert( new EdgeLabel( $basePoint, $p3, $n3, $id ) );
+end
+
+/*
+
+(p visit_3j_1
+ (stage ^value visiting_3j)
+ (junction ^name <n> ^base_point <bp> ^p1 <p1> ^p2 <p2> ^p3 <p3> ^visited now)
+ (label ^name <n> ^id <id> ^n1 <n1> ^n2 <n2> ^n3 <n3>)
+ -(edge_label ^p1 <p1> ^p2 <bp>)
+ (edge_label ^p1 <p2> ^p2 <bp> ^l_name <n2>)
+ (edge_label ^p1 <p3> ^p2 <bp> ^l_name <n3>)
+ -(edge_label ^p1 <bp> ^l_id <id>)
+ -->
+ ; (write edge_label <bp> <p1> <n1> <id> (crlf))
+ ; (write edge_label <bp> <p2> <n2> <id> (crlf))
+ ; (write edge_label <bp> <p3> <n3> <id> (crlf))
+ (make edge_label ^p1 <bp> ^p2 <p1> ^l_name <n1> ^l_id <id>)
+ (make edge_label ^p1 <bp> ^p2 <p2> ^l_name <n2> ^l_id <id>)
+ (make edge_label ^p1 <bp> ^p2 <p3> ^l_name <n3> ^l_id <id>))
+
+*/
+rule "visit_3j_1"
+ when
+ Stage( value == Stage.VISITING_3J )
+ Junction( $name : name, $basePoint : basePoint, $p1 : p1, $p2 : p2, $p3 : p3, visited == "now" )
+ Label( name == $name, $id : id, $n1 : n1, $n2 : n2, $n3 : n3 )
+ not ( EdgeLabel( p1 == $p1, p2 == $basePoint ) )
+ EdgeLabel( p1 == $p2, p2 == $basePoint, labelName == $n2 )
+ EdgeLabel( p1 == $p3, p2 == $basePoint, labelName == $n3 )
+ not ( EdgeLabel( p1 == $basePoint, labelId == $id ) )
+ then
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p1 + " " + $n1 + " " + $id );
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p2 + " " + $n2 + " " + $id );
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p3 + " " + $n3 + " " + $id );
+ insert( new EdgeLabel( $basePoint, $p1, $n1, $id ) );
+ insert( new EdgeLabel( $basePoint, $p2, $n2, $id ) );
+ insert( new EdgeLabel( $basePoint, $p3, $n3, $id ) );
+end
+
+/*
+
+(p visit_3j_2
+ (stage ^value visiting_3j)
+ (junction ^name <n> ^base_point <bp> ^p1 <p1> ^p2 <p2> ^p3 <p3> ^visited now)
+ (label ^name <n> ^id <id> ^n1 <n1> ^n2 <n2> ^n3 <n3>)
+ (edge_label ^p1 <p1> ^p2 <bp> ^l_name <n1>)
+ -(edge_label ^p1 <p2> ^p2 <bp>)
+ (edge_label ^p1 <p3> ^p2 <bp> ^l_name <n3>)
+ -(edge_label ^p1 <bp> ^l_id <id>)
+ -->
+ ; (write edge_label <bp> <p1> <n1> <id> (crlf))
+ ; (write edge_label <bp> <p2> <n2> <id> (crlf))
+ ; (write edge_label <bp> <p3> <n3> <id> (crlf))
+ (make edge_label ^p1 <bp> ^p2 <p1> ^l_name <n1> ^l_id <id>)
+ (make edge_label ^p1 <bp> ^p2 <p2> ^l_name <n2> ^l_id <id>)
+ (make edge_label ^p1 <bp> ^p2 <p3> ^l_name <n3> ^l_id <id>))
+
+*/
+rule "visit_3j_2"
+ when
+ Stage( value == Stage.VISITING_3J )
+ Junction( $name : name, $basePoint : basePoint, $p1 : p1, $p2 : p2, $p3 : p3, visited == "now" )
+ Label( name == $name, $id : id, $n1 : n1, $n2 : n2, $n3 : n3 )
+ EdgeLabel( p1 == $p1, p2 == $basePoint, labelName == $n1 )
+ not ( EdgeLabel( p1 == $p2, p2 == $basePoint ) )
+ EdgeLabel( p1 == $p3, p2 == $basePoint, labelName == $n3 )
+ not ( EdgeLabel( p1 == $basePoint, labelId == $id ) )
+ then
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p1 + " " + $n1 + " " + $id );
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p2 + " " + $n2 + " " + $id );
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p3 + " " + $n3 + " " + $id );
+ insert( new EdgeLabel( $basePoint, $p1, $n1, $id ) );
+ insert( new EdgeLabel( $basePoint, $p2, $n2, $id ) );
+ insert( new EdgeLabel( $basePoint, $p3, $n3, $id ) );
+end
+
+/*
+
+(p visit_3j_3
+ (stage ^value visiting_3j)
+ (junction ^name <n> ^base_point <bp> ^p1 <p1> ^p2 <p2> ^p3 <p3> ^visited now)
+ (label ^name <n> ^id <id> ^n1 <n1> ^n2 <n2> ^n3 <n3>)
+ -(edge_label ^p1 <p1> ^p2 <bp>)
+ -(edge_label ^p1 <p2> ^p2 <bp>)
+ (edge_label ^p1 <p3> ^p2 <bp> ^l_name <n3>)
+ -(edge_label ^p1 <bp> ^l_id <id>)
+ -->
+ ; (write edge_label <bp> <p1> <n1> <id> (crlf))
+ ; (write edge_label <bp> <p2> <n2> <id> (crlf))
+ ; (write edge_label <bp> <p3> <n3> <id> (crlf))
+ (make edge_label ^p1 <bp> ^p2 <p1> ^l_name <n1> ^l_id <id>)
+ (make edge_label ^p1 <bp> ^p2 <p2> ^l_name <n2> ^l_id <id>)
+ (make edge_label ^p1 <bp> ^p2 <p3> ^l_name <n3> ^l_id <id>))
+
+*/
+rule "visit_3j_3"
+ when
+ Stage( value == Stage.VISITING_3J )
+ Junction( $name : name, $basePoint : basePoint, $p1 : p1, $p2 : p2, $p3 : p3, visited == "now" )
+ Label( name == $name, $id : id, $n1 : n1, $n2 : n2, $n3 : n3 )
+ not ( EdgeLabel( p1 == $p1, p2 == $basePoint ) )
+ not ( EdgeLabel( p1 == $p2, p2 == $basePoint ) )
+ EdgeLabel( p1 == $p3, p2 == $basePoint, labelName == $n3 )
+ not ( EdgeLabel( p1 == $basePoint, labelId == $id) )
+ then
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p1 + " " + $n1 + " " + $id );
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p2 + " " + $n2 + " " + $id );
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p3 + " " + $n3 + " " + $id );
+ insert( new EdgeLabel( $basePoint, $p1, $n1, $id ) );
+ insert( new EdgeLabel( $basePoint, $p2, $n2, $id ) );
+ insert( new EdgeLabel( $basePoint, $p3, $n3, $id ) );
+end
+
+/*
+
+(p visit_3j_4
+ (stage ^value visiting_3j)
+ (junction ^name <n> ^base_point <bp> ^p1 <p1> ^p2 <p2> ^p3 <p3> ^visited now)
+ (label ^name <n> ^id <id> ^n1 <n1> ^n2 <n2> ^n3 <n3>)
+ (edge_label ^p1 <p1> ^p2 <bp> ^l_name <n1>)
+ (edge_label ^p1 <p2> ^p2 <bp> ^l_name <n2>)
+ -(edge_label ^p1 <p3> ^p2 <bp>)
+ -(edge_label ^p1 <bp> ^l_id <id>)
+ -->
+ ; (write edge_label <bp> <p1> <n1> <id> (crlf))
+ ; (write edge_label <bp> <p2> <n2> <id> (crlf))
+ ; (write edge_label <bp> <p3> <n3> <id> (crlf))
+ (make edge_label ^p1 <bp> ^p2 <p1> ^l_name <n1> ^l_id <id>)
+ (make edge_label ^p1 <bp> ^p2 <p2> ^l_name <n2> ^l_id <id>)
+ (make edge_label ^p1 <bp> ^p2 <p3> ^l_name <n3> ^l_id <id>))
+
+*/
+rule "visit_3j_4"
+ when
+ Stage( value == Stage.VISITING_3J )
+ Junction( $name : name, $basePoint : basePoint, $p1 : p1, $p2 : p2, $p3 : p3, visited == "now" )
+ Label( name == $name, $id : id, $n1 : n1, $n2 : n2, $n3 : n3 )
+ EdgeLabel( p1 == $p1, p2 == $basePoint, labelName == $n1 )
+ EdgeLabel( p1 == $p2, p2 == $basePoint, labelName == $n2 )
+ not ( EdgeLabel( p1 == $p3, p2 == $basePoint) )
+ not ( EdgeLabel( p1 == $basePoint, labelId == $id) )
+ then
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p1 + " " + $n1 + " " + $id );
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p2 + " " + $n2 + " " + $id );
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p3 + " " + $n3 + " " + $id );
+ insert( new EdgeLabel( $basePoint, $p1, $n1, $id ) );
+ insert( new EdgeLabel( $basePoint, $p2, $n2, $id ) );
+ insert( new EdgeLabel( $basePoint, $p3, $n3, $id ) );
+end
+
+/*
+
+(p visit_3j_5
+ (stage ^value visiting_3j)
+ (junction ^name <n> ^base_point <bp> ^p1 <p1> ^p2 <p2> ^p3 <p3> ^visited now)
+ (label ^name <n> ^id <id> ^n1 <n1> ^n2 <n2> ^n3 <n3>)
+ -(edge_label ^p1 <p1> ^p2 <bp>)
+ (edge_label ^p1 <p2> ^p2 <bp> ^l_name <n2>)
+ -(edge_label ^p1 <p3> ^p2 <bp>)
+ -(edge_label ^p1 <bp> ^l_id <id>)
+ -->
+ ; (write edge_label <bp> <p1> <n1> <id> (crlf))
+ ; (write edge_label <bp> <p2> <n2> <id> (crlf))
+ ; (write edge_label <bp> <p3> <n3> <id> (crlf))
+ (make edge_label ^p1 <bp> ^p2 <p1> ^l_name <n1> ^l_id <id>)
+ (make edge_label ^p1 <bp> ^p2 <p2> ^l_name <n2> ^l_id <id>)
+ (make edge_label ^p1 <bp> ^p2 <p3> ^l_name <n3> ^l_id <id>))
+
+*/
+rule "visit_3j_5"
+ when
+ Stage( value == Stage.VISITING_3J )
+ Junction( $name : name, $basePoint : basePoint, $p1 : p1, $p2 : p2, $p3 : p3, visited == "now" )
+ Label(name == $name, $id : id, $n1 : n1, $n2 : n2, $n3 : n3 )
+ not ( EdgeLabel( p1 == $p1, p2 == $basePoint ) )
+ EdgeLabel( p1 == $p2, p2 == $basePoint, labelName == $n2 )
+ not ( EdgeLabel( p1 == $p3, p2 == $basePoint ) )
+ not ( EdgeLabel( p1 == $basePoint, labelId == $id ) )
+ then
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p1 + " " + $n1 + " " + $id );
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p2 + " " + $n2 + " " + $id );
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p3 + " " + $n3 + " " + $id );
+ insert( new EdgeLabel( $basePoint, $p1, $n1, $id ) );
+ insert( new EdgeLabel( $basePoint, $p2, $n2, $id ) );
+ insert( new EdgeLabel( $basePoint, $p3, $n3, $id ) );
+end
+
+/*
+
+(p visit_3j_6
+ (stage ^value visiting_3j)
+ (junction ^name <n> ^base_point <bp> ^p1 <p1> ^p2 <p2> ^p3 <p3> ^visited now)
+ (label ^name <n> ^id <id> ^n1 <n1> ^n2 <n2> ^n3 <n3>)
+ (edge_label ^p1 <p1> ^p2 <bp> ^l_name <n1>)
+ -(edge_label ^p1 <p2> ^p2 <bp>)
+ -(edge_label ^p1 <p3> ^p2 <bp>)
+ -(edge_label ^p1 <bp> ^l_id <id>)
+ -->
+ ; (write edge_label <bp> <p1> <n1> <id> (crlf))
+ ; (write edge_label <bp> <p2> <n2> <id> (crlf))
+ ; (write edge_label <bp> <p3> <n3> <id> (crlf))
+ (make edge_label ^p1 <bp> ^p2 <p1> ^l_name <n1> ^l_id <id>)
+ (make edge_label ^p1 <bp> ^p2 <p2> ^l_name <n2> ^l_id <id>)
+ (make edge_label ^p1 <bp> ^p2 <p3> ^l_name <n3> ^l_id <id>))
+
+*/
+rule "visit_3j_6"
+ when
+ Stage( value == Stage.VISITING_3J )
+ Junction( $name : name, $basePoint : basePoint, $p1 : p1, $p2 : p2, $p3 : p3, visited == "now" )
+ Label( name == $name, $id : id, $n1 : n1, $n2 : n2, $n3 : n3 )
+ EdgeLabel( p1 == $p1, p2 == $basePoint, labelName == $n1 )
+ not ( EdgeLabel( p1 == $p2, p2 == $basePoint ) )
+ not ( EdgeLabel( p1 == $p3, p2 == $basePoint ) )
+ not ( EdgeLabel( p1 == $basePoint, labelId == $id ) )
+ then
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p1 + " " + $n1 + " " + $id );
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p2 + " " + $n2 + " " + $id );
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p3 + " " + $n3 + " " + $id );
+ insert( new EdgeLabel( $basePoint, $p1, $n1, $id ) );
+ insert( new EdgeLabel( $basePoint, $p2, $n2, $id ) );
+ insert( new EdgeLabel( $basePoint, $p3, $n3, $id ) );
+end
+
+/*
+
+(p visit_3j_7
+ (stage ^value visiting_3j)
+ (junction ^name <n> ^base_point <bp> ^p1 <p1> ^p2 <p2> ^p3 <p3> ^visited now)
+ (label ^name <n> ^id <id> ^n1 <n1> ^n2 <n2> ^n3 <n3>)
+ -(edge_label ^p1 <p1> ^p2 <bp>)
+ -(edge_label ^p1 <p2> ^p2 <bp>)
+ -(edge_label ^p1 <p3> ^p2 <bp>)
+ -(edge_label ^p1 <bp> ^l_id <id>)
+ -->
+ ; (write edge_label <bp> <p1> <n1> <id> (crlf))
+ ; (write edge_label <bp> <p2> <n2> <id> (crlf))
+ ; (write edge_label <bp> <p3> <n3> <id> (crlf))
+ (make edge_label ^p1 <bp> ^p2 <p1> ^l_name <n1> ^l_id <id>)
+ (make edge_label ^p1 <bp> ^p2 <p2> ^l_name <n2> ^l_id <id>)
+ (make edge_label ^p1 <bp> ^p2 <p3> ^l_name <n3> ^l_id <id>))
+
+*/
+rule "visit_3j_7"
+ when
+ Stage( value == Stage.VISITING_3J )
+ Junction( $name : name, $basePoint : basePoint, $p1 : p1, $p2 : p2, $p3 : p3, visited == "now" )
+ Label( name == $name, $id : id, $n1 : n1, $n2 : n2, $n3 : n3 )
+ not ( EdgeLabel( p1 == $p1, p2 == $basePoint ) )
+ not ( EdgeLabel( p1 == $p2, p2 == $basePoint ) )
+ not ( EdgeLabel( p1 == $p3, p2 == $basePoint ) )
+ not ( EdgeLabel( p1 == $basePoint, labelId == $id ) )
+ then
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p1 + " " + $n1 + " " + $id );
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p2 + " " + $n2 + " " + $id );
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p3 + " " + $n3 + " " + $id );
+ insert( new EdgeLabel( $basePoint, $p1, $n1, $id ) );
+ insert( new EdgeLabel( $basePoint, $p2, $n2, $id ) );
+ insert( new EdgeLabel( $basePoint, $p3, $n3, $id ) );
+end
+
+/*
+
+(p start_visit_2_junction
+ (stage ^value labeling)
+ (junction ^base_point <bp> ^type 2j ^p1 <p1> ^p2 <p2> ^visited no)
+ -->
+ (modify 1 ^value visiting_2j)
+ (modify 2 ^visited now))
+
+*/
+rule "start_visit_2_junction"
+ when
+ $stage : Stage( value == Stage.LABELING )
+ $junction : Junction( $basePoint : basePoint, type == "2j", $p1 : p1, $p2 : p2, visited == "no" )
+ then
+ $stage.setValue( Stage.VISITING_2J );
+ update( $stage );
+ System.out.println( "Stage.VISITING_2J" );
+ $junction.setVisited( "now" );
+ update( $junction );
+end
+
+/*
+
+(p visit_2j_0
+ (stage ^value visiting_2j)
+ (junction ^name <n> ^base_point <bp> ^p1 <p1> ^p2 <p2> ^visited now)
+ (label ^name <n> ^id <id> ^n1 <n1> ^n2 <n2>)
+ (edge_label ^p1 <p1> ^p2 <bp> ^l_name <n1>)
+ (edge_label ^p1 <p2> ^p2 <bp> ^l_name <n2>)
+ -(edge_label ^p1 <bp> ^l_id <id>)
+ -->
+ ; (write edge_label <bp> <p1> <n1> <id> (crlf))
+ ; (write edge_label <bp> <p2> <n2> <id> (crlf))
+ ; (write edge_label <bp> <p3> <n3> <id> (crlf))
+ (make edge_label ^p1 <bp> ^p2 <p1> ^l_name <n1> ^l_id <id>)
+ (make edge_label ^p1 <bp> ^p2 <p2> ^l_name <n2> ^l_id <id>))
+
+*/
+rule "visit_2j_0"
+ when
+ Stage( value == Stage.VISITING_2J )
+ Junction( $name : name, $basePoint : basePoint, $p1 : p1, $p2 : p2, visited == "now" )
+ Label(name == $name, $id : id, $n1 : n1, $n2 : n2 )
+ EdgeLabel( p1 == $p1, p2 == $basePoint, labelName == $n1 )
+ EdgeLabel( p1 == $p2, p2 == $basePoint, labelName == $n2 )
+ not ( EdgeLabel( p1 == $basePoint, labelId == $id ) )
+ then
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p1 + " " + $n1 + " " + $id );
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p2 + " " + $n2 + " " + $id );
+ insert( new EdgeLabel( $basePoint, $p1, $n1, $id ) );
+ insert( new EdgeLabel( $basePoint, $p2, $n2, $id ) );
+end
+
+/*
+
+(p visit_2j_1
+ (stage ^value visiting_2j)
+ (junction ^name <n> ^base_point <bp> ^p1 <p1> ^p2 <p2> ^visited now)
+ (label ^name <n> ^id <id> ^n1 <n1> ^n2 <n2>)
+ -(edge_label ^p1 <p1> ^p2 <bp>)
+ (edge_label ^p1 <p2> ^p2 <bp> ^l_name <n2>)
+ -(edge_label ^p1 <bp> ^l_id <id>)
+ -->
+ ; (write edge_label <bp> <p1> <n1> <id> (crlf))
+ ; (write edge_label <bp> <p2> <n2> <id> (crlf))
+ (make edge_label ^p1 <bp> ^p2 <p1> ^l_name <n1> ^l_id <id>)
+ (make edge_label ^p1 <bp> ^p2 <p2> ^l_name <n2> ^l_id <id>))
+
+*/
+rule "visit_2j_1"
+ when
+ Stage( value == Stage.VISITING_2J )
+ Junction( $name : name, $basePoint : basePoint, $p1 : p1, $p2 : p2, visited == "now" )
+ Label( name == $name, $id : id, $n1 : n1, $n2 : n2 )
+ not ( EdgeLabel( p1 == $p1, p2 == $basePoint ) )
+ EdgeLabel( p1 == $p2, p2 == $basePoint, labelName == $n2 )
+ not ( EdgeLabel( p1 == $basePoint, labelId == $id) )
+ then
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p1 + " " + $n1 + " " + $id );
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p2 + " " + $n2 + " " + $id );
+ insert( new EdgeLabel( $basePoint, $p1, $n1, $id ) );
+ insert( new EdgeLabel( $basePoint, $p2, $n2, $id ) );
+end
+
+/*
+
+(p visit_2j_2
+ (stage ^value visiting_2j)
+ (junction ^name <n> ^base_point <bp> ^p1 <p1> ^p2 <p2> ^visited now)
+ (label ^name <n> ^id <id> ^n1 <n1> ^n2 <n2>)
+ (edge_label ^p1 <p1> ^p2 <bp> ^l_name <n1>)
+ -(edge_label ^p1 <p2> ^p2 <bp>)
+ -(edge_label ^p1 <bp> ^l_id <id>)
+ -->
+ ; (write edge_label <bp> <p1> <n1> <id> (crlf))
+ ; (write edge_label <bp> <p2> <n2> <id> (crlf))
+ (make edge_label ^p1 <bp> ^p2 <p1> ^l_name <n1> ^l_id <id>)
+ (make edge_label ^p1 <bp> ^p2 <p2> ^l_name <n2> ^l_id <id>))
+
+*/
+rule "visit_2j_2"
+ when
+ Stage( value == Stage.VISITING_2J )
+ Junction( $name : name, $basePoint : basePoint, $p1 : p1, $p2 : p2, visited == "now" )
+ Label( name == $name, $id : id, $n1 : n1, $n2 : n2 )
+ EdgeLabel( p1 == $p1, p2 == $basePoint, labelName == $n1 )
+ not ( EdgeLabel( p1 == $p2, p2 == $basePoint) )
+ not ( EdgeLabel( p1 == $basePoint, labelId == $id) )
+ then
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p1 + " " + $n1 + " " + $id );
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p2 + " " + $n2 + " " + $id );
+ insert( new EdgeLabel( $basePoint, $p1, $n1, $id ) );
+ insert( new EdgeLabel( $basePoint, $p2, $n2, $id ) );
+end
+
+/*
+
+(p visit_2j_3
+ (stage ^value visiting_2j)
+ (junction ^name <n> ^base_point <bp> ^p1 <p1> ^p2 <p2> ^visited now)
+ (label ^name <n> ^id <id> ^n1 <n1> ^n2 <n2>)
+ -(edge_label ^p1 <p1> ^p2 <bp>)
+ -(edge_label ^p1 <p2> ^p2 <bp>)
+ -(edge_label ^p1 <bp> ^l_id <id>)
+ -->
+ ; (write edge_label <bp> <p1> <n1> <id> (crlf))
+ ; (write edge_label <bp> <p2> <n2> <id> (crlf))
+ ; (write edge_label <bp> <p3> <n3> <id> (crlf))
+ (make edge_label ^p1 <bp> ^p2 <p1> ^l_name <n1> ^l_id <id>)
+ (make edge_label ^p1 <bp> ^p2 <p2> ^l_name <n2> ^l_id <id>))
+
+*/
+rule "visit_2j_3"
+ when
+ Stage( value == Stage.VISITING_2J )
+ Junction( $name : name, $basePoint : basePoint, $p1 : p1, $p2 : p2, visited == "now" )
+ Label(name == $name, $id : id, $n1 : n1, $n2 : n2 )
+ not ( EdgeLabel( p1 == $p1, p2 == $basePoint ) )
+ not ( EdgeLabel( p1 == $p2, p2 == $basePoint ) )
+ not ( EdgeLabel( p1 == $basePoint, labelId == $id ) )
+ then
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p1 + " " + $n1 + " " + $id );
+ System.out.println( "EdgeLabel " + $basePoint + " " + $p2 + " " + $n2 + " " + $id );
+ insert( new EdgeLabel( $basePoint, $p1, $n1, $id ) );
+ insert( new EdgeLabel( $basePoint, $p2, $n2, $id ) );
+end
+
+/*
+
+(p end_visit
+ (stage ^value << visiting_3j visiting_2j >>)
+ (junction ^visited now)
+ -->
+ (modify 1 ^value marking))
+
+*/
+rule "end_visit"
+ when
+ $stage : ( Stage( value == Stage.VISITING_2J ) || Stage( value == Stage.VISITING_3J ) )
+ $junction : Junction( visited == "now" )
+ then
+ $stage.setValue( Stage.MARKING );
+ update( $stage );
+ System.out.println( "Stage.MARKING" );
+end
+/*
+(p marking
+ (stage ^value marking)
+ (junction ^base_point <bp> ^visited now)
+ (edge ^p1 <p> ^p2 <bp>)
+ (junction ^base_point <p> ^visited yes)
+ -->
+ (modify 4 ^visited check))
+
+*/
+rule "marking"
+ when
+ Stage( value == Stage.MARKING )
+ Junction( $basePoint : basePoint, visited == "now" )
+ Edge( $p1 : p1, p2 == $basePoint )
+ $junction : Junction( basePoint == $p1, visited == "yes" )
+ then
+ $junction.setVisited( "check" );
+ update( $junction );
+end
+
+/*
+
+(p stop_marking
+ (stage ^value marking)
+ (junction ^base_point <bp> ^visited now)
+ -->
+ (modify 2 ^visited yes))
+*/
+rule "stop_marking"
+ when
+ Stage( value == Stage.MARKING )
+ $junction : Junction( $basePoint : basePoint, visited == "now" )
+ then
+ $junction.setVisited( "yes" );
+ update( $junction );
+end
+
+/*
+(p start_checking
+ (stage ^value marking)
+ -->
+ (modify 1 ^value checking))
+*/
+rule "start_checking"
+ when
+ $stage : Stage( value == Stage.MARKING )
+ then
+ $stage.setValue( Stage.CHECKING );
+ update( $stage );
+ System.out.println( "Stage.CHECKING" );
+end
+
+/*
+(p checking
+ (stage ^value checking)
+ (junction ^base_point <bp> ^visited check)
+ (edge_label ^p1 <bp> ^p2 <p> ^l_name <n> ^l_id <id>)
+ (junction ^base_point <p> ^visited yes)
+ -(edge_label ^p1 <p> ^p2 <bp> ^l_name <n>)
+ -->
+ (modify 1 ^value remove_label)
+ (make illegal ^bp <bp> ^l_id <id>))
+*/
+rule "checking1"
+ when
+ $stage : Stage( value == Stage.CHECKING )
+ $junction : Junction( $basePoint : basePoint, visited == "check" )
+ EdgeLabel( p1 == $basePoint, $p2 : p2, $labelName : labelName, $labelId : labelId )
+ Junction( basePoint == $p2, visited == "yes" )
+ not ( EdgeLabel( p1 == $p2, p2 == $basePoint, labelName == $labelName ) )
+ then
+ $stage.setValue( Stage.REMOVE_LABEL );
+ update( $stage );
+ System.out.println( "Stage.REMOVE_LABEL" );
+ insert ( new Illegal( $basePoint, $labelId ) );
+end
+/*
+(p remove_label_3j
+ (stage ^value remove_label)
+ (illegal ^bp <bp> ^l_id <id>)
+ (junction ^type 3j ^base_point <bp> ^p1 <p1> ^p2 <p2> ^p3 <p3>)
+ (edge_label ^p1 <bp> ^p2 <p1> ^l_id <id>)
+ (edge_label ^p1 <bp> ^p2 <p2> ^l_id <id>)
+ (edge_label ^p1 <bp> ^p2 <p3> ^l_id <id>)
+ -->
+ ; (write edge_label <bp> <p1> <id> (crlf))
+ ; (write edge_label <bp> <p2> <id> (crlf))
+ ; (write edge_label <bp> <p2> <id> (crlf))
+ (modify 1 ^value checking)
+ (remove 2)
+ (remove 4)
+ (remove 5)
+ (remove 6))
+*/
+rule "remove_label_3j"
+ when
+ $stage : Stage( value == Stage.REMOVE_LABEL )
+ $illegal : Illegal( $basePoint : basePoint, $labelId : labelId )
+ Junction( type == "3j", basePoint == $basePoint, $p1 : p1, $p2 : p2, $p3 : p3 )
+ $edgeLabel1 : EdgeLabel( p1 == $basePoint, p2 == $p1, labelId == $labelId )
+ $edgeLabel2 : EdgeLabel( p1 == $basePoint, p2 == $p2, labelId == $labelId )
+ $edgeLabel3 : EdgeLabel( p1 == $basePoint, p2 == $p3, labelId == $labelId )
+ then
+ $stage.setValue( Stage.CHECKING );
+ update( $stage );
+ System.out.println( "Stage.CHECKING" );
+ retract( $illegal );
+ retract( $edgeLabel1 );
+ retract( $edgeLabel2 );
+ retract( $edgeLabel3 );
+end
+
+/*
+(p remove_edge_2j
+ (stage ^value remove_label)
+ (illegal ^bp <bp> ^l_id <id>)
+ (junction ^type 2j ^base_point <bp> ^p1 <p1> ^p2 <p2>)
+ (edge_label ^p1 <bp> ^p2 <p1> ^l_id <id>)
+ (edge_label ^p1 <bp> ^p2 <p2> ^l_id <id>)
+ -->
+ ; (write edge_label <bp> <p1> <n1> <id> (crlf))
+ ; (write edge_label <bp> <p2> <n2> <id> (crlf))
+ (modify 1 ^value checking)
+ (remove 2)
+ (remove 4)
+ (remove 5))
+*/
+rule "remove_edge_2j"
+ when
+ $stage : Stage( value == Stage.REMOVE_LABEL )
+ $illegal : Illegal( $basePoint : basePoint, $labelId : labelId )
+ Junction( type == "2j", basePoint == $basePoint,$p1 : p1, $p2 : p2 )
+ $edgeLabel1 : EdgeLabel( p1 == $basePoint, p2 == $p1, labelId == $labelId )
+ $edgeLabel2 : EdgeLabel( p1 == $basePoint, p2 == $p2, labelId == $labelId )
+ then
+ $stage.setValue( Stage.CHECKING );
+ update( $stage );
+ System.out.println( "Stage.CHECKING" );
+ retract( $illegal );
+ retract( $edgeLabel1 );
+ retract( $edgeLabel2 );
+end
+
+/*
+(p checking
+ (stage ^value checking)
+ (junction ^base_point <bp> ^visited check)
+ -->
+ (modify 2 ^visited yes))
+
+*/
+rule "checking2"
+ when
+ Stage( value == Stage.CHECKING )
+ $junction : Junction( $basePoint : basePoint, visited == "check" )
+ then
+ $junction.setVisited( "yes" );
+ update( $junction );
+end
+
+/*
+(p stop_checking
+ (stage ^value checking)
+ -->
+ (modify 1 ^value labeling))
+*/
+rule "stop_checking"
+ when
+ $stage : Stage( value == Stage.CHECKING )
+ then
+ $stage.setValue( Stage.LABELING );
+ update( $stage );
+ System.out.println( "Stage.LABELING" );
+end
+/*
+(p done_labeling
+ (stage ^value labeling)
+ -->
+ (modify 1 ^value printing))
+*/
+rule "done_labeling"
+ when
+ $stage : Stage( value == Stage.LABELING )
+ then
+ $stage.setValue( Stage.PRINTING );
+ update( $stage );
+ System.out.println( "Stage.PRINTING" );
+end
+
+/*
+(p done
+ (stage ^value printing)
+ -->
+ (halt))
+*/
+rule "done"
+ when
+ Stage( value == Stage.PRINTING )
+ then
+ System.out.println( "Finished" );
+end
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/ExamplePolicyPricing.xls
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/ExamplePolicyPricing.xls
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/Fibonacci.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/Fibonacci.drl (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/Fibonacci.drl 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,43 @@
+package org.drools.examples
+
+import org.drools.examples.FibonacciExample.Fibonacci;
+
+rule Recurse
+ salience 10
+ when
+ f : Fibonacci ( value == -1 )
+ then
+ insert( new Fibonacci( f.getSequence() - 1 ) );
+ System.out.println( "recurse for " + f.getSequence() );
+end
+
+rule Bootstrap1
+ salience 20
+ when
+ f : Fibonacci( sequence == 1, value == -1 )
+ then
+ f.setValue( 1 );
+ update( f );
+ System.out.println( f.getSequence() + " == " + f.getValue() );
+end
+
+rule Bootstrap2
+ when
+ f : Fibonacci( sequence == 2, value == -1 )
+ then
+ f.setValue( 1 );
+ update( f );
+ System.out.println( f.getSequence() + " == " + f.getValue() );
+end
+
+rule Calculate
+ when
+ f1 : Fibonacci( s1 : sequence, value != -1 )
+ f2 : Fibonacci( s2 : sequence == (s1 + 1 ), value != -1 )
+ f3 : Fibonacci( sequence == (s2 + 1 ), value == -1 )
+ then
+ f3.setValue( f1.getValue() + f2.getValue() );
+ update( f3 );
+ retract( f1 );
+ System.out.println( f3.getSequence() + " == " + f3.getValue() );
+end
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/HelloWorld.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/HelloWorld.drl (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/HelloWorld.drl 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,22 @@
+package org.drools.examples
+
+import org.drools.examples.HelloWorldExample.Message;
+
+rule "Hello World"
+ when
+ m : Message( status == Message.HELLO, message : message )
+ then
+ System.out.println( message );
+ m.setMessage( "Goodbye cruel world" );
+ m.setStatus( Message.GOODBYE );
+ update( m );
+end
+
+rule "GoodBye"
+ no-loop true
+ when
+ m : Message( status == Message.GOODBYE, message : message )
+ then
+ System.out.println( message );
+ m.setMessage( message );
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/HonestPolitician.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/HonestPolitician.drl (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/HonestPolitician.drl 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,38 @@
+package org.drools.examples
+
+import org.drools.examples.HonestPoliticianExample.Politician;
+import org.drools.examples.HonestPoliticianExample.Hope;
+
+rule "We have an honest Politician"
+ when
+ exists( Politician( honest == true ) )
+ then
+ insertLogical( new Hope() );
+end
+
+rule "Hope Lives"
+ salience 10
+ when
+ exists( Hope() )
+ then
+ System.out.println("Hurrah!!! Democracy Lives");
+end
+
+rule "Hope is Dead"
+ when
+ not( Hope() )
+ then
+ System.out.println( "We are all Doomed!!! Democracy is Dead" );
+end
+
+rule "Currupt the Honest"
+ salience 5
+ when
+ politician : Politician( honest == true )
+ exists( Hope() )
+ then
+ System.out.println( "I'm an evil corporation and I have corrupted " + politician.getName() );
+ politician.setHonest( false );
+ update( politician );
+end
+
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/LogicalAssertionsNotPingPong.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/LogicalAssertionsNotPingPong.drl (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/LogicalAssertionsNotPingPong.drl 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,30 @@
+package org.drools.test;
+
+import java.lang.String;
+import java.lang.Integer;
+import java.util.List;
+
+global java.lang.Integer i;
+global java.lang.String s;
+global java.util.List l;
+
+rule "not s then i"
+ when
+ not String()
+ then
+ if (l.size() < 10) {
+ l.add(new Integer(0));
+ System.out.println("Logical assert i");
+ insertLogical(i);
+ }
+end
+rule "i then s"
+ when
+ Integer()
+ then
+ if (l.size() < 10) {
+ l.add(new Integer(0));
+ System.out.println("Logical assert s");
+ insertLogical(s);
+ }
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/StateExampleDynamicRule.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/StateExampleDynamicRule.drl (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/StateExampleDynamicRule.drl 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,12 @@
+package org.drools.examples
+
+import org.drools.examples.State;
+
+rule "D to E"
+ when
+ State(name == "D", state == State.FINISHED )
+ e : State(name == "E", state == State.NOTRUN )
+ then
+ System.out.println(e.getName() + " finished" );
+ e.setState( State.FINISHED );
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/StateExampleUsingAgendGroup.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/StateExampleUsingAgendGroup.drl (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/StateExampleUsingAgendGroup.drl 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,43 @@
+package org.drools.examples
+
+import org.drools.examples.State;
+
+rule Bootstrap
+ when
+ a : State(name == "A", state == State.NOTRUN )
+ then
+ System.out.println(a.getName() + " finished" );
+ a.setState( State.FINISHED );
+end
+
+
+rule "A to B"
+ when
+ State(name == "A", state == State.FINISHED )
+ b : State(name == "B", state == State.NOTRUN )
+ then
+ System.out.println(b.getName() + " finished" );
+ b.setState( State.FINISHED );
+end
+
+rule "B to C"
+ agenda-group "B to C"
+ auto-focus true
+ when
+ State(name == "B", state == State.FINISHED )
+ c : State(name == "C", state == State.NOTRUN )
+ then
+ System.out.println(c.getName() + " finished" );
+ c.setState( State.FINISHED );
+ drools.setFocus( "B to D" );
+end
+
+rule "B to D"
+ agenda-group "B to D"
+ when
+ State(name == "B", state == State.FINISHED )
+ d : State(name == "D", state == State.NOTRUN )
+ then
+ System.out.println(d.getName() + " finished" );
+ d.setState( State.FINISHED );
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/StateExampleUsingSalience.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/StateExampleUsingSalience.drl (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/StateExampleUsingSalience.drl 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,40 @@
+package org.drools.examples
+
+import org.drools.examples.State;
+
+rule Bootstrap
+ when
+ a : State(name == "A", state == State.NOTRUN )
+ then
+ System.out.println(a.getName() + " finished" );
+ a.setState( State.FINISHED );
+end
+
+
+rule "A to B"
+ when
+ State(name == "A", state == State.FINISHED )
+ b : State(name == "B", state == State.NOTRUN )
+ then
+ System.out.println(b.getName() + " finished" );
+ b.setState( State.FINISHED );
+end
+
+rule "B to C"
+ salience 10
+ when
+ State(name == "B", state == State.FINISHED )
+ c : State(name == "C", state == State.NOTRUN )
+ then
+ System.out.println(c.getName() + " finished" );
+ c.setState( State.FINISHED );
+end
+
+rule "B to D"
+ when
+ State(name == "B", state == State.FINISHED )
+ d : State(name == "D", state == State.NOTRUN )
+ then
+ System.out.println(d.getName() + " finished" );
+ d.setState( State.FINISHED );
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/TroubleTicket.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/TroubleTicket.drl (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/TroubleTicket.drl 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,62 @@
+package org.drools.examples
+
+import org.drools.examples.TroubleTicketExample.Customer;
+import org.drools.examples.TroubleTicketExample.Ticket;
+
+rule "New Ticket"
+ salience 10
+ when
+ customer : Customer( )
+ ticket : Ticket( customer == customer, status == "New" )
+ then
+ System.out.println( "New : " + ticket );
+end
+
+rule "Silver Priority"
+ duration 3000
+ when
+ customer : Customer( subscription == "Silver" )
+ ticket : Ticket( customer == customer, status == "New" )
+ then
+ ticket.setStatus( "Escalate" );
+ update( ticket );
+end
+
+rule "Gold Priority"
+ duration 1000
+ when
+ customer : Customer( subscription == "Gold" )
+ ticket : Ticket( customer == customer, status == "New" )
+ then
+ ticket.setStatus( "Escalate" );
+ update( ticket );
+end
+
+rule "Platinum Priority"
+ when
+ customer : Customer( subscription == "Platinum" )
+ ticket : Ticket( customer == customer, status == "New" )
+ then;
+ ticket.setStatus( "Escalate" );
+ update( ticket );
+end
+
+rule "Escalate"
+ when
+ customer : Customer( )
+ ticket : Ticket( customer == customer, status == "Escalate" )
+ then
+ sendEscalationEmail( customer, ticket );
+end
+
+rule "Done"
+ when
+ customer : Customer( )
+ ticket : Ticket( customer == customer, status == "Done" )
+ then
+ System.out.println( "Done : " + ticket );
+end
+
+function void sendEscalationEmail( Customer customer, Ticket ticket ) {
+ System.out.println( "Email : " + ticket );
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/TroubleTicketWithDSL.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/TroubleTicketWithDSL.drl (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/TroubleTicketWithDSL.drl 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,62 @@
+package org.drools.examples
+expander ticketing.dsl
+
+
+rule "New Ticket"
+ salience 10
+ when
+
+ then
+ Log "New"
+end
+
+rule "Silver Priorty"
+ #if after a certain time, we still have an issue, then escalate
+ duration 3000
+ when
+ There is a "Silver" customer with a ticket status of "New"
+
+ then
+ Escalate the ticket
+end
+
+rule "Gold Priority"
+ duration 1000
+ when
+ There is a "Gold" customer with a ticket status of "New"
+ then
+ Escalate the ticket
+end
+
+rule "Platinum Priority"
+ #we don't want to make the high rollers wait !
+ when
+ There is a "Platinum" customer with a ticket status of "New"
+ then
+ Escalate the ticket
+end
+
+
+
+rule "Escalate"
+ when
+ There is a customer ticket with status of "Escalate"
+ then
+ Send escalation email
+end
+
+rule "Done"
+ when
+ There is a customer ticket with status of "Done"
+ then
+ Log "Done"
+end
+
+# This is the same as the non DSL version. This could be kept in another file of course.
+function void sendEscalationEmail( Customer customer, Ticket ticket ) {
+ System.out.println( "Email : " + ticket );
+}
+
+#hey, the imports can appear anywhere !
+import org.drools.examples.TroubleTicketExampleWithDSL.Customer;
+import org.drools.examples.TroubleTicketExampleWithDSL.Ticket;
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/conway/conway.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/conway/conway.drl (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/conway/conway.drl 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,150 @@
+package org.drools.examples
+
+import org.drools.examples.conway.Cell;
+import org.drools.examples.conway.CellGrid;
+import org.drools.examples.conway.Neighbor;
+import org.drools.examples.conway.Phase;
+import org.drools.examples.conway.CellState;
+
+import org.drools.WorkingMemory;
+import org.drools.common.InternalWorkingMemoryActions;
+import org.drools.RuleBase;
+
+
+rule "register north east"
+ agenda-group "register neighbor"
+when
+ CellGrid( $numberOfColumns : numberOfColumns )
+ $cell: Cell( $row : row > 0, $col : col < ( $numberOfColumns - 1 ) )
+ $northEast : Cell( row == ($row - 1), col == ( $col + 1 ) )
+then
+ insert( new Neighbor( $cell, $northEast ) );
+ insert( new Neighbor( $northEast, $cell ) );
+end
+
+rule "register north"
+ agenda-group "register neighbor"
+when
+ $cell: Cell( $row : row > 0, $col : col )
+ $north : Cell( row == ($row - 1), col == $col )
+then
+ insert( new Neighbor( $cell, $north ) );
+ insert( new Neighbor( $north, $cell ) );
+end
+
+rule "register north west"
+ agenda-group "register neighbor"
+when
+ $cell: Cell( $row : row > 0, $col : col > 0 )
+ $northWest : Cell( row == ($row - 1), col == ( $col - 1 ) )
+then
+ insert( new Neighbor( $cell, $northWest ) );
+ insert( new Neighbor( $northWest, $cell ) );
+end
+
+rule "register west"
+ agenda-group "register neighbor"
+when
+ $cell: Cell( $row : row >= 0, $col : col > 0 )
+ $west : Cell( row == $row, col == ( $col - 1 ) )
+then
+ insert( new Neighbor( $cell, $west ) );
+ insert( new Neighbor( $west, $cell ) );
+end
+
+rule "Kill The Lonely"
+ agenda-group "evaluate"
+ no-loop
+when
+# A live cell has fewer than 2 live neighbors
+ theCell: Cell(liveNeighbors < 2, cellState == CellState.LIVE, phase == Phase.EVALUATE)
+then
+ theCell.setPhase(Phase.KILL);
+ update( theCell );
+end
+
+rule "Kill The Overcrowded"
+ agenda-group "evaluate"
+ no-loop
+when
+# A live cell has more than 3 live neighbors
+ theCell: Cell(liveNeighbors > 3, cellState == CellState.LIVE, phase == Phase.EVALUATE)
+then
+ theCell.setPhase(Phase.KILL);
+ update( theCell );
+end
+
+rule "Give Birth"
+ agenda-group "evaluate"
+ no-loop
+when
+# A dead cell has 3 live neighbors
+ theCell: Cell(liveNeighbors == 3, cellState == CellState.DEAD, phase == Phase.EVALUATE)
+then
+ theCell.setPhase(Phase.BIRTH);
+ update( theCell );
+end
+
+rule "reset calculate"
+ agenda-group "reset calculate"
+when
+then
+ WorkingMemory wm = drools.getWorkingMemory();
+ wm.getAgenda().clearAgendaGroup( "calculate" );
+end
+
+rule "kill"
+ agenda-group "kill"
+ no-loop
+when
+ theCell: Cell(phase == Phase.KILL)
+then
+ theCell.setCellState(CellState.DEAD);
+ theCell.setPhase(Phase.DONE);
+ update( theCell );
+end
+
+rule "birth"
+ agenda-group "birth"
+ no-loop
+when
+ theCell: Cell(phase == Phase.BIRTH)
+then
+ theCell.setCellState(CellState.LIVE);
+ theCell.setPhase(Phase.DONE);
+ update( theCell );
+end
+
+rule "Calculate Live"
+ agenda-group "calculate"
+ lock-on-active
+when
+ theCell: Cell(cellState == CellState.LIVE)
+ Neighbor(cell == theCell, $neighbor : neighbor)
+then
+ $neighbor.setLiveNeighbors( $neighbor.getLiveNeighbors() + 1 );
+ $neighbor.setPhase( Phase.EVALUATE );
+ update( $neighbor );
+end
+
+rule "Calculate Dead"
+ agenda-group "calculate"
+ lock-on-active
+when
+ theCell: Cell(cellState == CellState.DEAD)
+ Neighbor(cell == theCell, $neighbor : neighbor )
+then
+ $neighbor.setLiveNeighbors( $neighbor.getLiveNeighbors() - 1 );
+ $neighbor.setPhase( Phase.EVALUATE );
+ update( $neighbor );
+end
+
+rule "Kill All"
+ agenda-group "kill all"
+ no-loop
+when
+ theCell: Cell(cellState == CellState.LIVE)
+then
+ theCell.setCellState(CellState.DEAD);
+ update( theCell );
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/conway/conway.dsl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/conway/conway.dsl (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/conway/conway.dsl 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,6 @@
+#These are the DSL elements for Conways Game of Life.
+[then]Kill the cell=theCell.queueNextCellState(CellState.DEAD);
+[when]A live cell has fewer than {number} live neighbors=theCell: Cell(numberOfLiveNeighbors < {number}, cellState == CellState.LIVE)
+[when]A live cell has more than {number} live neighbors=theCell: Cell(numberOfLiveNeighbors > {number}, cellState == CellState.LIVE)
+[when]A dead cell has {number} live neighbors=theCell: Cell(numberOfLiveNeighbors == {number}, cellState == CellState.DEAD)
+[then]Bring the cell to life=theCell.queueNextCellState(CellState.LIVE);
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/golf.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/golf.drl (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/golf.drl 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,55 @@
+package org.drools.examples;
+
+import org.drools.examples.GolfingExample.Golfer;
+
+rule "find solution"
+ when
+ // There is a golfer named Fred,
+ // Whose positions is $p1
+ Golfer( $fredsName : name == "Fred",
+ $fredsPosition : position,
+ $fredsColor : color )
+
+ // The golfer to Fred's immediate right
+ // is wearing blue pants
+ Golfer( $unknownsName : name != "Fred",
+ $unknownsPosition : position == ( $fredsPosition + 1 ),
+ $unknownsColor : color == "blue",
+ color != $fredsColor )
+
+ // Joe is in position 2
+ Golfer( $joesName : name == "Joe",
+ $joesPosition : position == 2,
+ position != $fredsPosition,
+ $joesColor : color != $fredsColor )
+
+ // Bob is wearing plaid pants
+ Golfer( $bobsName : name == "Bob",
+ name != $unknownsName,
+ $bobsPosition : position != $fredsPosition,
+ position != $unknownsPosition,
+ position != $joesPosition,
+ $bobsColor : color == "plaid",
+ color != $fredsColor,
+ color != $joesColor,
+ color != $unknownsColor )
+
+ // Tom isn't in position 1 or 4
+ // and isn't wearing orange
+ Golfer( $tomsName : name == "Tom",
+ $tomsPosition : position != 1,
+ position != 4,
+ position != $fredsPosition,
+ position != $joesPosition,
+ position != $bobsPosition,
+ $tomsColor : color != "orange",
+ color != "blue",
+ color != $fredsColor,
+ color != $joesColor,
+ color != $bobsColor )
+ then
+ System.out.println( "Fred " + $fredsPosition + " " + $fredsColor );
+ System.out.println( "Joe " + $joesPosition + " " + $joesColor );
+ System.out.println( "Bob " + $bobsPosition + " " + $bobsColor );
+ System.out.println( "Tom " + $tomsPosition + " " + $tomsColor );
+end
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/sudoku/sudoku.drl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/sudoku/sudoku.drl (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/sudoku/sudoku.drl 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,168 @@
+package org.drools.examples.sudoku
+
+import org.drools.examples.sudoku.Field;
+import org.drools.examples.sudoku.PossibleValue;
+
+rule "Rule 1: If a field has the value 0, it is empty: remove it and insert the PossibleValues"
+ salience 100
+ when
+ $field : Field( value == 0, $row : row, $column : column, $zone : zone )
+ then
+ insert( new PossibleValue("1", $field ) );
+ insert( new PossibleValue("2", $field ) );
+ insert( new PossibleValue("3", $field ) );
+ insert( new PossibleValue("4", $field ) );
+ insert( new PossibleValue("5", $field ) );
+ insert( new PossibleValue("6", $field ) );
+ insert( new PossibleValue("7", $field ) );
+ insert( new PossibleValue("8", $field ) );
+ insert( new PossibleValue("9", $field ) );
+ retract( $field );
+ #System.out.println("Rule 1 fired.");
+end
+
+rule "Rule 2: If there is one PossibleValue left at a certain position, it should be the Fields value"
+ salience 5
+ when
+ $pv : PossibleValue ( $row : row, $zone : zone, $column : column, $value : value )
+ not ( PossibleValue ( row == $row, zone == $zone, column == $column, value != $value ) )
+ then
+ insert( new Field( $value, $column, $row, $zone ) );
+ retract( $pv );
+ #System.out.println("Rule 2 fired.");
+end
+
+
+rule "Rule 3: If there is a field with a value in a row, remove all PossibleValues with this value in this row"
+ salience 15
+ when
+ $field2 : Field( $row : row, $value : value != 0 )
+ $possible : PossibleValue( row == $row, value == $value )
+ then
+ retract( $possible );
+ #System.out.println("Rule 3 fired.");
+end
+
+rule "Rule 4: If there is a field with a value in a column, remove all PossibleValues with this value in this column"
+ salience 15
+ when
+ $field1 : Field( $column : column, $value : value != 0 )
+ $possible : PossibleValue( column == $column, value == $value )
+ then
+ retract( $possible );
+ #System.out.println("Rule 4 fired.");
+end
+
+rule "Rule 5: If there is a field with a value in a zone, remove all PossibleValues with this value in this zone"
+ salience 15
+ when
+ $field1 : Field( $zone : zone, $value : value != 0 )
+ $possible : PossibleValue( zone == $zone, value == $value )
+ then
+ retract( $possible );
+ #System.out.println("Rule 5 fired.");
+end
+
+rule "Rule 6: For fields with a value remove all PossibleValues"
+ salience 250
+ when
+ Field( value != 0, $col : column, $row : row, $zone : zone )
+ $pv : PossibleValue( column == $col, row == $row, zone == $zone )
+ then
+ retract( $pv );
+ #System.out.println("Rule 6 fired.");
+end
+
+rule "Rule 7: If there is only one PossibleValue left in a zone, it must have the value of the field"
+ salience 4
+ when
+ $pv : PossibleValue( $zone : zone, $value : value, $col : column, $row : row)
+ not (PossibleValue( zone == $zone, value == $value ))
+ not (Field( value == $value, zone == $zone) )
+ not (Field( value == $value, row == $row) )
+ not (Field( value == $value, column == $col) )
+ then
+ insert( new Field( $value, $col, $row, $zone ) );
+ retract( $pv );
+ #System.out.println("Rule 7 fired.");
+end
+
+rule "Rule 8: If there is only one PossibleValue left in a column, it must have the value of the field"
+ salience 4
+ when
+ $pv1 : PossibleValue( $zone : zone, $value : value, $col : column, $row : row)
+ not (PossibleValue( column == $col, value == $value ))
+ not (Field( value == $value, zone == $zone) )
+ not (Field( value == $value, row == $row) )
+ not (Field( value == $value, column == $col) )
+ then
+ insert( new Field( $value, $col, $row, $zone ) );
+ retract( $pv1 );
+ #System.out.println("Rule 8 fired.");
+end
+
+rule "Rule 9: If there is only one PossibleValue left in a row, it must have the value of the field"
+ salience 4
+ when
+ $pv : PossibleValue( $zone : zone, $value : value, $col : column, $row : row)
+ not (PossibleValue( row == $row, value == $value ))
+ not (Field( value == $value, zone == $zone) )
+ not (Field( value == $value, row == $row) )
+ not (Field( value == $value, column == $col) )
+ then
+ insert( new Field( $value, $col, $row, $zone ) );
+ retract( $pv );
+ #System.out.println("Rule 9 fired.");
+end
+
+rule "Rule 10: If there are two fields with only two possible values, remove the PossibleValues for the same Value in the rest of the zone"
+ salience 1
+ when
+ PossibleValue( $zone : zone, $val1 : value, $row1 : row, $col1 : column )
+ PossibleValue( zone == $zone, value == $val1, $row2 : row, $col2 : column != $col1)
+ PossibleValue( zone == $zone, row == $row1, column == $col1, $val2 : value )
+ PossibleValue( zone == $zone, row == $row2, column == $col2, value == $val2 )
+ not ( PossibleValue( zone == $zone, row == $row1, column == $col1, value != $val1, value != $val2 ) )
+ not ( PossibleValue( zone == $zone, row == $row2, column == $col2, value != $val1, value != $val2 ) )
+ $pv : PossibleValue( zone == $zone, value == $val1)
+ then
+ retract( $pv );
+ #System.out.println("Rule 10 fired.");
+end
+
+# This rule differs from the one above, that the 2nd PV should not be in the same row (above: not in the same column
+rule "Rule 11: If there are two fields with only two possible values, remove the PossibleValues for the same Value in the rest of the zone"
+ salience 1
+ when
+ PossibleValue( $zone : zone, $val1 : value, $row1 : row, $col1 : column )
+ PossibleValue( zone == $zone, value == $val1, $row2 : row != $row1, $col2 : column)
+ PossibleValue( zone == $zone, row == $row1, column == $col1, $val2 : value )
+ PossibleValue( zone == $zone, row == $row2, column == $col2, value == $val2 )
+ not ( PossibleValue( zone == $zone, row == $row1, column == $col1, value != $val1, value != $val2 ) )
+ not ( PossibleValue( zone == $zone, row == $row2, column == $col2, value != $val1, value != $val2 ) )
+ $pv : PossibleValue( zone == $zone, value == $val1)
+ then
+ retract( $pv );
+ #System.out.println("Rule 11 fired.");
+end
+
+##################################################
+# Rules not needed, just for debugging purpose:
+##################################################
+rule "log PossibleValues from certain row"
+ salience -25
+ when
+ $pos1 : PossibleValue ( row == 1, $value : value)
+ then
+ System.out.println("Left PV: " + $pos1.getRow() + $pos1.getColumn() + $pos1.getZone() + ":" + $pos1.getValue() );#+ $pos2.getValue());
+end
+
+
+
+rule "log all fields"
+ salience -20
+ when
+ $field : Field ( value == 0 )
+ then
+ System.out.println("left Field " + $field.toString());
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/ticketing.dsl
===================================================================
--- labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/ticketing.dsl (rev 0)
+++ labs/jbossrules/trunk/drools-examples/drools-examples-drl/src/main/rules/org/drools/examples/ticketing.dsl 2007-07-12 19:19:16 UTC (rev 13417)
@@ -0,0 +1,5 @@
+[condition][]There is a customer ticket with status of "{status}"=customer : Customer( ) ticket : Ticket( customer == customer, status == "{status}" )
+[condition][]There is a "{subscription}" customer with a ticket status of "{status}"=customer : Customer(subscription == "{subscription}") ticket : Ticket( customer == customer, status == "{status}")
+[consequence][]Log "{message}"=System.out.println("{message} ");
+[consequence][]Escalate the ticket=ticket.setStatus("Escalate"); update(ticket);
+[consequence][]Send escalation email=sendEscalationEmail( customer, ticket );
More information about the jboss-svn-commits
mailing list