[Toss-devel-svn] SF.net SVN: toss:[1612] trunk/Toss
Status: Beta
Brought to you by:
lukaszkaiser
|
From: <luk...@us...> - 2011-10-23 00:13:40
|
Revision: 1612
http://toss.svn.sourceforge.net/toss/?rev=1612&view=rev
Author: lukstafi
Date: 2011-10-23 00:13:32 +0000 (Sun, 23 Oct 2011)
Log Message:
-----------
GDL translation: recognize when a disjunction of <distinct> leads to <not equal>.
Modified Paths:
--------------
trunk/Toss/Formula/Aux.mli
trunk/Toss/GGP/GDL.ml
trunk/Toss/GGP/GDL.mli
trunk/Toss/GGP/TranslateFormula.ml
trunk/Toss/GGP/TranslateGameTest.ml
trunk/Toss/GGP/tests/pacman3p-raw.toss
trunk/Toss/GGP/tests/pacman3p-simpl.toss
Modified: trunk/Toss/Formula/Aux.mli
===================================================================
--- trunk/Toss/Formula/Aux.mli 2011-10-22 07:38:04 UTC (rev 1611)
+++ trunk/Toss/Formula/Aux.mli 2011-10-23 00:13:32 UTC (rev 1612)
@@ -68,7 +68,7 @@
val map_reduce :
('a -> 'b * 'c) -> ('d -> 'c -> 'd) -> 'd -> 'a list -> ('b * 'd) list
-(** Collects elements by key. Same as
+(** Collects elements by key, in a list sorted by key. Same as
[map_reduce (fun x -> x) (fun y x->x::y) []]. *)
val collect : ('a * 'b) list -> ('a * 'b list) list
Modified: trunk/Toss/GGP/GDL.ml
===================================================================
--- trunk/Toss/GGP/GDL.ml 2011-10-22 07:38:04 UTC (rev 1611)
+++ trunk/Toss/GGP/GDL.ml 2011-10-23 00:13:32 UTC (rev 1612)
@@ -1974,3 +1974,40 @@
(fun s -> List.for_all (fun (p,i) ->
try at_path s p = args.(i) with Not_found -> false) apset)
sterms
+
+(* Check whether each of argpaths covers some tree in c_paths
+ completely. *)
+let complete_paths_for c_paths argpaths =
+ let rec complete ?(root=false) c_paths paths =
+ List.mem [] paths ||
+ let paths = Aux.collect
+ (List.map (function
+ | (r, arg)::tl -> r, (arg, tl)
+ | _ -> assert false) paths) in
+ match c_paths with
+ | Empty -> true
+ | Here -> false
+ | Below c_brs | Here_and_below c_brs ->
+ if root then
+ let rel, p_args = List.hd paths in
+ let c_args = List.assoc rel c_brs in
+ (* fill-in the paths outside of c_args *)
+ let more_p_args =
+ Aux.array_mapi_some (fun i c_ps ->
+ if c_ps = Empty then Some (i, [])
+ else None) c_args in
+ let p_args = Array.to_list more_p_args @ p_args in
+ let p_args = Aux.array_from_assoc (Aux.collect p_args) in
+ Aux.array_for_all2 complete c_args p_args
+ else (
+ List.for_all2
+ (fun (c_rel, c_args) (p_rel, p_args) ->
+ c_rel = p_rel &&
+ let p_args = Aux.array_from_assoc (Aux.collect p_args) in
+ Aux.array_for_all2 complete c_args p_args)
+ c_brs paths) in
+ try
+ List.for_all
+ (fun aps -> complete ~root:true c_paths (List.map fst aps))
+ argpaths
+ with Not_found | Invalid_argument _ -> false
Modified: trunk/Toss/GGP/GDL.mli
===================================================================
--- trunk/Toss/GGP/GDL.mli 2011-10-22 07:38:04 UTC (rev 1611)
+++ trunk/Toss/GGP/GDL.mli 2011-10-23 00:13:32 UTC (rev 1612)
@@ -299,3 +299,7 @@
type argpaths = (path * int) list list
val find_rel_arg : term list -> term array -> (path * int) list -> term
+
+(** Check whether each of argpaths covers some tree in c_paths
+ completely. *)
+val complete_paths_for : path_set -> argpaths -> bool
Modified: trunk/Toss/GGP/TranslateFormula.ml
===================================================================
--- trunk/Toss/GGP/TranslateFormula.ml 2011-10-22 07:38:04 UTC (rev 1611)
+++ trunk/Toss/GGP/TranslateFormula.ml 2011-10-23 00:13:32 UTC (rev 1612)
@@ -383,6 +383,51 @@
(* **************************************** *)
(* {3 Build defined relations.} *)
+let distinct_lit = function
+ | (Pos (Distinct _)) -> true
+ | _ -> false
+
+(* A relation defined by a disjunction of differences on all paths of
+ a state term. *)
+let is_distinctcell c_paths partition cls =
+ try
+ List.iter (fun (_, body) ->
+ if not (List.exists distinct_lit body)
+ then raise Not_found) cls;
+ let cls = List.map
+ (fun (args, body) -> args,
+ List.filter distinct_lit body)
+ cls in
+ if not (complete_paths_for c_paths partition)
+ then raise Not_found;
+ let swap (i,j) = j,i in
+ let v1, v2 =
+ match partition with
+ | [v1; v2] -> List.map swap v1, List.map swap v2
+ | _ -> assert false in
+ let distinct_pairs =
+ List.map (function
+ | args, [Pos (Distinct [|t1; t2|])] ->
+ Aux.array_argfind (fun t->t=t1) args,
+ Aux.array_argfind (fun t->t=t2) args
+ | _ -> raise Not_found) cls in
+ let distinct_pairs = List.map
+ (fun (i,j) ->
+ if List.mem_assoc i v1 && List.mem_assoc j v2
+ then i, j
+ else if List.mem_assoc i v2 && List.mem_assoc j v1
+ then j, i
+ else raise Not_found)
+ distinct_pairs in
+ List.for_all
+ (fun (iv1, pv1) ->
+ let j = List.assoc iv1 distinct_pairs in
+ let pv2 = List.assoc j v2 in
+ pv1 = pv2)
+ v1
+ with Not_found -> false
+
+
let build_defrels data clauses =
let build_defrel drel =
try
@@ -401,21 +446,46 @@
let d_arity = List.length partition in
let defvars =
Array.init d_arity (fun i -> "v"^string_of_int i) in
+ let distinctcell, r_clauses =
+ if d_arity = 2 && (* DEBUG *) drel = "distinctcell" &&
+ is_distinctcell data.c_paths partition r_clauses
+ then true,
+ List.map (fun (args, body) ->
+ args, List.filter (not -| distinct_lit) body) r_clauses
+ else false, r_clauses in
+ (* {{{ log entry *)
+ if !debug_level > 3 then (
+ Printf.printf "build_defrel: clauses=\n%s\n\n%!"
+ (clauses_str
+ (List.map (fun (args,body)-> (drel,args),body) r_clauses))
+ );
+ (* }}} *)
let tr_def_r (args, body) =
- let sterms = Aux.map_some
- (function Pos (True s) -> Some s | _ -> None) body in
- let s_l = List.map (find_rel_arg sterms args) partition in
- let v_l = List.map (var_of_term data) s_l in
- let eqs = List.map2
- (fun v sv -> Formula.Eq (`FO v, sv))
- (Array.to_list defvars) v_l in
- let def_phi = FormulaOps.del_vars_quant (v_l :> Formula.var list)
- (translate data [body]) in
- if v_l = [] then Formula.And (eqs @ [def_phi])
- else Formula.Ex ((v_l :> Formula.var list),
- Formula.And (eqs @ [def_phi])) in
- drel, (Array.to_list defvars,
- Formula.Or (List.map tr_def_r r_clauses))
+ if body = [] then Formula.And []
+ else
+ let sterms = Aux.map_some
+ (function Pos (True s) -> Some s | _ -> None) body in
+ let s_l = List.map (find_rel_arg sterms args) partition in
+ let v_l = List.map (var_of_term data) s_l in
+ let eqs = List.map2
+ (fun v sv -> Formula.Eq (`FO v, sv))
+ (Array.to_list defvars) v_l in
+ let def_phi = FormulaOps.del_vars_quant (v_l :> Formula.var list)
+ (translate data [body]) in
+ if v_l = [] then Formula.And (eqs @ [def_phi])
+ else Formula.Ex ((v_l :> Formula.var list),
+ Formula.And (eqs @ [def_phi])) in
+ let dbody = match r_clauses with
+ | [] -> assert false
+ | [r_cl] -> tr_def_r r_cl
+ | _ -> Formula.Or (List.map tr_def_r r_clauses) in
+ if distinctcell then
+ drel, (Array.to_list defvars,
+ Formula.And
+ [Formula.Not (Formula.Eq (`FO defvars.(0), `FO defvars.(1)));
+ dbody])
+ else
+ drel, (Array.to_list defvars, dbody)
with Not_found -> drel, ([], Formula.Or []) in
List.map build_defrel data.defined_rels
Modified: trunk/Toss/GGP/TranslateGameTest.ml
===================================================================
--- trunk/Toss/GGP/TranslateGameTest.ml 2011-10-22 07:38:04 UTC (rev 1611)
+++ trunk/Toss/GGP/TranslateGameTest.ml 2011-10-23 00:13:32 UTC (rev 1612)
@@ -360,7 +360,7 @@
let a () =
- set_debug_level 4;
+ (* set_debug_level 4; *)
simult_test_case ~game_name:"pacman3p" ~player:"pacman"
~plnum:1 (* 0 is environment! *)
~moves:[|"(move east)"; "(move nowhere)"; "(move nowhere)"|]
Modified: trunk/Toss/GGP/tests/pacman3p-raw.toss
===================================================================
--- trunk/Toss/GGP/tests/pacman3p-raw.toss 2011-10-22 07:38:04 UTC (rev 1611)
+++ trunk/Toss/GGP/tests/pacman3p-raw.toss 2011-10-23 00:13:32 UTC (rev 1612)
@@ -1,18 +1,15 @@
REL distinctcell(v0, v1) =
- ex location__BLANK__x33_y33, location__BLANK__x34_y34
- (v0 = location__BLANK__x33_y33 and v1 = location__BLANK__x34_y34 and
- cell(location__BLANK__x33_y33) and cell(location__BLANK__x34_y34) and
- not EQ___location_1__location_1(location__BLANK__x33_y33,
- location__BLANK__x34_y34) and
- location__BLANK___BLANK___BLANK_(location__BLANK__x34_y34) and
- location__BLANK___BLANK___BLANK_(location__BLANK__x33_y33)) or
- ex location__BLANK__x35_y35, location__BLANK__x36_y36
- (v0 = location__BLANK__x35_y35 and v1 = location__BLANK__x36_y36 and
- cell(location__BLANK__x35_y35) and cell(location__BLANK__x36_y36) and
- not EQ___location_2__location_2(location__BLANK__x35_y35,
- location__BLANK__x36_y36) and
- location__BLANK___BLANK___BLANK_(location__BLANK__x36_y36) and
- location__BLANK___BLANK___BLANK_(location__BLANK__x35_y35))
+ (not v0 = v1 and
+ (ex location__BLANK__x33_y33, location__BLANK__x34_y34
+ (v0 = location__BLANK__x33_y33 and v1 = location__BLANK__x34_y34 and
+ cell(location__BLANK__x33_y33) and cell(location__BLANK__x34_y34) and
+ location__BLANK___BLANK___BLANK_(location__BLANK__x34_y34) and
+ location__BLANK___BLANK___BLANK_(location__BLANK__x33_y33)) or
+ ex location__BLANK__x35_y35, location__BLANK__x36_y36
+ (v0 = location__BLANK__x35_y35 and v1 = location__BLANK__x36_y36 and
+ cell(location__BLANK__x35_y35) and cell(location__BLANK__x36_y36) and
+ location__BLANK___BLANK___BLANK_(location__BLANK__x36_y36) and
+ location__BLANK___BLANK___BLANK_(location__BLANK__x35_y35))))
REL nextcell__east(v0, v1) =
ex location__BLANK__x24_y24, location__BLANK__xnew1_y24
(v0 = location__BLANK__x24_y24 and v1 = location__BLANK__xnew1_y24 and
Modified: trunk/Toss/GGP/tests/pacman3p-simpl.toss
===================================================================
--- trunk/Toss/GGP/tests/pacman3p-simpl.toss 2011-10-22 07:38:04 UTC (rev 1611)
+++ trunk/Toss/GGP/tests/pacman3p-simpl.toss 2011-10-23 00:13:32 UTC (rev 1612)
@@ -1,10 +1,9 @@
REL distinctcell(v0, v1) =
- (location__BLANK___BLANK___BLANK_(v0) and
- location__BLANK___BLANK___BLANK_(v1) and
- not EQ___location_1__location_1(v0, v1)) or
- (location__BLANK___BLANK___BLANK_(v0) and
- location__BLANK___BLANK___BLANK_(v1) and
- not EQ___location_2__location_2(v0, v1))
+ (not v0 = v1 and
+ ((location__BLANK___BLANK___BLANK_(v0) and
+ location__BLANK___BLANK___BLANK_(v1)) or
+ (location__BLANK___BLANK___BLANK_(v0) and
+ location__BLANK___BLANK___BLANK_(v1))))
REL nextcell__east(v0, v1) =
(R(v0, v1) and location__BLANK___BLANK___BLANK_(v0) and
location__BLANK___BLANK___BLANK_(v1))
@@ -1245,1034 +1244,6 @@
val__blinky, val__east, val__ghosts, val__inky, val__north, val__nowhere,
val__pacman, val__pellet, val__south, val__west, control__BLANK_,
gdl__counter, synch_control_ |
- EQ___location_1__location_1 {
- (location__BLANK__1_1, location__BLANK__1_1);
- (location__BLANK__1_1, location__BLANK__1_2);
- (location__BLANK__1_1, location__BLANK__1_3);
- (location__BLANK__1_1, location__BLANK__1_4);
- (location__BLANK__1_1, location__BLANK__1_5);
- (location__BLANK__1_1, location__BLANK__1_6);
- (location__BLANK__1_1, location__BLANK__1_7);
- (location__BLANK__1_1, location__BLANK__1_8);
- (location__BLANK__1_2, location__BLANK__1_1);
- (location__BLANK__1_2, location__BLANK__1_2);
- (location__BLANK__1_2, location__BLANK__1_3);
- (location__BLANK__1_2, location__BLANK__1_4);
- (location__BLANK__1_2, location__BLANK__1_5);
- (location__BLANK__1_2, location__BLANK__1_6);
- (location__BLANK__1_2, location__BLANK__1_7);
- (location__BLANK__1_2, location__BLANK__1_8);
- (location__BLANK__1_3, location__BLANK__1_1);
- (location__BLANK__1_3, location__BLANK__1_2);
- (location__BLANK__1_3, location__BLANK__1_3);
- (location__BLANK__1_3, location__BLANK__1_4);
- (location__BLANK__1_3, location__BLANK__1_5);
- (location__BLANK__1_3, location__BLANK__1_6);
- (location__BLANK__1_3, location__BLANK__1_7);
- (location__BLANK__1_3, location__BLANK__1_8);
- (location__BLANK__1_4, location__BLANK__1_1);
- (location__BLANK__1_4, location__BLANK__1_2);
- (location__BLANK__1_4, location__BLANK__1_3);
- (location__BLANK__1_4, location__BLANK__1_4);
- (location__BLANK__1_4, location__BLANK__1_5);
- (location__BLANK__1_4, location__BLANK__1_6);
- (location__BLANK__1_4, location__BLANK__1_7);
- (location__BLANK__1_4, location__BLANK__1_8);
- (location__BLANK__1_5, location__BLANK__1_1);
- (location__BLANK__1_5, location__BLANK__1_2);
- (location__BLANK__1_5, location__BLANK__1_3);
- (location__BLANK__1_5, location__BLANK__1_4);
- (location__BLANK__1_5, location__BLANK__1_5);
- (location__BLANK__1_5, location__BLANK__1_6);
- (location__BLANK__1_5, location__BLANK__1_7);
- (location__BLANK__1_5, location__BLANK__1_8);
- (location__BLANK__1_6, location__BLANK__1_1);
- (location__BLANK__1_6, location__BLANK__1_2);
- (location__BLANK__1_6, location__BLANK__1_3);
- (location__BLANK__1_6, location__BLANK__1_4);
- (location__BLANK__1_6, location__BLANK__1_5);
- (location__BLANK__1_6, location__BLANK__1_6);
- (location__BLANK__1_6, location__BLANK__1_7);
- (location__BLANK__1_6, location__BLANK__1_8);
- (location__BLANK__1_7, location__BLANK__1_1);
- (location__BLANK__1_7, location__BLANK__1_2);
- (location__BLANK__1_7, location__BLANK__1_3);
- (location__BLANK__1_7, location__BLANK__1_4);
- (location__BLANK__1_7, location__BLANK__1_5);
- (location__BLANK__1_7, location__BLANK__1_6);
- (location__BLANK__1_7, location__BLANK__1_7);
- (location__BLANK__1_7, location__BLANK__1_8);
- (location__BLANK__1_8, location__BLANK__1_1);
- (location__BLANK__1_8, location__BLANK__1_2);
- (location__BLANK__1_8, location__BLANK__1_3);
- (location__BLANK__1_8, location__BLANK__1_4);
- (location__BLANK__1_8, location__BLANK__1_5);
- (location__BLANK__1_8, location__BLANK__1_6);
- (location__BLANK__1_8, location__BLANK__1_7);
- (location__BLANK__1_8, location__BLANK__1_8);
- (location__BLANK__2_1, location__BLANK__2_1);
- (location__BLANK__2_1, location__BLANK__2_2);
- (location__BLANK__2_1, location__BLANK__2_3);
- (location__BLANK__2_1, location__BLANK__2_4);
- (location__BLANK__2_1, location__BLANK__2_5);
- (location__BLANK__2_1, location__BLANK__2_6);
- (location__BLANK__2_1, location__BLANK__2_7);
- (location__BLANK__2_1, location__BLANK__2_8);
- (location__BLANK__2_2, location__BLANK__2_1);
- (location__BLANK__2_2, location__BLANK__2_2);
- (location__BLANK__2_2, location__BLANK__2_3);
- (location__BLANK__2_2, location__BLANK__2_4);
- (location__BLANK__2_2, location__BLANK__2_5);
- (location__BLANK__2_2, location__BLANK__2_6);
- (location__BLANK__2_2, location__BLANK__2_7);
- (location__BLANK__2_2, location__BLANK__2_8);
- (location__BLANK__2_3, location__BLANK__2_1);
- (location__BLANK__2_3, location__BLANK__2_2);
- (location__BLANK__2_3, location__BLANK__2_3);
- (location__BLANK__2_3, location__BLANK__2_4);
- (location__BLANK__2_3, location__BLANK__2_5);
- (location__BLANK__2_3, location__BLANK__2_6);
- (location__BLANK__2_3, location__BLANK__2_7);
- (location__BLANK__2_3, location__BLANK__2_8);
- (location__BLANK__2_4, location__BLANK__2_1);
- (location__BLANK__2_4, location__BLANK__2_2);
- (location__BLANK__2_4, location__BLANK__2_3);
- (location__BLANK__2_4, location__BLANK__2_4);
- (location__BLANK__2_4, location__BLANK__2_5);
- (location__BLANK__2_4, location__BLANK__2_6);
- (location__BLANK__2_4, location__BLANK__2_7);
- (location__BLANK__2_4, location__BLANK__2_8);
- (location__BLANK__2_5, location__BLANK__2_1);
- (location__BLANK__2_5, location__BLANK__2_2);
- (location__BLANK__2_5, location__BLANK__2_3);
- (location__BLANK__2_5, location__BLANK__2_4);
- (location__BLANK__2_5, location__BLANK__2_5);
- (location__BLANK__2_5, location__BLANK__2_6);
- (location__BLANK__2_5, location__BLANK__2_7);
- (location__BLANK__2_5, location__BLANK__2_8);
- (location__BLANK__2_6, location__BLANK__2_1);
- (location__BLANK__2_6, location__BLANK__2_2);
- (location__BLANK__2_6, location__BLANK__2_3);
- (location__BLANK__2_6, location__BLANK__2_4);
- (location__BLANK__2_6, location__BLANK__2_5);
- (location__BLANK__2_6, location__BLANK__2_6);
- (location__BLANK__2_6, location__BLANK__2_7);
- (location__BLANK__2_6, location__BLANK__2_8);
- (location__BLANK__2_7, location__BLANK__2_1);
- (location__BLANK__2_7, location__BLANK__2_2);
- (location__BLANK__2_7, location__BLANK__2_3);
- (location__BLANK__2_7, location__BLANK__2_4);
- (location__BLANK__2_7, location__BLANK__2_5);
- (location__BLANK__2_7, location__BLANK__2_6);
- (location__BLANK__2_7, location__BLANK__2_7);
- (location__BLANK__2_7, location__BLANK__2_8);
- (location__BLANK__2_8, location__BLANK__2_1);
- (location__BLANK__2_8, location__BLANK__2_2);
- (location__BLANK__2_8, location__BLANK__2_3);
- (location__BLANK__2_8, location__BLANK__2_4);
- (location__BLANK__2_8, location__BLANK__2_5);
- (location__BLANK__2_8, location__BLANK__2_6);
- (location__BLANK__2_8, location__BLANK__2_7);
- (location__BLANK__2_8, location__BLANK__2_8);
- (location__BLANK__3_1, location__BLANK__3_1);
- (location__BLANK__3_1, location__BLANK__3_2);
- (location__BLANK__3_1, location__BLANK__3_3);
- (location__BLANK__3_1, location__BLANK__3_4);
- (location__BLANK__3_1, location__BLANK__3_5);
- (location__BLANK__3_1, location__BLANK__3_6);
- (location__BLANK__3_1, location__BLANK__3_7);
- (location__BLANK__3_1, location__BLANK__3_8);
- (location__BLANK__3_2, location__BLANK__3_1);
- (location__BLANK__3_2, location__BLANK__3_2);
- (location__BLANK__3_2, location__BLANK__3_3);
- (location__BLANK__3_2, location__BLANK__3_4);
- (location__BLANK__3_2, location__BLANK__3_5);
- (location__BLANK__3_2, location__BLANK__3_6);
- (location__BLANK__3_2, location__BLANK__3_7);
- (location__BLANK__3_2, location__BLANK__3_8);
- (location__BLANK__3_3, location__BLANK__3_1);
- (location__BLANK__3_3, location__BLANK__3_2);
- (location__BLANK__3_3, location__BLANK__3_3);
- (location__BLANK__3_3, location__BLANK__3_4);
- (location__BLANK__3_3, location__BLANK__3_5);
- (location__BLANK__3_3, location__BLANK__3_6);
- (location__BLANK__3_3, location__BLANK__3_7);
- (location__BLANK__3_3, location__BLANK__3_8);
- (location__BLANK__3_4, location__BLANK__3_1);
- (location__BLANK__3_4, location__BLANK__3_2);
- (location__BLANK__3_4, location__BLANK__3_3);
- (location__BLANK__3_4, location__BLANK__3_4);
- (location__BLANK__3_4, location__BLANK__3_5);
- (location__BLANK__3_4, location__BLANK__3_6);
- (location__BLANK__3_4, location__BLANK__3_7);
- (location__BLANK__3_4, location__BLANK__3_8);
- (location__BLANK__3_5, location__BLANK__3_1);
- (location__BLANK__3_5, location__BLANK__3_2);
- (location__BLANK__3_5, location__BLANK__3_3);
- (location__BLANK__3_5, location__BLANK__3_4);
- (location__BLANK__3_5, location__BLANK__3_5);
- (location__BLANK__3_5, location__BLANK__3_6);
- (location__BLANK__3_5, location__BLANK__3_7);
- (location__BLANK__3_5, location__BLANK__3_8);
- (location__BLANK__3_6, location__BLANK__3_1);
- (location__BLANK__3_6, location__BLANK__3_2);
- (location__BLANK__3_6, location__BLANK__3_3);
- (location__BLANK__3_6, location__BLANK__3_4);
- (location__BLANK__3_6, location__BLANK__3_5);
- (location__BLANK__3_6, location__BLANK__3_6);
- (location__BLANK__3_6, location__BLANK__3_7);
- (location__BLANK__3_6, location__BLANK__3_8);
- (location__BLANK__3_7, location__BLANK__3_1);
- (location__BLANK__3_7, location__BLANK__3_2);
- (location__BLANK__3_7, location__BLANK__3_3);
- (location__BLANK__3_7, location__BLANK__3_4);
- (location__BLANK__3_7, location__BLANK__3_5);
- (location__BLANK__3_7, location__BLANK__3_6);
- (location__BLANK__3_7, location__BLANK__3_7);
- (location__BLANK__3_7, location__BLANK__3_8);
- (location__BLANK__3_8, location__BLANK__3_1);
- (location__BLANK__3_8, location__BLANK__3_2);
- (location__BLANK__3_8, location__BLANK__3_3);
- (location__BLANK__3_8, location__BLANK__3_4);
- (location__BLANK__3_8, location__BLANK__3_5);
- (location__BLANK__3_8, location__BLANK__3_6);
- (location__BLANK__3_8, location__BLANK__3_7);
- (location__BLANK__3_8, location__BLANK__3_8);
- (location__BLANK__4_1, location__BLANK__4_1);
- (location__BLANK__4_1, location__BLANK__4_2);
- (location__BLANK__4_1, location__BLANK__4_3);
- (location__BLANK__4_1, location__BLANK__4_4);
- (location__BLANK__4_1, location__BLANK__4_5);
- (location__BLANK__4_1, location__BLANK__4_6);
- (location__BLANK__4_1, location__BLANK__4_7);
- (location__BLANK__4_1, location__BLANK__4_8);
- (location__BLANK__4_2, location__BLANK__4_1);
- (location__BLANK__4_2, location__BLANK__4_2);
- (location__BLANK__4_2, location__BLANK__4_3);
- (location__BLANK__4_2, location__BLANK__4_4);
- (location__BLANK__4_2, location__BLANK__4_5);
- (location__BLANK__4_2, location__BLANK__4_6);
- (location__BLANK__4_2, location__BLANK__4_7);
- (location__BLANK__4_2, location__BLANK__4_8);
- (location__BLANK__4_3, location__BLANK__4_1);
- (location__BLANK__4_3, location__BLANK__4_2);
- (location__BLANK__4_3, location__BLANK__4_3);
- (location__BLANK__4_3, location__BLANK__4_4);
- (location__BLANK__4_3, location__BLANK__4_5);
- (location__BLANK__4_3, location__BLANK__4_6);
- (location__BLANK__4_3, location__BLANK__4_7);
- (location__BLANK__4_3, location__BLANK__4_8);
- (location__BLANK__4_4, location__BLANK__4_1);
- (location__BLANK__4_4, location__BLANK__4_2);
- (location__BLANK__4_4, location__BLANK__4_3);
- (location__BLANK__4_4, location__BLANK__4_4);
- (location__BLANK__4_4, location__BLANK__4_5);
- (location__BLANK__4_4, location__BLANK__4_6);
- (location__BLANK__4_4, location__BLANK__4_7);
- (location__BLANK__4_4, location__BLANK__4_8);
- (location__BLANK__4_5, location__BLANK__4_1);
- (location__BLANK__4_5, location__BLANK__4_2);
- (location__BLANK__4_5, location__BLANK__4_3);
- (location__BLANK__4_5, location__BLANK__4_4);
- (location__BLANK__4_5, location__BLANK__4_5);
- (location__BLANK__4_5, location__BLANK__4_6);
- (location__BLANK__4_5, location__BLANK__4_7);
- (location__BLANK__4_5, location__BLANK__4_8);
- (location__BLANK__4_6, location__BLANK__4_1);
- (location__BLANK__4_6, location__BLANK__4_2);
- (location__BLANK__4_6, location__BLANK__4_3);
- (location__BLANK__4_6, location__BLANK__4_4);
- (location__BLANK__4_6, location__BLANK__4_5);
- (location__BLANK__4_6, location__BLANK__4_6);
- (location__BLANK__4_6, location__BLANK__4_7);
- (location__BLANK__4_6, location__BLANK__4_8);
- (location__BLANK__4_7, location__BLANK__4_1);
- (location__BLANK__4_7, location__BLANK__4_2);
- (location__BLANK__4_7, location__BLANK__4_3);
- (location__BLANK__4_7, location__BLANK__4_4);
- (location__BLANK__4_7, location__BLANK__4_5);
- (location__BLANK__4_7, location__BLANK__4_6);
- (location__BLANK__4_7, location__BLANK__4_7);
- (location__BLANK__4_7, location__BLANK__4_8);
- (location__BLANK__4_8, location__BLANK__4_1);
- (location__BLANK__4_8, location__BLANK__4_2);
- (location__BLANK__4_8, location__BLANK__4_3);
- (location__BLANK__4_8, location__BLANK__4_4);
- (location__BLANK__4_8, location__BLANK__4_5);
- (location__BLANK__4_8, location__BLANK__4_6);
- (location__BLANK__4_8, location__BLANK__4_7);
- (location__BLANK__4_8, location__BLANK__4_8);
- (location__BLANK__5_1, location__BLANK__5_1);
- (location__BLANK__5_1, location__BLANK__5_2);
- (location__BLANK__5_1, location__BLANK__5_3);
- (location__BLANK__5_1, location__BLANK__5_4);
- (location__BLANK__5_1, location__BLANK__5_5);
- (location__BLANK__5_1, location__BLANK__5_6);
- (location__BLANK__5_1, location__BLANK__5_7);
- (location__BLANK__5_1, location__BLANK__5_8);
- (location__BLANK__5_2, location__BLANK__5_1);
- (location__BLANK__5_2, location__BLANK__5_2);
- (location__BLANK__5_2, location__BLANK__5_3);
- (location__BLANK__5_2, location__BLANK__5_4);
- (location__BLANK__5_2, location__BLANK__5_5);
- (location__BLANK__5_2, location__BLANK__5_6);
- (location__BLANK__5_2, location__BLANK__5_7);
- (location__BLANK__5_2, location__BLANK__5_8);
- (location__BLANK__5_3, location__BLANK__5_1);
- (location__BLANK__5_3, location__BLANK__5_2);
- (location__BLANK__5_3, location__BLANK__5_3);
- (location__BLANK__5_3, location__BLANK__5_4);
- (location__BLANK__5_3, location__BLANK__5_5);
- (location__BLANK__5_3, location__BLANK__5_6);
- (location__BLANK__5_3, location__BLANK__5_7);
- (location__BLANK__5_3, location__BLANK__5_8);
- (location__BLANK__5_4, location__BLANK__5_1);
- (location__BLANK__5_4, location__BLANK__5_2);
- (location__BLANK__5_4, location__BLANK__5_3);
- (location__BLANK__5_4, location__BLANK__5_4);
- (location__BLANK__5_4, location__BLANK__5_5);
- (location__BLANK__5_4, location__BLANK__5_6);
- (location__BLANK__5_4, location__BLANK__5_7);
- (location__BLANK__5_4, location__BLANK__5_8);
- (location__BLANK__5_5, location__BLANK__5_1);
- (location__BLANK__5_5, location__BLANK__5_2);
- (location__BLANK__5_5, location__BLANK__5_3);
- (location__BLANK__5_5, location__BLANK__5_4);
- (location__BLANK__5_5, location__BLANK__5_5);
- (location__BLANK__5_5, location__BLANK__5_6);
- (location__BLANK__5_5, location__BLANK__5_7);
- (location__BLANK__5_5, location__BLANK__5_8);
- (location__BLANK__5_6, location__BLANK__5_1);
- (location__BLANK__5_6, location__BLANK__5_2);
- (location__BLANK__5_6, location__BLANK__5_3);
- (location__BLANK__5_6, location__BLANK__5_4);
- (location__BLANK__5_6, location__BLANK__5_5);
- (location__BLANK__5_6, location__BLANK__5_6);
- (location__BLANK__5_6, location__BLANK__5_7);
- (location__BLANK__5_6, location__BLANK__5_8);
- (location__BLANK__5_7, location__BLANK__5_1);
- (location__BLANK__5_7, location__BLANK__5_2);
- (location__BLANK__5_7, location__BLANK__5_3);
- (location__BLANK__5_7, location__BLANK__5_4);
- (location__BLANK__5_7, location__BLANK__5_5);
- (location__BLANK__5_7, location__BLANK__5_6);
- (location__BLANK__5_7, location__BLANK__5_7);
- (location__BLANK__5_7, location__BLANK__5_8);
- (location__BLANK__5_8, location__BLANK__5_1);
- (location__BLANK__5_8, location__BLANK__5_2);
- (location__BLANK__5_8, location__BLANK__5_3);
- (location__BLANK__5_8, location__BLANK__5_4);
- (location__BLANK__5_8, location__BLANK__5_5);
- (location__BLANK__5_8, location__BLANK__5_6);
- (location__BLANK__5_8, location__BLANK__5_7);
- (location__BLANK__5_8, location__BLANK__5_8);
- (location__BLANK__6_1, location__BLANK__6_1);
- (location__BLANK__6_1, location__BLANK__6_2);
- (location__BLANK__6_1, location__BLANK__6_3);
- (location__BLANK__6_1, location__BLANK__6_4);
- (location__BLANK__6_1, location__BLANK__6_5);
- (location__BLANK__6_1, location__BLANK__6_6);
- (location__BLANK__6_1, location__BLANK__6_7);
- (location__BLANK__6_1, location__BLANK__6_8);
- (location__BLANK__6_2, location__BLANK__6_1);
- (location__BLANK__6_2, location__BLANK__6_2);
- (location__BLANK__6_2, location__BLANK__6_3);
- (location__BLANK__6_2, location__BLANK__6_4);
- (location__BLANK__6_2, location__BLANK__6_5);
- (location__BLANK__6_2, location__BLANK__6_6);
- (location__BLANK__6_2, location__BLANK__6_7);
- (location__BLANK__6_2, location__BLANK__6_8);
- (location__BLANK__6_3, location__BLANK__6_1);
- (location__BLANK__6_3, location__BLANK__6_2);
- (location__BLANK__6_3, location__BLANK__6_3);
- (location__BLANK__6_3, location__BLANK__6_4);
- (location__BLANK__6_3, location__BLANK__6_5);
- (location__BLANK__6_3, location__BLANK__6_6);
- (location__BLANK__6_3, location__BLANK__6_7);
- (location__BLANK__6_3, location__BLANK__6_8);
- (location__BLANK__6_4, location__BLANK__6_1);
- (location__BLANK__6_4, location__BLANK__6_2);
- (location__BLANK__6_4, location__BLANK__6_3);
- (location__BLANK__6_4, location__BLANK__6_4);
- (location__BLANK__6_4, location__BLANK__6_5);
- (location__BLANK__6_4, location__BLANK__6_6);
- (location__BLANK__6_4, location__BLANK__6_7);
- (location__BLANK__6_4, location__BLANK__6_8);
- (location__BLANK__6_5, location__BLANK__6_1);
- (location__BLANK__6_5, location__BLANK__6_2);
- (location__BLANK__6_5, location__BLANK__6_3);
- (location__BLANK__6_5, location__BLANK__6_4);
- (location__BLANK__6_5, location__BLANK__6_5);
- (location__BLANK__6_5, location__BLANK__6_6);
- (location__BLANK__6_5, location__BLANK__6_7);
- (location__BLANK__6_5, location__BLANK__6_8);
- (location__BLANK__6_6, location__BLANK__6_1);
- (location__BLANK__6_6, location__BLANK__6_2);
- (location__BLANK__6_6, location__BLANK__6_3);
- (location__BLANK__6_6, location__BLANK__6_4);
- (location__BLANK__6_6, location__BLANK__6_5);
- (location__BLANK__6_6, location__BLANK__6_6);
- (location__BLANK__6_6, location__BLANK__6_7);
- (location__BLANK__6_6, location__BLANK__6_8);
- (location__BLANK__6_7, location__BLANK__6_1);
- (location__BLANK__6_7, location__BLANK__6_2);
- (location__BLANK__6_7, location__BLANK__6_3);
- (location__BLANK__6_7, location__BLANK__6_4);
- (location__BLANK__6_7, location__BLANK__6_5);
- (location__BLANK__6_7, location__BLANK__6_6);
- (location__BLANK__6_7, location__BLANK__6_7);
- (location__BLANK__6_7, location__BLANK__6_8);
- (location__BLANK__6_8, location__BLANK__6_1);
- (location__BLANK__6_8, location__BLANK__6_2);
- (location__BLANK__6_8, location__BLANK__6_3);
- (location__BLANK__6_8, location__BLANK__6_4);
- (location__BLANK__6_8, location__BLANK__6_5);
- (location__BLANK__6_8, location__BLANK__6_6);
- (location__BLANK__6_8, location__BLANK__6_7);
- (location__BLANK__6_8, location__BLANK__6_8);
- (location__BLANK__7_1, location__BLANK__7_1);
- (location__BLANK__7_1, location__BLANK__7_2);
- (location__BLANK__7_1, location__BLANK__7_3);
- (location__BLANK__7_1, location__BLANK__7_4);
- (location__BLANK__7_1, location__BLANK__7_5);
- (location__BLANK__7_1, location__BLANK__7_6);
- (location__BLANK__7_1, location__BLANK__7_7);
- (location__BLANK__7_1, location__BLANK__7_8);
- (location__BLANK__7_2, location__BLANK__7_1);
- (location__BLANK__7_2, location__BLANK__7_2);
- (location__BLANK__7_2, location__BLANK__7_3);
- (location__BLANK__7_2, location__BLANK__7_4);
- (location__BLANK__7_2, location__BLANK__7_5);
- (location__BLANK__7_2, location__BLANK__7_6);
- (location__BLANK__7_2, location__BLANK__7_7);
- (location__BLANK__7_2, location__BLANK__7_8);
- (location__BLANK__7_3, location__BLANK__7_1);
- (location__BLANK__7_3, location__BLANK__7_2);
- (location__BLANK__7_3, location__BLANK__7_3);
- (location__BLANK__7_3, location__BLANK__7_4);
- (location__BLANK__7_3, location__BLANK__7_5);
- (location__BLANK__7_3, location__BLANK__7_6);
- (location__BLANK__7_3, location__BLANK__7_7);
- (location__BLANK__7_3, location__BLANK__7_8);
- (location__BLANK__7_4, location__BLANK__7_1);
- (location__BLANK__7_4, location__BLANK__7_2);
- (location__BLANK__7_4, location__BLANK__7_3);
- (location__BLANK__7_4, location__BLANK__7_4);
- (location__BLANK__7_4, location__BLANK__7_5);
- (location__BLANK__7_4, location__BLANK__7_6);
- (location__BLANK__7_4, location__BLANK__7_7);
- (location__BLANK__7_4, location__BLANK__7_8);
- (location__BLANK__7_5, location__BLANK__7_1);
- (location__BLANK__7_5, location__BLANK__7_2);
- (location__BLANK__7_5, location__BLANK__7_3);
- (location__BLANK__7_5, location__BLANK__7_4);
- (location__BLANK__7_5, location__BLANK__7_5);
- (location__BLANK__7_5, location__BLANK__7_6);
- (location__BLANK__7_5, location__BLANK__7_7);
- (location__BLANK__7_5, location__BLANK__7_8);
- (location__BLANK__7_6, location__BLANK__7_1);
- (location__BLANK__7_6, location__BLANK__7_2);
- (location__BLANK__7_6, location__BLANK__7_3);
- (location__BLANK__7_6, location__BLANK__7_4);
- (location__BLANK__7_6, location__BLANK__7_5);
- (location__BLANK__7_6, location__BLANK__7_6);
- (location__BLANK__7_6, location__BLANK__7_7);
- (location__BLANK__7_6, location__BLANK__7_8);
- (location__BLANK__7_7, location__BLANK__7_1);
- (location__BLANK__7_7, location__BLANK__7_2);
- (location__BLANK__7_7, location__BLANK__7_3);
- (location__BLANK__7_7, location__BLANK__7_4);
- (location__BLANK__7_7, location__BLANK__7_5);
- (location__BLANK__7_7, location__BLANK__7_6);
- (location__BLANK__7_7, location__BLANK__7_7);
- (location__BLANK__7_7, location__BLANK__7_8);
- (location__BLANK__7_8, location__BLANK__7_1);
- (location__BLANK__7_8, location__BLANK__7_2);
- (location__BLANK__7_8, location__BLANK__7_3);
- (location__BLANK__7_8, location__BLANK__7_4);
- (location__BLANK__7_8, location__BLANK__7_5);
- (location__BLANK__7_8, location__BLANK__7_6);
- (location__BLANK__7_8, location__BLANK__7_7);
- (location__BLANK__7_8, location__BLANK__7_8);
- (location__BLANK__8_1, location__BLANK__8_1);
- (location__BLANK__8_1, location__BLANK__8_2);
- (location__BLANK__8_1, location__BLANK__8_3);
- (location__BLANK__8_1, location__BLANK__8_4);
- (location__BLANK__8_1, location__BLANK__8_5);
- (location__BLANK__8_1, location__BLANK__8_6);
- (location__BLANK__8_1, location__BLANK__8_7);
- (location__BLANK__8_1, location__BLANK__8_8);
- (location__BLANK__8_2, location__BLANK__8_1);
- (location__BLANK__8_2, location__BLANK__8_2);
- (location__BLANK__8_2, location__BLANK__8_3);
- (location__BLANK__8_2, location__BLANK__8_4);
- (location__BLANK__8_2, location__BLANK__8_5);
- (location__BLANK__8_2, location__BLANK__8_6);
- (location__BLANK__8_2, location__BLANK__8_7);
- (location__BLANK__8_2, location__BLANK__8_8);
- (location__BLANK__8_3, location__BLANK__8_1);
- (location__BLANK__8_3, location__BLANK__8_2);
- (location__BLANK__8_3, location__BLANK__8_3);
- (location__BLANK__8_3, location__BLANK__8_4);
- (location__BLANK__8_3, location__BLANK__8_5);
- (location__BLANK__8_3, location__BLANK__8_6);
- (location__BLANK__8_3, location__BLANK__8_7);
- (location__BLANK__8_3, location__BLANK__8_8);
- (location__BLANK__8_4, location__BLANK__8_1);
- (location__BLANK__8_4, location__BLANK__8_2);
- (location__BLANK__8_4, location__BLANK__8_3);
- (location__BLANK__8_4, location__BLANK__8_4);
- (location__BLANK__8_4, location__BLANK__8_5);
- (location__BLANK__8_4, location__BLANK__8_6);
- (location__BLANK__8_4, location__BLANK__8_7);
- (location__BLANK__8_4, location__BLANK__8_8);
- (location__BLANK__8_5, location__BLANK__8_1);
- (location__BLANK__8_5, location__BLANK__8_2);
- (location__BLANK__8_5, location__BLANK__8_3);
- (location__BLANK__8_5, location__BLANK__8_4);
- (location__BLANK__8_5, location__BLANK__8_5);
- (location__BLANK__8_5, location__BLANK__8_6);
- (location__BLANK__8_5, location__BLANK__8_7);
- (location__BLANK__8_5, location__BLANK__8_8);
- (location__BLANK__8_6, location__BLANK__8_1);
- (location__BLANK__8_6, location__BLANK__8_2);
- (location__BLANK__8_6, location__BLANK__8_3);
- (location__BLANK__8_6, location__BLANK__8_4);
- (location__BLANK__8_6, location__BLANK__8_5);
- (location__BLANK__8_6, location__BLANK__8_6);
- (location__BLANK__8_6, location__BLANK__8_7);
- (location__BLANK__8_6, location__BLANK__8_8);
- (location__BLANK__8_7, location__BLANK__8_1);
- (location__BLANK__8_7, location__BLANK__8_2);
- (location__BLANK__8_7, location__BLANK__8_3);
- (location__BLANK__8_7, location__BLANK__8_4);
- (location__BLANK__8_7, location__BLANK__8_5);
- (location__BLANK__8_7, location__BLANK__8_6);
- (location__BLANK__8_7, location__BLANK__8_7);
- (location__BLANK__8_7, location__BLANK__8_8);
- (location__BLANK__8_8, location__BLANK__8_1);
- (location__BLANK__8_8, location__BLANK__8_2);
- (location__BLANK__8_8, location__BLANK__8_3);
- (location__BLANK__8_8, location__BLANK__8_4);
- (location__BLANK__8_8, location__BLANK__8_5);
- (location__BLANK__8_8, location__BLANK__8_6);
- (location__BLANK__8_8, location__BLANK__8_7);
- (location__BLANK__8_8, location__BLANK__8_8)
- };
- EQ___location_2__location_2 {
- (location__BLANK__1_1, location__BLANK__1_1);
- (location__BLANK__1_1, location__BLANK__2_1);
- (location__BLANK__1_1, location__BLANK__3_1);
- (location__BLANK__1_1, location__BLANK__4_1);
- (location__BLANK__1_1, location__BLANK__5_1);
- (location__BLANK__1_1, location__BLANK__6_1);
- (location__BLANK__1_1, location__BLANK__7_1);
- (location__BLANK__1_1, location__BLANK__8_1);
- (location__BLANK__1_2, location__BLANK__1_2);
- (location__BLANK__1_2, location__BLANK__2_2);
- (location__BLANK__1_2, location__BLANK__3_2);
- (location__BLANK__1_2, location__BLANK__4_2);
- (location__BLANK__1_2, location__BLANK__5_2);
- (location__BLANK__1_2, location__BLANK__6_2);
- (location__BLANK__1_2, location__BLANK__7_2);
- (location__BLANK__1_2, location__BLANK__8_2);
- (location__BLANK__1_3, location__BLANK__1_3);
- (location__BLANK__1_3, location__BLANK__2_3);
- (location__BLANK__1_3, location__BLANK__3_3);
- (location__BLANK__1_3, location__BLANK__4_3);
- (location__BLANK__1_3, location__BLANK__5_3);
- (location__BLANK__1_3, location__BLANK__6_3);
- (location__BLANK__1_3, location__BLANK__7_3);
- (location__BLANK__1_3, location__BLANK__8_3);
- (location__BLANK__1_4, location__BLANK__1_4);
- (location__BLANK__1_4, location__BLANK__2_4);
- (location__BLANK__1_4, location__BLANK__3_4);
- (location__BLANK__1_4, location__BLANK__4_4);
- (location__BLANK__1_4, location__BLANK__5_4);
- (location__BLANK__1_4, location__BLANK__6_4);
- (location__BLANK__1_4, location__BLANK__7_4);
- (location__BLANK__1_4, location__BLANK__8_4);
- (location__BLANK__1_5, location__BLANK__1_5);
- (location__BLANK__1_5, location__BLANK__2_5);
- (location__BLANK__1_5, location__BLANK__3_5);
- (location__BLANK__1_5, location__BLANK__4_5);
- (location__BLANK__1_5, location__BLANK__5_5);
- (location__BLANK__1_5, location__BLANK__6_5);
- (location__BLANK__1_5, location__BLANK__7_5);
- (location__BLANK__1_5, location__BLANK__8_5);
- (location__BLANK__1_6, location__BLANK__1_6);
- (location__BLANK__1_6, location__BLANK__2_6);
- (location__BLANK__1_6, location__BLANK__3_6);
- (location__BLANK__1_6, location__BLANK__4_6);
- (location__BLANK__1_6, location__BLANK__5_6);
- (location__BLANK__1_6, location__BLANK__6_6);
- (location__BLANK__1_6, location__BLANK__7_6);
- (location__BLANK__1_6, location__BLANK__8_6);
- (location__BLANK__1_7, location__BLANK__1_7);
- (location__BLANK__1_7, location__BLANK__2_7);
- (location__BLANK__1_7, location__BLANK__3_7);
- (location__BLANK__1_7, location__BLANK__4_7);
- (location__BLANK__1_7, location__BLANK__5_7);
- (location__BLANK__1_7, location__BLANK__6_7);
- (location__BLANK__1_7, location__BLANK__7_7);
- (location__BLANK__1_7, location__BLANK__8_7);
- (location__BLANK__1_8, location__BLANK__1_8);
- (location__BLANK__1_8, location__BLANK__2_8);
- (location__BLANK__1_8, location__BLANK__3_8);
- (location__BLANK__1_8, location__BLANK__4_8);
- (location__BLANK__1_8, location__BLANK__5_8);
- (location__BLANK__1_8, location__BLANK__6_8);
- (location__BLANK__1_8, location__BLANK__7_8);
- (location__BLANK__1_8, location__BLANK__8_8);
- (location__BLANK__2_1, location__BLANK__1_1);
- (location__BLANK__2_1, location__BLANK__2_1);
- (location__BLANK__2_1, location__BLANK__3_1);
- (location__BLANK__2_1, location__BLANK__4_1);
- (location__BLANK__2_1, location__BLANK__5_1);
- (location__BLANK__2_1, location__BLANK__6_1);
- (location__BLANK__2_1, location__BLANK__7_1);
- (location__BLANK__2_1, location__BLANK__8_1);
- (location__BLANK__2_2, location__BLANK__1_2);
- (location__BLANK__2_2, location__BLANK__2_2);
- (location__BLANK__2_2, location__BLANK__3_2);
- (location__BLANK__2_2, location__BLANK__4_2);
- (location__BLANK__2_2, location__BLANK__5_2);
- (location__BLANK__2_2, location__BLANK__6_2);
- (location__BLANK__2_2, location__BLANK__7_2);
- (location__BLANK__2_2, location__BLANK__8_2);
- (location__BLANK__2_3, location__BLANK__1_3);
- (location__BLANK__2_3, location__BLANK__2_3);
- (location__BLANK__2_3, location__BLANK__3_3);
- (location__BLANK__2_3, location__BLANK__4_3);
- (location__BLANK__2_3, location__BLANK__5_3);
- (location__BLANK__2_3, location__BLANK__6_3);
- (location__BLANK__2_3, location__BLANK__7_3);
- (location__BLANK__2_3, location__BLANK__8_3);
- (location__BLANK__2_4, location__BLANK__1_4);
- (location__BLANK__2_4, location__BLANK__2_4);
- (location__BLANK__2_4, location__BLANK__3_4);
- (location__BLANK__2_4, location__BLANK__4_4);
- (location__BLANK__2_4, location__BLANK__5_4);
- (location__BLANK__2_4, location__BLANK__6_4);
- (location__BLANK__2_4, location__BLANK__7_4);
- (location__BLANK__2_4, location__BLANK__8_4);
- (location__BLANK__2_5, location__BLANK__1_5);
- (location__BLANK__2_5, location__BLANK__2_5);
- (location__BLANK__2_5, location__BLANK__3_5);
- (location__BLANK__2_5, location__BLANK__4_5);
- (location__BLANK__2_5, location__BLANK__5_5);
- (location__BLANK__2_5, location__BLANK__6_5);
- (location__BLANK__2_5, location__BLANK__7_5);
- (location__BLANK__2_5, location__BLANK__8_5);
- (location__BLANK__2_6, location__BLANK__1_6);
- (location__BLANK__2_6, location__BLANK__2_6);
- (location__BLANK__2_6, location__BLANK__3_6);
- (location__BLANK__2_6, location__BLANK__4_6);
- (location__BLANK__2_6, location__BLANK__5_6);
- (location__BLANK__2_6, location__BLANK__6_6);
- (location__BLANK__2_6, location__BLANK__7_6);
- (location__BLANK__2_6, location__BLANK__8_6);
- (location__BLANK__2_7, location__BLANK__1_7);
- (location__BLANK__2_7, location__BLANK__2_7);
- (location__BLANK__2_7, location__BLANK__3_7);
- (location__BLANK__2_7, location__BLANK__4_7);
- (location__BLANK__2_7, location__BLANK__5_7);
- (location__BLANK__2_7, location__BLANK__6_7);
- (location__BLANK__2_7, location__BLANK__7_7);
- (location__BLANK__2_7, location__BLANK__8_7);
- (location__BLANK__2_8, location__BLANK__1_8);
- (location__BLANK__2_8, location__BLANK__2_8);
- (location__BLANK__2_8, location__BLANK__3_8);
- (location__BLANK__2_8, location__BLANK__4_8);
- (location__BLANK__2_8, location__BLANK__5_8);
- (location__BLANK__2_8, location__BLANK__6_8);
- (location__BLANK__2_8, location__BLANK__7_8);
- (location__BLANK__2_8, location__BLANK__8_8);
- (location__BLANK__3_1, location__BLANK__1_1);
- (location__BLANK__3_1, location__BLANK__2_1);
- (location__BLANK__3_1, location__BLANK__3_1);
- (location__BLANK__3_1, location__BLANK__4_1);
- (location__BLANK__3_1, location__BLANK__5_1);
- (location__BLANK__3_1, location__BLANK__6_1);
- (location__BLANK__3_1, location__BLANK__7_1);
- (location__BLANK__3_1, location__BLANK__8_1);
- (location__BLANK__3_2, location__BLANK__1_2);
- (location__BLANK__3_2, location__BLANK__2_2);
- (location__BLANK__3_2, location__BLANK__3_2);
- (location__BLANK__3_2, location__BLANK__4_2);
- (location__BLANK__3_2, location__BLANK__5_2);
- (location__BLANK__3_2, location__BLANK__6_2);
- (location__BLANK__3_2, location__BLANK__7_2);
- (location__BLANK__3_2, location__BLANK__8_2);
- (location__BLANK__3_3, location__BLANK__1_3);
- (location__BLANK__3_3, location__BLANK__2_3);
- (location__BLANK__3_3, location__BLANK__3_3);
- (location__BLANK__3_3, location__BLANK__4_3);
- (location__BLANK__3_3, location__BLANK__5_3);
- (location__BLANK__3_3, location__BLANK__6_3);
- (location__BLANK__3_3, location__BLANK__7_3);
- (location__BLANK__3_3, location__BLANK__8_3);
- (location__BLANK__3_4, location__BLANK__1_4);
- (location__BLANK__3_4, location__BLANK__2_4);
- (location__BLANK__3_4, location__BLANK__3_4);
- (location__BLANK__3_4, location__BLANK__4_4);
- (location__BLANK__3_4, location__BLANK__5_4);
- (location__BLANK__3_4, location__BLANK__6_4);
- (location__BLANK__3_4, location__BLANK__7_4);
- (location__BLANK__3_4, location__BLANK__8_4);
- (location__BLANK__3_5, location__BLANK__1_5);
- (location__BLANK__3_5, location__BLANK__2_5);
- (location__BLANK__3_5, location__BLANK__3_5);
- (location__BLANK__3_5, location__BLANK__4_5);
- (location__BLANK__3_5, location__BLANK__5_5);
- (location__BLANK__3_5, location__BLANK__6_5);
- (location__BLANK__3_5, location__BLANK__7_5);
- (location__BLANK__3_5, location__BLANK__8_5);
- (location__BLANK__3_6, location__BLANK__1_6);
- (location__BLANK__3_6, location__BLANK__2_6);
- (location__BLANK__3_6, location__BLANK__3_6);
- (location__BLANK__3_6, location__BLANK__4_6);
- (location__BLANK__3_6, location__BLANK__5_6);
- (location__BLANK__3_6, location__BLANK__6_6);
- (location__BLANK__3_6, location__BLANK__7_6);
- (location__BLANK__3_6, location__BLANK__8_6);
- (location__BLANK__3_7, location__BLANK__1_7);
- (location__BLANK__3_7, location__BLANK__2_7);
- (location__BLANK__3_7, location__BLANK__3_7);
- (location__BLANK__3_7, location__BLANK__4_7);
- (location__BLANK__3_7, location__BLANK__5_7);
- (location__BLANK__3_7, location__BLANK__6_7);
- (location__BLANK__3_7, location__BLANK__7_7);
- (location__BLANK__3_7, location__BLANK__8_7);
- (location__BLANK__3_8, location__BLANK__1_8);
- (location__BLANK__3_8, location__BLANK__2_8);
- (location__BLANK__3_8, location__BLANK__3_8);
- (location__BLANK__3_8, location__BLANK__4_8);
- (location__BLANK__3_8, location__BLANK__5_8);
- (location__BLANK__3_8, location__BLANK__6_8);
- (location__BLANK__3_8, location__BLANK__7_8);
- (location__BLANK__3_8, location__BLANK__8_8);
- (location__BLANK__4_1, location__BLANK__1_1);
- (location__BLANK__4_1, location__BLANK__2_1);
- (location__BLANK__4_1, location__BLANK__3_1);
- (location__BLANK__4_1, location__BLANK__4_1);
- (location__BLANK__4_1, location__BLANK__5_1);
- (location__BLANK__4_1, location__BLANK__6_1);
- (location__BLANK__4_1, location__BLANK__7_1);
- (location__BLANK__4_1, location__BLANK__8_1);
- (location__BLANK__4_2, location__BLANK__1_2);
- (location__BLANK__4_2, location__BLANK__2_2);
- (location__BLANK__4_2, location__BLANK__3_2);
- (location__BLANK__4_2, location__BLANK__4_2);
- (location__BLANK__4_2, location__BLANK__5_2);
- (location__BLANK__4_2, location__BLANK__6_2);
- (location__BLANK__4_2, location__BLANK__7_2);
- (location__BLANK__4_2, location__BLANK__8_2);
- (location__BLANK__4_3, location__BLANK__1_3);
- (location__BLANK__4_3, location__BLANK__2_3);
- (location__BLANK__4_3, location__BLANK__3_3);
- (location__BLANK__4_3, location__BLANK__4_3);
- (location__BLANK__4_3, location__BLANK__5_3);
- (location__BLANK__4_3, location__BLANK__6_3);
- (location__BLANK__4_3, location__BLANK__7_3);
- (location__BLANK__4_3, location__BLANK__8_3);
- (location__BLANK__4_4, location__BLANK__1_4);
- (location__BLANK__4_4, location__BLANK__2_4);
- (location__BLANK__4_4, location__BLANK__3_4);
- (location__BLANK__4_4, location__BLANK__4_4);
- (location__BLANK__4_4, location__BLANK__5_4);
- (location__BLANK__4_4, location__BLANK__6_4);
- (location__BLANK__4_4, location__BLANK__7_4);
- (location__BLANK__4_4, location__BLANK__8_4);
- (location__BLANK__4_5, location__BLANK__1_5);
- (location__BLANK__4_5, location__BLANK__2_5);
- (location__BLANK__4_5, location__BLANK__3_5);
- (location__BLANK__4_5, location__BLANK__4_5);
- (location__BLANK__4_5, location__BLANK__5_5);
- (location__BLANK__4_5, location__BLANK__6_5);
- (location__BLANK__4_5, location__BLANK__7_5);
- (location__BLANK__4_5, location__BLANK__8_5);
- (location__BLANK__4_6, location__BLANK__1_6);
- (location__BLANK__4_6, location__BLANK__2_6);
- (location__BLANK__4_6, location__BLANK__3_6);
- (location__BLANK__4_6, location__BLANK__4_6);
- (location__BLANK__4_6, location__BLANK__5_6);
- (location__BLANK__4_6, location__BLANK__6_6);
- (location__BLANK__4_6, location__BLANK__7_6);
- (location__BLANK__4_6, location__BLANK__8_6);
- (location__BLANK__4_7, location__BLANK__1_7);
- (location__BLANK__4_7, location__BLANK__2_7);
- (location__BLANK__4_7, location__BLANK__3_7);
- (location__BLANK__4_7, location__BLANK__4_7);
- (location__BLANK__4_7, location__BLANK__5_7);
- (location__BLANK__4_7, location__BLANK__6_7);
- (location__BLANK__4_7, location__BLANK__7_7);
- (location__BLANK__4_7, location__BLANK__8_7);
- (location__BLANK__4_8, location__BLANK__1_8);
- (location__BLANK__4_8, location__BLANK__2_8);
- (location__BLANK__4_8, location__BLANK__3_8);
- (location__BLANK__4_8, location__BLANK__4_8);
- (location__BLANK__4_8, location__BLANK__5_8);
- (location__BLANK__4_8, location__BLANK__6_8);
- (location__BLANK__4_8, location__BLANK__7_8);
- (location__BLANK__4_8, location__BLANK__8_8);
- (location__BLANK__5_1, location__BLANK__1_1);
- (location__BLANK__5_1, location__BLANK__2_1);
- (location__BLANK__5_1, location__BLANK__3_1);
- (location__BLANK__5_1, location__BLANK__4_1);
- (location__BLANK__5_1, location__BLANK__5_1);
- (location__BLANK__5_1, location__BLANK__6_1);
- (location__BLANK__5_1, location__BLANK__7_1);
- (location__BLANK__5_1, location__BLANK__8_1);
- (location__BLANK__5_2, location__BLANK__1_2);
- (location__BLANK__5_2, location__BLANK__2_2);
- (location__BLANK__5_2, location__BLANK__3_2);
- (location__BLANK__5_2, location__BLANK__4_2);
- (location__BLANK__5_2, location__BLANK__5_2);
- (location__BLANK__5_2, location__BLANK__6_2);
- (location__BLANK__5_2, location__BLANK__7_2);
- (location__BLANK__5_2, location__BLANK__8_2);
- (location__BLANK__5_3, location__BLANK__1_3);
- (location__BLANK__5_3, location__BLANK__2_3);
- (location__BLANK__5_3, location__BLANK__3_3);
- (location__BLANK__5_3, location__BLANK__4_3);
- (location__BLANK__5_3, location__BLANK__5_3);
- (location__BLANK__5_3, location__BLANK__6_3);
- (location__BLANK__5_3, location__BLANK__7_3);
- (location__BLANK__5_3, location__BLANK__8_3);
- (location__BLANK__5_4, location__BLANK__1_4);
- (location__BLANK__5_4, location__BLANK__2_4);
- (location__BLANK__5_4, location__BLANK__3_4);
- (location__BLANK__5_4, location__BLANK__4_4);
- (location__BLANK__5_4, location__BLANK__5_4);
- (location__BLANK__5_4, location__BLANK__6_4);
- (location__BLANK__5_4, location__BLANK__7_4);
- (location__BLANK__5_4, location__BLANK__8_4);
- (location__BLANK__5_5, location__BLANK__1_5);
- (location__BLANK__5_5, location__BLANK__2_5);
- (location__BLANK__5_5, location__BLANK__3_5);
- (location__BLANK__5_5, location__BLANK__4_5);
- (location__BLANK__5_5, location__BLANK__5_5);
- (location__BLANK__5_5, location__BLANK__6_5);
- (location__BLANK__5_5, location__BLANK__7_5);
- (location__BLANK__5_5, location__BLANK__8_5);
- (location__BLANK__5_6, location__BLANK__1_6);
- (location__BLANK__5_6, location__BLANK__2_6);
- (location__BLANK__5_6, location__BLANK__3_6);
- (location__BLANK__5_6, location__BLANK__4_6);
- (location__BLANK__5_6, location__BLANK__5_6);
- (location__BLANK__5_6, location__BLANK__6_6);
- (location__BLANK__5_6, location__BLANK__7_6);
- (location__BLANK__5_6, location__BLANK__8_6);
- (location__BLANK__5_7, location__BLANK__1_7);
- (location__BLANK__5_7, location__BLANK__2_7);
- (location__BLANK__5_7, location__BLANK__3_7);
- (location__BLANK__5_7, location__BLANK__4_7);
- (location__BLANK__5_7, location__BLANK__5_7);
- (location__BLANK__5_7, location__BLANK__6_7);
- (location__BLANK__5_7, location__BLANK__7_7);
- (location__BLANK__5_7, location__BLANK__8_7);
- (location__BLANK__5_8, location__BLANK__1_8);
- (location__BLANK__5_8, location__BLANK__2_8);
- (location__BLANK__5_8, location__BLANK__3_8);
- (location__BLANK__5_8, location__BLANK__4_8);
- (location__BLANK__5_8, location__BLANK__5_8);
- (location__BLANK__5_8, location__BLANK__6_8);
- (location__BLANK__5_8, location__BLANK__7_8);
- (location__BLANK__5_8, location__BLANK__8_8);
- (location__BLANK__6_1, location__BLANK__1_1);
- (location__BLANK__6_1, location__BLANK__2_1);
- (location__BLANK__6_1, location__BLANK__3_1);
- (location__BLANK__6_1, location__BLANK__4_1);
- (location__BLANK__6_1, location__BLANK__5_1);
- (location__BLANK__6_1, location__BLANK__6_1);
- (location__BLANK__6_1, location__BLANK__7_1);
- (location__BLANK__6_1, location__BLANK__8_1);
- (location__BLANK__6_2, location__BLANK__1_2);
- (location__BLANK__6_2, location__BLANK__2_2);
- (location__BLANK__6_2, location__BLANK__3_2);
- (location__BLANK__6_2, location__BLANK__4_2);
- (location__BLANK__6_2, location__BLANK__5_2);
- (location__BLANK__6_2, location__BLANK__6_2);
- (location__BLANK__6_2, location__BLANK__7_2);
- (location__BLANK__6_2, location__BLANK__8_2);
- (location__BLANK__6_3, location__BLANK__1_3);
- (location__BLANK__6_3, location__BLANK__2_3);
- (location__BLANK__6_3, location__BLANK__3_3);
- (location__BLANK__6_3, location__BLANK__4_3);
- (location__BLANK__6_3, location__BLANK__5_3);
- (location__BLANK__6_3, location__BLANK__6_3);
- (location__BLANK__6_3, location__BLANK__7_3);
- (location__BLANK__6_3, location__BLANK__8_3);
- (location__BLANK__6_4, location__BLANK__1_4);
- (location__BLANK__6_4, location__BLANK__2_4);
- (location__BLANK__6_4, location__BLANK__3_4);
- (location__BLANK__6_4, location__BLANK__4_4);
- (location__BLANK__6_4, location__BLANK__5_4);
- (location__BLANK__6_4, location__BLANK__6_4);
- (location__BLANK__6_4, location__BLANK__7_4);
- (location__BLANK__6_4, location__BLANK__8_4);
- (location__BLANK__6_5, location__BLANK__1_5);
- (location__BLANK__6_5, location__BLANK__2_5);
- (location__BLANK__6_5, location__BLANK__3_5);
- (location__BLANK__6_5, location__BLANK__4_5);
- (location__BLANK__6_5, location__BLANK__5_5);
- (location__BLANK__6_5, location__BLANK__6_5);
- (location__BLANK__6_5, location__BLANK__7_5);
- (location__BLANK__6_5, location__BLANK__8_5);
- (location__BLANK__6_6, location__BLANK__1_6);
- (location__BLANK__6_6, location__BLANK__2_6);
- (location__BLANK__6_6, location__BLANK__3_6);
- (location__BLANK__6_6, location__BLANK__4_6);
- (location__BLANK__6_6, location__BLANK__5_6);
- (location__BLANK__6_6, location__BLANK__6_6);
- (location__BLANK__6_6, location__BLANK__7_6);
- (location__BLANK__6_6, location__BLANK__8_6);
- (location__BLANK__6_7, location__BLANK__1_7);
- (location__BLANK__6_7, location__BLANK__2_7);
- (location__BLANK__6_7, location__BLANK__3_7);
- (location__BLANK__6_7, location__BLANK__4_7);
- (location__BLANK__6_7, location__BLANK__5_7);
- (location__BLANK__6_7, location__BLANK__6_7);
- (location__BLANK__6_7, location__BLANK__7_7);
- (location__BLANK__6_7, location__BLANK__8_7);
- (location__BLANK__6_8, location__BLANK__1_8);
- (location__BLANK__6_8, location__BLANK__2_8);
- (location__BLANK__6_8, location__BLANK__3_8);
- (location__BLANK__6_8, location__BLANK__4_8);
- (location__BLANK__6_8, location__BLANK__5_8);
- (location__BLANK__6_8, location__BLANK__6_8);
- (location__BLANK__6_8, location__BLANK__7_8);
- (location__BLANK__6_8, location__BLANK__8_8);
- (location__BLANK__7_1, location__BLANK__1_1);
- (location__BLANK__7_1, location__BLANK__2_1);
- (location__BLANK__7_1, location__BLANK__3_1);
- (location__BLANK__7_1, location__BLANK__4_1);
- (location__BLANK__7_1, location__BLANK__5_1);
- (location__BLANK__7_1, location__BLANK__6_1);
- (location__BLANK__7_1, location__BLANK__7_1);
- (location__BLANK__7_1, location__BLANK__8_1);
- (location__BLANK__7_2, location__BLANK__1_2);
- (location__BLANK__7_2, location__BLANK__2_2);
- (location__BLANK__7_2, location__BLANK__3_2);
- (location__BLANK__7_2, location__BLANK__4_2);
- (location__BLANK__7_2, location__BLANK__5_2);
- (location__BLANK__7_2, location__BLANK__6_2);
- (location__BLANK__7_2, location__BLANK__7_2);
- (location__BLANK__7_2, location__BLANK__8_2);
- (location__BLANK__7_3, location__BLANK__1_3);
- (location__BLANK__7_3, location__BLANK__2_3);
- (location__BLANK__7_3, location__BLANK__3_3);
- (location__BLANK__7_3, location__BLANK__4_3);
- (location__BLANK__7_3, location__BLANK__5_3);
- (location__BLANK__7_3, location__BLANK__6_3);
- (location__BLANK__7_3, location__BLANK__7_3);
- (location__BLANK__7_3, location__BLANK__8_3);
- (location__BLANK__7_4, location__BLANK__1_4);
- (location__BLANK__7_4, location__BLANK__2_4);
- (location__BLANK__7_4, location__BLANK__3_4);...
[truncated message content] |