Release coccinelle-0.2.4rc3
authorCoccinelle <cocci@diku.dk>
Sun, 3 Oct 2010 12:04:31 +0000 (14:04 +0200)
committerRene Rydhof Hansen <rrh@cs.aau.dk>
Sun, 3 Oct 2010 12:04:31 +0000 (14:04 +0200)
** Language:
   - scripts now have names and can declare metavariables that are seen by
     SmPL as identifier metavariables, see demos/{python,ocaml}tococci.cocci
   - declaration (match variable declarations) and field (match structure
     field declarations) metavariables
   - matching of array initializations and of enum declarations

** Features:
   - compatability with Python 2.7.  Thanks to Richard W.M. Jones for pointing
     out the problem
   - python and ocaml string representations of parameter lists and expression
     lists
   - try simpler patterns on glimpse failure
   - graceful and immediate failure when a virtual rule is defined on the
     command line, but not in the rule
   - spatch returns -1 when a virtual rule is requested that is not supported
   - no transformation when using * with the option -no_show_diff

** Bugfix:
   - detect used after metavariables in simple statement metavariable match
   - allow inheriting position variables over rules that make transformations
     but depend on virtual rules that are not defined on the command line
   - treat top-level tokens in decl visitor.  Thanks to Peter Tummeltshammer
     for noticing a resulting problem.
   - improve typing of the result of an assignment expression
   - eliminate some recursive calls in C code parsing to avoid tack overflows
   - better pretty printing of #define when the whole line is removed
   - better pretty printing of asm code containing
     "::[input]"r"(&coherence_data[i])"
   - allow pretty printing of C code with nameless bit fields
   - avoid adding an error message to standard output if ocamlfind is not found

240 files changed:
Makefile
changes.txt
cocci.ml
cocci.mli
commitmsg
commons/common.ml
commons/common.mli
configure
ctl/.depend
ctl/Makefile
ctl/ast_ctl.ml
ctl/ctl_engine.ml
ctl/ctl_engine.mli
ctl/flag_ctl.ml
ctl/pretty_print_ctl.ml
ctl/pretty_print_ctl.mli
ctl/test_ctl.ml
ctl/wrapper_ctl.ml
ctl/wrapper_ctl.mli
dllpycaml_stubs.so [new file with mode: 0755]
docs/manual/cocci_syntax.tex
docs/manual/main_grammar.pdf
docs/manual/manual.pdf
docs/manual/options.pdf
engine/Makefile
engine/asttoctl.ml
engine/asttoctl.mli
engine/asttoctl2.ml
engine/asttoctl2.mli
engine/asttomember.ml
engine/asttomember.mli
engine/c_vs_c.ml
engine/c_vs_c.mli
engine/check_exhaustive_pattern.ml
engine/check_reachability.ml
engine/check_reachability.mli
engine/cocci_vs_c.ml
engine/cocci_vs_c.mli
engine/ctlcocci_integration.ml
engine/ctlcocci_integration.mli
engine/ctltotex.ml
engine/ctltotex.mli
engine/flag_engine.ml
engine/flag_matcher.ml
engine/isomorphisms_c_c.ml
engine/lib_engine.ml
engine/lib_matcher_c.ml
engine/lib_matcher_c.mli
engine/main.ml
engine/pattern_c.ml
engine/pattern_c.mli
engine/postprocess_transinfo.ml
engine/postprocess_transinfo.mli
engine/pretty_print_engine.ml
engine/pretty_print_engine.mli
engine/sgrep.ml
engine/transformation_c.ml
engine/transformation_c.mli
flag_cocci.ml
globals/Makefile
globals/config.ml.in
globals/flag.ml
install.txt
main.ml
ocaml/yes_prepare_ocamlcocci.ml
parsing_c/ast_c.ml
parsing_c/lib_parsing_c.ml
parsing_c/parse_c.ml
parsing_c/parser_c.mly
parsing_c/parsing_hacks.ml
parsing_c/pretty_print_c.ml
parsing_c/test_parsing_c.ml
parsing_c/type_annoter_c.ml
parsing_c/unparse_c.ml
parsing_c/unparse_cocci.ml
parsing_c/unparse_hrule.ml
parsing_c/visitor_c.ml
parsing_c/visitor_c.mli
parsing_cocci/.depend
parsing_cocci/Makefile
parsing_cocci/adjacency.ml
parsing_cocci/adjacency.mli
parsing_cocci/adjust_pragmas.ml
parsing_cocci/adjust_pragmas.mli
parsing_cocci/arity.ml
parsing_cocci/arity.mli
parsing_cocci/ast0_cocci.ml
parsing_cocci/ast0_cocci.mli
parsing_cocci/ast0toast.ml
parsing_cocci/ast0toast.mli
parsing_cocci/ast_cocci.ml
parsing_cocci/ast_cocci.mli
parsing_cocci/check_meta.ml
parsing_cocci/check_meta.mli
parsing_cocci/comm_assoc.ml
parsing_cocci/comm_assoc.mli
parsing_cocci/compute_lines.ml
parsing_cocci/compute_lines.mli
parsing_cocci/context_neg.ml
parsing_cocci/context_neg.mli
parsing_cocci/data.ml
parsing_cocci/data.mli
parsing_cocci/disjdistr.ml
parsing_cocci/disjdistr.mli
parsing_cocci/flag_parsing_cocci.ml
parsing_cocci/free_vars.ml
parsing_cocci/free_vars.mli
parsing_cocci/function_prototypes.ml
parsing_cocci/function_prototypes.mli
parsing_cocci/get_constants.ml
parsing_cocci/get_constants.mli
parsing_cocci/get_constants2.ml
parsing_cocci/get_constants2.mli
parsing_cocci/index.ml
parsing_cocci/index.mli
parsing_cocci/insert_plus.ml
parsing_cocci/insert_plus.mli
parsing_cocci/iso_compile.ml
parsing_cocci/iso_compile.mli
parsing_cocci/iso_pattern.ml
parsing_cocci/iso_pattern.mli
parsing_cocci/lexer_cocci.mll
parsing_cocci/lexer_script.mll
parsing_cocci/main.ml
parsing_cocci/merge.ml
parsing_cocci/merge.mli
parsing_cocci/parse_aux.ml
parsing_cocci/parse_cocci.ml
parsing_cocci/parse_cocci.mli
parsing_cocci/parser_cocci.mly
parsing_cocci/parser_cocci_menhir.ml
parsing_cocci/parser_cocci_menhir.mly
parsing_cocci/plus.ml
parsing_cocci/plus.mli
parsing_cocci/pretty_print_cocci.ml
parsing_cocci/pretty_print_cocci.mli
parsing_cocci/semantic_cocci.ml
parsing_cocci/simple_assignments.ml
parsing_cocci/simple_assignments.mli
parsing_cocci/single_statement.ml
parsing_cocci/single_statement.mli
parsing_cocci/test.cocci
parsing_cocci/test2.cocci
parsing_cocci/test_exps.ml
parsing_cocci/test_exps.mli
parsing_cocci/top_level.ml
parsing_cocci/top_level.mli
parsing_cocci/type_cocci.ml
parsing_cocci/type_cocci.mli
parsing_cocci/type_infer.ml
parsing_cocci/type_infer.mli
parsing_cocci/unify_ast.ml
parsing_cocci/unify_ast.mli
parsing_cocci/unitary_ast0.ml
parsing_cocci/unitary_ast0.mli
parsing_cocci/unparse_ast0.ml
parsing_cocci/unparse_ast0.mli
parsing_cocci/visitor_ast.ml
parsing_cocci/visitor_ast.mli
parsing_cocci/visitor_ast0.ml
parsing_cocci/visitor_ast0.mli
parsing_cocci/visitor_ast0_types.ml
popl/Makefile
popl/ast_popl.ml
popl/asttopopl.ml
popl/asttopopl.mli
popl/insert_befaft.ml
popl/insert_befaft.mli
popl/insert_quantifiers.ml
popl/insert_quantifiers.mli
popl/popl.ml
popl/popl.mli
popl/popltoctl.ml
popl/popltoctl.mli
popl/pretty_print_popl.ml
popl/pretty_print_popl.mli
popl09/.depend
popl09/Makefile
popl09/ast_popl.ml
popl09/asttopopl.ml
popl09/asttopopl.mli
popl09/flag_popl.ml
popl09/insert_quantifiers.ml
popl09/insert_quantifiers.mli
popl09/popl.ml
popl09/popl.mli
popl09/popltoctl.ml
popl09/popltoctl.mli
popl09/pretty_print_popl.ml
popl09/pretty_print_popl.mli
pycaml/Makefile
python/.depend
python/Makefile
python/Makefile.orig [deleted file]
python/no_pycocci.ml
python/pycocci.mli
python/pycocci_aux.ml
python/pycocci_aux.mli
python/yes_pycocci.ml
scripts/extract_c_and_res.pl
scripts/extract_examples.pl
scripts/extractor_README.pl
scripts/gather_failed.pl
scripts/readme.pl
scripts/stat_directories.pl
scripts/stat_directories_complete.pl
scripts/stat_directory_complete.pl
test.ml
testing.ml
testing.mli
tests/SCORE_expected.sexp [deleted file]
tests/SCORE_expected.sexp.save [deleted file]
tests/end_commas.cocci
tests/list_test.c [new file with mode: 0644]
tests/list_test.cocci [new file with mode: 0644]
tests/list_test.res [new file with mode: 0644]
tests/minenum.c [new file with mode: 0644]
tests/minenum.cocci [new file with mode: 0644]
tests/minenum.res [new file with mode: 0644]
tests/minfn.c [new file with mode: 0644]
tests/minfn.cocci [new file with mode: 0644]
tests/minfn.res [new file with mode: 0644]
tests/str_init.cocci
tools/Makefile
tools/README.splitpatch [new file with mode: 0644]
tools/alloc_free.ml
tools/bridge.ml
tools/cocci-send-email.perl [new file with mode: 0644]
tools/dir_stats.ml
tools/dumper.ml
tools/dumper.mli
tools/extract_c_and_res.ml
tools/generate_dependencies.ml
tools/gitgrep.ml
tools/gitsort.ml
tools/licensify.ml
tools/process_isoprofile.ml
tools/split_patch.ml [deleted file]
tools/splitpatch.ml [new file with mode: 0644]
tools/spp.ml

index 583fab2..04986c1 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,3 +1,25 @@
+# Copyright 2010, INRIA, University of Copenhagen
+# Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+# This file is part of Coccinelle.
+#
+# Coccinelle is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, according to version 2 of the License.
+#
+# Coccinelle is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+#
+# The authors reserve the right to distribute this or future versions of
+# Coccinelle under other licenses.
+
+
 
 #############################################################################
 # Configuration section
@@ -113,9 +135,8 @@ OCAMLCFLAGS=
 # but 'make forprofiling' below does that for you.
 # This flag is also used in subdirectories so don't change its name here.
 # To enable backtrace support for native code, you need to put -g in OPTFLAGS
-# to also link with -g, but even in 3.11 the backtrace support seems buggy so
-# not worth it.
-OPTFLAGS=
+# to also link with -g.
+OPTFLAGS= -g
 
 OCAMLC=ocamlc$(OPTBIN) $(OCAMLCFLAGS)  $(INCLUDES)
 OCAMLOPT=ocamlopt$(OPTBIN) $(OPTFLAGS) $(INCLUDES)
@@ -213,11 +234,11 @@ Makefile.config:
        @echo "Makefile.config is missing. Have you run ./configure?"
        @exit 1
 
-tools:
+tools: $(LIBS)
        $(MAKE) -C tools
 
-clean::
-       if [ -d tools ] ; then $(MAKE) -C tools clean ; fi
+distclean::
+       if [ -d tools ] ; then $(MAKE) -C tools distclean ; fi
 
 static:
        rm -f spatch.opt spatch
@@ -310,6 +331,13 @@ install-bash:
        $(INSTALL_DATA) scripts/spatch.bash_completion \
                $(DESTDIR)$(BASH_COMPLETION_DIR)/spatch
 
+install-tools:
+       mkdir -p $(DESTDIR)$(BINDIR)
+       $(INSTALL_PROGRAM) tools/splitpatch \
+               $(DESTDIR)$(BINDIR)/splitpatch
+       $(INSTALL_PROGRAM) tools/cocci-send-email.perl \
+               $(DESTDIR)$(BINDIR)/cocci-send-email.perl
+
 install-python:
        mkdir -p $(DESTDIR)$(SHAREDIR)/python/coccilib/coccigui
        $(INSTALL_DATA) python/coccilib/*.py \
@@ -375,6 +403,10 @@ uninstall-bash:
        rmdir --ignore-fail-on-non-empty -p \
                $(DESTDIR)$(BASH_COMPLETION_DIR)
 
+uninstall-tools:
+       rm -f $(DESTDIR)$(BINDIR)/splitpatch
+       rm -f $(DESTDIR)$(BINDIR)/cocci-send-email.perl
+
 version:
        @echo "spatch     $(VERSION)"
        @echo "spatch     $(PKGVERSION) ($(DISTRIB_ID))"
@@ -465,7 +497,6 @@ distclean:: clean
        set -e; for i in $(MAKESUBDIRS); do $(MAKE) -C $$i $@; done
        rm -f .depend
        rm -f Makefile.config
-       rm -f python/pycocci.ml
        rm -f globals/config.ml
        rm -f TAGS
        rm -f tests/SCORE_actual.sexp
index 7faf4e7..1f37fb6 100644 (file)
@@ -19,6 +19,7 @@
   SmPL as identifier metavariables, see demos/{python,ocaml}tococci.cocci
 - declaration (match variable declarations) and field (match structure
   field declarations) metavariables
+- matching of array initializations and of enum declarations
 
 ** Features:
 - compatability with Python 2.7.  Thanks to Richard W.M. Jones for pointing
@@ -28,6 +29,8 @@
 - try simpler patterns on glimpse failure
 - graceful and immediate failure when a virtual rule is defined on the
   command line, but not in the rule
+- spatch returns -1 when a virtual rule is requested that is not supported
+- no transformation when using * with the option -no_show_diff
 
 ** Bugfix:
 - detect used after metavariables in simple statement metavariable match
   but depend on virtual rules that are not defined on the command line
 - treat top-level tokens in decl visitor.  Thanks to Peter Tummeltshammer
   for noticing a resulting problem.
+- improve typing of the result of an assignment expression
+- eliminate some recursive calls in C code parsing to avoid tack overflows
+- better pretty printing of #define when the whole line is removed
+- better pretty printing of asm code containing
+  "::[input]"r"(&coherence_data[i])"
+- allow pretty printing of C code with nameless bit fields
+- avoid adding an error message to standard output if ocamlfind is not found
 
 * 0.2.3
 ** Language:
index c8f7910..0b09b09 100644 (file)
--- a/cocci.ml
+++ b/cocci.ml
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 open Common
 
 module CCI = Ctlcocci_integration
@@ -51,7 +75,8 @@ let sp_of_file2 file iso   =
     | Some ocaml_script_file ->
         (* compile file *)
        Prepare_ocamlcocci.load_file ocaml_script_file;
-       Prepare_ocamlcocci.clean_file ocaml_script_file);
+       if not !Common.save_tmp_files
+       then Prepare_ocamlcocci.clean_file ocaml_script_file);
     res)
 let sp_of_file file iso    =
   Common.profile_code "parse cocci" (fun () -> sp_of_file2 file iso)
@@ -492,7 +517,7 @@ let sp_contain_typed_metavar_z toplevel_list_list =
   let combiner =
     Visitor_ast.combiner bind option_default
       mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
-      donothing donothing donothing donothing
+      donothing donothing donothing donothing donothing
       donothing expression donothing donothing donothing donothing donothing
       donothing donothing donothing donothing donothing
   in
@@ -1207,21 +1232,23 @@ let apply_script_rule r cache newes e rules_that_have_matched
                List.exists (function (_,(r,m),_) -> r =*= re && m =$= rm) mv)
              e in
          (try
-           let script_vals =  List.assoc relevant_bindings cache in
-           print_dependencies
-             "dependencies for script satisfied, but cached:"
-             rules_that_have_matched
-             !rules_that_have_ever_matched
-             r.scr_rule_info.dependencies;
-           show_or_not_binding "in" e;
+           match List.assoc relevant_bindings cache with
+             None -> (cache,newes)
+           | Some script_vals ->
+               print_dependencies
+                 "dependencies for script satisfied, but cached:"
+                 rules_that_have_matched
+                 !rules_that_have_ever_matched
+                 r.scr_rule_info.dependencies;
+               show_or_not_binding "in" e;
              (* env might be bigger than what was cached against, so have to
                 merge with newes anyway *)
-           let new_e = (List.combine script_vars script_vals) @ e in
-           let new_e =
-             new_e +>
-             List.filter
-               (fun (s,v) -> List.mem s r.scr_rule_info.used_after) in
-           (cache,merge_env [(new_e, rules_that_have_matched)] newes)
+               let new_e = (List.combine script_vars script_vals) @ e in
+               let new_e =
+                 new_e +>
+                 List.filter
+                   (fun (s,v) -> List.mem s r.scr_rule_info.used_after) in
+               (cache,merge_env [(new_e, rules_that_have_matched)] newes)
          with Not_found ->
            begin
              print_dependencies "dependencies for script satisfied:"
@@ -1232,7 +1259,7 @@ let apply_script_rule r cache newes e rules_that_have_matched
              match script_application mv ve script_vars r with
                None ->
                  (* failure means we should drop e, no new bindings *)
-                 (((relevant_bindings,[]) :: cache), newes)
+                 (((relevant_bindings,None) :: cache), newes)
              | Some script_vals ->
                  let script_vals =
                    List.map (function x -> Ast_c.MetaIdVal(x,[]))
@@ -1244,7 +1271,7 @@ let apply_script_rule r cache newes e rules_that_have_matched
                    List.filter
                      (fun (s,v) -> List.mem s r.scr_rule_info.used_after) in
                  r.scr_rule_info.was_matched := true;
-                 (((relevant_bindings,script_vals) :: cache),
+                 (((relevant_bindings,Some script_vals) :: cache),
                   merge_env
                     [(new_e,
                       r.scr_rule_info.rulename :: rules_that_have_matched)]
@@ -1529,7 +1556,8 @@ and process_a_ctl_a_env_a_toplevel2 r e c f =
 
     r.rule_info.was_matched := true;
 
-    if not (null trans_info)
+    if not (null trans_info) &&
+      not (!Flag.sgrep_mode2 && not !Flag_cocci.show_diff)
     then begin
       c.was_modified := true;
       try
@@ -1606,7 +1634,7 @@ let rec bigloop2 rs (ccs: file_info list) =
        then
          Common.push2 r.scr_rule_info.rulename rules_that_have_ever_matched);
 
-        es := (if newes = [] then init_es else newes);
+        es := newes (*(if newes = [] then init_es else newes)*);
     | CocciRuleCocciInfo r ->
        apply_cocci_rule r rules_that_have_ever_matched
          es ccs);
@@ -1657,8 +1685,8 @@ let initial_final_bigloop2 ty rebuild r =
       let _ = apply_script_rule r [] [] [] [] (ref []) ocaml_application in
       ()
   | _ ->
-      Printf.printf "Unknown language for initial/final script: %s\n"
-       r.language
+      failwith ("Unknown language for initial/final script: "^
+               r.language)
 
 let initial_final_bigloop a b c =
   Common.profile_code "initial_final_bigloop"
index b950560..e53246b 100644 (file)
--- a/cocci.mli
+++ b/cocci.mli
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 open Common
 
 (* full_engine takes (coccifile, isofile) and cfiles in parameters and
dissimilarity index 98%
index 064a4ae..d4d2048 100644 (file)
--- a/commitmsg
+++ b/commitmsg
@@ -1,3 +1,33 @@
-Release coccinelle-0.2.4rc2
-
-Release Candidate 2 for coccinelle-0.2.4
+Release coccinelle-0.2.4rc3
+
+** Language:
+   - scripts now have names and can declare metavariables that are seen by
+     SmPL as identifier metavariables, see demos/{python,ocaml}tococci.cocci
+   - declaration (match variable declarations) and field (match structure
+     field declarations) metavariables
+   - matching of array initializations and of enum declarations
+
+** Features:
+   - compatability with Python 2.7.  Thanks to Richard W.M. Jones for pointing
+     out the problem
+   - python and ocaml string representations of parameter lists and expression
+     lists
+   - try simpler patterns on glimpse failure
+   - graceful and immediate failure when a virtual rule is defined on the
+     command line, but not in the rule
+   - spatch returns -1 when a virtual rule is requested that is not supported
+   - no transformation when using * with the option -no_show_diff
+
+** Bugfix:
+   - detect used after metavariables in simple statement metavariable match
+   - allow inheriting position variables over rules that make transformations
+     but depend on virtual rules that are not defined on the command line
+   - treat top-level tokens in decl visitor.  Thanks to Peter Tummeltshammer
+     for noticing a resulting problem.
+   - improve typing of the result of an assignment expression
+   - eliminate some recursive calls in C code parsing to avoid tack overflows
+   - better pretty printing of #define when the whole line is removed
+   - better pretty printing of asm code containing
+     "::[input]"r"(&coherence_data[i])"
+   - allow pretty printing of C code with nameless bit fields
+   - avoid adding an error message to standard output if ocamlfind is not found
index 2d26605..f5640c0 100644 (file)
@@ -2101,6 +2101,17 @@ let rec filter_some = function
 
 let map_filter f xs = xs +> List.map f +> filter_some
 
+(* avoid recursion *)
+let tail_map_filter f xs =
+  List.rev
+    (List.fold_left
+       (function prev ->
+        function cur ->
+          match f cur with
+            Some x -> x :: prev
+          | None -> prev)
+       [] xs)
+
 let rec find_some p = function
   | [] -> raise Not_found
   | x :: l ->
@@ -3691,14 +3702,15 @@ let rec group_by_mapped_key fkey l =
 
 let (exclude_but_keep_attached: ('a -> bool) -> 'a list -> ('a * 'a list) list)=
  fun f xs ->
-   let rec aux_filter acc = function
-   | [] -> [] (* drop what was accumulated because nothing to attach to *)
+   let rec aux_filter acc ans = function
+   | [] -> (* drop what was accumulated because nothing to attach to *)
+       List.rev ans
    | x::xs ->
        if f x
-       then aux_filter (x::acc) xs
-       else (x, List.rev acc)::aux_filter [] xs
+       then aux_filter (x::acc) ans xs
+       else aux_filter [] ((x, List.rev acc)::ans) xs
    in
-   aux_filter [] xs
+   aux_filter [] [] xs
 let _ = example
   (exclude_but_keep_attached (fun x -> x =|= 3) [3;3;1;3;2;3;3;3] =*=
       [(1,[3;3]);(2,[3])])
@@ -5235,6 +5247,12 @@ let head = List.hd
 let tail = List.tl
 let is_singleton = fun xs -> List.length xs =|= 1
 
+let tail_map f l = (* tail recursive map, using rev *)
+  let rec loop acc = function
+      [] -> acc
+    | x::xs -> loop ((f x) :: acc) xs in
+  List.rev(loop [] l)
+
 (*****************************************************************************)
 (* Geometry (raytracer) *)
 (*****************************************************************************)
index 0701066..2f81a64 100644 (file)
@@ -792,6 +792,7 @@ val partition_either3 :
 
 val filter_some : 'a option list -> 'a list
 val map_filter : ('a -> 'b option) -> 'a list -> 'b list
+val tail_map_filter : ('a -> 'b option) -> 'a list -> 'b list
 val find_some : ('a -> 'b option) -> 'a list -> 'b
 
 val list_to_single_or_exn: 'a list -> 'a
@@ -1757,6 +1758,7 @@ val empty_graph : 'a list * 'b list
 (* mostly alias to functions in List *)
 
 val map : ('a -> 'b) -> 'a list -> 'b list
+val tail_map : ('a -> 'b) -> 'a list -> 'b list
 val filter : ('a -> bool) -> 'a list -> 'a list
 val fold : ('a -> 'b -> 'a) -> 'a -> 'b list -> 'a
 
index 073d6f7..b2d5f71 100755 (executable)
--- a/configure
+++ b/configure
@@ -38,9 +38,10 @@ my $sexpdir="ocamlsexp";
 local $_ = join ' ', @ARGV;
 
 # Parse options
-/-h/ || /--help/ and die "usage: $0 [--prefix=path] [--without-python] [--no-opt]\n\n\t--no-opt\tDo not use the optimimized version of OCaml\n\t--opt\tUse the optimimized version of OCaml\n\n";
+/-h/ || /--help/ and die "usage: $0 [--prefix=path] [--without-python] [--without-ocaml] [--no-opt]\n\n\t--no-opt\tDo not use the optimimized version of OCaml\n\t--opt\tUse the optimimized version of OCaml\n\n";
 /--prefix=([^ ]*)/ and $prefix = $1;
 /--without-python/ and $python = 0;
+/--without-ocaml/ and $noocamlscripting = 1;
 /--no-opt/ and $opt = "";
 /--opt/ and $opt = ".opt";
 
@@ -108,11 +109,13 @@ $error +=
                  "The program ocaml is missing or is not a good version. We need at least 3.09",
                  );
 
+unless ($noocamlscripting) { 
 $noocamlscripting = check_config("echo \"1;;\\n\" | ocaml |",
                  "Objective(.*) 3.1[1-9]",
                  "OCaml >= 3.11 is present. OCaml scripting activated.",
                  "OCaml scripting disabled. We need at least OCaml 3.11",
                  );
+}
 my $ocamlprefix = $noocamlscripting ? "no" : "yes";
 
 if ($opt eq ".opt") {
index 9e82586..6ce484a 100644 (file)
@@ -1,25 +1,25 @@
-ctl_engine.cmi: ../commons/ograph_extended.cmi ast_ctl.cmo 
-pretty_print_ctl.cmi: ast_ctl.cmo 
-wrapper_ctl.cmi: ctl_engine.cmi ast_ctl.cmo 
-ast_ctl.cmo: 
-ast_ctl.cmx: 
+ctl_engine.cmi: ../commons/ograph_extended.cmi ast_ctl.cmo
+pretty_print_ctl.cmi: ast_ctl.cmo
+wrapper_ctl.cmi: ctl_engine.cmi ast_ctl.cmo
+ast_ctl.cmo:
+ast_ctl.cmx:
 ctl_engine.cmo: pretty_print_ctl.cmi ../commons/ograph_extended.cmi \
     flag_ctl.cmo ../globals/flag.cmo ../commons/common.cmi ast_ctl.cmo \
-    ctl_engine.cmi 
+    ctl_engine.cmi
 ctl_engine.cmx: pretty_print_ctl.cmx ../commons/ograph_extended.cmx \
     flag_ctl.cmx ../globals/flag.cmx ../commons/common.cmx ast_ctl.cmx \
-    ctl_engine.cmi 
-flag_ctl.cmo: 
-flag_ctl.cmx: 
+    ctl_engine.cmi
+flag_ctl.cmo:
+flag_ctl.cmx:
 pretty_print_ctl.cmo: flag_ctl.cmo ../commons/common.cmi ast_ctl.cmo \
-    pretty_print_ctl.cmi 
+    pretty_print_ctl.cmi
 pretty_print_ctl.cmx: flag_ctl.cmx ../commons/common.cmx ast_ctl.cmx \
-    pretty_print_ctl.cmi 
+    pretty_print_ctl.cmi
 test_ctl.cmo: wrapper_ctl.cmi ../commons/ograph_extended.cmi ctl_engine.cmi \
-    ast_ctl.cmo 
+    ast_ctl.cmo
 test_ctl.cmx: wrapper_ctl.cmx ../commons/ograph_extended.cmx ctl_engine.cmx \
-    ast_ctl.cmx 
+    ast_ctl.cmx
 wrapper_ctl.cmo: ../globals/flag.cmo ctl_engine.cmi ../commons/common.cmi \
-    ast_ctl.cmo wrapper_ctl.cmi 
+    ast_ctl.cmo wrapper_ctl.cmi
 wrapper_ctl.cmx: ../globals/flag.cmx ctl_engine.cmx ../commons/common.cmx \
-    ast_ctl.cmx wrapper_ctl.cmi 
+    ast_ctl.cmx wrapper_ctl.cmi
index 582ac7f..996dfbc 100644 (file)
@@ -1,3 +1,25 @@
+# Copyright 2010, INRIA, University of Copenhagen
+# Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+# This file is part of Coccinelle.
+#
+# Coccinelle is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, according to version 2 of the License.
+#
+# Coccinelle is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+#
+# The authors reserve the right to distribute this or future versions of
+# Coccinelle under other licenses.
+
+
 #note: if you add a file (a .mli or .ml), dont forget to do a   make depend
 
 -include ../Makefile.config
index 048eba1..30e8c60 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 
 (* ---------------------------------------------------------------------- *)
 (* Types                                                                  *)
index dd285ba..1196f12 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (*external c_counter : unit -> int = "c_counter"*)
 let timeout = 800
 (* Optimize triples_conj by first extracting the intersection of the two sets,
index 57a6042..3251c0a 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 open Ast_ctl
 
 module type SUBST =
index c54aea6..d840ef0 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* option -verbose_ctl_engine *)
 let verbose_ctl_engine = ref false
 
index 0718008..9c7fbf1 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 open Common
 open Format
 
index ab4ce2d..4819215 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 
 val pp_ctl:
  ('pred -> unit) * ('mvar -> unit) -> bool (* inline_let_def *) ->
index 81b20da..c53681c 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 
 (* ********************************************************************** *)
 (* Module: EXAMPLE_ENGINE (instance of CTL_ENGINE)                        *)
index 33b7fd2..ac740dc 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* **********************************************************************
  *
  * Wrapping for FUNCTORS and MODULES
index 12a2965..17436dd 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 type info = int
 
 type ('pred, 'mvar) wrapped_ctl =
diff --git a/dllpycaml_stubs.so b/dllpycaml_stubs.so
new file mode 100755 (executable)
index 0000000..513bece
Binary files /dev/null and b/dllpycaml_stubs.so differ
index 7109db9..b95bef0 100644 (file)
@@ -555,6 +555,7 @@ write
   \CASE{\opt{\NT{ctype\_qualif}} long long}
   \CASE{double}
   \CASE{float}
+  \CASE{enum \NT{id} \{ \NT{PARAMSEQ}\mth{(}\NT{dot\_expr}, \NT{exp\_whencode}\mth{)} \OPT{,} \}}
   \CASE{\OPT{struct\OR union} \T{id} \OPT{\{ \any{\NT{struct\_decl\_list}} \}}}
 
   \RULE{\rt{ctype\_qualif}}
@@ -579,7 +580,7 @@ write
   \CASE{\opt{\NT{const\_vol}} \T{id} \NT{d\_ident};}
 
   \RULE{\rt{d\_ident}}
-  \CASE{\NT{id} \any{[\opt{\NT{expr}}]}}
+  \CASE{\T{id} \any{[\opt{\NT{expr}}]}}
 
   \RULE{\rt{fn\_ctype}}
   \CASE{\NT{generic\_ctype} \any{*}}
@@ -726,8 +727,19 @@ considers that it is not.
 
   \RULE{\rt{initialize}}
   \CASE{\NT{dot\_expr}}
+  \CASE{\mth{\T{metaid}^{\ssf{Initialiser}}}}
   \CASE{\ttlb~\opt{\NT{COMMA\_LIST}\mth{(}\NT{dot\_expr}\mth{)}}~\ttrb}
 
+  \RULE{\rt{init\_list\_elem}}
+  \CASE{\NT{dot\_expr}}
+  \CASE{\NT{designator} = \NT{dot\_expr}}
+  \CASE{\NT{id} : \NT{dot\_expr}}
+
+  \RULE{\rt{designator}}
+  \CASE{. \NT{id}}
+  \CASE{[ \NT{dot\_expr} ]}
+  \CASE{[ \NT{dot\_expr} ... \NT{dot\_expr} ]}
+
   \RULE{\rt{decl\_ident}}
   \CASE{\T{DeclarerId}}
   \CASE{\mth{\T{metaid}^{\ssf{Declarer}}}}
index 991dda8..0ee600b 100644 (file)
Binary files a/docs/manual/main_grammar.pdf and b/docs/manual/main_grammar.pdf differ
index b6ce64c..6b8b2e5 100644 (file)
Binary files a/docs/manual/manual.pdf and b/docs/manual/manual.pdf differ
index 6508bee..e3d4ed7 100644 (file)
Binary files a/docs/manual/options.pdf and b/docs/manual/options.pdf differ
index 2533ca8..6a7fa2c 100644 (file)
@@ -1,3 +1,25 @@
+# Copyright 2010, INRIA, University of Copenhagen
+# Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+# This file is part of Coccinelle.
+#
+# Coccinelle is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, according to version 2 of the License.
+#
+# Coccinelle is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+#
+# The authors reserve the right to distribute this or future versions of
+# Coccinelle under other licenses.
+
+
 ##############################################################################
 # Variables
 ##############################################################################
index b96942d..5e885c6 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* true = don't see all matched nodes, only modified ones *)
 let onlyModif = ref true(*false*)
 (* set to true for line numbers in the output of ctl_engine *)
index e1dcefa..611a946 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 type cocci_predicate = Lib_engine.predicate * string Ast_ctl.modif
 type formula =
     (cocci_predicate,string, Wrapper_ctl.info) Ast_ctl.generic_ctl
index 10ec585..3415e3f 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* for MINUS and CONTEXT, pos is always None in this file *)
 (*search for require*)
 (* true = don't see all matched nodes, only modified ones *)
@@ -325,7 +349,7 @@ let elim_opt =
 
   V.rebuilder
     mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
-    donothing donothing stmtdotsfn donothing
+    donothing donothing stmtdotsfn donothing donothing
     donothing donothing donothing donothing donothing donothing donothing
     donothing donothing donothing donothing donothing
 
@@ -426,12 +450,12 @@ let contains_modif =
   let init r k i =
     let res = k i in
     match Ast.unwrap i with
-      Ast.InitList(allminus,_,_,_,_) -> allminus or res
+      Ast.StrInitList(allminus,_,_,_,_) -> allminus or res
     | _ -> res in
   let recursor =
     V.combiner bind option_default
       mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
-      do_nothing do_nothing do_nothing do_nothing
+      do_nothing do_nothing do_nothing do_nothing do_nothing
       do_nothing do_nothing do_nothing do_nothing init do_nothing
       do_nothing rule_elem do_nothing do_nothing do_nothing do_nothing in
   recursor.V.combiner_rule_elem
@@ -454,7 +478,7 @@ let contains_pos =
   let recursor =
     V.combiner bind option_default
       mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
-      do_nothing do_nothing do_nothing do_nothing
+      do_nothing do_nothing do_nothing do_nothing do_nothing
       do_nothing do_nothing do_nothing do_nothing do_nothing do_nothing
       do_nothing rule_elem do_nothing do_nothing do_nothing do_nothing in
   recursor.V.combiner_rule_elem
@@ -525,7 +549,7 @@ let count_nested_braces s =
   let mcode r x = 0 in
   let recursor = V.combiner bind option_default
       mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
-      donothing donothing donothing donothing
+      donothing donothing donothing donothing donothing
       donothing donothing donothing donothing donothing donothing
       donothing donothing stmt_count donothing donothing donothing in
   let res = string_of_int (recursor.V.combiner_statement s) in
@@ -1889,7 +1913,8 @@ and statement stmt after quantified minus_quantified
 
   | Ast.Nest(starter,stmt_dots,ender,whencode,multi,bef,aft) ->
       (* label in recursive call is None because label check is already
-        wrapped around the corresponding code *)
+        wrapped around the corresponding code. not good enough, want to stay
+        in a specific region, dots and nests will keep going *)
 
       let bfvs =
        match seq_fvs quantified [Ast.get_wcfvs whencode;Ast.get_fvs stmt_dots]
@@ -1911,16 +1936,16 @@ and statement stmt after quantified minus_quantified
       quantify guard bfvs
        (let dots_pattern =
          statement_list stmt_dots (a2n after) new_quantified minus_quantified
-           None llabel slabel true guard in
+           label(*None*) llabel slabel true guard in
        dots_and_nests multi
          (Some dots_pattern) whencode bef aft dot_code after label
          (process_bef_aft new_quantified minus_quantified
-            None llabel slabel true)
+            label(*None*) llabel slabel true)
          (function x ->
-           statement_list x Tail new_quantified minus_quantified None
+           statement_list x Tail new_quantified minus_quantified label(*None*)
              llabel slabel true true)
          (function x ->
-           statement x Tail new_quantified minus_quantified None
+           statement x Tail new_quantified minus_quantified label(*None*)
              llabel slabel true)
          guard quantified
          (function x -> Ast.set_fvs [] (Ast.rewrap stmt x)))
index 7e9c2e7..a6732d7 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif
 type formula =
     (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl
index aea74ec..881de6d 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* on the first pass, onlyModif is true, so we don't see all matched nodes,
 only modified ones *)
 
@@ -32,7 +56,7 @@ let contains_modif used_after x =
       V.combiner bind option_default
        mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
        mcode
-       do_nothing do_nothing do_nothing do_nothing
+       do_nothing do_nothing do_nothing do_nothing do_nothing
        do_nothing do_nothing do_nothing do_nothing do_nothing do_nothing
        do_nothing rule_elem do_nothing do_nothing do_nothing do_nothing in
     recursor.V.combiner_rule_elem x
@@ -57,7 +81,7 @@ let contains_constant x =
        V.combiner bind option_default
          mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
          mcode
-         do_nothing do_nothing do_nothing do_nothing
+         do_nothing do_nothing do_nothing do_nothing do_nothing
          ident expr do_nothing do_nothing do_nothing do_nothing
          do_nothing do_nothing do_nothing do_nothing do_nothing do_nothing in
       recursor.V.combiner_rule_elem x
@@ -98,7 +122,7 @@ let strip =
   let recursor =
     V.rebuilder
       mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
-      do_nothing do_nothing do_nothing do_nothing
+      do_nothing do_nothing do_nothing do_nothing do_nothing
       do_nothing do_nothing do_nothing do_nothing do_nothing do_nothing
       do_nothing rule_elem do_nothing do_nothing
       do_nothing do_absolutely_nothing in
index 5d3a39a..4ceb553 100644 (file)
@@ -1,2 +1,26 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val asttomember : Ast_cocci.rule -> Ast_cocci.meta_name list list ->
   (Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif) list list list
index d7673c6..a38b037 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 open Common
 
 open Ast_c
index fd4a080..63d887d 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val eq_type : Ast_c.fullType -> Ast_c.fullType -> bool
 val merge_type : Ast_c.fullType -> Ast_c.fullType -> Ast_c.fullType
 
index 5cea731..d1272ae 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 
 (* Just to warn me when there is some news in the types in
  * ast_cocci.ml or even ast_c.ml, so that I can then adjust my code in
@@ -120,6 +144,7 @@ let dumb_astcocci_type = function
  | A.FunctionType _ -> ()
  | A.Array (typa, _, eaopt, _) -> ()
  | A.EnumName(en, ena) -> ()
+ | A.EnumDef(ty, lb, ids, rb) -> ()
  | A.StructUnionName(sa, sua) -> ()
  | A.StructUnionDef(ty, lb, decls, rb) -> ()
  | A.TypeName sa -> ()
index 071c00d..3bff497 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* ---------------------------------------------------------------- *)
 (* code to check for ambiguities *)
 
index 21ef7be..a436341 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 type witness =
     (Ograph_extended.nodei, unit,
      (Ograph_extended.nodei, unit, unit) Ast_ctl.generic_ctl list)
index 90cdf8e..a9111e4 100644 (file)
@@ -1,6 +1,31 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* Yoann Padioleau, Julia Lawall
  *
  * Copyright (C) 2006, 2007, 2008 Ecole des Mines de Nantes
+ * Copyright (C) 2009, 2010 DIKU, INRIA, LIP6
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License (GPL)
@@ -28,6 +53,8 @@ module Flag = Flag_matcher
 (*****************************************************************************)
 let pr2, pr2_once = Common.mk_pr2_wrappers Flag_matcher.verbose_matcher
 
+let (+++) a b = match a with Some x -> Some x | None -> b
+
 (*****************************************************************************)
 (* Helpers *)
 (*****************************************************************************)
@@ -63,7 +90,7 @@ let (need_unordered_initialisers : B.initialiser B.wrap2 list -> bool) =
 
 (* For the #include <linux/...> in the .cocci, need to find where is
  * the '+' attached to this element, to later find the first concrete
- * #include <linux/xxx.h> or last one in the serie of #includes in the
+ * #include <linux/xxx.h> or last one in the series of #includes in the
  * .c.
  *)
 type include_requirement =
@@ -612,6 +639,8 @@ module type PARAM =
       (A.meta_name A.mcode, Ast_c.parameterType) matcher
     val distrf_ini :
       (A.meta_name A.mcode, Ast_c.initialiser) matcher
+    val distrf_inis :
+      (A.meta_name A.mcode, (Ast_c.initialiser, Ast_c.il) either list) matcher
     val distrf_decl :
       (A.meta_name A.mcode, Ast_c.declaration) matcher
     val distrf_field :
@@ -620,8 +649,10 @@ module type PARAM =
       (A.meta_name A.mcode, Control_flow_c.node) matcher
 
     val distrf_define_params :
-      (A.meta_name A.mcode, (string Ast_c.wrap, Ast_c.il) either list)
-      matcher
+      (A.meta_name A.mcode, (string Ast_c.wrap, Ast_c.il) either list) matcher
+
+    val distrf_enum_fields :
+      (A.meta_name A.mcode, (B.oneEnumType, B.il) either list) matcher
 
     val distrf_struct_fields :
       (A.meta_name A.mcode, B.field list) matcher
@@ -743,6 +774,154 @@ let satisfies_econstraint c exp : bool =
       | Ast_c.Float (float, _) -> satisfies_regexpconstraint c float)
   | _ -> warning "Unable to apply a constraint on an expression!"
 
+
+(* ------------------------------------------------------------------------- *)
+(* This has to be up here to allow adequate polymorphism *)
+
+let list_matcher match_dots rebuild_dots match_comma rebuild_comma
+    match_metalist rebuild_metalist mktermval special_cases
+    element distrf get_iis = fun eas ebs ->
+  let rec loop = function
+      [], [] -> return ([], [])
+    | [], eb::ebs -> fail
+    | ea::eas, ebs ->
+       X.all_bound (A.get_inherited ea) >&&>
+       let try_matches =
+         (match match_dots ea, ebs with
+           Some (mcode, optexpr), ys ->
+          (* todo: if optexpr, then a WHEN and so may have to filter yys *)
+              if optexpr <> None then failwith "not handling when in a list";
+             
+          (* '...' can take more or less the beginnings of the arguments *)
+              let startendxs =
+               Common.zip (Common.inits ys) (Common.tails ys) in
+             Some
+               (startendxs +> List.fold_left (fun acc (startxs, endxs) ->
+                 acc >||> (
+                 
+              (* allow '...', and maybe its associated ',' to match nothing.
+                * for the associated ',' see below how we handle the EComma
+                * to match nothing.
+              *)
+                 (if null startxs
+                 then
+                    if mcode_contain_plus (mcodekind mcode)
+                    then fail
+                  (*failwith
+                    "I have no token that I could accroche myself on"*)
+                    else return (dots2metavar mcode, [])
+                 else
+                (* subtil: we dont want the '...' to match until the
+                   * comma. cf -test pb_params_iso. We would get at
+                   * "already tagged" error.
+                   * this is because both f (... x, ...) and f (..., x, ...)
+                   * would match a  f(x,3)  with our "optional-comma" strategy.
+                *)
+                    (match Common.last startxs with
+                    | Right _ -> fail
+                    | Left _ -> distrf (dots2metavar mcode) startxs))
+                   
+                   >>= (fun mcode startxs ->
+                     let mcode = metavar2dots mcode in
+                      loop (eas, endxs) >>= (fun eas endxs ->
+                       return (
+                       (rebuild_dots (mcode, optexpr) +> A.rewrap ea) ::eas,
+                       startxs ++ endxs
+                         )))
+                   )
+                   ) fail)
+               
+         | None,_ -> None)
+           +++
+           (match match_comma ea, ebs with
+           | Some ia1, Right ii::ebs ->
+               Some
+                 (let ib1 = tuple_of_list1 ii in
+                 tokenf ia1 ib1 >>= (fun ia1 ib1 ->
+                   loop (eas, ebs) >>= (fun eas ebs ->
+                     return (
+                      (rebuild_comma ia1 +> A.rewrap ea)::eas,
+                      (Right [ib1])::ebs
+                                      )
+                       )))
+           | Some ia1, ebs ->
+          (* allow ',' to maching nothing. optional comma trick *)
+               Some
+                 (if mcode_contain_plus (mcodekind ia1)
+                 then fail
+                 else loop (eas, ebs))
+           | None,_ -> None)
+           +++
+           (match match_metalist ea, ebs with
+             Some (ida,leninfo,keep,inherited), ys ->
+               let startendxs =
+                 Common.zip (Common.inits ys) (Common.tails ys) in
+               Some
+                 (startendxs +> List.fold_left (fun acc (startxs, endxs) ->
+                   acc >||> (
+                   let ok =
+                     if null startxs
+                     then
+                       if mcode_contain_plus (mcodekind ida)
+                       then false
+                    (* failwith "no token that I could accroche myself on" *)
+                       else true
+                     else
+                       (match Common.last startxs with
+                       | Right _ -> false
+                       | Left _ -> true)
+                   in
+                   if not ok
+                   then fail
+                   else
+                     let startxs' = Ast_c.unsplit_comma startxs in
+                     let len = List.length  startxs' in
+                     
+                     (match leninfo with
+                     | A.MetaListLen (lenname,lenkeep,leninherited) ->
+                         let max_min _ = failwith "no pos" in
+                         X.envf lenkeep leninherited
+                           (lenname, Ast_c.MetaListlenVal (len), max_min)
+                     | A.CstListLen n ->
+                         if len = n
+                         then (function f -> f())
+                         else (function f -> fail)
+                     | A.AnyListLen -> function f -> f()
+                           )
+                       (fun () ->
+                         let max_min _ =
+                           Lib_parsing_c.lin_col_by_pos (get_iis startxs) in
+                         X.envf keep inherited
+                           (ida, mktermval startxs', max_min)
+                           (fun () ->
+                             if null startxs
+                             then return (ida, [])
+                             else distrf ida (Ast_c.split_comma startxs'))
+                           >>= (fun ida startxs ->
+                             loop (eas, endxs) >>= (fun eas endxs ->
+                               return (
+                               (rebuild_metalist(ida,leninfo,keep,inherited))
+                                 +> A.rewrap ea::eas,
+                               startxs ++ endxs
+                                 ))
+                               )
+                           )
+                       )) fail)
+           | None,_ -> None)
+           +++
+           special_cases ea eas ebs in
+       match try_matches with
+         Some res -> res
+       | None ->
+           (match ebs with
+           | (Left eb)::ebs ->
+               element ea eb >>= (fun ea eb ->
+                 loop (eas, ebs) >>= (fun eas ebs ->
+                   return (ea::eas, Left eb::ebs)))
+           | (Right y)::ys -> raise Impossible
+           | [] -> fail) in
+  loop (eas,ebs)
+
 (*---------------------------------------------------------------------------*)
 (* toc:
  *  - expression
@@ -966,7 +1145,7 @@ let rec (expression: (A.expression, Ast_c.expression) matcher) =
         expression ea2 eb2 >>= (fun ea2 eb2 ->
         tokenf opa opbi >>= (fun opa opbi ->
           return (
-            ((A.Assignment (ea1, opa, ea2, simple))) +> wa,
+            (A.Assignment (ea1, opa, ea2, simple)) +> wa,
             ((B.Assignment (eb1, opb, eb2), typ), [opbi])
         ))))
       else fail
@@ -1323,169 +1502,60 @@ and (ident: info_ident -> (A.ident, string * Ast_c.info) matcher) =
 
   | A.OptIdent _ | A.UniqueIdent _ ->
       failwith "not handling Opt/Unique for ident"
-
-
-
+    
 (* ------------------------------------------------------------------------- *)
 and (arguments: sequence ->
-      (A.expression list, Ast_c.argument Ast_c.wrap2 list) matcher) =
- fun seqstyle eas ebs ->
-  match seqstyle with
-  | Unordered -> failwith "not handling ooo"
-  | Ordered ->
-      arguments_bis eas (Ast_c.split_comma ebs) >>= (fun eas ebs_splitted ->
-        return (eas, (Ast_c.unsplit_comma ebs_splitted))
-      )
+  (A.expression list, Ast_c.argument Ast_c.wrap2 list) matcher) =
 fun seqstyle eas ebs ->
+    match seqstyle with
+    | Unordered -> failwith "not handling ooo"
+    | Ordered ->
+       arguments_bis eas (Ast_c.split_comma ebs) >>= (fun eas ebs_splitted ->
+          return (eas, (Ast_c.unsplit_comma ebs_splitted))
+           )
 (* because '...' can match nothing, need to take care when have
- * ', ...'   or '...,'  as in  f(..., X, Y, ...). It must match
- * f(1,2) for instance.
- * So I have added special cases such as (if startxs = []) and code
- * in the Ecomma matching rule.
- *
- * old: Must do some try, for instance when f(...,X,Y,...) have to
- * test the transfo for all the combinaitions    and if multiple transfo
- * possible ? pb ? => the type is to return a expression option ? use
- * some combinators to help ?
- * update: with the tag-SP approach, no more a problem.
- *)
-
  * ', ...'   or '...,'  as in  f(..., X, Y, ...). It must match
  * f(1,2) for instance.
  * So I have added special cases such as (if startxs = []) and code
  * in the Ecomma matching rule.
  *
  * old: Must do some try, for instance when f(...,X,Y,...) have to
  * test the transfo for all the combinaitions    and if multiple transfo
  * possible ? pb ? => the type is to return a expression option ? use
  * some combinators to help ?
  * update: with the tag-SP approach, no more a problem.
+*)
+         
 and arguments_bis = fun eas ebs ->
-  match eas, ebs with
-  | [], [] -> return ([], [])
-  | [], eb::ebs -> fail
-  | ea::eas, ebs ->
-      X.all_bound (A.get_inherited ea) >&&>
-      (match A.unwrap ea, ebs with
-      | A.Edots (mcode, optexpr), ys ->
-          (* todo: if optexpr, then a WHEN and so may have to filter yys *)
-          if optexpr <> None then failwith "not handling when in argument";
-
-          (* '...' can take more or less the beginnings of the arguments *)
-          let startendxs = Common.zip (Common.inits ys) (Common.tails ys) in
-          startendxs +> List.fold_left (fun acc (startxs, endxs) ->
-            acc >||> (
-
-              (* allow '...', and maybe its associated ',' to match nothing.
-               * for the associated ',' see below how we handle the EComma
-               * to match nothing.
-               *)
-              (if null startxs
-              then
-                if mcode_contain_plus (mcodekind mcode)
-                then fail
-                  (* failwith "I have no token that I could accroche myself on" *)
-                else return (dots2metavar mcode, [])
-              else
-                (* subtil: we dont want the '...' to match until the
-                 * comma. cf -test pb_params_iso. We would get at
-                 * "already tagged" error.
-                 * this is because both f (... x, ...) and f (..., x, ...)
-                 * would match a  f(x,3)  with our "optional-comma" strategy.
-                 *)
-                  (match Common.last startxs with
-                  | Right _ -> fail
-                  | Left _ ->
-                      X.distrf_args (dots2metavar mcode) startxs
-                  )
-              )
-              >>= (fun mcode startxs ->
-               let mcode = metavar2dots mcode in
-                arguments_bis eas endxs >>= (fun eas endxs ->
-                  return (
-                    (A.Edots (mcode, optexpr) +> A.rewrap ea) ::eas,
-                    startxs ++ endxs
-                  )))
-            )
-          ) fail
-
-      | A.EComma ia1, Right ii::ebs ->
-          let ib1 = tuple_of_list1 ii in
-          tokenf ia1 ib1 >>= (fun ia1 ib1 ->
-            arguments_bis eas ebs >>= (fun eas ebs ->
-              return (
-                (A.EComma ia1 +> A.rewrap ea)::eas,
-                (Right [ib1])::ebs
-              )
-            ))
-      | A.EComma ia1, ebs ->
-          (* allow ',' to maching nothing. optional comma trick *)
-          if mcode_contain_plus (mcodekind ia1)
-          then fail
-          else arguments_bis eas ebs
-
-      | A.MetaExprList(ida,leninfo,keep,inherited),ys ->
-          let startendxs = Common.zip (Common.inits ys) (Common.tails ys) in
-          startendxs +> List.fold_left (fun acc (startxs, endxs) ->
-            acc >||> (
-              let ok =
-                if null startxs
-                then
-                  if mcode_contain_plus (mcodekind ida)
-                  then false
-                    (* failwith "no token that I could accroche myself on" *)
-                  else true
-                else
-                  (match Common.last startxs with
-                  | Right _ -> false
-                  | Left _ -> true
-                  )
-              in
-              if not ok
-              then fail
-              else
-                let startxs' = Ast_c.unsplit_comma startxs in
-                let len = List.length  startxs' in
-
-               (match leninfo with
-               | A.MetaListLen (lenname,lenkeep,leninherited) ->
-                   let max_min _ = failwith "no pos" in
-                    X.envf lenkeep leninherited
-                      (lenname, Ast_c.MetaListlenVal (len), max_min)
-               | A.CstListLen n ->
-                   if len = n
-                   then (function f -> f())
-                   else (function f -> fail)
-               | A.AnyListLen -> function f -> f()
-                )
-                (fun () ->
-                 let max_min _ =
-                   Lib_parsing_c.lin_col_by_pos
-                     (Lib_parsing_c.ii_of_args startxs) in
-                  X.envf keep inherited
-                    (ida, Ast_c.MetaExprListVal startxs', max_min)
-                (fun () ->
-                 if null startxs
-                 then return (ida, [])
-                  else X.distrf_args ida (Ast_c.split_comma startxs')
-                )
-                >>= (fun ida startxs ->
-                  arguments_bis eas endxs >>= (fun eas endxs ->
-                    return (
-                      (A.MetaExprList(ida,leninfo,keep,inherited))
-                     +> A.rewrap ea::eas,
-                      startxs ++ endxs
-                    ))
-                  )
-                )
-            )) fail
-
-
-      | _unwrapx, (Left eb)::ebs ->
-          argument ea eb >>= (fun ea eb ->
-          arguments_bis eas ebs >>= (fun eas ebs ->
-            return (ea::eas, Left eb::ebs)
-          ))
-      | _unwrapx, (Right y)::ys -> raise Impossible
-      | _unwrapx, [] -> fail
-      )
-
+  let match_dots ea =
+    match A.unwrap ea with
+      A.Edots(mcode, optexpr) -> Some (mcode, optexpr)
+    | _ -> None in
+  let build_dots (mcode, optexpr) = A.Edots(mcode, optexpr) in
+  let match_comma ea =
+    match A.unwrap ea with
+      A.EComma ia1 -> Some ia1
+    | _ -> None in
+  let build_comma ia1 = A.EComma ia1 in
+  let match_metalist ea =
+    match A.unwrap ea with
+      A.MetaExprList(ida,leninfo,keep,inherited) ->
+       Some(ida,leninfo,keep,inherited)
+    | _ -> None in
+  let build_metalist (ida,leninfo,keep,inherited) =
+    A.MetaExprList(ida,leninfo,keep,inherited) in
+  let mktermval v = Ast_c.MetaExprListVal v in
+  let special_cases ea eas ebs = None in
+  list_matcher match_dots build_dots match_comma build_comma
+    match_metalist build_metalist mktermval
+    special_cases argument X.distrf_args
+    Lib_parsing_c.ii_of_args eas ebs
 
 and argument arga argb =
   X.all_bound (A.get_inherited arga) >&&>
-   match A.unwrap arga, argb with
+  match A.unwrap arga, argb with
   | A.TypeExp tya,
     Right (B.ArgType {B.p_register=b,iib; p_namei=sopt;p_type=tyb}) ->
-
       if b || sopt <> None
       then
         (* failwith "the argument have a storage and ast_cocci does not have"*)
@@ -1524,211 +1594,99 @@ and (parameters: sequence ->
 
 
 and parameters_bis eas ebs =
-  match eas, ebs with
-  | [], [] -> return ([], [])
-  | [], eb::ebs -> fail
-  | ea::eas, ebs ->
-      (* the management of positions is inlined into each case, because
-        sometimes there is a Param and sometimes a ParamList *)
-      X.all_bound (A.get_inherited ea) >&&>
-      (match A.unwrap ea, ebs with
-      | A.Pdots (mcode), ys ->
-
-          (* '...' can take more or less the beginnings of the arguments *)
-          let startendxs = Common.zip (Common.inits ys) (Common.tails ys) in
-          startendxs +> List.fold_left (fun acc (startxs, endxs) ->
-            acc >||> (
-
-              (if null startxs
-              then
-                if mcode_contain_plus (mcodekind mcode)
-                then fail
-                (* failwith "I have no token that I could accroche myself on"*)
-                else return (dots2metavar mcode, [])
-              else
-                (match Common.last startxs with
-                | Right _ -> fail
-                | Left _ ->
-                    X.distrf_params (dots2metavar mcode) startxs
-                )
-              ) >>= (fun mcode startxs ->
-               let mcode = metavar2dots mcode in
-                parameters_bis eas endxs >>= (fun eas endxs ->
-                  return (
-                    (A.Pdots (mcode) +> A.rewrap ea) ::eas,
-                    startxs ++ endxs
-                  )))
-            )
-          ) fail
-
-      | A.PComma ia1, Right ii::ebs ->
-          let ib1 = tuple_of_list1 ii in
-          tokenf ia1 ib1 >>= (fun ia1 ib1 ->
-          parameters_bis eas ebs >>= (fun eas ebs ->
-            return (
-              (A.PComma ia1 +> A.rewrap ea)::eas,
-              (Right [ib1])::ebs
-            )
-          ))
-
-      | A.PComma ia1, ebs ->
-          (* try optional comma trick *)
-          if mcode_contain_plus (mcodekind ia1)
-          then fail
-          else parameters_bis eas ebs
-
-
-      | A.MetaParamList(ida,leninfo,keep,inherited),ys->
-          let startendxs = Common.zip (Common.inits ys) (Common.tails ys) in
-          startendxs +> List.fold_left (fun acc (startxs, endxs) ->
-            acc >||> (
-              let ok =
-                if null startxs
-                then
-                  if mcode_contain_plus (mcodekind ida)
-                  then false
-               (* failwith "I have no token that I could accroche myself on" *)
-                  else true
-                else
-                  (match Common.last startxs with
-                  | Right _ -> false
-                  | Left _ -> true
-                  )
-              in
-              if not ok
-              then fail
-              else
-                let startxs' = Ast_c.unsplit_comma startxs in
-                let len = List.length  startxs' in
-
-               (match leninfo with
-                 A.MetaListLen (lenname,lenkeep,leninherited) ->
-                   let max_min _ = failwith "no pos" in
-                    X.envf lenkeep leninherited
-                     (lenname, Ast_c.MetaListlenVal (len), max_min)
-               | A.CstListLen n ->
-                   if len = n
-                   then (function f -> f())
-                   else (function f -> fail)
-               | A.AnyListLen -> function f -> f()
-                )
-               (fun () ->
-                 let max_min _ =
-                   Lib_parsing_c.lin_col_by_pos
-                     (Lib_parsing_c.ii_of_params startxs) in
-                  X.envf keep inherited
-                    (ida, Ast_c.MetaParamListVal startxs', max_min)
-                (fun () ->
-                 if null startxs
-                 then return (ida, [])
-                 else X.distrf_params ida (Ast_c.split_comma startxs')
-               ) >>= (fun ida startxs ->
-                  parameters_bis eas endxs >>= (fun eas endxs ->
-                    return (
-                      (A.MetaParamList(ida,leninfo,keep,inherited))
-                        +> A.rewrap ea::eas,
-                      startxs ++ endxs
-                   ))
-                )
-                ))
-          ) fail
-
-
-      | A.VoidParam ta, ys ->
+  let match_dots ea =
+    match A.unwrap ea with
+      A.Pdots(mcode) -> Some (mcode, None)
+    | _ -> None in
+  let build_dots (mcode, _optexpr) = A.Pdots(mcode) in
+  let match_comma ea =
+    match A.unwrap ea with
+      A.PComma ia1 -> Some ia1
+    | _ -> None in
+  let build_comma ia1 = A.PComma ia1 in
+  let match_metalist ea =
+    match A.unwrap ea with
+      A.MetaParamList(ida,leninfo,keep,inherited) ->
+       Some(ida,leninfo,keep,inherited)
+    | _ -> None in
+  let build_metalist (ida,leninfo,keep,inherited) =
+    A.MetaParamList(ida,leninfo,keep,inherited) in
+  let mktermval v = Ast_c.MetaParamListVal v in
+  let special_cases ea eas ebs =
+    (* a case where one smpl parameter matches a list of C parameters *)
+    match A.unwrap ea,ebs with
+      A.VoidParam ta, ys ->
+       Some
           (match eas, ebs with
           | [], [Left eb] ->
               let {B.p_register=(hasreg,iihasreg);
-                   p_namei = idbopt;
-                   p_type=tb; } = eb in
-
+                    p_namei = idbopt;
+                    p_type=tb; } = eb in
+             
               if idbopt =*= None && not hasreg
               then
                 match tb with
                 | (qub, (B.BaseType B.Void,_)) ->
                     fullType ta tb >>= (fun ta tb ->
                       return (
-                        [(A.VoidParam ta) +> A.rewrap ea],
-                        [Left {B.p_register=(hasreg, iihasreg);
-                               p_namei = idbopt;
-                               p_type = tb;}]
-                      ))
+                      [(A.VoidParam ta) +> A.rewrap ea],
+                      [Left {B.p_register=(hasreg, iihasreg);
+                              p_namei = idbopt;
+                              p_type = tb;}]
+                       ))
                 | _ -> fail
               else fail
-          | _ -> fail
-          )
-
-      | (A.OptParam _ | A.UniqueParam _), _ ->
-              failwith "handling Opt/Unique for Param"
-
-      | A.Pcircles (_), ys -> raise Impossible (* in Ordered mode *)
-
-
-      | A.MetaParam (ida,keep,inherited), (Left eb)::ebs ->
-          (* todo: use quaopt, hasreg ? *)
-         let max_min _ =
-           Lib_parsing_c.lin_col_by_pos (Lib_parsing_c.ii_of_param eb) in
-          X.envf keep inherited (ida,Ast_c.MetaParamVal eb,max_min) (fun () ->
-            X.distrf_param ida eb
-          ) >>= (fun ida eb ->
-              parameters_bis eas ebs >>= (fun eas ebs ->
-                return (
-                  (A.MetaParam(ida,keep,inherited))+> A.rewrap ea::eas,
-                  (Left eb)::ebs
-                )))
-
-
-      | A.Param (typa, idaopt), (Left eb)::ebs ->
-         (*this should succeed if the C code has a name, and fail otherwise*)
-          parameter (idaopt, typa) eb >>= (fun (idaopt, typa) eb ->
-          parameters_bis eas ebs >>= (fun eas ebs ->
-            return (
-              (A.Param (typa, idaopt))+> A.rewrap ea :: eas,
-              (Left eb)::ebs
-            )))
-
-      | _unwrapx, (Right y)::ys -> raise Impossible
-      | _unwrapx, [] -> fail
-      )
-
-
-
+          | _ -> fail)
+    |  _ -> None in
+  list_matcher match_dots build_dots match_comma build_comma
+    match_metalist build_metalist mktermval
+    special_cases parameter X.distrf_params
+    Lib_parsing_c.ii_of_params eas ebs
+    
 (*
-let split_register_param = fun (hasreg, idb, ii_b_s) ->
-  match hasreg, idb,  ii_b_s with
-  | false, Some s, [i1] -> Left (s, [], i1)
-  | true, Some s, [i1;i2] -> Left (s, [i1], i2)
-  | _, None, ii -> Right ii
-  | _ -> raise Impossible
+   let split_register_param = fun (hasreg, idb, ii_b_s) ->
+   match hasreg, idb,  ii_b_s with
+   | false, Some s, [i1] -> Left (s, [], i1)
+   | true, Some s, [i1;i2] -> Left (s, [i1], i2)
+   | _, None, ii -> Right ii
+   | _ -> raise Impossible
 *)
-
-
-and parameter = fun (idaopt, typa) paramb ->
-
-  let {B.p_register = (hasreg,iihasreg);
-       p_namei = nameidbopt;
-       p_type = typb;} = paramb in
-
-  fullType typa typb >>= (fun typa typb ->
-  match idaopt, nameidbopt with
-  | Some ida, Some nameidb ->
+    
+    
+and parameter = fun parama paramb ->
+  match A.unwrap parama, paramb with
+    A.MetaParam (ida,keep,inherited), eb ->
+      (* todo: use quaopt, hasreg ? *)
+      let max_min _ =
+       Lib_parsing_c.lin_col_by_pos (Lib_parsing_c.ii_of_param eb) in
+      X.envf keep inherited (ida,Ast_c.MetaParamVal eb,max_min) (fun () ->
+        X.distrf_param ida eb
+          ) >>= (fun ida eb ->
+            return (A.MetaParam(ida,keep,inherited)+> A.rewrap parama,eb))
+  | A.Param (typa, idaopt), eb ->
+      let {B.p_register = (hasreg,iihasreg);
+           p_namei = nameidbopt;
+           p_type = typb;} = paramb in
+      
+      fullType typa typb >>= (fun typa typb ->
+       match idaopt, nameidbopt with
+       | Some ida, Some nameidb ->
       (* todo: if minus on ida, should also minus the iihasreg ? *)
-      ident_cpp DontKnow ida nameidb >>= (fun ida nameidb ->
-        return (
-          (Some ida, typa),
-          {B.p_register = (hasreg, iihasreg);
-           p_namei = Some (nameidb);
-           p_type = typb}
-        ))
-
-  | None, None ->
-      return (
-        (None, typa),
-        {B.p_register=(hasreg,iihasreg);
-         p_namei = None;
-         p_type = typb;}
-      )
-
-
+           ident_cpp DontKnow ida nameidb >>= (fun ida nameidb ->
+              return (
+              A.Param (typa, Some ida)+> A.rewrap parama,
+              {B.p_register = (hasreg, iihasreg);
+               p_namei = Some (nameidb);
+               p_type = typb}
+               ))
+             
+       | None, None ->
+           return (
+            A.Param (typa, None)+> A.rewrap parama,
+            {B.p_register=(hasreg,iihasreg);
+              p_namei = None;
+              p_type = typb;}
+             )
   (* why handle this case ? because of transform_proto ? we may not
    * have an ident in the proto.
    * If have some plus on ida ? do nothing about ida ?
@@ -1741,12 +1699,12 @@ and parameter = fun (idaopt, typa) paramb ->
       )
  *)
 
-  | Some _, None -> fail
-  | None, Some _ -> fail
-  )
-
-
-
+       | Some _, None -> fail
+       | None, Some _ -> fail)
+  | (A.OptParam _ | A.UniqueParam _), _ ->
+      failwith "not handling Opt/Unique for Param"       
+  | A.Pcircles (_), ys -> raise Impossible (* in Ordered mode *)
+  | _ -> fail
 
 (* ------------------------------------------------------------------------- *)
 and (declaration: (A.mcodekind * bool * A.declaration,B.declaration) matcher) =
@@ -1914,6 +1872,7 @@ and onedecl = fun allminus decla (declb, iiptvirgb, iistob) ->
                 | _ -> raise Impossible
              )
 
+          (* do we need EnumName here too? *)
            | A.StructUnionName(sua, sa) ->
              fullType tya2 structnameb >>= (fun tya2 structnameb ->
 
@@ -2177,22 +2136,38 @@ and (initialiser: (A.initialiser, Ast_c.initialiser) matcher) =  fun ia ib ->
         | _ -> fail
         )
 
-    | (A.InitList (allminus, ia1, ias, ia2, []), (B.InitList ibs, ii)) ->
+    | (A.ArInitList (ia1, ias, ia2), (B.InitList ibs, ii)) ->
+        (match ii with
+       | ib1::ib2::iicommaopt ->
+            tokenf ia1 ib1 >>= (fun ia1 ib1 ->
+            tokenf ia2 ib2 >>= (fun ia2 ib2 ->
+            ar_initialisers (A.undots ias) (ibs, iicommaopt) >>=
+             (fun iasundots (ibs,iicommaopt) ->
+              return (
+                (A.ArInitList (ia1, redots ias iasundots, ia2)) +> A.rewrap ia,
+                (B.InitList ibs, ib1::ib2::iicommaopt)
+              ))))
+
+        | _ -> raise Impossible
+        )
+
+    | (A.StrInitList (allminus, ia1, ias, ia2, []), (B.InitList ibs, ii)) ->
         (match ii with
         | ib1::ib2::iicommaopt ->
             tokenf ia1 ib1 >>= (fun ia1 ib1 ->
             tokenf ia2 ib2 >>= (fun ia2 ib2 ->
-            initialisers allminus ias (ibs, iicommaopt) >>=
+            str_initialisers allminus ias (ibs, iicommaopt) >>=
              (fun ias (ibs,iicommaopt) ->
               return (
-                (A.InitList (allminus, ia1, ias, ia2, [])) +> A.rewrap ia,
+                (A.StrInitList (allminus, ia1, ias, ia2, [])) +> A.rewrap ia,
                 (B.InitList ibs, ib1::ib2::iicommaopt)
               ))))
 
         | _ -> raise Impossible
         )
 
-    | (A.InitList (allminus, i1, ias, i2, whencode),(B.InitList ibs, _ii)) ->
+    | (A.StrInitList (allminus, i1, ias, i2, whencode),
+       (B.InitList ibs, _ii)) ->
         failwith "TODO: not handling whencode in initialisers"
 
 
@@ -2288,46 +2263,56 @@ and designator da db =
   | (_, ((B.DesignatorField _|B.DesignatorIndex _|B.DesignatorRange _), _)) ->
       fail
 
-
-and initialisers = fun allminus ias (ibs, iicomma) ->
+and str_initialisers = fun allminus ias (ibs, iicomma) ->
   let ias_unsplit = unsplit_icomma      ias in
   let ibs_split   = resplit_initialiser ibs iicomma in
 
-  let f =
-    if need_unordered_initialisers ibs
-    then initialisers_unordered2 allminus
-    else initialisers_ordered2
-  in
-  f ias_unsplit ibs_split >>=
-      (fun ias_unsplit ibs_split ->
-        return (
-          split_icomma ias_unsplit,
-          unsplit_initialiser ibs_split
-        )
-      )
+  if need_unordered_initialisers ibs
+  then initialisers_unordered2 allminus ias_unsplit ibs_split >>=
+    (fun ias_unsplit ibs_split ->
+      return (
+      split_icomma ias_unsplit,
+      unsplit_initialiser ibs_split))
+  else fail
+
+and ar_initialisers = fun ias (ibs, iicomma) ->
+  (* this doesn't check need_unordered_initialisers because ... can be
+     implemented as ordered, even if it matches unordered initializers *)
+  let ibs = resplit_initialiser ibs iicomma in
+  let ibs =
+    List.concat
+      (List.map (function (elem,comma) -> [Left elem; Right [comma]]) ibs) in
+  initialisers_ordered2 ias ibs >>=
+  (fun ias ibs_split ->
+    let ibs,iicomma =
+      match List.rev ibs_split with
+       (Right comma)::rest -> (Ast_c.unsplit_comma (List.rev rest),comma)
+      | (Left _)::_ -> (Ast_c.unsplit_comma ibs_split,[]) (* possible *)
+      | [] -> ([],[]) in
+    return (ias, (ibs,iicomma)))
 
-(* todo: one day julia will reput a IDots *)
 and initialisers_ordered2 = fun ias ibs ->
-  match ias, ibs with
-  | [], [] -> return ([], [])
-  | (x, xcomma)::xs, (y, commay)::ys ->
-      (match A.unwrap xcomma with
-      | A.IComma commax ->
-          tokenf commax commay >>= (fun commax commay ->
-          initialiser x y >>= (fun x y ->
-          initialisers_ordered2 xs ys >>= (fun xs ys ->
-            return (
-                    (x, (A.IComma commax) +> A.rewrap xcomma)::xs,
-                    (y, commay)::ys
-            )
-          )))
-      | _ -> raise Impossible (* unsplit_iicomma wrong *)
-      )
-  | _ -> fail
+  let match_dots ea =
+    match A.unwrap ea with
+      A.Idots(mcode, optexpr) -> Some (mcode, optexpr)
+    |  _ -> None in
+  let build_dots (mcode, optexpr) = A.Idots(mcode, optexpr) in
+  let match_comma ea =
+    match A.unwrap ea with
+      A.IComma ia1 -> Some ia1
+    |  _ -> None in
+  let build_comma ia1 = A.IComma ia1 in
+  let match_metalist ea = None in
+  let build_metalist (ida,leninfo,keep,inherited) = failwith "not possible" in
+  let mktermval v = failwith "not possible" in
+  let special_cases ea eas ebs = None in
+  let no_ii x = failwith "not possible" in
+  list_matcher match_dots build_dots match_comma build_comma
+    match_metalist build_metalist mktermval
+    special_cases initialiser X.distrf_inis no_ii ias ibs
 
 
 and initialisers_unordered2 = fun allminus ias ibs ->
-
   match ias, ibs with
   | [], ys ->
       if allminus
@@ -2341,23 +2326,11 @@ and initialisers_unordered2 = fun allminus ias ibs ->
                    return(l,(ib,comma)::ibs)))) in
        loop ibs
       else return ([], ys)
-  | (x,xcomma)::xs, ys ->
-
+  | x::xs, ys ->
       let permut = Common.uncons_permut_lazy ys in
       permut +> List.fold_left (fun acc ((e, pos), rest) ->
         acc >||>
-          (
-            (match A.unwrap xcomma, e with
-            | A.IComma commax, (y, commay) ->
-                tokenf commax commay >>= (fun commax commay ->
-                initialiser x y >>= (fun x y ->
-                  return (
-                    (x, (A.IComma commax) +> A.rewrap xcomma),
-                    (y, commay))
-                )
-                )
-            | _ -> raise Impossible (* unsplit_iicomma wrong *)
-            )
+          (initialiser_comma x e
             >>= (fun x e ->
               let rest = Lazy.force rest in
               initialisers_unordered2 allminus xs rest >>= (fun xs rest ->
@@ -2367,53 +2340,42 @@ and initialisers_unordered2 = fun allminus ias ibs ->
                 ))))
       ) fail
 
+and initialiser_comma (x,xcomma) (y, commay) =
+  match A.unwrap xcomma with
+    A.IComma commax ->
+      tokenf commax commay >>= (fun commax commay ->
+        initialiser x y >>= (fun x y ->
+          return (
+          (x, (A.IComma commax) +> A.rewrap xcomma),
+          (y, commay))))
+  | _ -> raise Impossible (* unsplit_iicomma wrong *)
 
 (* ------------------------------------------------------------------------- *)
 and (struct_fields: (A.declaration list, B.field list) matcher) =
  fun eas ebs ->
-  match eas, ebs with
-  | [], [] -> return ([], [])
-  | [], eb::ebs -> fail
-  | ea::eas, ebs ->
-      X.all_bound (A.get_inherited ea) >&&>
-      (match A.unwrap ea, ebs with
-      | A.Ddots (mcode, optwhen), ys ->
-          if optwhen <> None then failwith "not handling when in argument";
-
-          (* '...' can take more or less the beginnings of the arguments *)
-          let startendxs =
-           if eas = []
-           then [(ys,[])] (* hack! the only one that can work *)
-           else Common.zip (Common.inits ys) (Common.tails ys) in
-          startendxs +> List.fold_left (fun acc (startxs, endxs) ->
-            acc >||> (
-
-              (if null startxs
-              then
-                if mcode_contain_plus (mcodekind mcode)
-                then fail
-                  (* failwith "I have no token that I could accroche myself on" *)
-                else return (dots2metavar mcode, [])
-              else
-
-                  X.distrf_struct_fields (dots2metavar mcode) startxs
-              ) >>= (fun mcode startxs ->
-               let mcode = metavar2dots mcode in
-                struct_fields eas endxs >>= (fun eas endxs ->
-                  return (
-                    (A.Ddots (mcode, optwhen) +> A.rewrap ea) ::eas,
-                    startxs ++ endxs
-                  )))
-            )
-          ) fail
-      | _unwrapx, eb::ebs ->
-          struct_field ea eb >>= (fun ea eb ->
-          struct_fields eas ebs >>= (fun eas ebs ->
-            return (ea::eas, eb::ebs)
-          ))
-
-      | _unwrapx, [] -> fail
-      )
+  let match_dots ea =
+    match A.unwrap ea with
+      A.Ddots(mcode, optexpr) -> Some (mcode, optexpr)
+    | _ -> None in
+  let build_dots (mcode, optexpr) = A.Ddots(mcode, optexpr) in
+  let match_comma ea = None in
+  let build_comma ia1 = failwith "not possible" in
+  let match_metalist ea = None in
+  let build_metalist (ida,leninfo,keep,inherited) = failwith "not possible" in
+  let mktermval v = failwith "not possible" in
+  let special_cases ea eas ebs = None in
+  let no_ii x = failwith "not possible" in
+  let make_ebs ebs = List.map (function x -> Left x) ebs in
+  let unmake_ebs ebs =
+    List.map (function Left x -> x | Right x -> failwith "no right") ebs in
+  let distrf mcode startxs =
+    let startxs = unmake_ebs startxs in
+    X.distrf_struct_fields mcode startxs >>=
+    (fun mcode startxs -> return (mcode,make_ebs startxs)) in
+  list_matcher match_dots build_dots match_comma build_comma
+    match_metalist build_metalist mktermval
+    special_cases struct_field distrf no_ii eas (make_ebs ebs) >>=
+  (fun eas ebs -> return (eas,unmake_ebs ebs))
 
 and (struct_field: (A.declaration, B.field) matcher) = fun fa fb ->
 
@@ -2495,6 +2457,44 @@ and (struct_field: (A.declaration, B.field) matcher) = fun fa fb ->
   | _,B.IfdefStruct directive -> fail
 
 
+and enum_fields = fun eas ebs ->
+  let match_dots ea =
+    match A.unwrap ea with
+      A.Edots(mcode, optexpr) -> Some (mcode, optexpr)
+    | _ -> None in
+  let build_dots (mcode, optexpr) = A.Edots(mcode, optexpr) in
+  let match_comma ea =
+    match A.unwrap ea with
+      A.EComma ia1 -> Some ia1
+    | _ -> None in
+  let build_comma ia1 = A.EComma ia1 in
+  let match_metalist ea = None in
+  let build_metalist (ida,leninfo,keep,inherited) = failwith "not possible" in
+  let mktermval v = failwith "not possible" in
+  let special_cases ea eas ebs = None in
+  list_matcher match_dots build_dots match_comma build_comma
+    match_metalist build_metalist mktermval
+    special_cases enum_field X.distrf_enum_fields
+    Lib_parsing_c.ii_of_enum_fields eas ebs
+
+and enum_field ida idb =
+  X.all_bound (A.get_inherited ida) >&&>
+  match A.unwrap ida, idb with
+    A.Ident(id),(nameidb,None) ->
+      ident_cpp DontKnow id nameidb >>= (fun id nameidb ->
+        return ((A.Ident id) +> A.rewrap ida, (nameidb,None)))
+  | A.Assignment(ea1,opa,ea2,init),(nameidb,Some(opbi,eb2)) ->
+      (match A.unwrap ea1 with
+       A.Ident(id) ->
+         ident_cpp DontKnow id nameidb >>= (fun id nameidb ->
+         expression ea2 eb2 >>= (fun ea2 eb2 ->
+          tokenf opa opbi >>= (fun opa opbi -> (* only one kind of assignop *)
+           return (
+           (A.Assignment((A.Ident(id))+>A.rewrap ea1,opa,ea2,init)) +>
+           A.rewrap ida,
+           (nameidb,Some(opbi,eb2))))))
+      |        _ -> failwith "not possible")
+  | _ -> failwith "not possible"
 
 (* ------------------------------------------------------------------------- *)
 and (fullType: (A.fullType, Ast_c.fullType) matcher) =
@@ -2996,15 +2996,85 @@ and (typeC: (A.typeC, Ast_c.typeC) matcher) =
     | _, (B.TypeOfType e, ii) -> fail
 
     | _, (B.ParenType e, ii) -> fail (* todo ?*)
-    | A.EnumName(en,namea), (B.EnumName nameb, ii) ->
+    | A.EnumName(en,Some namea), (B.EnumName nameb, ii) ->
         let (ib1,ib2) = tuple_of_list2 ii in
        ident DontKnow namea (nameb, ib2) >>= (fun namea (nameb, ib2) ->
           tokenf en ib1 >>= (fun en ib1 ->
           return (
-          (A.EnumName (en, namea)) +> A.rewrap ta,
+          (A.EnumName (en, Some namea)) +> A.rewrap ta,
           (B.EnumName nameb, [ib1;ib2])
           )))
 
+    | A.EnumDef(ty, lba, idsa, rba),
+       (B.Enum (sbopt, idsb), ii) ->
+
+       let (ii_sub_sb, lbb, rbb, comma_opt) =
+        match ii with
+          [iisub; lbb; rbb; comma_opt] ->
+            (Common.Left iisub,lbb,rbb,comma_opt)
+        | [iisub; iisb; lbb; rbb; comma_opt] ->
+            (Common.Right (iisub,iisb),lbb,rbb,comma_opt)
+        | _ -> failwith "list of length 4 or 5 expected" in
+
+       let process_type =
+         match (sbopt,ii_sub_sb) with
+           (None,Common.Left iisub) ->
+            (* the following doesn't reconstruct the complete SP code, just
+               the part that matched *)
+            let rec loop s =
+              match A.unwrap s with
+                A.Type(None,ty) ->
+                  (match A.unwrap ty with
+                    A.EnumName(sua, None) ->
+                      tokenf sua iisub >>= (fun sua iisub ->
+                        let ty =
+                          A.Type(None,A.EnumName(sua, None) +> A.rewrap ty)
+                            +> A.rewrap s in
+                        return (ty,[iisub]))
+                  | _ -> fail)
+              | A.DisjType(disjs) ->
+                  disjs +>
+                  List.fold_left (fun acc disj -> acc >|+|> (loop disj)) fail
+              | _ -> fail in
+            loop ty
+
+         | (Some sb,Common.Right (iisub,iisb)) ->
+
+             (* build an EnumName from an Enum *)
+             let fake_su = B.nQ, (B.EnumName sb, [iisub;iisb]) in
+
+             fullType ty fake_su >>= (fun ty fake_su ->
+               match fake_su with
+               | _nQ, (B.EnumName sb, [iisub;iisb]) ->
+                   return (ty,  [iisub; iisb])
+               | _ -> raise Impossible)
+        | _ -> fail in
+
+       process_type
+        >>= (fun ty ii_sub_sb ->
+
+            tokenf lba lbb >>= (fun lba lbb ->
+            tokenf rba rbb >>= (fun rba rbb ->
+             let idsb = resplit_initialiser idsb [comma_opt] in
+             let idsb =
+               List.concat
+                 (List.map
+                    (function (elem,comma) -> [Left elem; Right [comma]])
+                    idsb) in
+            enum_fields (A.undots idsa) idsb >>= (fun unidsa idsb ->
+              let idsa = redots idsa unidsa in
+             let idsb,iicomma =
+               match List.rev idsb with
+                 (Right comma)::rest ->
+                   (Ast_c.unsplit_comma (List.rev rest),comma)
+               | (Left _)::_ -> (Ast_c.unsplit_comma idsb,[]) (* possible *)
+               | [] -> ([],[]) in
+              return (
+                (A.EnumDef(ty, lba, idsa, rba)) +> A.rewrap ta,
+                (B.Enum (sbopt, idsb),ii_sub_sb@[lbb;rbb]@iicomma)
+              ))
+               )))
+
     | _, (B.Enum _, _) -> fail (* todo cocci ?*)
 
     | _,
@@ -3369,76 +3439,35 @@ and (define_params: sequence ->
 
 (* todo? facto code with argument and parameters ? *)
 and define_paramsbis = fun eas ebs ->
-  match eas, ebs with
-  | [], [] -> return ([], [])
-  | [], eb::ebs -> fail
-  | ea::eas, ebs ->
-      X.all_bound (A.get_inherited ea) >&&>
-      (match A.unwrap ea, ebs with
-      | A.DPdots (mcode), ys ->
-
-          (* '...' can take more or less the beginnings of the arguments *)
-          let startendxs = Common.zip (Common.inits ys) (Common.tails ys) in
-          startendxs +> List.fold_left (fun acc (startxs, endxs) ->
-            acc >||> (
-
-              (if null startxs
-              then
-                if mcode_contain_plus (mcodekind mcode)
-                then fail
-                  (* failwith "I have no token that I could accroche myself on" *)
-                else return (dots2metavar mcode, [])
-              else
-                (match Common.last startxs with
-                | Right _ -> fail
-                | Left _ ->
-                    X.distrf_define_params (dots2metavar mcode) startxs
-                )
-              ) >>= (fun mcode startxs ->
-               let mcode = metavar2dots mcode in
-                define_paramsbis eas endxs >>= (fun eas endxs ->
-                  return (
-                    (A.DPdots (mcode) +> A.rewrap ea) ::eas,
-                    startxs ++ endxs
-                  )))
-              )
-            ) fail
-
-      | A.DPComma ia1, Right ii::ebs ->
-          let ib1 = tuple_of_list1 ii in
-          tokenf ia1 ib1 >>= (fun ia1 ib1 ->
-          define_paramsbis eas ebs >>= (fun eas ebs ->
-            return (
-              (A.DPComma ia1 +> A.rewrap ea)::eas,
-              (Right [ib1])::ebs
-            )
-          ))
-
-      | A.DPComma ia1, ebs ->
-          if mcode_contain_plus (mcodekind ia1)
-          then fail
-          else
-            (define_paramsbis eas ebs) (* try optional comma trick *)
-
-      | (A.OptDParam _ | A.UniqueDParam _), _ ->
-              failwith "handling Opt/Unique for define parameters"
-
-      | A.DPcircles (_), ys -> raise Impossible (* in Ordered mode *)
-
-      | A.DParam ida, (Left (idb, ii))::ebs ->
-          let ib1 = tuple_of_list1 ii in
-          ident DontKnow ida (idb, ib1) >>= (fun ida (idb, ib1) ->
-          define_paramsbis eas ebs >>= (fun eas ebs ->
-            return (
-              (A.DParam ida)+> A.rewrap ea :: eas,
-              (Left (idb, [ib1]))::ebs
-            )))
-
-      | _unwrapx, (Right y)::ys -> raise Impossible
-      | _unwrapx, [] -> fail
-      )
-
-
+  let match_dots ea =
+    match A.unwrap ea with
+      A.DPdots(mcode) -> Some (mcode, None)
+    | _ -> None in
+  let build_dots (mcode, _optexpr) = A.DPdots(mcode) in
+  let match_comma ea =
+    match A.unwrap ea with
+      A.DPComma ia1 -> Some ia1
+    | _ -> None in
+  let build_comma ia1 = A.DPComma ia1 in
+  let match_metalist ea = None in
+  let build_metalist (ida,leninfo,keep,inherited) = failwith "not possible" in
+  let mktermval v = failwith "not possible" in
+  let special_cases ea eas ebs = None in
+  let no_ii x = failwith "not possible" in
+  list_matcher match_dots build_dots match_comma build_comma
+    match_metalist build_metalist mktermval
+    special_cases define_parameter X.distrf_define_params no_ii eas ebs
+
+and define_parameter = fun parama paramb ->
+  match A.unwrap parama, paramb with
+    A.DParam ida, (idb, ii) ->
+      let ib1 = tuple_of_list1 ii in
+      ident DontKnow ida (idb, ib1) >>= (fun ida (idb, ib1) ->
+        return ((A.DParam ida)+> A.rewrap parama,(idb, [ib1])))
+  | (A.OptDParam _ | A.UniqueDParam _), _ ->
+      failwith "handling Opt/Unique for define parameters"
+  | A.DPcircles (_), ys -> raise Impossible (* in Ordered mode *)
+  | _ -> fail
 
 (*****************************************************************************)
 (* Entry points *)
index 8f3adc9..f5ff82e 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (*****************************************************************************)
 (* Cocci vs C *)
 (*****************************************************************************)
@@ -103,6 +127,9 @@ module type PARAM =
 
     val distrf_ini :
       (Ast_cocci.meta_name Ast_cocci.mcode, Ast_c.initialiser) matcher
+    val distrf_inis :
+      (Ast_cocci.meta_name Ast_cocci.mcode,
+       (Ast_c.initialiser, Ast_c.il) Common.either list) matcher
     val distrf_decl :
       (Ast_cocci.meta_name Ast_cocci.mcode, Ast_c.declaration) matcher
     val distrf_field :
@@ -116,6 +143,10 @@ module type PARAM =
       (string Ast_c.wrap, Ast_c.il) Common.either list)
       matcher
 
+    val distrf_enum_fields :
+      (Ast_cocci.meta_name Ast_cocci.mcode,
+       (Ast_c.oneEnumType, Ast_c.il) Common.either list) matcher
+
     val distrf_struct_fields :
       (Ast_cocci.meta_name Ast_cocci.mcode, Ast_c.field list)
       matcher
index a29c672..b603e4c 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 open Common
 
 open Ograph_extended
index 5d12b20..e2a5793 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 open Ograph_extended
 
 val labels_for_ctl :
index 322a7c9..b9308be 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 module CTL = Ast_ctl
 
 let prelude =
index 68354f5..a403d62 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val totex :
   string ->
     Ast_cocci.rule list ->
index 950835c..afb8789 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 let debug_engine = ref false
 
 (* false = simpler formulas, only for debugging *)
index 0b6035e..100dead 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 let debug_engine = ref false
 let verbose_matcher = ref true
 
index ceb45c5..6383da7 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 open Common
 
 (* When in a semantic patch there is f(X) ... f(X) we want to force
index 8cfa310..7db4a94 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 open Ograph_extended
 
 (*****************************************************************************)
index e69de29..1fd1d49 100644 (file)
@@ -0,0 +1,24 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
index e69de29..1fd1d49 100644 (file)
@@ -0,0 +1,24 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
index b480855..680ff46 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* ----------------------------------------------------------------------- *)
 (* Entry point *)
 
index 47a4160..c27d347 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* Yoann Padioleau
  *
  * Copyright (C) 2006, 2007 Ecole des Mines de Nantes
@@ -270,9 +294,11 @@ module XMATCH = struct
   let distrf_param  = distrf (Lib_parsing_c.ii_of_param)
   let distrf_params = distrf (Lib_parsing_c.ii_of_params)
   let distrf_ini    = distrf (Lib_parsing_c.ii_of_ini)
+  let distrf_inis   = distrf (Lib_parsing_c.ii_of_inis)
   let distrf_decl   = distrf (Lib_parsing_c.ii_of_decl)
   let distrf_field  = distrf (Lib_parsing_c.ii_of_field)
   let distrf_node   = distrf (Lib_parsing_c.ii_of_node)
+  let distrf_enum_fields = distrf (Lib_parsing_c.ii_of_enum_fields)
   let distrf_struct_fields = distrf (Lib_parsing_c.ii_of_struct_fields)
   let distrf_cst    = distrf (Lib_parsing_c.ii_of_cst)
   let distrf_define_params = distrf (Lib_parsing_c.ii_of_define_params)
index 19506cd..93756f9 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 
 val match_re_node :
   string list (* dropped isos *) ->
index 983810d..73c7c0a 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* two goals: first drop from the environments things that are not used,
    and second prompt for the names of fresh variables that are used *)
 
index e45a8d6..b5fde8f 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val process :
     Ast_cocci.meta_name list (* used after *) ->
       (Ast_cocci.meta_name * Lib_engine.metavar_binding_kind2) list
index 7684ba3..657d6c6 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 open Common.Infix
 
 open Lib_engine
index 445df00..602f118 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* could be in pretty_print_c because dependent of ast_c but metavars
  * are in ast_c for "bad" reason, so better put the pretty_print
  * of metavars here
index bb75096..f1089b2 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 type marker =
     NoMark | BefMark of string | AftMark of string
   | BefAftMark of string * string
index 1bca56c..37cd939 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 1(* Yoann Padioleau
  *
  * Copyright (C) 2006, 2007 Ecole des Mines de Nantes
@@ -402,6 +426,9 @@ module XTRANS = struct
   let distribute_mck_ini (maxpos, minpos) = fun (lop,mop,rop,bop) -> fun x ->
     Visitor_c.vk_ini_s (mk_bigf (maxpos, minpos) (lop,mop,rop,bop)) x
 
+  let distribute_mck_inis (maxpos, minpos) = fun (lop,mop,rop,bop) -> fun x ->
+    Visitor_c.vk_inis_splitted_s (mk_bigf (maxpos, minpos) (lop,mop,rop,bop)) x
+
   let distribute_mck_param (maxpos, minpos) = fun (lop,mop,rop,bop) -> fun x ->
     Visitor_c.vk_param_s (mk_bigf (maxpos, minpos) (lop,mop,rop,bop)) x
 
@@ -413,6 +440,12 @@ module XTRANS = struct
     Visitor_c.vk_node_s (mk_bigf (maxpos, minpos) (lop,mop,rop,bop))
       x
 
+  let distribute_mck_enum_fields (maxpos, minpos) =
+    fun (lop,mop,rop,bop) ->fun x ->
+      Visitor_c.vk_enum_fields_splitted_s
+       (mk_bigf (maxpos, minpos) (lop,mop,rop,bop))
+        x
+
   let distribute_mck_struct_fields (maxpos, minpos) =
     fun (lop,mop,rop,bop) ->fun x ->
       Visitor_c.vk_struct_fields_s (mk_bigf (maxpos, minpos) (lop,mop,rop,bop))
@@ -475,9 +508,12 @@ module XTRANS = struct
   let distrf_param  = distrf (Lib_parsing_c.ii_of_param, distribute_mck_param)
   let distrf_params = distrf (Lib_parsing_c.ii_of_params,distribute_mck_params)
   let distrf_ini = distrf (Lib_parsing_c.ii_of_ini,distribute_mck_ini)
+  let distrf_inis = distrf (Lib_parsing_c.ii_of_inis,distribute_mck_inis)
   let distrf_decl = distrf (Lib_parsing_c.ii_of_decl,distribute_mck_decl)
   let distrf_field = distrf (Lib_parsing_c.ii_of_field,distribute_mck_field)
   let distrf_node = distrf (Lib_parsing_c.ii_of_node,distribute_mck_node)
+  let distrf_enum_fields =
+    distrf (Lib_parsing_c.ii_of_enum_fields, distribute_mck_enum_fields)
   let distrf_struct_fields =
     distrf (Lib_parsing_c.ii_of_struct_fields, distribute_mck_struct_fields)
   let distrf_cst =
index ee65da3..71e36a3 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* note that now we do the transformation via side effect on ast *)
 val transform :
   string (* rule name *) -> string list (* dropped isos *) ->
index d80ba94..eb7ce20 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* the inputs *)
 let show_c = ref false
 let show_cocci = ref false
index c71daa0..b292746 100644 (file)
@@ -1,3 +1,25 @@
+# Copyright 2010, INRIA, University of Copenhagen
+# Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+# This file is part of Coccinelle.
+#
+# Coccinelle is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, according to version 2 of the License.
+#
+# Coccinelle is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+#
+# The authors reserve the right to distribute this or future versions of
+# Coccinelle under other licenses.
+
+
 
 -include ../Makefile.config
 
index 6b6f3f8..a5d9e87 100644 (file)
@@ -1,4 +1,4 @@
-let version = "0.2.4rc2"
+let version = "0.2.4rc3"
 
 let path =
   try (Sys.getenv "COCCINELLE_HOME")
index 304aad7..2d39793 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 let sgrep_mode2 = ref false
 
 let show_misc = ref true
index fd357c8..7d250a2 100644 (file)
@@ -13,6 +13,13 @@ You must first install a recent version of
  - Python and its development files (python-dev)
    (unless you run configure with the --without-python option)
 
+On Debian/Ubuntu, install the following packages
+ - ocaml-native-compilers (or alternatively ocaml) 
+ - pycaml
+ - libsexplib-camlp4-dev
+ - menhir and libmenhir-ocaml-dev
+
+
 Then simply type
  ./configure
  make depend
diff --git a/main.ml b/main.ml
index a7e9e66..b736b7f 100644 (file)
--- a/main.ml
+++ b/main.ml
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 open Common
 module FC = Flag_cocci
 
@@ -316,7 +340,7 @@ let short_options = [
     "  guess what";
 
   "-date",   Arg.Unit (fun () ->
-    pr2 "version: $Date: 2010/08/07 20:19:45 $";
+    pr2 "version: $Date: 2010/09/04 10:20:49 $";
     raise (Common.UnixExit 0)
     ),
   "   guess what";
@@ -1087,7 +1111,8 @@ let main_with_better_error_report () =
             filename (Unix.error_message e));
         raise (UnixExit (-1))
     | Parse_cocci.Bad_virt s ->
-       Common.pr2 (Printf.sprintf "virtual rule %s not supported" s)
+       Common.pr2 (Printf.sprintf "virtual rule %s not supported" s);
+        raise (UnixExit (-1))
 
 (*****************************************************************************)
 let start =
index ac2fa2e..a1ce3a2 100644 (file)
@@ -7,8 +7,9 @@ let ext = if Dynlink.is_native then ".cmxs" else ".cma"
 let has_ocamlfind = ref false
 
 let check_cmd cmd =
-  match Sys.command cmd with
-      0 -> true
+  let (_,stat) = Common.cmd_to_list_and_status cmd in
+  match stat with
+      Unix.WEXITED 0 -> true
     | _ -> false
 
 let check_runtime () =
index 3b7e651..51facfe 100644 (file)
@@ -257,10 +257,10 @@ and fullType = typeQualifier * typeC
 
 
      (* -------------------------------------- *)
-     and enumType = (name * (info (* = *) * constExpression) option)
-                    wrap2 (* , *) list
+     and enumType = oneEnumType wrap2 (* , *) list
                    (* => string * int list *)
 
+     and oneEnumType = name * (info (* = *) * constExpression) option
 
      (* -------------------------------------- *)
      (* return * (params * has "...") *)
index 8b30c54..af211db 100644 (file)
@@ -77,6 +77,7 @@ let al_param     x = Visitor_c.vk_param_s     (strip_info_visitor()) x
 let al_params    x = Visitor_c.vk_params_s    (strip_info_visitor()) x
 let al_arguments x = Visitor_c.vk_arguments_s (strip_info_visitor()) x
 let al_fields    x = Visitor_c.vk_struct_fields_s (strip_info_visitor()) x
+let al_name      x = Visitor_c.vk_name_s      (strip_info_visitor()) x
 
 let al_node      x = Visitor_c.vk_node_s      (strip_info_visitor()) x
 
@@ -190,6 +191,8 @@ let real_strip_info_visitor _ =
 let real_al_expr      x = Visitor_c.vk_expr_s   (real_strip_info_visitor()) x
 let real_al_node      x = Visitor_c.vk_node_s   (real_strip_info_visitor()) x
 let real_al_type      x = Visitor_c.vk_type_s   (real_strip_info_visitor()) x
+let real_al_statement x =
+  Visitor_c.vk_statement_s (real_strip_info_visitor()) x
 
 
 (*****************************************************************************)
@@ -216,8 +219,10 @@ let ii_of_stmt = extract_info_visitor Visitor_c.vk_statement
 let ii_of_args = extract_info_visitor Visitor_c.vk_args_splitted
 let ii_of_type = extract_info_visitor Visitor_c.vk_type
 let ii_of_ini  = extract_info_visitor Visitor_c.vk_ini
+let ii_of_inis  = extract_info_visitor Visitor_c.vk_inis_splitted
 let ii_of_param = extract_info_visitor Visitor_c.vk_param
 let ii_of_params = extract_info_visitor Visitor_c.vk_params_splitted
+let ii_of_enum_fields = extract_info_visitor Visitor_c.vk_enum_fields_splitted
 let ii_of_struct_fields = extract_info_visitor Visitor_c.vk_struct_fields
 (*let ii_of_struct_field = extract_info_visitor Visitor_c.vk_struct_field*)
 let ii_of_struct_fieldkinds = extract_info_visitor Visitor_c.vk_struct_fieldkinds
index afbffcb..0dc4766 100644 (file)
@@ -108,7 +108,7 @@ let print_bad line_error (start_line, end_line) filelines  =
 (* Stats on what was passed/commentized  *)
 (*****************************************************************************)
 
-let commentized xs = xs +> Common.map_filter (function
+let commentized xs = xs +> Common.tail_map_filter (function
   | Parser_c.TCommentCpp (cppkind, ii) ->
       let s = Ast_c.str_of_info ii in
       let legal_passing =
@@ -613,7 +613,7 @@ let get_one_elem ~pass tr (file, filelines) =
       (* Call parser *)
       (* -------------------------------------------------- *)
       Common.profile_code_exclusif "YACC" (fun () ->
-        Left (Parser_c.celem (lexer_function ~pass tr) lexbuf_fake)
+       Left (Parser_c.celem (lexer_function ~pass tr) lexbuf_fake)
       )
     with e ->
       LP.restore_typedef_state();
@@ -691,7 +691,7 @@ let find_optional_macro_to_expand2 ~defs toks =
 
   let defs = Common.hash_of_list defs in
 
-  let toks = toks +> Common.map (function
+  let toks = toks +> Common.tail_map (function
 
     (* special cases to undo *)
     | Parser_c.TMacroIterator (s, ii) ->
index f63cdba..39179a5 100644 (file)
@@ -1557,9 +1557,9 @@ struct_decl_list_gcc:
 /*(* enum *)*/
 /*(*************************************************************************)*/
 enum_spec:
- | Tenum        tobrace_enum enumerator_list gcc_comma_opt tcbrace_enum
+ | Tenum        tobrace_enum enumerator_list gcc_comma_opt_struct tcbrace_enum
      { Enum (None,    $3),           [$1;$2;$5] ++ $4 }
- | Tenum ident  tobrace_enum enumerator_list gcc_comma_opt tcbrace_enum
+ | Tenum ident  tobrace_enum enumerator_list gcc_comma_opt_struct tcbrace_enum
      { Enum (Some (fst $2), $4),     [$1; snd $2; $3;$6] ++ $5 }
  | Tenum ident
      { EnumName (fst $2),       [$1; snd $2] }
index 490783d..7ad3426 100644 (file)
@@ -395,6 +395,7 @@ let rec set_ifdef_parenthize_info xs =
  * [TCommentSpace "\n"; TDefEOL] but if TDefEOL is a fakeinfo then we will
  * not synchronize on it and so we will not print the "\n".
  * A solution would be to put the TDefEOL before the "\n".
+ * (jll: tried to do this, see the comment "Put end of line..." below)
  *
  * todo?: could put a ExpandedTok for that ?
  *)
@@ -447,7 +448,13 @@ and define_line_2 acc line lastinfo xs =
       | x ->
           if line' =|= line
           then define_line_2 (x::acc) line info xs
-          else define_line_1 (mark_end_define lastinfo::acc) (x::xs)
+          else
+           (* Put end of line token before the newline.  A newline at least
+              must be there because the line changed and because we saw a
+              #define previously to get to this function at all *)
+           define_line_1
+             ((List.hd acc)::(mark_end_define lastinfo::(List.tl acc)))
+             (x::xs)
       )
 
 let rec define_ident acc xs =
index e161c37..812e7a8 100644 (file)
@@ -368,7 +368,19 @@ let mk_pretty_printers
             pr_elem iopar;
             pp_expression e;
             pr_elem icpar
-       | (ColonExpr _), _ -> raise Impossible)
+         (* the following case used to be just raise Impossible, but
+            the code __asm__ __volatile__ ("dcbz 0, %[input]"
+                                ::[input]"r"(&coherence_data[i]));
+            in linux-2.6.34/drivers/video/fsl-diu-fb.c matches this case *)
+       | (ColonExpr e), ii ->
+           (match List.rev ii with
+             icpar::iopar::istring::rest ->
+               List.iter pr_elem (List.rev rest);
+               pr_elem istring;
+               pr_elem iopar;
+               pp_expression e;
+               pr_elem icpar
+           | _ -> raise Impossible))
         ))
 
 
@@ -591,7 +603,12 @@ let mk_pretty_printers
                        (Some (s, is)) typ Ast_c.noattr;
                      pr_elem iidot;
                      pp_expression expr
-                 | x -> raise Impossible
+                 | None ->
+                     (* was raise Impossible, but have no idea why because
+                        nameless bit fields are accepted by the parser and
+                        nothing seems to be done to give them names *)
+                     pr_elem iidot;
+                     pp_expression expr
                        )); (* iter other vars *)
 
        | [] -> raise Impossible
@@ -954,6 +971,7 @@ and pp_init (init, iinit) =
           returnt Ast_c.noattr;
 
         pp_attributes pr_elem pr_space attrs;
+       pr_space();
         pp_name name;
 
         pr_elem iifunc1;
@@ -999,7 +1017,7 @@ and pp_init (init, iinit) =
         iib +> List.iter pr_elem;
 
 
-        pr_elem iifunc2;
+        pr_elem iifunc2; pr_space();
         pr_elem i1;
         statxs +> List.iter pp_statement_seq;
         pr_elem i2;
@@ -1022,7 +1040,7 @@ and pp_init (init, iinit) =
   and pp_directive = function
     | Include {i_include = (s, ii);} ->
        let (i1,i2) = Common.tuple_of_list2 ii in
-       pr_elem i1; pr_elem i2
+       pr_elem i1; pr_space(); pr_elem i2
     | Define ((s,ii), (defkind, defval)) ->
        let (idefine,iident,ieol) = Common.tuple_of_list3 ii in
        pr_elem idefine;
index 1d2512d..0d523b9 100644 (file)
@@ -119,7 +119,8 @@ let test_parse_i xs =
 
 (* ---------------------------------------------------------------------- *)
 (* file can be   "foo.c"  or "foo.c:main" *)
-let test_cfg file =
+(* local function that is parameterized by whether to launch gv *)
+let local_test_cfg launchgv file =
   let (file, specific_func) =
     if file =~ "\\(.*\\.c\\):\\(.*\\)"
     then
@@ -161,12 +162,14 @@ let test_cfg file =
               flow
             in
            let filename = Filename.temp_file "output" ".dot" in
-            Ograph_extended.print_ograph_mutable flow' (filename) true
+            Ograph_extended.print_ograph_mutable flow' (filename) launchgv
           )
         with Ast_to_flow.Error (x) -> Ast_to_flow.report_error x
       )
   )
 
+let test_cfg = local_test_cfg true
+
 
 
 let test_cfg_ifdef file =
@@ -488,9 +491,11 @@ let actions () = [
   Common.mk_action_n_arg test_parse;
 
   "-show_flow", "   <file or file:function>",
-  Common.mk_action_1_arg test_cfg;
+  Common.mk_action_1_arg (local_test_cfg true);
   "-control_flow", "   <file or file:function>",
-  Common.mk_action_1_arg test_cfg;
+  Common.mk_action_1_arg (local_test_cfg true);
+  "-control_flow_to_file", "   <file or file:function>",
+  Common.mk_action_1_arg (local_test_cfg false);
   "-test_cfg_ifdef", " <file>",
   Common.mk_action_1_arg test_cfg_ifdef;
   "-parse_unparse", "   <file>",
index 9c7fc4b..c8be32c 100644 (file)
@@ -860,8 +860,12 @@ let annotater_expr_visitor_subpart = (fun (k,bigf) expr ->
     (* todo? lub, hmm maybe not, cos type must be e1 *)
     | Assignment (e1, op, e2) ->
         k expr;
-        (* value of an assignment is the value of the RHS expression *)
-        Ast_c.get_type_expr e2
+        (* value of an assignment is the value of the RHS expression, but its
+           type is the type of the lhs expression.  Use the rhs exp if no
+          information is available *)
+        (match Ast_c.get_type_expr e1 with
+         (None,_) -> Ast_c.get_type_expr e2
+       | (Some ty,t) -> (Some ty,t))
     | Sequence (e1, e2) ->
         k expr;
         Ast_c.get_type_expr e2
index 5a65f89..05eda31 100644 (file)
@@ -61,6 +61,7 @@ type token2 =
   | Cocci2 of string * int (* line *) * int (* lcol *) * int (* rcol *)
        * Unparse_cocci.nlhint option
   | C2 of string
+  | Comma of string
   | Indent_cocci2
   | Unindent_cocci2 of bool (* true for permanent, false for temporary *)
 
@@ -99,6 +100,7 @@ let str_of_token2 = function
   | Fake2 -> ""
   | Cocci2 (s,_,_,_,_) -> s
   | C2 s -> s
+  | Comma s -> s
   | Indent_cocci2 -> ""
   | Unindent_cocci2 _ -> ""
 
@@ -114,6 +116,7 @@ let print_token2 = function
   | Fake2 -> "fake"
   | Cocci2 (s,_,lc,rc,_) -> Printf.sprintf "Cocci2:%d:%d%s" lc rc s
   | C2 s -> "C2:"^s
+  | Comma s -> "Comma:"^s
   | Indent_cocci2 -> "Indent"
   | Unindent_cocci2 _ -> "Unindent"
 
@@ -320,8 +323,9 @@ let expand_mcode toks =
         let str = Ast_c.str_of_info info in
         if str =$= ""
         then push2 (Fake2) toks_out
-        (* perhaps the fake ',' *)
-        else push2 (C2 str) toks_out
+       (* fx the fake "," at the end of a structure or enum.
+          no idea what other fake info there can be... *)
+       else push2 (Comma str) toks_out
 
 
     | T1 tok ->
@@ -495,7 +499,7 @@ let is_minusable_comment_nocpp = function
   | _ -> false
 
 let all_coccis = function
-    Cocci2 _ | C2 _ | Indent_cocci2 | Unindent_cocci2 _ -> true
+    Cocci2 _ | C2 _ | Comma _ | Indent_cocci2 | Unindent_cocci2 _ -> true
   | _ -> false
 
 (*previously gave up if the first character was a newline, but not clear why*)
@@ -524,7 +528,7 @@ let set_minus_comment adj = function
   | _ -> raise Impossible
 
 let set_minus_comment_or_plus adj = function
-    Cocci2 _ | C2 _ | Indent_cocci2 | Unindent_cocci2 _ as x -> x
+    Cocci2 _ | C2 _ | Comma _ | Indent_cocci2 | Unindent_cocci2 _ as x -> x
   | x -> set_minus_comment adj x
 
 let drop_minus xs =
@@ -535,7 +539,7 @@ let drop_minus xs =
 
 let remove_minus_and_between_and_expanded_and_fake xs =
 
-  (* get rid of exampled and fake tok *)
+  (* get rid of expanded and fake tok *)
   let xs = xs +> Common.exclude (function
     | T2 (t,_,_) when TH.is_expanded t -> true
     | Fake2 -> true
@@ -556,55 +560,6 @@ let remove_minus_and_between_and_expanded_and_fake xs =
     (* non-empty intersection of witness trees *)
     not ((Common.inter_set index1 index2) = []) in
 
-  let rec adjust_around_minus = function
-      [] -> []
-    | (T2(Parser_c.TCommentNewline c,_b,_i) as x)::
-      (((T2(_,Min adj,_))::_) as rest) ->
-       (* an initial newline, as in a replaced statement *)
-       let (between_minus,rest) = Common.span minus_or_comment rest in
-       (match rest with
-         [] -> (set_minus_comment adj x) ::
-           (List.map (set_minus_comment adj) between_minus)
-       | T2(_,Ctx,_)::_ when is_newline (List.hd(List.rev between_minus)) ->
-           (set_minus_comment adj x)::(adjust_within_minus between_minus) @
-           (adjust_around_minus rest)
-       | _ ->
-           x :: (adjust_within_minus between_minus) @
-           (adjust_around_minus rest))
-    | ((T2(_,Min adj,_))::_) as rest ->
-       (* no initial newline, as in a replaced expression *)
-       let (between_minus,rest) = Common.span minus_or_comment rest in
-       (match rest with
-         [] ->
-           (List.map (set_minus_comment adj) between_minus)
-       | _ ->
-           (adjust_within_minus between_minus) @
-           (adjust_around_minus rest))
-    | x::xs -> x::adjust_around_minus xs
-  and adjust_within_minus = function
-      [] -> []
-    | (T2(_,Min adj1,_) as t1)::xs ->
-       let (between_minus,rest) = Common.span is_minusable_comment xs in
-       (match rest with
-          [] ->
-           (* keep last newline *)
-           let (drop,keep) =
-             try
-               let (drop,nl,keep) =
-                 Common.split_when is_newline between_minus in
-               (drop, nl :: keep)
-             with Not_found -> (between_minus,[]) in
-           t1 ::
-           List.map (set_minus_comment_or_plus adj1) drop @
-           keep
-       | (T2(_,Min adj2,_) as t2)::rest when common_adj adj1 adj2 ->
-           t1::
-            List.map (set_minus_comment_or_plus adj1) between_minus @
-            adjust_within_minus (t2::rest)
-       | x::xs ->
-           t1::(between_minus @ adjust_within_minus (x::xs)))
-    | _ -> failwith "only minus and space possible" in
-
   (* new idea: collects regions not containing non-space context code
      if two adjacent adjacent minus tokens satisfy common_adj then delete
      all spaces, comments etc between them
@@ -631,7 +586,8 @@ let remove_minus_and_between_and_expanded_and_fake xs =
        let (minus_list,rest) = Common.span not_context (t1::xs) in
        let contains_plus = List.exists is_plus minus_list in
        adjust_within_minus contains_plus minus_list @ adjust_around_minus rest
-    | x::xs -> x :: adjust_around_minus xs
+    | x::xs ->
+       x :: adjust_around_minus xs
   and adjust_within_minus cp (* contains plus *) = function
       (T2(_,Min adj1,_) as t1)::xs ->
        let not_minus = function T2(_,Min _,_) -> false | _ -> true in
@@ -662,7 +618,7 @@ let remove_minus_and_between_and_expanded_and_fake xs =
       (T2(_,Ctx,_) as x) when not (is_minusable_comment x) -> false
     | _ -> true
   and is_plus = function
-      C2 _ | Cocci2 _ -> true
+      C2 _ | Comma _ | Cocci2 _ -> true
     | _ -> false in
 
   let xs = adjust_around_minus xs in
@@ -727,6 +683,18 @@ let remove_minus_and_between_and_expanded_and_fake xs =
        m ::
        (List.map (set_minus_comment adj) spaces) @
        (adjust_before_brace rest)
+    | ((T2 (t0, Ctx, idx0)) as m0) :: ((T2 (t, Min adj, idx)) as m) :: rest
+       when TH.str_of_tok t0 = "" ->
+         (* This is for the case of a #define that is completely deleted,
+            because a #define has a strange EOL token at the end.
+            We hope there i no other kind of token that is represented by
+            "", but it seems like changing the kind of token might break
+            the end of entity recognition in the C parser.
+            See parsing_hacks.ml *)
+         let (spaces,rest) = Common.span minus_or_comment_nocpp rest in
+         m0 :: m ::
+         (List.map (set_minus_comment adj) spaces) @
+         (adjust_before_brace rest)
     | rest -> adjust_before_brace rest in
 
   let xs = List.rev (from_newline (List.rev xs)) in
@@ -803,6 +771,20 @@ let rec add_space xs =
       then x::C2 " "::(add_space (y::xs))
       else x::(add_space (y::xs))
 
+(* A fake comma is added at the end of an unordered initlist or a enum
+decl, if the initlist or enum doesn't already end in a comma.  This is only
+needed if there is + code, ie if we see Cocci after it in the code sequence *)
+
+let rec drop_end_comma = function
+    [] -> []
+  | [x] -> [x]
+  | ((Comma ",") as x) :: rest ->
+      let (newlines,rest2) = Common.span is_whitespace rest in
+      (match rest2 with
+       (Cocci2 _) :: _ -> x :: drop_end_comma rest
+      |        _ -> drop_end_comma rest)
+  | x :: xs -> x :: drop_end_comma xs
+
 (* The following only works for the outermost function call.  Stack records
 the column of all open parentheses.  Space_cell contains the most recent
 comma in the outermost function call.  The goal is to decide whether this
@@ -865,6 +847,7 @@ let add_newlines toks tabbing_unit =
              | _ -> loop info count xs) in
        a :: rest
     | ((C2(s)) as a)::xs -> a :: loop info (string_length s count) xs
+    | ((Comma(s)) as a)::xs -> a :: loop info (string_length s count) xs
     | Fake2 :: _ | Indent_cocci2 :: _
     | Unindent_cocci2 _::_ ->
        failwith "unexpected fake, indent, or unindent" in
@@ -1049,6 +1032,7 @@ let kind_of_token2 = function
   | Fake2 -> KFake
   | Cocci2 _ -> KCocci
   | C2 _ -> KC
+  | Comma _ -> KC
   | T2 (t,_,_) ->
       (match TH.pinfo_of_tok t with
       | ExpandedTok _ -> KExpanded
@@ -1148,9 +1132,11 @@ let pp_program2 xs outfile  =
          let toks = displace_fake_nodes toks in
           (* assert Origin;ExpandedTok;Faketok *)
           let toks = expand_mcode toks in
+
           (* assert Origin;ExpandedTok; + Cocci + C (was AbstractLineTok)
            * and no tag information, just NOTHING. *)
 
+
          let toks =
            if !Flag.sgrep_mode2
            then drop_minus toks (* nothing to do for sgrep *)
@@ -1160,6 +1146,7 @@ let pp_program2 xs outfile  =
              let toks = adjust_before_semicolon toks in(*before remove minus*)
              let toks = drop_space_at_endline toks in
              let toks = paren_to_space toks in
+             let toks = drop_end_comma toks in
               let toks = remove_minus_and_between_and_expanded_and_fake toks in
               (* assert Origin + Cocci + C and no minus *)
               let toks = add_space toks in
index 6eab5bb..5bc89ef 100644 (file)
@@ -460,8 +460,14 @@ and typeC ty =
   | Ast.Array(ty,lb,size,rb) ->
       fullType ty; mcode print_string lb; print_option expression size;
       mcode print_string rb
-  | Ast.EnumName(kind,name) -> mcode print_string kind; pr_space();
-      ident name
+  | Ast.EnumName(kind,name) ->
+      mcode print_string kind;
+      print_option_prespace ident name
+  | Ast.EnumDef(ty,lb,ids,rb) ->
+      fullType ty; ft_space ty;
+      mcode print_string lb;
+      dots force_newline expression ids;
+      mcode print_string rb
   | Ast.StructUnionName(kind,name) ->
       mcode structUnion kind; print_option_prespace ident name
   | Ast.StructUnionDef(ty,lb,decls,rb) ->
@@ -612,7 +618,11 @@ and initialiser nlcomma i =
             pretty_print_c.Pretty_print_c.init ini
         | _ -> raise Impossible)
   | Ast.InitExpr(exp) -> expression exp
-  | Ast.InitList(_,lb,initlist,rb,[]) ->
+  | Ast.ArInitList(lb,initlist,rb) ->
+      mcode print_string lb; start_block();
+      dots force_newline (initialiser false) initlist;
+      end_block(); mcode print_string rb
+  | Ast.StrInitList(_,lb,initlist,rb,[]) ->
       mcode print_string lb; start_block();
       (* awkward, because the comma is separate from the initialiser *)
       let rec loop = function
@@ -621,7 +631,8 @@ and initialiser nlcomma i =
        | x::xs -> initialiser nlcomma x; loop xs in
       loop initlist;
       end_block(); mcode print_string rb
-  | Ast.InitList(_,lb,initlist,rb,_) -> failwith "unexpected whencode in plus"
+  | Ast.StrInitList(_,lb,initlist,rb,_) ->
+      failwith "unexpected whencode in plus"
   | Ast.InitGccExt(designators,eq,ini) ->
       List.iter designator designators; pr_space();
       mcode print_string eq; pr_space(); initialiser nlcomma ini
@@ -630,6 +641,17 @@ and initialiser nlcomma i =
   | Ast.IComma(comma) ->
       mcode print_string comma;
       if nlcomma then force_newline()
+  | Ast.Idots(dots,Some whencode) ->
+      if generating
+      then
+       (mcode print_string dots;
+        print_text "   when != ";
+        initialiser nlcomma whencode)
+      else raise CantBeInPlus
+  | Ast.Idots(dots,None) ->
+      if generating
+      then mcode print_string dots
+      else raise CantBeInPlus
   | Ast.OptIni(ini) | Ast.UniqueIni(ini) ->
       raise CantBeInPlus
 
index ecad98f..8663f53 100644 (file)
@@ -128,7 +128,7 @@ let get_function_name rule env =
   let names =
     (V.combiner bind option_default
       mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
-      donothing donothing donothing donothing
+      donothing donothing donothing donothing donothing
       donothing expression donothing donothing donothing donothing donothing
       donothing donothing donothing donothing donothing).V.combiner_top_level
       rule in
index 746973f..05adfa4 100644 (file)
@@ -454,14 +454,7 @@ and vk_type = fun bigf t ->
         )
 
     | Enum  (sopt, enumt) ->
-        enumt +> List.iter (fun ((name, eopt), iicomma) ->
-          vk_name bigf name;
-          iif iicomma;
-          eopt +> Common.do_option (fun (info, e) ->
-            iif [info];
-            vk_expr bigf e
-          )
-        );
+        vk_enum_fields bigf enumt
 
     | StructUnion (sopt, _su, fields) ->
         vk_struct_fields bigf fields
@@ -611,6 +604,21 @@ and vk_struct_fieldkinds = fun bigf onefield_multivars ->
         vk_type bigf t
   )
 
+
+and vk_enum_fields = fun bigf enumt ->
+  let iif ii = vk_ii bigf ii in
+  enumt +> List.iter (fun ((name, eopt), iicomma) ->
+    vk_oneEnum bigf (name, eopt);
+    iif iicomma)
+
+and vk_oneEnum = fun bigf (name, eopt) ->
+  let iif ii = vk_ii bigf ii in
+  vk_name bigf name;
+  eopt +> Common.do_option (fun (info, e) ->
+    iif [info];
+    vk_expr bigf e
+      )
+
 (* ------------------------------------------------------------------------ *)
 
 
@@ -919,29 +927,18 @@ and vk_asmbody = fun bigf (string_list, colon_list) ->
 
 
 (* ------------------------------------------------------------------------ *)
-let vk_args_splitted = fun bigf args_splitted ->
-  let iif ii = vk_ii bigf ii in
-  args_splitted +> List.iter (function
-  | Left arg -> vk_argument bigf arg
-  | Right ii -> iif ii
-  )
-
-
-let vk_define_params_splitted = fun bigf args_splitted ->
+let vk_splitted element = fun bigf args_splitted ->
   let iif ii = vk_ii bigf ii in
   args_splitted +> List.iter (function
-  | Left (s, iis) -> vk_ii bigf iis
+  | Left arg -> element bigf arg
   | Right ii -> iif ii
   )
 
-
-
-let vk_params_splitted = fun bigf args_splitted ->
-  let iif ii = vk_ii bigf ii in
-  args_splitted +> List.iter (function
-  | Left arg -> vk_param bigf arg
-  | Right ii -> iif ii
-  )
+let vk_args_splitted = vk_splitted vk_argument
+let vk_define_params_splitted = vk_splitted (fun bigf (_,ii) -> vk_ii bigf ii)
+let vk_params_splitted = vk_splitted vk_param
+let vk_enum_fields_splitted = vk_splitted vk_oneEnum
+let vk_inis_splitted = vk_splitted vk_ini
 
 (* ------------------------------------------------------------------------ *)
 let vk_cst = fun bigf (cst, ii) ->
@@ -1246,17 +1243,7 @@ and vk_type_s = fun bigf t ->
             ))
 
       | Enum  (sopt, enumt) ->
-          Enum (sopt,
-               enumt +> List.map (fun ((name, eopt), iicomma) ->
-
-                 ((vk_name_s bigf name,
-                  eopt +> Common.fmap (fun (info, e) ->
-                    vk_info_s bigf info,
-                    vk_expr_s bigf e
-                 )),
-                 iif iicomma)
-               )
-               )
+          Enum (sopt, vk_enum_fields_s bigf enumt)
       | StructUnion (sopt, su, fields) ->
           StructUnion (sopt, su, vk_struct_fields_s bigf fields)
 
@@ -1400,9 +1387,20 @@ and vk_struct_field_s = fun bigf field ->
       IfdefStruct (vk_ifdef_directive_s bigf ifdef)
 
 and vk_struct_fields_s = fun bigf fields ->
-
   fields +> List.map (vk_struct_field_s bigf)
 
+and vk_enum_fields_s = fun bigf enumt ->
+  let iif ii = vk_ii_s bigf ii in
+  enumt +> List.map (fun ((name, eopt), iicomma) ->
+    vk_oneEnum_s bigf (name, eopt), iif iicomma)
+
+and vk_oneEnum_s = fun bigf oneEnum ->
+  let (name,eopt) = oneEnum in
+  (vk_name_s bigf name,
+   eopt +> Common.fmap (fun (info, e) ->
+     vk_info_s bigf info,
+     vk_expr_s bigf e
+       ))
 
 and vk_def_s = fun bigf d ->
   let f = bigf.kdef_s in
@@ -1663,39 +1661,33 @@ and vk_param_s = fun bigf param ->
     p_type = vk_type_s bigf ft;
   }
 
-let vk_args_splitted_s = fun bigf args_splitted ->
-  let iif ii = vk_ii_s bigf ii in
-  args_splitted +> List.map (function
-  | Left arg -> Left (vk_argument_s bigf arg)
-  | Right ii -> Right (iif ii)
-  )
-
 let vk_arguments_s = fun bigf args ->
   let iif ii = vk_ii_s bigf ii in
   args +> List.map (fun (e, ii) -> vk_argument_s bigf e, iif ii)
 
-
-let vk_params_splitted_s = fun bigf args_splitted ->
-  let iif ii = vk_ii_s bigf ii in
-  args_splitted +> List.map (function
-  | Left arg -> Left (vk_param_s bigf arg)
-  | Right ii -> Right (iif ii)
-  )
-
 let vk_params_s = fun bigf args ->
   let iif ii = vk_ii_s bigf ii in
   args +> List.map (fun (p,ii) -> vk_param_s bigf p, iif ii)
 
-let vk_define_params_splitted_s = fun bigf args_splitted ->
-  let iif ii = vk_ii_s bigf ii in
-  args_splitted +> List.map (function
-  | Left (s, iis) -> Left (s, vk_ii_s bigf iis)
-  | Right ii -> Right (iif ii)
-  )
-
 let vk_cst_s = fun bigf (cst, ii) ->
   let iif ii = vk_ii_s bigf ii in
   (match cst with
   | Left cst -> Left cst
   | Right s -> Right s
   ), iif ii
+
+(* ------------------------------------------------------------------------ *)
+
+let vk_splitted_s element = fun bigf args_splitted ->
+  let iif ii = vk_ii_s bigf ii in
+  args_splitted +> List.map (function
+  | Left arg -> Left (element bigf arg)
+  | Right ii -> Right (iif ii)
+  )
+
+let vk_args_splitted_s = vk_splitted_s vk_argument_s
+let vk_params_splitted_s = vk_splitted_s vk_param_s
+let vk_define_params_splitted_s =
+  vk_splitted_s (fun bigf (s,ii) -> (s,vk_ii_s bigf ii))
+let vk_enum_fields_splitted_s = vk_splitted_s vk_oneEnum_s
+let vk_inis_splitted_s = vk_splitted_s vk_ini_s
index 72e7dd2..c39bdf9 100644 (file)
@@ -35,6 +35,8 @@ val vk_type      : visitor_c -> fullType    -> unit
 val vk_decl      : visitor_c -> declaration -> unit
 val vk_onedecl   : visitor_c -> onedecl -> unit
 val vk_ini       : visitor_c -> initialiser -> unit
+val vk_inis_splitted :
+    visitor_c -> (initialiser, il) Common.either list -> unit
 val vk_name      : visitor_c -> name -> unit
 val vk_def       : visitor_c -> definition  -> unit
 val vk_node      : visitor_c -> Control_flow_c.node -> unit
@@ -53,6 +55,9 @@ val vk_params_splitted :
 val vk_struct_field : visitor_c -> field -> unit
 val vk_struct_fields : visitor_c -> field list -> unit
 val vk_struct_fieldkinds : visitor_c -> fieldkind wrap list -> unit
+val vk_enum_fields : visitor_c -> enumType -> unit
+val vk_enum_fields_splitted :
+    visitor_c -> (oneEnumType, il) Common.either list -> unit
 
 val vk_cst : visitor_c -> ((constant, string) Common.either wrap) -> unit
 
@@ -96,7 +101,14 @@ val vk_statement_sequencable_s : visitor_c_s -> statement_sequencable -> stateme
 val vk_type_s : visitor_c_s -> fullType -> fullType
 val vk_decl_s : visitor_c_s -> declaration -> declaration
 val vk_ini_s : visitor_c_s -> initialiser -> initialiser
+
+val vk_inis_splitted_s :
+  visitor_c_s ->
+  (initialiser, il) Common.either list ->
+  (initialiser, il) Common.either list
+
 val vk_def_s : visitor_c_s -> definition -> definition
+val vk_name_s : visitor_c_s -> name -> name
 val vk_toplevel_s : visitor_c_s -> toplevel -> toplevel
 val vk_info_s : visitor_c_s -> info -> info
 val vk_ii_s : visitor_c_s -> info list -> info list
@@ -130,6 +142,10 @@ val vk_define_params_splitted_s :
   (string Ast_c.wrap, il) Common.either list ->
   (string Ast_c.wrap, il) Common.either list
 
+val vk_enum_fields_s : visitor_c_s -> enumType -> enumType
+val vk_enum_fields_splitted_s : visitor_c_s ->
+  (oneEnumType, il) Common.either list ->
+  (oneEnumType, il) Common.either list
 val vk_struct_field_s : visitor_c_s -> field -> field
 val vk_struct_fields_s : visitor_c_s -> field list -> field list
 
index ee2970b..a015820 100644 (file)
-adjust_pragmas.cmi: ast0_cocci.cmi 
-arity.cmi: ast0_cocci.cmi 
-ast0_cocci.cmi: type_cocci.cmi ast_cocci.cmi 
-ast0toast.cmi: ast_cocci.cmi ast0_cocci.cmi 
-ast_cocci.cmi: type_cocci.cmi 
-check_meta.cmi: ast_cocci.cmi ast0_cocci.cmi 
-comm_assoc.cmi: ast0_cocci.cmi 
-compute_lines.cmi: ast0_cocci.cmi 
-context_neg.cmi: ../commons/common.cmi ast0_cocci.cmi 
-data.cmi: type_cocci.cmi ../commons/common.cmi ast_cocci.cmi ast0_cocci.cmi 
-disjdistr.cmi: ast_cocci.cmi 
-free_vars.cmi: ast_cocci.cmi 
-function_prototypes.cmi: ast_cocci.cmi ast0_cocci.cmi 
-get_constants.cmi: ast_cocci.cmi 
-get_constants2.cmi: ast_cocci.cmi 
-index.cmi: ast0_cocci.cmi 
-insert_plus.cmi: ast0_cocci.cmi 
-iso_compile.cmi: iso_pattern.cmi 
-iso_pattern.cmi: visitor_ast0_types.cmo ast_cocci.cmi ast0_cocci.cmi 
-merge.cmi: ast_cocci.cmi ast0_cocci.cmi 
-parse_cocci.cmi: ast_cocci.cmi 
-plus.cmi: ast_cocci.cmi 
-pretty_print_cocci.cmi: ast_cocci.cmi 
-simple_assignments.cmi: ast0_cocci.cmi 
-single_statement.cmi: ast0_cocci.cmi 
-test_exps.cmi: ast0_cocci.cmi 
-top_level.cmi: ast0_cocci.cmi 
-type_cocci.cmi: 
-type_infer.cmi: ast0_cocci.cmi 
-unify_ast.cmi: ast_cocci.cmi 
-unitary_ast0.cmi: ast0_cocci.cmi 
-unparse_ast0.cmi: ast0_cocci.cmi 
-visitor_ast.cmi: ast_cocci.cmi 
-visitor_ast0.cmi: visitor_ast0_types.cmo ast_cocci.cmi ast0_cocci.cmi 
+adjust_pragmas.cmi: ast0_cocci.cmi
+arity.cmi: ast0_cocci.cmi
+ast0_cocci.cmi: type_cocci.cmi ast_cocci.cmi
+ast0toast.cmi: ast_cocci.cmi ast0_cocci.cmi
+ast_cocci.cmi: type_cocci.cmi
+check_meta.cmi: ast_cocci.cmi ast0_cocci.cmi
+comm_assoc.cmi: ast0_cocci.cmi
+compute_lines.cmi: ast0_cocci.cmi
+context_neg.cmi: ../commons/common.cmi ast0_cocci.cmi
+data.cmi: type_cocci.cmi ../commons/common.cmi ast_cocci.cmi ast0_cocci.cmi
+disjdistr.cmi: ast_cocci.cmi
+free_vars.cmi: ast_cocci.cmi
+function_prototypes.cmi: ast_cocci.cmi ast0_cocci.cmi
+get_constants.cmi: ast_cocci.cmi
+get_constants2.cmi: ast_cocci.cmi
+index.cmi: ast0_cocci.cmi
+insert_plus.cmi: ast0_cocci.cmi
+iso_compile.cmi: iso_pattern.cmi
+iso_pattern.cmi: visitor_ast0_types.cmo ast_cocci.cmi ast0_cocci.cmi
+merge.cmi: ast_cocci.cmi ast0_cocci.cmi
+parse_cocci.cmi: ast_cocci.cmi
+plus.cmi: ast_cocci.cmi
+pretty_print_cocci.cmi: ast_cocci.cmi
+simple_assignments.cmi: ast0_cocci.cmi
+single_statement.cmi: ast0_cocci.cmi
+test_exps.cmi: ast0_cocci.cmi
+top_level.cmi: ast0_cocci.cmi
+type_cocci.cmi:
+type_infer.cmi: ast0_cocci.cmi
+unify_ast.cmi: ast_cocci.cmi
+unitary_ast0.cmi: ast0_cocci.cmi
+unparse_ast0.cmi: ast0_cocci.cmi
+visitor_ast.cmi: ast_cocci.cmi
+visitor_ast0.cmi: visitor_ast0_types.cmo ast_cocci.cmi ast0_cocci.cmi
 adjacency.cmo: visitor_ast0_types.cmo visitor_ast0.cmi ast0_cocci.cmi \
-    adjacency.cmi 
+    adjacency.cmi
 adjacency.cmx: visitor_ast0_types.cmx visitor_ast0.cmx ast0_cocci.cmx \
-    adjacency.cmi 
+    adjacency.cmi
 adjust_pragmas.cmo: visitor_ast0_types.cmo visitor_ast0.cmi ast_cocci.cmi \
-    ast0_cocci.cmi adjust_pragmas.cmi 
+    ast0_cocci.cmi adjust_pragmas.cmi
 adjust_pragmas.cmx: visitor_ast0_types.cmx visitor_ast0.cmx ast_cocci.cmx \
-    ast0_cocci.cmx adjust_pragmas.cmi 
-arity.cmo: ast_cocci.cmi ast0_cocci.cmi arity.cmi 
-arity.cmx: ast_cocci.cmx ast0_cocci.cmx arity.cmi 
+    ast0_cocci.cmx adjust_pragmas.cmi
+arity.cmo: ast_cocci.cmi ast0_cocci.cmi arity.cmi
+arity.cmx: ast_cocci.cmx ast0_cocci.cmx arity.cmi
 ast0_cocci.cmo: type_cocci.cmi ../globals/flag.cmo ../commons/common.cmi \
-    ast_cocci.cmi ast0_cocci.cmi 
+    ast_cocci.cmi ast0_cocci.cmi
 ast0_cocci.cmx: type_cocci.cmx ../globals/flag.cmx ../commons/common.cmx \
-    ast_cocci.cmx ast0_cocci.cmi 
-ast0toast.cmo: visitor_ast0_types.cmo visitor_ast0.cmi visitor_ast.cmi \
-    type_cocci.cmi ../globals/flag.cmo ../commons/ocamlextra/dumper.cmi \
-    ast_cocci.cmi ast0_cocci.cmi ast0toast.cmi 
-ast0toast.cmx: visitor_ast0_types.cmx visitor_ast0.cmx visitor_ast.cmx \
-    type_cocci.cmx ../globals/flag.cmx ../commons/ocamlextra/dumper.cmx \
-    ast_cocci.cmx ast0_cocci.cmx ast0toast.cmi 
-ast_cocci.cmo: type_cocci.cmi ../commons/common.cmi ast_cocci.cmi 
-ast_cocci.cmx: type_cocci.cmx ../commons/common.cmx ast_cocci.cmi 
+    ast_cocci.cmx ast0_cocci.cmi
+ast0toast.cmo: visitor_ast0_types.cmo visitor_ast0.cmi type_cocci.cmi \
+    ../globals/flag.cmo ../commons/ocamlextra/dumper.cmi ast_cocci.cmi \
+    ast0_cocci.cmi ast0toast.cmi
+ast0toast.cmx: visitor_ast0_types.cmx visitor_ast0.cmx type_cocci.cmx \
+    ../globals/flag.cmx ../commons/ocamlextra/dumper.cmx ast_cocci.cmx \
+    ast0_cocci.cmx ast0toast.cmi
+ast_cocci.cmo: type_cocci.cmi ../commons/common.cmi ast_cocci.cmi
+ast_cocci.cmx: type_cocci.cmx ../commons/common.cmx ast_cocci.cmi
 check_meta.cmo: visitor_ast0_types.cmo visitor_ast0.cmi type_cocci.cmi \
-    ../commons/common.cmi ast_cocci.cmi ast0_cocci.cmi check_meta.cmi 
+    ../commons/common.cmi ast_cocci.cmi ast0_cocci.cmi check_meta.cmi
 check_meta.cmx: visitor_ast0_types.cmx visitor_ast0.cmx type_cocci.cmx \
-    ../commons/common.cmx ast_cocci.cmx ast0_cocci.cmx check_meta.cmi 
+    ../commons/common.cmx ast_cocci.cmx ast0_cocci.cmx check_meta.cmi
 comm_assoc.cmo: visitor_ast0_types.cmo visitor_ast0.cmi unparse_ast0.cmi \
-    ../globals/flag.cmo ast_cocci.cmi ast0_cocci.cmi comm_assoc.cmi 
+    ../globals/flag.cmo ast_cocci.cmi ast0_cocci.cmi comm_assoc.cmi
 comm_assoc.cmx: visitor_ast0_types.cmx visitor_ast0.cmx unparse_ast0.cmx \
-    ../globals/flag.cmx ast_cocci.cmx ast0_cocci.cmx comm_assoc.cmi 
-compute_lines.cmo: ast_cocci.cmi ast0_cocci.cmi compute_lines.cmi 
-compute_lines.cmx: ast_cocci.cmx ast0_cocci.cmx compute_lines.cmi 
+    ../globals/flag.cmx ast_cocci.cmx ast0_cocci.cmx comm_assoc.cmi
+compute_lines.cmo: ast_cocci.cmi ast0_cocci.cmi compute_lines.cmi
+compute_lines.cmx: ast_cocci.cmx ast0_cocci.cmx compute_lines.cmi
 context_neg.cmo: visitor_ast0_types.cmo visitor_ast0.cmi unparse_ast0.cmi \
     index.cmi ../globals/flag.cmo compute_lines.cmi ../commons/common.cmi \
-    ast_cocci.cmi ast0_cocci.cmi context_neg.cmi 
+    ast_cocci.cmi ast0_cocci.cmi context_neg.cmi
 context_neg.cmx: visitor_ast0_types.cmx visitor_ast0.cmx unparse_ast0.cmx \
     index.cmx ../globals/flag.cmx compute_lines.cmx ../commons/common.cmx \
-    ast_cocci.cmx ast0_cocci.cmx context_neg.cmi 
+    ast_cocci.cmx ast0_cocci.cmx context_neg.cmi
 data.cmo: type_cocci.cmi ../commons/common.cmi ast_cocci.cmi ast0_cocci.cmi \
-    data.cmi 
+    data.cmi
 data.cmx: type_cocci.cmx ../commons/common.cmx ast_cocci.cmx ast0_cocci.cmx \
-    data.cmi 
+    data.cmi
 disjdistr.cmo: visitor_ast.cmi ../globals/flag.cmo ../commons/common.cmi \
-    ast_cocci.cmi disjdistr.cmi 
+    ast_cocci.cmi disjdistr.cmi
 disjdistr.cmx: visitor_ast.cmx ../globals/flag.cmx ../commons/common.cmx \
-    ast_cocci.cmx disjdistr.cmi 
-flag_parsing_cocci.cmo: 
-flag_parsing_cocci.cmx: 
+    ast_cocci.cmx disjdistr.cmi
+flag_parsing_cocci.cmo:
+flag_parsing_cocci.cmx:
 free_vars.cmo: visitor_ast.cmi type_cocci.cmi ../commons/common.cmi \
-    ast_cocci.cmi free_vars.cmi 
+    ast_cocci.cmi free_vars.cmi
 free_vars.cmx: visitor_ast.cmx type_cocci.cmx ../commons/common.cmx \
-    ast_cocci.cmx free_vars.cmi 
+    ast_cocci.cmx free_vars.cmi
 function_prototypes.cmo: visitor_ast0_types.cmo visitor_ast0.cmi \
     iso_pattern.cmi insert_plus.cmi context_neg.cmi compute_lines.cmi \
-    ast_cocci.cmi ast0toast.cmi ast0_cocci.cmi function_prototypes.cmi 
+    ast_cocci.cmi ast0toast.cmi ast0_cocci.cmi function_prototypes.cmi
 function_prototypes.cmx: visitor_ast0_types.cmx visitor_ast0.cmx \
     iso_pattern.cmx insert_plus.cmx context_neg.cmx compute_lines.cmx \
-    ast_cocci.cmx ast0toast.cmx ast0_cocci.cmx function_prototypes.cmi 
+    ast_cocci.cmx ast0toast.cmx ast0_cocci.cmx function_prototypes.cmi
 get_constants.cmo: visitor_ast.cmi type_cocci.cmi ../globals/flag.cmo \
-    ../commons/common.cmi ast_cocci.cmi get_constants.cmi 
+    ../commons/common.cmi ast_cocci.cmi get_constants.cmi
 get_constants.cmx: visitor_ast.cmx type_cocci.cmx ../globals/flag.cmx \
-    ../commons/common.cmx ast_cocci.cmx get_constants.cmi 
+    ../commons/common.cmx ast_cocci.cmx get_constants.cmi
 get_constants2.cmo: visitor_ast.cmi type_cocci.cmi ../globals/flag.cmo \
-    ../commons/common.cmi ast_cocci.cmi get_constants2.cmi 
+    ../commons/common.cmi ast_cocci.cmi get_constants2.cmi
 get_constants2.cmx: visitor_ast.cmx type_cocci.cmx ../globals/flag.cmx \
-    ../commons/common.cmx ast_cocci.cmx get_constants2.cmi 
-index.cmo: ast_cocci.cmi ast0_cocci.cmi index.cmi 
-index.cmx: ast_cocci.cmx ast0_cocci.cmx index.cmi 
+    ../commons/common.cmx ast_cocci.cmx get_constants2.cmi
+index.cmo: ast_cocci.cmi ast0_cocci.cmi index.cmi
+index.cmx: ast_cocci.cmx ast0_cocci.cmx index.cmi
 insert_plus.cmo: visitor_ast0_types.cmo visitor_ast0.cmi \
     pretty_print_cocci.cmi context_neg.cmi ast_cocci.cmi ast0toast.cmi \
-    ast0_cocci.cmi insert_plus.cmi 
+    ast0_cocci.cmi insert_plus.cmi
 insert_plus.cmx: visitor_ast0_types.cmx visitor_ast0.cmx \
     pretty_print_cocci.cmx context_neg.cmx ast_cocci.cmx ast0toast.cmx \
-    ast0_cocci.cmx insert_plus.cmi 
+    ast0_cocci.cmx insert_plus.cmi
 iso_compile.cmo: visitor_ast0_types.cmo visitor_ast0.cmi \
-    ../commons/common.cmi ast_cocci.cmi ast0_cocci.cmi iso_compile.cmi 
+    ../commons/common.cmi ast_cocci.cmi ast0_cocci.cmi iso_compile.cmi
 iso_compile.cmx: visitor_ast0_types.cmx visitor_ast0.cmx \
-    ../commons/common.cmx ast_cocci.cmx ast0_cocci.cmx iso_compile.cmi 
+    ../commons/common.cmx ast_cocci.cmx ast0_cocci.cmx iso_compile.cmi
 iso_pattern.cmo: visitor_ast0_types.cmo visitor_ast0.cmi unparse_ast0.cmi \
     type_cocci.cmi flag_parsing_cocci.cmo ../globals/flag.cmo \
     ../commons/ocamlextra/dumper.cmi compute_lines.cmi ../commons/common.cmi \
-    ast_cocci.cmi ast0_cocci.cmi iso_pattern.cmi 
+    ast_cocci.cmi ast0_cocci.cmi iso_pattern.cmi
 iso_pattern.cmx: visitor_ast0_types.cmx visitor_ast0.cmx unparse_ast0.cmx \
     type_cocci.cmx flag_parsing_cocci.cmx ../globals/flag.cmx \
     ../commons/ocamlextra/dumper.cmx compute_lines.cmx ../commons/common.cmx \
-    ast_cocci.cmx ast0_cocci.cmx iso_pattern.cmi 
-main.cmo: parse_cocci.cmi 
-main.cmx: parse_cocci.cmx 
-merge.cmo: visitor_ast0.cmi ast_cocci.cmi ast0_cocci.cmi merge.cmi 
-merge.cmx: visitor_ast0.cmx ast_cocci.cmx ast0_cocci.cmx merge.cmi 
+    ast_cocci.cmx ast0_cocci.cmx iso_pattern.cmi
+main.cmo: parse_cocci.cmi
+main.cmx: parse_cocci.cmx
+merge.cmo: visitor_ast0.cmi ast_cocci.cmi ast0_cocci.cmi merge.cmi
+merge.cmx: visitor_ast0.cmx ast_cocci.cmx ast0_cocci.cmx merge.cmi
 parse_aux.cmo: type_cocci.cmi semantic_cocci.cmo ../globals/flag.cmo data.cmi \
-    ../commons/common.cmi ast_cocci.cmi ast0_cocci.cmi 
+    ../commons/common.cmi ast_cocci.cmi ast0_cocci.cmi
 parse_aux.cmx: type_cocci.cmx semantic_cocci.cmx ../globals/flag.cmx data.cmx \
-    ../commons/common.cmx ast_cocci.cmx ast0_cocci.cmx 
+    ../commons/common.cmx ast_cocci.cmx ast0_cocci.cmx
 parse_cocci.cmo: visitor_ast0_types.cmo visitor_ast0.cmi unitary_ast0.cmi \
     type_infer.cmi test_exps.cmi single_statement.cmi simple_assignments.cmi \
     semantic_cocci.cmo pretty_print_cocci.cmi parse_aux.cmo iso_pattern.cmi \
@@ -134,7 +134,7 @@ parse_cocci.cmo: visitor_ast0_types.cmo visitor_ast0.cmi unitary_ast0.cmi \
     ../globals/flag.cmo disjdistr.cmi data.cmi context_neg.cmi \
     compute_lines.cmi ../commons/common.cmi comm_assoc.cmi check_meta.cmi \
     ast_cocci.cmi ast0toast.cmi ast0_cocci.cmi arity.cmi adjust_pragmas.cmi \
-    adjacency.cmi parse_cocci.cmi 
+    adjacency.cmi parse_cocci.cmi
 parse_cocci.cmx: visitor_ast0_types.cmx visitor_ast0.cmx unitary_ast0.cmx \
     type_infer.cmx test_exps.cmx single_statement.cmx simple_assignments.cmx \
     semantic_cocci.cmx pretty_print_cocci.cmx parse_aux.cmx iso_pattern.cmx \
@@ -143,54 +143,54 @@ parse_cocci.cmx: visitor_ast0_types.cmx visitor_ast0.cmx unitary_ast0.cmx \
     ../globals/flag.cmx disjdistr.cmx data.cmx context_neg.cmx \
     compute_lines.cmx ../commons/common.cmx comm_assoc.cmx check_meta.cmx \
     ast_cocci.cmx ast0toast.cmx ast0_cocci.cmx arity.cmx adjust_pragmas.cmx \
-    adjacency.cmx parse_cocci.cmi 
-plus.cmo: visitor_ast.cmi ast_cocci.cmi plus.cmi 
-plus.cmx: visitor_ast.cmx ast_cocci.cmx plus.cmi 
+    adjacency.cmx parse_cocci.cmi
+plus.cmo: visitor_ast.cmi ast_cocci.cmi plus.cmi
+plus.cmx: visitor_ast.cmx ast_cocci.cmx plus.cmi
 pretty_print_cocci.cmo: type_cocci.cmi ../globals/flag.cmo \
-    ../commons/common.cmi ast_cocci.cmi pretty_print_cocci.cmi 
+    ../commons/common.cmi ast_cocci.cmi pretty_print_cocci.cmi
 pretty_print_cocci.cmx: type_cocci.cmx ../globals/flag.cmx \
-    ../commons/common.cmx ast_cocci.cmx pretty_print_cocci.cmi 
-semantic_cocci.cmo: 
-semantic_cocci.cmx: 
+    ../commons/common.cmx ast_cocci.cmx pretty_print_cocci.cmi
+semantic_cocci.cmo:
+semantic_cocci.cmx:
 simple_assignments.cmo: visitor_ast0_types.cmo visitor_ast0.cmi \
     ../globals/flag.cmo ../commons/common.cmi ast_cocci.cmi ast0_cocci.cmi \
-    simple_assignments.cmi 
+    simple_assignments.cmi
 simple_assignments.cmx: visitor_ast0_types.cmx visitor_ast0.cmx \
     ../globals/flag.cmx ../commons/common.cmx ast_cocci.cmx ast0_cocci.cmx \
-    simple_assignments.cmi 
+    simple_assignments.cmi
 single_statement.cmo: visitor_ast0_types.cmo visitor_ast0.cmi iso_pattern.cmi \
     flag_parsing_cocci.cmo compute_lines.cmi ast_cocci.cmi ast0_cocci.cmi \
-    single_statement.cmi 
+    single_statement.cmi
 single_statement.cmx: visitor_ast0_types.cmx visitor_ast0.cmx iso_pattern.cmx \
     flag_parsing_cocci.cmx compute_lines.cmx ast_cocci.cmx ast0_cocci.cmx \
-    single_statement.cmi 
+    single_statement.cmi
 test_exps.cmo: visitor_ast0_types.cmo visitor_ast0.cmi ast_cocci.cmi \
-    ast0_cocci.cmi test_exps.cmi 
+    ast0_cocci.cmi test_exps.cmi
 test_exps.cmx: visitor_ast0_types.cmx visitor_ast0.cmx ast_cocci.cmx \
-    ast0_cocci.cmx test_exps.cmi 
-top_level.cmo: ast0_cocci.cmi top_level.cmi 
-top_level.cmx: ast0_cocci.cmx top_level.cmi 
-type_cocci.cmo: type_cocci.cmi 
-type_cocci.cmx: type_cocci.cmi 
+    ast0_cocci.cmx test_exps.cmi
+top_level.cmo: ast0_cocci.cmi top_level.cmi
+top_level.cmx: ast0_cocci.cmx top_level.cmi
+type_cocci.cmo: type_cocci.cmi
+type_cocci.cmx: type_cocci.cmi
 type_infer.cmo: visitor_ast0_types.cmo visitor_ast0.cmi type_cocci.cmi \
-    ast_cocci.cmi ast0_cocci.cmi type_infer.cmi 
+    ast_cocci.cmi ast0_cocci.cmi type_infer.cmi
 type_infer.cmx: visitor_ast0_types.cmx visitor_ast0.cmx type_cocci.cmx \
-    ast_cocci.cmx ast0_cocci.cmx type_infer.cmi 
-unify_ast.cmo: visitor_ast.cmi ast_cocci.cmi unify_ast.cmi 
-unify_ast.cmx: visitor_ast.cmx ast_cocci.cmx unify_ast.cmi 
+    ast_cocci.cmx ast0_cocci.cmx type_infer.cmi
+unify_ast.cmo: visitor_ast.cmi ast_cocci.cmi unify_ast.cmi
+unify_ast.cmx: visitor_ast.cmx ast_cocci.cmx unify_ast.cmi
 unitary_ast0.cmo: visitor_ast0_types.cmo visitor_ast0.cmi ../globals/flag.cmo \
-    ast_cocci.cmi ast0_cocci.cmi unitary_ast0.cmi 
+    ast_cocci.cmi ast0_cocci.cmi unitary_ast0.cmi
 unitary_ast0.cmx: visitor_ast0_types.cmx visitor_ast0.cmx ../globals/flag.cmx \
-    ast_cocci.cmx ast0_cocci.cmx unitary_ast0.cmi 
+    ast_cocci.cmx ast0_cocci.cmx unitary_ast0.cmi
 unparse_ast0.cmo: type_cocci.cmi pretty_print_cocci.cmi ../commons/common.cmi \
-    ast_cocci.cmi ast0_cocci.cmi unparse_ast0.cmi 
+    ast_cocci.cmi ast0_cocci.cmi unparse_ast0.cmi
 unparse_ast0.cmx: type_cocci.cmx pretty_print_cocci.cmx ../commons/common.cmx \
-    ast_cocci.cmx ast0_cocci.cmx unparse_ast0.cmi 
-visitor_ast.cmo: ast_cocci.cmi ast0_cocci.cmi visitor_ast.cmi 
-visitor_ast.cmx: ast_cocci.cmx ast0_cocci.cmx visitor_ast.cmi 
+    ast_cocci.cmx ast0_cocci.cmx unparse_ast0.cmi
+visitor_ast.cmo: ast_cocci.cmi ast0_cocci.cmi visitor_ast.cmi
+visitor_ast.cmx: ast_cocci.cmx ast0_cocci.cmx visitor_ast.cmi
 visitor_ast0.cmo: visitor_ast0_types.cmo ast_cocci.cmi ast0_cocci.cmi \
-    visitor_ast0.cmi 
+    visitor_ast0.cmi
 visitor_ast0.cmx: visitor_ast0_types.cmx ast_cocci.cmx ast0_cocci.cmx \
-    visitor_ast0.cmi 
-visitor_ast0_types.cmo: ast_cocci.cmi ast0_cocci.cmi 
-visitor_ast0_types.cmx: ast_cocci.cmx ast0_cocci.cmx 
+    visitor_ast0.cmi
+visitor_ast0_types.cmo: ast_cocci.cmi ast0_cocci.cmi
+visitor_ast0_types.cmx: ast_cocci.cmx ast0_cocci.cmx
index 474df27..37ebde5 100644 (file)
@@ -1,3 +1,25 @@
+# Copyright 2010, INRIA, University of Copenhagen
+# Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+# This file is part of Coccinelle.
+#
+# Coccinelle is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, according to version 2 of the License.
+#
+# Coccinelle is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+#
+# The authors reserve the right to distribute this or future versions of
+# Coccinelle under other licenses.
+
+
 -include ../Makefile.config
 
 TARGET=cocci_parser
index 211cabb..b95258d 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 module Ast0 = Ast0_cocci
 module V0 = Visitor_ast0
 module VT0 = Visitor_ast0_types
index f076530..9c659f8 100644 (file)
@@ -1 +1,25 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val compute_adjacency : Ast0_cocci.rule -> Ast0_cocci.rule
index eb294b6..93b1fa8 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* Find a directive or comment at the end of a statement.  Things with aft
 given None, because they can accomodate their own directives or comments *)
 
@@ -167,6 +191,9 @@ let rec left_ty t =
       call_right left_ty ty t (function ty -> Ast0.Array(ty,lb,size,rb))
   | Ast0.EnumName(kind,name) ->
       call_right left_mcode kind t (function kind -> Ast0.EnumName(kind,name))
+  | Ast0.EnumDef(ty,lb,ids,rb) ->
+      call_right left_ty ty t
+       (function ty -> Ast0.EnumDef(ty,lb,ids,rb))
   | Ast0.StructUnionName(kind,name) ->
       call_right left_mcode kind t
        (function kind -> Ast0.StructUnionName(kind,name))
index b87cd1a..8e9a400 100644 (file)
@@ -1 +1,25 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val process : Ast0_cocci.rule -> Ast0_cocci.rule
index b383cbc..ed17892 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* Arities matter for the minus slice, but not for the plus slice. *)
 
 (* ? only allowed on rule_elems, and on subterms if the context is ? also. *)
@@ -387,8 +411,17 @@ and top_typeC tgt opt_allowed typ =
       let arity =
        all_same opt_allowed tgt (mcode2line kind) [mcode2arity kind] in
       let kind = mcode kind in
-      let name = ident false arity name in
+      let name = get_option (ident false arity) name in
       make_typeC typ tgt arity (Ast0.EnumName(kind,name))
+  | Ast0.EnumDef(ty,lb,decls,rb) ->
+      let arity =
+       all_same opt_allowed tgt (mcode2line lb)
+         (List.map mcode2arity [lb;rb]) in
+      let ty = typeC arity ty in
+      let lb = mcode lb in
+      let ids = dots (expression tgt) decls in
+      let rb = mcode rb in
+      make_typeC typ tgt arity (Ast0.EnumDef(ty,lb,ids,rb))
   | Ast0.StructUnionName(kind,name) ->
       let arity =
        all_same opt_allowed tgt (mcode2line kind)
@@ -529,12 +562,12 @@ and initialiser tgt i =
       make_init i tgt arity (Ast0.MetaInit(name,pure))
   | Ast0.InitExpr(exp) ->
       Ast0.rewrap i (Ast0.InitExpr(expression tgt exp))
-  | Ast0.InitList(lb,initlist,rb) ->
+  | Ast0.InitList(lb,initlist,rb,ordered) ->
       let arity = init_same (mcode2line lb) [mcode2arity lb; mcode2arity rb] in
       let lb = mcode lb in
       let initlist = dots (initialiser arity) initlist in
       let rb = mcode rb in
-      make_init i tgt arity (Ast0.InitList(lb,initlist,rb))
+      make_init i tgt arity (Ast0.InitList(lb,initlist,rb,ordered))
   | Ast0.InitGccExt(designators,eq,ini) ->
       let arity = init_same (mcode2line eq) [mcode2arity eq] in
       let designators = List.map (designator arity) designators in
index cd64e1e..73194c3 100644 (file)
@@ -1 +1,25 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val minus_arity : Ast0_cocci.rule -> Ast0_cocci.rule
index 2f25376..e6ad925 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 module Ast = Ast_cocci
 
 (* --------------------------------------------------------------------- *)
@@ -161,7 +185,9 @@ and base_typeC =
                        string mcode (* ) *)
   | Array           of typeC * string mcode (* [ *) *
                       expression option * string mcode (* ] *)
-  | EnumName        of string mcode (*enum*) * ident (* name *)
+  | EnumName        of string mcode (*enum*) * ident option (* name *)
+  | EnumDef  of typeC (* either StructUnionName or metavar *) *
+       string mcode (* { *) * expression dots * string mcode (* } *)
   | StructUnionName of Ast.structUnion mcode * ident option (* name *)
   | StructUnionDef  of typeC (* either StructUnionName or metavar *) *
        string mcode (* { *) * declaration dots * string mcode (* } *)
@@ -207,7 +233,9 @@ and declaration = base_declaration wrap
 and base_initialiser =
     MetaInit of Ast.meta_name mcode * pure
   | InitExpr of expression
-  | InitList of string mcode (*{*) * initialiser_list * string mcode (*}*)
+  | InitList of string mcode (*{*) * initialiser_list * string mcode (*}*) *
+       (* true if ordered, as for array, false if unordered, as for struct *)
+       bool
   | InitGccExt of
       designator list (* name *) * string mcode (*=*) *
        initialiser (* gccext: *)
@@ -451,6 +479,7 @@ let default_befaft _ =
   MIXED(ref (Ast.NOTHING,default_token_info,default_token_info))
 let context_befaft _ =
   CONTEXT(ref (Ast.NOTHING,default_token_info,default_token_info))
+let minus_befaft _ = MINUS(ref ([],default_token_info))
 
 let wrap x =
   { node = x;
@@ -541,7 +570,7 @@ let rec ast0_type_to_type ty =
       Type_cocci.FunctionPointer(ast0_type_to_type ty)
   | FunctionType _ -> failwith "not supported"
   | Array(ety,_,_,_) -> Type_cocci.Array(ast0_type_to_type ety)
-  | EnumName(su,tag) ->
+  | EnumName(su,Some tag) ->
       (match unwrap tag with
        Id(tag) ->
          Type_cocci.EnumName(false,unwrap_mcode tag)
@@ -553,6 +582,8 @@ let rec ast0_type_to_type ty =
           let (rule,tag) = unwrap_mcode tag in
           Type_cocci.EnumName(true,rule^tag))
       | _ -> failwith "unexpected enum type name")
+  | EnumName(su,None) -> failwith "nameless enum - what to do???"
+  | EnumDef(ty,_,_,_) -> ast0_type_to_type ty
   | StructUnionName(su,Some tag) ->
       (match unwrap tag with
        Id(tag) ->
@@ -608,6 +639,8 @@ has been lost.  but since it is only used for metavariable types in the isos,
 perhaps it doesn't matter *)
 and make_mcode x = (x,NONE,default_info(),context_befaft(),ref NoMetaPos,-1)
 let make_mcode_info x info = (x,NONE,info,context_befaft(),ref NoMetaPos,-1)
+and make_minus_mcode x =
+  (x,NONE,default_info(),minus_befaft(),ref NoMetaPos,-1)
 
 exception TyConv
 
@@ -629,10 +662,10 @@ let rec reverse_type ty =
        let rule = "" in
        EnumName
          (make_mcode "enum",
-          context_wrap(MetaId(make_mcode (rule,tag),Ast.IdNoConstraint,
-                              Impure)))
+          Some (context_wrap(MetaId(make_mcode (rule,tag),Ast.IdNoConstraint,
+                                    Impure))))
       else
-       EnumName(make_mcode "enum",context_wrap(Id(make_mcode tag)))
+       EnumName(make_mcode "enum",Some(context_wrap(Id(make_mcode tag))))
   | Type_cocci.StructUnionName(su,mv,tag) ->
       if mv
       then
index abe1871..5d54968 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* --------------------------------------------------------------------- *)
 (* Modified code *)
 
@@ -151,7 +175,9 @@ and base_typeC =
                        string mcode (* ) *)
   | Array           of typeC * string mcode (* [ *) *
                       expression option * string mcode (* ] *)
-  | EnumName        of string mcode (*enum*) * ident (* name *)
+  | EnumName        of string mcode (*enum*) * ident option (* name *)
+  | EnumDef  of typeC (* either StructUnionName or metavar *) *
+       string mcode (* { *) * expression dots * string mcode (* } *)
   | StructUnionName of Ast_cocci.structUnion mcode * ident option (* name *)
   | StructUnionDef  of typeC (* either StructUnionName or metavar *) *
        string mcode (* { *) * declaration dots * string mcode (* } *)
@@ -194,7 +220,8 @@ and declaration = base_declaration wrap
 and base_initialiser =
     MetaInit of Ast_cocci.meta_name mcode * pure
   | InitExpr of expression
-  | InitList of string mcode (*{*) * initialiser_list * string mcode (*}*)
+  | InitList of string mcode (*{*) * initialiser_list * string mcode (*}*) *
+       bool (* true if ordered, false if unordered *)
   | InitGccExt of
       designator list (* name *) * string mcode (*=*) *
        initialiser (* gccext: *)
@@ -472,6 +499,7 @@ val fresh_index : unit -> int
 val set_mcode_data : 'a -> 'a mcode -> 'a mcode
 val make_mcode : 'a -> 'a mcode
 val make_mcode_info : 'a -> info -> 'a mcode
+val make_minus_mcode : 'a -> 'a mcode
 
 val ast0_type_to_type : typeC -> Type_cocci.typeC
 val reverse_type : Type_cocci.typeC -> base_typeC
index 94e489d..f1f9d2d 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* Arities matter for the minus slice, but not for the plus slice. *)
 
 (* + only allowed on code in a nest (in_nest = true).  ? only allowed on
@@ -7,7 +31,6 @@ module Ast0 = Ast0_cocci
 module Ast = Ast_cocci
 module V0 = Visitor_ast0
 module VT0 = Visitor_ast0_types
-module V = Visitor_ast
 
 let unitary = Type_cocci.Unitary
 
@@ -273,6 +296,36 @@ let dots fn d =
     | Ast0.CIRCLES(x) -> Ast.CIRCLES(List.map fn x)
     | Ast0.STARS(x) -> Ast.STARS(List.map fn x))
 
+(* commas in dotted lists, here due to polymorphism restrictions *)
+
+let add_comma is_comma make_comma itemlist =
+  match Ast0.unwrap itemlist with
+    Ast0.DOTS(x) ->
+      (match List.rev x with
+       [] -> itemlist
+      | e::es ->
+         if is_comma e
+         then itemlist
+         else
+           let comma =
+             match Ast0.get_mcodekind e with
+               Ast0.MINUS(_) -> (Ast0.make_minus_mcode ",")
+             | _ -> (Ast0.make_mcode ",") in
+           Ast0.rewrap itemlist
+             (Ast0.DOTS
+                (List.rev (Ast0.rewrap e (make_comma comma) :: (e::es)))))
+  | _ -> failwith "not possible"
+
+let add_exp_comma =
+  add_comma
+    (function x -> match Ast0.unwrap x with Ast0.EComma _ -> true | _ -> false)
+    (function x -> Ast0.EComma x)
+
+and add_init_comma =
+  add_comma
+    (function x -> match Ast0.unwrap x with Ast0.IComma _ -> true | _ -> false)
+    (function x -> Ast0.IComma x)
+
 (* --------------------------------------------------------------------- *)
 (* Identifier *)
 
@@ -416,7 +469,8 @@ and typeC t =
     | Ast0.BaseType(_) | Ast0.Signed(_,_) | Ast0.Pointer(_,_)
     | Ast0.FunctionPointer(_,_,_,_,_,_,_) | Ast0.FunctionType(_,_,_,_)
     | Ast0.Array(_,_,_,_) | Ast0.EnumName(_,_) | Ast0.StructUnionName(_,_)
-    | Ast0.StructUnionDef(_,_,_,_) | Ast0.TypeName(_) | Ast0.MetaType(_,_) ->
+    | Ast0.StructUnionDef(_,_,_,_) | Ast0.EnumDef(_,_,_,_)
+    | Ast0.TypeName(_) | Ast0.MetaType(_,_) ->
        Ast.Type(None,rewrap t no_isos (base_typeC t))
     | Ast0.DisjType(_,types,_,_) -> Ast.DisjType(List.map typeC types)
     | Ast0.OptType(ty) -> Ast.OptType(typeC ty)
@@ -441,7 +495,10 @@ and base_typeC t =
   | Ast0.Array(ty,lb,size,rb) ->
       Ast.Array(typeC ty,mcode lb,get_option expression size,mcode rb)
   | Ast0.EnumName(kind,name) ->
-      Ast.EnumName(mcode kind,ident name)
+      Ast.EnumName(mcode kind,get_option ident name)
+  | Ast0.EnumDef(ty,lb,ids,rb) ->
+      let ids = add_exp_comma ids in
+      Ast.EnumDef(typeC ty,mcode lb,dots expression ids,mcode rb)
   | Ast0.StructUnionName(kind,name) ->
       Ast.StructUnionName(mcode kind,get_option ident name)
   | Ast0.StructUnionDef(ty,lb,decls,rb) ->
@@ -518,19 +575,32 @@ and strip_idots initlist =
       Ast0.MINUS _ -> true
     | _ -> false in
   match Ast0.unwrap initlist with
-    Ast0.DOTS(x) ->
+    Ast0.DOTS(l) ->
+      let l =
+       match List.rev l with
+         [] | [_] -> l
+       | x::y::xs ->
+           (match (Ast0.unwrap x,Ast0.unwrap y) with
+             (Ast0.IComma _,Ast0.Idots _) ->
+               (* drop comma that was added by add_comma *)
+               List.rev (y::xs)
+           | _ -> l) in
       let (whencode,init,dotinfo) =
-       List.fold_left
-         (function (prevwhen,previnit,dotinfo) ->
-           function cur ->
-             match Ast0.unwrap cur with
+       let rec loop = function
+           [] -> ([],[],[])
+         | x::rest ->
+             (match Ast0.unwrap x with
                Ast0.Idots(dots,Some whencode) ->
-                 (whencode :: prevwhen, previnit,
+                 let (restwhen,restinit,dotinfo) = loop rest in
+                 (whencode :: restwhen, restinit,
                    (isminus dots)::dotinfo)
-             | Ast0.Idots(dots,None) ->
-                 (prevwhen, previnit, (isminus dots)::dotinfo)
-             | _ -> (prevwhen, cur :: previnit, dotinfo))
-         ([],[],[]) x in
+             | Ast0.Idots(dots,None) ->
+                 let (restwhen,restinit,dotinfo) = loop rest in
+                 (restwhen, restinit, (isminus dots)::dotinfo)
+             | _ -> 
+                 let (restwhen,restinit,dotinfo) = loop rest in
+                 (restwhen,x::restinit,dotinfo)) in
+       loop l in
       let allminus =
        if List.for_all (function x -> not x) dotinfo
        then false (* false if no dots *)
@@ -538,7 +608,7 @@ and strip_idots initlist =
          if List.for_all (function x -> x) dotinfo
          then true
          else failwith "inconsistent annotations on initialiser list dots" in
-      (List.rev whencode, List.rev init, allminus)
+      (whencode, init, allminus)
   | Ast0.CIRCLES(x) | Ast0.STARS(x) -> failwith "not possible for an initlist"
 
 and initialiser i =
@@ -546,17 +616,25 @@ and initialiser i =
     (match Ast0.unwrap i with
       Ast0.MetaInit(name,_) -> Ast.MetaInit(mcode name,unitary,false)
     | Ast0.InitExpr(exp) -> Ast.InitExpr(expression exp)
-    | Ast0.InitList(lb,initlist,rb) ->
+    | Ast0.InitList(lb,initlist,rb,true) ->
+       let initlist = add_init_comma initlist in
+       Ast.ArInitList(mcode lb,dots initialiser initlist,mcode rb)
+    | Ast0.InitList(lb,initlist,rb,false) ->
+       let initlist = add_init_comma initlist in
        let (whencode,initlist,allminus) = strip_idots initlist in
-       Ast.InitList(allminus,mcode lb,List.map initialiser initlist,mcode rb,
-                    List.map initialiser whencode)
+       Ast.StrInitList
+         (allminus,mcode lb,List.map initialiser initlist,mcode rb,
+          List.map initialiser whencode)
     | Ast0.InitGccExt(designators,eq,ini) ->
        Ast.InitGccExt(List.map designator designators,mcode eq,
                       initialiser ini)
     | Ast0.InitGccName(name,eq,ini) ->
        Ast.InitGccName(ident name,mcode eq,initialiser ini)
     | Ast0.IComma(comma) -> Ast.IComma(mcode comma)
-    | Ast0.Idots(_,_) -> failwith "Idots should have been removed"
+    | Ast0.Idots(dots,whencode) ->
+       let dots = mcode dots in
+       let whencode = get_option initialiser whencode in
+       Ast.Idots(dots,whencode)
     | Ast0.OptIni(ini) -> Ast.OptIni(initialiser ini)
     | Ast0.UniqueIni(ini) -> Ast.UniqueIni(initialiser ini))
 
index e46dec0..6e03663 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val ast0toast :
     string -> Ast_cocci.dependency -> string list (* dropped isos *) ->
       Ast_cocci.exists -> Ast0_cocci.rule -> bool list -> Ast_cocci.ruletype ->
index 8e1a3b4..ec946e1 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* --------------------------------------------------------------------- *)
 (* Modified code *)
 
@@ -253,7 +277,9 @@ and base_typeC =
 
   | Array           of fullType * string mcode (* [ *) *
                       expression option * string mcode (* ] *)
-  | EnumName        of string mcode (*enum*) * ident (* name *)
+  | EnumName        of string mcode (*enum*) * ident option (* name *)
+  | EnumDef  of fullType (* either EnumName or metavar *) *
+       string mcode (* { *) * expression dots * string mcode (* } *)
   | StructUnionName of structUnion mcode * ident option (* name *)
   | StructUnionDef  of fullType (* either StructUnionName or metavar *) *
        string mcode (* { *) * declaration dots * string mcode (* } *)
@@ -305,7 +331,8 @@ and declaration = base_declaration wrap
 and base_initialiser =
     MetaInit of meta_name mcode * keep_binding * inherited
   | InitExpr of expression
-  | InitList of bool (* true if all are - *) *
+  | ArInitList of string mcode (*{*) * initialiser dots * string mcode (*}*)
+  | StrInitList of bool (* true if all are - *) *
         string mcode (*{*) * initialiser list * string mcode (*}*) *
        initialiser list (* whencode: elements that shouldn't appear in init *)
   | InitGccExt of
@@ -314,6 +341,7 @@ and base_initialiser =
   | InitGccName of ident (* name *) * string mcode (*:*) *
        initialiser
   | IComma of string mcode (* , *)
+  | Idots  of string mcode (* ... *) * initialiser option (* whencode *)
 
   | OptIni    of initialiser
   | UniqueIni of initialiser
index c086758..361a4d5 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* --------------------------------------------------------------------- *)
 (* Modified code *)
 
@@ -234,7 +258,9 @@ and base_typeC =
                    string mcode (* ) *)
   | Array           of fullType * string mcode (* [ *) *
                       expression option * string mcode (* ] *)
-  | EnumName        of string mcode (*enum*) * ident (* name *)
+  | EnumName        of string mcode (*enum*) * ident option (* name *)
+  | EnumDef  of fullType (* either EnumName or metavar *) *
+       string mcode (* { *) * expression dots * string mcode (* } *)
   | StructUnionName of structUnion mcode * ident option (* name *)
   | StructUnionDef  of fullType (* either StructUnionName or metavar *) *
        string mcode (* { *) * declaration dots * string mcode (* } *)
@@ -284,7 +310,8 @@ and declaration = base_declaration wrap
 and base_initialiser =
     MetaInit of meta_name mcode * keep_binding * inherited
   | InitExpr of expression
-  | InitList of bool (* true if all are - *) *
+  | ArInitList of string mcode (*{*) * initialiser dots * string mcode (*}*)
+  | StrInitList of bool (* true if all are - *) *
         string mcode (*{*) * initialiser list * string mcode (*}*) *
        initialiser list (* whencode: elements that shouldn't appear in init *)
   | InitGccExt of
@@ -293,6 +320,7 @@ and base_initialiser =
   | InitGccName of ident (* name *) * string mcode (*:*) *
        initialiser
   | IComma of string mcode (* , *)
+  | Idots  of string mcode (* ... *) * initialiser option (* whencode *)
   | OptIni    of initialiser
   | UniqueIni of initialiser
 
index 1ccb98a..9761b74 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* For minus fragment, checks that all of the identifier metavariables that
 are used are not declared as fresh, and check that all declared variables
 are used.  For plus fragment, just check that the variables declared as
@@ -184,7 +208,10 @@ and typeC old_metas table minus t =
       check_table table minus name
   | Ast0.DisjType(_,types,_,_) ->
       List.iter (typeC old_metas table minus) types
-  | Ast0.EnumName(en,id) -> ident GLOBAL old_metas table minus id
+  | Ast0.EnumName(en,Some id) -> ident GLOBAL old_metas table minus id
+  | Ast0.EnumDef(ty,lb,ids,rb) ->
+      typeC old_metas table minus ty;
+      dots (expression GLOBAL old_metas table minus) ids
   | Ast0.StructUnionName(su,Some id) -> ident GLOBAL old_metas table minus id
   | Ast0.StructUnionDef(ty,lb,decls,rb) ->
       typeC old_metas table minus ty;
@@ -241,7 +268,7 @@ and initialiser old_metas table minus ini =
     Ast0.MetaInit(name,_) ->
       check_table table minus name
   | Ast0.InitExpr(exp) -> expression ID old_metas table minus exp
-  | Ast0.InitList(lb,initlist,rb) ->
+  | Ast0.InitList(lb,initlist,rb,ordered) ->
       dots (initialiser old_metas table minus) initlist
   | Ast0.InitGccExt(designators,eq,ini) ->
       List.iter (designator old_metas table minus) designators;
@@ -385,6 +412,7 @@ and case_line old_metas table minus c =
     Ast0.Default(def,colon,code) ->
       dots (statement old_metas table minus) code
   | Ast0.Case(case,exp,colon,code) ->
+      expression GLOBAL old_metas table minus exp;
       dots (statement old_metas table minus) code
   | Ast0.DisjCase(_,case_lines,_,_) ->
       List.iter (case_line old_metas table minus) case_lines
index d239fc2..371dbb9 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val check_meta :
     string ->
     Ast_cocci.metavar list (* old metavariables *) ->
index c508b82..d03584d 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* searches for E op ..., for any commutative and associative binary
 operator.  When this satisfies the isomorphism conditions (ie all minus, or
 context for the op and ...), then this is converted to Nested(E,op).
index 351633b..610e722 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val comm_assoc :
     Ast0_cocci.rule -> string (* rule name *) ->
       string list (* dropped isos *) -> Ast0_cocci.rule
index e26cf51..d1187e1 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* Computes starting and ending logical lines for statements and
 expressions.  every node gets an index as well. *)
 
@@ -365,9 +389,16 @@ and typeC t =
       let ty = typeC ty in
       mkres t (Ast0.Array(ty,lb,get_option expression size,rb))
        ty (promote_mcode rb)
-  | Ast0.EnumName(kind,name) ->
+  | Ast0.EnumName(kind,Some name) ->
       let name = ident name in
-      mkres t (Ast0.EnumName(kind,name)) (promote_mcode kind) name
+      mkres t (Ast0.EnumName(kind,Some name)) (promote_mcode kind) name
+  | Ast0.EnumName(kind,None) ->
+      let mc = promote_mcode kind in
+      mkres t (Ast0.EnumName(kind,None)) mc mc
+  | Ast0.EnumDef(ty,lb,ids,rb) ->
+      let ty = typeC ty in
+      let ids = dots is_exp_dots (Some(promote_mcode lb)) expression ids in
+      mkres t (Ast0.EnumDef(ty,lb,ids,rb)) ty (promote_mcode rb)
   | Ast0.StructUnionName(kind,Some name) ->
       let name = ident name in
       mkres t (Ast0.StructUnionName(kind,Some name)) (promote_mcode kind) name
@@ -475,10 +506,10 @@ and initialiser i =
   | Ast0.InitExpr(exp) ->
       let exp = expression exp in
       mkres i (Ast0.InitExpr(exp)) exp exp
-  | Ast0.InitList(lb,initlist,rb) ->
+  | Ast0.InitList(lb,initlist,rb,ordered) ->
       let initlist =
        dots is_init_dots (Some(promote_mcode lb)) initialiser initlist in
-      mkres i (Ast0.InitList(lb,initlist,rb))
+      mkres i (Ast0.InitList(lb,initlist,rb,ordered))
        (promote_mcode lb) (promote_mcode rb)
   | Ast0.InitGccExt(designators,eq,ini) ->
       let (delims,designators) = (* non empty due to parsing *)
index 2d2cdf0..891bcc3 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val compute_lines : bool -> Ast0_cocci.rule -> Ast0_cocci.rule
 
 val compute_statement_dots_lines : bool ->
index 5052d0b..823af30 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* Detects subtrees that are all minus/plus and nodes that are "binding
 context nodes".  The latter is a node whose structure and immediate tokens
 are the same in the minus and plus trees, and such that for every child,
@@ -517,6 +541,8 @@ let rec equal_typeC t1 t2 =
       equal_mcode lb1 lb2 && equal_mcode rb1 rb2
   | (Ast0.EnumName(kind1,_),Ast0.EnumName(kind2,_)) ->
       equal_mcode kind1 kind2
+  | (Ast0.EnumDef(_,lb1,_,rb1),Ast0.EnumDef(_,lb2,_,rb2)) ->
+       equal_mcode lb1 lb2 && equal_mcode rb1 rb2
   | (Ast0.StructUnionName(kind1,_),Ast0.StructUnionName(kind2,_)) ->
       equal_mcode kind1 kind2
   | (Ast0.FunctionType(ty1,lp1,p1,rp1),Ast0.FunctionType(ty2,lp2,p2,rp2)) ->
@@ -572,7 +598,9 @@ let equal_initialiser i1 i2 =
     (Ast0.MetaInit(name1,_),Ast0.MetaInit(name2,_)) ->
       equal_mcode name1 name2
   | (Ast0.InitExpr(_),Ast0.InitExpr(_)) -> true
-  | (Ast0.InitList(lb1,_,rb1),Ast0.InitList(lb2,_,rb2)) ->
+  | (Ast0.InitList(lb1,_,rb1,o1),Ast0.InitList(lb2,_,rb2,o2)) ->
+      (* can't compare orderedness, because this can differ between -
+        and + code *)
       (equal_mcode lb1 lb2) && (equal_mcode rb1 rb2)
   | (Ast0.InitGccExt(designators1,eq1,_),
      Ast0.InitGccExt(designators2,eq2,_)) ->
index acdb4b4..da1f6c5 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val context_neg :
     Ast0_cocci.rule -> Ast0_cocci.rule ->
       (Ast0_cocci.top_level * Ast0_cocci.top_level) list
index 1cc1450..75a83e5 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 module Ast0 = Ast0_cocci
 module Ast = Ast_cocci
 
index 3ac6ddb..87be3fd 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* types that clutter the .mly file *)
 (* for iso metavariables, true if they can only match nonmodified, unitary
    metavariables *)
index e72958c..21d45da 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 module Ast = Ast_cocci
 module V = Visitor_ast
 
@@ -71,6 +95,10 @@ and disjtypeC bty =
        (function ty -> function size ->
          Ast.rewrap bty (Ast.Array(ty,lb,size,rb)))
   | Ast.EnumName(_,_) | Ast.StructUnionName(_,_) -> [bty]
+  | Ast.EnumDef(ty,lb,ids,rb) ->
+      disjmult2 (disjty ty) (disjdots disjexp ids)
+       (function ty -> function ids ->
+         Ast.rewrap bty (Ast.EnumDef(ty,lb,ids,rb)))
   | Ast.StructUnionDef(ty,lb,decls,rb) ->
       disjmult2 (disjty ty) (disjdots disjdecl decls)
        (function ty -> function decls ->
@@ -181,10 +209,15 @@ and disjini i =
   | Ast.InitExpr(exp) ->
       let exp = disjexp exp in
       List.map (function exp -> Ast.rewrap i (Ast.InitExpr(exp))) exp
-  | Ast.InitList(allminus,lb,initlist,rb,whencode) ->
+  | Ast.ArInitList(lb,initlist,rb) ->
+      List.map
+       (function initlist ->
+         Ast.rewrap i (Ast.ArInitList(lb,initlist,rb)))
+       (disjdots disjini initlist)
+  | Ast.StrInitList(allminus,lb,initlist,rb,whencode) ->
       List.map
        (function initlist ->
-         Ast.rewrap i (Ast.InitList(allminus,lb,initlist,rb,whencode)))
+         Ast.rewrap i (Ast.StrInitList(allminus,lb,initlist,rb,whencode)))
        (disjmult disjini initlist)
   | Ast.InitGccExt(designators,eq,ini) ->
       let designators = disjmult designator designators in
@@ -198,6 +231,7 @@ and disjini i =
        (function ini -> Ast.rewrap i (Ast.InitGccName(name,eq,ini)))
        ini
   | Ast.IComma(comma) -> [i]
+  | Ast.Idots(dots,_) -> [i]
   | Ast.OptIni(ini) ->
       let ini = disjini ini in
       List.map (function ini -> Ast.rewrap i (Ast.OptIni(ini))) ini
@@ -326,7 +360,7 @@ let disj_all =
   let donothing r k e = k e in
   V.rebuilder
     mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
-    donothing donothing donothing donothing
+    donothing donothing donothing donothing donothing
     donothing donothing donothing donothing donothing donothing donothing
     disj_rule_elem donothing donothing donothing donothing
 
@@ -343,7 +377,7 @@ let collect_all_isos =
     mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
     donothing donothing donothing donothing donothing donothing donothing
     donothing donothing donothing donothing donothing donothing donothing
-    donothing doanything
+    donothing donothing doanything
 
 let collect_iso_info =
   let mcode x = x in
@@ -357,6 +391,7 @@ let collect_iso_info =
   V.rebuilder
     mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
     donothing donothing donothing donothing donothing donothing donothing
+     donothing
     donothing donothing donothing donothing rule_elem donothing donothing
     donothing donothing
 
index ae9c339..cf420d0 100644 (file)
@@ -1,2 +1,26 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val disj :
     Ast_cocci.rule_with_metavars list -> Ast_cocci.rule_with_metavars list
index bc8de67..0868f02 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* uses E rather than A and adds comments indicating the start and end of
 each matched term *)
 
index 12adae9..886fb6e 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* For each rule return the list of variables that are used after it.
 Also augment various parts of each rule with unitary, inherited, and freshness
 informations *)
@@ -173,7 +197,7 @@ let collect_refs include_constraints =
 
   V.combiner bind option_default
     mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
-    donothing donothing donothing donothing
+    donothing donothing donothing donothing donothing
     astfvident astfvexpr astfvfullType astfvtypeC astfvinit astfvparam
     astfvdecls astfvrule_elem astfvstatement donothing donothing donothing_a
 
@@ -283,7 +307,7 @@ let collect_saved =
 
   V.combiner bind option_default
     mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
-    donothing donothing donothing donothing
+    donothing donothing donothing donothing donothing
     astfvident astfvexpr donothing astfvtypeC astfvinit astfvparam
     astfvdecls astfvrule_elem donothing donothing donothing donothing
 
@@ -396,7 +420,7 @@ let collect_in_plus_term =
 
   V.combiner bind option_default
     mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
-    donothing donothing donothing donothing
+    donothing donothing donothing donothing donothing
     donothing donothing donothing donothing donothing donothing
     donothing astfvrule_elem astfvstatement donothing donothing donothing
 
@@ -558,7 +582,7 @@ let classify_variables metavar_decls minirules used_after =
 
   let fn = V.rebuilder
       mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
-      donothing donothing donothing donothing
+      donothing donothing donothing donothing donothing
       ident expression donothing typeC init param decl rule_elem
       donothing donothing donothing donothing in
 
@@ -690,7 +714,7 @@ let astfvs metavars bound =
 
   V.rebuilder
     mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
-    donothing donothing astfvstatement_dots donothing
+    donothing donothing astfvstatement_dots donothing donothing
     donothing donothing donothing donothing donothing donothing donothing
     astfvrule_elem astfvstatement astfvcase_line astfvtoplevel donothing
 
@@ -752,7 +776,7 @@ let get_neg_pos_list (_,rule) used_after_list =
   let v =
     V.combiner bind option_default
     mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
-    donothing donothing donothing donothing
+    donothing donothing donothing donothing donothing
     donothing donothing donothing donothing donothing donothing
     donothing donothing donothing donothing donothing donothing in
   match rule with
index 979a59f..d7fd980 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* Used after things can only have one binding.  Positions can have many
 bindings.  These are combined in ctlcocciintegration, ie after the CTL
 generation. *)
index 5f27494..d79e0ba 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 module Ast0 = Ast0_cocci
 module Ast = Ast_cocci
 module V0 = Visitor_ast0
index 85b056c..363db5c 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val process : string (* name *) -> Ast_cocci.metavar list ->
   string list (* dropped isos *) ->
     Ast0_cocci.rule -> Ast0_cocci.rule -> Ast_cocci.ruletype ->
index 6400d3b..3864d91 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* get a list of all of the constants in the - slice of a SmPL file, to be
 used to select which files to process *)
 
index 657faf5..713a368 100644 (file)
@@ -1 +1,25 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val get_constants : Ast_cocci.rule list -> string list list
index 5638faa..633fcb3 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 module Ast = Ast_cocci
 module V = Visitor_ast
 module TC = Type_cocci
@@ -406,7 +430,7 @@ let do_get_constants constants keywords env neg_pos =
 
   V.combiner bind option_default
     mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
-    donothing donothing donothing donothing
+    donothing donothing donothing donothing donothing
     ident expression fullType typeC initialiser parameter declaration
     rule_elem statement donothing donothing donothing
 
@@ -439,7 +463,7 @@ let get_all_constants minus_only =
   V.combiner bind option_default
     other mcode other other other other other other other other other other
 
-    donothing donothing donothing donothing
+    donothing donothing donothing donothing donothing
     donothing donothing donothing donothing donothing donothing donothing
     donothing donothing donothing donothing donothing
 
@@ -483,7 +507,7 @@ let get_plus_constants =
 
   V.combiner bind option_default
     mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
-    donothing donothing donothing donothing
+    donothing donothing donothing donothing donothing
     donothing donothing donothing donothing donothing donothing donothing
     rule_elem statement donothing donothing donothing
 
@@ -518,7 +542,7 @@ let all_context =
 
   let initialiser r k e =
     match Ast.unwrap e with
-      Ast.InitList(all_minus,_,_,_,_) ->
+      Ast.StrInitList(all_minus,_,_,_,_) ->
        not all_minus && k e
     | _ -> k e in
 
@@ -537,7 +561,7 @@ let all_context =
 
   V.combiner bind option_default
     mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
-    donothing donothing donothing donothing
+    donothing donothing donothing donothing donothing
     donothing donothing donothing donothing initialiser donothing
     donothing rule_elem statement donothing donothing donothing
 
index e945986..01f9f05 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val get_constants :
     Ast_cocci.rule list ->
       (((Ast_cocci.meta_name list) list) list) (*negated pos vars*) ->
index cf3755c..b864abe 100644 (file)
@@ -1,5 +1,29 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* create an index for each constructor *)
-(* current max is 149 *)
+(* current max is 150 *)
 
 (* doesn't really work - requires that identical terms with no token
 subterms (eg dots) not appear on the same line *)
@@ -103,6 +127,7 @@ let typeC t =
   | Ast0.FunctionType(ty,lp1,params,rp1) -> [132]
   | Ast0.Array(ty,lb,size,rb) -> [50]
   | Ast0.EnumName(kind,name) -> [146]
+  | Ast0.EnumDef(ty,lb,decls,rb) -> [150]
   | Ast0.StructUnionName(kind,name) -> [51]
   | Ast0.StructUnionDef(ty,lb,decls,rb) -> [117]
   | Ast0.TypeName(name) -> [52]
@@ -129,7 +154,7 @@ let initialiser i =
   match Ast0.unwrap i with
     Ast0.MetaInit(nm,_) -> [106] (* added after *)
   | Ast0.InitExpr(exp) -> [102]
-  | Ast0.InitList(lb,initlist,rb) -> [103]
+  | Ast0.InitList(lb,initlist,rb,ordered) -> [103]
   | Ast0.InitGccExt(designators,eq,ini) -> [104]
   | Ast0.InitGccName(name,eq,ini) -> [105]
   | Ast0.IComma(cm) -> [108]
index cf6fdbf..82ecb1e 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val expression_dots : Ast0_cocci.expression Ast0_cocci.dots -> int list
 val initialiser_dots : Ast0_cocci.initialiser Ast0_cocci.dots -> int list
 val parameter_dots : Ast0_cocci.parameterTypeDef Ast0_cocci.dots -> int list
index d62a0d8..2bf3cdf 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* The error message "no available token to attach to" often comes in an
 argument list of unbounded length.  In this case, one should move a comma so
 that there is a comma after the + code. *)
index 788df0b..46acab1 100644 (file)
@@ -1,2 +1,26 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val insert_plus : Ast0_cocci.rule -> Ast0_cocci.rule -> bool -> unit
 (* bool is true if no isos *)
index 539d2bb..072ccbe 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 module V0 = Visitor_ast0
 module VT0 = Visitor_ast0_types
 module Ast0 = Ast0_cocci
index 6b336f5..7826ecb 100644 (file)
@@ -1,2 +1,26 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val process : Iso_pattern.isomorphism -> unit
 
index e1731ed..6a63cda 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* Potential problem: offset of mcode is not updated when an iso is
 instantiated, implying that a term may end up with many mcodes with the
 same offset.  On the other hand, at the moment offset only seems to be used
@@ -101,6 +125,7 @@ type reason =
   | ContextRequired of Ast0.anything
   | NonMatch
   | Braces of Ast0.statement
+  | Nest of Ast0.statement
   | Position of Ast.meta_name
   | TypeMatch of reason list
 
@@ -136,6 +161,10 @@ let rec interpret_reason name line reason printer =
       Printf.printf "braces must be all minus (plus code allowed) or all\ncontext (plus code not allowed in the body) to match:\n";
       Unparse_ast0.statement "" s;
       Format.print_newline()
+  | Nest(s) ->
+      Printf.printf "iso with nest doesn't match whencode (TODO):\n";
+      Unparse_ast0.statement "" s;
+      Format.print_newline()
   | Position(rule,name) ->
       Printf.printf "position variable %s.%s conflicts with an isomorphism\n"
        rule name;
@@ -760,9 +789,16 @@ let match_maker checks_needed context_required whencode_allowed =
              conjunct_many_bindings
                [check_mcode lb1 lb; check_mcode rb1 rb;
                  match_typeC tya tyb; match_option match_expr sizea sizeb]
-         | (Ast0.EnumName(kinda,namea),Ast0.EnumName(kindb,nameb)) ->
+         | (Ast0.EnumName(kinda,Some namea),
+            Ast0.EnumName(kindb,Some nameb)) ->
              conjunct_bindings (check_mcode kinda kindb)
                (match_ident namea nameb)
+         | (Ast0.EnumDef(tya,lb1,idsa,rb1),
+            Ast0.EnumDef(tyb,lb,idsb,rb)) ->
+              conjunct_many_bindings
+                [check_mcode lb1 lb; check_mcode rb1 rb;
+                  match_typeC tya tyb;
+                  match_dots match_expr no_list do_nolist_match idsa idsb]
          | (Ast0.StructUnionName(kinda,Some namea),
             Ast0.StructUnionName(kindb,Some nameb)) ->
               if mcode_equal kinda kindb
@@ -869,8 +905,9 @@ let match_maker checks_needed context_required whencode_allowed =
          match (up,Ast0.unwrap i) with
            (Ast0.InitExpr(expa),Ast0.InitExpr(expb)) ->
              match_expr expa expb
-         | (Ast0.InitList(lb1,initlista,rb1),Ast0.InitList(lb,initlistb,rb))
-           ->
+         | (Ast0.InitList(lb1,initlista,rb1,oa),
+            Ast0.InitList(lb,initlistb,rb,ob))
+           when oa = ob ->
              conjunct_many_bindings
                [check_mcode lb1 lb; check_mcode rb1 rb;
                  match_dots match_init no_list do_nolist_match
@@ -1076,8 +1113,25 @@ let match_maker checks_needed context_required whencode_allowed =
                [check_mcode r1 r; check_mcode sc1 sc; match_expr expa expb]
          | (Ast0.Disj(_,statement_dots_lista,_,_),_) ->
              failwith "disj not supported in patterns"
+         | (Ast0.Nest(_,stmt_dotsa,_,[],multia),
+            Ast0.Nest(_,stmt_dotsb,_,wc,multib)) ->
+              if multia = multib
+              then
+                (match wc with
+                  [] ->
+                 (* not sure this is correct, perhaps too restrictive *)
+                    if not(checks_needed) or is_minus s or
+                      (is_context s &&
+                       List.for_all is_pure_context (Ast0.undots stmt_dotsb))
+                    then
+                      match_dots match_statement
+                        is_slist_matcher do_slist_match
+                        stmt_dotsa stmt_dotsb
+                    else return_false (Braces(s))
+                | _ -> return_false (Nest(s)))
+              else return false (* diff kind of nest *)
          | (Ast0.Nest(_,stmt_dotsa,_,_,_),_) ->
-             failwith "nest not supported in patterns"
+             failwith "nest with whencode not supported in patterns"
          | (Ast0.Exp(expa),Ast0.Exp(expb)) -> match_expr expa expb
          | (Ast0.TopExp(expa),Ast0.TopExp(expb)) -> match_expr expa expb
          | (Ast0.Exp(expa),Ast0.TopExp(expb)) -> match_expr expa expb
index d12a37a..964662e 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 type isomorphism =
     Ast_cocci.metavar list * Ast0_cocci.anything list list * string(*iso name*)
 
index e27cf9a..30bde85 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 {
 open Parser_cocci_menhir
 module D = Data
index 5ed42f9..5426f9c 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 {
 open Parser_cocci_menhir
 module D = Data
index 218bda0..af5764b 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* ----------------------------------------------------------------------- *)
 (* Entry point *)
 
index ed6516b..71c25f0 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* given parsed minus code and a stream of + code, figure out where to put
 the + code in the mcode of the minus code *)
 
index edff023..def844e 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val do_merge :
     Ast0_cocci.rule ->
       (Ast_cocci.anything * int * int * int * int) list list list ->
index 31cb8e9..798a886 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* exports everything, used only by parser_cocci_menhir.mly *)
 module Ast0 = Ast0_cocci
 module Ast = Ast_cocci
@@ -106,6 +130,11 @@ let mkddots str (dot,whencode) =
   | ("...",Some [w]) -> Ast0.wrap(Ast0.Ddots(clt2mcode str dot, Some w))
   | _ -> failwith "cannot happen"
 
+let mkddots_one str (dot,whencode) =
+  match str with
+    "..." -> Ast0.wrap(Ast0.Ddots(clt2mcode str dot, whencode))
+  | _ -> failwith "cannot happen"
+
 let mkpdots str dot =
   match str with
     "..." -> Ast0.wrap(Ast0.Pdots(clt2mcode str dot))
@@ -545,3 +574,31 @@ let verify_parameter_declarations = function
                   (Ast0.get_line t))
          | _ -> ())
        l
+
+(* ---------------------------------------------------------------------- *)
+(* decide whether an init list is ordered or unordered *)
+
+let struct_initializer initlist =
+  let rec loop i =
+    match Ast0.unwrap i with
+      Ast0.InitGccExt _ -> true
+    | Ast0.InitGccName _ -> true
+    | Ast0.OptIni i | Ast0.UniqueIni i -> loop i
+    | Ast0.MetaInit _ -> true (* ambiguous... *)
+    | _ -> false in
+  let l = Ast0.undots initlist in
+  (l = []) or (List.exists loop l)
+
+let drop_dot_commas initlist =
+  match Ast0.unwrap initlist with
+    Ast0.DOTS(l) ->
+      let rec loop after_comma = function
+         [] -> []
+       | x::xs ->
+           (match Ast0.unwrap x with
+             Ast0.Idots(dots,whencode) -> x :: (loop true xs)
+           | Ast0.IComma(comma) when after_comma -> (*drop*) loop false xs
+           | _ -> x :: (loop false xs)) in
+      Ast0.rewrap initlist (Ast0.DOTS(loop false l))
+  | _ -> failwith "not supported"
+
index 37f35a7..53f6807 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* splits the entire file into minus and plus fragments, and parses each
 separately (thus duplicating work for the parsing of the context elements) *)
 
@@ -1181,6 +1205,8 @@ let rec drop_double_dots l =
       [] -> []
     | x::rest when any_before prev && any_after x ->
        (PC.TNothing,i)::x::(loop x rest)
+    | ((PC.TComma(_),_) as c)::x::rest when any_before prev && any_after x ->
+       c::(PC.TNothing,i)::x::(loop x rest)
     | x::rest -> x :: (loop x rest) in
   match l with
     [] -> []
index e3a3188..d7808e2 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 exception Bad_virt of string
 
 val process :
index 39886c9..134a91c 100644 (file)
@@ -1,3 +1,27 @@
+/*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ */
+
+
 %{
 
 (* Not clear how to allow function declarations to specify a return type
index c9b03d8..3ee8215 100644 (file)
@@ -2,140 +2,140 @@ exception Error
 
 type token = 
   | Tvolatile of (
-# 32 "parser_cocci_menhir.mly"
+# 56 "parser_cocci_menhir.mly"
       (Data.clt)
 # 8 "parser_cocci_menhir.ml"
 )
   | Tvoid of (
-# 28 "parser_cocci_menhir.mly"
+# 52 "parser_cocci_menhir.mly"
       (Data.clt)
 # 13 "parser_cocci_menhir.ml"
 )
   | Tunsigned of (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
 # 18 "parser_cocci_menhir.ml"
 )
   | Tunion of (
-# 28 "parser_cocci_menhir.mly"
+# 52 "parser_cocci_menhir.mly"
       (Data.clt)
 # 23 "parser_cocci_menhir.ml"
 )
   | Ttypedef of (
-# 31 "parser_cocci_menhir.mly"
+# 55 "parser_cocci_menhir.mly"
       (Data.clt)
 # 28 "parser_cocci_menhir.ml"
 )
   | Tstruct of (
-# 28 "parser_cocci_menhir.mly"
+# 52 "parser_cocci_menhir.mly"
       (Data.clt)
 # 33 "parser_cocci_menhir.ml"
 )
   | Tstatic of (
-# 31 "parser_cocci_menhir.mly"
+# 55 "parser_cocci_menhir.mly"
       (Data.clt)
 # 38 "parser_cocci_menhir.ml"
 )
   | Tsigned of (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
 # 43 "parser_cocci_menhir.ml"
 )
   | Tshort of (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
 # 48 "parser_cocci_menhir.ml"
 )
   | Tregister of (
-# 31 "parser_cocci_menhir.mly"
+# 55 "parser_cocci_menhir.mly"
       (Data.clt)
 # 53 "parser_cocci_menhir.ml"
 )
   | Tlong of (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
 # 58 "parser_cocci_menhir.ml"
 )
   | Tlist
   | Tint of (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
 # 64 "parser_cocci_menhir.ml"
 )
   | Tinline of (
-# 31 "parser_cocci_menhir.mly"
+# 55 "parser_cocci_menhir.mly"
       (Data.clt)
 # 69 "parser_cocci_menhir.ml"
 )
   | Tfloat of (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
 # 74 "parser_cocci_menhir.ml"
 )
   | Textern of (
-# 31 "parser_cocci_menhir.mly"
+# 55 "parser_cocci_menhir.mly"
       (Data.clt)
 # 79 "parser_cocci_menhir.ml"
 )
   | Tenum of (
-# 28 "parser_cocci_menhir.mly"
+# 52 "parser_cocci_menhir.mly"
       (Data.clt)
 # 84 "parser_cocci_menhir.ml"
 )
   | Tdouble of (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
 # 89 "parser_cocci_menhir.ml"
 )
   | Tconst of (
-# 32 "parser_cocci_menhir.mly"
+# 56 "parser_cocci_menhir.mly"
       (Data.clt)
 # 94 "parser_cocci_menhir.ml"
 )
   | Tchar of (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
 # 99 "parser_cocci_menhir.ml"
 )
   | Tauto of (
-# 31 "parser_cocci_menhir.mly"
+# 55 "parser_cocci_menhir.mly"
       (Data.clt)
 # 104 "parser_cocci_menhir.ml"
 )
   | Tattr of (
-# 33 "parser_cocci_menhir.mly"
+# 57 "parser_cocci_menhir.mly"
       (string * Data.clt)
 # 109 "parser_cocci_menhir.ml"
 )
   | TXor of (
-# 71 "parser_cocci_menhir.mly"
+# 95 "parser_cocci_menhir.mly"
        (Data.clt)
 # 114 "parser_cocci_menhir.ml"
 )
   | TWords
   | TWhy0
   | TWhy of (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
 # 121 "parser_cocci_menhir.ml"
 )
   | TWhile of (
-# 35 "parser_cocci_menhir.mly"
+# 59 "parser_cocci_menhir.mly"
        (Data.clt)
 # 126 "parser_cocci_menhir.ml"
 )
   | TWhenTrue of (
-# 53 "parser_cocci_menhir.mly"
+# 77 "parser_cocci_menhir.mly"
        (Data.clt)
 # 131 "parser_cocci_menhir.ml"
 )
   | TWhenFalse of (
-# 53 "parser_cocci_menhir.mly"
+# 77 "parser_cocci_menhir.mly"
        (Data.clt)
 # 136 "parser_cocci_menhir.ml"
 )
   | TWhen of (
-# 53 "parser_cocci_menhir.mly"
+# 77 "parser_cocci_menhir.mly"
        (Data.clt)
 # 141 "parser_cocci_menhir.ml"
 )
@@ -144,308 +144,308 @@ type token =
   | TUnderscore
   | TTypedef
   | TTypeId of (
-# 37 "parser_cocci_menhir.mly"
+# 61 "parser_cocci_menhir.mly"
        (string * Data.clt)
 # 150 "parser_cocci_menhir.ml"
 )
   | TType
   | TTildeExclEq of (
-# 73 "parser_cocci_menhir.mly"
+# 97 "parser_cocci_menhir.mly"
        (Data.clt)
 # 156 "parser_cocci_menhir.ml"
 )
   | TTildeEq of (
-# 73 "parser_cocci_menhir.mly"
+# 97 "parser_cocci_menhir.mly"
        (Data.clt)
 # 161 "parser_cocci_menhir.ml"
 )
   | TTilde of (
-# 78 "parser_cocci_menhir.mly"
+# 102 "parser_cocci_menhir.mly"
        (Data.clt)
 # 166 "parser_cocci_menhir.ml"
 )
   | TSwitch of (
-# 35 "parser_cocci_menhir.mly"
+# 59 "parser_cocci_menhir.mly"
        (Data.clt)
 # 171 "parser_cocci_menhir.ml"
 )
   | TSub of (
-# 73 "parser_cocci_menhir.mly"
+# 97 "parser_cocci_menhir.mly"
        (Data.clt)
 # 176 "parser_cocci_menhir.ml"
 )
   | TString of (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
 # 181 "parser_cocci_menhir.ml"
 )
   | TStrict of (
-# 53 "parser_cocci_menhir.mly"
+# 77 "parser_cocci_menhir.mly"
        (Data.clt)
 # 186 "parser_cocci_menhir.ml"
 )
   | TStatement
   | TSizeof of (
-# 36 "parser_cocci_menhir.mly"
+# 60 "parser_cocci_menhir.mly"
        (Data.clt)
 # 192 "parser_cocci_menhir.ml"
 )
   | TShROp of (
-# 75 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Ast_cocci.arithOp * Data.clt)
 # 197 "parser_cocci_menhir.ml"
 )
   | TShLOp of (
-# 75 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Ast_cocci.arithOp * Data.clt)
 # 202 "parser_cocci_menhir.ml"
 )
   | TScriptData of (
-# 50 "parser_cocci_menhir.mly"
+# 74 "parser_cocci_menhir.mly"
        (string)
 # 207 "parser_cocci_menhir.ml"
 )
   | TScript
   | TRuleName of (
-# 25 "parser_cocci_menhir.mly"
+# 49 "parser_cocci_menhir.mly"
       (string)
 # 213 "parser_cocci_menhir.ml"
 )
   | TRightIso
   | TReturn of (
-# 35 "parser_cocci_menhir.mly"
+# 59 "parser_cocci_menhir.mly"
        (Data.clt)
 # 219 "parser_cocci_menhir.ml"
 )
   | TPure
   | TPtrOp of (
-# 83 "parser_cocci_menhir.mly"
+# 107 "parser_cocci_menhir.mly"
        (Data.clt)
 # 225 "parser_cocci_menhir.ml"
 )
   | TPtVirg of (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
 # 230 "parser_cocci_menhir.ml"
 )
   | TPragma of (
-# 38 "parser_cocci_menhir.mly"
+# 62 "parser_cocci_menhir.mly"
        (Ast_cocci.added_string * Data.clt)
 # 235 "parser_cocci_menhir.ml"
 )
   | TPosition
   | TPosAny
   | TPlusFile of (
-# 62 "parser_cocci_menhir.mly"
+# 86 "parser_cocci_menhir.mly"
        (string * Data.clt)
 # 242 "parser_cocci_menhir.ml"
 )
   | TPlus0
   | TPlus of (
-# 77 "parser_cocci_menhir.mly"
+# 101 "parser_cocci_menhir.mly"
        (Data.clt)
 # 248 "parser_cocci_menhir.ml"
 )
   | TPathIsoFile of (
-# 58 "parser_cocci_menhir.mly"
+# 82 "parser_cocci_menhir.mly"
        (string)
 # 253 "parser_cocci_menhir.ml"
 )
   | TParameter
   | TPOEllipsis of (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
 # 259 "parser_cocci_menhir.ml"
 )
   | TPCEllipsis of (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
 # 264 "parser_cocci_menhir.ml"
 )
   | TPArob
   | TOrLog of (
-# 68 "parser_cocci_menhir.mly"
+# 92 "parser_cocci_menhir.mly"
        (Data.clt)
 # 270 "parser_cocci_menhir.ml"
 )
   | TOr of (
-# 70 "parser_cocci_menhir.mly"
+# 94 "parser_cocci_menhir.mly"
        (Data.clt)
 # 275 "parser_cocci_menhir.ml"
 )
   | TOn
   | TOPar0 of (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
 # 281 "parser_cocci_menhir.ml"
 )
   | TOPar of (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
 # 286 "parser_cocci_menhir.ml"
 )
   | TOInit of (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
 # 291 "parser_cocci_menhir.ml"
 )
   | TOEllipsis of (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
 # 296 "parser_cocci_menhir.ml"
 )
   | TOCro of (
-# 81 "parser_cocci_menhir.mly"
+# 105 "parser_cocci_menhir.mly"
        (Data.clt)
 # 301 "parser_cocci_menhir.ml"
 )
   | TOBrace of (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
 # 306 "parser_cocci_menhir.ml"
 )
   | TNothing
   | TNotEq of (
-# 73 "parser_cocci_menhir.mly"
+# 97 "parser_cocci_menhir.mly"
        (Data.clt)
 # 312 "parser_cocci_menhir.ml"
 )
   | TNever
   | TName
   | TMul of (
-# 78 "parser_cocci_menhir.mly"
+# 102 "parser_cocci_menhir.mly"
        (Data.clt)
 # 319 "parser_cocci_menhir.ml"
 )
   | TMinusFile of (
-# 62 "parser_cocci_menhir.mly"
+# 86 "parser_cocci_menhir.mly"
        (string * Data.clt)
 # 324 "parser_cocci_menhir.ml"
 )
   | TMinus of (
-# 77 "parser_cocci_menhir.mly"
+# 101 "parser_cocci_menhir.mly"
        (Data.clt)
 # 329 "parser_cocci_menhir.ml"
 )
   | TMid0 of (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
 # 334 "parser_cocci_menhir.ml"
 )
   | TMetaType of (
-# 43 "parser_cocci_menhir.mly"
+# 67 "parser_cocci_menhir.mly"
        (Parse_aux.info)
 # 339 "parser_cocci_menhir.ml"
 )
   | TMetaStmList of (
-# 43 "parser_cocci_menhir.mly"
+# 67 "parser_cocci_menhir.mly"
        (Parse_aux.info)
 # 344 "parser_cocci_menhir.ml"
 )
   | TMetaStm of (
-# 43 "parser_cocci_menhir.mly"
+# 67 "parser_cocci_menhir.mly"
        (Parse_aux.info)
 # 349 "parser_cocci_menhir.ml"
 )
   | TMetaPos of (
-# 47 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
        (Parse_aux.pos_info)
 # 354 "parser_cocci_menhir.ml"
 )
   | TMetaParamList of (
-# 45 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
        (Parse_aux.list_info)
 # 359 "parser_cocci_menhir.ml"
 )
   | TMetaParam of (
-# 43 "parser_cocci_menhir.mly"
+# 67 "parser_cocci_menhir.mly"
        (Parse_aux.info)
 # 364 "parser_cocci_menhir.ml"
 )
   | TMetaLocalIdExp of (
-# 46 "parser_cocci_menhir.mly"
+# 70 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
 # 369 "parser_cocci_menhir.ml"
 )
   | TMetaLocalFunc of (
-# 40 "parser_cocci_menhir.mly"
+# 64 "parser_cocci_menhir.mly"
        (Parse_aux.idinfo)
 # 374 "parser_cocci_menhir.ml"
 )
   | TMetaIterator of (
-# 41 "parser_cocci_menhir.mly"
+# 65 "parser_cocci_menhir.mly"
        (Parse_aux.idinfo)
 # 379 "parser_cocci_menhir.ml"
 )
   | TMetaInit of (
-# 44 "parser_cocci_menhir.mly"
+# 68 "parser_cocci_menhir.mly"
        (Parse_aux.info)
 # 384 "parser_cocci_menhir.ml"
 )
   | TMetaIdExp of (
-# 46 "parser_cocci_menhir.mly"
+# 70 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
 # 389 "parser_cocci_menhir.ml"
 )
   | TMetaId of (
-# 40 "parser_cocci_menhir.mly"
+# 64 "parser_cocci_menhir.mly"
        (Parse_aux.idinfo)
 # 394 "parser_cocci_menhir.ml"
 )
   | TMetaFunc of (
-# 40 "parser_cocci_menhir.mly"
+# 64 "parser_cocci_menhir.mly"
        (Parse_aux.idinfo)
 # 399 "parser_cocci_menhir.ml"
 )
   | TMetaField of (
-# 44 "parser_cocci_menhir.mly"
+# 68 "parser_cocci_menhir.mly"
        (Parse_aux.info)
 # 404 "parser_cocci_menhir.ml"
 )
   | TMetaExpList of (
-# 45 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
        (Parse_aux.list_info)
 # 409 "parser_cocci_menhir.ml"
 )
   | TMetaExp of (
-# 46 "parser_cocci_menhir.mly"
+# 70 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
 # 414 "parser_cocci_menhir.ml"
 )
   | TMetaErr of (
-# 42 "parser_cocci_menhir.mly"
+# 66 "parser_cocci_menhir.mly"
        (Parse_aux.expinfo)
 # 419 "parser_cocci_menhir.ml"
 )
   | TMetaDeclarer of (
-# 41 "parser_cocci_menhir.mly"
+# 65 "parser_cocci_menhir.mly"
        (Parse_aux.idinfo)
 # 424 "parser_cocci_menhir.ml"
 )
   | TMetaDecl of (
-# 44 "parser_cocci_menhir.mly"
+# 68 "parser_cocci_menhir.mly"
        (Parse_aux.info)
 # 429 "parser_cocci_menhir.ml"
 )
   | TMetaConst of (
-# 46 "parser_cocci_menhir.mly"
+# 70 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
 # 434 "parser_cocci_menhir.ml"
 )
   | TMPtVirg
   | TLogOp of (
-# 74 "parser_cocci_menhir.mly"
+# 98 "parser_cocci_menhir.mly"
        (Ast_cocci.logicalOp * Data.clt)
 # 440 "parser_cocci_menhir.ml"
 )
   | TLocal
   | TLineEnd of (
-# 53 "parser_cocci_menhir.mly"
+# 77 "parser_cocci_menhir.mly"
        (Data.clt)
 # 446 "parser_cocci_menhir.ml"
 )
   | TIteratorId of (
-# 37 "parser_cocci_menhir.mly"
+# 61 "parser_cocci_menhir.mly"
        (string * Data.clt)
 # 451 "parser_cocci_menhir.ml"
 )
@@ -461,60 +461,60 @@ type token =
   | TIso
   | TInvalid
   | TInt of (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
 # 467 "parser_cocci_menhir.ml"
 )
   | TInitialize
   | TInitialiser
   | TIncludeNL of (
-# 59 "parser_cocci_menhir.mly"
+# 83 "parser_cocci_menhir.mly"
        (string * Data.clt)
 # 474 "parser_cocci_menhir.ml"
 )
   | TIncludeL of (
-# 59 "parser_cocci_menhir.mly"
+# 83 "parser_cocci_menhir.mly"
        (string * Data.clt)
 # 479 "parser_cocci_menhir.ml"
 )
   | TInc of (
-# 64 "parser_cocci_menhir.mly"
+# 88 "parser_cocci_menhir.mly"
        (Data.clt)
 # 484 "parser_cocci_menhir.ml"
 )
   | TIf of (
-# 35 "parser_cocci_menhir.mly"
+# 59 "parser_cocci_menhir.mly"
        (Data.clt)
 # 489 "parser_cocci_menhir.ml"
 )
   | TIdentifier
   | TIdent of (
-# 37 "parser_cocci_menhir.mly"
+# 61 "parser_cocci_menhir.mly"
        (string * Data.clt)
 # 495 "parser_cocci_menhir.ml"
 )
   | TIdExpression
   | TGoto of (
-# 36 "parser_cocci_menhir.mly"
+# 60 "parser_cocci_menhir.mly"
        (Data.clt)
 # 501 "parser_cocci_menhir.ml"
 )
   | TGenerated
   | TFunction
   | TFunDecl of (
-# 36 "parser_cocci_menhir.mly"
+# 60 "parser_cocci_menhir.mly"
        (Data.clt)
 # 508 "parser_cocci_menhir.ml"
 )
   | TFresh
   | TForall
   | TFor of (
-# 35 "parser_cocci_menhir.mly"
+# 59 "parser_cocci_menhir.mly"
        (Data.clt)
 # 515 "parser_cocci_menhir.ml"
 )
   | TFloat of (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
 # 520 "parser_cocci_menhir.ml"
 )
@@ -526,152 +526,152 @@ type token =
   | TEver
   | TError
   | TEqEq of (
-# 73 "parser_cocci_menhir.mly"
+# 97 "parser_cocci_menhir.mly"
        (Data.clt)
 # 532 "parser_cocci_menhir.ml"
 )
   | TEq of (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
 # 537 "parser_cocci_menhir.ml"
 )
   | TElse of (
-# 35 "parser_cocci_menhir.mly"
+# 59 "parser_cocci_menhir.mly"
        (Data.clt)
 # 542 "parser_cocci_menhir.ml"
 )
   | TEllipsis of (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
 # 547 "parser_cocci_menhir.ml"
 )
   | TDotDot of (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
 # 552 "parser_cocci_menhir.ml"
 )
   | TDot of (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
 # 557 "parser_cocci_menhir.ml"
 )
   | TDo of (
-# 35 "parser_cocci_menhir.mly"
+# 59 "parser_cocci_menhir.mly"
        (Data.clt)
 # 562 "parser_cocci_menhir.ml"
 )
   | TDmOp of (
-# 76 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Ast_cocci.arithOp * Data.clt)
 # 567 "parser_cocci_menhir.ml"
 )
   | TDisable
   | TDepends
   | TDefineParam of (
-# 61 "parser_cocci_menhir.mly"
+# 85 "parser_cocci_menhir.mly"
        (Data.clt * token * int * int)
 # 574 "parser_cocci_menhir.ml"
 )
   | TDefine of (
-# 60 "parser_cocci_menhir.mly"
+# 84 "parser_cocci_menhir.mly"
        (Data.clt * token)
 # 579 "parser_cocci_menhir.ml"
 )
   | TDefault of (
-# 35 "parser_cocci_menhir.mly"
+# 59 "parser_cocci_menhir.mly"
        (Data.clt)
 # 584 "parser_cocci_menhir.ml"
 )
   | TDeclarerId of (
-# 37 "parser_cocci_menhir.mly"
+# 61 "parser_cocci_menhir.mly"
        (string * Data.clt)
 # 589 "parser_cocci_menhir.ml"
 )
   | TDeclarer
   | TDeclaration
   | TDec of (
-# 64 "parser_cocci_menhir.mly"
+# 88 "parser_cocci_menhir.mly"
        (Data.clt)
 # 596 "parser_cocci_menhir.ml"
 )
   | TCppConcatOp
   | TContinue of (
-# 36 "parser_cocci_menhir.mly"
+# 60 "parser_cocci_menhir.mly"
        (Data.clt)
 # 602 "parser_cocci_menhir.ml"
 )
   | TContext
   | TConstant
   | TComma of (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
 # 609 "parser_cocci_menhir.ml"
 )
   | TChar of (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
 # 614 "parser_cocci_menhir.ml"
 )
   | TCase of (
-# 35 "parser_cocci_menhir.mly"
+# 59 "parser_cocci_menhir.mly"
        (Data.clt)
 # 619 "parser_cocci_menhir.ml"
 )
   | TCPar0 of (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
 # 624 "parser_cocci_menhir.ml"
 )
   | TCPar of (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
 # 629 "parser_cocci_menhir.ml"
 )
   | TCEllipsis of (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
 # 634 "parser_cocci_menhir.ml"
 )
   | TCCro of (
-# 81 "parser_cocci_menhir.mly"
+# 105 "parser_cocci_menhir.mly"
        (Data.clt)
 # 639 "parser_cocci_menhir.ml"
 )
   | TCBrace of (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
 # 644 "parser_cocci_menhir.ml"
 )
   | TBreak of (
-# 36 "parser_cocci_menhir.mly"
+# 60 "parser_cocci_menhir.mly"
        (Data.clt)
 # 649 "parser_cocci_menhir.ml"
 )
   | TBang0
   | TBang of (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
 # 655 "parser_cocci_menhir.ml"
 )
   | TAssign of (
-# 87 "parser_cocci_menhir.mly"
+# 111 "parser_cocci_menhir.mly"
        (Ast_cocci.assignOp * Data.clt)
 # 660 "parser_cocci_menhir.ml"
 )
   | TArobArob
   | TArob
   | TAny of (
-# 53 "parser_cocci_menhir.mly"
+# 77 "parser_cocci_menhir.mly"
        (Data.clt)
 # 667 "parser_cocci_menhir.ml"
 )
   | TAndLog of (
-# 69 "parser_cocci_menhir.mly"
+# 93 "parser_cocci_menhir.mly"
        (Data.clt)
 # 672 "parser_cocci_menhir.ml"
 )
   | TAnd of (
-# 72 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
 # 677 "parser_cocci_menhir.ml"
 )
@@ -680,7 +680,7 @@ type token =
 and _menhir_jeton = token
 
 
-# 1 "parser_cocci_menhir.mly"
+# 25 "parser_cocci_menhir.mly"
   
 
 (* Not clear how to allow function declarations to specify a return type
@@ -1449,19 +1449,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           Obj.repr _v
   
   let default_reduction =
-    (16, "\000\000\000\000\002\171\000\128\000\000\000\000\002\250\001Q\000\000\001O\001P\001N\000\000\001S\001R\000\001\000\000\001\145\000\000\000\000\000\144\000\000\000\000\001\129\000\169\000\000\000\000\000\156\000\000\000\000\000\161\000\160\000\000\000\157\000\000\000\155\000\000\000\000\000\000\000\159\000\000\000\158\0032\0031\000\000\000\000\000\149\000\000\000\000\000\154\000\153\000\000\000\150\000\000\000\148\000\000\000\000\000\000\000\152\000\000\000\151\000\000\000\163\000\000\000\000\000\168\000\167\000\000\000\164\000\000\000\171\000\000\001K\001J\000\000\000\172\000\000\000\170\000\143\000\000\000\162\000\000\000\177\000\000\000\000\000\000\000\166\000\000\000\000\000\000\003'\003(\000\000\000\000\000\000\000\000\000\000\003-\000\000\000\000\000\174\000\000\003/\000\000\000\000\000\000\003\172\002u\000\000\003\170\000\000\002\143\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\169\003\171\002{\001F\002z\001D\001E\002y\002x\002w\002s\000\000\000\000\002t\001\019\000\000\002v\000\000\003\168\000\000\000g\001C\002V\000\000\000\000\002Y\000\000\000\015\000\000\000\000\000\000\000\000\001\020\002r\002~\000_\000\021\000a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022\000\000\000\023\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\138\0021\000V\001\029\000b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000`\000X\000\000\000W\001\030\000\000\002\\\001\031\000\014\000\016\000\000\000\000\000\199\000\000\000\000\000\186\000\000\000\000\000\191\000\190\000\000\000\187\000\000\000\185\000\000\000\000\000\000\000\189\000\000\000\188\000\000\000\000\000\179\000\000\000\000\000\184\000\183\000\000\000\180\000\000\000\178\000\000\000\000\000\000\000\182\000\000\000\181\000\000\000\193\000\000\000\000\000\198\000\197\000\000\000\194\000\000\000\201\000\000\000\000\000\202\000\000\000\200\000\000\000\192\000\000\000\207\000\000\000\000\000\000\000\196\000\000\000\000\000\000\000\000\000\206\000\000\000\000\000\146\000\000\000\000\000\000\000\000\000\000\000\000\002\023\000\215\000\000\000\000\000r\000s\002\022\001\247\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\226\000\221\000\000\001\248\000\000\000\000\000\000\000\000\000\214\000\212\000\227\000\000\001\137\000\000\000\000\003*\000\000\003)\000\000\000\000\000\000\000\000\000\000\000\204\000\000\000\000\000\000\000\000\000\205\000\203\000\000\000\000\003,\0030\000\195\000\000\000\000\001\"\000\000\000\000\002W\002Z\000\000\002X\002[\003\143\003\144\003\142\000\000\002|\003\141\000\000\002\150\000\000\000\000\002\149\002\148\002\147\002\146\002\145\002\141\000\000\000\000\002\142\000\000\002\144\000\000\000\000\000k\002d\000\000\000\000\002g\000\000\000\000\002j\000\000\000\000\002e\002h\000\000\002f\002i\002\152\002\140\003\157\003\158\003\156\003\155\000l\000\000\000\000\000[\000\000\000Z\001'\000\000\002\001\000\000\000\000\000\000\000\000\000\000\001\024\002\007\000\000\000\000\001\169\000Y\0003\001\017\000c\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0004\000\000\0005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\140\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002}\000\000\000\210\000\000\000\000\001\242\000\000\001\159\001\223\000\000\000\000\001\241\000\000\001\157\001\222\000\000\000\000\000h\000\000\002\151\000\000\000\000\003\160\003\159\000\000\002\002\000\000\000\000\003\146\003\145\000\000\000U\000\211\000\000\001\131\000\000\003+\000\000\000\000\000\000\000\000\000\175\000\173\000\000\001\028\000\000\000\000\000\176\000\165\000\000\000\000\001k\000\000\001j\000\000\001y\000\000\001\147\000\000\000\000\000\000\003b\000\000\000\000\003U\000\000\000\000\003Z\003Y\000\000\003V\000\000\003T\000\000\000\000\000\000\003X\000\000\003W\000\000\000\000\003N\000\000\000\000\003S\003R\000\000\003O\000\000\003M\000\000\000\000\000\000\003Q\000\000\003P\000\000\003\\\000\000\000\000\003a\003`\000\000\003]\000\000\003d\000\000\000\000\003e\000\000\003c\000\000\003[\000\000\003j\000\000\000\000\000\000\003_\000\000\000\000\003\137\000\000\000\000\000\000\000\000\003i\003^\000\000\003\139\000\000\000\000\003\n\003\138\000\136\000\000\001\000\000\000\000\000\000\000\000\000\003g\000\000\000\000\000\000\000\000\003h\003f\000\000\000\000\003\128\000\000\000\000\003s\000\000\000\000\003x\003w\000\000\003t\000\000\003r\000\000\000\000\000\000\003v\000\000\003u\000\000\000\000\003l\000\000\000\000\003q\003p\000\000\003m\000\000\003k\000\000\000\000\000\000\003o\000\000\003n\000\000\003z\000\000\000\000\003\127\003~\000\000\003{\000\000\003\130\000\000\000\000\003\131\000\000\003\129\000\000\003y\000\000\003\136\000\000\000\000\000\000\003}\000\000\000\000\000\000\000\000\003\135\003|\000\000\000\000\000\000\000\000\003\133\000\000\000\000\000\000\000\000\003\134\003\132\003#\003%\003&\003$\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\217\000\237\000\216\000\000\000\000\000}\000\000\000\000\000\000\002\130\000\000\000\000\000\000\002\138\000\000\000\000\002\137\000\000\003\153\002\136\002\135\002\134\002\133\002\132\001g\002\128\000\000\000\000\002\129\000\000\002\131\000\000\000\000\000\000\000\000\000\000\000i\002]\000\000\000\000\002`\000\000\000\000\002c\000\000\000\000\002^\002a\000\000\002_\002b\002\139\002\127\000j\003\150\003\151\003\149\003\148\003\152\000\000\000\000\000\000\000\000\001\016\001\015\000\000\000\000\000\000\000\000\000\000\000\000\001\\\000\000\001\026\001Y\000\000\001\014\000\000\000\000\000\000\001`\000\000\000\000\001a\000\000\001\141\000$\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000%\000\000\000&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001e\000\000\000\000\001d\000\000\000\000\000\000\000\000\000\000\000\000\000y\000\000\000\000\000z\000u\000w\000v\001f\001_\001b\000\000\001^\001[\000\000\001Z\000\000\000\249\000\000\002\244\000\000\000\000\000\245\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\252\000\000\000\000\000\255\000\000\000\000\000\000\000\000\000\000\000\000\001I\000\000\000\000\000\000\000\242\000\000\000\239\000\000\000\000\000\000\000\000\000\000\000\250\000\000\000\246\000\000\000\000\000\000\000\000\000\247\000\000\000\243\000\000\000\000\000\000\002\156\000\000\000\000\000\000\000\000\002\163\000\000\000\000\002\162\002\161\002\160\002\159\002\158\002\154\000\000\000\000\002\155\000\000\002\157\000\000\000\000\000m\002k\000\000\000\000\002n\000\000\000\000\002q\000\000\000\000\002l\002o\000\000\002m\002p\002\165\002\153\003\164\003\165\003\163\003\162\000n\000\000\000\000\000^\000\000\000]\000\000\002\164\000\000\001\224\000\\\000B\001&\000d\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000C\000\000\000D\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\167\003\166\000\000\003\026\000\000\003\025\000\000\000\000\000\000\000\000\003\179\000\000\000\000\000\000\003\180\000\000\000\018\000\000\000\000\000\000\003\175\000\000\001\171\000\000\000\000\000\000\000\228\003\016\001\127\001~\001U\001T\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\021\001\022\001\006\000\000\001\143\000\000\000\000\001\005\001\001\000\000\001\b\001\002\001\007\000\000\003\028\000\000\003\027\003\r\000\000\000\000\000\000\000\000\000\000\003\022\000\000\000\000\000\000\000\000\003\023\003\015\000\000\003\029\000\000\003\017\000\000\000\232\001V\000\000\003 \000\000\001X\000\000\000\000\0038\000\000\003?\000\234\000\000\000\240\000\000\0039\000\233\000\000\003:\000\000\003A\000\000\000\000\000\000\000\000\000\253\000\000\000\236\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\251\000\000\000\000\000\254\000\000\000\000\000\000\000\000\001H\000\000\000\000\000\000\000\241\000\000\000\238\000\000\000\000\000\000\000\000\000\000\000\248\000\000\000\244\000\230\000\229\000\000\003B\003C\000\000\003D\000\000\003E\000\000\001W\003\020\000\000\000\000\001\246\000\000\001\167\001\228\000\000\003\014\000\000\000\000\000\000\003\019\000\000\000\000\000\000\001<\000\000\0016\000\000\0017\000\000\001A\0015\001@\000\000\003\031\001B\000\000\000\235\000\000\000\000\000\000\000\000\001>\0019\001\243\000\000\001:\000\000\001;\000\000\001\161\001\225\000\000\000\000\000\000\001\253\000\000\001\251\000\000\000\000\001\255\001\249\000\000\002\000\001\250\000\000\003!\002\003\000\000\000\231\000\000\000\000\001\244\000\000\001\163\001\226\000\000\003\176\000\000\003\173\000\000\003\174\000\019\000\020\000\000\000\000\002\216\000\000\002\215\000\000\002\025\000\000\002\218\000\000\002\217\000\000\000\000\000\000\002!\000\000\000\000\002%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002(\000\000\000\000\002+\000\000\002\027\000\000\000\000\002\030\000\000\000\000\000\000\002\"\000\000\000\000\002&\000\000\000\000\001\245\000\000\000\000\002\031\000\000\000\000\002#\002\213\002\028\000\000\002\214\000\000\000\000\000\000\000\000\002)\000\000\002\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002'\000\000\000\000\002*\000\000\002\026\000\000\000\000\002\029\000\000\000\000\000\000\002 \000\000\000\000\002$\000\000\001\165\001\227\000\000\002\219\000\000\000\000\000\000\003\177\000\017\000{\000\000\003\178\000\000\000\000\002\240\000\000\000\000\003\"\000e\000\000\000\000\000\000\000f\000\000\003\024\000\000\001\133\000\000\001\139\003\021\000\000\000\000\001q\000\000\001p\000\000\001z\000\000\001\153\000\000\000\000\000\000\001o\000\000\001n\000\000\001w\000\000\001\151\000\000\000\000\000\000\001v\000\000\000\000\000\000\001s\000\000\001r\000\000\001x\000\000\001\155\000\000\000\000\000\000\001t\000\000\000\000\000\000\001m\000\000\001l\000\000\001{\000\000\001\149\000\000\000\000\000\000\001u\000\002\000\000\000R\000S\000\000\000\000\002\181\002\185\002\189\002\177\002\174\000\000\000\000\002\186\002\193\002\178\002\192\002\176\002\191\002\180\002\172\002\179\002\188\002\175\002\182\002\173\002\184\002\190\002\187\002\183\001\189\001\188\000\134\000\000\000\000\003\006\000\000\000\000\002\234\000\000\000\000\002\236\002\235\002\203\000\000\000\000\003\012\002\195\002\194\002\196\000\000\001\203\000Q\001|\000\003\000\000\000\000\002\168\000\000\002/\000\000\000\135\000\000\000\000\003\b\000\000\000\000\000\000\000\127\000\000\000\000\002\248\000\000\002\019\002\018\001\183\002\204\000\000\001\219\000\000\002\169\000\000\000\000\000\129\000\000\000\000\002\252\000\000\001\200\000\000\000\000\001\194\000\000\000\000\000\000\001\199\000\000\001\196\000\000\000\000\000\000\001\173\001\172\000\000\000\000\000\000\001\220\000\000\001\192\000\000\001\191\000\000\000|\000\000\000\000\002\242\000\000\000\000\001\187\000\000\000\000\000\132\000\000\000\000\003\002\000\000\000\000\002\211\000\000\002\210\000\000\000\000\000\000\002\017\002\016\002\208\0027\002\199\002\209\000\000\001\206\000\000\000\000\000\000\001\202\000\000\001\208\000\000\000\000\001\195\000\000\000\000\000\000\002\201\000\133\000\000\000\000\003\004\000\000\002\200\000\000\001\204\000\000\000\000\001\205\000\000\000\000\001\198\000\000\000\000\000\000\000\000\000\000\000\000\001\221\000\000\001\193\000\000\002\t\000\130\000\000\000\000\002\254\000\000\000\000\000\000\000\000\0034\0033\000\000\000\000\001M\000~\001L\000\000\000\000\002\246\000\000\002\011\002\n\002\r\002\197\0023\002\012\000\000\000\131\000\000\000\000\003\000\000\000\000\000\000\000\000\000\002\015\002\014\002\207\002\205\0025\002\198\002\206\000\000\001\213\000\000\001\217\000\000\000\000\001\209\000\000\000\000\000\000\001\201\000\000\001\207\000\000\000\000\001\197\000\000\000\000\000\000\000\000\001\186\000\000\000\000\001\216\000\000\001\215\000\000\000\000\000\000\000\000\001\212\000\000\000\000\001\211\000\000\001\210\000\000\000\000\000\000\000\000\001\214\000\000\001\218\000\000\000\000\001}\000\004\000\000\001\190\000\005\000\000\000\000\001*\000\006\000\000\001\232\001\233\001\231\000\000\001\230\0035\001\179\000\000\000\007\000\000\001\235\001\236\001\234\000\000\000\000\000\000\000\000\001,\000\000\000\000\000\000\000\000\0011\0013\0012\001-\001/\001.\000\000\000\000\000\000\000\000\000\000\003;\003H\000\000\003<\000\000\003=\000\000\000\000\0036\000\000\000\000\000\000\000\000\003G\000\000\000\000\003F\001\240\001\239\000\000\000\000\001\181\001\229\001\237\000\000\000\000\000\000\000\000\002\021\000\000\000\000\000p\000q\002\020\000\000\000\000\000\000\000\224\000\000\001\135\000\000\000\000\000\223\000\219\000\000\000\000\000\000\000\000\001G\000\000\003K\000\000\003L\000\000\000\000\002\006\002\004\000\000\002\005\000\b\000\000\000\t\000\000\002F\002G\002E\000\000\002D\000\000\000\n\000\000\002I\002J\002H\000\000\002L\000\000\000\000\000\000\002>\000\000\000\000\002@\000\000\002:\000\000\002<\000\000\002A\000\000\002B\000\000\002;\0029\002M\001\185\002C\000\000\002O\000\000\002N\000\000\002P\000\000\002\212\000\011\000\000\000\000\000\000\000\000\000\000\000\000\002Q\000\000\000\000\002T\000\000\002S\000\000\002R\001\t\000\000\000\000\000\000\000\000\001\n\002U\000\000\000\000\000\000\002\224\000\000\002\223\000\000\000\000\000\000\000\000\002\225\000\000\000\000\001)\000\000\000\000\000\000\000\000\000\000\002\238\000o\000\000\000\000\001\018\000\000\001$\001#\000\000\001i\000\000\002\222\001\177\001\175\000\000\000\000\000\000\000\000\002\226\000\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\221\000\000\000\000\000\000\000\000\000\000\000\000\002\220\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\233\000\000\000\000\002\232\000\000\002\229\000\000\000\000\000\000\000\000\000\000\002\230\000\000\000\000\000\000\002\231\000\r\000\000\002\227\000\000\002\228")
+    (16, "\000\000\000\000\002\220\000u\000\000\000\000\003+\001d\000\000\001b\001c\001a\000\000\001f\001e\000\001\000\000\001\152\000\000\000\000\000\133\000\000\000\000\001\142\000\182\000\000\000\000\000\169\000\000\000\000\000\174\000\173\000\000\000\170\000\000\000\168\000\000\000\000\000\000\000\172\000\000\000\171\003d\003c\000\000\000\000\000\162\000\000\000\000\000\167\000\166\000\000\000\163\000\000\000\161\000\000\000\000\000\000\000\165\000\000\000\164\000\000\000\176\000\000\000\000\000\181\000\180\000\000\000\177\000\000\000\184\000\000\000\000\000\000\001^\000\000\000\000\000\000\001]\000\000\000\000\0015\0014\0013\0012\0011\0010\000\000\001\029\002\"\000\000\000\000\002!\000\000\000\000\000\000\000\145\000\000\000\000\000\144\002%\001.\000\000\000\000\000\186\000\000\000\000\000\000\000\000\000\187\000\185\000\000\000\183\000\132\000\000\000\175\000\000\000\192\000\000\000\000\000\000\000\179\000\000\000\000\000\000\003X\003^\000\000\000\000\000\000\000\000\000\000\003Y\003Z\000\000\000\000\000\189\000\000\003\\\000\000\000\000\000\000\003\226\002\166\000\000\003\224\000\000\002\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\223\003\225\002\172\001Y\002\171\001W\001X\002\170\002\169\002\168\002\164\000\000\000\000\002\165\001\023\000\000\002\167\000\000\003\222\000\000\000g\001V\002\135\000\000\000\000\002\138\000\000\000\000\000\000\000\000\000\000\000\000\001\024\002\163\002\175\000_\000\021\000a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022\000\000\000\023\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\002b\000V\001\"\000b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000`\000X\000\000\000W\000\000\002\200\000\000\000\227\000\000\000\000\001\249\000\000\001\166\001\230\000\000\000\000\001\248\000\000\000\000\000\214\000\000\000\000\000\201\000\000\000\000\000\206\000\205\000\000\000\202\000\000\000\200\000\000\000\000\000\000\000\204\000\000\000\203\000\000\000\000\000\194\000\000\000\000\000\199\000\198\000\000\000\195\000\000\000\193\000\000\000\000\000\000\000\197\000\000\000\196\000\000\000\208\000\000\000\000\000\213\000\212\000\000\000\209\000\000\000\216\000\000\000\000\000\000\000\000\000\218\000\000\000\000\000\000\000\000\000\219\000\217\000\000\000\215\000\000\000\207\000\000\000\224\000\000\000\000\000\000\000\211\000\000\000\000\000\000\000\000\000\223\000\000\000\000\000\159\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002H\000\232\000\000\000\000\000\000\000\000\000\000\0026\002G\001\254\000\000\000\000\000\000\000\000\000\000\001-\000\236\000\000\001\255\000\000\000\000\000\000\000\000\000\231\000\229\000\157\000\000\000\000\000\156\002:\0027\000\000\000\000\003`\000\000\003_\000\000\000\000\000\000\000\000\000\000\000\221\000\000\000\000\000\000\000\000\000\222\000\220\000\000\000\000\003b\003]\000\210\000\000\001\164\001\229\000\000\002\198\002\197\000\015\002\196\002\195\002\194\002\190\000\000\000\000\000\000\002\199\002\191\000\000\002\193\000\000\000\000\000k\002\149\000\000\000\000\002\152\000\000\000\000\000\000\000\000\000\000\000\000\000[\000\000\000Z\000\137\002\201\002\189\000\014\000\016\000Y\0003\001\021\000c\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0004\000\000\0005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\019\002\023\000\000\000\000\000\136\001%\001#\000\000\002\155\000\000\000\000\002\150\002\153\000\000\002\151\002\154\003\211\003\212\003\210\003\209\002\020\000\000\002\141\000\000\000\000\002\136\002\139\000\000\002\137\002\140\003\197\003\198\003\196\000\000\002\173\003\195\000\000\000\000\000l\001:\000\000\002\b\000\000\000\000\000\000\000\000\000\000\001\027\002\014\000\000\000\000\001\176\000\000\002\174\000\000\000\000\000h\000\000\000\000\003\214\003\213\000\000\002\t\000\000\000\000\003\200\003\199\000\000\000U\000\228\000\000\001\144\000\000\003a\000\000\000\000\000\000\000\000\000\190\000\188\000\000\001!\000\000\000\000\000\191\000\178\000\000\000\000\001x\000\000\001w\000\000\001\134\000\000\001\154\000\000\000\000\000\000\003\148\000\000\000\000\003\135\000\000\000\000\003\140\003\139\000\000\003\136\000\000\003\134\000\000\000\000\000\000\003\138\000\000\003\137\000\000\000\000\003\128\000\000\000\000\003\133\003\132\000\000\003\129\000\000\003\127\000\000\000\000\000\000\003\131\000\000\003\130\000\000\003\142\000\000\000\000\003\147\003\146\000\000\003\143\000\000\003\150\000\000\000\000\000\000\000\000\003\152\000\000\000\000\000\000\000\000\003\153\003\151\000\000\003\149\000\000\003\141\000\000\003\158\000\000\000\000\000\000\003\145\000\000\000\000\003\191\000\000\000\000\000\000\000\000\003\157\003\144\000\000\003\193\000\000\000\000\003;\003\192\000}\000\000\001\t\000\000\000\000\000\000\000\000\003\155\000\000\000\000\000\000\000\000\003\156\003\154\000\000\000\000\003\180\000\000\000\000\003\167\000\000\000\000\003\172\003\171\000\000\003\168\000\000\003\166\000\000\000\000\000\000\003\170\000\000\003\169\000\000\000\000\003\160\000\000\000\000\003\165\003\164\000\000\003\161\000\000\003\159\000\000\000\000\000\000\003\163\000\000\003\162\000\000\003\174\000\000\000\000\003\179\003\178\000\000\003\175\000\000\003\182\000\000\000\000\000\000\000\000\003\184\000\000\000\000\000\000\000\000\003\185\003\183\000\000\003\181\000\000\003\173\000\000\003\190\000\000\000\000\000\000\003\177\000\000\000\000\000\000\000\000\003\189\003\176\000\000\000\000\000\000\000\000\003\187\000\000\000\000\000\000\000\000\003\188\003\186\003T\003V\003W\003U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\234\000\246\000\233\000\000\000\000\000r\000\000\000\000\000\000\002\179\000\000\000\000\000\000\002\187\000\000\000\000\002\186\000\000\003\207\002\185\002\184\002\183\002\182\002\181\001t\002\177\000\000\000\000\002\178\000\000\002\180\000\000\000\000\000\000\000\000\000\000\000i\002\142\000\000\000\000\002\145\000\000\000\000\002\148\000\000\000\000\002\143\002\146\000\000\002\144\002\147\002\188\002\176\000j\003\204\003\205\003\203\003\202\003\206\000\000\000\000\000\000\000\000\001\020\001\019\000\000\000\000\000\000\000\000\000\000\000\000\001n\000\000\001\031\001l\000\000\001\018\000\000\002)\000\000\000\000\001q\000\000\000\000\001r\000\000\001\150\000$\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000%\000\000\000&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002(\000\000\000\000\000\000\000\149\000\000\000\000\000\148\002,\001)\000\000\001p\001s\000\000\001m\000\000\001\002\000\000\003%\000\000\000\000\000\254\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\005\000\000\000\000\001\b\000\000\000\000\000\000\000\000\000\000\000\000\001\\\000\000\000\000\000\000\000\251\000\000\000\248\000\000\000\000\000\000\000\000\000\000\001\003\000\000\000\255\000\000\000\000\000\000\000\000\001\000\000\000\000\252\000\000\000\000\000\000\002\205\000\000\000\000\000\000\000\000\002\212\000\000\000\000\002\211\002\210\002\209\002\208\002\207\002\203\000\000\000\000\002\204\000\000\002\206\000\000\000\000\000m\002\156\000\000\000\000\002\159\000\000\000\000\002\162\000\000\000\000\002\157\002\160\000\000\002\158\002\161\002\214\002\202\003\218\003\219\003\217\003\216\000n\000\000\000\000\000^\000\000\000]\000\000\002\213\000\000\001\231\000\\\000B\0019\000d\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000C\000\000\000D\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\221\003\220\000\000\003K\000\000\003J\000\000\000\000\000\000\000\000\003\233\000\000\000\000\000\000\003\234\000\000\000\018\000\000\000\000\000\000\003\229\000\000\001\178\000\000\000\000\000\000\000\237\003A\001\140\001\139\001h\001g\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003O\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\141\001\025\000\000\000\000\002\026\000\000\000\000\000\140\002\030\002\027\001'\001\n\000\000\001\012\001\011\000\000\003M\000\000\003L\003>\000\000\000\000\000\000\000\000\000\000\003G\000\000\000\000\000\000\000\000\003H\003@\000\000\003N\000\000\003B\000\000\000\241\001i\000\000\003Q\000\000\001k\000\000\000\000\003j\000\000\003q\000\243\000\000\000\249\000\000\003k\000\242\000\000\003l\000\000\003s\000\000\000\000\000\000\000\000\001\006\000\000\000\245\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\004\000\000\000\000\001\007\000\000\000\000\000\000\000\000\001[\000\000\000\000\000\000\000\250\000\000\000\247\000\000\000\000\000\000\000\000\000\000\001\001\000\000\000\253\000\239\000\238\000\000\003t\003u\000\000\003v\000\000\003w\000\000\001j\003E\000\000\000\000\001\253\000\000\001\174\001\235\000\000\003?\000\000\000\000\000\000\003D\000\000\000\000\000\000\001O\000\000\001I\000\000\001J\000\000\001T\001H\001S\000\000\003P\001U\000\000\000\244\000\000\000\000\000\000\000\000\001Q\001L\001\250\000\000\001M\000\000\001N\000\000\001\168\001\232\000\000\000\000\000\000\002\004\000\000\002\002\000\000\000\000\002\006\002\000\000\000\002\007\002\001\000\000\003R\002\n\000\000\000\240\000\000\000\000\001\251\000\000\001\170\001\233\000\000\003\230\000\000\003\227\000\000\003\228\000\019\000\020\000\000\000\000\003\t\000\000\003\b\000\000\002J\000\000\003\011\000\000\003\n\000\000\000\000\000\000\002R\000\000\000\000\002V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002Y\000\000\000\000\002\\\000\000\002L\000\000\000\000\002O\000\000\000\000\000\000\002S\000\000\000\000\002W\000\000\000\000\001\252\000\000\000\000\002P\000\000\000\000\002T\003\006\002M\000\000\003\007\000\000\000\000\000\000\000\000\002Z\000\000\002I\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002X\000\000\000\000\002[\000\000\002K\000\000\000\000\002N\000\000\000\000\000\000\002Q\000\000\000\000\002U\000\000\001\172\001\234\000\000\003\012\000\000\000\000\000\000\003\231\000\017\000p\000\000\003\232\000\000\000\000\003!\000\000\000\000\003S\000e\000\000\000\000\000\000\000f\000\000\003I\000\000\001\146\000\000\001\148\003F\000\000\000\000\001~\000\000\001}\000\000\001\135\000\000\001\160\000\000\000\000\000\000\001|\000\000\001{\000\000\001\132\000\000\001\158\000\000\000\000\000\000\001\131\000\000\000\000\000\000\001\128\000\000\001\127\000\000\001\133\000\000\001\162\000\000\000\000\000\000\001\129\000\000\000\000\000\000\001z\000\000\001y\000\000\001\136\000\000\001\156\000\000\000\000\000\000\001\130\000\002\000\000\000R\000S\000\000\000\000\002\230\002\234\002\238\002\226\002\223\000\000\000\000\002\235\002\242\002\227\002\241\002\225\002\240\002\229\002\221\002\228\002\237\002\224\002\231\002\222\002\233\002\239\002\236\002\232\001\196\001\195\000{\000\000\000\000\0037\000\000\000\000\003\027\000\000\000\000\003\029\003\028\002\252\000\000\000\000\003=\002\244\002\243\002\245\000\000\001\210\000Q\001\137\000\003\000\000\000\000\002\217\000\000\002`\000\000\000|\000\000\000\000\0039\000\000\000\000\000\000\000t\000\000\000\000\003)\000\000\002D\002C\001\190\002\253\000\000\001\226\000\000\002\218\000\000\000\000\000v\000\000\000\000\003-\000\000\001\207\000\000\000\000\001\201\000\000\000\000\000\000\001\206\000\000\001\203\000\000\000\000\000\000\001\180\001\179\000\000\000\000\000\000\001\227\000\000\001\199\000\000\001\198\000\000\000q\000\000\000\000\003#\000\000\000\000\001\194\000\000\000\000\000y\000\000\000\000\0033\000\000\000\000\003\004\000\000\003\003\000\000\000\000\000\000\002B\002A\003\001\002h\002\248\003\002\000\000\001\213\000\000\000\000\000\000\001\209\000\000\001\215\000\000\000\000\001\202\000\000\000\000\000\000\002\250\000z\000\000\000\000\0035\000\000\002\249\000\000\001\211\000\000\000\000\001\212\000\000\000\000\001\205\000\000\000\000\000\000\000\000\000\000\000\000\001\228\000\000\001\200\000\000\002\016\000w\000\000\000\000\003/\000\000\000\000\000\000\000\000\003f\003e\000\000\000\000\001`\000s\001_\000\000\000\000\003'\000\000\002<\002;\002>\002\246\002d\002=\000\000\000x\000\000\000\000\0031\000\000\000\000\000\000\000\000\002@\002?\003\000\002\254\002f\002\247\002\255\000\000\001\220\000\000\001\224\000\000\000\000\001\216\000\000\000\000\000\000\001\208\000\000\001\214\000\000\000\000\001\204\000\000\000\000\000\000\000\000\001\193\000\000\000\000\001\223\000\000\001\222\000\000\000\000\000\000\000\000\001\219\000\000\000\000\001\218\000\000\001\217\000\000\000\000\000\000\000\000\001\221\000\000\001\225\000\000\000\000\001\138\000\004\000\000\001\197\000\005\000\000\000\000\001=\000\006\000\000\001\239\001\240\001\238\000\000\001\237\003g\001\186\000\000\000\007\000\000\001\242\001\243\001\241\000\000\000\000\000\000\000\000\001?\000\000\000\000\000\000\000\000\001D\001F\001E\001@\001B\001A\000\000\000\000\000\000\000\000\000\000\003m\003z\000\000\003n\000\000\003o\000\000\000\000\003h\000\000\000\000\000\000\000\000\003y\000\000\000\000\003x\001\247\001\246\000\000\000\000\001\188\001\236\001\244\000\000\000\000\000\000\000\000\000\000\002F\000\000\000\000\000\000\000\000\000\000\002/\002E\000\000\000\000\000\000\000\153\000\000\000\000\000\152\0023\0020\001+\000\235\000\000\000\000\000\000\000\000\001Z\000\000\003}\000\000\003~\000\000\000\000\002\r\002\011\000\000\002\012\000\b\000\000\000\t\000\000\002w\002x\002v\000\000\002u\000\000\000\n\000\000\002z\002{\002y\000\000\002}\000\000\000\000\000\000\002o\000\000\000\000\002q\000\000\002k\000\000\002m\000\000\002r\000\000\002s\000\000\002l\002j\002~\001\192\002t\000\000\002\128\000\000\002\127\000\000\002\129\000\000\003\005\000\011\000\000\000\000\000\000\000\000\000\000\000\000\002\130\000\000\000\000\002\133\000\000\002\132\000\000\002\131\001\r\000\000\000\000\000\000\000\000\001\014\002\134\000\000\000\000\000\000\003\017\000\000\003\016\000\000\000\000\000\000\000\000\003\018\000\000\000\000\001<\000\000\000\000\000\000\000\000\000\000\003\031\000o\000\000\000\000\001\022\000\000\0017\0016\000\000\001v\000\000\003\015\001\184\001\182\000\000\000\000\000\000\000\000\003\019\000\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\014\000\000\000\000\000\000\000\000\000\000\000\000\003\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\026\000\000\000\000\003\025\000\000\003\022\000\000\000\000\000\000\000\000\000\000\003\023\000\000\000\000\000\000\003\024\000\r\000\000\003\020\000\000\003\021")
   
   let error =
-    (184, "\000\000\000\001\128\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\0000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\000\000\000\000\000\000\000\000\000\000\b\001\006\000\000\002\0040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\0000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\252\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\001*\134\128(\b5A\001!\152\017\1284\002!\222\004\128\001\014d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001v\142\000\000\0001\000\001\000\024\017\128\016\002\000\132\000\000\000\002d1\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0012\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001v\142\000\000\0001\000\001\000\024\017\128\016\002\000\132\000\000\000\002d1\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0012\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0012\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\016\144\017\128\016\002\000\132\000\000\000\002d1z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\002\016\000 \000\002\b\b\000@\000\000\000\128\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\001\000\000\000\000\128\000\000\000\000\000\000z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000 \000\000\000\000\000\000\000\000 \000\002 \000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\b\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130z\213x\000\017$ \004\131@\1683\153\000\000\132\128@\b\000A\000\130z\213x\000\017$ \004\131@\1683\153\000\000\132\128@\b\000A\000\130\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130z\213x\000\017$ \004\131@\1683\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\003\019\004\217d\176\000\000P\002\004\000\000n\128Bxw\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\017$ \004\131@\1683\185\000\000\132\128@\b\000A \130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\003\017\004\024\004\176\000\000P\002\000\000\000l\128\002hw\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000l\128\002xw\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\012\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000:\213h\000\016\000 \000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000T\b\000\000\000 \000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0012\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000T\b\000\000\000 \000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0012\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0012\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\016\144\017\128\016\002\000\132\000\000\000\002d1z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\000\000\000\004\000z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\192\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000z\213x\000\016\000 \000\002\000\b\192\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\001\000\000\000\000\128\000\000\000\002 \000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000 \000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\192\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000z\213x\000\016\000 \000\002\000\b\192\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\192\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000:\213h\000\016\000 \000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\001\000\000\000\000\128\000\000\000\000\000\000z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\016\144\017\128\016\002\000\132\000\000\000\002d1z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000z\213x\000\017$ \004\131@\1683\185\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\003\002\004Y$\160\000\000@\000\004\000\000j\128@\016F\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\017$ \004\131@\1683\185\000\000\132\128@\b\000A \130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000h\128\000\016F\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\b\000\000\016\000\000\000\000\002\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\b\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\000\016\006\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\000\016\006\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\000\016\006\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\000\016\006\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\000\016\006\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\000\016\006\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\000\016\006\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\000\016\006\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\000\016\006\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\000\016\006\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\012\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\000\016\006\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\000\016\006\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\000\016\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000z\213x\000\016\000 \000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\017$ \004\131@\1683\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\017$ \004\131@\1683\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000 \000\000\000\000\000\000\000\000 \000\002 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\016\144\017\128\016\002\000\132\000\000\000\002d1z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001z\213x\000\016\000 \000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130z\213x\000\016\000 \000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000T\b\000\000\000 \000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000T\b\000\000\000 \000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\0001\136\000\000$\000!\218\004\128\001\012\000\000z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\001\000\000\000\000\128\000\000\000\000\000\000z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\0001\136\000\000$\000!\218\004\128\001\012\000\000z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000:\213h\000\016\000 \000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000T\b\000\000\000 \000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000T\b\000\000\000 \000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\0001\136\000\000$\000!\218\004\128\001\012\000\000z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\001\000\000\000\000\128\000\000\000\000\000\000z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\0001\136\000\000$\000!\218\004\128\001\012\000\000z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\016\001\164\b\004\003\016\162;\153\b\001\158\160\192\001\024Q\002\130\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\000\016\000 \000\002\000\b\000\006\000\000\000\128\000\000\006\000\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\001$\000\004\0038\1603\153\000\001\132\128@*\000A\004\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\017$ \004\131@\1683\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130z\213x\000\017$ \004\131@\1683\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\003\002\004\025$\160\000\000@\000\004\000\000B\128B\000\006\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\017$ \004\131@\1683\185\000\000\132\128@\b\000A \130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\0038\1603\153\000\001\132\128@*\000A\004\130\000\000\000\000\001$\000\004\0038\1603\153\000\001\132\128@*\000A\000\130\000\000\001 \000\003\019\004\217d\176\000\000P\002\004\000\000n\128BPw\000\000\000\002\001$\000\004\0038\1603\153\000\001\132\128@*\000A\004\130\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\003\003\004\025$\176\000\000@\000\004\000\000f\128B@F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001$\000\004\0030\1603\153\000\001\132\128@\"\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\001$\000\004\0030\1603\153\000\001\132\128@\"\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\000\006\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\000\006\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\000\006\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\000\006\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\000\006\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\000\006\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\000\006\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\000\006\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\000\006\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\000\006\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\000\006\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\000\006\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\000\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\001$\000\004\0038\1603\153\000\001\132\128@*\000A\004\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\0038\1603\153\000\001\132\128@*\000A\004\130\000\000\000\000\001$\000\004\0038\1603\153\000\001\132\128@*\000A\004\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\001$\000\004\0038\1603\153\000\001\132\128@*\000A\004\130\000\000\000\000\001$\000\004\0038\1603\153\000\001\132\128@\"\000A\004\130\000\000\000\000\001$\000\004\0038\1603\153\000\001\132\128@*\000A\004\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\001$\000\004\0038\1603\153\000\001\132\128@*\000A\004\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\017\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\192\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001 \000\000\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\000\000\001\000\001 \000\000\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\192\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000:\213h\000\016\000 \000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\127\245\252\016\017\164(\004\131P\174;\159\b\001\158\160\192\t\030Q\134\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130z\213x\000\017$ \004\131@\1683\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\003\019\004\217d\176\000\000P\002\004\000\000j\128@Pw\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\017$ \004\131@\1683\185\000\000\132\128@\b\000A \130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000h\128\000Pw\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\012\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7z\213x\000\017$ \004\131@\1683\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\001\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\030\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\004\000\000\000\000\000\000\001\002 \000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\003\016\174;\159\b\001\158\160\192\001\026Q\002\130\127\245\252\016\017\164(\004\131P\190;\159\b\001\158\160\192\t\026QB\130\127\245\252\030\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\030\017\164(\004\003\024\190;\159\024\001\158\164\192\001\030Q\198\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\127\245\252\016\017\164(\004\131P\190;\159\b\001\158\160\192\t\026QB\130\127\245\252\016\017\164(\004\131P\174;\159\b\001\158\160\192\t\026Q\006\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\016\001\164\b\004\003\016\162;\153\b\001\158\160\192\001\024Q\002\130\000\000\000\016\001\164\b\004\003\016\162;\153\b\001\158\160\192\001\024Q\002\130\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\001\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\001\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A \130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\016\001\164\b\004\003\016\162;\153\b\001\158\160\192\001\024Q\002\130\000\000\000\016\001\164\b\004\003\016\162;\153\b\001\158\160\192\001\024Q\002\130\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\017$ \004\131@\1683\185\000\000\132\128@\b\000A \130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\016\001\164\b\004\003\016\162;\153\b\001\158\160\192\001\024Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\131P\174;\159\024\001\158\160\192\t\026Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\030\017\164(\004\003\024\190;\159\024\001\158\164\192\001\030Q\198\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\003\024\174;\159\024\001\158\160\192\001\026Q\002\130\000\000\000\000\000\000\000\000\128@\000\000\000\016\000\000\000\000\b\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\003\024\174;\159\024\001\158\160\192\001\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\003\019\004\217d\176\001\000P\002\004\128\000n\128@Pw\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128@\000\000\000\016\000\000\000\000\b\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\131P\174;\159\024\001\158\160\192\t\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\003\024\174;\159\024\001\158\160\192\001\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\017$ \004\131@\1683\185\000\000\132\128@\b\000A \130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001\000\000\017\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\192\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\192\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000:\213h\000\016\000 \000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\131P\174;\159\024\001\158\160\192\t\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128@\000\000\000\016\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\131P\174;\159\024\001\158\160\192\t\026Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001\000\000\017\128\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\016\001\164\b\004\003\016\162;\153\b\001\158\160\192\001\024Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\127\247\254\016\017\1648\004\195P\190;\159\024\003\158\164\192\025\030Q\214\179\000\000\000\016\001\164\b\004\003\016\162;\153\b\001\158\160\192\001\024Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\003\024\190;\159\b\001\158\160\192\001\030Q\198\130\000\000\000\000\000\000\000\000\128@\000\000\000\000\000\000\000\000\b\000\000\000\000\127\245\252\016\017\164(\004\003\024\190;\159\b\001\158\160\192\001\030Q\198\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128@\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\131P\190;\159\b\001\158\160\192\t\030Q\198\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\131P\190;\159\b\001\158\160\192\t\030Q\198\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\127\245\252\016\017\164(\004\003\024\190;\159\b\001\158\160\192\001\026QB\130\000\000\000\000\000\000\000\000\128@\016\000\000\000\000\000\000\000\b\000\000@\000\127\245\252\016\017\164(\004\003\024\190;\159\b\001\158\160\192\001\026QB\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128@\016\000\000\000\000\000\000\000\b\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\131P\190;\159\b\001\158\160\192\t\026QB\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001\000\016\017\128\000\000\000\128\000\000\000\000@\000\000\000\000\000\000\000\016\000\192@\000\000\000\000\002\000\000\000\b\000\000\016\001\127\245\252\016\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\000\192@\000\000\000\000\002\000\000\000\b\000\000\016\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\1648\004\195P\174;\159\b\003\158\160\192\t\026Q\018\131\127\245\252\016\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\1648\004\195P\174;\159\b\003\158\160\192\t\026Q\018\131\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\127\245\252\016\017\164(\004\131P\190;\159\b\001\158\160\192\t\026QB\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128@\000\000\000\016\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\131P\174;\159\024\001\158\160\192\t\026Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000{\245\252\000\017$(\004\003\000\1683\159\000\001\132\128@\000\002Q\002\130\000\000\000\000\001$\001\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000{\245\252\000\017$(\004\003\000\1683\159\000\001\132\128@\000\002Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\017\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\192\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000:\213h\000\016\000 \000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000{\245\252\000\017$(\004\003\000\1683\159\000\001\132\128@\000\002Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\003\003\004\025$\176\001\000@\000\004\128\000b\128@@F\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\017$ \004\131@\1683\185\000\000\132\128@\b\000A \130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001\000\000\017\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\192\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000:\213h\000\016\000 \000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\001\000\001\000\016\017\128\000\000\000\128\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\002\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\001\002\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\127\245\252\016\017\164(\004\131P\174;\159\b\001\158\160\192\t\030Q\134\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\000\016\000 \000\002\000\b\000\006\000\000\000\128\000\000\006\000\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\127\245\252\016\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\001\164\b\004\003\016\162;\153\b\001\158\160\192\001\024Q\002\130\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\000\000\000\016\001\164\b\004\003\016\162;\153\b\001\158\160\192\001\024Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\001\164\b\004\003\016\162;\153\b\001\158\160\192\001\024Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\000\016\000 \000\002\000\b\000\006\000\000\000\128\000\000\002\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\127\245\252\000\016\000 \000\002\000\b\000\006\000\000\000\128\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\000\016\000 \000\002\000\b\000\006\000\000\000\128\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x@8\b$I\002\016\b\000\000$\000!J\020\128\001\140\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\b\000\128(\b\004A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\002\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000 \000\002\000\000\000\000\000\000\000  \000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\"\000\000\000\000\000\000\000  \000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\0008\b$A\002\016\b\000\000$\000!H\020\128\001\140\000\000z\213x\0008\b \001\002\016\b\000\000$\000!H\020\128\001\140\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$a\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\002\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\128\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000 \000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\004\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\0008\b$\001\002\016\b\000\000$\000!H\020\128\001\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\0008\b \001\002\016\b\000\000$\000!H\020\128\001\132\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\002\004\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128(\b$A\000\001\000\000\000\164\000!\218\004\128\001\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128(\b$A\000!\000\000\000\164\000!\218\004\128\001\014\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000\161\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\004\000z\213x\000\016\000 \000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\b\000\128(\b$A\000!\128\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\002\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\000\000\000\000\004\000\000\000\128\000\000\000\000\000\000\002\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\017\000\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128.\b$A\000\005\000\000\000\164\000!\218\004\128\001\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\129(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\002\000\000\000\b\000\129(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\000\000\000\000\004\000\000\000\128\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\128\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128(H$A\000%\000\000\000\164\000!\218\004\128\001\014\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000\161\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\128\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\002\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\004\000\000\000\128\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000 \000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\128\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\002\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006@\000\000\000\004\000\000\000\128\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128.\b$A\000\005\000\000\000\164\000!\218\004\128\001\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\221x\1288\b$A\002\017\b\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\b\000\128(\b\004A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128.H$A\000\005\128\000\000\164\000!\218\004\128\001\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000z\221x\1288\b$A\002\017\136\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x@8\b$I\002\016\b\000\000$\000!J\020\128\001\140\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\2243\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\017\164(\004\131\208\238;\159\b\001\158\164\192\t\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\017\164(\004\131\208\174;\159\b\001\158\164\192\t\026Q\002\179{\247\254\000\016\000 \000\002\000\b\000\000\000\000\000\004\000\000\000\000\000\000{\247\254\000\016\000 \000\002\000\b\000\000\000\000\000\004\000\000\000\000\000\000{\247\254\000\016\000 \000\002\000\b\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\001\"\134\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\001\"\134\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\001\"\134\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\030\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\127\245\252\016\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\179\000\000\000\000\000\000\000\000\128@\000\000\000\000\000\000\000\000\b\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128@\000\000\000\000\000\000\000\000\b\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\131P\174;\159\b\001\158\160\192\t\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\0038\1603\153\000\001\132\128@*\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\030\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\127\245\252\016\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\127\245\252\016\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\030\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\127\245\252\016\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000{\247\254\000\016\000 \000\002\000\b\000\000\000\000\000\132\000\000\000\000\000\000\001\"\134\000\000\000\000\000\001\000\000\017\128\000\000\000\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\192\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000z\213x\000\016\000 \000\002\000\b\192\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\001\000\000\000\000\128\000\000\000\002 \000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000z\213x\000\016\000 \000\002\000\b\192\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\131P\174;\159\b\001\158\160\192\t\026Q\006\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128@\000\000\000\000\000\000\000\000\b\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\131P\174;\159\b\001\158\160\192\t\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\001\000\001\000\000\017\128\000\000\000\132\000\000\000\000\0001\000\000\000\000\000\000\128\128 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\2243\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\017\164(\004\131\208\238;\159\b\001\158\164\192\t\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\017\164(\004\131\208\174;\159\b\001\158\164\192\t\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\017\164(\004\003\024\174;\159\b\001\158\164\192\001\026Q\002\179\000\000\000\000\000\000\000\000\128@\000\000\000\000\000\000\000\000\b\000\000\0001\127\247\254\016\017\164(\004\003\024\174;\159\b\001\158\164\192\001\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\017\164(\004\131P\174;\159\b\001\158\164\192\t\026Q\002\179\127\247\254\016\017\164(\004\003\024\174;\159\b\001\158\164\192\001\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128@\000\000\000\000\000\000\000\000\b\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\017\164(\004\131P\174;\159\b\001\158\164\192\t\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\017\164(\004\131P\174;\159\b\001\158\164\192\t\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\017\164(\004\131P\174;\159\b\001\158\164\192\t\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\001\000\001\000\000\017\128\000\000\000\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\017\164(\004\131P\174;\159\b\001\158\164\192\t\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128@\000\000\000\000\000\000\000\000\b\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\017\164(\004\131P\174;\159\b\001\158\164\192\t\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\001\000\001\000\000\017\128\000\000\000\132\000\000\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000@\000\000\000\000\000\000\000\000@\145.\000`\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000 \000\000\016\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\001\002\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\001\002\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000 \004\000\000\000\000\000\000 \000\001\002\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\128\000\000\000\016\000\000\000\000\000\000\000\001\006\000@\000 \020\000\000\000\000\000\000 \000\001\002\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\016\000\000\000\000\000\000\000\001\006\000@\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\001\014\000`\000\000\016\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\001\006\000`\000\000\016\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\001\006\000@\000\000\016\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\006\000@\002\000\016\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\006\000@\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\006\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\001\014\000`\000\000\016\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\001\006\000`\000\000\016\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\001\006\000@\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\006\000@\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\006\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\001\006\000`\000\000\016\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\001\006\000@\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\006\000@\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\006\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000")
+    (184, "\000\000\000\001\128\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\0000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\000\000\000\000\000\000\000\000\000\000\b\001\006\000\000\002\0040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\0000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\252\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\001*\134\128(\b5A\001!\152\017\1284\002!\222\004\128\001\014d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001v\142\000\000\0001\000\001\000\024\017\128\016\002\000\132\000\000\000\002d1\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0012\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001v\142\000\000\0001\000\001\000\024\017\128\016\002\000\132\000\000\000\002d1\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0012\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0012\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\001\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\001\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\004\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000 \000\002\004\000\000\000\000\000\000\000\000\000\000\000\000\003\017\000\000\128\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\004\000\000\000\000\000\000\000\000\000\000\b\000\001\000\000\000\000\128\000\b\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\004\000\000\000\000\000\000\000\000\000\000\b\000\001\000\000\000\000\128\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\b\000\001\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\004\000\000\000\000\000\000\000\000\000\000\b\000\001\000\000\000\000\128\000\b\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\016\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\b\000\001\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\016\144\017\128\016\002\000\132\000\000\000\002d1z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\002\016\000 \000\002\b\b\000@\000\000\000\128\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\000@\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\001\000\000\000\000\128\000\000\000\000\000\000z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000 \000\000\000\000\000\000\000\000 \000\002 \000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\b\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130z\213x\000\017$ \004\131@\1683\153\000\000\132\128@\b\000A\000\130z\213x\000\017$ \004\131@\1683\153\000\000\132\128@\b\000A\000\130\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130z\213x\000\017$ \004\131@\1683\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\003\019\004\217d\176\000\000P\002\004\000\000n\128Bxw\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\017$ \004\131H\1683\185\000\000\132\128@\b\000A \130z\213x\000\017$ \004\131@\1683\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\024\004\176\000\000P\002\000\000\000l\128\000hw\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000l\128\002xw\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\012\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000L\128\002x7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000z\213x\000\016\000 \000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000:\213h\000\016\000 \000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000T\b\000\000\000 \000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0012\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000T\b\000\000\000 \000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0012\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0012\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\001\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\016\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\b\000\001\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\016\144\017\128\016\002\000\132\000\000\000\002d1z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\000\000\000\004\000z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\b\b\192\000\000\000\000\000\000\b\000\000 \000z\213x\000\016\000 \000\002\b\b\192\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000z\213x\000\016\000 \000\002\b\b\192\000\000\000\000\000\000\000\000\000 \000z\213x\000\016\000 \000\002\b\b\192\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000z\213x\000\016\000 \000\002\b\b\192\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\001\000\000\000\000\128\000\000\000\002 \000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000 \000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\b\b\192\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\b\b\192\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000z\213x\000\016\000 \000\002\b\b\192\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000:\213h\000\016\000 \000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\001\000\000\000\000\128\000\000\000\000\000\000z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\016\144\017\128\016\002\000\132\000\000\000\002d1z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\017$ \004\131H\1683\185\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\003\002\004Y$\160\000\000@\000\004\000\000j\128B0F\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\017$ \004\131H\1683\185\000\000\132\128@\b\000A \130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000z\213x\000\017$ \004\131H\1683\185\000\000\132\128@\000\000A \130z\213x\000\017$ \004\131H\1683\185\000\000\132\128@\b\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000h\128\0020F\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\0020\006\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\0020\006\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\0020\006\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\0020\006\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\0020\006\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\0020\006\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\0020\006\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\0020\006\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\0020\006\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\0020\006\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\012\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\0020\006\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\0020\006\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\001 \000\003\000\004X\004\160\000\000@\000\000\000\000H\128\0020\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000z\213x\000\017$ \004\131H\1683\185\000\000\132\128@\b\000A \130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000z\213x\000\017$ \004\131H\1683\185\000\000\132\128@\b\000A \130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\b\000\000\016\000\000\000\000\002\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\b\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\017$ \004\131@\1683\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\017$ \004\131@\1683\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000 \000\000\000\000\000\000\000\000 \000\002 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\017\000\001\016\144\017\128\016\002\000\132\000\000\000\002d1z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\001\"\134\000\000\000\017\000\001\000\144\017\128\016\002\000\132\000\000\000\002d1\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001z\213x\000\016\000 \000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130z\213x\000\016\000 \000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000T\b\000\000\000 \000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000T\b\000\000\000 \000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\001\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\0001\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\b\000\001\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\0001\136\000\000$\000!\218\004\128\001\012\000\000z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\001\000\000\000\000\128\000\000\000\000\000\000z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\0001\136\000\000$\000!\218\004\128\001\012\000\000z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000:\213h\000\016\000 \000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000T\b\000\000\000 \000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000T\b\000\000\000 \000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\001\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\0001\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\b\000\001\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\0001\136\000\000$\000!\218\004\128\001\012\000\000z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\001\000\000\000\000\128\000\000\000\000\000\000z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\0001\136\000\000$\000!\218\004\128\001\012\000\000z\213x\000\016\000 \000\002\b\b\000@\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\b\000\128(\b$A\000!\136\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\016\001\164\b\004\003\016\162;\153\b\001\158\160\192\001\024Q\002\130\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\000\016\000 \000\002\000\b\000\006\000\000\000\128\000\000\006\000\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\001$\000\004\0038\1603\153\000\001\132\128@*\000A\004\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\017$ \004\131@\1683\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130z\213x\000\017$ \004\131@\1683\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\003\002\004\025$\160\000\000@\000\004\000\000B\128B\004\006\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\017$ \004\131H\1683\185\000\000\132\128@\b\000A \130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\0038\1603\153\000\001\132\128@*\000A\004\130\000\000\000\000\001$\000\004\0038\1603\153\000\001\132\128@*\000A\000\130\000\000\001 \000\003\019\004\217d\176\000\000P\002\004\000\000n\128BTw\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\004\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\003\003\004\025$\176\000\000@\000\004\000\000f\128BDF\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001$\000\004\0030\1603\153\000\001\132\128@\"\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\001$\000\004\0030\1603\153\000\001\132\128@\"\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\004\006\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\004\006\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\004\006\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\004\006\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\004\006\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\004\006\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\004\006\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\004\006\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\004\006\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\004\006\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\004\006\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\004\006\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001\000\000\003\000\004\024\004\160\000\000@\000\000\000\000@\128\002\004\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\004\000\000\000\000\000\001$\000\004\0038\1603\153\000\001\132\128@*\000A\004\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\004\000\000\000\000\000\001$\000\004\0038\1603\153\000\001\132\128@\"\000A\004\130\000\000\000\000\001$\000\004\0038\1603\153\000\001\132\128@*\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\004\000\000\000\000\000\001$\000\004\0038\1603\153\000\001\132\128@*\000A\004\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\017\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\b\b\192\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001 \000\000\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\000\000\001\000\001 \000\000\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\b\b\192\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000:\213h\000\016\000 \000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\127\245\252\016\017\164(\004\131P\174;\159\b\001\158\160\192\t\030Q\134\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130z\213x\000\017$ \004\131@\1683\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\003\019\004\217d\176\000\000P\002\004\000\000j\128@Pw\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\017$ \004\131H\1683\185\000\000\132\128@\b\000A \130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000h\128\000Pw\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\012\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7\000\000\000\000\001$\000\004\003\000\1603\153\000\001\132\128@\000\000A\000\130\000\000\001 \000\003\017\004\216D\176\000\000P\002\000\000\000H\128\000P7z\213x\000\017$ \004\131@\1683\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\001\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\030\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\004\000\000\000\000\000\000\001\002 \000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\003\016\174;\159\b\001\158\160\192\001\026Q\002\130\127\245\252\016\017\164(\004\131P\190;\159\b\001\158\160\192\t\026QB\130\127\245\252\030\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\030\017\164(\004\003\024\190;\159\024\001\158\164\192\001\030Q\198\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\127\245\252\016\017\164(\004\131P\190;\159\b\001\158\160\192\t\026QB\130\127\245\252\016\017\164(\004\131P\174;\159\b\001\158\160\192\t\026Q\006\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\016\001\164\b\004\003\016\162;\153\b\001\158\160\192\001\024Q\002\130\000\000\000\016\001\164\b\004\003\016\162;\153\b\001\158\160\192\001\024Q\002\130\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\001\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\001\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A \130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\016\001\164\b\004\003\016\162;\153\b\001\158\160\192\001\024Q\002\130\000\000\000\016\001\164\b\004\003\016\162;\153\b\001\158\160\192\001\024Q\002\130\000\000\000\000\000\000\000\000\000\b\000\001\000\000\000\000\128\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\b\000\001\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000\000\000\000\000\000\000\000\000\000\b\000\001\000\000\000\000\128\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\b\000\001\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000\000\000\000\000\000\000\000\000\000\b\000\001\000\000\000\000\128\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000\000\000\000\000\000\000\000\000\000\b\000\001\000\000\000\000\128\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\017$ \004\131H\1683\185\000\000\132\128@\b\000A \130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\016\001\164\b\004\003\016\162;\153\b\001\158\160\192\001\024Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\131P\174;\159\024\001\158\160\192\t\026Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\030\017\164(\004\003\024\190;\159\024\001\158\164\192\001\030Q\198\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\003\024\174;\159\024\001\158\160\192\001\026Q\002\130\000\000\000\000\000\000\000\000\128@\000\000\000\016\000\000\000\000\b\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\003\024\174;\159\024\001\158\160\192\001\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\003\019\004\217d\176\001\000P\002\004\128\000n\128@Pw\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128@\000\000\000\016\000\000\000\000\b\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\131P\174;\159\024\001\158\160\192\t\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\003\024\174;\159\024\001\158\160\192\001\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\017$ \004\131H\1683\185\000\000\132\128@\b\000A \130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001\000\000\017\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\b\b\192\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\b\b\192\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000:\213h\000\016\000 \000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\131P\174;\159\024\001\158\160\192\t\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128@\000\000\000\016\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\131P\174;\159\024\001\158\160\192\t\026Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001\000\000\017\128\016\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\016\001\164\b\004\003\016\162;\153\b\001\158\160\192\001\024Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\127\247\254\016\017\1648\004\195P\190;\159\024\003\158\164\192\025\030Q\214\179\000\000\000\016\001\164\b\004\003\016\162;\153\b\001\158\160\192\001\024Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\003\024\190;\159\b\001\158\160\192\001\030Q\198\130\000\000\000\000\000\000\000\000\128@\000\000\000\000\000\000\000\000\b\000\000\000\000\127\245\252\016\017\164(\004\003\024\190;\159\b\001\158\160\192\001\030Q\198\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128@\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\131P\190;\159\b\001\158\160\192\t\030Q\198\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\131P\190;\159\b\001\158\160\192\t\030Q\198\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\127\245\252\016\017\164(\004\003\024\190;\159\b\001\158\160\192\001\026QB\130\000\000\000\000\000\000\000\000\128@\016\000\000\000\000\000\000\000\b\000\000@\000\127\245\252\016\017\164(\004\003\024\190;\159\b\001\158\160\192\001\026QB\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128@\016\000\000\000\000\000\000\000\b\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\131P\190;\159\b\001\158\160\192\t\026QB\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001\000\016\017\128\000\000\000\128\000\000\000\000@\000\000\000\000\000\000\000\016\000\192@\000\000\000\000\002\000\000\000\b\000\000\016\001\127\245\252\016\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\000\192@\000\000\000\000\002\000\000\000\b\000\000\016\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\1648\004\195P\174;\159\b\003\158\160\192\t\026Q\018\131\127\245\252\016\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\1648\004\195P\174;\159\b\003\158\160\192\t\026Q\018\131\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\127\245\252\016\017\164(\004\131P\190;\159\b\001\158\160\192\t\026QB\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128@\000\000\000\016\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\131P\174;\159\024\001\158\160\192\t\026Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000{\245\252\000\017$(\004\003\000\1683\159\000\001\132\128@\000\002Q\002\130\000\000\000\000\001$\001\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000{\245\252\000\017$(\004\003\000\1683\159\000\001\132\128@\000\002Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\017\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\b\b\192\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000:\213h\000\016\000 \000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000{\245\252\000\017$(\004\003\000\1683\159\000\001\132\128@\000\002Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\003\003\004\025$\176\001\000@\000\004\128\000b\128@@F\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\017$ \004\131H\1683\185\000\000\132\128@\b\000A \130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001\000\000\017\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\b\b\192\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000:\213h\000\016\000 \000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131P\1607\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\016\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\001\000\001\000\016\017\128\000\000\000\128\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\002\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\001\002\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\127\245\252\016\017\164(\004\131P\174;\159\b\001\158\160\192\t\030Q\134\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\000\016\000 \000\002\000\b\000\006\000\000\000\128\000\000\006\000\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\127\245\252\016\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\001\164\b\004\003\016\162;\153\b\001\158\160\192\001\024Q\002\130\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\000\000\000\016\001\164\b\004\003\016\162;\153\b\001\158\160\192\001\024Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\001\164\b\004\003\016\162;\153\b\001\158\160\192\001\024Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\000\016\000 \000\002\000\b\000\006\000\000\000\128\000\000\002\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\127\245\252\000\016\000 \000\002\000\b\000\006\000\000\000\128\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\000\016\000 \000\002\000\b\000\006\000\000\000\128\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x@8\b$I\002\016\b\000\000$\000!J\020\128\001\140\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\b\000\128(\b\004A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\002\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000 \000\002\000\000\000\000\000\000\000  \000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\"\000\000\000\000\000\000\000  \000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\0008\b$A\002\016\b\000\000$\000!H\020\128\001\140\000\000z\213x\0008\b \001\002\016\b\000\000$\000!H\020\128\001\140\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$a\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\002\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\128\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000 \000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\004\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\0008\b$\001\002\016\b\000\000$\000!H\020\128\001\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\0008\b \001\002\016\b\000\000$\000!H\020\128\001\132\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\002\004\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128(\b$A\000\001\000\000\000\164\000!\218\004\128\001\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128(\b$A\000!\000\000\000\164\000!\218\004\128\001\014\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000\161\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\004\000z\213x\000\016\000 \000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\b\000\128(\b$A\000!\128\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\002\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\000\000\000\000\004\000\000\000\128\000\000\000\000\000\000\002\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\017\000\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128.\b$A\000\005\000\000\000\164\000!\218\004\128\001\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\129(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\002\000\000\000\b\000\129(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\000\000\000\000\004\000\000\000\128\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\128\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128(H$A\000%\000\000\000\164\000!\218\004\128\001\014\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000\161\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\128\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\002\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\004\000\000\000\128\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000 \000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\128\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\002\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006@\000\000\000\004\000\000\000\128\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128.\b$A\000\005\000\000\000\164\000!\218\004\128\001\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\221x\1288\b$A\002\017\b\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\b\000\128(\b\004A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128.H$A\000\005\128\000\000\164\000!\218\004\128\001\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000z\221x\1288\b$A\002\017\136\000\000$\000!\218\004\128\001\012\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\128(\b$A\000!\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\128(\b$A\000\001\000\000\000$\000!\218\004\128\001\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x@8\b$I\002\016\b\000\000$\000!J\020\128\001\140\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\2243\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\017\164(\004\131\208\238;\159\b\001\158\164\192\t\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\017\164(\004\131\208\174;\159\b\001\158\164\192\t\026Q\002\179{\247\254\000\016\000 \000\002\000\b\000\000\000\000\000\004\000\000\000\000\000\000{\247\254\000\016\000 \000\002\000\b\000\000\000\000\000\004\000\000\000\000\000\000{\247\254\000\016\000 \000\002\000\b\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\001\"\134\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\001\"\134\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\001\"\134\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\030\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\127\245\252\016\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\179\000\000\000\000\000\000\000\000\128@\000\000\000\000\000\000\000\000\b\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128@\000\000\000\000\000\000\000\000\b\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\131P\174;\159\b\001\158\160\192\t\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\0038\1603\153\000\001\132\128@*\000A\004\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\030\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\127\245\252\016\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\127\245\252\016\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\030\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\127\245\252\016\017\164(\004\003\024\174;\159\b\001\158\160\192\001\026Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000{\247\254\000\016\000 \000\002\000\b\000\000\000\000\000\132\000\000\000\000\000\000\001\"\134\000\000\000\000\000\001\000\000\017\128\000\000\000\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000\016\000 \000\002\b\b\192\000\000\000\000\000\000\b\000\000 \000z\213x\000\016\000 \000\002\b\b\192\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000z\213x\000\016\000 \000\002\b\b\192\000\000\000\000\000\000\000\000\000 \000z\213x\000\016\000 \000\002\b\b\192\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000z\213x\000\016\000 \000\002\b\b\192\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\001\000\000\000\000\128\000\000\000\002 \000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002 \000z\213x\000\016\000 \000\002\b\b\192\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\131P\174;\159\b\001\158\160\192\t\026Q\006\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128@\000\000\000\000\000\000\000\000\b\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016\017\164(\004\131P\174;\159\b\001\158\160\192\t\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\001\000\001\000\000\017\128\000\000\000\132\000\000\000\000\0001\000\000\000\000\000\000\128\128 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\2243\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\004\131@\1603\153\000\000\132\128@\b\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\017\164(\004\131\208\238;\159\b\001\158\164\192\t\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\017\164(\004\131\208\174;\159\b\001\158\164\192\t\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\017\164(\004\003\024\174;\159\b\001\158\164\192\001\026Q\002\179\000\000\000\000\000\000\000\000\128@\000\000\000\000\000\000\000\000\b\000\000\0001\127\247\254\016\017\164(\004\003\024\174;\159\b\001\158\164\192\001\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\017\164(\004\131P\174;\159\b\001\158\164\192\t\026Q\002\179\127\247\254\016\017\164(\004\003\024\174;\159\b\001\158\164\192\001\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128@\000\000\000\000\000\000\000\000\b\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\017\164(\004\131P\174;\159\b\001\158\164\192\t\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\017\164(\004\131P\174;\159\b\001\158\164\192\t\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\017\164(\004\131P\174;\159\b\001\158\164\192\t\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\001\000\001\000\000\017\128\000\000\000\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\017\164(\004\131P\174;\159\b\001\158\164\192\t\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128@\000\000\000\000\000\000\000\000\b\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\247\254\016\017\164(\004\131P\174;\159\b\001\158\164\192\t\026Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\001\000\001\000\000\017\128\000\000\000\132\000\000\000\000\0001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000@\000\000\000\000\000\000\000\000@\145.\000`\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000 \000\000\016\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\001\002\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\001\002\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000 \004\000\000\000\000\000\000 \000\001\002\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\128\000\000\000\016\000\000\000\000\000\000\000\001\006\000@\000 \020\000\000\000\000\000\000 \000\001\002\000\000\000\000\000\000\000\001\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\016\000\000\000\000\000\000\000\001\006\000@\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\001\014\000`\000\000\016\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\001\006\000`\000\000\016\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\001\006\000@\000\000\016\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\006\000@\002\000\016\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\006\000@\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\006\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\001\014\000`\000\000\016\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\001\006\000`\000\000\016\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\001\006\000@\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\006\000@\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\006\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\001\006\000`\000\000\016\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\001\006\000@\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\006\000@\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\006\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000")
   
   let action =
-    ((16, "\000\240\000\193\000\000\000\000\n\228\000\193\000\000\000\000\000'\000\000\000\000\000\000\001)\000\000\000\000\000\000\000\240\000\000\000u\027<\000\000\019x\019x\000\000\000\000/\002\019x\000\000@\218\019x\000\000\000\000\019x\000\000\019x\000\000\000\179\000g\019x\000\000\019x\000\000\000\000\000\000/\204\019x\000\000A,\019x\000\000\000\000\019x\000\000\019x\000\000\000u\000\005\019x\000\000\019x\000\000\019x\000\000A`\019x\000\000\000\000\019x\000\000\019x\000\000\000y\000\000\000\000\019x\000\000\019x\000\000\000\000\019x\000\000\019x\000\000\000\130\000\240\019x\000\000\027<@\218L\232\000\000\000\000L>\001\1840\220\001@L\232\000\000\001\004\019x\000\000L\232\000\000\000y\000x0\194\000\000\000\000>\174\000\000BH\000\000B\1600\1940\194\020\230\020\230BH\020\230\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000?,0\194\000\000\000\000?,\000\000?,\000\0000\194\000\000\000\000\000\000\025$\000y\000\000\020\230\000\000-\0220\194\031J0\194\000\000\000\000\000\000\000\000\000\000\000\000 \1500\194!\1700\194\"\0120\194# 0\194\000\0000\194\000\0000\194#\1300\194$\1500\194$\2480\194&\0120\194&n0\194'\1300\194\001J0\194\000\000\000\000\000\000\000\000\000\0000\194'\2280\194(\2480\194)Z0\194\000\000\000\0000\194\000\000\000\000\002\n\000\000\000\000\000\000\000\000\018\182\019x\000\000\001\002\019x\000\000C\\\019x\000\000\000\000\019x\000\000\019x\000\000\002\160\002\240\019x\000\000\019x\000\000\001\244\019x\000\000Ch\019x\000\000\000\000\019x\000\000\019x\000\000\003\148\004\n\019x\000\000\019x\000\000\019x\000\000Cx\019x\000\000\000\000\019x\000\000\019x\000\000\000y\019x\000\000\019x\000\000\019x\000\000\019x\000\000\003\242\004V\019x\000\000A,L\232\004\002\019x\000\000N\182M0\000\000\002\186\005J\000y\004\166\005rN\182\000\000\000\000\000\199\028\014\000\000\000\000\000\000\000\000\001`\005v\000\\\005\252N\182\001<\029|\000\000\000\000\005B\000\000\005v\006JN\182\005\166\000\000\000\000\000\000\000\199\000\000\005\172\006\160\000\000\006\162\000\000\018\182\001JL\232\005\198\019x\000\000A`L\232\006\002\019x\000\000\000\000\000y\006\250\000\000\000\000\000\000\001\130\020\230\000\0000\194\006\024\000\000\000\000\000y\000\000\000\000\000\000\000\000\000\000\006\"\000\000\000\000\006(\000\000\0062BH\000\000\000\000\000\000\000\000\000\000\000\000D\1340\194\000\000D\134\000\000D\134BH\000\000\000\000E\028\000y\000\000\020\230\0066\000\0000\194\006:\000\000\000\000\000y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\2140\194\000\0000\194\000\000\000\000\006@\000\000\000\000?\170\007\0000\194\006\202\000\000\000\000BH\000\000\000\000\000\000\000\000\000\000\000\0004JBH5\190BH72BH8\166BH\000\000BH\000\000BHOFBHPNBHP^BHP\198BHQrBHQ\1780\194\006\130BH\000\000BHQ\242BHR2BHRr\006\\\000\000\006j\000\000\000\0210\194\000\000\000\021\000\000\000\000\000\017\027<\000\000\000\017\000\000\000\000\006j0\194\000\000\006t\000\000\020\230\006~\000\000\000\000\007R\000\000\020\230\006\130\000\000\000\000\006\134\000\000\000\000\000x\000\000\007x\000\000C\\L\232\006\142\019x\000\000\000\000\007 \000\000\006\158\019x\000\000\000\000\000\\\027<\000\000\027<\000\000\006\144\000\000\000\\\000\000\017&\028V\019N\000\000\003\154\019N\000\000\019N\019N\000\000\000\000\019N\000\000\019N\000\000\006\212\007\002\019N\000\000\019N\000\000\006\186\019N\000\000\019t\019N\000\000\000\000\019N\000\000\019N\000\000\006\216\007\006\019N\000\000\019N\000\000\019N\000\000\019x\019N\000\000\000\000\019N\000\000\019N\000\000\000y\019N\000\000\019N\000\000\019N\000\000\019N\000\000\006\220\007\n\019N\000\000\027<\006\186\000\000\019bL\232\006\182\019N\000\000\000\000\0002\000\000\000r\0002\000\000\000\000\000\000\007\168\000\000\004&L\232\006\190\019N\000\000\019xL\232\006\200\019N\000\000\000\000!L\019N\000\000\006\240\019N\000\000<r\019N\000\000\000\000\019N\000\000\019N\000\000\006\250\007,\019N\000\000\019N\000\000\b(\019N\000\000<\134\019N\000\000\000\000\019N\000\000\019N\000\000\007\004\0072\019N\000\000\019N\000\000\019N\000\000<\190\019N\000\000\000\000\019N\000\000\019N\000\000\000y\019N\000\000\019N\000\000\019N\000\000\019N\000\000\007\012\007@\019N\000\000<\134L\232\006\234\019N\000\000\000\000\004:L\232\006\236\019N\000\000<\190L\232\006\240\019N\000\000\000\000\000\000\000\000\000\000\000\000\007\2000\194\007\004\022\234\007\2140\194\007\024\007\2180\220\000\000\000\000\000\000\028\014\000y\000\000\001J0\194*\200\000\000Ej0\194\007&\000\000\020\230\007&\000\000\007(\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000F\0180\194\000\000F\018\000\000F\018F\156\020\230\007.F\156\000\000\000\000O\006\000y\000\000\020\230\0072\000\0000\194\0076\000\000\000\000\000y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\194\000\1730\194\007R\000\000\000\000+R*\200\027f*>\b\0200\194\000\000\007\232\000\000\000\000\000y\000\000\026P\007\156*\200\000\000\007\152*\200\000\000\000\190\000\000\000\000\021dF\1560\"F\156;\004F\156;\222F\156\000\000F\156\000\000F\156C\244F\156J\208F\156N\178F\156R\242F\156S`F\156S\132F\156S\148F\156T\024F\156T|\000\000\007x+\220\000\000,f,f\007z,f-d,f\000\000\007~,f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007r\000\000\000\000\007t\000\000\bd\000\000\000y\000\000\001J\bf\000\000\000\246\b6\000y\007\134\bPN\182\007\154\002<\000\0000\194\b\130\000\000\006.\007\218\bdN\182\007\160\b\142\000\000\002\0240\194\b\148\000\000\b\150\000\000\018\182\000y\004@0\194\b\152\000\000\b\154\000\000\000y\004H0\194\b\156\000\000\b\162\000\000\002\166\007\236\007$\000\000F\244G~\020\230\007\196\000\000\007\198G~\000\000\000\000\000\000\000\000\000\000\000\000G\2140\194\000\000G\214\000\000G\214G~\000\000\000\000\028\212\000y\000\000\020\230\007\200\000\0000\194\007\210\000\000\000\000\000y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000.d0\194\000\0000\194\000\000\007\218\000\000\000\021\000\000\000\000\000\000\000\000\000\0001\194G~2\"G~36G~3\150G~\000\000G~\000\000G~4\170G~5\nG~6\030G~6~G~7\146G~7\2420\194\b\004G~\000\000G~9\006G~9fG~:z\020\230\007\220\000\000\000\000=Z\000\000\b\210\000\000\001l\b\1680\194\bn\000\000\b\1780\194\b~\000\000\002\156\000\000\007$\007$\001l\000\000\001l\000\000\017&\007$\007$\000\000\000\000\000\000\000\000\000\000\000\000\b\2000\194\b\014\022\234\023\194\000y\b\246\000\000\b\216=\216\b\250=\216\b\254=Z\b\026\022\234\022\234\000y\002\228\001J\000\000\000\000\000\000\002\228\000\000\0030\000y\000\000\000\000\b\028\000\000\000\000\000\000\t\004\000\000\t\006\000\000\000\000\t@\b\2340\194\b&\t\014\000\000\b\246\020\230\b2\022\234\000\000\000\000\bf\000\000\000\021\000\000\005\182\000\000\000\000\001l\000\000\b\190\000\000\012\220\003\028\000\000\012\220\000\000\000\000\026P\000\000\003\028\000\000\000\000\n\000\000\000\012\220\000\000\t\012\020\230\bH\t2\000\000\0002\000\000\t\b\000y\bX\t N\182\b\\\004\b\000\0000\194\tD\000\000\t*N\182\bh\tP\000\000\005\0260\194\tT\000\000\tV\000\000\018\182\000y\005\1440\194\tX\000\000\t^\000\000\000\000\000\000\n\000\000\000\000\000\003\028\000\000\007$\000\000\001\194\000\000\000\000\002l\023\194\000\000\002l\000\000\000\000\b~\000\000\000\021\000\003\022\234\000\000\004H\000Q\004H\000\000\002\030\000\000\007$\000\000\007$\000\000\000\000\000\000\bx\000\000\000\000\b\132\000\000\002\134\005\182\002\208\004H\000\000\000\000\000\000\007\188\000\000\007$\000\000\002\134\000\000\000\000\005\148\000Q\017&\000\000\002\030\000\000\b\146\017&\000\000\000\000\b\146\000\000\000\000\b\132\000\000\000\000\b\138\000\000\003@\007$\000\000\003@\000\000\000\000\t\b\000\000\003\028\000\000\007$\000\000\000\000\000\000\018\136>V\000\000\tt\000\000\018\136\000\000\tv\000\000\tx\000\000\028\014\000y\004\170\000\0000\194\t|\000\000\003\006\tL\000y\b\156\tfN\182\b\162\004\252\000\0000\194\t\140\000\000\005\000\000\0000\194\t\142\000\000\018\182\000y\005\014\000\0000\194\t\174\000\000\004&\018\136\000\000\026P\005v\000\0000\194\t\190\000\000\000\000\000\000\000\250\000\000\t\160\020\230\b\220\t\196\000\000\004t\000\000\t\148\000y\b\228\t\172N\182\b\232\005\154\000\0000\194\t\208\000\000\006l\000\0000\194\t\212\000\000\018\182\000y\006\144\000\0000\194\t\214\000\000\004&\000\000\000\000\b\250\000\000\000\250\005\234\t|\000\000\000\000\000\000\t\128\000\000\005\028\002\156\000\000\017&\t\214\000\000\000\0000\194\t2\007$\000\000\t\004\000\000\002\166\000\0000\220\000\000\000\000\004B\017&\000\000\017&\000\000\b\242\000\000\004B\000\0000\194\004D0\194\000\0000\194\000\000\b\244\000\000\004D\000\0000\194\004D\b\248\000\000\022\234\004\190\022\234\000\000\022\234\000\000\b\252\000\000\004\190\000\0000\194\004D\b\254\000\0000\220\005\2340\220\000\0000\220\000\000\t\000\000\000\005\234\000\0000\194\004D\t\002\000\000\000\000\025$\000\000\000\000\tt:\250\000\000\000\000\000\000\000\000\000\000\tH\004H\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\206:\250\000\000\000v\000~\000\000\tJ\000\193\000\000\000\000\000\000\002\176\000~\000\000\000\000\000\000\000\000\t\168\000\000\000\000\000\000\000\000\028\212\030B\000\000Hp\000\000:\250\000\000\001~:\250\000\000\003H\004`\004`\000\000\000\146\004`\000\000\t\"\000\000\000\000\000\000\000\000\t\174\000\000\030\192\000\000 @:\250\000\000\000}:\250\000\000\t\178\000\000:\250\t\180\000\000I\216;\192\t\182\000\000\t\184\000\000J\138@^:\250\000\000\000\000\t8:\250\t\200\000\000\t\202\000\000\t\204\000\000\027<\000\000\004\204\027<\000\000\tD\019N\000\000\002\022:\250\000\000\002\206:\250\000\000\000\020\nN\000\000\nR\000\000:\250:\250\tT\000\000\000\000\000\000\000\000\000\000\000\000\t\224\000\000J\226:\250\t\226\000\000\t\234\000\000:\250\t\242\000\000:\250\t\152\000\193\000\000\000\000\004\026:\250\000\000\000\020\000\000\n\000\000\000:\250\n\002\000\000:\250\n\004\000\000H\200;\192:\250\t\130:\250\n\012\000\000\n\014\000\000Iz\000\000\000\000\005\200:\250\000\000\005\148\006\012\004`\t\134\000\000\000\000\001\212\001\212\000\000\000\000\000\000\004\222\001\212\000\000\t\136\000\000\000\000\000\000\000\000\000\000\000\000:\250\000\000\006\024:\250\000\000\000\003\004(\000\193\t\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\022\000\000\n\024\000\000:\250\n\026\000\000K\148:\250\n\028\000\000\n\"\000\000:\250\n$\000\000\022H\t\210Ml\019b\000\000:\250\n2\000\000\n6\000\000\n\006\022H:\250\n:\000\000:\250\n<\000\000\n>\000\000:\250\t\188:\250\nF\000\000\nH\000\000\000\193\t\180\000\000\000\000\025$\000\000\000\000\002\142\n\166\000\000\000\000\000\216\000\000\000\000\000\0000\194\000\000\000\000\000\000\002\218\000\000\002\198\000\000\000\000\000\000\004H0\2200\2200\220\000\000\000\246\000\246\000\246\000\246\000\000\000\000\000\000\000\000\000\000\000\000\001l\017&\n\156\014J\001R\000\000\000\000\002\166\000\000\n\000\000\000*\200\t\198\000\000\001l\017&\t\208\015\184\000\000\001l\014J\000\000\000\000\000\0000\220\000\246\000\000\000\000\000\000\n \001\212\n\158N\224\000\000\004\232P:\000\000\000\000\000\000\004&\n\144\000y\000\000\004\232\000\000\006\nN\224\000\000\000\000\t\222\n\158\007$\t\224\000\000\002\166\000\000\n\000\000\000/n\003\174\000\000\000\000\n\144\000\000\000\000\002\142\000\000\004\138\000\000\000\000\000\0000\194\000\000\002\218\000\000\004\174\000\000\000\000\000\000\005\182\000\000\011n\002\192\011n\000\000\007$\011n\000\000\0048\000\000\007$\000\000\007$\000\000\007$\000\000\t\138\000\000\000\000\000\000\000\000\000\000\007$\000\000\0048\000\000\007$\000\000S\022\000\000\000\000\006\142\n\022\000\193\000\200\n\186\004@\000\000\004@\n\228\000\000\n\230\000\000\n\232\000\000\000\000\005\162\004@\007\206\004@\000\000\000\000\002\b\000\200\t\234\000\000\t\236\000\000\n*\000\193\000\200\t\240\000\000\000\192\n\244\000\000\004\218\006R\011\006\005l\011\006\000\000\000\000\003l\000\193\000\000\000\227\000\000\000\000\001\242\000\000\t\248\000\000\000\000\000\000\n8\000\193\000\200\n\002\000\000\000\000\000\192\004\218\006R\003l\000\227\001\242\n\004\000\000\004\218\006R\003l\000\227\001\242\n \000\000\004\012\003\250\nP\000\193\nJ\006\150\000\t\nt\000\193\000\000\nv\000\193\000\000\n\214\000\000\n\\\006\130\nV\006\150\n\220\000\000\nZ\006\150\n\224\000\000\000\000\006\150\000\000\n\226\000\000"), (16, "\012E\012E\012E\012E\012E\012E\012E\012E\012E\012E\012E\007\237\012E\012E\012E\012E\012E\012E\012E\012E\012E\012E\028n\000&\015\026\007\237\012E\028\254\004\145\028r\0007\000;\000\n\015N\012E\001\"\0236\023>\012E\012E\024\030\012E\011\233\000*\012E\016V\029\n\0236\023>\012E\012E\012E\000N\007\202\020\150\020\190\020\206\020\246\021\006\021.\012E\000\150\011\142\012E\012E\006\157\004\145\004j\000\n\012E\012E\006\029\012E\006\242\012E\007\n\024\134\000\154\007\237\012E\016\202\012E\012E\012E\012E\012E\011\154\023F\015\202\012E\012E\012E\000\226\012E\012E\012E\016\206\007\170\012E\012E\012E\012E\012E\b\205\022\146\021\214\012E\012E\016f\b\230\004\t\011\233\012!\021\218\b\213\006\005\001\234\012E\012E\012E\r\026\001\246\012E\012E\012E\012E\000\230\012E\004\157\012E\nf\007\237\012E\nj\001\166\012E\012E\025\214\003F\nn\003N\001\"\003^\007\237\nr\025\218\017\158\012E\006&\003f\012E\000\006\000\"\000\n\012E\012E\012E\012E\021\230\006u\012E\006m\012E\011%\007\178\b\205\012E\012E\012E\011\134\012E\006\157\012E\012E\000\n\012E\b\213\012E\012E\003n\019z\012E\012E\006\165\006\165\006\165\006\165\006\165\006\165\006\165\006\165\006\165\006\165\006\165\012\238\006\165\006\165\006\165\006\165\006\165\006\165\006\165\006\165\006\165\006\165\021\210\006\005\012\017\006\242\006\165\015\030\015.\015>\003~\001\234\001R\004\138\006\165\r\026\001\246\011\201\006\165\006\165\b\238\006\165\011%\006\005\006\165\000\n\006E\006\005\004\157\006\165\015\026\006\165\001\130\028:\004\157\004\157\022V\004\234\006-\015N\006\165\000.\011\198\011\217\004\130\001V\004\157\004\157\000\n\006\165\006\165\027\198\001\"\004\189\006\165\006\165\003\138\001\"\003\146\006\165\003\162\006\165\006\165\006\165\006\165\006\165\021\198\003\170\001\"\006\165\006\165\006\165\004\157\006\165\006\165\006\165\004-\016\202\006\165\006\165\006\165\006\165\006\165\025\139\025\143\000\n\006\165\006\165\025\147\0041\000\n\006u\012\025\016\206\001z\006=\006=\003\178\006\165\006\165\001\142\000\n\006\165\006\165\006\165\006\165\0246\006\165\n\182\006\165\015\210\002\218\006\165\001\234\016f\006\165\006\165\r\026\001\246\007\237\011\201\004\150\001\234\016V\027\246\003\129\001\242\001\246\012\214\017n\006\165\003\194\015\026\007\237\006\165\006\165\006\165\006\165\r\n\003Q\006\165\015N\006\165\003Q\012\245\012\245\006\165\006\165\006\165\012\245\000\n\024:\006\165\006\165\022:\006\165\005*\006\165\006\165\000\n\004\129\006\165\006\165\006\197\006\197\006\197\006\197\006\197\006\197\006\197\006\197\006\197\006\197\006\197\015B\006\197\006\197\006\197\006\197\006\197\006\197\006\197\006\197\006\197\006\197\006\197\007\237\028z\006\197\006\197\017z\016V\0041\b\177\006\197\006\197\023\030\006\197\0041\0041\015\026\006\197\006\197\017\238\006\197\025z\006\197\006\197\015F\015N\0041\r:\006\197\015\026\006\197\006\197\016f\004J\006\197\006\197\006\197\015\026\015N\006\197\006\197\005\157\006\197\006\197\003&\r\014\015N\012\214\006\197\006\197\006\197\006\197\0041\006\197\027\254\007\237\004\241\001\"\006\197\025z\006\197\012)\006\197\006\197\006\197\006\197\016V\007\237\006\197\006\197\006\197\018\238\006\197\006\197\006\197\015\026\012\001\006\197\006\197\006\197\006\197\006\197\018\154\007\222\015N\007\230\006\197\007\246\006\197\018\158\000\n\001\234\006\149\018\162\007\254\r\026\001\246\006\197\006\197\003r\016f\006\197\006\197\006\197\006\197\006}\006\197\006\197\006\197\r\142\022F\006\197\018n\016f\006\197\006\197\006\197\003v\012\245\021\242\020F\016f\006\197\012)\b\006\006\r\006\197\020\026\000\n\006\197\012\245\012\245\026\235\006\197\006\197\012\245\006\197\006\213\023*\006\197\026\239\006\197\004\241\b\241\b\241\006\197\025\179\025\183\b\241\015\206\026\242\025\187\006\197\0065\006\197\028\234\006\197\006\197\b\022\016f\006\197\006\197\000R\000V\000f\000\170\007\206\000\174\nf\000\178\000\246\nj\000\254\021V\001\014\025\194\001\022\nn\001\030\0012\001:\001>\nr\025\198\016\234\021Z\006\189\015\234\nv\012\245\012\245\004\r\006\189\006\189\012\245\021^\001F\021b\006\133\006\213\001\170\n\134\028\230\r\150\028b\021f\r\154\027\206\016V\020v\020\158\001N\011\201\015\n\021r\026\154\011\201\015\026\021v\t\n\024\138\003\182\001\182\021j\021z\025\250\015N\019N\027\210\n>\006\189\015b\r\162\026&\0262\027\214\015f\017\170\019\150\001\"\021~\001\222\012\t\001\226\004\205\001b\016^\015n\022J\001\"\000\n\r\182\001\234\015r\019\154\r\186\011\166\001\246\003\186\000\n\r\190\r\194\n\154\n\158\r\198\018\218\004-\021\130\004\026\015v\021\134\020\214\000\n\000\n\001\234\016\238\020~\020\166\r\026\001\246\n\250\r\202\000\n\021\138\015z\015~\r\206\015\130\021\142\000\n\021\146\015\150\021\150\021\154\004\169\021\158\004\030\015\162\r\214\0042\027\222\016f\021\162\rZ\023\174\021\166\019\n\rv\019\030\026F\003Q\000\n\015\194\006\141\003Q\019:\015\198\016\002\004\205\n\162\021\170\011\201\r\218\012\214\016\006\021\174\021\178\012\214\r\222\004\205\004\205\b\241\b\241\027\230\004\205\016\014\b\241\r\226\020\222\006\205\006\205\006]\006U\002&\006\205\000R\000V\000f\000\170\007\206\000\174\nf\000\178\000\246\nj\000\254\018\222\001\014\025\194\001\022\nn\001\030\0012\001:\001>\nr\025\198\019^\024\030\004-\004N\nv\027\011\027\015\011\185\004-\004-\027\019\004V\001F\011\201\004Z\016\202\001\170\n\134\019\182\r\150\004-\027\198\r\154\027+\027/\004\134\023\006\001N\0273\015\n\019\014\016\206\019\"\011\193\027\246\024J\006e\0242\001\182\019>\026\134\015\026\011\209\007\n\006\021\017\018\004-\015b\r\162\026&\015N\001\234\015f\017\242\021\014\r\026\001\246\001\222\019\150\001\226\004\221\001b\016^\015n\b\197\012\214\020.\r\182\001\234\015r\021j\r\186\011\166\001\246\019\154\011\177\r\190\r\194\n\154\n\158\r\198\011\177\011\177\004\142\016b\015v\007\n\028J\000\n\004\166\011\241\019b\005)\011\177\001\234\024\"\n\250\r\202\r\026\001\246\015z\015~\r\206\015\130\0172\000\n\028R\015\150\005\r\019\186\004\169\005)\029&\015\162\r\214\004\174\b\"\004\157\b*\011\177\b:\021\022\004\178\019\202\012\214\016f\b\197\bB\015\194\006m\011\249\000\n\015\198\016\002\027\186\n\162\028\250\028\006\r\218\004\186\016\006\019\230\004\210\tB\r\222\tJ\004\221\tZ\027\254\004\214\004\222\016\014\024\018\r\226\tb\006\221\006\221\bJ\004\242\002&\006\221\000R\000V\000f\000\170\007\206\000\174\nf\000\178\000\246\nj\000\254\006m\001\014\025\194\001\022\nn\001\030\0012\001:\001>\nr\025\198\005)\tj\026\178\006M\nv\005\006\003u\006\181\bZ\024z\029O\005\026\001F\006\181\006\181\005:\001\170\n\134\005^\r\150\005)\005j\r\154\028\"\000\n\006\181\005r\001N\005\198\015\n\000\n\019\206\005\210\0286\006\030\tz\006.\004\157\001\182\0066\028\142\015\026\028:\004\157\004\157\006\190\006\226\015J\r\162\019\234\015N\006\181\015f\006\234\007\"\004\157\004\157\001\222\007.\001\226\004\249\001b\015j\015n\007:\007F\007R\r\182\001\234\015r\007^\r\186\011\166\001\246\007r\007\130\r\190\r\194\n\154\n\158\r\198\004\157\007\146\007\154\012\253\015v\007\191\b\n\b\014\bN\bR\b\178\b\182\b\198\004)\b\214\n\250\r\202\t\002\t\018\015z\015~\r\206\015\130\t&\000\n\tn\015\150\016V\tr\004\169\t\178\t\182\015\162\r\214\n\022\t\134\015\026\t\142\n\026\t\158\n.\nF\005%\nZ\016f\015N\t\166\015\194\004)\nz\n\130\015\198\016\002\004\249\n\162\004\241\n\138\r\218\005\t\016\006\n\146\005%\n\150\r\222\004\249\004\249\n\206\n\218\n\226\004\249\016\014\011&\r\226\011F\b\249\b\249\t\174\011R\002&\b\249\000R\000V\000f\000\170\007\206\000\174\nf\000\178\000\246\nj\000\254\011\150\001\014\011\178\001\022\nn\001\030\0012\001:\001>\nr\011\190\011\214\011\226\012r\012\134\nv\012\154\012\190\012\202\t\190\012\210\012\230\012\242\001F\012\250\004)\012\254\001\170\n\134\016f\r\150\004)\004)\r\154\r\006\r\022\r&\r.\001N\007\245\015\n\r2\005%\004)\rB\rJ\rb\rj\r~\001\182\004\241\r\134\015\026\007\245\r\146\r\170\r\178\014\006\015J\r\162\004)\015N\005%\015f\014\018\014Z\014\218\015\002\001\222\004)\001\226\027\254\001b\015j\015n\015\022\015\"\015*\r\182\001\234\015r\0152\r\186\011\166\001\246\015:\015\134\r\190\r\194\n\154\n\158\r\198\015\142\015\158\015\166\015\174\015v\015\182\015\190\015\250\016\n\016\018\016\030\016\"\016*\016.\007\245\n\250\r\202\0166\016>\015z\015~\r\206\015\130\016N\000\n\016r\015\150\nf\016\182\016\190\nj\016\194\015\162\r\214\025\214\016\210\nn\016\218\016\222\016\230\016\246\nr\025\218\016\254\016f\017\006\017\n\015\194\017\026\017\"\017:\015\198\016\002\017B\n\162\017\146\017\218\r\218\017\230\016\006\018Z\018f\018\134\r\222\018\178\018\194\018\202\007\245\018\230\018\242\016\014\018\250\r\226\018\254\019\006\016\202\019\022\019*\002&\007\245\000R\000V\000f\000\170\007\206\000\174\nf\000\178\000\246\nj\000\254\016\206\001\014\019F\001\022\nn\001\030\0012\001:\001>\nr\019j\019\130\019\138\019\142\019\158\nv\019\166\019\170\019\178\019\194\001\234\019\214\019\242\001F\r\026\001\246\020\006\001\170\n\134\020\022\r\150\020&\020>\r\154\020N\020Z\020\139\020\179\001N\020\203\015\n\020\235\021\003\021#\021;\021R\021n\021\222\022\011\001\182\022b\022w\015\026\022\159\022\171\022\187\022\195\000\n\015J\r\162\022\222\015N\004\189\015f\022\231\022\239\022\247\023\018\001\222\023:\001\226\023B\001b\015j\015n\023R\023o\023\127\r\182\001\234\015r\023\135\r\186\011\166\001\246\023\147\023\158\r\190\r\194\n\154\n\158\r\198\023\195\023\207\023\219\012\253\015v\023\238\023\247\023\255\024*\024V\024\146\024\179\024\187\024\199\024\215\n\250\r\202\024\223\024\235\015z\015~\r\206\015\130\024\246\000\n\025\011\015\150\025\019\025\026\025'\0253\025;\015\162\r\214\025F\025O\025W\025c\025~\026\006\026.\011\225\011\225\026>\016f\026r\026z\015\194\026\158\026\194\026\198\015\198\016\002\026\206\n\162\026\247\027\190\r\218\027\202\016\006\027\218\027\226\027\234\r\222\028\023\028\031\028&\0283\028>\028N\016\014\028\131\r\226\028\146\012\253\012\253\028\159\028\195\002&\012\253\000R\000V\000f\000\170\007\206\000\174\nf\000\178\000\246\nj\000\254\028\223\001\014\025\194\001\022\nn\001\030\0012\001:\001>\nr\025\198\028\238\028\246\029\002\029\014\nv\029\027\029\"\029*\0293\029:\029C\029W\001F\000\000\000\000\000\000\001\170\n\134\000\000\r\150\000\000\000\000\r\154\000\000\000\000\000\000\000\000\001N\000\000\015\n\000\000\000\000\011\225\000\000\000\000\000\000\000\000\000\000\001\182\000\000\000\000\000\000\000\000\011\225\000\000\000\000\000\000\015b\r\162\011\225\011\225\000\000\015f\027B\000\000\000\000\000\000\001\222\000\000\001\226\000\000\001b\016^\015n\000\000\000\000\000\000\r\182\001\234\015r\000\000\r\186\011\166\001\246\000\022\000\000\r\190\r\194\n\154\n\158\r\198\011\225\000\000\000\000\000\000\015v\011\225\011\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\250\r\202\000\000\000\000\015z\015~\r\206\015\130\000\000\000\n\000\000\015\150\000\000\000\000\004\169\000\000\000\000\015\162\r\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\194\000\000\000\000\000\000\015\198\016\002\000\000\n\162\000\000\000\000\r\218\000\000\016\006\000\000\000\000\000\000\r\222\000\000\000\000\000\000\000\000\000\000\000\000\016\014\000\000\r\226\000\000\b\221\b\221\000\000\000\000\002&\b\221\000R\000V\000f\000\170\007\206\000\174\nf\000\178\000\246\nj\000\254\000\000\001\014\000\000\001\022\nn\001\030\0012\001:\001>\nr\000\000\000\000\000\000\000\000\000\000\nv\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001F\000\000\000\000\000\000\001\170\n\134\000\000\r\150\000\000\000\000\r\154\000\000\000\000\000\000\000\000\001N\000\000\015\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015b\r\162\000\000\000\000\000\000\015f\016z\000\000\000\000\000\000\001\222\000\000\001\226\000\000\001b\016^\015n\000\000\000\000\000\000\r\182\001\234\015r\000\000\r\186\011\166\001\246\000\000\000\000\r\190\r\194\n\154\n\158\r\198\000\000\000\000\000\000\012\217\015v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\250\r\202\000\000\000\000\015z\015~\r\206\015\130\000\000\000\n\000\000\015\150\000\000\000\000\000\000\000\000\000\000\015\162\r\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\194\000\000\000\000\000\000\015\198\016\002\000\000\n\162\000\000\000\000\r\218\000\000\016\006\000\000\000\000\000\000\r\222\000\000\000\000\000\000\000\000\000\000\000\000\016\014\000\000\r\226\000\000\012\217\012\217\000\000\000\000\002&\012\217\000R\000V\000f\000\170\007\206\000\174\nf\000\178\000\246\nj\000\254\000\000\001\014\000\000\001\022\nn\001\030\0012\001:\001>\nr\000\000\000\000\000\000\000\000\000\000\nv\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001F\000\000\000\000\000\000\001\170\n\134\000\000\r\150\000\000\000\000\r\154\000\000\000\000\000\000\000\000\001N\000\000\015\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015b\r\162\000\000\000\000\000\000\015f\026\n\000\000\000\000\000\000\001\222\000\000\001\226\000\000\001b\016^\015n\000\000\000\000\000\000\r\182\001\234\015r\000\000\r\186\011\166\001\246\000\000\000\000\r\190\r\194\n\154\n\158\r\198\000\000\000\000\000\000\000\000\015v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\250\r\202\000\000\000\000\015z\015~\r\206\015\130\000\000\000\n\000\000\015\150\000\000\000\000\000\000\000\000\000\000\015\162\r\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\194\000\000\000\000\000\000\015\198\016\002\000\000\n\162\000\000\000\000\r\218\000\000\016\006\000\000\000\000\000\000\r\222\000\000\000\000\000\000\000\000\000\000\000\000\016\014\000\000\r\226\000\000\r%\r%\000\000\000\000\002&\r%\000R\000V\000f\000\170\007\206\000\174\nf\000\178\000\246\nj\000\254\000\000\001\014\000\000\001\022\nn\001\030\0012\001:\001>\nr\000\000\000\000\000\000\000\000\000\000\nv\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001F\000\000\000\000\000\000\001\170\n\134\000\000\r\150\000\000\000\000\r\154\000\000\000\000\000\000\000\000\001N\000\000\015\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015b\r\162\000\000\000\000\000\000\015f\026\n\000\000\000\000\000\000\001\222\000\000\001\226\000\000\001b\016^\015n\000\000\000\000\000\000\r\182\001\234\015r\000\000\r\186\011\166\001\246\000\000\000\000\r\190\r\194\n\154\n\158\r\198\000\000\000\000\000\000\000\000\015v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\250\r\202\000\000\000\000\015z\015~\r\206\015\130\000\000\000\n\000\000\015\150\000\000\000\000\000\000\000\000\000\000\015\162\r\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\194\000\000\000\000\000\000\015\198\016\002\000\000\n\162\000\000\000\000\r\218\000\000\016\006\000\000\000\000\000\000\r\222\000\000\000\000\000\000\000\000\000\000\000\000\016\014\000\000\r\226\000\000\r!\r!\000\000\000\000\002&\r!\000R\000V\000f\000\170\007\206\000\174\nf\000\178\000\246\nj\000\254\000\000\001\014\000\000\001\022\nn\001\030\0012\001:\001>\nr\000\000\000\000\000\000\000\000\000\000\nv\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001F\000\000\000\000\000\000\001\170\n\134\000\000\r\150\000\000\000\000\r\154\000\000\000\000\000\000\000\000\001N\000\000\015\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015b\r\162\000\000\000\000\000\000\015f\018&\000\000\000\000\000\000\001\222\000\000\001\226\000\000\001b\016^\015n\000\000\000\000\000\000\r\182\001\234\015r\000\000\r\186\011\166\001\246\000\000\000\000\r\190\r\194\n\154\n\158\r\198\000\000\000\000\000\000\000\000\015v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\250\r\202\000\000\000\000\015z\015~\r\206\015\130\000\000\000\n\000\000\015\150\000\000\000\000\000\000\000\000\000\000\015\162\r\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\194\000\000\000\000\000\000\015\198\016\002\000\000\n\162\000\000\000\000\r\218\000\000\016\006\000\000\000\000\000\000\r\222\000\000\000\000\000\000\000\000\000\000\000\000\016\014\000\000\r\226\000\000\000R\000V\000f\000\170\002&\000\174\nf\000\178\000\246\nj\000\254\000\000\001\014\000\000\001\022\nn\001\030\0012\001:\001>\nr\000\000\000\000\000\000\003:\003B\000\170\000\000\000\174\000\000\003\134\003\202\000\000\003\210\001F\003\226\000\000\003\234\001\170\003\242\003\254\r\150\004\006\000\000\r\154\000\000\000\000\000\000\000\000\001N\000\000\018\166\000\000\000\000\000\000\000\000\000\000\004\014\000\000\000\000\001\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\182\r\162\000\000\004\022\000\000\000\000\000\000\000\000\000\000\000\000\001\222\000\000\001\226\000\000\001b\000\000\000\000\000\000\000\000\000\000\r\182\001\234\000\000\000\000\r\186\001\242\001\246\000\000\000\000\r\190\r\194\n\154\018\186\r\198\000\000\000\000\000\000\004&\000\000\000\000\007\234\005\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\250\r\202\005\253\000\000\005\253\000\000\r\206\000\000\005\253\000\n\b.\005\253\bn\005\253\005\253\005\253\005\253\005\253\r\214\000\000\000\000\000\000\005\253\005\253\005\253\005\253\005\253\n\169\n\169\000\000\005\253\n\169\000\n\005\253\005\253\005\253\000\000\005\253\000\000\n\162\005\253\000\000\r\218\005\253\018\190\005\253\000\000\005\253\r\222\005\253\000\000\005\253\005\253\005\253\005\253\018\198\005\253\r\226\005\253\005\253\000Z\000\000\005\253\002&\005\253\b\206\000\000\n\169\000\000\005\253\000Z\000\000\005\253\005\253\005\253\005\253\t\030\000\000\005\253\000Z\005\253\000Z\000\000\005\253\005\253\005\253\005\253\000\000\000\000\005\253\000\000\000\000\005\253\000\000\n\169\000\000\005\253\005\253\000\000\005\253\000\000\000\000\005\253\000\000\000\000\005\253\000\000\005\253\005\253\005\253\005\253\005\253\005\253\000\000\005\253\000\000\000\000\005\253\005\253\005\253\000\000\005\253\005\253\005\253\005\253\000\000\005\253\005\253\005\253\005\253\005\253\005\253\005\253\005\253\005\253\005\253\000\000\000\000\000\000\005\253\005\253\000\000\005\253\005\253\005\253\005\253\000\000\000\000\000\000\005\253\000\000\000\000\000\000\000\000\005\253\005\253\n\169\000\000\005\253\000\000\005\253\000\000\000\000\005\253\005\253\005\253\005\253\005\253\000\000\000\000\005\253\005\253\000\000\000\000\005\253\000\000\000\000\000\000\000\000\005\253\005\253\000\000\000\000\000\000\005\253\000R\000V\000f\000\170\000\000\000\174\000\000\000\178\000\246\000\000\000\254\000\000\001\014\000\000\001\022\000\000\001\030\0012\001:\001>\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001F\000\000\000\000\000\000\001\170\000\000\000\000\001\174\000\000\000\000\001\178\000\000\000\000\000\000\000\000\001N\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\182\000\000\000\000\001\186\000\000\000\000\000\000\000\000\000\000\001\210\001\206\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\001\222\000\000\001\226\000\000\001b\000\000\011\250\000\000\000\000\000\000\001\230\001\234\000\000\000\000\001\238\001\242\001\246\000\000\002J\001\250\001\254\000\000\000\000\002\002\000\000\000\000\000\000\000\000\000\000\012\002\012*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\006\000\000\000\000\000\000\012\n\002\n\000\000\000\000\000\n\000\000\012R\012Z\000\000\000\000\000\000\000\000\000\000\002\018\000\000\000\000\0122\000\000\000\000\012\018\000\000\012\"\000\000\000\000\002\022\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\026\000\000\000\000\000\000\000\000\000\000\002\030\012:\000\000\004}\000\000\000\000\000\000\000\000\000\000\002\"\000\000\000R\007\210\007\218\000\170\002&\000\174\000\000\b\030\bb\000\000\bj\021V\bz\000\000\b\130\000\000\b\138\b\150\001:\b\158\000\000\000\000\000\000\021Z\000\000\000\000\000\000\000\000\000\000\000\000\012B\000\000\000\000\021^\b\166\021b\000\000\012\026\000\000\000\000\000\000\000\000\000\000\021f\000\000\000\000\000\000\000\000\000\000\024\242\000\000\005q\021r\000\000\000\000\000\000\021v\000\000\000\000\000\000\000\000\000\000\021z\000\000\000\000\000\000\012b\012J\000\000\b\190\000\000\000\000\000\000\000\000\022\250\000\000\000\000\000\000\021~\024\002\000\000\000\000\000\000\b\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\130\000\000\nv\021\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\170\n\134\021\138\r\150\000\000\000\000\r\154\021\142\000\n\021\146\000\000\021\150\021\154\015\n\021\158\000\000\000\000\000\000\000\000\000\000\000\000\021\162\001\182\000\000\021\166\000\000\000\000\000\000\000\000\000\000\000\000\015\146\r\162\000\000\000\000\000\000\015f\000\000\000\000\021\170\000\000\001\222\000\000\001\226\021\174\021\178\000\000\015n\000\000\000\000\000\000\r\182\001\234\015r\000\000\r\186\011\166\001\246\000\000\000\000\r\190\r\194\000\000\000\000\r\198\000\000\000\000\000\000\000\000\015v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\250\r\202\000\000\000\000\015z\015~\r\206\015\130\000\000\000\n\000\000\015\150\000\000\000\000\000\000\000\000\nv\015\162\r\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\170\n\134\000\000\r\150\015\194\000\000\r\154\000\000\015\198\016\002\000\000\000\000\000\000\015\n\r\218\000\000\016\006\000\000\000\000\000\000\r\222\000\000\001\182\000\000\000\000\000\000\000\000\016\014\000\000\r\226\000\000\r\158\r\162\000\000\000\000\002&\015f\000\000\000\000\000\000\000\000\001\222\000\000\001\226\000\000\000\000\000\000\015n\000\000\000\000\000\000\r\182\001\234\015r\000\000\r\186\011\166\001\246\000\000\000\000\r\190\r\194\000\000\000\000\r\198\000\000\000\000\000\000\000\000\015v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\250\r\202\000\000\000\000\015z\015~\r\206\015\130\000\000\000\n\000\000\015\150\000\000\000\000\000\000\000\000\000\000\015\162\r\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\194\000\000\000\000\000\000\015\198\016\002\000\000\000\000\000\000\000\000\r\218\000\000\016\006\000\000\000\000\000\000\r\222\000\000\000\000\000\000\000\000\000\000\000\000\016\014\000\000\r\226\000\000\001M\001M\001M\001M\002&\001M\000\000\001M\001M\000\000\001M\000\000\001M\000\000\001M\000\000\001M\001M\001M\001M\000\000\000\000\014-\000\000\021F\014-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001M\001M\001M\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001M\000\000\014-\014-\000\000\000\000\001M\014-\000\000\001M\002>\014-\000\000\001M\000\000\000\000\021J\014-\000\000\001M\014-\014-\000\000\014-\014-\000\000\001M\002F\000\000\014-\0052\001M\000\000\014-\000\000\000\000\014-\000\000\014-\014-\001M\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014-\001M\014-\000\000\001M\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014-\000\000\000\000\000\000\001M\000\000\000\000\005>\000\000\001M\000\000\001M\000\000\000\000\001M\000\000\021N\000\000\000\000\000\000\000\000\001M\000\000\001M\000\000\000\000\001M\014-\014-\000\000\014-\014-\005B\000\000\014-\000\000\000\000\000\000\000\000\000\000\000\000\001M\001M\005J\000\000\000\000\001M\001M\014-\000\000\000\000\014-\014-\014-\014-\005\t\000\000\022\014\005\t\014-\014-\014-\000\000\014-\014-\014-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\t\005\t\000\000\000\000\000\000\005\t\000\000\000\000\005\t\005\t\000\000\000\000\000\000\000\000\000\000\005\t\000\000\000\000\005\t\005\t\000\000\005\t\005\t\000\000\000\000\005\t\000\000\005\t\005\t\000\000\000\000\005\t\000\000\000\000\005\t\000\000\005\t\005\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\t\000\000\005\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\t\000R\000V\000f\000\170\000\000\000\174\005\t\000\178\000\246\000\n\000\254\000\000\001\014\000\000\001\022\000\000\001\030\0012\001:\001>\000\000\000\000\000\000\000\000\000\000\000\000\005\t\005\t\000\000\005\t\005%\005\t\000\000\005\t\001F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\t\005\r\000\000\000\000\005\r\005\t\000\000\001N\005\t\000\000\005\t\000\000\000\000\000\000\000\000\000\000\005\t\005\t\005\t\000\000\005\t\005\t\005\t\000\000\005\r\005\r\000\000\001^\000\000\005\r\000\000\000\000\005\r\005\r\000\000\000\000\000\000\000\000\000\000\005\r\000\000\001b\005\r\005\r\000\000\005\r\005\r\000\000\000\000\005\r\000\000\005\r\005\r\000\000\000\000\005\r\000\000\000\000\005\r\000\000\005\r\005\r\000\000\000R\000V\000f\000\170\000\000\000\174\000\000\000\178\000\246\000\000\000\254\000\000\001\014\000\000\001\022\000\000\001\030\0012\001:\001>\005\r\000\000\005\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\r\001F\000\000\000R\007\210\007\218\000\170\005\r\000\174\000\000\b\030\bb\000\000\bj\000\000\bz\001N\b\130\000\000\b\138\b\150\001:\b\158\000\000\000\000\000\000\000\000\005\r\005\r\000\000\005\r\005)\005\r\000\000\005\r\000\000\001^\b\166\000\000\000\000\000\000\000\000\000\000\005\r\000\000\000\000\000\000\000\000\005\r\000\000\001b\005\r\b\174\005\r\004^\004b\000\000\000\000\000\000\005\r\005\r\005\r\000\000\005\r\005\r\005\r\n\165\n\165\n\165\n\165\000\000\n\165\b\190\n\165\n\165\000\000\n\165\000\000\n\165\000\000\n\165\000\000\n\165\n\165\n\165\n\165\b\202\000\000\014\129\000\000\000\000\014\129\000\000\000\000\000\n\000\000\000\000\000\000\000\000\n\165\n\165\n\165\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\165\000\000\014\129\014\129\000\000\004n\n\165\014\129\000\000\022\030\r\246\014\129\000\000\022&\000\000\000\000\000\000\014\129\000\000\n\165\014\129\014\129\000\000\014\129\014\129\000\000\n\165\r\254\000\000\014\129\014\n\n\165\000\000\014\129\000\000\000\000\014\129\000\000\014\129\014\129\n\165\000R\000V\000f\000\170\000\000\000\174\000\000\000\178\000\246\000\000\000\254\000\000\001\014\000\000\001\022\000\000\001\030\0012\001:\001>\014\129\n\165\014\129\000\000\n\165\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\129\001F\000\000\000\000\n\165\000\000\000\000\014\022\000\000\n\165\000\000\n\165\000\000\000\000\n\165\000\000\001N\000\000\000\000\000\000\000\000\n\165\000\000\n\165\000\000\000\000\n\165\014\129\014\129\000\000\014\129\000\000\014\026\000\000\014\129\000\000\001^\000\000\000\000\000\000\000\000\n\165\n\165\014\"\000\000\000\000\022z\n\165\000\000\000\000\001b\014\129\000\000\014\129\004^\004b\000\000\000\000\000\000\014\129\014\129\014\129\000\000\014\129\014\129\014\129\n\149\n\149\n\149\n\149\000\000\n\149\000\000\n\149\n\149\000\000\n\149\000\000\n\149\000\000\n\149\000\000\n\149\n\149\n\149\n\149\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\149\n\149\n\149\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\149\000\000\000\000\000\000\000\000\004f\n\149\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\149\n\153\n\153\n\153\n\153\000\000\n\153\n\149\n\153\n\153\000\000\n\153\n\149\n\153\000\000\n\153\000\000\n\153\n\153\n\153\n\153\n\149\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\153\n\153\n\153\000\000\000\000\000\000\000\000\000\000\000\000\n\149\n\153\000\000\n\149\000\000\000\000\000\000\n\153\000\000\000\000\022~\000\000\000\000\000\000\000\000\000\000\n\149\000\000\000\000\000\000\n\153\n\149\000\000\n\149\000\000\000\000\n\149\n\153\000\000\000\000\000\000\000\000\n\153\n\149\000\000\n\149\000\000\000\000\n\149\000\000\000\000\n\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\153\000\000\000\000\001\153\n\149\n\149\000\000\000\000\000\000\022\"\n\149\000\000\000\000\000\000\n\153\000\000\000\000\n\153\000\000\000\000\000\000\000\000\000\000\001\153\001\153\000\000\000\000\000\000\001\153\000\000\n\153\000\000\001\153\000\000\000\000\n\153\000\000\n\153\001\153\000\000\n\153\001\153\001\153\000\000\001\153\001\153\000\000\n\153\000\000\n\153\001\153\000\000\n\153\000\000\001\153\000\000\000\000\001\153\000\000\001\153\001\153\000\000\000\000\000\000\000\000\000\000\000\000\n\153\n\153\000\000\000\000\000\000\000\000\n\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\153\000\000\001\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\153\000\000\000\000\000\000\000\000\000\000\000R\007\210\007\218\000\170\000\000\000\174\000\000\b\030\bb\000\000\bj\000\000\bz\000\000\b\130\000\000\b\138\b\150\001:\b\158\000\000\001\153\002Z\000\000\001\153\001\153\000\000\000\000\001\153\000\000\000\000\000\000\000\000\022\134\b\166\022\162\000\000\000\000\000\000\000\000\000\000\000\000\001\153\022\174\000\000\001\153\001\153\001\153\001\153\b\174\000\000\000\000\000\000\003\n\001\153\001\153\000\000\001\153\001\153\001\153\000\000\000\000\022\198\000\000\000\000\002z\000\000\000\000\002\210\b\190\000\000\000\000\000\000\000\000\022\250\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\202\000\000\000\000\000\000\000\000\002\130\002\170\000\000\000\000\000\000\002!\000\000\000\000\000\000\002!\000\000\000\000\000\000\000\000\000\000\002\138\000\000\023\026\002!\002!\023r\002\242\002\250\000\000\000\000\000\000\000\000\002!\000\000\000\000\000\000\002\178\000\000\023\138\002\146\000\000\002\162\002!\023\150\000\000\b\173\000\000\000\000\023\198\000\000\000\000\000\000\t6\t>\000\170\023\210\000\174\023\222\t\130\t\198\024\190\t\206\000\000\t\222\002\186\t\230\002!\t\238\t\250\000\000\n\002\000\000\000\000\000\000\000\000\024\202\024\226\002!\000\000\000\000\000\000\024\238\000\000\000\000\000\000\n\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\018\000\000\000\000\000\000\002\194\000\000\000\000\002!\002!\000\000\000\000\002\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000\000\000\000\000\129\000\000\002!\000\000\000\000\002!\002!\002!\002!\000\000\000\000\n\"\000\000\000\000\002!\002!\000\000\003\002\002\202\002!\002\130\002\170\000\000\000\000\000\000\000\129\000\000\000\000\000\000\000\129\000\000\000\000\000\000\000\000\000\000\002\138\000\000\000\000\000\129\000\129\000\000\000\129\000\129\000\000\000\000\000\000\000i\000\129\000\000\000i\000\000\002\178\000\000\000\000\002\146\000\000\002\162\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000i\000i\000\000\000\000\000\000\000i\000\000\000\000\000\000\000i\002\186\000\000\000\129\000\000\000\000\002\138\000\000\000\000\000i\000i\000\000\000i\000i\000\129\000\000\000\000\000\000\000i\000\000\000\000\000\000\000i\000\000\000\000\002\146\000\000\002\162\000i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\194\000\000\000\000\000\129\000\129\000\000\000\000\002\154\000\000\000i\000\000\000i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000i\000\000\000\129\000\129\000\129\000\129\000\000\000\000\000\000\000\000\000\000\000\129\000\129\000\000\000\129\002\202\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000i\000\000\000\000\000i\000i\000\000\000\000\002\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000]\000\000\000\000\000]\000\000\000i\000\000\000\000\000i\000i\000i\000i\000\000\000\000\000\000\000\000\000\000\000i\000i\000\000\000i\000i\000i\000]\000]\000\000\000\000\000\000\000]\000\000\000\000\000\000\000]\000\000\000\000\000\000\000\000\000\000\000]\000\000\000\000\000]\000]\000\000\000]\000]\000\000\000\000\000\000\000a\000]\000\000\000a\000\000\000]\000\000\000\000\002\146\000\000\000]\000]\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000a\000a\000\000\000\000\000\000\000a\000\000\000\000\000\000\000a\000]\000\000\000]\000\000\000\000\000a\000\000\000\000\000a\000a\000\000\000a\000a\000]\000\000\000\000\000\000\000a\000\000\000\000\000\000\000a\000\000\000\000\002\146\000\000\000a\000a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000]\000\000\000\000\000]\000]\000\000\000\000\002\154\000\000\000a\000\000\000a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000]\000a\000\000\000]\000]\000]\000]\000\000\000\000\000\000\000\000\000\000\000]\000]\000\000\000]\000]\000]\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000a\000\000\000\000\000a\000a\000\000\000\000\002\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000e\000\000\000\000\000e\000\000\000a\000\000\000\000\000a\000a\000a\000a\000\000\000\000\000\000\000\000\000\000\000a\000a\000\000\000a\000a\000a\000e\000e\000\000\000\000\000\000\000e\000\000\000\000\000\000\000e\000\000\000\000\000\000\000\000\000\000\002\138\000\000\000\000\000e\000e\000\000\000e\000e\000\000\000\000\000\000\000u\000e\000\000\000u\000\000\000e\000\000\000\000\002\146\000\000\002\162\000e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\130\002\170\000\000\000\000\000\000\000u\000\000\000\000\000\000\000u\000e\000\000\000e\000\000\000\000\002\138\000\000\000\000\000u\000u\000\000\000u\000u\000e\000\000\000\000\000\000\000u\000\000\000\000\000\000\000u\000\000\000\000\002\146\000\000\002\162\000u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000e\000\000\000\000\000e\000e\000\000\000\000\002\154\000\000\002\186\000\000\000u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000e\000u\000\000\000e\000e\000e\000e\000\000\000\000\000\000\000\000\000\000\000e\000e\000\000\000e\000e\000e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000u\000\000\000\000\000u\000u\000\000\000\000\002\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000m\000\000\000\000\000m\000\000\000u\000\000\000\000\000u\000u\000u\000u\000\000\000\000\000\000\000\000\000\000\000u\000u\000\000\000u\000u\000u\002\130\002\170\000\000\000\000\000\000\000m\000\000\000\000\000\000\000m\000\000\000\000\000\000\000\000\000\000\002\138\000\000\000\000\000m\000m\000\000\000m\000m\000\000\000\000\000\000\000q\000m\000\000\000q\000\000\000m\000\000\000\000\002\146\000\000\002\162\000m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\130\002\170\000\000\000\000\000\000\000q\000\000\000\000\000\000\000q\000m\000\000\000m\000\000\000\000\002\138\000\000\000\000\000q\000q\000\000\000q\000q\000m\000\000\000\000\000\000\000q\000\000\000\000\000\000\000q\000\000\000\000\002\146\000\000\002\162\000q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000m\000\000\000\000\000m\000m\000\000\000\000\002\154\000\000\002\186\000\000\000q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000m\000q\000\000\000m\000m\000m\000m\000\000\000\000\000\000\000\000\000\000\000m\000m\000\000\000m\000m\000m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000q\000\000\000\000\000q\000q\000\000\000\000\002\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000y\000\000\000\000\000y\000\000\000q\000\000\000\000\000q\000q\000q\000q\000\000\000\000\000\000\000\000\000\000\000q\000q\000\000\000q\000q\000q\002\130\002\170\000\000\000\000\000\000\000y\000\000\000\000\000\000\000y\000\000\000\000\000\000\000\000\000\000\002\138\000\000\000\000\000y\000y\000\000\000y\000y\000\000\000\000\000\000\002z\000y\000\000\000\137\000\000\002\178\000\000\000\000\002\146\000\000\002\162\000y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\130\002\170\000\000\000\000\000\000\000\137\000\000\000\000\000\000\000\137\002\186\000\000\000y\000\000\000\000\002\138\000\000\000\000\000\137\000\137\000\000\000\137\002\250\000y\000\000\000\000\000\000\000\137\000\000\000\000\000\000\002\178\000\000\000\000\002\146\000\000\002\162\000\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\194\000\000\000\000\000y\000y\000\000\000\000\002\154\000\000\002\186\000\000\000\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000y\000\137\000\000\000y\000y\000y\000y\000\000\000\000\000\000\000\000\000\000\000y\000y\000\000\000y\000y\000y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\194\000\000\000\000\000\137\000\137\000\000\000\000\002\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002z\000\000\000\000\000}\000\000\000\137\000\000\000\000\000\137\000\137\000\137\000\137\000\000\000\000\000\000\000\000\000\000\000\137\000\137\000\000\003\002\002\202\000\137\002\130\002\170\000\000\000\000\000\000\000}\000\000\000\000\000\000\000}\000\000\000\000\000\000\000\000\000\000\002\138\000\000\000\000\000}\000}\000\000\000}\000}\000\000\000\000\000\000\002z\000}\000\000\000\133\000\000\002\178\000\000\000\000\002\146\000\000\002\162\000}\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\130\002\170\000\000\000\000\000\000\000\133\000\000\000\000\000\000\000\133\002\186\000\000\000}\000\000\000\000\002\138\000\000\000\000\000\133\000\133\000\000\000\133\002\250\000}\000\000\000\000\000\000\000\133\000\000\000\000\000\000\002\178\000\000\000\000\002\146\000\000\002\162\000\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\194\000\000\000\000\000}\000}\000\000\000\000\002\154\000\000\002\186\000\000\000\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000}\000\133\000\000\000}\000}\000}\000}\000\000\000\000\000\000\000\000\000\000\000}\000}\000\000\000}\002\202\000}\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\174\002\194\000\000\000\000\000\133\000\133\000\000\000\000\002\154\004a\000\000\000\000\004a\000\000\000\000\004a\000\000\000\000\000\000\000\000\000\000\000\000\000\133\000\000\000\000\000\133\000\133\000\133\000\133\000\000\000\000\004a\000\000\000\000\000\133\000\133\000\000\000\133\002\202\000\133\004a\004a\000\000\000\000\004a\004a\004a\000\000\000\000\000\000\004a\000\000\004a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004a\004a\000\000\000\000\004a\004a\004a\000\000\000\000\004a\004a\000\000\000\000\004a\000\000\000\000\000\000\000\000\001\170\000\000\000\000\n\190\000\000\000\000\n\194\000\000\000\000\000\000\000\000\004a\004a\000\000\000\000\000\000\000\000\004a\000\000\000\000\004a\000\000\001\182\000\000\000\000\000\000\000\000\000\000\000\000\004a\000\000\n\198\011\030\000\000\000\000\011\134\011\158\011\162\004a\000\000\004a\001\222\004a\001\226\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\230\001\234\004a\000\000\n\234\011\166\001\246\000\000\004a\n\238\n\242\000\000\000\000\n\246\004a\000\000\000\000\004a\001\170\000\000\000\000\n\190\000\000\004a\n\194\000\000\000\000\000\000\000\000\n\250\n\254\000\000\000\000\000\000\000\000\011\002\000\000\000\000\000\n\000\000\001\182\000\000\000\000\000\000\000\000\000\000\000\000\011\n\000\000\n\198\011\030\000\000\000\000\011\134\011\158\011\162\006-\000\000\011\170\001\222\011\198\001\226\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\230\001\234\011\014\000\000\n\234\011\166\001\246\000\000\011\018\n\238\n\242\000\000\000\000\n\246\012\194\000\000\000\000\011\022\001\170\000\000\000\000\n\190\000\000\002&\n\194\000\000\000\000\000\000\000\000\n\250\n\254\000\000\000\000\000\000\000\000\011\002\000\000\000\000\000\n\000\000\001\182\000\000\000\000\000\000\000\000\000\000\000\000\011\n\000\000\n\198\011\030\000\000\000\000\011\134\011\158\011\162\006-\000\000\011\170\001\222\011\198\001\226\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\230\001\234\011\014\000\000\n\234\011\166\001\246\000\000\011\018\n\238\n\242\000\000\000\000\n\246\012\178\000\000\000\000\011\022\001\170\000\000\000\000\n\190\000\000\002&\n\194\000\000\000\000\000\000\000\000\n\250\n\254\000\000\000\000\000\000\000\000\011\002\000\000\000\000\000\n\000\000\001\182\000\000\000\000\000\000\000\000\000\000\000\000\011\n\000\000\n\198\011\030\000\000\000\000\011\134\011\158\012~\006-\000\000\011\170\001\222\011\198\001\226\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\230\001\234\011\014\000\000\n\234\011\166\001\246\000\000\011\018\n\238\n\242\000\000\000\000\n\246\005\137\000\000\000\000\011\022\000\000\000\000\000\000\001\153\000\000\002&\001\153\000\000\000\000\000\000\000\000\n\250\n\254\000\000\000\000\000\000\000\000\011\002\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\001\153\001\153\000\000\011\n\000\000\001\153\000\000\000\000\000\000\001\153\000\000\000\000\006-\000\000\011\170\001\153\011\198\000\000\000\000\000\000\000\000\001\153\001\153\000\000\000\000\000\000\000\000\011\014\000\000\000\000\000\000\001\153\001\170\011\018\001\153\n\190\001\153\001\153\n\194\001\205\000\000\000\000\011\022\000\000\000\000\000\000\000\000\000\000\002&\000\000\000\000\000\000\000\000\000\000\001\182\000\000\000\000\000\000\000\000\001\153\000\000\001\153\000\000\n\198\011\030\000\000\000\000\011\134\011\158\012\142\000\000\000\000\001\153\001\222\000\000\001\226\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\230\001\234\000\000\000\000\n\234\011\166\001\246\000\000\000\000\n\238\n\242\000\000\000\000\n\246\000\000\000\000\001\153\002R\000\000\001\153\001\153\000\000\000\000\001\153\000\000\000\000\000\000\000\000\000\000\n\250\n\254\000\000\000\000\000\000\000\000\011\002\000\000\001\153\000\n\000\000\001\153\001\153\000\000\001\153\000\000\000\000\000\000\011\n\003\022\001\153\001\153\000\000\001\153\001\153\001\153\000\000\006-\000\000\000\000\000\000\011\198\001\177\000\000\000\000\001\177\000\000\000\000\000\000\000\000\000\000\000\000\011\014\000\000\000\000\000\000\000\000\000\000\011\018\000\000\000\000\000\000\000\000\000\000\001\221\001\177\001\177\011\022\000\000\000\000\001\177\000\000\000\000\002&\001\177\000\000\000\000\000\000\000\000\000\000\001\177\000\000\000\000\001\177\001\177\000\000\001\177\001\177\000\000\000\000\000\000\000\000\001\177\000\000\000\000\000\000\001\177\000\000\000\000\001\177\000\000\001\177\001\177\000\000\000\000\003A\000\000\000j\003A\000r\000\000\000\130\003A\000\000\003A\000\000\000\000\000\000\000\138\003A\003A\000\000\000\000\000\000\001\177\000\000\001\177\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\177\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\146\003A\000\000\000\000\000\000\003A\000\000\000\000\000\000\000\000\000\000\nf\000\000\000\000\nj\000\000\001\177\014F\025\214\001\177\nn\003A\000\000\001\177\000\000\nr\025\218\000\000\000\000\000\000\000\000\000\000\000\000\003A\000\162\000\000\000\000\000\000\000\000\000\000\001\177\003A\001\177\000\000\000\000\003A\003A\000\000\014N\001\177\001\177\000\000\001\177\001\177\001\177\000\000\000\000\003A\003=\016\202\000\182\003=\000\190\000\000\000\206\003=\000\000\003=\003A\000\000\000\000\000\214\003=\003=\000\000\016\206\000\000\000\000\003A\000\000\000\000\000\000\000\000\003A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\234\000\000\000\000\000\000\r\026\001\246\000\222\003=\000\000\000\000\000\000\003=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003A\000\189\000\000\003A\003A\000\000\003=\003A\000\000\000\000\000\000\000\000\003A\003A\000\000\000\000\000\n\003A\003=\000\238\000\000\004\189\000\000\000\000\012\002\012*\003=\000\000\000\000\000\000\003=\003=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\n\000\000\000\000\003=\000\000\000\000\000\189\000\189\000\000\000\000\000\000\000\000\000\000\000\000\003=\000\000\0122\000\000\000\000\012\018\000\000\012\"\000\000\000\000\003=\000\000\000\000\007\181\007\181\003=\000\000\000\000\007\181\000R\000V\000f\000\170\007\206\000\174\nf\000\178\000\246\nj\000\254\012:\001\014\025\194\001\022\nn\001\030\0012\001:\001>\nr\025\198\000\000\000\000\000\000\001\170\000\000\000\000\001\174\003=\000\000\001\178\003=\003=\001F\000\000\003=\000\000\000\000\000\000\000\000\003=\003=\000\000\000\000\000\000\003=\001\182\000\000\001N\001\186\012B\000\000\000\000\000\000\000\000\001\202\001\206\012\026\001\214\000\000\n\186\000\000\000\000\000\000\000\000\001\222\000\000\001\226\001^\000\000\000\000\000\189\000\000\000\000\001j\001\230\001\234\000\000\011\182\001\238\001\242\001\246\001b\000\000\001\250\001\254\000\189\012J\002\002\000\000\000\000\000\000\000\000\000\000\000\000\001n\000\000\000\000\000\000\n\154\n\158\000\000\000\000\000\000\000\000\002\006\000\000\000\000\000\000\000\000\002\n\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\018\000\000\000\000\000\000\000\n\000\000\000\000\000\000\000\000\004\169\000\000\002\022\b\189\000\000\014z\000\000\000\000\014\210\000\000\000\000\000\000\000\000\000\000\000\000\002\026\000\000\000\000\000\000\000\000\000\000\002\030\000\000\000\000\006%\n\162\b\189\000\000\014\130\014\170\002\"\000\000\000\000\0021\000\000\006%\002&\0021\000\000\000\000\006%\000\000\000\000\014\138\000\000\000\000\0021\0021\000\000\014\226\014\234\000\000\000\000\0015\000\000\0021\0015\000\000\000\000\014\178\000\000\000\000\014\146\000\000\014\162\0021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\130\014\170\000\000\000\000\000\000\0015\000\000\000\000\000\000\0015\000\000\014\186\000\000\0021\000\000\014\138\000\000\000\000\0015\0015\000\000\0015\0015\000\000\0021\000\000\000\000\0015\000\000\000\000\000\000\014\178\000\000\000\000\014\146\000\000\014\162\0015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\194\000\000\000\000\0021\000\000\000\000\000\000\014\154\014\186\000\000\0015\000\000\000\000\000\000\000\000\000\000\001\169\000\000\000\000\001\169\000\000\0015\000\000\000\000\0021\000\000\0021\000\000\000\000\000\000\000\000\000\000\000\000\0021\0021\000\000\014\242\014\202\0021\001\169\001\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\194\000\000\000\000\0015\000\000\000\000\001\169\014\154\000\000\000\000\001\169\000\000\001\169\001\169\000\000\000\000\001\029\000\000\000\000\001\029\000\000\000\000\001\169\000\000\0015\001\169\0015\001\169\000\000\000\000\000\000\000\000\000\000\0015\0015\000\000\0015\014\202\0015\001\029\001\029\000\000\000\000\000\000\001\029\000\000\000\000\000\000\001\029\000\000\001\169\000\000\000\000\000\000\014\138\000\000\000\000\001\029\001\029\000\000\001\029\001\029\000\000\000\000\001\017\000\000\001\029\001\017\000\000\000\000\001\029\000\000\000\000\014\146\000\000\014\162\001\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\017\001\017\000\000\001\169\006\006\001\017\001\169\000\000\000\000\001\017\001\169\001\029\000\000\001\029\000\000\001\017\000\000\000\000\001\017\001\017\000\000\001\017\001\017\000\000\001\029\000\000\000\000\001\017\000\000\001\169\000\000\001\017\000\000\000\000\014\146\006\014\001\017\001\017\000\000\001\169\001\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\029\000\000\000\000\001\029\000\000\000\000\000\000\014\154\001\017\000\000\001\017\000\000\000\000\000\000\000\000\000\000\006^\000\000\000\000\006\182\000\000\001\017\000\000\000\000\001\029\000\000\001\029\000\000\000\000\000\000\000\000\000\000\000\000\001\029\001\029\000\000\001\029\001\029\001\029\006f\006\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\017\000\000\000\000\001\017\000\000\000\000\006n\014\154\000\000\000\000\002)\000\000\006\198\006\206\000\000\000\000\001\021\000\000\000\000\001\021\000\000\000\000\006\150\000\000\001\017\006v\001\017\006\134\000\000\000\000\000\000\000\000\000\000\001\017\001\017\000\000\001\017\001\017\001\017\001\021\001\021\000\000\000\000\000\000\001\021\000\000\000\000\000\000\001\021\000\000\006\158\000\000\000\000\000\000\001\021\000\000\000\000\001\021\001\021\000\000\001\021\001\021\000\000\000\000\001\025\000\000\001\021\001\025\000\000\000\000\001\021\000\000\000\000\014\146\000\000\001\021\001\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\025\001\025\000\000\006\166\000\000\001\025\002)\000\000\000\000\001\025\006~\001\021\000\000\001\021\000\000\014\138\000\000\000\000\001\025\001\025\000\000\001\025\001\025\000\000\001\021\000\000\000\000\001\025\000\000\002)\000\000\001\025\000\000\000\000\014\146\000\000\014\162\001\025\000\000\006\214\006\174\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\021\000\000\000\000\001\021\000\000\000\000\000\000\014\154\001\025\000\000\001\025\000\000\000\000\000\000\000\000\000\000\000\249\000\000\000\000\000\249\000\000\001\025\000\000\000\000\001\021\000\000\001\021\000\000\000\000\000\000\000\000\000\000\000\000\001\021\001\021\000\000\001\021\001\021\001\021\006f\006\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\025\000\000\000\000\001\025\000\000\000\000\006n\014\154\000\000\000\000\000\249\000\000\000\249\000\249\000\000\000\000\001)\000\000\000\000\001)\000\000\000\000\006\150\000\000\001\025\006v\001\025\006\134\000\000\000\000\000\000\000\000\000\000\001\025\001\025\000\000\001\025\001\025\001\025\014\130\014\170\000\000\000\000\000\000\001)\000\000\000\000\000\000\001)\000\000\006\158\000\000\000\000\000\000\014\138\000\000\000\000\001)\001)\000\000\001)\001)\000\000\000\000\001!\000\000\001)\001!\000\000\000\000\001)\000\000\000\000\014\146\000\000\014\162\001)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\130\014\170\000\000\006\166\000\000\001!\000\249\000\000\000\000\001!\006~\014\186\000\000\001)\000\000\014\138\000\000\000\000\001!\001!\000\000\001!\001!\000\000\001)\000\000\000\000\001!\000\000\000\249\000\000\001!\000\000\000\000\014\146\000\000\014\162\001!\000\000\000\249\006\174\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001)\000\000\000\000\001)\000\000\000\000\000\000\014\154\001!\000\000\001!\000\000\000\000\000\000\000\000\000\000\000\225\000\000\000\000\000\225\000\000\001!\000\000\000\000\001)\000\000\001)\000\000\000\000\000\000\000\000\000\000\000\000\001)\001)\000\000\001)\001)\001)\000\225\000\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000\000\000\000\001!\000\000\000\000\006n\014\154\000\000\000\000\000\225\000\000\000\225\000\225\000\000\000\000\001%\000\000\000\000\001%\000\000\000\000\000\225\000\000\001!\006v\001!\006\134\000\000\000\000\000\000\000\000\000\000\001!\001!\000\000\001!\001!\001!\014\130\014\170\000\000\000\000\000\000\001%\000\000\000\000\000\000\001%\000\000\000\225\000\000\000\000\000\000\014\138\000\000\000\000\001%\001%\000\000\001%\001%\000\000\000\000\001-\000\000\001%\001-\000\000\000\000\001%\000\000\000\000\014\146\000\000\014\162\001%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\130\014\170\000\000\000\225\000\000\001-\000\225\000\000\000\000\001-\006~\014\186\000\000\001%\000\000\014\138\000\000\000\000\001-\001-\000\000\001-\001-\000\000\001%\000\000\000\000\001-\000\000\000\225\000\000\014\178\000\000\000\000\014\146\000\000\014\162\001-\000\000\000\225\000\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001%\000\000\000\000\001%\000\000\000\000\000\000\014\154\014\186\000\000\001-\000\000\000\000\000\000\000\000\000\000\000\213\000\000\000\000\000\213\000\000\001-\000\000\000\000\001%\000\000\001%\000\000\000\000\000\000\000\000\000\000\000\000\001%\001%\000\000\001%\001%\001%\000\213\000\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\194\000\000\000\000\001-\000\000\000\000\000\213\014\154\000\000\000\000\000\213\000\000\000\213\000\213\000\000\000\000\014z\000\000\000\000\001=\000\000\000\000\000\213\000\000\001-\006v\001-\000\213\000\000\000\000\000\000\000\000\000\000\001-\001-\000\000\001-\001-\001-\014\130\014\170\000\000\000\000\000\000\001=\000\000\000\000\000\000\001=\000\000\000\213\000\000\000\000\000\000\014\138\000\000\000\000\001=\001=\000\000\001=\014\234\000\000\000\000\014z\000\000\001=\0011\000\000\000\000\014\178\000\000\000\000\014\146\000\000\014\162\001=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\130\014\170\000\000\000\213\000\000\0011\000\213\000\000\000\000\0011\006~\014\186\000\000\001=\000\000\014\138\000\000\000\000\0011\0011\000\000\0011\0011\000\000\001=\000\000\000\000\0011\000\000\000\213\000\000\014\178\000\000\000\000\014\146\000\000\014\162\0011\000\000\000\213\000\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\194\000\000\000\000\001=\000\000\000\000\000\000\014\154\014\186\000\000\0011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0011\000\000\000\000\001=\000\000\001=\000\000\000\000\000\000\000\000\000\000\000\000\001=\001=\000\000\014\242\014\202\001=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\194\000\000\000\000\0011\000\000\000\000\000\000\014\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014z\000\000\000\000\0019\000\000\000\000\000\000\000\000\0011\000\000\0011\000\000\000\000\000\000\000\000\000\000\000\000\0011\0011\000\000\0011\014\202\0011\014\130\014\170\000\000\000\000\000\000\0019\000\000\000\000\000\000\0019\000\000\000\000\000\000\000\000\000\000\014\138\000\000\000\000\0019\0019\000\000\0019\014\234\000\000\000\000\000\000\000\000\0019\000\000\000\000\021V\014\178\000\000\000\000\014\146\000\000\014\162\0019\000\000\000\000\000\000\000\000\021Z\000\000\000\000\000\000\000\165\000\000\000\000\023\154\000\000\000\000\021^\000\000\021b\n\253\n\253\000\000\000\000\014\186\000\000\0019\021f\000\000\000\000\000\000\000\000\000\000\021j\000\165\000\165\021r\0019\000\000\000\000\021v\000\000\000\000\000\000\000\000\000\000\021z\000\000\000\000\012\n\000\000\000\000\000\000\000\000\000\000\000\165\000\165\025B\023J\000\000\n\253\000\000\021~\000\000\014\194\000\165\000\000\0019\012\018\000\000\012\"\014\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\253\0019\021\130\0019\000\000\021\134\000\165\021V\000\000\000\000\0019\0019\000\000\0019\014\202\0019\022\210\000\000\021\138\021Z\000\000\000\000\000\000\021\142\000\n\021\146\000\000\021\150\021\154\021^\021\158\021b\000\000\000\153\000\000\000\000\n\209\021\162\000\000\021f\021\166\000\000\000\000\000\000\000\000\021j\000\165\000\000\021r\000\000\000\000\000\000\021v\012\026\000\000\021\170\000\153\000\153\021z\000\000\021\174\021\178\n\253\000\000\000\000\000\000\000\000\000\165\000\000\023\230\000\000\000\153\n\209\000\000\021~\000\000\000\000\000\153\000\153\000\000\000\000\000\000\000\165\000\165\000\000\000\000\000\000\000\153\000\000\000\000\012\018\000\000\000\153\000\000\000\000\tN\005\253\000\000\000\000\n\209\000\000\021\130\000\000\000\000\021\134\t\146\005\253\000\000\005\253\000\000\000\000\000\000\000\000\000\000\000\000\000\153\000\000\021\138\005\253\000\000\005\253\000\000\021\142\000\n\021\146\000\000\021\150\021\154\005\253\021\158\005\253\000\000\000\000\t\210\005\253\000\000\021\162\005\253\005\253\021\166\000\000\005\253\000\000\000\000\005\253\000\000\005\253\005\253\000\000\000\000\000\000\005\253\000\000\000\000\021\170\000\153\005\253\005\253\005\253\021\174\021\178\n\209\012\026\005\253\000Z\000\000\005\253\000\000\005\253\n&\000\000\000\000\005\253\005\253\000Z\005\253\000\153\000\000\005\253\005\253\000\000\000\000\000\000\000\000\000\000\005\253\000\000\000\000\000\000\000\000\005\253\000\153\000\153\005\253\000\000\000\000\005\253\nR\000\000\000\000\005\253\005\253\000Z\005\253\000\000\000\000\005\253\000\000\000\000\000\000\000\000\005\253\005\253\005\253\000\000\005\253\005\253\000\000\005\253\000\000\000\000\005\253\005\253\005\253\000\000\005\253\005\253\000\000\005\253\000\000\000\000\005\253\000\000\000\000\000\000\005\253\000\000\000\000\005\253\001\170\000\000\000\000\001\174\005\253\005\253\001\178\000\000\000\000\005\253\005\253\005\253\005\253\000\000\005\253\005\253\015\014\005\253\000\000\005\253\005\253\000\000\001\182\000\000\005\253\001\186\000\000\005\253\000\000\000\000\000\000\001\202\001\206\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\001\222\005\253\001\226\000\000\000\000\000\000\005\253\005\253\000\000\000\000\001\230\001\234\000\000\000\000\001\238\001\242\001\246\000\000\000\000\001\250\001\254\000\000\001\170\002\002\000\000\001\174\000\000\000\000\001\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\189\000\000\002\006\000\000\000\000\000\000\001\182\002\n\000\000\001\186\000\n\000\000\000\000\000\000\000\000\001\202\001\206\000\000\001\214\002\018\000\000\000\000\000\000\000\000\000\000\001\222\000\000\001\226\000\000\000\000\002\022\000\000\000\000\000\000\000\000\001\230\001\234\000\000\000\000\001\238\001\242\001\246\000\000\002\026\001\250\001\254\000\000\001\170\002\002\002\030\001\174\000\000\b\189\001\178\000\000\000\000\000\000\000\000\002\"\000\000\000\000\000\000\000\000\018\170\002&\002\006\000\000\000\000\000\000\001\182\002\n\000\000\001\186\000\n\000\000\000\000\000\000\000\000\001\202\001\206\000\000\001\214\002\018\000\000\000\000\000\000\000\000\000\000\001\222\000\000\001\226\001\170\000\000\002\022\001\174\000\000\000\000\001\178\001\230\001\234\000\000\000\000\001\238\001\242\001\246\000\000\002\026\001\250\001\254\000\000\000\000\002\002\002\030\001\182\000\000\000\000\001\186\000\000\000\000\000\000\000\000\002\"\001\202\007J\000\000\001\214\000\000\002&\002\006\000\000\000\000\000\000\001\222\002\n\001\226\000\000\000\n\000\000\000\000\000\000\000\000\000\000\001\230\001\234\000\000\002\018\001\238\001\242\001\246\000\000\000\000\001\250\001\254\000\000\001\170\002\002\002\022\001\174\000\000\000\000\001\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\026\000\000\000\000\002\006\000\000\000\000\002\030\001\182\002\n\000\000\001\186\000\n\000\000\000\000\000\000\002\"\001\202\002\014\000\000\001\214\002\018\002&\000\000\000\000\000\000\000\000\001\222\000\000\001\226\000\000\000\000\002\022\000\000\000\000\000\000\000\000\001\230\001\234\000\000\006*\001\238\001\242\001\246\000\000\002\026\001\250\001\254\000\000\004Y\002\002\002\030\004Y\000\000\000\000\004Y\000\000\000\000\000\000\000\000\002\"\000\000\000\000\000\000\000\000\000\000\002&\002\006\000\000\000\000\000\000\004Y\002\n\000\000\004Y\000\n\000\000\000\000\000\000\000\000\004Y\004Y\000\000\004Y\002\018\000\000\000\000\000\000\000\000\000\000\004Y\000\000\004Y\000\000\000\000\002\022\000\000\000\000\000\000\000\000\004Y\004Y\000\000\000\000\004Y\004Y\004Y\000\000\002\026\004Y\004Y\000\000\021V\004Y\002\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\"\021Z\000\000\000\000\000\000\000\000\002&\004Y\000\000\000\000\000\000\021^\004Y\021b\000\000\004Y\000\000\000\000\000\000\000\000\000\000\021f\000\000\000\000\004Y\000\000\000\000\021j\000\000\000\000\021r\000\000\000\000\000\000\021v\000\000\000\000\000\000\000\000\000\000\021z\000\000\000\000\000\000\000\000\000\000\005\253\000\000\004Y\005\253\000v\022\206\000\000\005\253\004Y\005\253\021~\000\000\000\000\000\000\005\253\005\253\000\000\004Y\000\000\000\000\000\000\000\000\000\000\004Y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\209\000\000\021\130\000\000\000\000\021\134\005\253\000\000\000\000\005\253\000\194\000\000\000\000\005\253\000\000\005\253\000\000\000\000\021\138\000\000\005\253\005\253\000\000\021\142\000\n\021\146\000\000\021\150\021\154\005\253\021\158\000\000\005\253\001f\000\000\005\253\001\002\021\162\000Z\005\253\021\166\005\253\000\000\000\000\000\000\000\000\005\253\005\253\000\000\005\253\005\253\000\000\000\000\005\253\005\253\021\170\000\000\000\000\000\000\000\000\021\174\021\178\n\209\000\000\000\000\005\253\000\000\000\000\000\000\000\000\005\253\000\000\000\000\000\000\004*\000\000\005\253\000\000\000\000\000Z\005\253\000\000\005\253\000\000\000\000\000\000\005\253\000\000\000\000\000\000\005\253\005\253\000\000\000\000\005\253\005\253\005\253\000\000\000\000\000\000\004\254\000\000\000\000\000\000\000\000\000Z\005\253\000\000\005\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\253\005\253\000\000\000\000\005\253\005\253\000\000\000\000\005\253\000\000\000\000\005\253\005\253\000\000\000\000\005\253\005\253\000\000\000\000\000\000\005\253\005\253\000\000\000\000\000\000\005\253\000\000\005\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\253\000\000\000\000\000\000\000\000\005\253\000\000\000\000\000\000\000\000\000\000\000\000\005\253\000\000\000\000\005\253\005\253\000\000\000\000\005\253\000\000\000\000\000\000\000\000\005\253\005\253\000\000\001\170\000\000\005\253\001\190\000\000\000\000\001\194\000\000\000\000\000\000\000\000\005\253\000\000\000\000\005\253\005\253\000\000\000\000\005\253\000\000\000\000\000\000\001\182\005\253\005\253\001\186\000\000\000\000\005\253\000\000\000\000\001\198\001\218\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\001\222\000\000\001\226\001\170\000\000\000\000\001\190\000\000\000\000\001\194\005v\001\234\000\000\000\000\005z\001\242\001\246\000\000\000\000\005~\005\130\000\000\000\000\005\134\000\000\001\182\000\000\000\000\001\186\000\000\000\000\000\000\000\000\000\000\001\198\0072\000\000\001\214\000\000\000\000\005\138\000\000\000\000\000\000\001\222\005\142\001\226\000\000\000\n\000\000\000\000\000\000\000\000\000\000\005v\001\234\000\000\005\150\005z\001\242\001\246\000\000\000\000\005~\005\130\005\253\000\000\005\134\005\253\003R\000\000\005\253\005\253\000\000\005\253\003\150\000\000\000\000\005\253\005\253\005\253\005\154\005\253\003\214\005\138\005\253\005\253\005\158\005\253\005\142\000\000\000\000\000\n\005\253\005\253\000\000\005\162\000\000\000\000\000\000\000\000\005\150\002&\000\000\000\000\000\000\000\000\000\000\000\000\005\253\000\000\000\000\000\000\005\253\000\000\005\253\000\000\000\000\000\000\005\253\000\000\000\000\000\000\005\253\000\000\005\154\000\000\005\253\000\000\005\253\000\000\005\158\000\000\007z\000\000\005\253\000\000\000\000\000Z\000\000\005\162\005\253\000\000\005\253\000Z\000\000\002&\005\253\000\000\005\253\000\000\000\000\000Z\005\253\005\253\005\253\000\000\000\157\000\000\005\253\005\253\000\000\000\000\005\253\000\000\005\253\000\000\005\253\005\253\000\000\000\000\005\253\000\000\000\000\000\000\000\000\005\253\000\000\000\000\005\253\000\157\000\157\005\253\000\000\000\000\000\000\005\253\000\000\000\000\000\000\005\253\005\253\005\253\000\000\000\000\000\157\000\000\005\253\000\000\000\000\005\253\000\157\000\157\000\000\000\000\005\253\000\000\000\000\000\000\000\000\000\000\000\157\000\000\000\000\012\018\000\000\000\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\253\000\000\000\000\005\253\005\253\000\000\005\253\005\253\000\000\005\253\005\253\000\000\005\253\005\253\005\253\000\157\000\000\005\253\005\253\005\253\000\000\005\253\001\170\005\253\000\000\001\190\005\253\005\253\001\194\000\000\000\000\005\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\182\000\000\000\000\001\186\000\000\000\000\000\000\000\000\000\000\001\198\005\146\000\157\001\214\000\000\000\000\000\000\000\000\000\000\012\026\001\222\000\000\001\226\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005v\001\234\000\000\000\157\005z\001\242\001\246\000\000\014e\005~\005\130\014e\000\000\005\134\000\000\000\000\000\000\000\000\000\157\000\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\138\014e\014e\000\000\000\000\005\142\000\000\000\000\000\n\005\182\000\000\000\000\000\000\000\000\000\000\000\000\014e\005\150\000\000\000\000\014e\000\000\014e\014e\000\000\000\000\005\190\000\000\000\000\005\202\000\000\000\000\014e\001\170\000\000\014e\n\190\014e\000\000\n\194\000\000\005\154\000\000\000\000\000\000\000\000\000\000\005\158\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\182\005\162\000\000\000\000\000\000\014e\000\000\002&\000\000\n\198\n\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\222\000\000\001\226\000\000\000\000\000\000\005\214\000\000\000\000\000\000\n\230\001\234\000\000\000\000\n\234\001\242\001\246\000\000\000\000\n\238\n\242\000\000\000\000\n\246\000\000\000\000\014e\014e\000\000\014e\000\000\005\218\000\000\014e\000\000\000\000\000\000\000\000\000\000\n\250\n\254\000\000\005\226\001\170\000\000\011\002\n\190\000\000\000\n\n\194\000\000\000\000\014e\000\000\000\000\000\000\000\000\011\n\014e\000\000\000\000\000\000\014e\014e\000\000\001\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\198\011\006\000\000\000\000\000\000\000\000\000\000\011\014\000\000\000\000\001\222\000\000\001\226\011\018\000\000\000\000\000\000\000\000\000\000\000\000\n\230\001\234\011\022\000\000\n\234\001\242\001\246\000\000\002&\n\238\n\242\000\000\000\000\n\246\000\000\000\000\000\000\000\000\001\170\000\000\000\000\n\190\000\000\000\000\n\194\000\000\000\000\000\000\000\000\n\250\n\254\000\000\000\000\000\000\000\000\011\002\000\000\000\000\000\n\000\000\001\182\000\000\000\000\000\000\000\000\000\000\000\000\011\n\000\000\n\198\011\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\222\000\000\001\226\001\170\000\000\000\000\r\150\000\000\000\000\r\154\n\230\001\234\011\014\000\000\n\234\001\242\001\246\000\000\011\018\n\238\n\242\000\000\000\000\n\246\000\000\001\182\000\000\011\022\000\000\000\000\000\000\000\000\000\000\002&\r\158\014\250\000\000\000\000\000\000\n\250\n\254\000\000\000\000\000\000\001\222\011\002\001\226\000\000\000\n\000\000\000\000\000\000\000\000\000\000\r\182\001\234\000\000\011\n\r\186\001\242\001\246\000\000\000\000\r\190\r\194\000\000\000\000\r\198\000\000\000\000\000\000\000\000\001\170\000\000\000\000\r\150\000\000\000\000\r\154\000\000\000\000\011\014\000\000\n\250\r\202\000\000\000\000\011\018\000\000\r\206\000\000\000\000\000\n\000\000\001\182\000\000\011\022\000\000\000\000\000\000\000\000\r\214\002&\r\158\r\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\222\000\000\001\226\001\170\000\000\000\000\r\150\000\000\000\000\r\154\r\182\001\234\r\218\000\000\r\186\001\242\001\246\000\000\r\222\r\190\r\194\000\000\000\000\r\198\000\000\001\182\000\000\r\226\000\000\000\000\000\000\000\000\000\000\002&\r\158\r\210\000\000\000\000\000\000\n\250\r\202\000\000\000\000\000\000\001\222\r\206\001\226\000\000\000\n\000\000\000\000\000\000\000\000\b\181\r\182\001\234\000\000\r\214\r\186\001\242\001\246\000\000\000\000\r\190\r\194\b\181\000\000\r\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\181\000\000\b\181\000\000\000\000\000\000\r\218\000\000\n\250\r\202\b\181\000\000\r\222\000\000\r\206\000\000\b\181\000\n\000\000\b\181\000\000\r\226\023\226\b\181\022*\000\000\r\214\002&\000\000\b\181\000\000\000\000\000\000\000\000\021Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021^\b\181\021b\000\000\000\000\000\000\r\218\000\000\000\000\000\000\021f\000\000\r\222\000\000\000\000\000\000\021j\000\000\000\000\021r\000\000\r\226\000\000\021v\000\000\000\000\000\000\002&\b\181\021z\000\000\b\181\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\181\021~\024\002\000\000\000\000\b\181\b\181\b\181\000\000\b\181\b\181\000\000\b\181\000\000\000\000\000\000\000\000\000\000\000\000\b\181\000\000\000\000\b\181\b\029\000\000\000\000\000\000\000\000\021\130\000\000\000\000\021\134\000\000\000\000\000\000\b\029\000\000\b\181\000\000\000\000\000\000\000\000\b\181\b\181\021\138\b\029\000\000\b\029\000\000\021\142\000\n\021\146\000\000\021\150\021\154\b\029\021\158\000\000\000\000\000\000\000\000\b\029\000\000\021\162\b\029\000\000\021\166\000\000\b\029\000\000\022\178\000\000\000\000\000\000\b\029\000\000\000\000\000\000\000\000\000\000\000\000\021\170\021Z\000\000\000\000\000\000\021\174\021\178\000\000\000\000\b\029\024\002\021^\000\000\021b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021f\000\000\000\000\000\000\000\000\000\000\021j\000\000\000\000\021r\000\000\000\000\000\000\021v\000\000\b\029\000\000\000\000\b\029\021z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\029\000\000\000\000\000\000\021~\b\029\b\029\b\029\000\000\b\029\b\029\000\000\b\029\000\000\000\000\000\000\000\000\000\000\000\000\b\029\000\000\000\000\b\029\000\000\000\000\000\000\022\202\000\000\000\000\000\000\000\000\021\130\000\000\000\000\021\134\000\000\000\000\b\029\021Z\000\000\000\000\000\000\b\029\b\029\000\000\000\000\000\000\021\138\021^\000\000\021b\000\000\021\142\000\n\021\146\000\000\021\150\021\154\021f\021\158\000\000\000\000\000\000\000\000\021j\000\000\021\162\021r\000\000\021\166\021V\021v\000\161\000\000\000\000\000\000\000\000\021z\000\000\000\000\000\000\000\000\021Z\000\000\021\170\000\000\000\000\000\000\000\000\021\174\021\178\000\000\021^\021~\021b\000\161\000\161\000\000\000\000\000\000\000\000\000\000\021f\000\000\000\000\000\000\000\000\000\000\021j\000\000\012\n\021r\000\000\000\000\000\000\021v\000\161\000\161\000\000\000\000\021\130\021z\000\000\021\134\000\000\000\000\000\161\000\000\000\000\012\018\000\000\012\"\000\000\000\000\000\000\000\000\021\138\023v\000\000\000\000\000\000\021\142\000\n\021\146\000\000\021\150\021\154\000\000\021\158\000\000\000\000\000\000\000\000\000\000\000\161\021\162\000\000\000\000\021\166\021V\000\000\000\000\000\000\000\000\021\130\000\000\000\000\021\134\000\000\000\000\000\000\021Z\000\000\021\170\000\000\000\000\000\000\000\000\021\174\021\178\021\138\021^\000\000\021b\000\000\021\142\000\n\021\146\000\000\021\150\021\154\021f\021\158\000\000\000\161\000\000\000\000\021j\000\000\021\162\021r\012\026\021\166\000\000\021v\000\000\000\000\000\000\000\000\000\000\021z\000\000\000\000\000\000\000\000\000\161\000\000\021\170\000\000\000\000\000\000\000\000\021\174\021\178\000\000\000\000\024\206\000\000\000\000\000\000\000\161\000\161\000\000\004i\004i\004i\004i\000\000\004i\000\000\004i\004i\000\000\004i\000\000\004i\000\000\004i\000\000\004i\004i\004i\004i\021\130\000\000\000\000\021\134\000\000\000\000\000\000\000\000\000\000\001v\000\000\000\000\000\000\000\000\004i\000\000\021\138\000\000\000\000\000\000\000\000\021\142\000\n\021\146\000\000\021\150\021\154\000\000\021\158\004i\000\000\000\000\000\000\000\000\000\000\021\162\000\000\000\000\021\166\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004i\000\000\000\000\000\000\021\170\000\000\004i\000\000\000\000\021\174\021\178\000\000\000\000\000\000\004i\000\000\000R\000V\000f\000\170\000\000\000\174\000\000\000\178\000\246\000\000\000\254\004i\001\014\000\000\001\022\000\000\001\030\0012\001:\001>\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001F\000\000\000R\000V\000f\000\170\000\000\000\174\004i\000\178\000\246\000\000\000\254\000\000\001\014\001N\001\022\000\000\001\030\0012\001:\001>\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001^\001F\000\000\000\000\000\000\000\000\001j\000\000\021V\000\000\000\000\000\000\000\000\000\000\001b\000\000\001N\000\000\004i\000\000\021Z\000\000\000\000\000\000\000\000\000\000\000\000\001n\000\000\000\000\021^\000\000\021b\000\000\000\000\000\000\001^\000\000\000\000\000\000\021f\000\000\001j\000\000\000\000\000\000\000\000\000\000\000\000\021r\001b\000\000\000\000\021v\000\000\000\000\000\000\000\000\000\n\021z\000\000\000\000\000\000\001n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021~\000\000\000\000\001r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\130\012\181\000\000\021\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001r\000\000\000\000\000\000\021\138\000\000\000\000\000\000\000\000\021\142\024\250\021\146\000\000\021\150\021\154\000\000\021\158\000\000\000\000\000\000\000\000\000\000\000\000\021\162\000\000\002I\021\166\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\170\000\000\000\000\000\000\000\000\021\174\021\178\000R\000V\000f\000\170\000\000\000\174\000\000\000\178\000\246\000\000\000\254\000\000\001\014\000\000\001\022\000\000\001\030\0012\001:\001>\000\177\000R\000V\000f\000\170\000\000\000\174\000\000\000\178\000\246\000\000\000\254\000\000\001\014\001F\001\022\000\000\001\030\0012\001:\001>\000\000\000\000\012\002\012*\000\000\000\000\000\000\000\000\001N\000\000\000\000\000\000\000\000\000\000\001F\000\000\000\000\012\n\000\000\000\000\000\000\014I\000\000\000\177\000\177\000\000\000\000\000\000\001^\001N\000\000\000\000\000\000\000\177\001j\000\000\012\018\000\000\012\"\000\000\000\000\000\000\001b\000\000\014I\014I\004^\004b\000\000\001^\000\000\000\000\0116\000\217\000\000\001n\000\217\000\000\000\000\014I\000\000\012:\000\000\001b\000\000\014I\014I\026~\004b\011>\000\000\000\000\011J\000\000\000\000\014I\000\217\000\217\014I\000\000\014I\000\000\000\000\000\000\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\217\000\000\000\000\000\000\000\217\000\000\000\217\000\217\000\000\000\000\000\177\000\000\014I\000\000\000\000\004f\000\217\012\026\000\000\006v\000\000\000\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\177\011V\000\000\000\000\000\000\026\130\003m\000\000\000\000\002A\000\000\000\000\000\000\000\217\000\000\000\177\000\177\000\000\000\000\000\000\000\000\014I\000\000\000\000\000\000\000\000\011Z\003e\014I\000\000\000\000\000R\000V\000f\000\170\000\000\000\174\011b\000\178\000\246\000\000\000\254\014I\001\014\000\000\001\022\000\000\001\030\0012\001:\001>\000\000\000\000\000\217\000\000\000\000\000\217\014I\014I\000\000\006~\000\000\000\000\000\221\000\000\001F\000\221\000\000\000\000\000\000\000\000\000\237\000\000\000\000\000\237\000\000\000\000\000\000\000\000\000\217\001N\000\000\000\000\000\000\000\000\000\000\000\221\000\221\000\000\000\217\000\217\000\000\000\000\000\000\006f\006\142\000\000\000\000\000\000\000\000\001^\006n\000\000\000\000\000\000\000\221\000\000\000\221\000\221\006n\000\000\000\000\000\000\000\237\001b\000\237\000\237\000\221\026~\004b\006v\000\000\006\134\000\229\000\000\000\237\000\229\000\000\006v\000\000\006\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\221\006f\006\142\000\000\000\000\000\000\000\000\000\000\006\158\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006n\000\000\000\000\000\000\000\229\000\000\000\229\000\229\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\229\026\138\000\000\006v\000\000\006\134\000\000\000\000\000\221\000\000\000\000\000\221\000\000\000\000\000\000\006~\000\237\000\000\000\000\000\237\000\000\000\000\000\000\006~\000\000\000\000\000\000\000\000\000\229\000\000\000\000\000\000\000\233\000\000\000\221\000\233\000\000\000\000\000\000\000\000\000\000\000\000\000\237\000\000\000\221\000\221\000\000\000\000\000\000\000\000\000\000\000\000\000\237\000\237\000\000\006f\006\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\241\000\000\000\000\000\241\000\229\000\000\006n\000\229\000\000\000\000\000\233\006~\000\233\000\233\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\233\006f\006\142\006v\000\000\006\134\000\000\000\000\000\229\000\000\006^\000\000\000\000\001\001\000\000\000\000\006n\000\000\000\229\000\229\000\241\000\000\000\241\000\241\000\000\000\000\000\000\000\000\006\158\000\000\000\000\000\000\006\150\006f\006\142\006v\000\000\006\134\000\000\000\000\000\000\000\000\006^\000\000\000\000\000\245\000\000\000\000\006n\000\000\000\000\000\000\001\001\000\000\001\001\006\206\000\000\000\000\000\000\000\000\006\158\000\000\000\000\000\000\006\150\006f\006\142\006v\000\233\006\134\000\000\000\233\000\000\000\000\006^\006~\000\000\000\253\000\000\000\000\006n\000\000\000\000\000\000\000\245\000\000\000\245\000\245\000\000\000\000\000\000\000\000\006\158\000\000\000\233\000\000\006\150\006f\006\142\006v\006\166\006\134\000\000\000\241\000\233\000\233\000\000\006~\000\000\000\000\000\000\000\000\006n\000\000\000\000\000\000\000\253\000\000\000\253\006\206\000\000\000\000\000\000\000\000\006\158\000\000\000\241\000\000\006\150\000\000\000\000\006v\006\166\006\134\000\000\001\001\000\241\000\241\000\169\006~\nf\000\000\000\000\nj\000\000\000\000\000\000\025\214\000\000\nn\000\000\000\000\000\000\000\000\nr\025\218\006\158\000\000\001\001\000\000\000\000\012\002\012*\000\000\006\166\000\000\000\000\000\245\006\214\006\174\000\000\006~\000\000\000\000\000\000\000\000\012\n\000\000\000\000\000\000\000\000\000\000\000\169\000\169\000\000\000\000\000\000\000\000\016\202\000\000\000\245\000\000\000\169\000\173\000\000\012\018\006\166\012\"\000\000\000\253\000\245\006\174\000\000\006~\016\206\000\000\000\000\000\000\000\000\000\000\000\000\000\181\000\000\000\000\000\000\000\000\012\002\012*\000\000\011\250\000\169\000\000\000\253\000\000\001\234\000\000\000\000\000\000\r\026\001\246\000\000\012\n\000\253\006\174\012\002\012*\000\000\000\173\000\173\000\000\000\000\000\000\012\002\012*\000\000\000\000\000\000\000\173\000\000\012\n\012\018\000\000\012\"\000\000\000\000\000\181\000\181\012\n\000\000\000\000\000\169\000\n\000\000\000\197\012Z\0122\004\189\012\026\012\018\000\000\012\"\000\000\000\000\0122\000\000\012:\012\018\000\000\012\"\000\000\000\000\000\169\000\000\000\000\000\000\011\250\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012:\000\000\000\000\000\169\000\169\000\000\000\000\000\000\012:\000\000\000\000\000\000\000\000\000\000\000\000\012\002\012*\000\000\t)\t)\000\000\000\000\000\173\t)\000\000\000\000\000\000\000\000\000\000\012\026\012\n\000\000\000\000\000\000\000\000\000\000\000\185\000\185\000\000\000\000\012B\000\000\011\250\000\173\000\000\000\000\0122\012\026\012B\012\018\000\000\012\"\000\000\000\000\000\000\012\026\000\000\000\000\000\173\000\173\000\000\000\181\000\000\000\000\000\000\012\002\012*\000\000\000\000\000\197\000\000\000\000\000\000\000\000\012:\000\000\000\181\000\181\000\000\000\000\012\n\000\000\000\000\000\000\012b\012J\000\193\012Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0122\000\000\000\000\012\018\000\000\012\"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012B\000\000\000\000\000\000\000\000\000\000\000\000\012\026\000\000\000\000\012:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\185\012J\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012B\000\000\000\000\000\000\000\000\000\000\000\000\012\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\193\012J"))
+    ((16, "\000\240\000\193\000\000\000\000\n\228\000\193\000\000\000\000\001\248\000\000\000\000\000\000\000\235\000\000\000\000\000\000\000\240\000\000\000u \136\000\000\019x\019x\000\000\000\0000n\019x\000\000Cv\019x\000\000\000\000\019x\000\000\019x\000\000\000\151\000%\019x\000\000\019x\000\000\000\000\000\00018\019x\000\000C\192\019x\000\000\000\000\019x\000\000\019x\000\000\000O\000\234\019x\000\000\019x\000\000\019x\000\000C\244\019x\000\000\000\000\019x\000\000\019x\000\000\001J\001J\001J\000\000\000\164\001b\000\015\000\000\000|\000\015\000\000\000\000\000\000\000\000\000\000\000\000\001\212\000\000\000\000\000d\003v\000\000\000\146\004\206\001J\000\000\000\244\005p\000\000\000\000\000\000\001\178\019x\000\000?|\001J\001\190\019x\000\000\000\000\019x\000\000\000\000\019x\000\000\019x\000\000\0022\002\158\019x\000\000 \136C\192O\162\000\000\000\000N\222\00323\004\004&O\162\000\000\000\000\002~\019x\000\000O\162\000\000\000\015\000x>.\000\000\000\000A6\000\000D\220\000\000E42\2262\226\024&\024&D\220\024&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000A\1422\226\000\000\000\000A\142\000\000A\142\000\0002\226\000\000\000\000\000\000\0280\000\015\000\000\020\230\024&1\1502\226\"V2\226\000\000\000\000\000\000\000\000\000\000\000\000#\1622\226$\1822\226%\0242\226&,2\226\000\0002\226\000\0002\226&\1422\226'\1622\226(\0042\226)\0242\226)z2\226*\1422\226\002\2102\226\000\000\000\000\000\000\000\000\000\0002\226*\2402\226,\0042\226,f2\226\000\000\000\0002\226\000\000\002\234\000\000\003\128\000\000\000\0212\226\000\000\000\021\000\000\000\000\002l \136\000\000\018\182\019x\000\000\001\002\019x\000\000E\240\019x\000\000\000\000\019x\000\000\019x\000\000\003\202\004\024\019x\000\000\019x\000\000\001\244\019x\000\000E\252\019x\000\000\000\000\019x\000\000\019x\000\000\004L\004\250\019x\000\000\019x\000\000\019x\000\000F\012\019x\000\000\000\000\019x\000\000\019x\000\000\004\206\001J\004\188\019x\000\000C\244\001J\005\n\019x\000\000\000\000\019x\000\000\019x\000\000\019x\000\000\005n\005\216\019x\000\000E\240O\162\005\128\019x\000\000S\142O\208\000\000\002\186\006V\000\015\005\166\006\208P\188P\188\000\000\000\000\000\1995\bP\188\001<P\238\000\000\000\000\000\000\001`\006\196\000\015\006\244P\188\000\000\000\000\006\138\000\000\006\210\007\164P\188\006\240\000\000\000\000\000\000\002\012Q\160\000\000\000\000\000\000\007\028\b<\000\000\bT\000\000\018\182\004\242O\162\007j\019x\000\000E\252O\162\007r\019x\000\000\000\000\000\015\bd\000\000\000\000\000\000\002l\000\000\000\000\020\230\000\000\000\000\000\000\000\000\000\000\000\000\000\000G\0262\226\007\134\000\000\000\000G\026\000\000G\026D\220\000\000\000\000>\196\000\015\000\000\020\230\002\228\023V\020\230P\0202\226\000\0002\226\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000S\222D\220T^D\220T\222D\220U\030D\220\000\000D\220\000\000D\220U^D\220U\158D\220U\222D\220V\030D\220V^D\220V\1582\226\007\180D\220\000\000D\220V\222D\220W\030D\220W^\003x\021\182\000\000\000\000\003\220\022\134\000\000\000\000\000\000\007\154\000\0002\226\007\154\000\000\000\000\000\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\176\000\0002\226\007\176\000\000\000\000\000\015\000\000\000\000\000\000\000\000\000\000\007\188\000\000\000\000\007\194D\220\000\000\000\000\007\194\000\000\000\000BX\b\1282\226\bF\000\000\000\000D\220\000\000\000\000\007\216\000\000\007\2382\226\000\000\024&\007\248\000\000\000\000\b\210\000\000\024&\b\002\000\000\000\000\b\n\000\000\000\000\000x\000\000\b\246\000\000F\160O\162\b\014\019x\000\000\000\000\b\150\000\000\b\022\019x\000\000\000\000\000\019 \136\000\000 \136\000\000\b\n\000\000\000\019\000\000\017&#L\019N\000\000\003\154\019N\000\000\019N\019N\000\000\000\000\019N\000\000\019N\000\000\bP\b\132\019N\000\000\019N\000\000\006\186\019N\000\000\019t\019N\000\000\000\000\019N\000\000\019N\000\000\bZ\b\144\019N\000\000\019N\000\000\019N\000\000\019x\019N\000\000\000\000\019N\000\000\019N\000\000\005h\001J\b:\019N\000\000\019b\001J\bB\019N\000\000\000\000\019N\000\000\019N\000\000\019N\000\000\bt\b\172\019N\000\000 \136\b\\\000\000\019xO\162\bV\019N\000\000\000\000\000\246\000\000\000\206\000\246\000\000\000\000\000\000\tD\000\000\006\000O\162\b^\019N\000\000?bO\162\bb\019N\000\000\000\000\024\250\019N\000\000\006\240\019N\000\000?b\019N\000\000\000\000\019N\000\000\019N\000\000\b\146\b\196\019N\000\000\019N\000\000\b(\019N\000\000?l\019N\000\000\000\000\019N\000\000\019N\000\000\b\160\b\210\019N\000\000\019N\000\000\019N\000\000?\228\019N\000\000\000\000\019N\000\000\019N\000\000\006\210\001J\b|\019N\000\000?\128\001J\b\128\019N\000\000\000\000\019N\000\000\019N\000\000\019N\000\000\b\176\b\222\019N\000\000?\218O\162\b\136\019N\000\000\000\000\007\022O\162\b\138\019N\000\000@\028O\162\b\140\019N\000\000\000\000\000\000\000\000\000\000\000\000\t\\2\226\b\152\025\246\tb2\226\b\160\td3\004\000\000\000\000\000\000 \136\000\015\000\000\000v2\226-J\000\000H\0162\226\b\202\000\000\024&\b\216\000\000\b\218\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\1542\226\000\000H\154\000\000H\154H\242\024&\b\220H\242\000\000\000\000S\170\000\015\000\000\020\230\b\222\000\0002\226\b\220\000\000\000\000\000\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\226\001\0062\226\b\224\000\000\000\000-J-J\029\\\002\154\t\1602\226\000\000\tf\000\000\000\000\000\015\000\000\029\190\000\000\t\026-J\000\000\t\024-J\000\000\000<\000\000\000\0000FH\242W\158H\242W\222H\242X\030H\242\000\000H\242\000\000H\242X\150H\242X\214H\242X\248H\242Y8H\242YNH\242Y\176H\242Y\240H\242ZRH\242Zh\001\210-\212\000\000\002\150.\232-J\000\000\003..^\000\000\000\000\000\000\b\234\000\000\000\000\b\242\000\000\t\228\000\000\000\015\000\000\000v\t\232\000\000\000a\t\184\000\015\t\b\t\208P\188\t\012\002\\\000\0002\226\t\244\000\000\006.\007\218\t\216P\188\t\022\t\254\000\000\001J2\226\n\000\000\000\n\002\000\000\018\182\000\015\002\0242\226\n\004\000\000\n\006\000\000\000\015\004H2\226\n\b\000\000\n\n\000\000\002\166\tR\007$\000\000I|I\212\024&\t*\000\000\t.I\212\000\000\000\000\000\000\000\000\000\000\000\000J^2\226\000\000J^\000\000J^I\212\000\000\000\000\031\224\000\015\000\000\020\230\t0\000\0002\226\t.\000\000\000\000\000\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000/\1602\226\000\0002\226\000\000\t6\000\000\000\021\000\000\000\000\000\000\000\000\000\0003\148I\2123\244I\2125\bI\2125hI\212\000\000I\212\000\000I\2126|I\2126\220I\2127\240I\2128PI\2129dI\2129\1962\226\tfI\212\000\000I\212:\216I\212;8I\212<L\024&\tD\000\000\000\0002\226\000\000\n,\000\000\001l\n\0022\226\t\200\000\000\n\b2\226\t\208\000\000\002\156\000\000\007$\007$\001l\000\000\001l\000\000\017&\007$\007$\000\000\000\000\000\000\000\000\000\000\000\000\n 2\226\t\\\025\246\026\206\000\015\nD\000\000\n,>.\nT>.\nV2\226\t|\025\246\025\246\007\174\006\190\004\172\bn\006\190\000\000\000\000\004\216\br\000\000\004\222\b\168\000\000\000\000\000\000\000\000\000\000\t~\000\000\000\000\nf\000\000\nl\000\000\000\000\n\166\nP2\226\t\140\nt\000\000\nV\020\230\t\146\025\246\000\000\000\000\t\190\000\000\000\021\000\000\005\182\000\000\000\000\001l\000\000\n\020\000\000\012\220\003\028\000\000\012\220\000\000\000\000\030r\000\000\003\028\000\000\000\000\n\000\000\000\012\220\000\000\n^\020\230\t\158\n\134\000\000\001\194\000\000\n^\000\015\t\174\nxP\188\t\180\0064\000\0002\226\n\156\000\000\n~P\188\t\186\n\166\000\000\004\2042\226\n\168\000\000\n\170\000\000\018\182\000\015\005\1782\226\n\172\000\000\n\174\000\000\000\000\000\000\n\000\000\000\000\000\000\026\000\000\007$\000\000\001\194\000\000\000\000\005\150\026\206\000\000\005\150\000\000\000\000\t\204\000\000\000\021\000\003\025\246\000\000\004H\000Q\004H\000\000\000\026\000\000\007$\000\000\007$\000\000\000\000\000\000\t\198\000\000\000\000\t\212\000\000\006\030\005\182\002\208\004H\000\000\000\000\000\000\007\188\000\000\007$\000\000\006\030\000\000\000\000\005\148\000Q\017&\000\000\002\030\000\000\b\146\017&\000\000\000\000\b\146\000\000\000\000\t\212\000\000\000\000\t\218\000\000\006N\007$\000\000\006N\000\000\000\000\nZ\000\000\000\026\000\000\007$\000\000\000\000\000\000\018\136@\184\000\000\n\196\000\000\018\136\000\000\n\198\000\000\n\204\000\000 \136\000\015\006\178\000\0002\226\n\208\000\000\003\006\n\160\000\015\t\240\n\186P\188\t\246\007\b\000\0002\226\n\222\000\000\007\028\000\0002\226\n\226\000\000\018\182\000\015\007X\000\0002\226\n\228\000\000\006\182\018\136\000\000\030r\007\170\000\0002\226\n\230\000\000\000\000\000\000\004\024\000\000\n\200\020\230\n\004\n\236\000\000\004t\000\000\n\190\000\015\n\014\n\218P\188\n\022\b\n\000\0002\226\011\024\000\000\bP\000\0002\226\011.\000\000\018\182\000\015\bR\000\0002\226\0110\000\000\006\182\000\000\000\000\nN\000\000\004\024\005\234\n\204\000\000\000\000\000\000\n\208\000\000\000{\002\156\000\000\017&\011&\000\000\000\0002\226\n\128\007$\000\000\nR\000\000\002\166\000\0003\004\000\000\000\000\000\\\017&\000\000\017&\000\000\n@\000\000\000\\\000\0002\226\004\1982\226\000\0002\226\000\000\nB\000\000\004\198\000\0002\226\004\198\nD\000\000\025\246\006$\025\246\000\000\025\246\000\000\nH\000\000\006$\000\0002\226\004\198\nJ\000\0003\004\006z3\004\000\0003\004\000\000\nL\000\000\006z\000\0002\226\004\198\nR\000\000\000\000\0280\000\000\000\000\n\198<\204\000\000\000\000\000\000\000\000\000\000\n\154\004H\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\130<\204\000\000\005\026\003\198\000\000\n\158\000\193\000\000\000\000\000\000\003N\003\198\000\000\000\000\000\000\000\000\n\252\000\000\000\000\000\000\000\000\031\224!N\000\000K\018\000\000<\204\000\000\003H<\204\000\000\000b\000\132\000\132\000\000\004\"\000\132\000\000\nt\000\000\000\000\000\000\000\000\011\000\000\000!\204\000\000#L<\204\000\000\006\182<\204\000\000\011\004\000\000<\204\011\b\000\000Lx=\146\011\n\000\000\011\014\000\000M>B\242<\204\000\000\000\000\n\136<\204\011\018\000\000\011\020\000\000\011\022\000\000 \136\000\000\006b \136\000\000\n\144\019N\000\000\003*<\204\000\000\005h<\204\000\000\004^\011\152\000\000\011\154\000\000<\204<\204\n\150\000\000\000\000\000\000\000\000\000\000\000\000\011$\000\000M\142<\204\011&\000\000\011(\000\000<\204\0112\000\000<\204\n\220\000\193\000\000\000\000\006\228<\204\000\000\004^\000\000\011:\000\000<\204\011<\000\000<\204\011@\000\000Kb=\146<\204\n\188<\204\011L\000\000\011N\000\000L(\000\000\000\000\007z<\204\000\000\b\170\004\024\000\132\n\198\000\000\000\000\001\212\001\212\000\000\000\000\000\000\006\170\001\212\000\000\n\206\000\000\000\000\000\000\000\000\000\000\000\000<\204\000\000\007\136<\204\000\000\000\003\000a\000\193\n\216\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011p\000\000\011r\000\000<\204\011t\000\000NT<\204\011|\000\000\011~\000\000<\204\011\128\000\000\025T\011&Q\026\019b\000\000<\204\011\132\000\000\011\134\000\000\011V\025T<\204\011\138\000\000<\204\011\144\000\000\011\146\000\000<\204\011\020<\204\011\160\000\000\011\164\000\000\000\193\011\016\000\000\000\000\0280\000\000\000\000\002\142\012\004\000\000\000\000\001)\000\000\000\000\000\0002\226\000\000\000\000\000\000\002\218\000\000\000\216\000\000\000\000\000\000\004HH,H,H,\000\000\000\246\000\246\000\246\000\246\000\000\000\000\000\000\000\000\000\000\000\000\001l\017&\011\250\014J\001R\000\000\000\000\002\166\000\000\n\000\000\000-J\011(\000\000\001l\017&\011.\015\184\000\000\001l\014J\000\000\000\000\000\000H,\000\246\000\000\000\000\000\000\011|\001\212\011\250RfRf\000\000\005\1926|Rf\006\172R\148\000\000\000\000\004&\011\234\000\015\000\000\007:SF\000\000\000\000\000\000\000\000\000\000\0118\011\248\007$\0116\000\000\002\166\000\000\n\000\000\000\025\026\004\154\000\000\000\000\011\228\000\000\000\000\002\142\000\000\004\128\000\000\000\000\000\0002\226\000\000\002\218\000\000\004\174\000\000\000\000\000\000\005\182\000\000\011n\002\192\011n\000\000\007$\011n\000\000\0048\000\000\007$\000\000\007$\000\000\007$\000\000\t\138\000\000\000\000\000\000\000\000\000\000\007$\000\000\0048\000\000\007$\000\000J\228\000\000\000\000\006\142\011j\000\193\006\210\012\012\004@\000\000\004@\0124\000\000\0126\000\000\012:\000\000\000\000\007\016\004@\007\206\004@\000\000\000\000\002\b\003\240\011:\000\000\011<\000\000\011~\000\193\003\240\011F\000\000\000\192\012J\000\000\004\218\006R\012^\005l\012^\000\000\000\000\006\240\000\193\000\000\000\227\000\000\000\000\003\166\000\000\011P\000\000\000\000\000\000\011\142\000\193\003\240\011T\000\000\000\000\000\192\004\218\006R\006\240\000\227\003\166\011X\000\000\004\218\006R\006\240\000\227\003\166\011Z\000\000\004\\\006\014\011v\000\193\011p\b$\b\140\011\154\000\193\000\000\011\156\000\193\000\000\011\252\000\000\011\132\006\154\011\130\b$\012\b\000\000\011\160\b$\012(\000\000\000\000\b$\000\000\0128\000\000"), (16, "\r\t\r\t\r\t\r\t\r\t\r\t\r\t\r\t\r\t\r\t\r\t\b\t\r\t\r\t\r\t\r\t\r\t\r\t\r\t\r\t\r\t\r\t\029\158\r\254\016*\b\t\r\t\025\170\004\221\029\162\026\171\026\175\000\n\016^\r\t\026\179\024V\024^\r\t\r\t\025>\r\t\b\150\002z\r\t\017v\012}\014*\002\134\r\t\r\t\r\t\000N\b\182\021\182\021\222\021\238\022\022\022&\022N\r\t\0007\000;\r\t\r\t\006\185\004\221\005:\017v\r\t\r\t\b\221\r\t\003\194\r\t\000\150\025\166\016*\b\t\r\t\000\n\r\t\r\t\r\t\r\t\r\t\016^\001F\001*\r\t\r\t\r\t\001J\r\t\r\t\r\t\001N\021\150\r\t\r\t\r\t\r\t\r\t\t\145\012\178\021N\r\t\r\t\017\134\b\158\000\154\000\226\0012\001R\012\141\0069\022\138\r\t\r\t\r\t\r\189\000\n\r\t\r\t\r\t\r\t\023f\r\t\004\233\r\t\011\146\b\t\r\t\011\150\0026\r\t\r\t\026\246\003\242\011\154\003\250\023j\004\n\b\t\011\158\026\250\018\190\r\t\007\230\004\018\r\t\000\006\000\"\006\241\r\t\r\t\r\t\r\t\012\229\006\145\r\t\017\134\r\t\005b\021\158\t\145\r\t\r\t\r\t\004\185\r\t\006\185\r\t\r\t\006a\r\t\006Q\r\t\r\t\004\026\012\242\r\t\r\t\006\193\006\193\006\193\006\193\006\193\006\193\006\193\006\193\006\193\006\193\006\193\r\254\006\193\006\193\006\193\006\193\006\193\006\193\006\193\006\193\006\193\006\193\011\226\0069\t\242\001B\006\193\016.\016>\016N\004*\002z\006\241\001n\006\193\014*\002\134\012\141\006\193\006\193\by\006\193\r\230\0069\006\193\004\185\006y\0069\004\233\006\193\016*\006\193\004\185\029j\004\233\004\233\001z\001\"\001&\016^\006\193\000.\000\230\b\137\005Z\004m\004\233\004\233\000\n\006\193\006\193\0016\004m\005\t\006\193\006\193\0046\001*\004>\006\193\004N\006\193\006\193\006\193\006\193\006\193\t\250\004V\001*\006\193\006\193\006\193\004\233\006\193\006\193\006\193\012\186\017\234\006\193\006\193\006\193\006\193\006\193\026\211\026\215\001\138\006\193\006\193\026\219\004A\000\n\000&\0025\017\238\012\213\006Y\006Y\004^\006\193\006\193\012\198\000\n\006\193\006\193\006\193\006\193\025V\006\193\014J\006\193\001.\000*\006\193\002z\017\134\006\193\006\193\014*\002\134\b\t\012\141\005F\002z\017v\029&\b\205\002\130\002\134\r\230\018\142\006\193\004n\016*\b\t\006\193\006\193\006\193\006\193\001b\003\149\006\193\016^\006\193\003\149\r\189\r\189\006\193\006\193\006\193\r\189\000\n\025Z\006\193\006\193\014\026\006\193\022\230\006\193\006\193\000\n\012\218\006\193\006\193\006\225\006\225\006\225\006\225\006\225\006\225\006\225\006\225\006\225\006\225\006\225\016R\006\225\006\225\006\225\006\225\006\225\006\225\006\225\006\225\006\225\006\225\006\225\b\t\001\158\006\225\006\225\003\218\017v\004A\001\178\006\225\006\225\r\158\006\225\004A\004A\016*\006\225\006\225\b\149\006\225\026\154\006\225\006\225\016V\016^\004A\014j\006\225\016*\006\225\006\225\017\134\005\022\006\225\006\225\006\225\016*\016^\006\225\006\225\005\154\006\225\006\225\001\222\002e\016^\r\230\006\225\006\225\006\225\006\225\004A\006\225\029.\b\t\005=\001*\006\225\026\154\006\225\014\030\006\225\006\225\006\225\006\225\017v\b\t\006\225\006\225\006\225\020\014\006\225\006\225\006\225\016*\001\226\006\225\006\225\006\225\006\225\006\225\019\186\b\202\016^\b\210\006\225\b\226\006\225\019\190\000\n\002z\006\137\019\194\b\234\014*\002\134\006\225\006\225\002\006\017\134\006\225\006\225\006\225\006\225\002\030\006\225\006\225\006\225\014\158\r\170\006\225\004u\017\134\006\225\006\225\006\225\b\165\r\189\004u\021f\017\134\006\225\003j\b\242\006A\006\225\021:\000\n\006\225\r\189\r\189\001&\006\225\006\225\r\189\006\225\012\221\022\246\006\225\012\237\006\225\005=\t\181\t\181\006\225\022\250\tu\t\181\006n\024>\001*\006\225\bQ\006\225\003\178\006\225\006\225\t\002\017\134\006\225\006\225\000R\000V\000f\000\170\b\186\000\174\011\146\000\178\000\246\011\150\000\254\022v\001\014\026\226\001\022\011\154\001\030\001\190\001\198\001\202\011\158\026\230\000\n\022z\r\186\022\138\011\162\r\189\r\189\023\006\020\154\002E\r\189\022~\001\210\022\130\023\018\023Z\002:\011\178\012\237\014\166\001.\022\134\014\170\028\254\017v\024V\024^\001\218\025B\016\026\022\146\027\198\012\141\016*\022\150\002\014\003\194\029\170\002F\0076\022\154\027\026\016^\bA\029\002\b}\003\186\016r\014\178\027F\027R\029\006\016v\018\202\020\182\001*\022\158\002n\030\022\002r\005\025\001\238\017~\016~\004\030\024f\028\027\014\198\002z\016\130\020\186\014\202\012\210\002\134\028\031\005\209\014\206\014\210\011\198\011\202\014\214\004\"\004=\022\162\028\"\016\134\022\166\028\246\000\n\007F\002z\021\190\t\153\002\021\014*\002\134\012&\014\218\012\141\022\170\016\138\016\142\014\222\016\146\022\174\000\n\022\178\016\166\022\182\022\186\004\245\022\190\004=\016\178\014\230\000\n\029\014\017\134\022\194\004\162\001~\022\198\006\145\014\134\023v\027f\003\149\000\n\016\210\004b\003\149\012\157\016\214\017\"\005\025\011\206\022\202\005\198\014\234\001*\017&\022\206\022\210\r\230\014\238\005\025\005\025\t\181\t\181\029\022\005\025\017.\t\181\014\242\t\153\006\233\006\233\001*\021\198\002\182\006\233\000R\000V\000f\000\170\b\186\000\174\011\146\000\178\000\246\011\150\000\254\000\n\001\014\026\226\001\022\011\154\001\030\001\190\001\198\001\202\011\158\026\230\028;\028?\004=\011\233\011\162\028C\0182\000\n\004=\004=\016\226\004f\001\210\tz\bm\017\234\002:\011\178\001&\014\166\004=\028\246\014\170\028[\028_\004\170\r\230\001\218\028c\016\026\012\141\017\238\016\246\001*\b\141\017\002\b]\001*\002F\002%\006q\016*\012\197\003\218\018\154\022\242\004=\016r\014\178\027F\016^\002z\016v\019\018\030\026\014*\002\134\002n\020\182\002r\005)\001\238\017~\016~\004\190\011\233\000\n\014\198\002z\016\130\000\n\014\202\012\210\002\134\020\186\012u\014\206\014\210\011\198\011\202\014\214\012u\012u\021\246\017\130\016\134\003\218\029z\000\n\n\022\001.\004\230\005u\012u\002z\018\n\012&\014\218\014*\002\134\016\138\016\142\014\222\016\146\024J\000\n\029\130\016\166\005Y\001*\004\245\005u\019\014\016\178\014\230\0029\t\014\004\233\t\022\012u\t&\018R\004\234\004\254\030V\017\134\022.\t.\016\210\006\137\006\177\000\n\016\214\017\"\028\234\011\206\019\142\005\026\014\234\005\"\017&\r\230\000\n\nN\014\238\nV\005)\nf\027\170\000\n\021\254\017.\b\193\014\242\nn\006\249\006\249\t6\019\250\002\182\006\249\000R\000V\000f\000\170\b\186\000\174\011\146\000\178\000\246\011\150\000\254\006\137\001\014\026\226\001\022\011\154\001\030\001\190\001\198\001\202\011\158\026\230\005u\nv\016\218\018\014\011\162\020n\005&\006\209\tF\005^\0226\n\254\001\210\006\209\006\209\006\153\002:\011\178\020*\014\166\005u\001*\014\170\029R\005f\006\209\012\173\001\218\020>\016\026\000\n\001*\006\129\029f\029&\n\134\000\n\004\233\002F\006\161\029\190\016*\029j\004\233\004\233\011j\024&\016Z\014\178\012\205\016^\006\209\016v\012\133\000\n\004\233\004\233\002n\020Z\002r\005E\001\238\016z\016~\000\n\001*\019\254\014\198\002z\016\130\005v\014\202\012\210\002\134\016\222\006i\014\206\014\210\011\198\011\202\014\214\004\233\025j\027\182\r\197\016\134\006\217\b\177\023\178\012\149\028\246\006\169\006\217\006\217\0049\012\173\012&\014\218\000\n\020~\016\138\016\142\014\222\016\146\029\146\000\n\005~\016\166\017v\020.\004\245\024\206\005\130\016\178\014\230\004=\n\146\016*\n\154\020B\n\170\005\138\016\218\005q\012\181\017\134\016^\n\178\016\210\0049\006\217\012\189\016\214\017\"\005E\011\206\005=\0296\014\234\005U\017&\001*\005q\005\174\014\238\005E\005E\020\214\029.\020^\005E\017.\030*\014\242\027\214\t\189\t\189\n\186\002U\002\182\t\189\000R\000V\000f\000\170\b\186\000\174\011\146\000\178\000\246\011\150\000\254\005\178\001\014\000\n\001\022\011\154\001\030\001\190\001\198\001\202\011\158\020\234\021\006\005\186\005\206\0252\011\162\030.\005\226\020\130\n\202\005\246\025\154\016\222\001\210\006:\0049\007\018\002:\011\178\017\134\014\166\0049\0049\014\170\007Z\030:\007f\030\127\001\218\b\017\016\026\025>\005q\0049\004\149\007\146\016\230\007\158\016\218\002F\005=\007\194\016*\b\017\007\206\007\222\007\238\007\246\016Z\014\178\0049\016^\005q\016v\b\014\001*\020\218\001*\002n\0049\002r\029.\001\238\016z\016~\016\218\b\022\025R\014\198\002z\016\130\b&\014\202\012\210\002\134\b2\b>\014\206\014\210\011\198\011\202\014\214\bJ\b^\001*\bn\016\134\b~\000\n\b\134\000\n\020\238\021\n\b\171\t\137\b\246\b\017\012&\014\218\b\250\t:\016\138\016\142\014\222\016\146\t>\000\n\t\130\016\166\011\146\016\222\t\150\011\150\t\190\016\178\014\230\026\246\000\n\011\154\t\194\t\210\t\226\n\014\011\158\026\250\n\030\017\134\n2\nz\016\210\bq\n~\ba\016\214\017\"\n\190\011\206\016\222\n\194\014\234\011\006\017&\011\026\011B\011F\014\238\011Z\011r\011\134\b\017\011\166\011\174\017.\011\182\014\242\011\190\t\137\017\234\011\194\002)\002\182\b\017\000R\000V\000f\000\170\b\186\000\174\011\146\000\178\000\246\011\150\000\254\017\238\001\014\011\250\001\022\011\154\001\030\001\190\001\198\001\202\011\158\012\006\012\014\012R\012r\012~\011\162\012\194\012\222\012\234\r\006\002z\r\018\r\206\001\210\014*\002\134\r\218\002:\011\178\r\226\014\166\r\246\014\002\014\170\014\n\014\014\014\022\014&\001\218\0146\016\026\014>\014B\014R\014Z\014r\014z\014\142\014\150\002F\014\162\014\186\016*\014\194\015\022\015\"\015j\000\n\016Z\014\178\015\234\016^\005\t\016v\016\018\016&\0162\016:\002n\016B\002r\016J\001\238\016z\016~\016\150\016\158\016\174\014\198\002z\016\130\016\182\014\202\012\210\002\134\016\190\016\198\014\206\014\210\011\198\011\202\014\214\016\206\017\030\017*\r\197\016\134\0172\017>\017B\017J\017N\017V\017^\017n\017\146\017\214\012&\014\218\017\222\017\226\016\138\016\142\014\222\016\146\017\242\000\n\017\250\016\166\017\254\018\006\018\022\018\030\018&\016\178\014\230\018*\018:\018B\018Z\018b\018\178\018\250\012\165\012\165\019\006\017\134\019z\019\134\016\210\019\166\019\210\019\226\016\214\017\"\019\234\011\206\020\006\020\018\014\234\020\026\017&\020\030\020&\0206\014\238\020J\020f\020\138\020\162\020\170\020\174\017.\020\190\014\242\020\198\r\197\r\197\020\202\020\210\002\182\r\197\000R\000V\000f\000\170\b\186\000\174\011\146\000\178\000\246\011\150\000\254\020\226\001\014\026\226\001\022\011\154\001\030\001\190\001\198\001\202\011\158\026\230\020\246\021\018\021&\0216\011\162\021F\021^\021n\021z\021\171\021\211\021\235\001\210\022\011\022#\022C\002:\011\178\022[\014\166\022r\022\142\014\170\022\254\023+\023\130\023\151\001\218\023\191\016\026\023\203\023\219\012\165\023\227\023\254\024\007\024\015\024\023\002F\0242\024Z\024b\024r\012\165\024\143\024\159\024\167\016r\014\178\012\165\012\165\024\179\016v\028r\024\190\024\227\024\239\002n\024\251\002r\025\014\001\238\017~\016~\025\023\025\031\025J\014\198\002z\016\130\025v\014\202\012\210\002\134\000\022\025\178\014\206\014\210\011\198\011\202\014\214\012\165\025\211\025\219\025\231\016\134\012\165\012\165\025\247\025\255\026\011\026\022\026+\0263\026:\026G\012&\014\218\026S\026[\016\138\016\142\014\222\016\146\026f\000\n\026o\016\166\026w\026\131\004\245\026\158\027&\016\178\014\230\027N\027^\027\146\027\154\027\202\027\242\027\246\027\254\028'\028\238\028\250\029\n\029\018\016\210\029\026\029G\029O\016\214\017\"\029V\011\206\029c\029n\014\234\029~\017&\029\179\029\194\029\207\014\238\029\243\030\015\030\030\030&\0302\030>\017.\030K\014\242\030R\t\161\t\161\030Z\030c\002\182\t\161\000R\000V\000f\000\170\b\186\000\174\011\146\000\178\000\246\011\150\000\254\030j\001\014\030s\001\022\011\154\001\030\001\190\001\198\001\202\011\158\030\135\000\000\000\000\000\000\000\000\011\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\210\000\000\000\000\000\000\002:\011\178\000\000\014\166\000\000\000\000\014\170\000\000\000\000\000\000\000\000\001\218\000\000\016\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016r\014\178\000\000\000\000\000\000\016v\017\154\000\000\000\000\000\000\002n\000\000\002r\000\000\001\238\017~\016~\000\000\000\000\000\000\014\198\002z\016\130\000\000\014\202\012\210\002\134\000\000\000\000\014\206\014\210\011\198\011\202\014\214\000\000\000\000\000\000\r\161\016\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012&\014\218\000\000\000\000\016\138\016\142\014\222\016\146\000\000\000\n\000\000\016\166\000\000\000\000\000\000\000\000\000\000\016\178\014\230\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\210\000\000\000\000\000\000\016\214\017\"\000\000\011\206\000\000\000\000\014\234\000\000\017&\000\000\000\000\000\000\014\238\000\000\000\000\000\000\000\000\000\000\000\000\017.\000\000\014\242\000\000\r\161\r\161\000\000\000\000\002\182\r\161\000R\000V\000f\000\170\b\186\000\174\011\146\000\178\000\246\011\150\000\254\000\000\001\014\000\000\001\022\011\154\001\030\001\190\001\198\001\202\011\158\000\000\000\000\000\000\000\000\000\000\011\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\210\000\000\000\000\000\000\002:\011\178\000\000\014\166\000\000\000\000\014\170\000\000\000\000\000\000\000\000\001\218\000\000\016\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016r\014\178\000\000\000\000\000\000\016v\027*\000\000\000\000\000\000\002n\000\000\002r\000\000\001\238\017~\016~\000\000\000\000\000\000\014\198\002z\016\130\000\000\014\202\012\210\002\134\000\000\000\000\014\206\014\210\011\198\011\202\014\214\000\000\000\000\000\000\000\000\016\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012&\014\218\000\000\000\000\016\138\016\142\014\222\016\146\000\000\000\n\000\000\016\166\000\000\000\000\000\000\000\000\000\000\016\178\014\230\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\210\000\000\000\000\000\000\016\214\017\"\000\000\011\206\000\000\000\000\014\234\000\000\017&\000\000\000\000\000\000\014\238\000\000\000\000\000\000\000\000\000\000\000\000\017.\000\000\014\242\000\000\r\237\r\237\000\000\000\000\002\182\r\237\000R\000V\000f\000\170\b\186\000\174\011\146\000\178\000\246\011\150\000\254\000\000\001\014\000\000\001\022\011\154\001\030\001\190\001\198\001\202\011\158\000\000\000\000\000\000\000\000\000\000\011\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\210\000\000\000\000\000\000\002:\011\178\000\000\014\166\000\000\000\000\014\170\000\000\000\000\000\000\000\000\001\218\000\000\016\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016r\014\178\000\000\000\000\000\000\016v\027*\000\000\000\000\000\000\002n\000\000\002r\000\000\001\238\017~\016~\000\000\000\000\000\000\014\198\002z\016\130\000\000\014\202\012\210\002\134\000\000\000\000\014\206\014\210\011\198\011\202\014\214\000\000\000\000\000\000\000\000\016\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012&\014\218\000\000\000\000\016\138\016\142\014\222\016\146\000\000\000\n\000\000\016\166\000\000\000\000\000\000\000\000\000\000\016\178\014\230\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\210\000\000\000\000\000\000\016\214\017\"\000\000\011\206\000\000\000\000\014\234\000\000\017&\000\000\000\000\000\000\014\238\000\000\000\000\000\000\000\000\000\000\000\000\017.\000\000\014\242\000\000\r\233\r\233\000\000\000\000\002\182\r\233\000R\000V\000f\000\170\b\186\000\174\011\146\000\178\000\246\011\150\000\254\000\000\001\014\000\000\001\022\011\154\001\030\001\190\001\198\001\202\011\158\000\000\000\000\000\000\000\000\000\000\011\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\210\000\000\000\000\000\000\002:\011\178\000\000\014\166\000\000\000\000\014\170\000\000\000\000\000\000\000\000\001\218\000\000\016\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016r\014\178\000\000\000\000\000\000\016v\019F\000\000\000\000\000\000\002n\000\000\002r\000\000\001\238\017~\016~\000\000\000\000\000\000\014\198\002z\016\130\000\000\014\202\012\210\002\134\000\000\000\000\014\206\014\210\011\198\011\202\014\214\000\000\000\000\000\000\000\000\016\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012&\014\218\000\000\000\000\016\138\016\142\014\222\016\146\000\000\000\n\000\000\016\166\000\000\000\000\000\000\000\000\000\000\016\178\014\230\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\210\000\000\000\000\000\000\016\214\017\"\000\000\011\206\000\000\000\000\014\234\000\000\017&\000\000\000\000\000\000\014\238\000\000\000\000\000\000\000\000\000\000\000\000\017.\000\000\014\242\000\000\000R\000V\000f\000\170\002\182\000\174\011\146\000\178\000\246\011\150\000\254\000\000\001\014\000\000\001\022\011\154\001\030\001\190\001\198\001\202\011\158\000\000\000\000\000\000\003\230\003\238\000\170\000\000\000\174\000\000\0042\004v\000\000\004~\001\210\004\142\000\000\004\150\002:\004\158\004\202\014\166\004\210\000\000\014\170\000\000\000\000\000\000\000\000\001\218\000\000\019\198\000\000\000\000\000\000\000\000\000\000\004\218\000\000\000\000\002F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\019\214\014\178\000\000\004\226\000\000\000\000\000\000\000\000\000\000\000\000\002n\000\000\002r\000\000\001\238\000\000\000\000\000\000\000\000\000\000\014\198\002z\000\000\000\000\014\202\002\130\002\134\000\000\000\000\014\206\014\210\011\198\019\218\014\214\000\000\000\000\000\000\004\242\000\000\000\000\b\214\0061\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012&\014\218\0061\000\000\0061\000\000\014\222\000\000\0061\000\n\t\026\0061\tZ\0061\0061\0061\0061\0061\014\230\000\000\000\000\000\000\0061\0061\0061\0061\0061\011m\011m\000\000\0061\011m\000\n\0061\0061\0061\000\000\0061\000\000\011\206\0061\000\000\014\234\0061\019\222\0061\000\000\0061\014\238\0061\000\000\0061\0061\0061\0061\019\230\0061\014\242\0061\0061\000Z\000\000\0061\002\182\0061\t\142\000\000\011m\000\000\0061\000Z\000\000\0061\0061\0061\0061\t\218\000\000\0061\000Z\0061\000Z\000\000\0061\0061\0061\0061\000\000\000\000\0061\000\000\000\000\0061\000\000\011m\000\000\0061\0061\000\000\0061\000\000\000\000\0061\000\000\000\000\0061\000\000\0061\0061\0061\0061\0061\0061\000\000\0061\000\000\000\000\0061\0061\0061\000\000\0061\0061\0061\0061\000\000\0061\0061\0061\0061\0061\0061\0061\0061\0061\0061\000\000\000\000\000\000\0061\0061\000\000\0061\0061\0061\0061\000\000\000\000\000\000\0061\000\000\000\000\000\000\000\000\0061\0061\011m\000\000\0061\000\000\0061\000\000\000\000\0061\0061\0061\0061\0061\000\000\000\000\0061\0061\000\000\000\000\0061\000\000\000\000\000\000\000\000\0061\0061\000\000\000\000\000\000\0061\000R\000V\000f\000\170\000\000\000\174\000\000\000\178\000\246\000\000\000\254\000\000\001\014\000\000\001\022\000\000\001\030\001\190\001\198\001\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\210\000\000\000\000\000\000\002:\000\000\000\000\002N\000\000\000\000\002R\000\000\000\000\000\000\000\000\001\218\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002F\000\000\000\000\002J\000\000\000\000\000\000\000\000\000\000\002\218\002j\000\000\002f\000\000\000\000\006\014\000\000\000\000\000\000\002n\000\000\002r\000\000\001\238\000\000\000\000\000\000\000\000\000\000\006\018\002z\000\000\000\000\006\022\002\130\002\134\000\000\006\026\006\030\006\"\000\000\000\000\006&\000\000\000R\000V\000f\000\170\000\000\000\174\000\000\000\178\000\246\000\000\000\254\000\000\001\014\000\000\001\022\006*\001\030\001\190\001\198\001\202\006.\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006>\000\000\001\210\000\000\000\000\000\000\002:\000\000\000\000\002N\000\000\006j\002R\000\000\000\000\000\000\000\000\001\218\000\000\000\000\000\000\000\000\000\000\000\000\006B\000\000\000\000\000\000\002F\000\000\006F\002J\000\000\004\141\000\000\000\000\000\000\002\218\002j\006J\002f\000\000\000\000\006\014\000\000\002\182\000\000\002n\000\000\002r\000\000\001\238\000\000\000\000\000\000\000\000\000\000\006\018\002z\000\000\000\000\006\022\002\130\002\134\000\000\006\026\006\030\006\"\000\000\000\000\006&\000\000\000R\000V\000f\000\170\000\000\000\174\000\000\000\178\000\246\000\000\000\254\000\000\001\014\000\000\001\022\006*\001\030\001\190\001\198\001\202\006.\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006>\000\000\001\210\000\000\000\000\000\000\002:\000\000\000\000\002N\000\000\006j\002R\000\000\000\000\000\000\000\000\001\218\000\000\000\000\000\000\000\000\000\000\000\000\006B\000\000\000\000\000\000\002F\000\000\006F\002J\000\000\bE\000\000\000\000\000\000\002\218\002j\006J\002f\000\000\000\000\006\014\000\000\002\182\000\000\002n\000\000\002r\000\000\001\238\000\000\000\000\000\000\000\000\000\000\006\018\002z\000\000\000\000\006\022\002\130\002\134\000\000\006\026\006\030\006\"\000\000\000\000\006&\000\000\000R\000V\000f\000\170\000\000\000\174\000\000\000\178\000\246\000\000\000\254\000\000\001\014\000\000\001\022\006*\001\030\001\190\001\198\001\202\006.\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006>\000\000\001\210\000\000\000\000\000\000\002:\000\000\000\000\002N\000\000\006j\002R\000\000\000\000\000\000\000\000\001\218\000\000\000\000\000\000\000\000\000\000\000\000\006B\000\000\000\000\000\000\002F\000\000\006F\002J\000\000\002\025\000\000\000\000\000\000\002\218\002j\006J\002f\000\000\000\000\006r\000\000\002\182\000\000\002n\000\000\002r\000\000\001\238\000\000\000\000\000\000\000\000\000\000\006\018\002z\000\000\000\000\006\022\002\130\002\134\000\000\006\026\006\030\006\"\000\000\000\000\006&\000\000\000R\000V\000f\000\170\000\000\000\174\000\000\000\178\000\246\000\000\000\254\000\000\001\014\000\000\001\022\006*\001\030\001\190\001\198\001\202\006.\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006>\000\000\001\210\000\000\000\000\000\000\002:\000\000\000\000\002>\000\000\000\000\002B\000\000\000\000\000\000\000\000\001\218\000\000\000\000\000\000\000\000\000\000\000\000\006B\000\000\000\000\000\000\002F\000\000\006F\002J\000\000\bU\000\000\000\000\000\000\002b\002^\006J\002f\000\000\000\000\000\000\000\000\002\182\000\000\002n\000\000\002r\000\000\001\238\000\000\000\000\000\000\000\000\000\000\002v\002z\000\000\000\000\002~\002\130\002\134\000\000\000\000\002\138\002\142\000\000\000\000\002\146\000\000\000\000\000\000\000\000\nB\nJ\000\170\000\000\000\174\000\000\n\142\n\210\000\000\n\218\000\000\n\234\002\150\n\242\000\000\n\250\011&\002\154\011.\000\000\000\n\011\146\000\000\000\000\011\150\000\000\000\000\000\000\026\246\002\162\011\154\000\000\000\000\0116\000\000\011\158\026\250\000\000\000\000\000\000\002\166\000\000\000\000\000\000\000R\b\190\b\198\000\170\011>\000\174\000\000\t\n\tN\002\170\tV\022v\tf\000\000\tn\002\174\tv\t\162\001\198\t\170\000\000\000\000\000\000\022z\002\178\017\234\000\000\000\000\000\000\000\000\002\182\000\000\000\000\022~\t\178\022\130\000\000\000\000\011N\000\000\000\000\017\238\000\000\022\134\000\000\000\000\000\000\000\000\000\000\026\018\000\000\000\000\022\146\000\000\000\000\000\000\022\150\000\000\000\000\000\000\000\000\002z\022\154\000\000\000\000\014*\002\134\000\000\000\000\t\202\000\000\000\000\000\000\000\000\024\026\000\000\000\000\000\000\022\158\025\"\000\000\000\000\000\000\t\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\000\000\000\000\000\000\000\000\005\t\000\000\022\162\000\000\011\162\022\166\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002:\011\178\022\170\014\166\000\000\000\000\014\170\022\174\000\n\022\178\000\000\022\182\022\186\016\026\022\190\000\000\000\000\000\000\000\000\000\000\000\000\022\194\002F\000\000\022\198\000\000\000\000\000\000\000\000\007\209\007\209\016\162\014\178\000\000\007\209\000\000\016v\000\000\000\000\022\202\000\000\002n\000\000\002r\022\206\022\210\000\000\016~\000\000\000\000\000\000\014\198\002z\016\130\000\000\014\202\012\210\002\134\000\000\000\000\014\206\014\210\000\000\000\000\014\214\000\000\000\000\000\000\000\000\016\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012&\014\218\000\000\000\000\016\138\016\142\014\222\016\146\000\000\000\n\000\000\016\166\000\000\000\000\000\000\000\000\011\162\016\178\014\230\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002:\011\178\000\000\014\166\016\210\000\000\014\170\000\000\016\214\017\"\000\000\000\000\000\000\016\026\014\234\000\000\017&\000\000\000\000\000\000\014\238\000\000\002F\000\000\000\000\000\000\000\000\017.\000\000\014\242\000\000\014\174\014\178\000\000\000\000\002\182\016v\000\000\000\000\000\000\000\000\002n\000\000\002r\000\000\000\000\000\000\016~\000\000\000\000\000\000\014\198\002z\016\130\000\000\014\202\012\210\002\134\000\000\000\000\014\206\014\210\000\000\000\000\014\214\000\000\000\000\000\000\000\000\016\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012&\014\218\000\000\000\000\016\138\016\142\014\222\016\146\000\000\000\n\000\000\016\166\000\000\000\000\000\000\000\000\000\000\016\178\014\230\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\210\000\000\000\000\000\000\016\214\017\"\000\000\000\000\000\000\000\000\014\234\000\000\017&\000\000\000\000\000\000\014\238\000\000\000\000\000\000\000\000\000\000\000\000\017.\000\000\014\242\000\000\001M\001M\001M\001M\002\182\001M\000\000\001M\001M\000\000\001M\000\000\001M\000\000\001M\000\000\001M\001M\001M\001M\000\000\000\000\015\005\000\000\022f\015\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001M\001M\001M\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001M\000\000\015\005\015\005\000\000\000\000\001M\015\005\000\000\001M\002\206\015\005\000\000\001M\000\000\000\000\022j\015\005\000\000\001M\015\005\015\005\000\000\015\005\015\005\000\000\001M\002\214\000\000\015\005\007\150\001M\000\000\015\005\000\000\000\000\015\005\000\000\015\005\015\005\001M\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\005\001M\015\005\000\000\001M\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\005\000\000\000\000\000\000\001M\000\000\000\000\007\162\000\000\001M\000\000\001M\000\000\000\000\001M\000\000\022n\000\000\000\000\000\000\000\000\001M\000\000\001M\000\000\000\000\001M\015\005\015\005\000\000\015\005\015\005\007\166\000\000\015\005\000\000\000\000\000\000\000\000\000\000\000\000\001M\001M\007\174\000\000\000\000\001M\001M\015\005\000\000\000\000\015\005\015\005\015\005\015\005\005Y\000\000\023.\005Y\015\005\015\005\015\005\000\000\015\005\015\005\015\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005Y\005Y\000\000\000\000\000\000\005Y\000\000\000\000\005Y\005Y\000\000\000\000\000\000\000\000\000\000\005Y\000\000\000\000\005Y\005Y\000\000\005Y\005Y\000\000\000\000\005Y\005U\005Y\005Y\005U\000\000\005Y\000\000\000\000\005Y\000\000\005Y\005Y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005U\005U\000\000\000\000\000\000\000\000\000\000\000\000\005U\005U\005Y\000\000\005Y\000\000\000\000\005U\000\000\000\000\000\000\000\000\000\000\005U\005U\005Y\000\000\005U\000\000\000\000\005U\000\000\005Y\005U\000\000\000\000\005U\000\000\005U\005U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005Y\005Y\000\000\005Y\005u\005Y\000\000\005Y\000\000\005U\000\000\000\000\000\000\000\000\000\000\000\000\005Y\005U\000\000\000\000\005U\005Y\000\000\000\000\005Y\000\000\005Y\000\000\005Y\005U\000\000\000\000\005Y\005Y\005Y\000\000\005Y\005Y\005Y\000\000\005U\005U\000\000\000\000\000\000\005U\000\000\000\000\005U\005U\005U\000\000\000\000\005q\005U\005U\005U\000\000\005U\005U\000\000\005U\005U\000\000\000\000\005U\000\000\005U\005U\000\000\005U\005U\000\000\005U\005U\000\000\005U\005U\000\000\000\000\000\000\005U\000\000\000\000\000\000\005U\005U\000\000\000\000\001*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005U\000\000\005U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005U\000\000\000\000\000\000\000\000\000\000\000\000\005U\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005U\005U\000\000\005U\005q\005U\000\000\005U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005U\000\000\005U\000\000\000\000\000\000\000\000\000\000\005U\005U\005U\000\000\005U\005U\005U\011i\011i\011i\011i\000\000\011i\000\000\011i\011i\000\000\011i\000\000\011i\000\000\011i\000\000\011i\011i\011i\011i\000\000\000\000\015Y\000\000\000\000\015Y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011i\011i\011i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011i\000\000\015Y\015Y\000\000\000\000\011i\015Y\000\000\023>\015\006\015Y\000\000\023F\000\000\000\000\000\000\015Y\000\000\011i\015Y\015Y\000\000\015Y\015Y\000\000\011i\015\014\000\000\015Y\015\026\011i\000\000\015Y\000\000\000\000\015Y\000\000\015Y\015Y\011i\000R\000V\000f\000\170\000\000\000\174\000\000\000\178\000\246\000\000\000\254\000\000\001\014\000\000\001\022\000\000\001\030\001\190\001\198\001\202\015Y\011i\015Y\000\000\011i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015Y\001\210\000\000\000\000\011i\000\000\000\000\015&\000\000\011i\000\000\011i\000\000\000\000\011i\000\000\001\218\000\000\000\000\000\000\000\000\011i\000\000\011i\000\000\000\000\011i\015Y\015Y\000\000\015Y\000\000\015*\000\000\015Y\000\000\001\234\000\000\000\000\000\000\000\000\011i\011i\0152\000\000\000\000\023\154\011i\000\000\000\000\001\238\015Y\000\000\015Y\000\000\000\000\000\000\000\000\000\000\015Y\015Y\015Y\000\000\015Y\015Y\015Y\011Y\011Y\011Y\011Y\000\000\011Y\000\000\011Y\011Y\000\000\011Y\000\000\011Y\000\000\011Y\000\000\011Y\011Y\011Y\011Y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\000\000\000\000\000\000\000\000\011Y\011Y\011Y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011Y\000\000\000\000\000\000\000\000\000\000\011Y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011Y\011]\011]\011]\011]\000\000\011]\011Y\011]\011]\000\000\011]\011Y\011]\000\000\011]\000\000\011]\011]\011]\011]\011Y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011]\011]\011]\000\000\000\000\000\000\000\000\000\000\000\000\011Y\011]\000\000\011Y\000\000\000\000\000\000\011]\000\000\000\000\023\158\000\000\000\000\000\000\000\000\000\000\011Y\000\000\000\000\000\000\011]\011Y\000\000\011Y\000\000\000\000\011Y\011]\000\000\000\000\000\000\000\000\011]\011Y\000\000\011Y\000\000\000\000\011Y\000\000\000\000\011]\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\153\000\000\000\000\001\153\011Y\011Y\000\000\000\000\000\000\023B\011Y\000\000\000\000\000\000\011]\000\000\000\000\011]\000\000\000\000\000\000\000\000\000\000\001\153\001\153\000\000\000\000\000\000\001\153\000\000\011]\000\000\001\153\000\000\000\000\011]\000\000\011]\001\153\000\000\011]\001\153\001\153\000\000\001\153\001\153\000\000\011]\000\000\011]\001\153\000\000\011]\000\000\001\153\000\000\000\000\001\153\000\000\001\153\001\153\000\000\000\000\000\000\000\000\000\000\000\000\011]\011]\000\000\000\000\000\000\000\000\011]\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\153\000\000\001\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\153\000\000\000\000\000\000\000\000\000\000\000R\b\190\b\198\000\170\000\000\000\174\000\000\t\n\tN\000\000\tV\000\000\tf\000\000\tn\000\000\tv\t\162\001\198\t\170\000\000\001\153\002\234\000\000\001\153\001\153\000\000\000\000\001\153\000\000\000\000\000\000\000\000\023\166\t\178\023\194\000\000\000\000\000\000\000\000\000\000\000\000\001\153\023\206\000\000\001\153\001\153\001\153\001\153\t\186\000\000\000\000\000\000\003\154\001\153\001\153\000\000\001\153\001\153\001\153\000\000\000\000\023\230\000\000\000\000\003\n\000\000\000\000\003b\t\202\000\000\000\000\000\000\000\000\024\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\214\000\000\000\000\000\000\000\000\003\018\003:\000\000\000\000\000\000\001\245\000\000\000\000\000\000\001\245\000\000\000\000\000\000\000\000\000\000\003\026\000\000\024:\001\245\001\245\024\146\003\130\003\138\000\000\000\000\000\000\000\000\001\245\000\000\000\000\000\000\003B\000\000\024\170\003\"\000\000\0032\001\245\024\182\000\000\tq\000\000\000\000\024\230\000\000\000\000\000\000\000\000\000\000\000\000\024\242\000\000\024\254\000\000\000\000\025\222\000\000\000\000\000\000\003J\000\000\001\245\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\025\234\026\002\001\245\000\000\000\000\000\000\026\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003R\000\000\000\000\001\245\001\245\000\000\000\000\003*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000\000\000\000\000\129\000\000\001\245\000\000\000\000\001\245\001\245\001\245\001\245\000\000\000\000\000\000\000\000\000\000\001\245\001\245\000\000\003\146\003Z\001\245\003\018\003:\000\000\000\000\000\000\000\129\000\000\000\000\000\000\000\129\000\000\000\000\000\000\000\000\000\000\003\026\000\000\000\000\000\129\000\129\000\000\000\129\000\129\000\000\000\000\000\000\000i\000\129\000\000\000i\000\000\003B\000\000\000\000\003\"\000\000\0032\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000i\000i\000\000\000\000\000\000\000i\000\000\000\000\000\000\000i\003J\000\000\000\129\000\000\000\000\003\026\000\000\000\000\000i\000i\000\000\000i\000i\000\129\000\000\000\000\000\000\000i\000\000\000\000\000\000\000i\000\000\000\000\003\"\000\000\0032\000i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003R\000\000\000\000\000\129\000\129\000\000\000\000\003*\000\000\000i\000\000\000i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000i\000\000\000\129\000\129\000\129\000\129\000\000\000\000\000\000\000\000\000\000\000\129\000\129\000\000\000\129\003Z\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000i\000\000\000\000\000i\000i\000\000\000\000\003*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000]\000\000\000\000\000]\000\000\000i\000\000\000\000\000i\000i\000i\000i\000\000\000\000\000\000\000\000\000\000\000i\000i\000\000\000i\000i\000i\000]\000]\000\000\000\000\000\000\000]\000\000\000\000\000\000\000]\000\000\000\000\000\000\000\000\000\000\000]\000\000\000\000\000]\000]\000\000\000]\000]\000\000\000\000\000\000\000a\000]\000\000\000a\000\000\000]\000\000\000\000\003\"\000\000\000]\000]\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000a\000a\000\000\000\000\000\000\000a\000\000\000\000\000\000\000a\000]\000\000\000]\000\000\000\000\000a\000\000\000\000\000a\000a\000\000\000a\000a\000]\000\000\000\000\000\000\000a\000\000\000\000\000\000\000a\000\000\000\000\003\"\000\000\000a\000a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000]\000\000\000\000\000]\000]\000\000\000\000\003*\000\000\000a\000\000\000a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000]\000a\000\000\000]\000]\000]\000]\000\000\000\000\000\000\000\000\000\000\000]\000]\000\000\000]\000]\000]\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000a\000\000\000\000\000a\000a\000\000\000\000\003*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000e\000\000\000\000\000e\000\000\000a\000\000\000\000\000a\000a\000a\000a\000\000\000\000\000\000\000\000\000\000\000a\000a\000\000\000a\000a\000a\000e\000e\000\000\000\000\000\000\000e\000\000\000\000\000\000\000e\000\000\000\000\000\000\000\000\000\000\003\026\000\000\000\000\000e\000e\000\000\000e\000e\000\000\000\000\000\000\000u\000e\000\000\000u\000\000\000e\000\000\000\000\003\"\000\000\0032\000e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\018\003:\000\000\000\000\000\000\000u\000\000\000\000\000\000\000u\000e\000\000\000e\000\000\000\000\003\026\000\000\000\000\000u\000u\000\000\000u\000u\000e\000\000\000\000\000\000\000u\000\000\000\000\000\000\000u\000\000\000\000\003\"\000\000\0032\000u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000e\000\000\000\000\000e\000e\000\000\000\000\003*\000\000\003J\000\000\000u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000e\000u\000\000\000e\000e\000e\000e\000\000\000\000\000\000\000\000\000\000\000e\000e\000\000\000e\000e\000e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000u\000\000\000\000\000u\000u\000\000\000\000\003*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000m\000\000\000\000\000m\000\000\000u\000\000\000\000\000u\000u\000u\000u\000\000\000\000\000\000\000\000\000\000\000u\000u\000\000\000u\000u\000u\003\018\003:\000\000\000\000\000\000\000m\000\000\000\000\000\000\000m\000\000\000\000\000\000\000\000\000\000\003\026\000\000\000\000\000m\000m\000\000\000m\000m\000\000\000\000\000\000\000q\000m\000\000\000q\000\000\000m\000\000\000\000\003\"\000\000\0032\000m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\018\003:\000\000\000\000\000\000\000q\000\000\000\000\000\000\000q\000m\000\000\000m\000\000\000\000\003\026\000\000\000\000\000q\000q\000\000\000q\000q\000m\000\000\000\000\000\000\000q\000\000\000\000\000\000\000q\000\000\000\000\003\"\000\000\0032\000q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000m\000\000\000\000\000m\000m\000\000\000\000\003*\000\000\003J\000\000\000q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000m\000q\000\000\000m\000m\000m\000m\000\000\000\000\000\000\000\000\000\000\000m\000m\000\000\000m\000m\000m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000q\000\000\000\000\000q\000q\000\000\000\000\003*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000y\000\000\000\000\000y\000\000\000q\000\000\000\000\000q\000q\000q\000q\000\000\000\000\000\000\000\000\000\000\000q\000q\000\000\000q\000q\000q\003\018\003:\000\000\000\000\000\000\000y\000\000\000\000\000\000\000y\000\000\000\000\000\000\000\000\000\000\003\026\000\000\000\000\000y\000y\000\000\000y\000y\000\000\000\000\000\000\003\n\000y\000\000\000\137\000\000\003B\000\000\000\000\003\"\000\000\0032\000y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\018\003:\000\000\000\000\000\000\000\137\000\000\000\000\000\000\000\137\003J\000\000\000y\000\000\000\000\003\026\000\000\000\000\000\137\000\137\000\000\000\137\003\138\000y\000\000\000\000\000\000\000\137\000\000\000\000\000\000\003B\000\000\000\000\003\"\000\000\0032\000\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003R\000\000\000\000\000y\000y\000\000\000\000\003*\000\000\003J\000\000\000\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000y\000\137\000\000\000y\000y\000y\000y\000\000\000\000\000\000\000\000\000\000\000y\000y\000\000\000y\000y\000y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003R\000\000\000\000\000\137\000\137\000\000\000\000\003*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\n\000\000\000\000\000}\000\000\000\137\000\000\000\000\000\137\000\137\000\137\000\137\000\000\000\000\000\000\000\000\000\000\000\137\000\137\000\000\003\146\003Z\000\137\003\018\003:\000\000\000\000\000\000\000}\000\000\000\000\000\000\000}\000\000\000\000\000\000\000\000\000\000\003\026\000\000\000\000\000}\000}\000\000\000}\000}\000\000\000\000\000\000\003\n\000}\000\000\000\133\000\000\003B\000\000\000\000\003\"\000\000\0032\000}\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\018\003:\000\000\000\000\000\000\000\133\000\000\000\000\000\000\000\133\003J\000\000\000}\000\000\000\000\003\026\000\000\000\000\000\133\000\133\000\000\000\133\003\138\000}\000\000\000\000\000\000\000\133\000\000\000\000\000\000\003B\000\000\000\000\003\"\000\000\0032\000\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003R\000\000\000\000\000}\000}\000\000\000\000\003*\000\000\003J\000\000\000\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000}\000\133\000\000\000}\000}\000}\000}\000\000\000\000\000\000\000\000\000\000\000}\000}\000\000\000}\003Z\000}\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003R\000\000\000\000\000\133\000\133\000\000\000\000\003*\002:\000\000\000\000\011\234\000\000\000\000\011\238\000\000\000\000\000\000\000\000\000\000\000\000\000\133\000\000\000\000\000\133\000\133\000\133\000\133\000\000\000\000\002F\000\000\000\000\000\133\000\133\000\000\000\133\003Z\000\133\011\242\012J\000\000\000\000\012\178\012\202\012\206\000\000\000\000\000\000\002n\000\000\002r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\018\002z\000\000\000\000\012\022\012\210\002\134\000\000\000\000\012\026\012\030\000\000\000\000\012\"\000\000\000\000\000\000\000\000\002:\000\000\000\000\011\234\000\000\000\000\011\238\000\000\000\000\000\000\000\000\012&\012*\000\000\000\000\000\000\000\000\012.\000\000\000\000\000\n\000\000\002F\000\000\000\000\000\000\000\000\000\000\000\000\0126\000\000\011\242\012J\000\000\000\000\012\178\012\202\012\206\006Q\000\000\012\214\002n\012\242\002r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\018\002z\012:\000\000\012\022\012\210\002\134\000\000\012>\012\026\012\030\000\000\000\000\012\"\004\157\000\000\000\000\012B\002:\000\000\000\000\011\234\000\000\002\182\011\238\000\000\000\000\000\000\000\000\012&\012*\000\000\000\000\000\000\000\000\012.\000\000\000\000\000\n\000\000\002F\000\000\000\000\000\000\000\000\000\000\000\000\0126\000\000\011\242\012J\000\000\000\000\012\178\012\202\012\206\006Q\000\000\012\214\002n\012\242\002r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\018\002z\012:\000\000\012\022\012\210\002\134\000\000\012>\012\026\012\030\000\000\000\000\012\"\b\153\000\000\000\000\012B\002:\000\000\000\000\011\234\000\000\002\182\011\238\000\000\000\000\000\000\000\000\012&\012*\000\000\000\000\000\000\000\000\012.\000\000\000\000\000\n\000\000\002F\000\000\000\000\000\000\000\000\000\000\000\000\0126\000\000\011\242\012J\000\000\000\000\012\178\012\202\r\174\006Q\000\000\012\214\002n\012\242\002r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\018\002z\012:\000\000\012\022\012\210\002\134\000\000\012>\012\026\012\030\000\000\000\000\012\"\002I\000\000\000\000\012B\000\000\000\000\000\000\000\000\000\000\002\182\000\000\001\177\000\000\000\000\001\177\012&\012*\000\000\000\000\000\000\000\000\012.\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0126\001\177\001\177\000\000\000\000\000\000\001\177\000\000\000\000\006Q\001\177\000\000\000\000\012\242\000\000\000\000\001\177\000\000\000\000\001\177\001\177\000\000\001\177\001\177\012:\000\000\000\000\000\000\001\177\000\000\012>\000\000\001\177\000\000\000\000\001\177\b\169\001\177\001\177\012B\000\000\000\000\000\000\000\000\000\000\002\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\177\r*\001\177\000\000\000\000\003\133\000\000\000j\003\133\000r\000\000\000\130\003\133\001\177\003\133\000\000\000\000\000\000\000\138\003\133\003\133\000\000\000\000\000\000\r2\rZ\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r:\001\177\015V\000\000\001\177\000\000\r\130\r\138\001\177\000\146\003\133\000\000\000\000\000\000\003\133\000\000\rb\000\000\000\000\rB\000\000\rR\000\000\000\000\000\000\001\177\000\000\001\177\000\000\000\000\003\133\000\000\000\000\015^\001\177\001\177\000\000\001\177\001\177\001\177\000\000\000\000\003\133\000\162\rj\000\000\000\000\000\000\000\000\000\000\003\133\000\000\000\000\000\000\003\133\003\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\133\003\129\000\000\000\182\003\129\000\190\000\000\000\206\003\129\000\000\003\129\003\133\000\000\000\000\000\214\003\129\003\129\000\000\rr\000\000\000\000\003\133\000\000\000\000\000\000\rJ\003\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\185\000\000\000\000\000\000\000\000\000\222\003\129\005\185\000\000\000\000\003\129\000\000\000\000\000\000\000\000\r\146\rz\000\000\000\000\000\000\003\133\000\000\000\000\003\133\003\133\001\153\003\129\003\133\001\153\000\000\000\000\000\000\003\133\003\133\000\000\000\000\000\000\003\133\003\129\000\238\000\000\000\000\000\000\000\000\000\000\000\000\003\129\000\000\001\153\001\153\003\129\003\129\000\000\001\153\000\000\000\000\000\000\001\153\000\000\000\000\000\000\000\000\003\129\001\153\000\000\000\000\000\000\000\000\000\000\001\153\001\153\000\000\000\000\003\129\000\000\000\000\000\000\000\000\000\000\001\153\000\000\000\000\001\153\003\129\001\153\001\153\000\000\000\000\003\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\153\000\000\001\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\153\003\129\000\000\000\000\003\129\003\129\000\000\000\000\003\129\000\000\000\000\000\000\000\000\003\129\003\129\000\000\000\000\000\000\003\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\153\002\226\000\000\001\153\001\153\000\000\000\000\001\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\153\001\153\000\000\001\153\000\000\000\000\000\000\000\000\003\166\001\153\001\153\000\000\001\153\001\153\001\153\000R\000V\000f\000\170\b\186\000\174\011\146\000\178\000\246\011\150\000\254\000\000\001\014\000\000\001\022\011\154\001\030\001\190\001\198\001\202\011\158\002:\000\000\000\000\002>\000\000\000\000\002B\000\000\000\000\000\000\000\000\000\000\000\000\001\210\000\000\000\000\016\030\000\000\000\000\000\000\000\000\000\000\002F\000\000\000\000\002J\000\000\000\000\001\218\000\000\000\000\002Z\002^\000\000\002f\000\000\011\230\000\000\000\000\000\000\000\000\002n\000\000\002r\000\000\000\000\000\000\000\000\001\234\000\000\000\000\002v\002z\000\000\012\226\002~\002\130\002\134\000\000\000\000\002\138\002\142\001\238\000\000\002\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\138\000\000\001\250\015\226\000\000\000\000\011\198\011\202\002\150\000\000\000\000\000\000\000\000\002\154\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\015\146\015\186\002\162\000\000\000\000\002\005\000\000\000\000\000\000\002\005\000\n\000\000\000\000\002\166\t\129\015\154\000\000\000\000\002\005\002\005\000\000\015\242\015\250\000\000\000\000\0015\002\170\002\005\0015\000\000\000\000\015\194\002\174\000\000\015\162\t\129\015\178\002\005\000\000\006I\011\206\002\178\000\000\000\000\000\000\000\000\000\000\002\182\015\146\015\186\006I\000\000\000\000\0015\000\000\006I\000\000\0015\000\000\015\202\000\000\002\005\000\000\015\154\000\000\000\000\0015\0015\000\000\0015\0015\000\000\002\005\000\000\000\000\0015\000\000\000\000\000\000\015\194\000\000\000\000\015\162\000\000\015\178\0015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\210\000\000\000\000\002\005\000\000\000\000\000\000\015\170\015\202\000\000\0015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0015\000\000\000\000\002\005\000\000\002\005\000\000\000\000\000\000\000\000\000\000\000\000\002\005\002\005\000\000\016\002\015\218\002\005\000\000\000\000\000\000\000R\000V\000f\000\170\000\000\000\174\015\210\000\178\000\246\0015\000\254\000\000\001\014\015\170\001\022\000\000\001\030\001\190\001\198\001\202\000\000\000\000\001\029\000\000\000\000\001\029\000\000\000\000\000\000\000\000\0015\000\000\0015\000\000\001\210\000\000\000\000\000\000\000\000\0015\0015\000\000\0015\015\218\0015\001\029\001\029\000\000\000\000\001\218\001\029\000\000\000\000\000\000\001\029\000\000\000\000\000\000\000\000\000\000\015\154\000\000\000\000\001\029\001\029\000\000\001\029\001\029\000\000\001\234\001\017\000\000\001\029\001\017\000\000\005>\001\029\000\000\000\000\015\162\000\000\015\178\001\029\001\238\000\000\000\000\000\000\005.\0052\000\000\000\000\000\000\000\000\001\017\001\017\000\000\000\000\000\000\001\017\000\000\000\000\000\000\001\017\000\000\001\029\000\000\001\029\000\000\001\017\000\000\000\000\001\017\001\017\000\000\001\017\001\017\000\000\001\029\000\000\000\000\001\017\000\000\000\000\000\000\001\017\000\000\000\000\015\162\000\000\001\017\001\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\029\000\000\000\000\001\029\000\000\000\000\000\000\015\170\001\017\000\000\001\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\017\000\000\000\000\001\029\b\225\001\029\000\000\000\000\000\000\000\000\000\000\000\000\001\029\001\029\000\000\001\029\001\029\001\029\000\000\000\000\000\000\000R\000V\000f\000\170\000\000\000\174\001\017\000\178\000\246\001\017\000\254\000\000\001\014\015\170\001\022\000\000\001\030\001\190\001\198\001\202\000\000\000\000\001\021\000\000\000\000\001\021\000\000\000\000\000\000\000\000\001\017\000\000\001\017\000\000\001\210\000\000\000\000\000\000\000\000\001\017\001\017\000\000\001\017\001\017\001\017\001\021\001\021\000\000\000\000\001\218\001\021\000\000\000\000\000\000\001\021\000\000\000\000\000\000\000\000\000\000\001\021\000\000\000\000\001\021\001\021\000\000\001\021\001\021\000\000\001\234\001\025\000\000\001\021\001\025\000\000\027\174\001\021\000\000\000\000\015\162\000\000\001\021\001\021\001\238\000\000\000\000\000\000\027\162\0052\000\000\000\000\000\000\000\000\001\025\001\025\000\000\000\000\000\000\001\025\000\000\000\000\000\000\001\025\000\000\001\021\000\000\001\021\000\000\015\154\000\000\000\000\001\025\001\025\000\000\001\025\001\025\000\000\001\021\000\000\000\000\001\025\000\000\000\000\000\000\001\025\000\000\000\000\015\162\000\000\015\178\001\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\021\000\000\000\000\001\021\000\000\000\000\000\000\015\170\001\025\000\000\001\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\025\000\000\000\000\001\021\b\197\001\021\000\000\000\000\000\000\000\000\000\000\000\000\001\021\001\021\000\000\001\021\001\021\001\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\025\000\000\000\000\001\025\000\000\000\000\000\000\015\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001)\000\000\000\000\001)\000\000\000\000\000\000\000\000\001\025\000\000\001\025\000\000\000\000\000\000\000\000\000\000\000\000\001\025\001\025\000\000\001\025\001\025\001\025\015\146\015\186\000\000\000\000\000\000\001)\000\000\000\000\000\000\001)\000\000\000\000\000\000\000\000\000\000\015\154\000\000\000\000\001)\001)\000\000\001)\001)\000\000\000\000\001!\000\000\001)\001!\000\000\000\000\001)\000\000\000\000\015\162\000\000\015\178\001)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\146\015\186\000\000\000\000\000\000\001!\000\000\000\000\000\000\001!\000\000\015\202\000\000\001)\000\000\015\154\000\000\000\000\001!\001!\000\000\001!\001!\000\000\001)\000\000\000\000\001!\000\000\000\000\000\000\001!\000\000\000\000\015\162\000\000\015\178\001!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001)\000\000\000\000\001)\000\000\000\000\000\000\015\170\001!\000\000\001!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000\000\000\000\001)\000\000\001)\000\000\000\000\000\000\000\000\000\000\000\000\001)\001)\000\000\001)\001)\001)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000\000\000\000\001!\000\000\000\000\000\000\015\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001%\000\000\000\000\001%\000\000\000\000\000\000\000\000\001!\000\000\001!\000\000\000\000\000\000\000\000\000\000\000\000\001!\001!\000\000\001!\001!\001!\015\146\015\186\000\000\000\000\000\000\001%\000\000\000\000\000\000\001%\000\000\000\000\000\000\000\000\000\000\015\154\000\000\000\000\001%\001%\000\000\001%\001%\000\000\000\000\001-\000\000\001%\001-\000\000\000\000\001%\000\000\000\000\015\162\000\000\015\178\001%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\146\015\186\000\000\000\000\000\000\001-\000\000\000\000\000\000\001-\000\000\015\202\000\000\001%\000\000\015\154\000\000\000\000\001-\001-\000\000\001-\001-\000\000\001%\000\000\000\000\001-\000\000\000\000\000\000\015\194\000\000\000\000\015\162\000\000\015\178\001-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001%\000\000\000\000\001%\000\000\000\000\000\000\015\170\015\202\000\000\001-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001-\000\000\000\000\001%\000\000\001%\000\000\000\000\000\000\000\000\000\000\000\000\001%\001%\000\000\001%\001%\001%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\210\000\000\000\000\001-\000\000\000\000\000\000\015\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\138\000\000\000\000\001=\000\000\000\000\000\000\000\000\001-\000\000\001-\000\000\000\000\000\000\000\000\000\000\000\000\001-\001-\000\000\001-\001-\001-\015\146\015\186\000\000\000\000\000\000\001=\000\000\000\000\000\000\001=\000\000\000\000\000\000\000\000\000\000\015\154\000\000\000\000\001=\001=\000\000\001=\015\250\000\000\000\000\015\138\000\000\001=\0011\000\000\000\000\015\194\000\000\000\000\015\162\000\000\015\178\001=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\146\015\186\000\000\000\000\000\000\0011\000\000\000\000\000\000\0011\000\000\015\202\000\000\001=\000\000\015\154\000\000\000\000\0011\0011\000\000\0011\0011\000\000\001=\000\000\000\000\0011\000\000\000\000\000\000\015\194\000\000\000\000\015\162\000\000\015\178\0011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\210\000\000\000\000\001=\000\000\000\000\000\000\015\170\015\202\000\000\0011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0011\000\000\000\000\001=\000\000\001=\000\000\000\000\000\000\000\000\000\000\000\000\001=\001=\000\000\016\002\015\218\001=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\210\000\000\000\000\0011\000\000\000\000\000\000\015\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\138\000\000\000\000\0019\000\000\000\000\000\000\000\000\0011\000\000\0011\000\000\000\000\000\000\000\000\000\000\000\000\0011\0011\000\000\0011\015\218\0011\015\146\015\186\000\000\000\000\000\000\0019\000\000\000\000\000\000\0019\000\000\000\000\000\000\000\000\000\000\015\154\000\000\000\000\0019\0019\000\000\0019\015\250\000\000\000\000\000\000\000\000\0019\000\000\000\000\022v\015\194\000\000\000\000\015\162\000\000\015\178\0019\000\000\000\000\000\000\000\000\022z\000\000\000\000\000\000\000\000\000\000\000\000\024\186\000\000\000\000\022~\000\000\022\130\011\193\011\193\000\000\000\000\015\202\000\000\0019\022\134\000\000\000\000\000\000\000\000\000\000\022\138\000\000\000\000\022\146\0019\000\000\000\000\022\150\000\000\000\000\000\000\000\000\000\000\022\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\026b\024j\000\000\011\193\000\000\022\158\000\000\015\210\000\000\000\000\0019\000\000\000\000\000\000\015\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\193\0019\022\162\0019\000\000\022\166\000\000\022v\000\000\000\000\0019\0019\000\000\0019\015\218\0019\023\242\000\000\022\170\022z\000\000\000\000\000\000\022\174\000\n\022\178\000\000\022\182\022\186\022~\022\190\022\130\000\000\000\000\000\000\000\000\011\149\022\194\000\000\022\134\022\198\000\000\000\000\000\000\000\000\022\138\000\000\000\000\022\146\000\000\000\000\000\000\022\150\000\000\000\000\022\202\000\000\000\000\022\154\000\000\022\206\022\210\011\193\000\000\000\000\000\000\000\000\000\000\000\000\025\006\000\000\000\000\011\149\000\000\022\158\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\149\000\000\022\162\000\000\000\000\022\166\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002:\000\000\000\000\002>\000\000\022\170\002B\000\000\000\000\000\000\022\174\000\n\022\178\000\000\022\182\022\186\t\129\022\190\000\000\000\000\000\000\000\000\002F\000\000\022\194\002J\000\000\022\198\000\000\000\000\000\000\002Z\002^\000\000\002f\000\000\000\000\000\000\000\000\000\000\000\000\002n\022\202\002r\000\000\000\000\000\000\022\206\022\210\011\149\000\000\002v\002z\000\000\000\000\002~\002\130\002\134\000\000\015=\002\138\002\142\015=\000\000\002\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\150\015=\015=\000\000\000\000\002\154\000\000\000\000\000\n\006^\000\000\000\000\000\000\000\000\000\000\000\000\015=\002\162\000\000\000\000\015=\000\000\015=\015=\000\000\000\000\006f\000\000\002\166\007^\000\000\000\000\015=\000\000\000\000\015=\000\000\015=\000\000\000\000\000\000\002\170\000\000\000\000\000\000\nZ\0061\002\174\000\000\000\000\n\158\0061\t\129\000\000\0061\000\000\002\178\0061\0061\000\000\015=\0061\002\182\0061\000\000\000\000\000\000\000\000\0061\0061\0061\000\000\000\000\0061\000\000\0061\000\000\000\000\0061\000\000\007j\000\000\000\000\0061\0061\0061\000\000\0061\000\000\0061\000\000\0061\0061\0061\000\000\000\000\0061\0061\0061\0061\015=\015=\0061\015=\000\000\007n\0061\015=\0061\n*\n\222\0061\0061\0061\000Z\000\000\007v\000\000\0061\000Z\000\000\015=\001\170\0061\011\018\015=\015=\000Z\0061\000Z\0061\000\000\015=\0061\000\000\0061\015=\015=\0061\0061\0061\000\000\0061\0061\0061\0061\000\000\0061\0061\0061\000\000\0061\0061\000\000\0061\0061\0061\0061\0061\000\000\000\000\0061\0061\0061\000\000\0061\0061\0061\0061\011R\0061\0061\000\000\0061\000Z\0061\0061\0061\0061\000Z\0061\0061\000\000\0061\0061\000\000\000\000\000\000\000\000\000\000\0061\000\000\000\000\0061\000\000\000\000\000\000\000\000\0061\0061\0061\0061\011~\0061\0061\0061\0061\000Z\0061\000\000\000\000\0061\000\000\0061\0061\000\000\0061\0061\000\000\000\000\0061\0061\0061\0061\000\000\0061\0061\0061\0061\000\000\0061\0061\000\000\0061\000\000\0061\0061\000\000\0061\000\000\0061\000\000\000\000\0061\002:\000\000\000\000\002>\000\000\0061\002B\000\000\000\000\0061\0061\0061\0061\000\000\0061\0061\019\202\0061\000\000\0061\0061\000\000\002F\000\000\0061\002J\000\000\0061\000\000\000\000\000\000\002Z\002^\000\000\002f\000\000\000\000\000\000\000\000\000\000\000\000\002n\0061\002r\000\000\000\000\000\000\0061\0061\000\000\000\000\002v\002z\000\000\000\000\002~\002\130\002\134\000\000\000\000\002\138\002\142\000\000\002:\002\146\000\000\002>\000\000\000\000\002B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\150\000\000\000\000\000\000\002F\002\154\000\000\002J\000\n\000\000\000\000\000\000\000\000\002Z\b6\000\000\002f\002\162\000\000\000\000\000\000\000\000\000\000\002n\000\000\002r\002:\000\000\002\166\002>\000\000\000\000\002B\002v\002z\000\000\000\000\002~\002\130\002\134\000\000\002\170\002\138\002\142\000\000\000\000\002\146\002\174\002F\000\000\000\000\002J\000\000\000\000\000\000\000\000\002\178\002Z\002\158\000\000\002f\000\000\002\182\002\150\000\000\000\000\000\000\002n\002\154\002r\000\000\000\n\000\000\000\000\000\000\000\000\000\000\002v\002z\000\000\002\162\002~\002\130\002\134\000\000\000\000\002\138\002\142\000\000\000\000\002\146\002\166\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\170\000\000\000\000\002\150\000\000\000\000\002\174\000\000\002\154\000\000\000\000\000\n\000\000\000\000\007\234\002\178\000\000\000\000\000\000\000\000\002\162\002\182\000\000\004e\000\000\000\000\004e\000\000\000\000\004e\000\000\002\166\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\170\004e\000\000\000\000\004e\000\000\002\174\000\000\000\000\000\000\004e\004e\000\000\004e\000\000\002\178\000\000\000\000\000\000\000\000\004e\002\182\004e\000\000\000\000\000\000\000\000\000\000\000\000\022v\004e\004e\000\000\000\000\004e\004e\004e\000\000\000\000\004e\004e\022z\000\000\004e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022~\000\000\022\130\000\000\000\000\000\000\000\000\000\000\000\000\004e\022\134\000\000\000\000\000\000\004e\000\000\022\138\004e\000\000\022\146\000\000\000\000\000\000\022\150\000\000\000\000\004e\000\000\000\000\022\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0061\023\238\000\000\0061\000v\000\000\022\158\0061\000\000\0061\000\000\004e\000\000\000\000\0061\0061\000\000\004e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004e\000\000\000\000\000\000\000\000\011\149\004e\022\162\000\000\000\000\022\166\0061\000\000\000\000\0061\000\194\000\000\000\000\0061\000\000\0061\000\000\0061\022\170\000\000\0061\0061\000\000\022\174\000\n\022\178\000\000\022\182\022\186\000\000\022\190\000\000\0061\0061\000\000\0061\001\002\022\194\000\000\0061\022\198\0061\000Z\000\000\000\000\0061\0061\0061\000\000\000\000\0061\000\000\000\000\0061\0061\022\202\000\000\0061\0061\000\000\022\206\022\210\011\149\000\000\000\000\000\000\000\000\000\000\000\000\0061\0061\000\000\000\000\000\000\001\242\000\000\0061\000\000\000\000\000Z\0061\000\000\0061\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0061\000\000\000\000\000\000\0061\0061\0061\000\000\000\000\000\000\004\182\000\000\000\000\000\000\000\000\000Z\0061\000\000\0061\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0061\0061\000\000\000\000\0061\0061\000\000\000\000\000\000\000\000\000\000\0061\0061\000\000\000\000\0061\0061\000\000\000\000\0061\000\000\000\000\000\000\000\000\0061\0061\000\000\0061\000\000\0061\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0061\000\000\000\000\000\000\000\000\0061\000\000\000\000\000\000\000\000\000\000\000\000\0061\000\000\000\000\0061\0061\000\000\000\000\0061\000\000\000\000\000\000\000\000\0061\0061\000\000\002:\000\000\0061\002N\000\000\000\000\002R\000\000\000\000\000\000\000\000\0061\000\000\000\000\0061\0061\000\000\000\000\0061\000\000\000\000\000\000\002F\0061\0061\002J\000\000\000\000\0061\000\000\000\000\002V\002j\000\000\002f\000\000\000\000\000\000\000\000\000\000\000\000\002n\000\000\002r\002:\000\000\000\000\002N\000\000\000\000\002R\006\018\002z\000\000\000\000\006\022\002\130\002\134\000\000\000\000\006\030\006\"\000\000\000\000\006&\000\000\002F\000\000\000\000\002J\000\000\000\000\000\000\000\000\000\000\002V\b\030\000\000\002f\000\000\000\000\006*\000\000\000\000\000\000\002n\006.\002r\000\000\000\n\000\000\000\000\000\000\000\000\000\000\006\018\002z\000\000\006>\006\022\002\130\002\134\000\000\000\000\006\030\006\"\0061\000\000\006&\0061\003\254\000\000\0061\0061\000\000\0061\004B\000\000\000\000\0061\0061\0061\006B\0061\004\130\006*\0061\0061\006F\0061\006.\000\000\000\000\000\n\0061\0061\000\000\006J\000\000\000\000\000\000\000\000\006>\002\182\000\000\000\000\000\000\000\000\000\000\000\000\0061\000\000\000\000\000\000\0061\000\000\0061\000\000\000\000\000\000\0061\000\000\000\000\000\000\0061\000\000\006B\000\000\0061\000\000\0061\000\000\006F\000\000\004\246\000\000\0061\000\000\000\000\000Z\005\218\006J\0061\000\000\0061\000Z\000\000\002\182\0061\000\000\0061\000\000\000\000\000Z\0061\0061\0061\0061\000\000\000\000\0061\0061\000\000\0061\0061\000\000\0061\000\000\0061\0061\000\000\000\000\0061\000\000\000\000\000\000\000\000\0061\000\000\000\000\0061\000\000\000\000\0061\000\000\000\000\000\000\0061\000\000\000\000\000\000\0061\0061\0061\000\000\000\000\000\000\000\000\0061\000\000\000\000\0061\0061\000\000\000\000\000\000\0061\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0061\000\000\000\000\000\000\bf\000\000\000\000\0061\000\000\000Z\0061\0061\0061\0061\0061\000\000\0061\0061\000\000\0061\0061\0061\000\000\000\000\0061\0061\0061\000\000\0061\002:\0061\000\000\002N\0061\0061\002R\0061\000\000\0061\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0061\000\000\000\000\000\000\002F\000\000\000\000\002J\000\000\000\000\0061\000\000\000\000\002V\0062\0061\002f\000\000\000\000\000\000\000\000\000\000\000\000\002n\000\000\002r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\018\002z\000\000\000\000\006\022\002\130\002\134\000\000\000\000\006\030\006\"\000\000\000\000\006&\000\000\0061\000\000\000\000\0061\0061\000\000\000\000\0061\000\000\000\000\000\000\000\000\0061\0061\000\000\006*\000\000\0061\000\000\000\000\006.\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006>\000R\000V\000f\000\170\000\000\000\174\011\146\000\178\000\246\011\150\000\254\000\000\001\014\026\226\001\022\011\154\001\030\001\190\001\198\001\202\011\158\026\230\000\000\006B\002:\000\000\000\000\011\234\000\000\006F\011\238\000\000\000\000\000\000\001\210\000\000\000\000\000\000\006J\000\000\000\000\000\000\000\000\000\000\002\182\000\000\002F\000\000\000\000\001\218\000\000\000\000\000\000\000\000\000\000\011\242\011\254\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002n\000\000\002r\000\000\001\234\000\000\000\000\000\000\000\000\000\000\012\018\002z\000\000\000\000\012\022\002\130\002\134\000\000\001\238\012\026\012\030\000\000\000\000\012\"\000\000\000\000\000\000\000\000\002:\000\000\000\000\011\234\000\000\000\000\011\238\000\000\000\000\000\000\000\000\012&\012*\000\000\000\000\000\000\000\000\012.\000\000\000\000\000\n\000\000\002F\000\000\000\000\000\000\000\000\000\000\000\000\0126\000\000\011\242\0122\000\000\000\n\000\000\000\000\000\000\000\000\004\245\000\000\002n\000\000\002r\002:\000\000\000\000\011\234\000\000\000\000\011\238\012\018\002z\012:\000\000\012\022\002\130\002\134\000\000\012>\012\026\012\030\000\000\000\000\012\"\000\000\002F\000\000\012B\000\000\000\000\000\000\000\000\000\000\002\182\011\242\012J\000\000\000\000\000\000\012&\012*\000\000\000\000\000\000\002n\012.\002r\000\000\000\n\000\000\000\000\000\000\000\000\000\000\012\018\002z\000\000\0126\012\022\002\130\002\134\000\000\000\000\012\026\012\030\000\000\000\000\012\"\000\000\000\000\000\000\000\000\002:\000\000\000\000\014\166\000\000\000\000\014\170\000\000\000\000\012:\000\000\012&\012*\000\000\000\000\012>\000\000\012.\000\000\000\000\000\n\000\000\002F\000\000\012B\000\000\000\000\000\000\000\000\0126\002\182\014\174\016\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002n\000\000\002r\002:\000\000\000\000\014\166\000\000\000\000\014\170\014\198\002z\012:\000\000\014\202\002\130\002\134\000\000\012>\014\206\014\210\000\000\000\000\014\214\000\000\002F\000\000\012B\000\000\000\000\000\000\000\000\000\000\002\182\014\174\014\178\000\000\000\000\000\000\012&\014\218\000\000\000\000\000\000\002n\014\222\002r\000\000\000\n\000\000\000\000\000\000\000\000\000\000\014\198\002z\000\000\014\230\014\202\002\130\002\134\000\000\000\000\014\206\014\210\000\000\000\000\014\214\000\000\000\000\000\000\000\000\002:\000\000\000\000\014\166\000\000\000\000\014\170\000\000\000\000\014\234\000\000\012&\014\218\000\000\000\000\014\238\000\000\014\222\000\000\000\000\000\n\000\000\002F\000\000\014\242\000\000\000\000\000\000\000\000\014\230\002\182\014\174\014\226\000\000\000\000\011\146\000\000\000\000\011\150\000\000\000\000\002n\026\246\002r\011\154\000\000\000\000\000\000\000\000\011\158\026\250\014\198\002z\014\234\000\000\014\202\002\130\002\134\000\000\014\238\014\206\014\210\000\000\ty\014\214\000\000\000\000\000\000\014\242\000\000\000\000\000\000\000\000\000\000\002\182\ty\000\000\000\000\000\000\000\000\012&\014\218\000\000\017\234\000\000\ty\014\222\ty\000\000\000\n\000\000\000\000\000\000\000\000\000\000\ty\000\000\000\000\014\230\017\238\000\000\ty\000\000\025\002\ty\000\000\000\000\000\000\ty\023J\000\000\000\000\000\000\000\000\ty\022z\000\000\000\000\000\000\002z\000\000\000\000\014\234\014*\002\134\022~\000\000\022\130\014\238\000\000\ty\000\000\000\000\000\000\000\000\022\134\000\000\014\242\000\000\000\000\000\000\022\138\000\000\002\182\022\146\000\000\000\000\000\000\022\150\000\000\000\000\000\000\000\000\000\000\022\154\000\000\000\n\ty\000\000\000\000\ty\005\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022\158\025\"\000\000\ty\000\000\000\000\000\000\000\000\ty\ty\ty\000\000\ty\ty\000\000\ty\000\000\000\000\000\000\000\000\000\000\000\000\ty\000\000\000\000\ty\000\000\022\162\000\000\000\000\022\166\000\000\b9\000\000\000\000\000\000\t\237\t\237\000\000\000\000\ty\t\237\000\000\022\170\b9\ty\ty\000\000\022\174\000\n\022\178\000\000\022\182\022\186\b9\022\190\b9\000\000\000\000\000\000\000\000\000\000\022\194\000\000\b9\022\198\000\000\000\000\000\000\000\000\b9\000\000\023\210\b9\000\000\000\000\000\000\b9\000\000\000\000\022\202\000\000\000\000\b9\022z\022\206\022\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022~\000\000\022\130\000\000\000\000\b9\025\"\000\000\000\000\000\000\022\134\000\000\000\000\000\000\000\000\000\000\022\138\000\000\000\000\022\146\000\000\000\000\000\000\022\150\000\000\000\000\000\000\000\000\000\000\022\154\000\000\000\000\b9\000\000\000\000\b9\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022\158\000\000\000\000\b9\000\000\000\000\000\000\000\000\b9\b9\b9\000\000\b9\b9\000\000\b9\000\000\000\000\000\000\000\000\000\000\000\000\b9\000\000\000\000\b9\000\000\022\162\000\000\000\000\022\166\000\000\023\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b9\000\000\000\000\022\170\022z\b9\b9\000\000\022\174\000\n\022\178\000\000\022\182\022\186\022~\022\190\022\130\000\000\000\000\000\000\000\000\000\000\022\194\000\000\022\134\022\198\000\000\000\000\000\000\000\000\022\138\000\000\022v\022\146\000\000\000\000\000\000\022\150\000\000\000\000\022\202\000\000\000\000\022\154\022z\022\206\022\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022~\000\000\022\130\000\000\000\000\022\158\000\000\000\000\000\000\000\000\022\134\000\000\000\000\000\000\000\000\000\000\022\138\000\000\000\000\022\146\000\000\000\000\000\000\022\150\000\000\000\000\000\000\000\000\000\000\022\154\000\000\000\000\022\162\000\000\000\000\022\166\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\150\000\000\000\000\022\170\000\000\000\000\000\000\000\000\022\174\000\n\022\178\000\000\022\182\022\186\000\000\022\190\000\000\000\000\000\000\000\000\000\000\000\000\022\194\000\000\000\000\022\198\000\000\022\162\000\000\000\000\022\166\000\000\022v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022\202\000\000\000\000\022\170\022z\022\206\022\210\000\000\022\174\000\n\022\178\000\000\022\182\022\186\022~\022\190\022\130\000\000\000\000\000\000\000\000\000\000\022\194\000\000\022\134\022\198\000\000\000\000\000\000\000\000\022\138\000\000\000\000\022\146\000\000\000\000\000\000\022\150\000\000\000\000\022\202\000\000\000\000\022\154\000\000\022\206\022\210\000\000\000\000\000\000\004}\004}\004}\004}\000\000\004}\000\000\004}\004}\025\238\004}\000\000\004}\000\000\004}\000\000\004}\004}\004}\004}\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\002\000\000\000\000\000\000\000\000\004}\000\000\022\162\000\000\000\000\022\166\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004}\000\000\000\000\022\170\000\000\000\000\000\000\000\000\022\174\000\n\022\178\000\000\022\182\022\186\000\000\022\190\000\000\000\000\000\000\000\000\004}\000\000\022\194\000\000\000\000\022\198\004}\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004}\000\000\000\000\000\000\000\000\000\000\022\202\000\000\000\000\000\000\000\000\022\206\022\210\004}\000\000\000R\000V\000f\000\170\000\000\000\174\000\000\000\178\000\246\000\000\000\254\000\000\001\014\000\000\001\022\000\000\001\030\001\190\001\198\001\202\000\000\000\000\000\000\000R\000V\000f\000\170\000\000\000\174\004}\000\178\000\246\000\000\000\254\001\210\001\014\000\000\001\022\000\000\001\030\001\190\001\198\001\202\000\000\000\000\000\000\000\000\000\000\000\000\001\218\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\234\000\000\000\000\001\218\000\000\004}\001\246\000\000\000\000\000\000\001\169\000\000\000\000\001\169\001\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\234\000\000\000\000\000\000\001\250\000\000\001\246\000\000\000\000\000\000\001\169\001\169\000\000\000\000\001\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\169\000\000\001\250\000\000\001\169\000\000\001\169\001\169\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\001\169\000\000\000\000\001\169\000\000\001\169\000\000\000\000\000R\000V\000f\000\170\000\000\000\174\001\254\000\178\000\246\000\n\000\254\000\000\001\014\000\000\001\022\000\000\001\030\001\190\001\198\001\202\001\169\000\000\000\000\000\000\000\000\000R\000V\000f\000\170\001\254\000\174\ri\000\178\000\246\001\210\000\254\000\000\001\014\000\000\001\022\000\000\001\030\001\190\001\198\001\202\000\000\000\000\000\000\000\000\001\218\000\000\000\000\000\000\000\000\002}\000\000\000\000\000\000\022v\001\210\001\169\006z\000\000\001\169\000\000\000\000\000\000\001\169\000\000\001\234\022z\000\000\000\000\000\000\001\218\005*\000\000\000\000\000\000\000\000\022~\001\169\022\130\001\238\000\000\001\169\001\169\005.\0052\000\000\022\134\000\000\006\130\000\000\001\234\000\000\001\169\001\169\000\000\022\146\005*\000\000\000\000\022\150\000\000\000\000\000\000\000\000\001\238\022\154\000\000\000\000\005.\0052\000R\000V\000f\000\170\000\000\000\174\000\000\000\178\000\246\000\000\000\254\022\158\001\014\000\000\001\022\000\000\001\030\001\190\001\198\001\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0056\001\210\000\000\000\000\000\000\022\162\000\000\000\000\022\166\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\218\000\000\000\000\000\000\000\000\022\170\004\173\000\000\000\000\0056\022\174\026\026\022\178\000\000\022\182\022\186\000\000\022\190\000\000\000\000\001\234\000\000\000\000\000\000\022\194\000\000\005*\022\198\000\000\000\000\000\000\b\209\000\000\000\000\001\238\000\000\000\000\000\000\005.\0052\000\000\000\000\022\202\000\000\000\000\000\000\000\000\022\206\022\210\000\000\000R\000V\000f\000\170\000\000\000\174\000\000\000\178\000\246\000\000\000\254\000\000\001\014\000\000\001\022\000\000\001\030\001\190\001\198\001\202\000\000\000\000\000\000\000R\000V\000f\000\170\000\000\000\174\000\000\000\178\000\246\000\000\000\254\001\210\001\014\000\000\001\022\000\000\001\030\001\190\001\198\001\202\000\000\000\000\000\000\000\000\000\000\0056\001\218\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\234\002i\000\000\001\218\000\000\000\000\027\158\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\238\000\000\000\000\000\000\027\162\0052\000\000\000\000\000\000\001\234\000\000\000\000\000\000\000\000\000\000\027\158\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\238\000\000\000\000\000\000\027\162\0052\000R\000V\000f\000\170\000\000\000\174\000\000\000\178\000\246\000\000\000\254\000\000\001\014\000\000\001\022\000\000\001\030\001\190\001\198\001\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\210\027\166\000R\000V\000f\000\170\000\000\000\174\000\000\000\178\000\246\000\000\000\254\000\000\001\014\001\218\001\022\000\000\001\030\001\190\001\198\001\202\000\000\004\165\027\166\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\234\001\210\000\000\015!\000\000\000\000\027\158\000\000\000\000\000\000\000\000\b\181\000\000\000\000\001\238\000\000\001\218\000\000\027\162\0052\000\000\000\000\000\000\000\000\000\000\000\000\015!\015!\000\000\006\178\000\000\000\000\007\n\000\000\012b\000\000\001\234\000\000\000\000\000\000\000\000\015!\001\246\000\000\000\000\000\000\000\000\015!\015!\000\000\001\238\012j\006\186\006\226\012v\000\000\000\000\015!\000\000\000\000\015!\000\000\015!\001\250\000\000\000\000\000\000\006\194\000\000\000\000\000\000\001\253\000\000\007\026\007\"\000\000\000\000\000\000\027\166\000\000\000\000\000\000\000\000\006\234\000\000\015!\006\202\000\000\006\218\000\000\000\000\000\000\000\000\000\249\000\n\000\000\000\249\000\000\000\000\000\000\002Y\000\000\000\000\000\000\000\000\012\130\000\000\000\000\000\000\000\000\000\000\006\242\000\000\000\000\000\000\000\000\006\186\006\226\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015!\000\000\000\000\000\000\000\000\012\134\006\194\015!\000\000\000\000\000\249\000\000\000\249\000\249\002u\000\000\012\142\000\000\000\000\000\000\000\000\015!\006\234\000\000\000\000\006\202\006\250\006\218\015!\001\253\000\000\000\000\000\225\006\210\000\000\000\225\015!\015!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\253\000\000\000\000\006\242\001\253\001\253\000\000\000\000\000\225\000\225\000\000\000\000\000\000\000\000\000\000\007*\007\002\000\213\000\000\000\000\000\213\000\000\000\000\006\194\000\000\000\000\000\000\000\225\000\000\000\225\000\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\225\000\213\000\213\006\202\006\250\006\218\000\000\000\249\000\000\000\000\000\217\006\210\000\000\000\217\000\000\000\000\000\213\000\000\000\000\000\000\000\213\000\000\000\213\000\213\000\000\000\249\000\000\000\000\000\225\000\249\000\249\000\000\000\213\000\217\000\217\006\202\000\000\000\213\000\000\000\000\000\249\007\002\000\221\000\000\000\000\000\221\000\000\000\000\000\217\000\000\000\000\000\000\000\217\000\000\000\217\000\217\000\000\000\000\000\000\000\000\000\213\000\000\000\000\000\000\000\217\000\221\000\221\006\202\000\225\000\217\000\000\000\225\000\000\000\000\000\237\006\210\000\000\000\237\000\000\000\000\006\194\000\000\000\000\000\000\000\221\000\000\000\221\000\221\000\000\000\225\000\000\000\000\000\217\000\225\000\225\000\000\000\221\006\186\006\226\006\202\000\213\006\218\000\000\000\213\000\225\000\225\000\229\006\210\000\000\000\229\000\000\000\000\006\194\000\000\000\000\000\000\000\237\000\000\000\237\000\237\000\000\000\213\000\000\000\000\000\221\000\213\000\213\000\000\000\237\006\186\006\226\006\202\000\217\006\218\000\000\000\217\000\213\000\213\000\233\006\210\000\000\000\233\000\000\000\000\006\194\000\000\000\000\000\000\000\229\000\000\000\229\000\229\000\000\000\217\000\000\000\000\006\242\000\217\000\217\000\000\000\229\006\186\006\226\006\202\000\221\006\218\000\000\000\221\000\217\000\217\000\241\006\210\000\000\000\241\000\000\000\000\006\194\000\000\000\000\000\000\000\233\000\000\000\233\000\233\000\000\000\221\000\000\000\000\000\229\000\221\000\221\000\000\000\233\006\186\006\226\006\202\000\237\006\218\000\000\000\237\000\221\000\221\006\178\006\210\000\000\001\001\000\000\000\000\006\194\000\000\000\000\000\000\000\241\000\000\000\241\000\241\000\000\000\237\000\000\000\000\006\242\000\237\000\237\000\000\006\234\006\186\006\226\006\202\000\229\006\218\000\000\000\229\000\237\000\237\006\178\006\210\000\000\000\245\000\000\000\000\006\194\000\000\000\000\000\000\001\001\000\000\001\001\007\"\000\000\000\229\000\000\000\000\006\242\000\229\000\229\000\000\006\234\006\186\006\226\006\202\000\233\006\218\000\000\000\233\000\229\000\229\006\178\006\210\000\000\000\253\000\000\000\000\006\194\000\000\000\000\000\000\000\245\000\000\000\245\000\245\000\000\000\233\000\000\000\000\006\242\000\233\000\233\000\000\006\234\006\186\006\226\006\202\006\250\006\218\000\000\000\241\000\233\000\233\000\189\006\210\000\000\000\000\000\000\000\000\006\194\000\000\000\000\000\000\000\253\000\000\000\253\007\"\000\000\000\241\000\000\000\000\006\242\000\241\000\241\000\000\006\234\r2\rZ\006\202\006\250\006\218\000\000\001\001\000\241\000\241\000\165\006\210\000\000\000\000\000\000\000\000\r:\000\000\000\000\000\000\000\000\000\000\000\189\000\189\000\000\001\001\000\000\000\000\006\242\001\001\001\001\000\000\rb\000\165\000\165\rB\006\250\rR\000\000\000\245\007*\007\002\000\153\006\210\000\000\000\000\000\000\000\000\r:\000\000\000\000\000\000\000\000\000\000\000\165\000\165\000\000\000\245\000\000\000\000\rj\000\245\000\245\000\000\000\165\000\153\000\153\rB\006\250\rR\000\000\000\253\000\245\007\002\000\000\006\210\000\000\000\000\000\000\000\000\000\153\000\000\000\000\000\000\000\000\000\000\000\153\000\153\000\000\000\253\000\000\000\000\000\165\000\253\000\253\000\000\000\153\000\000\000\000\rB\rr\000\153\000\157\000\000\000\253\007\002\000\000\rJ\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\189\000\000\000\000\000\153\000\157\000\157\000\000\000\189\000\000\000\000\000\000\000\165\000\000\000\161\000\000\000\189\rz\000\000\rJ\000\157\000\000\000\000\000\000\000\000\000\000\000\157\000\157\000\000\000\000\000\000\000\177\000\000\000\165\000\000\000\000\000\157\000\161\000\161\rB\000\165\000\157\000\000\000\000\000\153\000\000\000\000\000\000\000\165\000\165\000\000\rJ\r:\000\000\r2\rZ\000\000\000\000\000\161\000\161\000\000\000\000\000\000\000\169\000\157\000\153\000\000\000\000\000\161\r:\000\000\rB\000\153\rR\000\173\000\177\000\177\000\000\000\000\000\000\000\153\000\153\000\000\000\000\000\000\000\177\r2\rZ\rB\000\000\rR\000\000\000\000\000\000\000\000\000\000\000\161\r2\rZ\000\000\000\000\r:\000\000\000\000\000\157\000\000\000\000\000\169\000\169\000\000\000\000\rJ\r:\rj\000\000\000\000\000\000\000\169\000\173\000\173\rB\000\000\rR\000\181\000\000\000\157\000\000\000\000\000\173\000\000\000\000\rB\000\157\rR\000\000\000\000\000\161\000\000\000\000\000\000\000\157\000\157\000\000\rJ\000\000\000\169\r2\rZ\000\000\000\000\000\000\000\000\000\000\000\177\000\000\r*\rj\000\161\000\000\000\000\rJ\r:\000\000\000\000\000\161\000\000\000\000\000\181\000\181\000\000\000\000\000\000\000\161\000\161\000\177\000\000\000\000\rb\r2\rZ\rB\000\177\rR\000\000\000\000\000\169\000\000\000\000\000\000\000\177\000\177\000\000\rJ\r:\000\000\000\000\000\173\000\000\000\000\000\197\r\138\000\000\000\000\rJ\r*\rj\000\169\000\000\000\000\rb\000\000\000\000\rB\000\169\rR\r*\000\000\000\173\000\000\000\000\000\000\000\169\000\169\000\000\000\173\000\000\000\000\r2\rZ\000\000\000\000\000\000\000\173\000\173\000\000\000\000\000\000\rj\r2\rZ\000\000\000\000\r:\000\000\000\000\rr\000\000\000\000\000\185\000\185\000\000\000\000\rJ\r:\000\000\000\000\000\000\000\000\rb\000\193\r\138\rB\000\000\rR\000\000\000\000\000\181\000\000\000\000\rb\000\000\000\000\rB\000\181\rR\000\000\000\000\rr\000\000\000\000\000\000\000\181\000\181\000\000\rJ\000\000\rj\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rj\000\197\000\000\000\000\000\000\000\000\000\000\000\000\000\197\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\146\rz\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rr\000\000\000\000\000\000\000\000\000\000\000\000\rJ\000\000\000\000\000\000\rr\000\000\000\000\000\000\000\000\000\000\000\000\rJ\000\000\000\000\000\185\000\000\000\000\000\000\000\000\000\000\000\000\000\185\000\000\000\000\000\000\000\193\000\000\000\000\000\000\000\185\rz\000\000\000\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\193\rz"))
   
   let lhs =
-    (16, "\000\012\000\011\000\n\000\t\000\b\000\007\000\006\000\005\000\004\000\003\000\002\000\001\000\000\001\018\001\018\001\018\001\017\001\017\001\017\001\017\001\016\001\016\001\016\001\016\001\016\001\016\001\016\001\016\001\016\001\016\001\016\001\016\001\016\001\016\001\016\001\015\001\015\001\015\001\015\001\015\001\015\001\015\001\015\001\015\001\015\001\015\001\015\001\015\001\015\001\015\001\014\001\014\001\014\001\014\001\014\001\014\001\014\001\014\001\014\001\014\001\014\001\014\001\014\001\014\001\014\001\r\001\r\001\r\001\r\001\r\001\r\001\r\001\r\001\r\001\r\001\r\001\r\001\r\001\r\001\r\001\012\001\012\001\012\001\012\001\011\001\n\001\n\001\n\001\t\001\t\001\t\001\b\001\b\001\b\001\007\001\007\001\007\001\006\001\005\001\004\001\003\001\003\001\002\001\002\001\001\001\001\001\000\001\000\000\255\000\255\000\254\000\253\000\253\000\252\000\252\000\251\000\251\000\251\000\251\000\250\000\250\000\250\000\249\000\248\000\247\000\246\000\245\000\244\000\243\000\242\000\241\000\240\000\239\000\238\000\237\000\236\000\235\000\235\000\234\000\234\000\233\000\233\000\232\000\232\000\231\000\231\000\231\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\230\000\229\000\228\000\228\000\228\000\228\000\227\000\227\000\226\000\226\000\225\000\225\000\224\000\224\000\224\000\223\000\223\000\223\000\222\000\222\000\222\000\222\000\221\000\221\000\221\000\221\000\220\000\220\000\220\000\220\000\220\000\220\000\220\000\220\000\220\000\220\000\220\000\220\000\220\000\220\000\220\000\220\000\220\000\220\000\220\000\220\000\220\000\219\000\218\000\218\000\217\000\217\000\217\000\216\000\216\000\215\000\215\000\215\000\214\000\214\000\213\000\213\000\213\000\212\000\211\000\210\000\210\000\209\000\209\000\208\000\208\000\207\000\207\000\206\000\206\000\205\000\204\000\203\000\203\000\202\000\202\000\201\000\201\000\201\000\200\000\199\000\198\000\198\000\197\000\196\000\196\000\196\000\196\000\196\000\195\000\195\000\195\000\195\000\194\000\194\000\194\000\194\000\193\000\193\000\193\000\193\000\192\000\191\000\191\000\190\000\190\000\190\000\189\000\188\000\188\000\188\000\188\000\187\000\186\000\186\000\185\000\185\000\184\000\184\000\183\000\183\000\183\000\183\000\182\000\182\000\181\000\181\000\181\000\181\000\181\000\180\000\180\000\180\000\180\000\179\000\179\000\179\000\179\000\179\000\178\000\177\000\177\000\177\000\177\000\176\000\175\000\175\000\174\000\174\000\173\000\173\000\172\000\172\000\171\000\171\000\170\000\170\000\169\000\169\000\169\000\169\000\169\000\169\000\169\000\169\000\168\000\167\000\166\000\166\000\165\000\165\000\164\000\164\000\163\000\163\000\162\000\162\000\161\000\161\000\160\000\160\000\159\000\159\000\158\000\158\000\157\000\157\000\156\000\156\000\155\000\155\000\154\000\154\000\153\000\153\000\152\000\152\000\151\000\151\000\150\000\150\000\149\000\149\000\148\000\148\000\147\000\147\000\146\000\146\000\145\000\145\000\144\000\144\000\143\000\143\000\142\000\142\000\141\000\141\000\140\000\140\000\139\000\139\000\138\000\138\000\137\000\137\000\136\000\136\000\135\000\135\000\134\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\132\000\131\000\130\000\129\000\128\000\127\000~\000}\000|\000{\000{\000{\000z\000z\000z\000y\000y\000y\000y\000x\000w\000v\000u\000t\000s\000r\000r\000q\000q\000q\000p\000p\000o\000o\000o\000n\000n\000m\000l\000l\000l\000k\000j\000j\000i\000i\000h\000h\000g\000g\000f\000f\000e\000e\000d\000d\000c\000c\000b\000b\000b\000b\000b\000b\000b\000b\000b\000b\000b\000b\000b\000b\000b\000b\000b\000b\000b\000b\000a\000a\000`\000`\000_\000_\000^\000^\000]\000]\000\\\000\\\000[\000[\000[\000[\000[\000Z\000Z\000Y\000Y\000Y\000Y\000X\000W\000V\000V\000V\000U\000U\000U\000T\000T\000T\000T\000T\000T\000S\000S\000S\000S\000S\000R\000R\000R\000R\000R\000R\000R\000Q\000Q\000Q\000Q\000Q\000Q\000Q\000P\000P\000P\000P\000P\000P\000P\000O\000O\000O\000O\000O\000O\000O\000N\000N\000N\000N\000N\000N\000N\000N\000N\000N\000N\000N\000N\000M\000M\000M\000M\000M\000M\000M\000M\000M\000M\000M\000M\000M\000L\000L\000L\000L\000L\000L\000L\000L\000L\000L\000L\000L\000L\000K\000K\000K\000K\000K\000K\000K\000K\000K\000K\000K\000K\000K\000J\000J\000J\000J\000J\000I\000H\000H\000H\000H\000H\000H\000H\000H\000H\000H\000H\000H\000H\000H\000H\000H\000H\000H\000H\000H\000H\000H\000G\000G\000G\000F\000E\000D\000C\000C\000B\000B\000A\000@\000@\000@\000?\000?\000>\000>\000=\000<\000<\000<\000<\000<\000<\000<\000;\000;\000;\000;\000;\000;\000;\000:\000:\000:\000:\000:\0009\0009\0008\0008\0008\0007\0007\0006\0006\0005\0005\0004\0004\0003\0003\0002\0002\0001\0001\0000\0000\000/\000/\000.\000.\000-\000-\000,\000,\000+\000+\000*\000*\000)\000)\000(\000(\000'\000'\000&\000&\000&\000&\000&\000&\000&\000&\000&\000&\000&\000&\000&\000&\000&\000&\000&\000%\000%\000%\000$\000$\000$\000$\000#\000#\000#\000#\000#\000#\000\"\000!\000!\000!\000 \000 \000\031\000\031\000\030\000\029\000\028\000\028\000\028\000\028\000\027\000\027\000\027\000\026\000\026\000\025\000\025\000\025\000\024\000\024\000\024\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\021\000\021\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\019\000\019\000\019\000\019\000\019\000\019\000\019\000\018\000\018\000\018\000\018\000\018\000\018\000\018\000\017\000\017\000\017\000\017\000\017\000\017\000\017\000\016\000\016\000\016\000\016\000\016\000\015\000\015\000\014\000\r\000\r\000\r\000\r\000\r")
+    (16, "\000\012\000\011\000\n\000\t\000\b\000\007\000\006\000\005\000\004\000\003\000\002\000\001\000\000\001\026\001\026\001\026\001\025\001\025\001\025\001\025\001\024\001\024\001\024\001\024\001\024\001\024\001\024\001\024\001\024\001\024\001\024\001\024\001\024\001\024\001\024\001\023\001\023\001\023\001\023\001\023\001\023\001\023\001\023\001\023\001\023\001\023\001\023\001\023\001\023\001\023\001\022\001\022\001\022\001\022\001\022\001\022\001\022\001\022\001\022\001\022\001\022\001\022\001\022\001\022\001\022\001\021\001\021\001\021\001\021\001\021\001\021\001\021\001\021\001\021\001\021\001\021\001\021\001\021\001\021\001\021\001\020\001\020\001\020\001\020\001\019\001\018\001\018\001\018\001\017\001\017\001\017\001\016\001\016\001\016\001\015\001\015\001\015\001\014\001\r\001\012\001\011\001\011\001\n\001\n\001\t\001\t\001\b\001\b\001\007\001\007\001\006\001\005\001\004\001\003\001\002\001\001\001\000\000\255\000\254\000\253\000\252\000\251\000\250\000\249\000\248\000\247\000\247\000\246\000\246\000\245\000\245\000\244\000\244\000\243\000\243\000\243\000\243\000\242\000\242\000\242\000\242\000\241\000\241\000\241\000\241\000\240\000\240\000\240\000\240\000\239\000\239\000\239\000\239\000\238\000\238\000\238\000\238\000\237\000\237\000\237\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\236\000\235\000\234\000\234\000\234\000\234\000\233\000\233\000\232\000\231\000\230\000\230\000\230\000\230\000\229\000\229\000\229\000\229\000\228\000\228\000\228\000\228\000\228\000\228\000\228\000\228\000\228\000\228\000\228\000\228\000\228\000\228\000\228\000\228\000\228\000\228\000\228\000\228\000\228\000\227\000\226\000\226\000\225\000\225\000\225\000\224\000\224\000\223\000\223\000\223\000\222\000\221\000\220\000\220\000\219\000\218\000\218\000\217\000\217\000\216\000\216\000\215\000\215\000\214\000\213\000\212\000\212\000\211\000\211\000\210\000\210\000\209\000\209\000\208\000\208\000\207\000\206\000\206\000\205\000\205\000\205\000\205\000\205\000\204\000\204\000\204\000\203\000\202\000\201\000\201\000\200\000\199\000\199\000\199\000\199\000\199\000\198\000\198\000\198\000\198\000\197\000\197\000\197\000\197\000\196\000\196\000\196\000\196\000\195\000\194\000\194\000\193\000\193\000\193\000\192\000\191\000\191\000\191\000\191\000\190\000\189\000\189\000\188\000\188\000\187\000\187\000\186\000\186\000\186\000\186\000\185\000\185\000\184\000\184\000\184\000\184\000\184\000\183\000\183\000\183\000\182\000\182\000\182\000\182\000\181\000\180\000\179\000\179\000\178\000\178\000\177\000\177\000\176\000\176\000\175\000\175\000\174\000\174\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\173\000\172\000\171\000\170\000\170\000\169\000\169\000\168\000\168\000\167\000\167\000\166\000\166\000\165\000\165\000\164\000\164\000\163\000\163\000\162\000\162\000\161\000\161\000\160\000\160\000\159\000\159\000\158\000\158\000\157\000\157\000\156\000\156\000\155\000\155\000\154\000\154\000\153\000\153\000\152\000\152\000\151\000\151\000\150\000\150\000\149\000\149\000\148\000\148\000\147\000\147\000\146\000\146\000\145\000\145\000\144\000\144\000\143\000\143\000\142\000\142\000\141\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\140\000\139\000\138\000\137\000\136\000\135\000\134\000\133\000\132\000\131\000\130\000\130\000\130\000\129\000\129\000\129\000\128\000\128\000\128\000\128\000\127\000~\000}\000|\000{\000z\000y\000y\000x\000x\000x\000w\000w\000v\000v\000v\000u\000u\000t\000s\000s\000s\000r\000q\000q\000p\000p\000p\000p\000p\000p\000p\000o\000o\000o\000o\000o\000o\000o\000n\000n\000n\000n\000n\000n\000n\000m\000m\000m\000m\000m\000m\000m\000l\000l\000l\000l\000l\000l\000l\000k\000k\000k\000k\000k\000k\000k\000j\000j\000i\000i\000h\000h\000g\000g\000f\000f\000e\000e\000d\000d\000c\000c\000c\000c\000c\000c\000c\000c\000c\000c\000c\000c\000c\000c\000c\000c\000c\000c\000c\000c\000b\000b\000a\000a\000`\000`\000_\000_\000^\000^\000]\000]\000\\\000\\\000\\\000\\\000\\\000[\000[\000Z\000Z\000Z\000Z\000Y\000X\000W\000W\000W\000V\000V\000V\000U\000U\000U\000U\000U\000U\000T\000T\000T\000T\000T\000S\000S\000S\000S\000S\000S\000S\000R\000R\000R\000R\000R\000R\000R\000Q\000Q\000Q\000Q\000Q\000Q\000Q\000P\000P\000P\000P\000P\000P\000P\000O\000O\000O\000O\000O\000O\000O\000O\000O\000O\000O\000O\000O\000N\000N\000N\000N\000N\000N\000N\000N\000N\000N\000N\000N\000N\000M\000M\000M\000M\000M\000M\000M\000M\000M\000M\000M\000M\000M\000L\000L\000L\000L\000L\000L\000L\000L\000L\000L\000L\000L\000L\000K\000K\000K\000K\000K\000J\000I\000I\000I\000I\000I\000I\000I\000I\000I\000I\000I\000I\000I\000I\000I\000I\000I\000I\000I\000I\000I\000I\000H\000H\000H\000G\000F\000E\000D\000D\000C\000C\000B\000A\000A\000A\000@\000@\000?\000?\000>\000=\000=\000=\000=\000=\000=\000=\000<\000<\000<\000<\000<\000<\000<\000;\000;\000;\000;\000;\000:\000:\0009\0009\0009\0008\0008\0007\0007\0006\0006\0005\0005\0004\0004\0003\0003\0002\0002\0001\0001\0000\0000\000/\000/\000.\000.\000-\000-\000,\000,\000+\000+\000*\000*\000)\000)\000(\000(\000'\000'\000'\000'\000'\000'\000'\000'\000'\000'\000'\000'\000'\000'\000'\000'\000'\000&\000&\000&\000%\000%\000%\000%\000$\000$\000#\000\"\000\"\000\"\000!\000!\000!\000!\000!\000 \000 \000\031\000\031\000\030\000\029\000\028\000\028\000\028\000\028\000\027\000\027\000\027\000\026\000\026\000\025\000\025\000\025\000\024\000\024\000\024\000\023\000\023\000\023\000\023\000\023\000\023\000\023\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\022\000\021\000\021\000\020\000\020\000\020\000\020\000\020\000\020\000\020\000\019\000\019\000\019\000\019\000\019\000\019\000\019\000\018\000\018\000\018\000\018\000\018\000\018\000\018\000\017\000\017\000\017\000\017\000\017\000\017\000\017\000\016\000\016\000\016\000\016\000\016\000\015\000\015\000\014\000\r\000\r\000\r\000\r\000\r")
   
   let goto =
-    ((16, "\000J\000\n\000\000\000\000\000\000\000S\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000\000\000\235\001H\000\000\000\151\000\139\000\000\000\000\000\000\000m\000\000\000\030\000\146\000\000\000\000\001\024\000\000\001\160\000\000\000\000\000\000\001\214\000\000\002\210\000\000\000\000\000\000\000\000\002\218\000\000\002\248\004\022\000\000\000\000\004>\000\000\004\150\000\000\000\000\000\000\005\n\000\000\005\024\000\000\005\186\000\000\005\194\006\190\000\000\000\000\006\246\000\000\007\020\000\000\000w\000\000\000\000\0072\000\000\007:\000\000\000\000\007N\000\000\007v\000\000\000\000\000\000\b\218\000\000\000\130\t\018\000\196\000\000\000\000\000\000\000\000\006.\0001\003\204\000\000\000\000\t^\000\000\029\178\000\000\000n\000\134\t\130\000\000\000\000\011\142\000\000\007|\000\000\001\164\n\172\017\154\012\206\017\154\r\244\022\144\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012x\012\206\000\000\000\000\015.\000\000\023\254\000\000\000T\000\000\000\000\000\000\000\000\001F\000\000!R\000\000\000\000\000\132\000\000\001\186\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\134\000\000\006^\000\000\006\172\000\000\006\232\000\000\b\182\000\000\015\244\000\000\029$\000\000\"\166\000\000%\156\000\000&2\000\000)\164\000\000*\140\000\000\023F\000\000\000\000\000\000\000\000\000\000/N\000\0007\154\000\0007\176\000\000\001\234\000\000\000\000\020\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\204\tj\000\000\000\000\t\146\000\000\t\218\t\230\000\000\000\000\t\238\000\000\n\b\000\000\000\000\000\000\n\n\000\000\n\020\000\000\000\000\n0\000\000\n:\nB\000\000\000\000\nF\000\000\nP\000\000\000\000\000\000\nT\000\000\nV\000\000\nt\000\000\nv\nz\000\000\000\000\n|\000\000\n~\000\000\001\218\n\130\000\000\n\136\000\000\n\144\000\000\n\164\000\000\000\000\000\000\n\170\000\000\n\178\012,\000\000\n\192\000\000\000\238\030`\000\000\002\190\000\000\003\198\000\000\000\000\001\250\000\000\000\000\001?\005R\000\000\000\000\000\000\000\000\003B\000\000\003\254\000\000\004b\000\000\b\n\000\000\000\000\000\000\000\000\000\000\000\000\t\166\000\000\000\000\000\000\000\000\001\007\000\000\000\000\000\000\000\000\000\000\000\000\000\204\005 \014\130\000\000\n\202\000\000\n\204\015\030\000\000\n\208\000\000\000\000\004\b\000\000\000\000\000\000\000\000\000\000\026\156\000\0001\150\000\000\000\000\000\000\005V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\019\000\000\000\000\000\000\000\000\000\000\000\000\011<\022\144\000\000\016\016\000\000\019\236\000J\000\000\000\000\000\000\005\232\000\000!\184\000\000\000\0001\230\000\000\000\000\000\000\005\252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\025\216\000\000\026\228\000\000\000\000\000\000\000\000\000\128\000\000\000\0002:\000\000\000\000\000\000\015N\000\222\000\000\000\000\000\000\000\000\000\000\000\000\000&\000\000\003\026\000\000\005B\000\000\007\018\000\000\t\214\000\000\012$\000\000\014\216\000\000\015z\000\000\018\006\000\000\0182\000\000\018\192\000\000*\144\000\000\003R\000\000\019R\000\000\021j\000\000\022p\000\000\000\000\000\000\000\000\000\000\000~2\202\000\000\001(\000\000\000\000\002\026\002n\000\000\002d\000\000\000\000\000\000\n\144\000\000\000\000\000\000'\224\000\000\000\000\000\000\000\000\000\000(\182\000\000\000\000\000\000\000\000\000\000\000\000\001\202\000\000\000\000\000\000\n\220\016\184\000\000\n\226\000\000\000\000\000\000\000\000\000\000\n\228\000\000\000\000\001\t\004\250\000\000\005\206\000\000\000\000\000\000\002R\000\000\012f\002\248\n\238\000\000\000\000\n\246\000\000\011\000\011\004\000\000\000\000\011\020\000\000\011\022\000\000\000\000\000\000\011\024\000\000\011\030\000\000\000\000\011*\000\000\011.\0114\000\000\000\000\011@\000\000\011L\000\000\000\000\000\000\011P\000\000\011T\000\000\011Z\000\000\011^\011b\000\000\000\000\011p\000\000\011~\000\000\006\244\011\134\000\000\011\144\000\000\011\148\000\000\011\152\000\000\000\000\000\000\011\154\000\000\003b\000\000\000\000\011\158\016\196\000\000\011\170\000\000\000\000\000\030\000\000\000\000\0002\000\000\000\000\000\000\000\000\000\000\007\144\018\168\000\000\011\176\000\000\011\180\019\002\000\000\011\190\000\000\000\000\012\204\011\198\000\000\000\000\011\212\000\000\011\226\011\228\000\000\000\000\011\236\000\000\011\248\000\000\000\000\000\000\012\002\000\000\012\006\000\000\000\000\012\b\000\000\012\014\012\016\000\000\000\000\012\018\000\000\012\020\000\000\000\000\000\000\012\030\000\000\012.\000\000\0120\000\000\0122\012:\000\000\000\000\012<\000\000\012>\000\000\007\154\012@\000\000\012D\000\000\012F\000\000\012V\000\000\000\000\000\000\012Z\000\000\012\\\024\130\000\000\012j\000\000\000\000\007\156\024\198\000\000\012n\000\000\012\128\024\222\000\000\012\130\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\232\000\000$\184\000\0003\012\000\000\000\000\006\158\000\000\000\000\000\000\007\164\005^\000\000\000\000*\192\004H\000\000\003\184\020D\000\000\000\000(\248\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0124(\248\000\000\r\136\000\000\028\236\024\150)f\000\000\028n\000\000\000\000\000\000\b\000\000\000\"^\000\000\000\0003\"\000\000\000\000\000\000\b\164\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0003p\000\0003\184\000\000\000\000\000\000\"@\b\142\000\000\000\000\000\000*\230\000\000\000\000\000\000\000\000\b\176\000\000\000\000\000\000\021~\000\000\000\000\029\184\000\000\001\220\000\000\000\000\000\000\005\"\000\000\017\018\000\000\020\222\000\000\027\234\000\000\029\006\000\000&\226\000\000(j\000\000(\210\000\000-\224\000\000/\170\000\0000H\000\0001h\000\0003R\000\0005\128\000\000\000\000\000\000\n~\000\000\018\248\030L\000\000+N\r\218+\176\000\000\000\000+\190\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004$\000\000\000\000\000\000\000\000\005\242\000\000\005\132\000\000\000\000\011X\000\000\000\000\000\000,,\000\000\000\000\000\000\000\000\000\000\0176\000\000\000\000\000\000\000\000,\162\000\000\000\000\000\000\000\000\003\248\012p\000\000,\186\000\000\000\000\000\000\000\000\r\012\000\000-\006\000\000\000\000\000\000\000\000\003\154\000\000\006\202\000\000\012\208\004\018)\128\000\000\000\000\000\000\005\234\000\000\000\000\000\000\000\000\000\000\000\000\015\182)\128\000\000\017\\\000\000\025\134\n\222\000\000\000\000\000\000\b\204\000\000\"\244\000\000\000\0003\198\000\000\000\000\000\000\b\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000!\142\000\0007\150\000\000\000\000\000\000\003\142\000\000\000\000\000\000\000\000\000\000\000\000\021\020\000\000\023\226\000\000\027\200\000\000#\138\000\000)H\000\0002\030\000\0007J\000\0007\196\000\0007\206\000\0008(\000\0008H\000\000-R\000\000\002\238\000\0008v\000\0008\140\000\0008\192\000\000)\254\000\000\000\000\000\0004\000\000\000\000\000\000\000\000^\000\0004\210\000\000\000\000\000\0004\214\000\000\000\000\000\030\000\000\025\150\000!\001X\000\000\002N\000\000\r$\001\228\007n\000\000\000\000\000\000\000\000\000\000\000\000\000\0005$\000\000%\160\0006\b\254\000\000\000\000\000\000-X\000\000-\172\000\000-\208\000\000%\186&L\001.\004R\t\002\000\000\000\000\000\000\0056\000\000\000\000\000u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0005l\000\000\000\000\000\000\000\000#v\000\000&f\000\000\000\000\000\000\000\000\000\000\000\000\r\196\000\000\000\000\002\220\000\000\000\000\000\000\025\202\005\016\000\000\026\130\000\000\000\000\r\012\000\000\006\228\000\000\000\000\014p\000\000\027j\000\000\000\000#\154\000\000\000\000\000\000\n\136\000\000\000\000\005\180\000\000\000\000\025`\000\000\000\000\000\000-\248\000\000\000\000\000\000\029\210\000\000\000\000\000\000\000\000.\232\000\000\000\000\000\000\000\000\004~\014 \000\000.\236\000\000\000\000\000\000\000\000\000\000\000\000\015\016\000\000\000\000\007\152\000\000\016\024\000\000\n\136\000\000\000\000\004:\004\198\000\000\006 \000\000\000\000\000\000\000\000\003\142\000\000&\152\000\000\028\004\004\168\028\176\000\000\004\180\000\000\016R\000\000\016\252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\030\029J\005:\029\246\000\000\000\000\000\000\006x\000\000\017\240\000\000\b\142\000\000\000\000\026X\007\160\030\144\000\000\007\220\000\000\018\144\031<\000\000\000\000\019<\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\224\b,\000\000\b\230\000\000\000\000\000\000\000\000\bl\000\000\019\220\000\000\000\000\000\000\00745\180\000\000\000\000\000\000 \188\000\000\000\000\000\000\000\000\000\000\007\224\006P\000\000\000\000/\016\000\000\000\000\000\127\000\000\006\138\000\000\000\000\030l\000\000\000\000\000\000/\018\000\000\000\000\000\000\000\000/v\000\000\000\000\bj\006\166\000\000\000\000/\154\000\000\000\000\b\250$\004\000\000\007,\000\000\000\0000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000$P\000\000\000\000\000\000\001\144\000\000\000\000\007b\000\000\000\000\030\170\000\000\000\000\000\0000\170\000\000\000\000\000\000\000\0001\014\000\000\000\000\t\196\007\246\000\000\000\00014\000\000\000\000\t\002\000\000\000\000\000\000\000\000\003\142\005\254\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\228\000\000\020\154\000\000\000\000\000\0005\194\000\000\b\208\000\000\000\000\000\000\006\136\000\000\019\254\000\000\000\000\004\134\021:\000\000\021\230\000\000\000\000\000\000\006P\000\0005\246\007\1325\252\000\0006\134\000\000\000\000\000\000\007\224\000\0006\172\b\018\000\000\000\000'<\b\226'V\000\000(,\000\000\000\000\000\000\t:\000\0006\224\t^\000\000\000\000\rZ\tb\019N\000\000\020\208\000\000\000\000\000\000\td\000\0007\130\tz\000\000\000\000\000\000\000\026\000\000\000\000\000\000\002\154\000\000\000\000\000\000\000\000\000\000\000\000\b\186\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\023,\000\000\000\000\005f\000\000\000\000\r@\000\000\000\000\000\000\000\000\n\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r@\000\000\000\000\r\028\000\000\r.\000\000\000\000\004r\000\000\007\158\012\218\001V\000\000\000\000\003\226\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\198\001\138\000\000\000\000\000@\000\000\000\000\000\000\017\238\000\000\000\000\021\224\023\002\000\000\000\000\000\000\000\000\027t\028\142\000\135\000\000\000\000\000\000 \146\000\000\000\000\000\000\000\000\000\000\000\000\002\132\000\000\000\000\000\206\000\000\000\000\012\160\000\000\000\000\022\252\000\000\000\000\t\244\000\000\000g\000\000\000\000\000\000\000\000\b\020 \206\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\023L!\148\000\000\000\000\000\000\000\000!\228\000\000\000\000\025\222\000\000\r\\\000\000\000\000\000\000\027\210\000\000\003\026\000\000\000\000\000\000\031\134\000\000\000\000\"~\000\000\000\000\016\226#\134\019\134\000\000#\170\000\000\000\000\000\000\000\000\r\030\000\000\000\000\000\000\000Y\000\000\000\028\012\244\004\030\000\000\000\000\000\000\007\166\004\012\000\000\000\000\000\000\000\000\004@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t$\000\000\000\000\002\218\000\000\000\029\rv\007\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\025\198\000\000\000\000 0$N\000\000\000\000\000\000\000\000$\228\000\000\000\000\005>\000\000\b\186\011\154\000\000\028\028\000\000\000\000\000\000\000\000\000\000\000\002\030\000\000\000\000\000\030\170\000\000\000\000\000\000\000\000 T\000\000 \140\000\000\000\000\000\000\000\000\tF\000\000\000\000\000\000\003\210\000\000\000\000\001\178\000\000\000\000\000\000\000\000\000\000\000\000\000\0001B\000\000\000\000\000\000\003\132\000\000\000\000\000\000\000\000\000\000\000\004\001\172\003:\004\220\000\000\005\242\tv\t\134\t\152\000\000\000\000\000\000\000\000\000\000\000\000\005\138\022\134\000\000 \004\t\184\000\000\000\000\n\028\000\000\023\130\000\000*T\000\000\000\000\005\224\024\"\000\000 8\000\000\006\148 \240\000\000\000\000\000\000\tB\005\242\000\000\000\000\000\000\000\000\006b\000\000\007\148\000\000\006\204\t\022\000\000\000\000\000\000\003B\000\000\003\254\000\000\b\198\000\000\000\000\012\130\000\000\000\000\000\000\000\000\tz\000\000\000\000\n\250\000\000\024\206\000\000\025h\r2\000\000\000\000\000\000\000\000\000\000\000\005\000\000\000\000\000\000\000\000\000\0001\\\000\000\006\168\000\000\000\000\000\000\000\000\000\000\000\252\000\000\n2\005\188\011\026\000\000\002\144\011\198\000\000\n`\000\000\002\180\000\000\003\132\000\000\004\140\000\000\025h\000\000\000\000\000\000\000\000\000\000\005,\000\000\n\204\000\000\006 \000\000\025h\r\152\000\000\003\b\000\000\r\148\003\012\000\000\t\188\000\000\n\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n^\000\000\nb\000\000\000\000\000\000\012|\000\000\000\000\000\000\000\000\000\000\r\156\012\136\000\000\000\000\012\178\000\000\000\000\012\152\t\220\r\222\000\000\r\226\000\000\000\000\005\192\002@\000\000\012\194\000\000\000\000\012\250\000\000\000\000\000\000\000\000\000\000\000\000\r\202\012\180\000\000\000\000\000\000\012\218\012\190\n&\t\000\012\230\r\028\000\000\000\000\012\214\n:\n\014\012\248\rB\000\000\000\000\000H\014\020\000\000\014\022\000\000\0148\000\000\000\000\014\026\000\000\000\000\014\028\000\000\000\000\000\000\000\000\014$\000\000\014L\000\000\000\000\000\000\014N\000\000\000\000\000\000\014Z\000\000\000\000\000\000"), (16, "\003z\003\145\0011\006\006\005\182\005\127\005\128\001j\000\007\001k\003H\005\215\005\216\000\018\000J\000J\000`\006'\003z\003\145\002\170\004j\004R\006@\001\239\006\149\006\004\006\007\005\127\005\128\0013\006\150\000\005\002B\000`\001j\002;\001k\006\151\000\017\004#\005\217\001\241\003z\003\145\006\024\002;\006\029\006(\000J\006)\005\218\005P\001j\000\004\001k\002?\004$\000\139\003|\003\213\003\214\000\140\003}\000\141\004^\002=\001l\005\129\005\b\006\030\001m\006!\005\127\005\128\004$\005\183\003|\000\005\006*\005\166\003}\000\139\000\139\006\193\006\194\000\150\000\140\002>\006+\000\025\005\129\000\141\0012\007R\001l\000\024\000`\002>\001m\002\244\001z\003|\005\164\005\127\005\128\003}\006H\006\025\007S\000\141\000\028\004\153\001l\003\150\000\141\001\186\001m\006\026\006\027\000\142\0012\000i\006\153\000\143\003I\000K\003\250\000J\001z\000`\000b\001\230\000f\001:\000`\005\129\006K\006\198\000\141\000\141\006\154\003z\003\145\000\142\000\142\005\133\001z\000\143\000\143\004\r\000`\000\152\004d\001\016\006\207\005\195\003\150\000`\003\252\003\138\001\222\006\151\006\208\004#\004\018\004\199\005\129\004\r\004\019\004%\000h\003\139\004\155\004x\001E\000\152\000\152\003\138\001{\000 \005\134\001\191\004\018\004f\003\213\003\214\004\019\004%\006\155\003\139\005\014\000h\004\r\000\r\006i\000`\001\186\006\156\004$\004\023\003|\006\181\003\138\004S\003}\004r\001{\004\018\001\143\006\227\004-\004\019\001\193\004\137\003\139\004J\003\154\004\023\000\016\000\017\005\148\004(\006\183\000J\001{\001j\004f\001\208\004-\000\153\001\217\006\185\002M\004J\003\154\000J\000\139\000\031\003\155\000i\000\150\006N\004\023\003\156\005\163\000`\001\128\003\157\000\b\006s\002@\000\154\003\158\000\153\000\153\001\146\003\155\003z\003\145\003\154\000\139\003\156\006\228\005\t\000\150\003\157\001\191\005\164\005\127\005\128\003\158\001\144\003H\000`\001\148\000\154\000\154\002\170\004j\004R\005\135\003\155\000\141\001\220\000`\001l\003\156\005\011\001\153\001m\003\157\004\r\001|\000\141\001\194\003\158\000\206\001\192\000\142\001T\000\155\003\138\000\143\001\015\000\"\005\149\004\018\003\213\003\214\000J\004\019\004%\006\229\003\139\004$\003\216\003|\000\141\001\144\001z\003}\006\156\000\142\000\156\000\156\006\231\000\143\001\018\000\197\0019\000\152\005\129\005\193\001\218\000\206\003\250\007\026\000\158\000\160\006a\006b\004\023\000`\003z\003\145\004(\006\233\000\145\001\018\001H\0019\001%\004-\000`\000\152\006\235\006f\004J\003\154\000`\000\005\003z\003\145\006\151\006\213\004R\001\030\003\253\003\254\004\000\004y\003\150\000$\001\186\005\192\005p\006@\000`\003\213\003\214\003\155\006\151\006\213\004R\000i\003\156\002B\004?\001\197\003\157\003z\003{\001\219\001\234\003\158\000\206\002\252\001{\005q\000(\004$\0029\003|\005t\005\127\005\128\003}\004\r\000\153\006~\006 \002B\001j\006i\001k\005\152\006\224\003\138\004$\001\199\003|\000\254\004\018\000J\003}\001\197\004\019\004%\004\242\003\139\000\154\004{\000\153\006\030\006\218\006!\005\127\005\128\003\215\005\167\001j\004f\001k\006u\000`\000\206\007)\000\141\006s\003|\002\251\006F\001\242\003}\000\154\000\155\001\198\004\023\005\215\005\216\007*\004S\007\004\004r\000`\003z\003\145\005\129\004-\000\141\001\241\004\137\001l\004J\003\154\001(\001m\0014\000\156\000\155\001\031\000`\001 \000\157\000\206\006\151\006\213\004R\005\239\000J\006P\002\199\000\158\004\r\002\225\001\218\003\155\000\141\005\218\005\129\001l\003\156\000\156\003\138\001m\003\157\001z\000\196\004\018\004\027\003\158\004\r\004\019\004%\006\219\003\139\000\158\000`\000b\000c\000f\003\138\004$\006\156\003|\000*\004\018\004\021\003}\000/\004\019\004%\006\219\003\139\001z\000i\003z\003\145\006\220\001:\001\196\006\156\000\206\004\023\0003\004\021\005\151\004S\000\141\006\221\003\138\005\193\002\204\000\206\004-\000J\002\205\006\223\000h\004J\003\154\004\023\003\139\002\199\0021\004S\002\203\006\221\006\016\005\196\005\130\006k\004-\001\191\006l\006\223\005\148\004J\003\154\0017\003U\0037\003\155\000J\001{\0072\002M\003\156\000J\006p\006\017\003\157\000`\000\141\006\020\003|\003\158\003z\003\145\003}\003\155\0010\000J\007\007\003\153\003\156\001:\003\184\006}\003\157\005\144\002M\001{\000`\003\158\004\r\006\017\006\151\006\213\004R\002\244\006\\\006]\005\022\002\204\003\138\003z\003\145\002\205\003\155\004\018\005\149\004l\005\142\004\019\004%\006\219\003\139\004l\005\145\005\127\005\128\006u\003\158\000\206\006\156\006i\004K\004`\004\021\003\150\002\218\001\148\000`\004$\004a\003|\006s\001\177\001%\003}\005\149\001\194\002\219\000\206\004\023\001\155\000i\000`\004S\006\222\006\221\002\199\004 \001\030\002\203\004-\003z\003\145\006\223\001\148\004J\003\154\002\244\004!\003|\004c\0002\001j\003}\001k\001\015\006@\000`\001\151\001+\003\138\006\151\006\213\004R\000i\006\018\002B\005\129\003\155\004~\002\245\0005\003\139\003\156\003\247\001\021\000`\003\157\000i\001\018\006\029\0019\003\158\005\024\003\152\003\213\003\214\002\218\003.\0032\003\028\006\018\000J\000\141\005{\005\"\002\248\002\204\004$\002\219\003|\002\205\002\172\006\030\003}\006!\005\127\005\128\001F\000\141\005|\004\r\001l\005$\006\230\0007\001m\003\154\003\031\000J\005\135\003\138\0038\000J\002\251\003\248\004\018\006\021\003\213\003\214\004\019\004%\006\219\003\139\006\210\006\n\003z\003{\000`\003\155\004\r\006\156\000J\001\029\003\156\004\021\001z\001(\003\157\001)\003\138\004t\001\031\003\158\001 \004\018\000\206\004o\001\030\004\019\006x\004\023\003\139\003z\003\145\004S\000J\006\221\002\253\005\129\006A\005\r\004-\000;\004\021\006\223\002\172\004J\003\154\000`\000=\006t\002\254\006\151\006\213\004R\000`\006\225\003\249\001\228\004\023\004\r\000J\000\141\000\139\003|\002\218\003H\000\140\003}\003\155\003\138\000J\003H\001?\003\156\004\018\003\154\002\219\003\157\004\019\004%\006\219\003\139\003\158\006u\006\128\000\206\003\213\003\214\004$\006\156\003|\004\128\001{\004\021\003}\000h\004~\003\155\001\236\001R\000\206\000\139\003\156\000i\006\234\000\140\003\157\003\248\007\027\004\023\000`\003\158\000J\004S\002\170\006\221\003z\003\145\001\197\000\141\004-\000\141\000i\006\223\000\142\004J\003\154\006\142\000\143\000?\004a\000\139\000`\000C\002M\000\140\002\170\004j\004R\004'\001\031\000J\001 \006D\000\206\002\253\000i\002\173\003\155\001\199\004!\003\\\001j\003\156\001k\000J\000\152\003\157\000\141\003\000\001\148\004b\003\158\000\142\003\138\0039\003>\000\143\006\201\003z\003\145\006\202\001o\004$\001\157\003|\003\139\000i\007\"\003}\003I\004\r\001x\000i\000\004\000`\004?\006|\000\141\004\180\0046\003\138\005%\000\142\000J\000\152\004\018\000\143\003z\003\145\004\019\004%\006\219\003\139\001\238\001j\000\206\001\129\000\005\000\141\005$\006\156\001l\005\005\000`\004\021\001m\006\147\002\170\004j\004R\003N\000J\006\206\000i\000\152\004\214\004\242\003|\004X\005\025\004\023\003}\000`\000\153\004S\006\158\006\221\003c\003R\004!\000`\004-\003\144\004\139\006\223\001z\004J\003\154\000J\004\131\004\220\001\018\000i\0019\004$\000\154\003|\005\011\000B\004\134\003}\000\141\006\169\004%\001l\004\r\000i\004\182\001m\003\155\000`\000J\000\153\004\139\003\156\003\138\000J\000J\003\157\006i\004\018\002\171\006\017\003\158\004\019\004%\000E\003\139\005\017\004x\004\136\000`\003z\003\145\000\154\001\134\004\190\005\026\001z\004\021\006\172\000G\000\153\000\156\004-\002$\005\155\0042\000`\004J\004\206\004\181\002\170\004j\004R\004\023\000L\000\162\004\149\004S\000N\004r\000J\001{\000\154\005\024\004-\000J\003\138\0042\000Q\004J\003\154\000i\004\164\005\214\005\127\005\128\004\221\001:\003\139\002\199\000\156\005\156\002\203\004!\005,\004\r\004\142\004$\000S\003|\004\222\006\170\003\155\003}\000\164\003\138\001%\003\156\000i\000\139\004\018\003\157\005.\000\140\004\019\004%\003\158\003\139\004v\004x\000\156\001\030\003z\003\145\001{\004\215\006$\004\224\004\205\004\021\004\229\002G\004\247\003\154\000\166\001\209\002}\002\148\000`\001\148\005/\006\023\002\170\004j\004R\004\023\002\244\005\129\001\137\004S\002\204\004r\004\233\001\159\002\205\003\155\004-\000J\005.\0042\003\156\004J\003\154\000J\003\157\0052\000\141\005n\005o\003\158\001\147\000\142\006\175\000`\006\176\000\143\006\165\000J\006\166\004$\000\206\003|\000i\005.\003\155\003}\003;\002\207\003T\003\156\004\r\004\134\001\148\003\157\006\029\000`\000J\001\149\003\158\006s\003\138\001\150\000J\000\152\000J\004\018\001\151\003z\003\145\004\019\004%\000\139\003\139\004\157\004x\000\148\004\187\006\030\004\204\006!\005\127\005\128\004\135\000`\004\021\006x\004\249\002\170\004j\004R\001'\004\158\002\245\006x\004\158\001\031\002\171\001 \006X\000\206\004\023\006\164\006x\004\254\004S\000`\004r\004\254\006\132\002\218\003\027\004-\003\028\001j\0042\001k\004J\003\154\002\248\004!\001:\002\219\004\160\006\171\004$\004\159\003|\005:\000\141\002\216\003}\007.\004\r\000\142\005\000\002\243\000W\000\143\004\255\003\155\003\031\000\153\003\138\005\129\003\156\005<\002\251\004\018\003\157\003\127\001\215\004\019\004%\003\158\003\139\005\021\004x\005\204\006\135\003z\003\145\004\248\005~\000\154\001\233\000\152\004\021\006\252\003\136\004!\000\141\005=\001%\001l\003\231\000`\003\246\001m\005|\006\151\005\202\004#\004\023\005\205\005\127\005\128\004S\001\030\004r\005<\002\253\005@\006Z\004-\005H\005K\0042\002\199\004J\003\154\002\203\007\"\000e\006\210\002\254\005N\000\139\001z\000\208\005.\000\140\000\156\005J\005J\006\170\006\252\004$\004\r\003|\006t\000\139\003\155\003}\005.\000\148\000\168\003\156\003\138\000\211\006\165\003\157\006\166\004\018\000\206\006\226\003\158\004\019\004%\002\172\003\139\006\179\004x\007\024\000\153\006{\003z\003{\005\129\006\252\006,\006\252\004\021\006z\006\152\002\244\003T\006\216\006\210\002\204\003H\000\185\006y\002\205\000\141\000\215\000\154\0075\004\023\000\142\006\182\000\214\004S\000\143\004r\000\217\003z\003\145\000\141\004-\007-\004!\0042\000\142\004J\003\154\001{\000\143\000\219\000\223\0074\000\186\000`\001j\000\225\001\127\006\151\001(\004#\001.\007\003\000\152\001\031\000\141\001 \003|\000\206\003\155\000\228\003}\004\r\006\232\003\156\000\232\000\156\000\152\003\157\000\231\000\187\000\234\003\138\003\158\000\188\000`\000\236\004\018\000\240\000\242\000\158\004\019\004%\006\212\003\139\004$\000\139\003|\001\203\007\"\001\214\003}\006\156\002\245\000\244\000\248\006\215\000\247\000\250\000\252\006\253\000\255\000\141\006\211\001\001\001l\001\148\007#\001\003\001m\002\218\003\030\004\023\003\028\003z\003\145\004(\006\217\001\005\002\248\001\161\001\t\002\219\004-\000i\001I\006\223\004?\004J\003\154\000`\000\153\001\014\006\255\006\151\007\001\004#\001>\001D\001z\001C\003\031\001%\000\141\007#\000\153\001\227\002\251\000\142\001\226\001\232\003\155\000\143\000\154\007#\001\246\003\156\001\030\003\138\001\249\003\157\001j\001\188\001k\001\253\003\158\001\252\000\154\004D\002\199\003\139\004$\002\224\003|\001\255\002\001\002\005\003}\004\r\002\007\000\152\000`\000b\001\012\000f\002\n\004H\002\014\003\138\006\214\002\r\002\253\000\186\004\018\003z\003\145\002\016\004\019\004%\006\212\003\139\001\202\002\018\000\139\002\022\002\254\002\024\001Y\006\156\002\026\000`\002\030\006\215\002\029\002\170\000\156\004#\001{\000\141\000\187\002 \001l\000h\000\188\000`\001m\000\141\002\"\004\023\000\158\002\204\002%\004(\006\217\002\205\002\172\002'\003\140\002)\004-\002+\002/\006\223\0028\004J\003\154\000\139\003z\003\194\0027\000\148\004$\002F\003|\002L\001z\000J\003}\000\153\002K\000\141\002\143\000`\002O\004\r\000\142\001(\003\155\003A\000\143\002R\001\031\003\156\001 \003\138\000\206\003\157\002V\002U\004\018\000\154\003\158\002X\004\019\004%\006\212\003\139\005\029\002Z\003z\003\145\004\152\006\172\002^\006\156\002`\002c\000\152\006\215\002g\002f\002i\002k\000\141\000\141\000`\003|\002o\000\142\002\170\003}\004#\000\143\002\172\004\023\002q\002s\002w\004(\006\217\005\141\002v\002y\002{\002~\004-\002\128\002\130\006\223\002\218\004J\003\154\000`\001{\000J\002\132\002\170\002\136\002\142\002\199\000\152\002\219\002\223\005\142\004\r\002\141\004$\002\147\003|\005\145\005\127\005\128\003}\003\155\003\138\001\015\002\153\002\152\003\156\004\018\005y\005\161\003\157\004\019\004%\005\140\003\139\003\158\000i\003z\003\145\005\154\005\198\003\\\005\233\000\153\006\002\004\028\004\141\001\018\002\199\0019\004\150\002\203\006\012\000`\004\152\006&\006\191\002\170\004\030\004#\006\237\001j\004\023\001\129\000\141\000\154\004(\004\143\002\204\001\148\006\241\007\005\002\205\004-\007\011\003\138\0042\007\012\004J\003\154\003V\005\129\007\017\001\163\006\174\007\018\000\153\003\139\006\165\007\023\006\166\007\022\000\206\007\030\004$\007 \003|\007&\003Z\007'\003}\003\155\007+\001W\007,\002\244\003\156\004\r\000\154\002\204\003\157\007/\0070\002\205\000i\003\158\0073\003\138\000\141\002\172\0076\001l\004\018\003z\003\145\001m\004\019\004%\001\200\003\139\000\206\0077\004*\000\186\007H\007=\007F\007B\007E\000`\000J\004\141\007N\002\170\004+\004R\007L\007P\000`\000b\001<\000f\001\134\007U\004%\001z\000\156\004\023\003]\000\000\000\187\004(\004\143\000\000\000\188\000\000\000\000\002\218\004-\000\000\000\158\0042\000\000\004J\003\154\001j\003a\001k\000\000\002\219\004$\000\000\003|\005\157\000\000\000\000\003}\004\r\005C\000h\000\000\002\245\000\000\000\000\000\000\004-\003\155\003\138\0042\000\000\004J\003\156\004\018\003z\003\145\003\157\004\019\004%\002\218\003\139\003\158\003&\004U\000\000\000\000\000\000\000\000\002\248\000\139\000`\002\219\004W\001V\002\170\004+\004R\000`\000b\001A\000f\000\000\000\000\000\141\001{\001j\001l\001\129\004\023\000\000\001m\000\000\004(\004Y\000\000\001\135\002\251\000\000\000\000\004-\000\000\000\000\004[\000i\004J\003\154\000\000\001j\001\137\001k\000\000\004$\000\000\003|\000\000\000\000\000\000\003}\000h\000\000\001z\000\000\000\000\000\000\004\r\000\000\000\141\003\155\000\000\000\000\001\147\000\142\003\156\003)\003\138\000\143\003\157\003z\003\143\004\018\002\253\003\158\000\141\004\019\004%\001l\003\139\004L\000\000\001m\000\000\000\000\001\148\000\000\002\254\000\000\000\000\001\149\004\021\000\000\000\000\001\150\000\000\000\152\000\141\004P\001\151\001l\000\139\000\000\000\000\001m\000\140\001\015\004\023\000\000\000\000\000\000\004S\001z\004T\000\000\001j\000\000\001~\004-\003z\003\145\0042\000\000\004J\003\154\000\000\000\000\000\141\004Z\003|\001\018\001{\0019\003}\001z\000`\000\000\004\r\000\000\002\170\004+\004R\000\000\000\000\000\000\000\000\003\155\003\138\003z\003\145\000\000\003\156\004\018\000\000\000\000\003\157\004\019\004%\000\141\003\139\003\158\000\000\000\000\000\142\000`\000\000\000\000\000\143\002\170\004j\004R\004\021\000\141\000\000\000\153\001l\004$\000\000\003|\001m\000\000\000\000\003}\000\000\001\015\000\000\000\000\004\023\000\000\000\000\001{\004S\000\000\004T\000\000\000\152\000\154\000\000\004-\001\148\000\000\0042\000\000\004J\003\154\004$\000\000\003|\001\018\001z\0019\003}\001{\001\165\001\145\000`\000b\001\224\000f\000\000\000\000\000`\000b\0025\000f\000\000\003\155\000\000\000\000\000\000\003\138\003\156\000\000\003z\003\145\003\157\001\147\000\000\000\000\000\000\003\158\000\000\003\139\000\000\002\199\000\000\000\000\002\203\000\000\000`\000\000\006\003\000\000\002\170\004j\004R\000h\000\000\001\148\000\000\000\000\000\000\000h\001\149\000\000\000\000\000\000\001\150\000\000\004\r\000\000\000\000\001\151\000\153\006\004\006\007\005\127\005\128\000`\003\138\001\148\003z\003\142\000\000\004\018\000\000\000\000\001{\004\019\004%\004$\003\139\003|\000\000\001\167\000\154\003}\000\000\004\r\000\000\000\000\000\141\000\000\004\021\000\000\002\204\000\000\000\000\003\138\002\205\006\028\000\000\000\139\004\018\000\000\000\000\000\148\004\019\004%\004\023\003\139\000\000\004q\004S\000\000\004T\000\000\000\000\000`\000\000\004-\000\000\004\021\0042\000\000\004J\003\154\000\000\000\141\005\129\003|\000\000\000\000\000\156\003}\001%\000\000\000\000\004\023\000\000\000\000\000\000\004S\000\000\004r\003z\003\145\000\170\003\155\004-\001\030\000\000\0042\003\156\004J\003\154\001j\003\157\001k\000\141\000\000\000`\003\158\000\000\000\142\002\170\004j\004R\000\143\000\000\000\000\000\000\000\000\004\r\000\000\000\000\005\163\003\155\001j\001\015\001k\000\000\003\156\003\138\000\000\001\015\003\157\000\000\004\018\000\000\000\000\003\158\004\019\004%\002\218\003\139\000\152\004s\000\000\005\164\005\127\005\128\004$\001\018\003|\0019\002\219\004\021\003}\001\018\000\000\0019\000\000\000\141\000\000\000\000\001l\001\184\001\186\000\000\001m\000\000\000\000\004\023\000\000\003z\003\145\004S\000\000\004r\000\000\003\138\000\000\000\000\004-\000\141\006.\0042\001l\004J\003\154\000`\001m\003\139\000\000\002\170\004\144\004R\000\000\001j\001z\001k\000\000\000`\000b\002D\000f\000\000\000\000\001(\000\000\003K\003\155\005\129\001\031\000\000\001 \003\156\000\206\000\000\000\000\003\157\001z\000\000\000\153\002\253\003\158\002\199\000\000\000\000\002\203\000\000\004$\000\000\003|\000\000\000\000\000\000\003}\003\002\000\000\001\188\000\000\000\000\000h\004\r\000\154\000\000\000`\000b\002I\000f\000\000\000\000\000\000\003\138\000\141\000\000\000\000\001l\004\018\003z\003\145\001m\004\019\004%\001\194\003\139\000\206\004\133\004\146\000\186\001j\000\000\001k\000\000\000\000\000`\001{\004\021\000\000\002\170\004\144\004R\002\244\000\000\000`\000\000\002\204\000h\002\170\000\000\002\205\001z\000\156\004\023\000\000\000\000\000\187\004S\001{\004r\000\188\000\000\000\000\000\000\004-\000\000\000\158\0042\000\000\004J\003\154\000\000\000\000\000\000\000\000\000\000\004$\000\000\003|\005\170\000\000\000\000\003}\004\r\000\000\003\\\000\000\000\141\000\000\000\000\001l\000\000\003\155\003\138\001m\000\000\000\000\003\156\004\018\003z\003\145\003\157\004\019\004%\001\148\003\139\003\158\001j\004\166\001}\000\000\005\182\005\127\005\128\004\148\000`\000\000\004\021\001\169\002\170\004+\004R\000\000\000\000\001z\000\000\001\148\000\000\002\245\001{\000\139\000\000\000`\004\023\000\150\001\015\002\170\004S\000\000\004\147\001\171\000\000\000\000\000\000\004-\002\218\000\000\0042\003!\004J\003\154\000\139\000\000\000\000\002\248\000\148\004$\002\219\003|\001\018\000\000\0019\003}\000\000\000\141\000\000\000\000\001l\000\000\004\r\000\000\001m\003\155\003\\\000\000\005\129\003#\003\156\000\000\003\138\001\015\003\157\002\251\005\251\004\018\000\000\003\158\000\141\004\019\004%\000\000\003\139\000\142\000\000\003z\003\145\000\143\001\148\004%\000\000\000\000\001z\001{\004\021\001\018\000\000\0019\000\000\000\141\000\000\000`\001\173\000\000\000\142\002\170\000\000\004#\000\143\000\000\004\023\003,\000\000\000\000\004S\000\152\004\147\002\253\000\000\002\199\000\000\004-\002\203\005E\0042\000\000\004J\003\154\000`\000\000\004-\002\254\002\170\0042\000\000\004J\000\152\000\000\000\000\000\000\004\r\000\000\004$\000\000\003|\000\000\003z\003{\003}\003\155\003\138\005\027\000\000\000\000\003\156\004\018\000\000\002\179\003\157\004\019\004%\001\148\003\139\003\158\000\000\003z\003\145\000\000\000\000\003\\\001{\000\000\000\000\000\000\004\021\001\179\000\141\004%\005\015\000\000\002\204\000`\004\152\000\000\002\205\002\170\000\000\004#\000\000\001j\004\023\001k\000\000\000\153\004S\000\000\004T\000\000\000\000\002\199\000\000\004-\002\203\000\141\0042\003|\004J\003\154\000\000\003}\000\000\005\026\000\000\000\000\000\153\000\154\000\000\000\000\004-\000\000\000\000\0042\004$\004J\003|\000\000\000\000\000\000\003}\003\155\000\000\001\188\000\000\000\000\003\156\004\r\000\154\000\000\003\157\000\000\000\155\000\000\000\000\003\158\000\000\003\138\000\141\000\000\000\000\001l\004\018\003z\003\145\001m\004\019\004%\002\244\003\139\005\031\000\000\002\204\000\186\004\152\000\156\002\205\000\000\000\000\000`\000\199\004\141\000\000\002\170\000\000\004#\000\000\000\000\000\000\000\158\000\000\002\218\005\163\000\000\004%\001z\000\156\004\023\000\000\000\000\000\187\004(\004\143\002\219\000\188\000\000\000\000\000\000\004-\000\000\000\158\0042\000\000\004J\003\154\005\164\005\127\005\128\003\138\000\000\004$\000\000\003|\000\000\000\000\000\000\003}\004\r\005G\000\000\003\139\000\000\001j\000\000\001k\004-\003\155\003\138\0042\000\000\004J\003\156\004\018\003z\003\145\003\157\004\019\004%\000\139\003\139\003\158\000\000\000\148\000\000\002\245\000\000\005!\000\000\000\000\000`\004\152\004\141\000\000\002\170\000`\004#\000\000\000\000\000\000\000\000\000\000\002\218\002\253\001{\002\247\000\000\000\000\004\023\000\000\005\129\002\248\004(\004\143\002\219\000\000\000\000\003\004\000\000\004-\000\141\000\000\0042\001l\004J\003\154\000\000\001m\003\155\000\000\000\000\004$\000\000\003|\000\000\000\000\000\141\003}\000\000\002\251\000\000\000\142\003\160\000\000\004\r\000\143\000\000\003\155\000\000\000\000\000\000\000\000\003\156\000\000\003\138\000\000\003\157\001z\000\000\004\018\000\000\003\158\005\201\004\019\004%\000\000\003\139\006\129\005\163\000\000\000\139\004\152\001\148\000\152\000\140\000\000\000\000\000\000\004\141\000\000\000\000\000\000\000\000\002\253\005s\005\202\001\181\000\000\005\205\005\127\005\128\005\164\005\127\005\128\004\023\000\000\000\000\002\254\004(\004\143\003z\003\145\005\201\000\000\000\000\004-\000\000\005q\0042\006\137\004J\003\154\005t\005\127\005\128\000\000\000`\000\000\005\176\000\000\002\170\004+\004R\000\000\004\r\005\202\000\000\000\141\005\205\005\127\005\128\000\000\000\142\003\155\003\138\001{\000\143\000\000\003\156\004\018\000\000\000\000\003\157\004\019\004%\000\000\003\139\003\158\003z\003{\000\000\000\153\005\129\000\000\000\000\005\129\000\000\004$\004\141\003|\000\000\000\000\000\139\003}\000\152\000\000\001U\000\000\001Z\000\000\000\000\000\000\000\000\000\154\004\023\000\000\005\129\000\000\004(\004\143\003z\003\145\000\000\000\000\000\000\004-\000\000\000\000\0042\000\000\004J\003\154\005\129\001\\\000\000\000\206\000`\000\000\000\186\000\000\002\170\000\000\004#\001\148\000\000\000\141\000\000\003|\000\000\000\000\000\000\003}\000\000\003\155\000\000\000\000\000\000\001\183\003\156\000\141\000\000\000\156\003\157\000\000\000\142\000\187\000\000\003\158\000\143\000\188\000\000\000\000\000\000\000\000\000\000\000\158\000\000\004$\002\199\003|\000\000\002\203\000\153\003}\000`\000b\002\139\000f\000\000\000\000\004\r\000\000\000\000\000\000\000\000\000\000\000\152\005\219\000\000\000\000\003\138\000\000\000\000\005\174\000\154\004\018\003z\003\145\000\000\004\019\004%\000\000\003\139\006\143\000\000\006\184\000\000\004\152\000`\000b\002\145\000f\000`\000\000\004\021\000h\002\170\004+\004R\000\184\000`\000b\002\150\000f\000\000\000\141\000\000\005\225\000\000\002\204\004\023\000\000\000\000\002\205\004S\000\000\004T\000\000\003\138\000\000\000\000\004-\000\156\000\000\0042\000\000\004J\003\154\000\000\000h\003\139\000\000\000\000\004$\000\000\003|\000\158\000\000\000\000\003}\004\r\000h\000\000\000\000\000\153\000\000\000\000\000\000\000\000\003\155\003\138\000\000\000\000\000\000\003\156\004\018\000\000\000\000\003\157\004\019\004%\000\000\003\139\003\158\000\000\000`\000\154\000\000\003z\003\141\000\000\000\000\000\000\006x\004\141\004\161\003z\003\145\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\172\004\023\000\000\000`\000\000\004(\004\143\002\170\003\155\004R\000\000\000\000\004-\003z\003\145\0042\000\000\004J\003\154\002\218\000\139\003H\003\162\000\000\000\150\004V\000\000\000\000\000\000\000`\000\000\002\219\000\000\002\170\000\000\004#\000\141\004\r\003|\001\015\003\155\006\029\003}\001%\004$\003\156\003|\003\138\000\000\003\157\003}\005\234\004\018\000\000\003\158\000\000\004\019\004%\001\030\003\139\000\000\000\000\000\000\001\018\006\030\0019\006!\005\127\005\128\000\000\004$\004\021\003|\001\015\005\235\000\000\003}\000\141\005\238\005\127\005\128\000\000\000\142\000\000\000\000\001\015\000\143\004\023\000\000\000\000\000\000\004S\000\000\004T\000\000\000\000\000\000\001\018\004-\0019\002\221\0042\000\000\004J\003\154\003z\003\145\000\000\000\000\001\018\000\000\0019\000\000\000\000\000\152\000\000\000\000\004\"\000\139\000\000\002\172\000`\000\148\000\000\000\000\002\170\003\155\004#\000\000\000\000\005\129\003\156\000\000\000i\000`\003\157\004?\004\r\000\000\003\138\003\158\003H\005\129\006|\000\000\000\000\000\000\003\138\000\000\000\000\000\000\003\139\004\018\000\000\000\139\000\000\004\019\004%\000\150\003\139\000\000\000\000\004$\004\r\003|\000\000\000\000\001(\003}\0049\000\000\004\163\001\031\003\138\001 \000\141\000\206\004D\004\018\000\000\000\142\000\000\004\019\004%\000\143\003\139\000\000\004\023\001\197\000\000\000\000\004S\000\153\004\165\000\000\004H\000\000\004&\004-\000\000\000\000\0042\000\000\004J\003\154\000\000\000\000\000\000\000\000\000\000\000\000\000\141\000\152\004\023\000\154\000\000\000\142\004(\004)\001\199\000\143\003z\003\145\000\000\004-\000\000\003\155\0042\000\000\004J\003\154\003\156\000\000\004,\000\000\003\157\0061\000`\000\000\000\155\003\158\002\170\000\000\004#\000\000\000\000\005\240\000\000\000\152\000\000\000\000\000\000\003\155\000i\000\000\004\r\004?\003\156\005\163\000\000\000\000\003\157\000\156\000\000\000\000\003\138\003\158\001\131\003z\003{\004\018\000\000\000\000\000\000\004\019\004%\000\158\003\139\004$\000\000\003|\005\164\005\127\005\128\003}\002\199\000\000\000\000\002\203\004&\000\153\000\000\000\000\000\000\000\000\000\000\000\000\004D\003z\003\145\000\000\005\237\000\000\000\000\001L\004\023\000\000\000\204\000\000\004(\004)\000\000\000\154\000\000\000`\004H\004-\000\000\002\170\0042\004#\004J\003\154\000\000\005\235\000\141\000\153\003|\005\238\005\127\005\128\003}\000\205\000\000\000\206\000\000\000\000\000\186\000\000\000\000\006\029\000\000\000\141\000\000\003\155\005\129\002\204\000\000\000\154\003\156\002\205\002\199\000\000\003\157\002\203\004$\000\000\003|\003\158\000\000\000\156\003}\000\000\006\030\000\187\006!\005\127\005\128\000\188\000\000\000\000\004\r\000\000\000\155\000\158\000\000\001J\000\000\000\000\000\000\000\000\003\138\000\000\000\000\003z\003\145\004\018\000\000\000\000\000\000\004\019\004%\005\129\003\139\000\000\000\000\000\156\000\000\000\000\005\163\000`\001\133\000\000\000\000\002\170\004&\004#\000\000\000\141\000\000\000\158\000\000\002\204\000\000\002\199\000\000\002\205\002\222\000\000\000\000\000\000\004\023\005\164\005\127\005\128\004(\004)\002\199\003\138\005\129\002\203\000\000\004-\000\000\000\000\0042\000\000\004J\003\154\000\000\003\139\004$\000\139\003|\000\000\002\218\000\140\003}\004\r\000\000\000\000\000\000\000\000\005\189\000\000\000\000\000\000\002\219\003\138\000\000\003\155\003z\003\145\004\018\000\000\003\156\000\000\004\019\004%\003\157\003\139\000\141\000\000\000\000\003\158\002\204\004u\000`\000\000\002\205\000\000\002\170\004n\004#\000\141\000\000\005\129\000\000\002\204\000\000\000\000\000\000\002\205\000\000\000\000\000\000\000\000\000\000\004\023\000\141\000\000\000\000\004(\004p\000\142\000\000\000\000\003\155\000\143\004-\000\000\002\218\0042\000\000\004J\003\154\002\199\000\000\004$\002\203\003|\003\164\000\000\002\219\003}\000\000\002\253\000\000\000\000\000`\000g\000\000\000f\000\000\004\r\006B\000\152\003\155\000\000\000\000\003\006\000\000\003\156\000\000\003\138\000`\003\157\003z\003\145\004\018\000\000\003\158\000\000\004\019\004%\000\000\003\139\000\000\000\000\000\000\000\000\000\000\004m\000`\000\000\000\000\000\000\002\170\004n\004#\000h\000\000\000\000\002\244\002\218\000\000\000\000\002\204\000\000\000\000\000\000\002\205\006\029\000\000\004\023\000\000\002\219\002\218\004(\004p\002\199\000\000\002\220\002\203\005\187\004-\000\000\000\000\0042\002\219\004J\003\154\000\000\000\000\004$\006\030\003|\006!\005\127\005\128\003}\004\r\001%\000\000\000\153\000\000\000`\001\017\000\000\000f\000\000\003\138\000`\003\155\003z\003\145\004\018\001\030\003\156\000\000\004\019\004%\003\157\003\139\000\000\000\000\000\154\003\158\004\129\000\000\000`\000\000\000\000\000\000\002\170\004\130\004#\002\244\000\000\000\000\000\000\002\204\000\000\000`\000\000\002\205\000\000\000h\000\000\002\245\000\000\004\023\000\000\000\000\000\000\004(\004\132\006\029\002\253\000\000\000\000\005\129\004-\000\000\000\000\0042\002\218\004J\003\154\002\250\000\000\004$\003\b\003|\000\156\002\248\000\000\003}\002\219\001%\006\030\000\000\006!\005\127\005\128\000\000\000\000\004\r\000\172\000\000\003\155\000\000\000\000\001\015\001\030\003\156\000\000\003\138\000\000\003\157\003z\003\145\004\018\002\251\003\158\000\000\004\019\004%\000\000\003\139\001%\004\140\000\000\000\000\000\000\004\127\000`\001\018\000\000\0019\002\170\004n\004#\002\245\000\000\001\030\001(\000\000\004A\000\000\000\000\001\031\000\000\001 \000\000\000\206\000\000\004\023\000\000\000\000\002\218\004(\004p\003!\000\000\000\000\005\129\002\253\004-\002\248\000\000\0042\002\219\004J\003\154\000\000\000\000\004$\000\000\003|\000\000\002\254\000\000\003}\004\r\000\000\005\201\006I\000\000\000\000\000\000\003#\000\000\000\000\003\138\000\000\003\155\002\251\000\000\004\018\001\015\003\156\000\000\004\019\004%\003\157\003\139\000\000\000\000\005\202\003\158\000\000\005\205\005\127\005\128\000\000\000\000\004\145\004\141\000\000\003z\003\145\000\000\001(\001\018\004\193\0019\000\000\001\031\000\000\001 \006\133\000\206\000\000\004\023\003+\000`\000\000\004(\004\143\002\170\002\253\004#\000\000\000\000\004-\003z\003\145\0042\000\000\004J\003\154\000\000\000\000\001(\002\254\004\236\006\145\000\000\001\031\000\000\001 \000`\000\206\000\000\000\000\002\170\000\000\004#\000\000\004\r\005\201\006L\003\155\000\000\000\000\005\129\004$\003\156\003|\003\138\000\000\003\157\003}\000\000\004\018\000\000\003\158\000\000\004\019\004%\006\003\003\139\000\000\005\202\000\000\000\000\005\205\005\127\005\128\000\000\000\000\000\000\004$\004\141\003|\000\000\000\000\000\000\003}\000\000\000\000\003z\003\145\006\004\006\007\005\127\005\128\006\029\000\000\004\023\000\000\000\000\005\163\004(\004\143\000\000\000\000\000`\000\000\000\000\004-\004\180\000\000\0042\000\000\004J\003\154\003z\003\145\000\000\006\030\000\000\006!\005\127\005\128\005\164\005\127\005\128\006\148\000\000\000\000\000\000\005\163\000`\000\000\004\211\000\000\002\170\003\155\004#\005\129\000\000\000\000\003\156\000\000\000\000\000\000\003\157\004\214\004\r\003|\000\000\003\158\000\000\003}\005\164\005\127\005\128\005\129\003\138\005\243\000\000\000\000\000\000\004\018\000\000\000\139\000\000\004\019\004%\000\148\003\139\000\000\004\220\004$\004\r\003|\000\000\000\000\000\000\003}\000\000\000`\006\134\000\000\003\138\005\129\000\000\000\000\005\129\004\018\000\000\000\000\000\000\004\019\004%\000\139\003\139\000\000\004\023\000\150\000\000\005\001\004(\006\136\003\150\000\000\001\186\000\000\006\134\004-\000\000\000\000\0042\000\000\004J\003\154\000\139\000\000\005\129\000\000\000\148\000\000\000\141\000\000\004\023\000\000\000\000\000\142\004(\006\136\005\163\000\143\000`\000\000\000\000\004-\000\000\003\155\0042\000\000\004J\003\154\003\156\000\000\0067\000\000\003\157\000\000\000\000\000\000\003\138\003\158\000\141\005\164\005\127\005\128\000\000\000\142\000\000\000\152\004\221\000\143\003\139\003\155\006U\000\000\004\r\000\000\003\156\000\000\005\163\000\000\003\157\000\141\005\003\000\000\003\138\003\158\000\142\000\000\000\000\004\018\000\143\000\000\002\199\004\019\004%\002\203\003\139\000\152\000\000\006S\000\000\005\164\005\127\005\128\005\185\000\000\000\000\000\139\006\134\004\224\000\000\000\148\005\004\000\000\004\247\003\154\000\000\000\000\000\152\000\000\000\000\000\000\000\000\000`\004\023\005\129\000\000\000\000\004(\006\136\000\000\000\000\000\000\000\000\005\212\004-\000\000\003\155\0042\000\000\004J\003\154\003\156\000\139\000\000\000\153\003\157\000\140\000\000\002\244\000\000\003\158\000\000\002\204\000\000\005\163\000\000\002\205\000\000\000\200\000\201\000\203\000\204\003\155\000\141\005\129\000\000\000\154\003\156\000\142\000\000\000\000\003\157\000\143\000\000\000\153\000\000\003\158\005\164\005\127\005\128\000\000\000\139\000\000\000\000\000\000\000\148\000\205\000\000\000\206\000\000\000\000\000\186\000\000\000\000\000\000\000\153\000\154\000`\000\000\000\141\000\152\000\000\000\000\000\000\000\142\000\000\000\000\000\000\000\143\000\200\001q\000\203\000\204\000\000\000\156\000\000\000\000\000\154\000\187\000\000\000\000\000\155\000\188\000\000\000\000\000\000\000\000\000\000\000\158\000\000\001J\000\000\005\223\000\000\002\245\000\000\000\152\000\205\000\141\000\206\000\000\005\129\000\186\000\142\000\156\000\000\000\139\000\143\000\000\003\147\000\148\002\218\003.\003/\003\028\000\000\003z\003{\000\158\000\000\002\248\000\000\000`\002\219\000\139\000\156\000\000\000\000\000\148\000\187\000\000\000\000\005\228\000\188\000\000\000\152\000\000\000\000\000\153\000\158\000`\001J\003\031\000\000\000\000\000\000\005\163\000\000\002\251\000\000\000\000\000\000\000\200\002\209\000\203\000\204\000\000\000\000\000\000\000\000\000\154\000\000\000\000\000\141\005\163\000\000\000\000\000\000\000\142\005\164\005\127\005\128\000\143\000\141\000\153\003|\000\000\003z\003\145\003}\000\205\000\141\000\206\000\000\000\000\000\186\000\142\005\164\005\127\005\128\000\143\000\000\002\253\000`\000\000\000\000\000\154\004\180\000\000\000\000\000\152\000\000\000\000\000\000\000\000\000\000\002\254\000\000\000\156\005\246\000\000\000\000\000\187\000\153\000\000\000\139\000\188\000\000\000\152\000\148\000\000\004\213\000\158\000\000\001J\000\000\000\000\000\200\003\129\000\203\000\204\000`\000\000\005\129\004\214\000\154\003|\000\000\000\000\000\000\003}\000\000\000\000\000\000\000\156\000\000\005\163\000\000\000\000\000\000\000\000\005\129\000\000\000\000\000\000\000\205\000\000\000\206\000\174\004\220\000\186\000\000\000\000\000\000\000\000\000\000\000\000\003z\003\145\005\164\005\127\005\128\000\141\000\000\000\000\000\000\003\138\000\142\000\153\000\000\000\000\000\143\000\000\000\156\000\000\000\000\000\000\000\187\003\139\004\006\005\028\000\188\000\200\004\015\000\203\000\204\000\153\000\158\000\000\001J\000\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\152\000\200\004/\000\203\000\204\000\000\000\000\000\000\000\000\000\154\000\000\000\205\005\163\000\206\000\000\002\244\000\186\003|\000\000\000\000\000\000\003}\000\000\000\000\005\129\000\000\000\000\000\000\003\138\000\205\000\000\000\206\005\255\000\000\000\186\005\164\005\127\005\128\004\221\000\156\003\139\000\000\000\000\000\187\000\000\000\000\003\155\000\188\000\000\000\000\005\253\000\000\004\222\000\158\000\000\001J\000\000\000\156\000\000\000\000\003\166\000\187\000\000\000\000\000\000\000\188\000\000\000\000\000\000\000\000\000\000\000\158\000\139\001J\003z\003\145\000\140\000\000\000\153\004\224\000\000\000\000\004\229\000\000\004\247\003\154\000\000\003z\003\145\000\000\000\000\000\000\000\200\004\226\000\203\000\204\004\006\004g\000\000\005\129\000\154\000\000\000\000\000\000\000\000\000\000\000\000\003\155\004\r\004\006\004]\000\000\003\156\000\000\000\000\000\000\003\157\000\000\003\138\000\000\000\205\003\158\000\206\004\018\000\000\000\186\000\000\004\019\000\000\000\141\003\139\002\244\0065\003|\000\142\000\000\000\000\003}\000\143\000\000\000\000\000\000\004\021\000\000\002\244\000\000\003|\000\139\000\156\000\000\003}\000\140\000\187\000\000\000\000\000\000\000\188\000\000\004\023\000\000\003z\003\145\000\158\000\000\001J\000\000\000\152\000\000\000\000\000\000\000\000\000\000\000\000\003z\003\145\003\154\000\000\000\000\000\000\000\000\000\000\000\000\004\006\004\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\006\004\017\003\155\003z\003\145\000\000\000\000\003\156\000\000\000\141\000\000\003\157\006:\000\000\000\142\000\000\003\158\000\000\000\143\000\000\000\000\000\000\002\244\000\000\003|\004\006\004i\000\000\003}\004\r\000\000\000\000\000\000\000\000\000\000\002\244\000\000\003|\000\000\003\138\002\199\003}\004\r\002\203\004\018\000\000\000\152\000\000\004\019\000\153\000\000\003\139\003\138\000\000\000\000\000\000\000\000\004\018\000\000\000\000\002\244\004\019\003|\004\021\003\139\000\000\003}\000\000\000\000\000\000\000\000\000\154\000\000\000\000\000\000\000\000\004\021\000\000\000\000\004\023\000\000\000\000\000\000\000\000\000\000\003z\003\145\000\000\000\000\000\000\000\000\000\000\004\023\000\000\000\000\000\000\003\154\000\141\003z\003\145\000\000\002\204\000\000\000\000\000\000\002\205\000\000\004\006\0055\003\154\000\000\000\000\000\000\000\000\000\000\004\r\000\000\000\000\003\155\000\156\004\006\0057\000\000\003\156\000\153\003\138\000\000\003\157\004\r\000\000\004\018\003\155\003\158\000\176\004\019\000\000\003\156\003\139\003\138\000\000\003\157\000\000\002\244\004\018\003|\003\158\000\154\004\019\003}\004\021\003\139\000\000\000\000\004\r\000\000\002\244\000\000\003|\000\000\000\000\000\000\003}\004\021\003\138\000\000\004\023\000\000\000\139\004\018\000\000\000\000\000\148\004\019\000\000\000\000\003\139\000\000\000\000\004\023\000\000\000\000\000\000\003\154\000`\000\000\000\000\000\000\004\021\000\000\000\000\000\000\000\000\000\000\000\000\000\156\003\154\000\000\000\000\000\000\000\000\002\218\000\000\000\000\004\023\003\155\003z\003\145\000\000\000\178\003\156\000\000\000\000\002\219\003\157\000\000\000\000\000\000\003\155\003\158\000\000\003\154\000\000\003\156\000\000\000\141\000\000\003\157\004\006\0059\000\142\000\000\003\158\000\000\000\143\000\000\004\r\002\199\000\000\000\000\002\203\000\000\000\000\003\155\000\000\000\000\003\138\000\000\003\156\004\r\000\000\004\018\003\157\000\000\000\000\004\019\000\000\003\158\003\139\003\138\000\000\000\000\000\152\002\244\004\018\003|\000\000\000\000\004\019\003}\004\021\003\139\000\000\000\000\000\000\000\139\000\000\000\000\000\000\000\148\000\000\000\000\002\253\004\021\000\000\000\000\004\023\000\000\000\000\002\199\000\000\000`\002\203\000\000\000\141\000\000\003\n\000\000\002\204\004\023\000\000\000\000\002\205\003\154\000\000\000\000\000\000\000\000\000\139\000\000\000\000\000\000\000\148\000\000\000\000\000\000\003\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000`\003\155\000\000\000\000\000\000\000\000\003\156\000\000\000\141\000\000\003\157\000\000\000\000\000\142\003\155\003\158\000\153\000\143\000\000\003\156\000\000\000\000\000\141\003\157\003z\003{\002\204\000\000\003\158\000\000\002\205\000\000\004\r\001Z\000\000\000\000\000\000\000\000\000\154\000\139\000\000\000\141\003\138\000\148\000\000\000\152\000\142\004\018\000\000\000\000\000\143\004\019\000\139\000\000\003\139\000`\000\148\000\000\001\206\000\000\000\206\000\000\000\000\000\186\000\000\000\000\004\021\000\000\000`\000\000\000\139\000\000\000\000\002\218\000\140\000\000\000\000\000\000\000\152\000\000\000\000\000\141\004\023\003|\000\000\002\219\000\156\003}\000\000\000\000\000\187\000\000\000\000\000\000\000\188\000\000\000\141\000\000\000\000\003\154\000\158\000\142\000\000\000\000\000\000\000\143\000\000\000\000\000\000\000\141\000\000\000\000\000\000\000\000\000\142\000\139\000\000\000\000\000\143\000\148\000\000\003\155\000\000\000\153\000\000\002\218\003\156\000\141\000\000\000\000\003\157\000`\000\142\000\152\000\000\003\158\000\143\002\219\000\000\000\000\001W\000\000\000\000\000\000\000\000\000\154\000\152\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\253\000\000\000\153\000\000\002\199\000\000\000\000\002\203\000\000\000\000\000\152\001\212\000\000\000\206\003\012\000\000\000\186\000\000\000\141\002\182\000\000\000\000\000\000\000\142\000\154\000\000\000\000\000\143\000\000\000\000\003\138\000\000\000\139\000\000\000\139\000\000\000\148\000\000\000\148\000\156\000\000\000\000\003\139\000\187\002\184\000\000\000\206\000\188\000\000\000\186\000\000\000\000\002\253\000\158\000\000\000\152\000\000\000\153\000\139\000\000\000\000\002\244\000\148\000\000\000\000\002\204\003\014\000\000\000\000\002\205\000\153\000\000\000\156\000\000\002\182\000\000\000\187\000\139\000\000\000\154\000\188\000\148\000\000\000\000\000\000\000\000\000\158\003j\000\153\000\141\000\000\000\141\000\154\000\000\000\142\000\000\000\142\000\000\000\143\002\201\000\143\000\206\000\000\000\000\000\186\000\000\000\000\000\000\000\000\003\155\000\154\000\182\003l\001\175\000\206\000\141\000\000\000\186\000\000\000\000\000\142\000\000\000\000\003\168\000\143\000\000\000\152\000\156\000\152\002\199\000\000\000\187\002\203\000\153\000\141\000\188\000\000\000\000\000\000\000\142\000\156\000\158\000\000\000\143\000\187\000\000\000\000\002\245\000\188\000\000\003j\000\000\000\152\000\000\000\158\000\154\000\000\000\000\000\156\000\000\000\000\000\000\000\000\000\000\002\218\003.\006\139\003\028\000\000\000\000\000\000\000\152\000\180\002\248\000\000\003\192\002\219\000\206\002\199\000\000\000\186\002\203\000\000\000\000\000\000\002\199\002\244\000\000\002\203\000\000\002\204\000\000\000\000\000\000\002\205\003\031\000\000\000\000\000\000\000\000\000\000\002\251\000\000\000\156\000\153\000\000\000\153\000\187\000\000\000\000\000\000\000\188\000\000\000\000\000\000\000\000\000\000\000\158\000\000\000\000\000\000\000\185\0034\000\185\000\000\000\000\000\154\000\000\000\154\000\000\000\153\000\000\000\000\000\000\000\000\002\244\000\000\000\000\000\000\002\204\000\139\002\239\002\244\002\205\000\148\002\253\002\204\002\241\000\000\000\153\002\205\000\186\000\154\000\186\000\000\000\000\000\000\000\000\000\000\002\254\000\000\000\000\000\000\000\000\000\000\000\000\002\241\000\000\000\000\000\000\000\000\000\154\002\245\000\000\000\156\000\000\000\156\000\186\000\187\000\000\000\187\000\000\000\188\000\000\000\188\000\000\000\000\000\000\000\158\002\218\000\158\000\000\003!\000\000\000\000\000\000\000\186\000\141\002\248\000\139\000\156\002\219\000\142\000\148\000\187\000\000\000\143\000\000\000\188\000\000\000\000\000\139\000\000\000\000\000\158\000\148\000\000\000\000\000\000\000\156\003#\002\245\000\000\000\187\000\000\000\000\002\251\000\188\002\245\000\000\000\000\000\000\000\000\000\158\000\152\000\000\000\000\000\000\002\218\000\000\000\000\003!\000\000\000\000\000\000\002\218\000\000\002\248\003!\000\139\002\219\000\000\000\000\000\148\002\248\000\000\000\141\002\219\000\000\000\000\000\000\000\142\000\000\000\000\003*\000\143\000\000\000\000\000\141\003#\002\253\000\000\000\000\000\142\000\000\002\251\003#\000\143\000\000\000\000\000\000\000\000\002\251\000\000\002\254\000\000\000\000\000\139\000\000\000\000\000\139\000\148\000\000\000\152\000\148\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003E\000\152\000\141\000\000\000\000\000\000\000\000\000\142\000\153\003%\000\000\000\143\000\000\000\000\000\000\002\253\003(\000\000\000\000\000\000\000\000\000\000\002\253\000\000\000\000\002\241\000\000\000\000\000\139\002\254\000\154\000\000\000\148\000\000\000\000\000\000\002\254\000\000\000\000\000\152\000\141\000\000\000\000\000\141\000\000\000\142\000\139\000\000\000\142\000\143\000\148\000\000\000\143\000\000\002\199\000\186\000\000\002\203\000\000\003P\000\000\000\000\003\182\000\000\000\000\003\235\000\139\000\153\000\000\000\000\000\148\003X\000\000\000\000\000\000\000\000\000\000\000\152\000\156\000\153\000\152\000\000\000\187\000\000\002\241\000\141\000\188\000\000\000\000\000\154\000\142\000\000\000\158\000\000\000\143\000\000\002\241\000\000\000\000\000\000\000\000\000\154\000\000\000\141\000\000\000\000\000\000\003\237\000\142\003_\000\000\000\141\000\143\000\000\000\186\002\204\000\000\000\153\000\000\002\205\000\000\000\000\000\152\000\141\000\000\003\239\000\186\000\000\000\142\000\000\000\000\000\000\000\143\000\000\002\241\000\000\000\000\000\156\000\000\000\154\000\152\000\187\000\000\000\000\000\000\000\188\000\000\000\000\000\000\000\156\000\000\000\158\000\000\000\187\000\000\000\153\000\000\000\188\000\153\000\000\000\152\000\000\000\000\000\158\000\186\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\185\000\000\000\000\000\185\000\000\000\154\000\000\000\000\000\154\000\000\000\000\000\000\000\000\000\000\000\139\000\156\000\139\000\000\000\148\000\187\000\148\000\000\000\000\000\188\000\000\000\000\000\000\000\000\000\153\000\158\000\186\000\000\000\000\000\186\000\139\000\139\000\000\000\000\000\148\000\148\000\000\000\000\002\218\000\000\000\000\000\185\000\153\000\000\000\000\000\000\000\154\000\000\000\000\000\156\002\219\000\000\000\156\000\187\004=\000\000\000\187\000\188\000\000\000\185\000\188\000\139\000\153\000\158\000\154\000\140\000\158\000\141\000\000\000\141\000\000\000\186\000\142\000\000\000\142\000\000\000\143\000\000\000\143\002\241\000\000\000\139\000\000\000\000\000\154\000\148\000\000\000\141\000\141\000\186\000\000\000\000\000\142\000\142\000\156\000\000\000\143\000\143\000\187\000\139\000\000\000\000\000\188\000\148\000\152\000\000\000\152\002\199\000\158\000\186\002\203\000\000\000\156\000\000\000\000\000\000\000\187\000\000\000\141\002\253\000\188\000\000\000\000\000\142\000\152\000\152\000\158\000\143\000\000\000\000\000\000\000\000\000\156\003\016\000\000\000\000\000\187\000\000\000\141\000\000\000\188\000\000\000\000\000\142\000\000\000\000\000\158\000\143\000\000\000\000\000\139\000\000\000\000\000\000\000\148\000\152\000\141\000\000\000\000\000\000\000\000\000\142\000\000\000\000\000\141\000\143\000\000\000\000\002\204\000\000\000\000\000\000\002\205\000\000\004F\000\152\004N\000\000\000\000\000\000\000\000\000\000\000\153\000\000\000\153\000\000\002\199\000\000\000\000\002\203\000\000\000\000\000\000\000\152\004\185\004\197\000\000\000\000\000\000\002\241\000\000\002\241\000\153\000\153\000\154\000\000\000\154\000\141\000\000\000\000\000\000\000\000\000\142\000\000\000\000\000\000\000\143\000\000\000\000\002\241\002\241\000\000\000\000\000\000\000\154\000\154\000\000\000\000\000\000\000\186\000\000\000\186\000\000\000\153\000\000\000\139\000\000\000\000\000\000\000\148\000\000\000\000\000\000\000\141\000\152\004\202\000\000\002\204\000\000\000\186\000\186\002\205\000\156\000\153\000\156\000\154\000\187\000\000\000\187\000\000\000\188\000\000\000\188\004\209\000\000\000\000\000\158\002\218\000\158\000\000\002\241\000\153\000\156\000\156\000\000\000\154\000\187\000\187\000\000\002\219\000\188\000\188\000\000\000\000\000\000\000\139\000\158\000\158\002\241\000\148\000\000\000\000\000\141\000\154\000\000\000\000\000\000\000\142\000\000\000\000\000\186\000\143\000\000\000\156\000\139\000\000\000\000\000\000\000\148\000\000\000\000\000\139\000\000\000\000\004\218\000\148\000\000\000\190\000\186\000\000\000\000\000\000\000\153\000\156\000\139\006g\000\000\000\187\000\148\000\152\002\199\000\188\000\000\002\203\000\000\000\000\000\000\000\158\006\199\002\241\000\000\000\156\000\141\000\000\000\154\000\187\002\218\000\142\002\253\000\188\000\000\000\143\000\000\000\139\000\000\000\158\000\000\000\148\002\219\000\000\000\000\000\141\003\018\000\000\000\000\000\000\000\142\000\000\000\141\000\186\000\143\000\000\000\000\000\142\000\000\000\000\000\000\000\143\000\000\000\152\000\000\000\141\000\000\000\000\000\000\000\000\000\142\000\141\000\000\000\000\000\143\002\204\000\156\000\139\000\000\002\205\000\187\000\148\000\152\004\240\000\188\000\000\000\000\000\000\000\000\000\152\000\158\000\153\000\000\000\000\000\141\000\000\000\000\000\000\000\000\000\142\000\000\000\000\000\152\000\143\000\000\003z\003{\000\000\002\241\000\000\000\000\002\253\000\000\000\154\000\000\000\000\000\000\000\000\000\000\000\139\000\000\000\000\000\000\000\148\000\000\003\020\000\000\000\000\000\000\000\000\000\000\000\152\000\000\004\245\000\141\000\000\000\000\000\000\000\186\000\142\000\000\000\153\000\000\000\143\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\252\000\000\000\000\000\000\000\000\000\000\002\241\000\000\000\153\000\156\000\141\000\154\003|\000\187\000\000\000\153\003}\000\188\000\000\000\152\000\000\000\000\002\218\000\158\000\141\002\241\000\000\000\000\000\153\000\142\000\154\000\000\006h\000\143\002\219\000\000\000\186\000\154\000\000\000\139\000\000\000\000\000\000\000\148\000\000\006h\000\000\000\000\000\000\000\000\000\154\000\000\000\000\000\000\000\139\000\186\000\000\000\153\000\148\000\156\000\000\000\152\000\186\000\187\000\000\000\000\000\000\000\188\000\000\000\000\000\000\000\000\000\139\000\158\001N\000\186\000\148\000\000\000\156\000\154\000\000\000\000\000\187\000\139\000\000\000\156\000\188\000\148\000\000\000\187\000\000\000\000\000\158\000\188\000\000\000\000\000\141\000\153\000\156\000\158\000\000\000\142\000\187\002\253\000\186\000\143\000\188\002\199\000\000\000\000\002\203\000\141\000\158\003\138\001t\000\000\000\142\003\022\000\000\000\154\000\143\000\000\000\139\000\000\000\000\003\139\000\148\000\156\000\000\000\141\000\000\000\187\000\000\000\152\000\142\000\188\000\000\000\000\000\143\000\153\000\141\000\158\000\000\000\000\000\186\000\142\000\000\000\000\000\152\000\143\000\000\000\000\000\000\000\000\000\000\000\000\001\141\000\000\000\139\000\000\000\000\000\154\000\148\000\000\000\141\000\139\000\152\000\156\002\204\000\148\000\000\000\187\002\205\000\000\000\000\000\188\000\000\000\152\000\000\000\141\000\000\000\158\000\000\000\000\000\142\000\000\000\186\000\000\000\143\000\000\000\000\000\000\003\155\000\000\000\139\000\000\000\000\000\000\000\148\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\170\000\000\000\000\000\156\000\000\000\153\000\000\000\187\000\000\000\141\000\152\000\188\000\000\000\000\000\142\000\000\000\141\000\158\000\143\000\000\000\153\000\142\001\190\000\000\000\000\000\143\000\000\000\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\160\000\153\000\000\000\000\000\000\000\154\000\000\000\000\000\141\000\152\000\000\000\000\000\153\000\142\000\000\000\186\000\152\000\143\002\164\000\000\000\000\000\000\000\000\000\154\002\218\000\000\000\000\000\000\000\000\002\212\000\186\000\000\000\000\000\000\000\154\000\000\002\219\000\000\000\156\000\000\000\000\000\000\000\187\000\000\000\000\000\152\000\188\000\000\000\186\000\000\000\000\000\153\000\158\000\156\000\000\000\000\000\139\000\187\000\139\000\186\000\148\000\188\000\148\000\000\000\000\000\000\000\000\000\158\002\227\000\000\000\000\000\156\000\000\000\154\000\000\000\187\000\000\000\000\000\000\000\188\000\000\000\000\000\156\000\000\000\000\000\158\000\187\000\153\000\000\000\000\000\188\000\000\000\000\000\000\000\153\000\000\000\158\000\139\000\186\000\000\000\000\000\148\000\000\000\000\002\229\002\253\000\000\000\000\000\000\000\154\000\000\003\132\000\000\000\141\000\000\000\141\000\154\000\000\000\142\003\024\000\142\000\156\000\143\000\153\000\143\000\187\000\000\000\000\000\000\000\188\000\000\000\000\000\000\000\139\000\186\000\158\000\000\000\148\000\000\000\000\003\197\000\186\000\000\002\199\000\000\000\154\002\203\000\000\000\000\000\000\000\152\000\000\000\152\000\000\000\141\000\000\000\000\000\156\000\000\000\142\000\000\000\187\000\000\000\143\000\156\000\188\000\000\000\000\000\187\000\139\000\186\000\158\000\188\000\148\000\000\000\000\000\139\000\000\000\158\000\000\000\148\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\141\000\152\000\000\000\156\000\000\000\142\000\000\000\187\000\000\000\143\000\141\000\188\000\139\000\000\002\204\000\139\000\148\000\158\002\205\000\148\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\141\000\152\000\153\000\000\000\153\000\142\000\000\000\141\000\000\000\143\000\000\000\000\000\142\000\000\000\000\000\000\000\143\000\000\000\000\003\202\000\000\003\206\000\000\000\000\000\154\000\000\000\154\000\000\000\000\000\000\000\000\000\000\000\000\000\141\000\000\000\000\000\141\000\152\000\142\000\000\000\000\000\142\000\143\000\153\000\152\000\143\000\000\000\000\000\139\000\186\000\000\000\186\000\148\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\227\000\000\000\000\000\000\000\000\000\154\000\000\000\139\000\000\000\000\000\152\000\148\000\156\000\152\000\156\000\000\000\187\002\218\000\187\000\153\000\188\000\000\000\188\000\000\000\000\000\000\000\158\000\000\000\158\002\219\000\186\000\000\000\000\000\139\000\000\000\000\004\n\000\148\000\000\000\000\000\000\000\154\000\000\000\000\000\000\000\141\000\000\000\000\000\000\000\000\000\142\000\000\000\000\000\156\000\143\000\153\000\000\000\187\000\000\000\000\000\000\000\188\000\153\000\000\000\141\000\000\000\186\000\158\000\000\000\142\000\000\000\000\004\172\000\143\000\000\000\000\000\000\000\154\000\000\005\019\000\000\000\000\000\152\000\000\000\154\000\000\003z\003{\000\153\000\156\000\141\000\153\000\000\000\187\000\000\000\142\000\000\000\188\002\253\000\143\000\000\000\152\000\186\000\158\000\000\005'\000\000\000\000\005)\000\186\000\154\000\000\003\026\000\154\000\139\000\000\000\000\000\000\000\148\000\000\000\000\000\000\000\000\000\000\000\139\000\156\000\139\000\152\000\150\000\187\000\140\000\000\000\156\000\188\000\000\000\186\000\187\000\139\000\186\000\158\000\188\000\140\000\000\000\141\000\000\003|\000\158\003z\003{\003}\000\000\000\000\003z\003{\000\000\000\000\000\000\000\000\000\156\000\000\000\153\000\156\000\187\000\000\000\000\000\187\000\188\000\000\000\000\000\188\000\000\000\141\000\158\000\000\000\000\000\158\000\142\005+\000\000\000\153\000\143\000\141\000\154\000\141\000\000\000\000\000\142\000\000\000\142\000\000\000\143\000\000\000\143\000\000\000\141\000\000\0051\003z\003{\000\142\000\000\000\154\000\000\000\143\000\141\000\153\003|\000\186\000\152\000\141\003}\003|\000\000\003z\003{\003}\000\000\000\000\000\152\000\000\000\152\000\000\005?\000\000\000\000\000\000\000\186\000\154\000\000\000\000\000\156\000\152\000\000\000\000\000\187\000\000\003z\003{\000\188\000\000\000\000\000\000\000\000\000\000\000\158\000\000\003\138\003z\003{\000\156\000\000\000\000\000\186\000\187\000\141\000\000\003|\000\188\003\139\000\000\003}\000\000\000\000\000\158\000\000\000\000\000\000\000\000\000\000\000\000\000\141\000\000\003|\003z\003{\000\156\003}\000\000\000\000\000\187\000\000\000\000\000\000\000\188\000\000\000\000\000\153\000\000\000\000\000\158\000\000\000\000\000\000\000\141\000\000\003|\000\153\000\000\000\153\003}\000\000\000\000\000\000\005M\000\141\000\000\003|\003\138\000\154\000\153\003}\000\000\003\138\000\000\000\000\000\000\000\000\000\000\000\154\003\139\000\154\000\000\000\000\000\000\003\139\003\155\000\000\000\000\000\000\000\000\000\141\000\154\003|\000\186\000\000\000\000\003}\000\000\000\000\003\172\000\000\000\000\000\000\000\155\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\156\003\138\000\000\000\000\000\187\000\000\000\000\000\000\000\188\000\000\000\156\000\000\000\156\003\139\000\158\003\149\000\000\003\138\000\000\000\000\000\000\000\000\000\000\000\156\000\158\000\000\000\192\000\000\000\000\003\139\003\155\000\000\000\000\000\000\000\000\003\155\000\000\000\194\000\000\000\000\003\138\000\000\000\000\000\000\003\174\000\000\000\000\000\000\000\000\003\176\000\000\003\138\003\139\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\139\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\138\000\000\000\000\003\155\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\139\000\000\000\000\000\000\000\000\003\178\000\000\003\155\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\180\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\155\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\155\000\000\000\000\003\186\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\188\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\155\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\190"))
+    ((16, "\001#\000K\000\000\000\000\000\000\000Q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\000\000\001K\003v\000\000\0011\000\233\000\000\000\000\000\000\000\205\000\000\000\165\000k\000\000\000\000\000/\000\000\000\028\000\000\000\000\000\000\000|\000\000\000\204\000\000\000\000\000\000\000\000\000\212\000\000\002\002\002\028\000\000\000\000\002(\000\000\002^\000\000\000\000\000\000\002\150\000\000\002\166\000\000\003&\000\000\003Z\004\234\000\000\000\000\005$\000\000\005d\000\000\000\152\0124\t\142\000\000\000\000\000\000\000\186\000\000\000\000\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r`\000\000\000\000\001\200\015\178\000\000\000\000\016<\000\000\000\000\000\000\000\000\005\164\000\000\006\020\rN\000\000\006T\000\000\000\000\006X\000\000\000\000\006\172\000\000\006\184\000\000\000\000\000\000\007\024\000\000\001\000\007\226\b\186\000\000\000\000\000\000\000\000\000\156\001\144\011\156\000\000\000\000\000\000\007\232\000\000\t\196\000\000\003\160\000\180(\210\000\000\000\000\000\011\000\000\000\208\000\000\000\019\004x\001\000\b\158\001\000\011\026\018\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\164\b\158\000\000\000\000\023X\000\0001\188\000\000\000\220\000\000\000\000\000\000\000\000\002\130\000\000\014\208\004x\000\000\005\006\000\000\006\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012z\000\000\020\206\000\000\022\016\000\000\025\158\000\000\029\130\000\000\030\136\000\000!\"\000\000!8\000\000!`\000\000'\020\000\000*\148\000\000)T\000\000\019\216\000\000\000\000\000\000\000\000\000\0006`\000\0006\134\000\0006\206\000\000\011\240\000\000\000\000\r\218\000\000\000\000\000\000\000\000\000\000\000\2131\026\000\000\000\216\000\000\000\000\000q\004:\000\000\000\017\b\128\000\000\000\000\b\148\000\000\b\224\b\226\000\000\000\000\t\b\000\000\t\014\000\000\000\000\000\000\t\016\000\000\t\030\000\000\000\000\t6\000\000\tR\tf\000\000\000\000\t~\000\000\t\144\000\000\000\000\000\000\t\168\000\000\t\186\000\000\t\224\000\000\t\246\n\012\000\000\000\000\n\016\000\000\n\022\000\000\002\190\017L\000\000\n&\000\000\n2\017\150\000\000\n:\000\000\000\000\nN\000\000\nT\000\000\nn\000\000\000\000\000\000\n\168\000\000\n\192\015\226\000\000\n\200\000\000\000\162\014\234\000\000\005\252\000\000\006P\000\000\000\000\0028\002n\000\000\000\000\000\000\003\132\005\148\000\000\n\184\000\000\000\000\000\000\004\174\000\000\004\188\000\000\006\168\000\000\000\000\000\000\000\000\000\000\000\000\016\192\000\000\000\000\000\000\000\000\000\000\014\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\005V\016,\000\000\n\202\000\000\n\252\018t\000\000\011\004\000\000\000\000\007\144\000\000\000\000\000\000\000\000\002\000\000\000\000\000$^\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\004\018\134\000\000\000\000\000\000\026\006\000\000\026t\020\144\000\000\000\000\000\000\0060\000\000\0258\000\000%.%\224\000\000\016\188\000\000\022\168\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\178\000\000\017\252\000\000\025(\000\000\025\164\000\000\027\128\000\000\027\192\000\000\028\028\000\000!\194\000\000&\212\000\000)~\000\000-L\000\000*\002\000\000\000\176\000\0003\012\000\0005\144\000\0006\242\000\000\000\000&L\000\000\000\000\000\000&v\000\000\000\000\000\000\000\000\000\0001 \000\000\000\000\000\000\006h\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\00018\000\000\000\000\000\000\006~\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\016\000\000\000\000\000\000\000\000\001\232\000\000\000\0001\240\000\000\000\000\000\000\018\236\002\022\000\000\000\000\000\000\000\000\018\172\000\000\022b\000\000\000\000\000\000\000\000\000\000'<\000\000\000\000\000\000\000\000\000\000\000\000\001\170\000\000\000\000\000\000\011\020\019\"\000\000\011\028\000\000\000\000\000\000\000\000\000\000\0116\000\000\000\000\001\015\006\012\000\000\007\144\000\000\000\000\000\000\002\"\000\000\n\226\000 \0118\000\000\000\000\011J\000\000\011R\011^\000\000\000\000\011f\000\000\011p\000\000\000\000\000\000\011r\000\000\011|\000\000\000\000\011\138\000\000\011\140\011\146\000\000\000\000\011\154\000\000\011\160\000\000\000\000\000\000\011\162\000\000\011\164\000\000\011\178\000\000\011\184\011\202\000\000\000\000\011\208\000\000\011\210\000\000\006\214\020d\000\000\011\212\000\000\011\214\021\"\000\000\011\220\000\000\000\000\011\228\000\000\011\230\000\000\011\240\000\000\000\000\000\000\011\252\000\000\002V\000\000\000\000\012\016\025\186\000\000\012\020\000\000\000\000\001\184\000\000\000\000\000\134\000\000\000\000\000\000\000\000\000\000\0070\0264\000\000\012\024\000\000\012\026#\178\000\000\012(\000\000\000\000\r>\0124\000\000\000\000\012:\000\000\012<\012B\000\000\000\000\012F\000\000\012P\000\000\000\000\000\000\012T\000\000\012X\000\000\000\000\012f\000\000\012j\012l\000\000\000\000\012z\000\000\012\130\000\000\000\000\000\000\012\152\000\000\012\160\000\000\012\180\000\000\012\182\012\184\000\000\000\000\012\192\000\000\012\194\000\000\007X\022\170\000\000\012\204\000\000\012\218\022\240\000\000\012\228\000\000\000\000\012\232\000\000\012\236\000\000\012\242\000\000\000\000\000\000\012\248\000\000\012\250'H\000\000\012\252\000\000\000\000\007|)\146\000\000\r\002\000\000\r\004*\022\000\000\r\006\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\254\000\000\",\000\0002\028\000\000\000\000\003J\000\000\000\000\000\000\002\244\000\130\000\000\000\000*&\n\192\000\000\005\164*J\000\000\000\000'Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011*'Z\000\000\022\182\000\000\031\216\015N'\220\000\000% \000\000\000\000\000\000\007\140\000\000\031\004\000\000\000\00026\000\000\000\000\000\000\007\152\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\198\000\0002\228\000\000\000\000\000\000\028\240*\244\000\000\000\000\000\000+\002\000\000\000\000\000\000\000\000\007\198\000\000\000\000\000\000\000\000\bL\000\000\000\000\r\030\000\000\000x\000\000\000\000\000\000\003\002\000\000\012\"\000\000\r\214\000\000\027\216\000\000\029R\000\000#\196\000\000&\176\000\000(\026\000\000)\166\000\000*\176\000\000-:\000\0002\024\000\0007\014\000\00070\000\000\000\000+l\000\000\000\000\002P+\144\000\000\000\000+\252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\200\000\000\000\000\000\000\000\000\005\026\000\000\007\154\000\000\000\000\022\244\000\000\000\000\000\000+\228\000\000\000\000\000\000\000\000\000\000\"\232\000\000\000\000\000\000\000\000,f\000\000\000\000\000\000\000\000\004N\003\026\000\000,l\000\000\000\000\000\000\000\000\bB\000\000,\152\000\000\000\000\000\000\000\000\001I\000\000\0064\000\000\000\154\016\012(d\000\000\000\000\000\000\005H\000\000\000\000\000\000\000\000\000\000\000\000\018Z(d\000\000\026\222\000\000\0280\015\162\000\000\000\000\000\000\007\224\000\000 D\000\000\000\0002\242\000\000\000\000\000\000\b\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\025x\000\000\028@\000\000\000\000\000\000\002\156\000\000\000\000\000\000\000\000\000\000\000\000\006\192\000\000\031\164\000\000 \148\000\000&.\000\000'~\000\000*\194\000\000,\156\000\000-\148\000\000-\220\000\0006\198\000\0006\234\000\000,\192\000\000\030x\000\0007\"\000\0007n\000\0007\134\000\000(\136\000\000\000\000\000\0003B\000\000\000\000\000\000\002\174\000\0003\208\000\000\000\000\000\0003\230\000\000\000\000\000\238\000\000\022\154\000!\t\208\000\000\n \000\000\011h\001\250\006\186\000\000\000\000\000\000\000\000\000\000\000\000\000\0004.\000\000\"L\003\146\t\024\000\000\000\000\000\000,\248\000\000-\136\000\000-\168\000\000\"\250#\134\002r\004\168\000\000\004\198\005\"\000\000\000\000\000\000\007\000\000\000\000\000\nX\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\00040\000\000\000\000\000\000\000\000 \218\000\000#\220\000\000\000\000\000\000\000\000\000\000\000\000\012\200\000\000\000\000\n(\000\000\000\000\000\000\023 \005h\000\000\024\012\000\000\000\000\bB\000\000\005\140\000\000\000\000\rP\000\000\024\218\000\000\000\000!>\000\000\000\000\000\000\001,\000\000\000\000\nv\000\000\000\000)\158\000\000\000\000\000\000-\200\000\000\000\000\000\000.\128\000\000\000\000\000\000\000\000.B\000\000\000\000\000\000\000\000\004\184\t\152\000\000.d\000\000\000\000\000\000\000\000\000\000\000\000\r\142\000\000\000\000\005\202\000\000\r\204\000\000\001,\000\000\000\000\003\"&\178\000\000\004V\000\000\000\000\000\000\000\000\002\156\000\000$\014\000\000\024\244\003\248\025\198\000\000\004^\000\000\015\128\000\000\015\180\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128\026\174\003\252\027*\000\000\000\000\000\000\004\138\000\000\016F\000\000\005\018\000\000\000\000\001,\004\004\027\182\000\000\004\176\000\000\016z\027\240\000\000\000\000\017\176\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\028\007B\000\000\005\230\000\000\000\000\000\000\000\000\006$\000\000\0186\000\000\000\000\000\000\031\1304\144\000\000\000\000\000\000\030\200\000\000\000\000\000\000\000\000\000\000\003R\n\220\000\000\000\000.\164\000\000\000\000\004T\000\000\n\234\000\000\000\0006r\000\000\000\000\000\000/^\000\000\000\000\000\000\000\000/b\000\000\000\000\005\198\n\254\000\000\000\000/x\000\000\000\000\006: 0\000\000\011&\000\000\000\000/\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000!V\000\000\000\000\000\000\000q\000\000\000\000\011\166\000\000\000\00072\000\000\000\000\000\0000D\000\000\000\000\000\000\000\0000Z\000\000\000\000\006l\012\000\000\000\000\0000\\\000\000\000\000\006D\000\000\000\000\000\000\000\000\002\156\000q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\176\000\000\018\188\000\000\000\000\000\0004\188\000\000\007\200\000\000\000\000\000\000\000\143\000\000\029,\000\000\000\000\005r\019r\000\000\019\248\000\000\000\000\000\000\006R\000\0004\228\006\1545\012\000\0005\"\000\000\000\000\000\000\006\164\000\00058\007\146\000\000\000\000$x\b<$\146\000\000%\138\000\000\000\000\000\000\bB\000\0005\208\b\150\000\000\000\000\023T\n\164#\"\000\000#\192\000\000\000\000\000\000\n\208\000\0005\248\n\220\000\000\000\000\000\000\000O\000\000\000\000\000\000\000U\000\000\000\000\000\000\000\000\000\000\000\000\000\236\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n6\000\000\000\000\002.\000\000\000\000\r\198\000\000\000\000\000\000\000\000\005P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\198\000\000\000\000\r\160\000\000\012\196\000\000\000\000\000\014\000\000\b\000\rJ\000&\000\000\000\000\t\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\024\023`\000\000\000\000\n\134\000\000\000\000\000\000\024N\000\000\000\000\024\212\024\238\000\000\000\000\000\000\000\000\027&\028\012\007^\000\000\000\000\000\000\028X\000\000\000\000\000\000\000\000\000\000\000\000\006\172\000\000\000\000\b\172\000\000\000\000\r\030\000\000\000\000\006\184\000\000\000\000\b\194\000\000\000u\000\000\000\000\000\000\000\000\000n\030.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007. \250\000\000\000\000\000\000\000\000\"\020\000\000\000\000\0046\000\000\r\224\000\000\000\000\000\000\002\238\000\000\003r\000\000\000\000\000\000\016\170\000\000\000\000\"\144\000\000\000\000\002\"$\024\b\242\000\000$B\000\000\000\000\000\000\000\000\r\148\000\000\000\000\000\000\r6\000\000\000\254\r`\002p\000\000\000\000\000\000\007\178\002~\000\000\000\000\000\000\000\000\000\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\023\000\000\000\000\019\\\000\000\000'\r\234\000R\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\218\000\000\000\000\030:-0\000\000\000\000\000\000\000\000/\168\000\000\000\000\011d\000\000\000\236\011\252\000\000\004t\000\000\000\000\000\000\000\000\000\000\000%\025\024\000\000\000\000%\212\000\000\000\000\000\000\000\000\015\240\000\000'X\000\000\000\000\000\000\000\000\007\012\000\000\000\000\000\000\002D\000\000\000\000\b\188\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\022\000\000\000\000\000\000\003\180\000\000\000\000\000\000\000\000\000\000\000\020\002\020\011\204\012(\000\000\005\026\007\020\b\028\t\146\000\000\000\000\000\000\000\000\000\000\000\000\nf\020~\000\000\028\186\007n\000\000\000\000\007\206\000\000\021\006\000\000)\026\000\000\000\000\n\154\021\140\000\000\029\178\000\000\011>\030@\000\000\000\000\000\000\003&\005\026\000\000\000\000\000\000\000\000\t\026\000\000\007\140\000\230\000\000\000\000\td\004\254\000\000\017>\000\000\000\000\004\174\000\000\004\188\000\000\000\000\020V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bN\000\000\000\000\t\136\000\000\022\018\000\000\t\144\r\156\000\000\000\000\000\000\000\000\000\000\000\011\000\000\000\000\000\000\000\000\000\0000\142\000\000\tL\000\000\000\000\000\000\000\000\000\000\000x\000\000\b\214\n(\t\\\000\000\002\134\n\\\000\000\011L\000\000\003\012\000\000\004\026\000\000\004\160\000\000\t\144\000\000\000\000\000\000\000\000\000\000\005&\000\000\011l\000\000\005\174\000\000\t\144\014\b\000\000\004\020\000\000\r\244\006v\000\000\b\234\000\000\n*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\184\000\000\011>\000\000\000\000\000\000\012\212\000\000\000\000\000\000\000\000\000\000\014\014\012\232\000\000\000\000\r\026\000\000\000\000\012\238\007\226\014D\000\000\014J\000\000\000\000\004P\t\172\000\000\r$\000\000\000\000\rX\000\000\000\000\000\000\000\000\000\000\000\000\014.\r\012\000\000\000\000\000\000\r@\r\020\t\006\006v\rB\r~\000\000\000\000\r8\t`\tn\rj\r\158\000\000\000\000\011\202\014v\000\000\014z\000\000\014\162\000\000\000\000\014\134\000\000\000\000\014\138\000\000\000\000\000\000\000\000\014\146\000\000\014\194\000\000\000\000\000\000\014\204\000\000\000\000\000\000\014\206\000\000\000\000\000\000"), (16, "\003\190\003\213\005\184\005^\006\136\006\031\006 \001\148\005\152\002\011\000\007\000\175\006o\000\004\002\133\002\017\000\131\000\025\003\140\000\r\000\243\002\245\004\178\004\154\001q\005\185\003\190\003\213\002*\006e\005\188\005\199\005\200\006\221\000\005\006!\006e\000\005\002|\006\222\000\016\000\017\000\131\002,\006p\006\"\006q\006\223\002\133\004k\005\216\000\245\006f\000\024\006i\005\199\005\200\000O\004l\006f\003\192\006i\005\199\005\200\003\193\000\177\001|\000\028\001\150\000\177\005\220\001\129\001\151\005\214\000\178\006r\003\190\003\213\000\179\005\217\005\199\005\200\007\r\007\014\004l\006s\003\192\000 \002~\007\027\003\193\000\004\000\131\003\190\004\006\006\144\005a\006\223\007\028\004k\005\201\005\205\001\131\005`\001\148\001\148\001\149\001\149\001\164\002\128\000\131\002\031\000\188\000\131\000\133\000\005\000\031\001C\002\247\004\225\001\148\003\218\001\158\000\238\005\201\006\147\000\175\006\030\005\199\005\200\000\176\005\201\000\141\005\206\004l\004\135\003\192\006\\\006\225\000O\003\193\002\129\007\018\005U\000\175\007/\000\"\000\131\000\184\005\201\000O\000\177\000\140\003\192\004U\000\140\006\226\003\193\006`\006Y\000\131\005\221\000\177\000\177\003\206\001\150\001\150\000O\004Z\001\151\001\151\000V\004[\004m\005P\003\207\004\227\004\192\000\177\005:\004U\001\150\001\165\000$\000\177\001\151\000\189\004\174\000W\000\178\003\206\005\182\005\183\000\179\004Z\006\177\005`\005\201\004[\004m\006\227\003\207\000\177\002\247\0070\001\164\001\164\000\178\005\202\006\228\004_\000\179\004\155\007\001\004\186\000\190\006\237\004u\001\246\000\b\004\209\001\164\006a\006\249\003\140\003H\002\144\000\188\004\146\003\222\004U\000(\006b\006c\000\243\006\150\004_\005\207\004p\007\003\003\206\002~\006t\004u\004Z\000\188\007\005\003\223\004[\004m\0071\003\207\003\224\000\141\004\146\003\222\003\225\003\206\002\020\006\228\002\144\003\226\002\130\0073\000j\000\244\002\003\000\238\003\207\003\190\003\213\000*\006Z\003\223\000O\000/\005\224\001\129\003\224\001\165\001\165\000P\003\225\003G\006e\000\131\004_\003\226\004p\0075\002\245\004\178\004\154\004u\002\129\001\165\0077\006l\000\131\000X\002\248\000\189\000O\006\187\004\146\003\222\002\012\006f\001\131\006i\005\199\005\200\003\018\000\018\001E\003\022\000\131\001E\001\127\000\189\005\195\006K\001p\003\223\003}\001p\001\249\004l\003\224\003\192\000\190\000\131\003\225\003\193\001\198\000\017\005\196\003\226\000\141\003\190\003\213\004\135\000\240\000\131\006L\006O\005\199\005\200\000\190\006\240\001\168\006\241\001\169\001\169\000\175\000\131\004\025\004\026\001\242\000\249\006\223\007!\004\154\005\220\000\246\002\021\001\172\001\174\001\169\005S\003?\006X\000\249\001\170\003\023\000\222\001\237\001\171\003\024\005\201\005Q\002\022\001\172\001\129\001Q\004\140\006d\000O\002\025\004\193\003\218\001[\000\238\006Y\000\192\000O\001\255\004l\000\223\003\192\005S\003\018\000\224\003\193\003\022\001T\003\190\003\213\000\194\004\144\000\131\001Q\000\177\007,\001\130\005\201\000P\000\178\001j\002\002\0065\000\179\000\131\004U\004E\000O\0003\006\223\007!\004\154\006\164\006\165\001T\003\206\000b\000\131\002-\004Z\002t\0002\006\187\004[\004m\0063\003\207\0005\004\195\0066\005\199\005\200\002\247\002,\002\246\000\131\005\221\000\188\004\174\000\131\002\245\000\177\000\243\003A\002\000\003\023\004l\006\198\003\192\003\024\002\131\000e\003\193\000O\0007\003\190\003\213\000\131\003%\002\246\003n\004_\007&\004\155\000\131\004\186\003D\002\000\004u\003&\002\021\004\209\006y\003\221\001\\\004U\005V\003\160\004\166\004\146\003\222\004\253\000;\004<\006\189\003\206\006\031\006 \006Z\004Z\000=\000\181\000\249\004[\004m\007'\003\207\001k\003\223\005\201\001U\003G\001V\003\224\006\228\004\169\004F\003\225\004]\006v\000\249\000\189\003\226\003?\004=\003\192\0067\000\246\003q\003\193\000O\001-\004G\003\190\003\213\000\249\006\"\001U\004\180\001V\004\198\004_\001f\004\155\004\211\007)\004\171\000\249\004u\000\131\000\190\007+\004U\003I\006\223\007!\004\154\003%\005\207\004\146\003\222\006R\003\206\001T\000?\000\131\004Z\003J\003&\006]\004[\004m\007'\003\207\007u\001q\0062\000\141\003\223\003\167\000\175\006\228\004\172\003\224\000\184\004]\003\218\003\225\007v\004\180\000C\004l\003\226\003\192\006\188\006\179\000\131\003\193\006\180\0063\003\190\003\213\004m\0066\005\199\005\200\003\127\007(\004_\006e\004\155\004\198\007)\006\184\003\152\004u\000\131\003\153\007+\004U\003\140\006\223\007!\004\154\003\154\004\221\004\146\003\222\001q\003\206\004\211\006\224\006f\004Z\006i\005\199\005\200\004[\000\177\003\152\003\207\005b\003I\000\178\000\141\003\223\004u\000\179\003\158\004z\003\224\000\175\004\174\005\003\003\225\000\186\003L\004\146\004l\003\226\003\192\005\020\000O\000\131\003\193\000O\006\177\003\190\003\213\004\169\004\147\002%\000O\005\201\007*\004_\001U\000O\001V\000\249\001i\000\188\006\192\000\131\003\190\003\191\000\249\004U\006\223\007!\004\154\002\023\007g\004\206\003\222\004\188\004\200\003\206\002\247\004D\004\170\004Z\000\236\000\238\005\201\004[\004m\007'\003\207\000\177\004h\004\214\003\223\005\198\000\178\007~\006\228\003\224\000\179\003\140\004]\003\225\004i\000O\004\208\004l\003\226\003\192\004o\005\196\003\018\003\193\006\237\003,\000\141\003\190\003\213\003\141\000\131\006\244\004i\0072\000\177\004_\003\192\004\155\004\183\007)\003\193\000O\004u\000\131\000\188\007+\004U\000\189\006\223\007!\004\154\004\160\004;\004\146\003\222\001q\003\206\007n\004\206\004\203\004Z\000\248\004\230\004i\004[\004m\007'\003\207\004<\000\249\000\240\001d\003\223\005\015\0068\006\228\000\190\003\224\001_\004]\000\177\003\225\000B\004<\003\023\004l\003\226\003\192\003\024\004\207\000\131\003\193\000\246\004\232\003\190\003\213\004\236\005\021\001Q\004=\000\249\0076\004_\000\222\004\155\001e\007)\006\138\004i\004u\000\131\000E\007+\004U\004@\002\245\004\178\004\154\000\189\001T\004\146\003\222\000\192\003\206\000O\000\141\000\223\004Z\003\141\004<\000\224\004[\004m\007'\003\207\006\196\000\194\004C\001q\003\223\003\206\005j\006\228\000G\003\224\000\175\004]\000\190\003\225\000\186\000O\003\207\004l\003\226\003\192\001v\005l\006\240\003\193\006\241\004=\003\190\003\213\004\230\003\190\003\191\000O\000\249\000\131\004_\000\131\004\155\003\146\007)\000\191\000i\004u\000\131\000O\007+\005@\004U\002\245\004\178\004\154\007P\003%\004\146\003\222\000O\006\017\003\206\006\b\000\192\004\231\004Z\003\150\003&\000\233\004[\004m\007'\003\207\000\177\005F\003{\003\223\000\194\000\178\005F\006\228\003\224\000\179\006\018\004]\003\225\006\021\005\199\005\200\004l\003\226\003\192\000\177\003\212\003\192\003\193\000O\006\192\003\193\003\190\003\213\000o\001U\000O\001V\005H\001Q\004_\000\141\004\155\005G\007)\000\249\001[\004u\000\131\000\188\007+\004U\006\017\002\245\004\178\004\154\005m\000O\004\146\003\222\001T\003\206\007z\006\160\006\204\004Z\000n\001\153\000q\004[\004m\005l\003\207\005Y\004\192\006\018\004i\003\223\006\021\005\199\005\200\000O\003\224\000\141\004]\000\131\003\225\000\131\001n\005\201\004l\003\226\003\192\005t\004?\001\221\003\193\002'\005w\003\190\003\213\000O\005\254\005\199\005\200\000\249\001\235\004_\005v\004\155\000t\004\186\006\207\005v\004u\000\131\000v\004z\004U\000O\002\245\004\178\004\154\000\189\004i\004\146\003\222\000O\003\206\000O\001H\003\206\004Z\000O\000O\007n\004[\004m\007S\003\207\004\190\004\192\003\207\000\141\003\223\006\136\006Y\001\\\005\201\003\224\002c\004]\000\190\003\225\006\237\002\133\000O\004l\003\226\003\192\006\162\006\250\006\192\003\193\000z\003\018\003\190\003\213\003\022\000O\001]\004<\005\201\001U\004_\001V\004\155\006\t\004\186\000\191\005\255\004u\000\131\000\249\004z\000\249\004U\002\245\004\178\004\154\003|\006\195\004\146\003\222\000O\002\138\003\206\002\247\000\192\006#\004Z\006\012\004=\000\193\004[\004m\000\175\003\207\004\229\004\192\000\184\003\223\000\194\005\227\003\223\002\196\003\224\005z\000O\004]\003\225\006\142\000\131\003?\004l\003\226\003\192\003\023\003\228\000\131\003\193\003\024\005v\002\223\003\190\003\213\000\131\000\133\000\134\002!\000\138\003\026\004_\000\141\004\155\007d\004\186\003#\000\141\004u\000\131\006\011\004z\004U\006\020\006\223\005\228\004k\006)\006_\004\146\003\222\006\251\003\206\000\177\002$\006\152\004Z\000\137\000\178\003>\004[\004m\000\179\003\207\005]\004\192\006\018\000\140\003\223\006\021\005\199\005\200\003\195\003\224\006\252\004]\006\240\003\225\006\241\001}\002)\004l\003\226\003\192\003\130\005\223\000\249\003\193\000\249\005\130\003\190\003\213\005\133\005\254\005\199\005\200\000\188\003\204\004_\007.\004\155\007H\004\186\003A\005\132\004u\000\131\005\132\004z\004U\000\131\006\223\006\194\004k\000O\000\177\004\146\003\222\003%\003\206\003C\000\141\007\002\004Z\006\169\006\170\003D\004[\004m\003&\003\207\006\255\004\192\000\251\004i\003\223\005\136\006\192\006\192\005\201\003\224\006\174\004]\000\254\003\225\004\025\004\026\007o\004l\003\226\003\192\005v\007\021\002\247\003\193\007\022\002\144\002\247\000\131\000\133\000\139\003G\000\138\005\201\007f\004_\007\031\004\155\003\161\004\186\000\189\006C\004u\000O\003\140\004z\005\221\004U\000O\006\245\007y\001\002\001\001\004\146\003\222\004\025\004\026\003\206\000\005\004\025\004\026\004Z\003\165\001\240\006\177\004[\004m\007 \003\207\000\190\000\140\001\004\003\223\003I\001\006\001\n\006\228\003\224\001B\000Z\007#\003\225\001\012\007\026\007\030\002\005\003\226\003J\003\190\003\213\004\025\004\026\006\t\000\249\001\015\007\128\000\222\005\187\004+\001E\000\249\007\129\006\230\004_\000\131\004p\007%\001p\001\019\006\223\004u\004k\007O\007+\004U\000\192\004\025\004\026\001\018\000\223\005\185\004\146\003\222\000\224\003\206\005\188\005\199\005\200\004Z\000\194\001\021\007H\004[\004m\007 \003\207\006\177\007-\003\018\001\023\003\223\003\022\005\238\006\228\000O\003\224\004l\007#\003\192\003\225\000\131\001\027\003\193\004\028\003\226\003\190\003\213\000P\000\141\000O\001\029\004\135\000\141\007o\007\"\005\236\005\199\005\200\006\196\006\193\004_\000\131\004p\007%\007n\000[\002\245\004u\004k\001\031\007+\004B\006\240\001\148\006\241\001\158\000^\006\248\004\146\003\222\001#\003\018\000\249\004\027\003+\005\201\003?\004c\004\025\004\026\003\023\001\"\007H\001%\003\024\004\140\001'\003\223\007o\004\148\000O\001B\003\224\004l\001,\003\192\003\225\000O\001Q\003\193\0012\003\226\003\190\003\213\0011\001S\006\136\000O\006\200\004\144\007\030\003r\001E\004\152\0014\005\201\002\133\0016\000\131\001T\001p\000\177\004U\002\245\001\150\004k\007\030\000O\001\151\000\177\0018\006e\003\206\003\023\006\214\005e\004Z\003\024\004<\004\224\004[\004m\007 \003\207\000\131\000\133\000\134\000\135\000\138\007H\005\144\006\228\007I\000\141\006f\007#\006i\005\199\005\200\001<\004l\001\246\003\192\007$\001\164\005\146\003\193\003A\000\131\004=\000\175\001\128\005\147\006\187\000\186\001A\001u\005\150\004_\0074\004p\007%\003%\003v\003g\004u\000\140\005\146\007+\004U\003D\000O\005v\003&\007\158\003\018\004\146\003\222\003\022\003\206\004~\001{\004\222\004Z\000\141\001z\004\224\004[\004m\007\159\003\207\000\141\003u\002\030\000\131\003\223\006\219\002\029\003j\006\187\003\224\000\141\004\213\007K\003\225\003G\005\201\006\137\000\177\003\226\002#\0021\001U\000\178\001V\003%\000O\000\179\001\165\000\175\0024\000\141\000\249\000\176\0028\004_\003&\004p\004\215\001\247\0027\004\254\004u\000\177\002:\004z\004U\003\023\005\006\002<\002@\003\024\000O\004\146\003\222\002B\003\206\003I\005\022\001\249\004Z\000\188\002E\002I\004[\004m\002H\003\207\003\190\003\213\002K\003J\003\223\002M\002Q\002S\004d\003\224\005\031\004\213\007M\003\225\002U\001\168\000\131\002Y\003\226\000\177\000f\002\245\004f\004k\000\178\005\213\002X\000\141\000\179\002[\002]\002b\002h\001\169\004_\002g\004p\004\215\001\170\002j\002l\004u\001\171\003\018\004z\002n\003\022\001\172\005\214\001B\002\144\002r\004\146\003\222\005\217\005\199\005\200\006\197\004l\006\140\003\192\002{\000\188\002z\003\193\002\137\002\143\000\189\003\190\003\213\001E\003\223\000\141\002\142\0051\002\218\003\224\004r\001p\002\146\003\225\003%\002\149\002\153\000\131\003\226\002\152\006N\002\155\002\245\004s\004\154\003&\002\157\006\189\002\161\000\190\002\163\000P\003\190\003\213\003?\000\249\006\188\002\166\003\023\002\170\002\169\004\157\003\024\006L\006O\005\199\005\200\002\172\000\131\000[\000g\002\174\005A\002\245\004s\004\154\000\191\005\201\000O\004l\000^\003\192\002\178\003\190\003\213\003\193\002\180\000O\003\018\000\189\000\175\003\022\004\162\006\189\000\186\000\192\002\182\002\186\002\185\000\131\000\232\000\249\002\188\002\190\002\245\004s\004\154\004U\002\195\000\194\004l\001\148\003\192\001\226\000f\002\201\003\193\003\206\000\190\003I\002\200\004Z\002\203\000]\002\205\004[\004m\002\207\003\207\000\131\002\211\002\217\002\216\003N\005\201\002\222\002\228\002\227\005\193\005\233\004\159\004l\005\212\003\192\005\226\003A\000\177\003\193\000\177\006\014\003\023\0061\006J\000\178\003\024\006T\006n\000\179\007\011\0079\003%\007=\003F\004_\000\192\004p\004\161\007Q\003D\000\177\004u\003&\001\150\004\163\007W\004U\001\151\007X\000\196\007]\007^\004\146\003\222\007c\005\229\003\206\007b\007j\007l\004Z\007r\000\188\000P\004[\004m\007s\003\207\001Q\007w\007x\003\223\000P\007{\003G\001h\003\224\004U\007|\004]\003\225\000[\000l\001\164\001\148\003\226\001\158\003\206\007\127\001T\000[\004Z\000^\007\130\007\131\004[\004m\007\148\003\207\007\137\000\131\000^\004_\007\146\004\155\007\142\004\156\007\145\004U\004u\004]\007\154\004z\000\131\000\133\001D\003I\000\138\003\206\007\152\004\146\003\222\004Z\003%\007\156\007\161\004[\004m\000\000\003\207\003J\000\000\000\000\004_\003&\004\155\000\189\004\156\000\000\003\223\004u\004]\000\177\004z\003\224\001\150\000\000\003\018\003\225\001\151\003\022\004\146\003\222\003\226\000\000\000\140\000\000\001\165\000\000\000\000\000\000\000\000\000\000\000\000\004_\000\190\004\155\000\000\004\156\000\000\003\223\004u\003\190\003\213\004z\003\224\000\000\000\000\000\000\003\225\001\212\000\000\004\146\003\222\003\226\001\164\000\000\000\000\000\131\003\190\003\191\000\000\000\191\002\245\004\178\004\154\000\000\000\000\003\190\003\213\000\000\003\223\001U\000\000\001V\000\177\003\224\000\000\003I\003\023\003\225\000\192\000\249\003\024\000\131\003\226\000\235\000\000\000\000\002\245\004\178\004\154\003P\000\000\000\000\000\194\000\000\000\000\000\000\000\000\004l\000\000\003\192\000\000\000\000\000\000\003\193\000\131\000\133\000\134\001?\000\138\003\190\003\213\000\000\000\000\000\000\000\177\000\000\003\192\000\000\000\000\000\000\003\193\000\000\000O\004l\000\000\003\192\001\165\006K\000\000\003\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\190\003\213\000\000\000\131\000\133\000\134\001s\000\138\000\140\001\213\001\228\000\000\006L\006O\005\199\005\200\000\131\000\000\000\000\001\166\000a\002\245\004\178\004\154\000\000\001B\003\190\003\213\000\000\000\177\000\000\003\192\000\000\001\167\000\000\003\193\000\000\000\000\000\000\000\000\003%\000\249\000\131\001\168\000\000\000\140\001E\002\245\004\216\004\154\000\000\003&\000\000\000O\001p\004U\000\000\000\000\004l\000\175\003\192\001\169\000\000\000\186\003\193\003\206\001\170\000\000\000\000\004Z\001\171\000\000\000\000\004[\004m\001\172\003\207\000\131\004\185\001\205\006\017\004U\003\206\005\201\004l\000\000\003\192\000\000\004]\000d\003\193\003\206\003\218\003\207\000\000\004Z\000\000\000\000\000P\004[\004m\000\000\003\207\006\018\004\187\000\000\006\021\005\199\005\200\000\000\000\000\004_\000\000\004\155\004]\004\186\000[\000\177\004u\000\000\000\000\004z\000\178\000\000\000\000\003(\000\179\000^\004\218\004\146\003\222\000\000\000\000\000\000\000\000\003\206\000\000\004_\000\000\004\155\000\131\004\186\000\000\000\000\004u\001Q\003\207\004z\003\223\001B\000\000\000\000\001[\003\224\004U\004\146\003\222\003\225\003\220\000\000\000\188\000\000\003\226\000\000\003\206\003\208\001T\000P\004Z\000\000\001E\000\000\004[\004m\003\223\003\207\005\201\004\205\001p\003\224\004U\003\190\003\213\003\225\000\000\000[\001B\004]\003\226\000O\003\206\000\000\000\000\000\000\004Z\006\157\000^\000\131\004[\004m\003\222\003\207\002\245\004\216\004\154\000\000\000\000\001E\000\000\006\237\004_\000\000\004\155\004]\004\186\001p\006\239\004u\003\223\001\148\004z\001\149\000\000\003\224\000\000\000f\000O\003\225\004\146\003\222\000\000\000\000\003\226\000\000\000\189\000\000\004_\000\000\004\155\004l\004\219\003\192\000\000\004u\000\000\003\193\004z\003\223\003\190\003\213\000\000\000\000\003\224\001\\\004\146\003\222\003\225\004\238\000\000\000\000\000\000\003\226\000f\000\190\000\131\000\000\003\190\003\211\000\000\002\245\004s\004\154\000\000\003\223\000\000\000\000\001b\000\177\003\224\001U\001\150\001V\003\225\004\220\001\151\000\000\006;\003\226\000\175\000\249\000\191\000\000\000\184\000\000\000\000\000\131\000\133\000\134\001x\000\138\000\000\000\000\000\000\000P\000\131\000\000\004l\000\175\003\192\000\192\000\000\000\176\003\193\000\000\001\160\003\190\003\213\000\000\000\000\000\000\001\164\000[\001*\000\194\000\177\000\000\003\192\000\000\000\000\000\000\003\193\000\131\000^\000\000\000\000\004U\002\245\000\140\004k\001\148\000P\001\158\006\240\000\000\006\241\003\206\000\177\000\000\000\000\004Z\000\000\000\178\000\249\004[\004m\000\179\003\207\000\000\000[\001/\000\000\000\000\000\000\000\000\000\000\000\177\000\000\000\000\004]\000^\000\178\000\000\000\000\004l\000\179\003\192\000\000\000\000\000\000\003\193\000\000\000\000\000\131\000\133\000\134\002\027\000\138\000\000\000\000\000\188\000\000\004_\000\000\004\155\001\165\004\219\000\000\000\177\004u\000\000\001\150\004z\004U\000\000\001\151\000\000\003\190\003\213\000\188\004\146\003\222\000\000\003\206\000\000\000\000\005W\004Z\000\000\000\000\004\224\004[\004m\000\131\003\207\000\140\000\000\006h\002\245\003\223\004k\003\206\000\000\000\000\003\224\000\000\004]\000\000\003\225\000\000\000\000\001\164\003\207\003\226\000\000\000\000\000\000\000\000\000\000\000\000\006f\000\000\006i\005\199\005\200\000\000\000\000\000\000\000\175\004_\000\000\004\155\000\176\004\156\000\189\004l\004u\003\192\001\169\004z\004U\003\193\000\000\000\000\003\190\003\213\000\000\004\146\003\222\001B\003\206\000\000\001\176\000\189\004Z\000\000\000\000\001\142\004[\004m\000\131\003\207\000\000\000\190\000\000\002\245\003\223\004k\000\000\000\000\001E\003\224\000\000\004\213\000\000\003\225\000\000\005g\001p\001\243\003\226\004\224\000\190\000\000\000\000\001\165\000\177\000\249\000\000\000\000\000\222\000\178\005\201\000\000\000\000\000\179\004_\000\000\004p\004\215\000\000\000\000\004l\004u\003\192\000\000\004z\000\131\003\193\000\192\000\000\003\190\003\213\000\223\004\146\003\222\002\001\000\224\000\000\000\000\001\148\000\000\001\149\000\194\000\000\000\000\000\000\000\131\002\007\000\188\000\000\004U\002\245\003\223\004k\000\000\001B\000\000\003\224\000\000\001\168\003\206\003\225\000\000\005i\004Z\000\000\003\226\004\224\004[\004m\000\175\003\207\000\000\000\000\000\176\000O\001E\001\169\000\000\000\000\000\000\000\000\001\170\004\213\001p\000\000\001\171\000\000\004l\000\000\003\192\001\172\000\000\000\000\003\193\006\237\000\000\000\177\003\190\003\213\001\150\000\000\006\247\001\148\001\151\001\149\004_\006\209\004p\004\215\000\000\000f\000\000\004u\000\131\000\000\004z\004U\000\000\002\245\004s\004\154\000\189\000\000\004\146\003\222\000\000\003\206\000\177\000\000\006\201\004Z\000\000\000\178\004\224\004[\004m\000\179\003\207\000\000\001\164\000\000\000\000\003\223\000\000\000\000\000\000\000\000\003\224\000\000\004\213\000\190\003\225\000\000\000\000\000\000\004l\003\226\003\192\000\000\000\000\000\177\003\193\000\000\001\150\003\190\003\213\000\000\001\151\000\000\000O\000\188\000\000\004_\000\000\004p\004\215\000\000\000\220\000\000\004u\000\131\000\000\004z\004U\000\000\002\245\000\000\004k\000P\000\000\004\146\003\222\000\000\003\206\000\000\000\000\000\192\004Z\000\000\000\000\000\000\004[\004m\001\164\003\207\000f\000[\002`\000\000\003\223\000\194\000\000\000\000\001\165\003\224\000\000\004\213\000^\003\225\000\000\000\000\000\000\004l\003\226\003\192\000\000\000\000\006\240\003\193\006\241\000\175\003\190\003\213\000\000\000\176\000\000\000\000\000\249\000\000\004_\007\004\004p\004\215\000\000\000\189\000\000\004u\000\131\000\000\004z\000\000\004U\002\245\004s\004\154\000\000\000\000\004\146\003\222\000\000\000\000\003\206\000\000\000\000\006\215\004Z\000\000\000\000\004\224\004[\004m\000\175\003\207\000\190\000\000\000\184\003\223\001\165\000\000\000\000\000\000\003\224\000\000\000P\004]\003\225\001\223\000\131\000\177\004l\003\226\003\192\000\000\000\178\000\000\003\193\000\000\000\179\004\233\003\190\003\213\000[\002e\000\000\000\000\000\000\000\175\004_\000\000\004\155\000\186\004\156\000^\003\018\004u\000\131\003*\004z\004U\000\192\002\245\000\000\004\154\000\000\000\000\004\146\003\222\000\000\003\206\000\177\000\000\000\188\004Z\000\198\000\178\000\000\004[\004m\000\179\003\207\000\000\000\000\000\000\000\000\003\223\000\000\000\000\000\000\000\000\003\224\001\245\004\213\000\000\003\225\000\000\000\000\000\000\004l\003\226\003\192\000\131\000\000\000\000\003\193\000\177\000O\003\190\003\213\000\000\000\178\000\000\000\177\000\188\000\179\004_\003\023\004p\004\215\004\158\003\024\000\000\004u\000\131\000\000\004z\004U\000\000\002\245\000\000\004k\000\000\000\000\004\146\003\222\000\175\003\206\000\000\000\000\001\239\004Z\000O\000f\000\000\004[\004m\000\189\003\207\000\188\000\131\000\000\000\000\003\223\000\000\002\245\000\000\000\000\003\224\000\000\004]\000\000\003\225\000\000\000\000\000\000\004l\003\226\003\192\000\000\001Q\000\000\003\193\005\235\000\000\000\000\000\190\001[\000f\000\000\000\000\000\000\000\000\004_\000\000\004\155\000\000\004\156\000\189\000\000\004u\001T\003\160\004z\000\177\004U\005\236\005\199\005\200\000\178\000\000\004\146\003\222\000\179\000\000\003\206\000\000\000\000\000\000\004Z\000\000\001\142\000\000\004[\004m\000\000\003\207\000\190\000\000\003%\003\223\000P\000\192\000\189\000\000\003\224\003\190\003\213\004\235\003\225\003&\000\000\000\000\002\t\003\226\000\000\000\200\000\188\004j\000[\002\193\000\249\000\131\000\000\000\222\000\000\000\000\002\245\000\000\004k\000^\004_\000\190\004\155\000\000\004\237\000P\000\000\004u\000\000\000\000\004z\004U\000\192\000\000\000\000\005\201\000\223\000\000\004\146\003\222\000\224\003\206\000\000\000[\002\198\004Z\000\194\001\\\000\191\004[\004m\000\000\003\207\004l\000^\003\192\000\000\003\223\000\000\003\193\000\000\005\235\003\224\000\000\004n\000\000\003\225\000\192\000\000\000\000\003\133\003\226\001\162\001U\000\000\001V\004m\000\000\000\000\000\000\000\189\000\194\000\000\000\249\005\236\005\199\005\200\004_\000\000\004p\004q\000\000\000\000\000\000\004u\000\000\000\000\004z\003\190\003\213\000\000\000\000\000\000\000\000\000\000\004\146\003\222\000\000\000\000\000\190\004t\003\190\003\213\000\000\000\131\005\139\000\000\000\000\000\000\002\245\004u\004k\000\000\004z\003\223\000\000\000\000\000\131\005\235\003\224\000\000\004\146\002\245\003\225\004k\000\000\000\000\001\148\003\226\001\149\000\000\005\235\000\000\000\000\000\000\001\148\000\000\001\158\005\239\004U\000\000\005\236\005\199\005\200\005\201\000\000\004l\000\000\003\192\003\206\006e\000\131\003\193\004Z\005\236\005\199\005\200\004[\004m\004l\003\207\003\192\000\000\000\000\000\000\003\193\000\000\000\175\000\000\000\000\000\000\000\186\004n\006f\000\000\006i\005\199\005\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\177\000\175\000\000\001\150\001\148\000\176\001\149\001\151\000\177\000\000\004_\001\150\004p\004q\000\000\001\151\000\000\004u\000\000\000\000\004z\003\190\003\213\000\000\000\000\000\000\005\201\000\000\004\146\003\222\000\000\000\131\000\133\000\134\002x\000\138\000\000\000\131\000\000\005\201\000\177\000\000\002\245\001\164\004k\000\178\001\212\003\223\000\000\000\179\000\000\001\164\003\224\001\148\000\000\001\225\003\225\004U\000\000\000\177\005\201\003\226\000\177\000\000\000\178\001\150\000\000\003\206\000\179\001\151\004U\004Z\005\242\000\140\000\000\004[\004m\000\000\003\207\004l\003\206\003\192\000\000\000\188\004Z\003\193\000\000\000\000\004[\004m\004n\003\207\000\131\000\133\000\134\002\135\000\138\004\189\000\000\000\000\000\000\000\000\000\188\004\182\000\000\001\164\000\000\000\000\001\148\000\000\001\224\000\177\000\000\004_\001\150\004p\004q\001\165\001\151\000\000\004u\000\000\000\000\004z\000\000\001\165\004_\000\000\004p\004\184\000\000\004\146\003\222\004u\000\140\000\000\004z\003\190\003\213\005\248\000\000\000\000\000\000\000\000\004\146\003\222\001\213\001\214\000\000\000\000\003\223\000\000\005\246\000\131\001\164\003\224\001\166\000\189\002\245\003\225\004k\003\190\003\210\003\223\003\226\000\000\000\177\000\000\003\224\001\150\001\167\006\145\003\225\001\151\000\000\004U\000\189\003\226\000\249\001\165\001\168\000\000\000\000\000\000\000\000\003\206\000\190\000\000\000\000\004Z\001\169\000\000\000\000\004[\004m\004l\003\207\003\192\001\169\003\190\003\213\003\193\004\181\001\170\001\178\000\190\000\000\001\171\004\182\001\164\000\000\000\000\001\172\000\191\001B\000\131\001\205\000\000\000\000\000\177\002\245\003\192\004k\000\000\000\000\003\193\000\000\000\000\001\165\000\000\005\235\004_\000\192\004p\004\184\001E\000\000\003\215\004u\000\000\000\000\004z\001\148\001p\001\149\000\000\000\194\000\000\000\000\004\146\003\222\000\192\001\169\005\236\005\199\005\200\000\000\004l\000\000\003\192\000\000\000\000\000\000\003\193\000\000\000\202\001\180\000\000\003\223\003\190\003\213\000\000\000\000\003\224\001\148\001B\001\149\003\225\000\000\000\000\000\000\000\000\003\226\001\165\000\000\000\131\003\018\000\000\000\000\003\022\002\245\004U\004k\000\000\000\000\000\000\001E\000\000\003\190\003\213\000\177\003\206\000\000\001\150\001p\004Z\000\000\001\151\000\000\004[\004m\000\000\003\207\000\000\000\131\000\000\000\000\004\201\000\000\002\245\001\148\004k\001\149\005\201\004\202\003\206\000\000\004l\000\000\003\192\003\190\003\209\000\177\003\193\000\000\001\150\003\207\000\000\000\175\001\151\000\000\000\000\000\186\001\164\000\177\005\235\000\000\004_\003\023\004p\004\204\000\000\003\024\004U\004u\000\000\004l\004z\003\192\000\000\000\000\000\000\003\193\003\206\000\000\004\146\003\222\004Z\005\236\005\199\005\200\004[\004m\004\212\003\207\001\164\000\000\000\000\000\177\000\000\004\199\001\150\000\000\005\235\003\223\001\151\004\182\000\000\000\177\003\224\003\192\000\000\000\000\003\225\003\193\000\000\000\177\000\000\003\226\003\190\003\213\000\178\004\217\000\000\000\000\000\179\005\236\005\199\005\200\004_\006\205\004p\004\184\000\000\000\000\000\131\004u\001\165\000\000\004z\002\245\001\164\004k\004U\000\000\000\000\003\018\004\146\003\222\003\022\000\000\000\000\000\000\003\206\000\000\000\000\006\005\004Z\005\201\000\188\000\000\004[\004m\000\000\003\207\000\000\003\223\000\000\000\000\001\165\003%\003\224\004U\000\000\000\000\003\225\004\213\004l\000\000\003\192\003\226\003&\003\206\003\193\000\000\000\000\004Z\000\000\000\000\000\000\004[\004m\000\131\003\207\000\000\003\018\005\201\002\245\003\022\004_\000\000\004p\004\215\000\000\003?\004\213\004u\000\000\003\023\004z\001\169\000\000\003\024\000\000\003\206\001\165\000\000\004\146\003\222\000\175\000\000\000\000\000\000\000\176\001\182\003\207\000\000\000\000\004_\000\000\004p\004\215\000\000\000\189\003\160\004u\003\223\000\000\004z\003r\000\000\003\224\001\169\003\190\003\213\003\225\004\146\003\222\000\000\000\000\003\226\000\000\000\000\000\177\006\217\003I\001\184\003\023\000\000\000\131\000\000\003\024\000\190\000\000\002\245\003\223\004k\000\000\000\000\003R\003\224\006\003\000\000\004U\003\225\000\000\000\000\000\177\000\000\003\226\000\000\000\000\000\178\003\206\000\000\000\000\000\179\004Z\001\169\000\191\000\000\004[\004m\000\000\003\207\003A\000\000\000\000\000\000\000\000\000\000\004l\001\186\003\192\000\000\000\000\006\206\003\193\000\192\006\001\003%\003s\003g\003\217\003\190\003\213\000\000\000\000\003D\000\000\000\188\003&\000\194\000\000\000\000\006\220\005c\000\000\000\000\004_\000\131\004p\006\208\000\000\000\000\002\245\004u\004k\005\235\004z\003u\006\017\003\190\003\191\000\000\000\000\003j\004\146\003\222\004m\000\175\000\000\000\000\003G\000\176\000\000\000\000\000\000\000\000\003%\000\000\005\236\005\199\005\200\006\018\000\000\003\223\006\021\005\199\005\200\003&\003\224\004l\000\000\003\192\003\225\000\000\000\000\003\193\000\000\003\226\000\000\003\190\003\213\000\000\000\000\000\000\000\000\005b\000\000\000\000\000\000\000\000\004u\000\189\003I\004z\004U\000\131\000\000\000\177\000\000\003\192\004\252\004\146\000\000\003\193\003\206\000\177\003J\000\000\004Z\001\148\000\178\001\158\004[\004m\000\179\003\207\000\000\000\000\000\175\000\000\000\190\000\000\000\184\000\000\005\027\000\131\000\000\006\206\005\201\000\000\000\000\000\000\006\175\000\000\005\201\000\000\000\000\005\030\000\000\003\192\000\000\003I\000\000\003\193\000\000\000\000\000\000\000\000\000\188\000\000\004_\000\000\004p\006\208\000\000\003T\000\000\004u\000\000\000\000\004z\000\000\005$\000\000\000\000\004U\000\192\000\177\004\146\003\222\001\150\000\000\003\190\003\213\001\151\003\206\000\177\000\000\000\000\004Z\000\204\000\178\000\000\004[\004m\000\179\003\207\003\223\000\131\003\190\003\191\000\000\003\224\004\252\000\000\000\000\003\225\005I\006\206\000\000\003\218\003\226\000\238\003\206\000\000\001\212\000\000\000\000\000\000\000\000\001\164\000\000\000\000\000\000\003\207\003\018\000\000\005M\003)\000\188\000\000\004_\000\189\004p\006\208\000\000\000\000\000\000\004u\000\000\005\030\004z\003\192\000\000\000\000\000\000\003\193\000\000\000\000\004\146\003\222\006\028\000\000\003\206\006\127\000\000\000\000\000\177\000\000\003\192\000\000\000\190\005%\003\193\003\207\005$\000\000\000\000\003\223\003\190\003\213\000\000\000\000\003\224\000\000\000\000\005K\003\225\003\252\001\148\000\000\001\158\003\226\000\177\000\000\000\131\000\000\003\023\000\000\000\000\004\252\003\024\000\000\000\000\001\165\000\131\003\223\000\000\000\000\000\000\000\000\000\000\000\000\000\189\000\000\000\000\005(\000\192\000\000\005L\003\226\000\000\000\000\000\000\005\029\001\213\003\028\005?\003\222\003\190\003\191\000\206\000\000\000\000\000\000\001\166\006\176\005\030\000\000\003\192\000\000\000\000\000\190\003\193\000\000\000\000\003\223\000\177\000\000\001\167\001\150\003\224\000\000\000\000\001\151\003\225\003\206\000\249\000\000\001\168\003\226\000\000\005$\000\000\001\148\005%\001\158\003\207\000\000\000\222\000\000\000\000\000\000\003\206\000\000\000\000\000\000\001\169\000\000\005&\000\131\000\000\001\170\000\000\003\207\001\212\001\171\000\177\000\192\003\192\001\164\001\172\000\223\003\193\000\000\001\205\000\224\000\000\000\000\003%\000\175\000\000\000\194\000\000\000\176\000\000\000\000\000\000\000\000\005(\003&\000\175\005-\005\235\001\148\000\176\001\158\000\000\000\000\000\000\005?\003\222\000\177\000\000\000\000\001\150\001\148\000\000\001\158\001\151\000\131\000\175\000\000\000\000\000\000\000\176\005\236\005\199\005\200\003\223\000\000\000\000\000\131\003\206\003\224\000\000\000\000\000\000\003\225\000\000\000\000\000\000\005%\003\226\003\207\000\000\003\223\000\000\000\177\000\000\001\212\000\000\000\000\000\178\001\165\001\164\005&\000\179\000\000\000\177\003\230\000\000\000\177\000\000\000\178\001\150\000\000\000\000\000\179\001\151\001\148\000\000\001\149\000\000\000\177\001\213\003\197\001\150\000\000\000\177\000\000\001\151\000\000\003\206\000\178\001\166\005(\000\000\000\179\005-\000\000\000\188\000\000\000\000\003\207\000\000\005\201\005?\003\222\001\167\001\212\000\000\000\188\000\000\000\000\001\164\000\000\000\249\000\000\001\168\000\000\000\000\001\212\000\000\000\000\000\000\003\223\001\164\000\000\000\000\000\000\003\224\000\188\003\190\003\213\003\225\000\000\001\169\000\177\001\165\003\226\001\150\001\170\000\000\000\000\001\151\001\171\000\000\000\000\003\190\003\213\001\172\000\000\000\000\005\235\001\205\004N\005d\000\000\000\000\001\213\004W\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\166\000\000\004N\004\175\000\000\000\189\003\223\005\236\005\199\005\200\000\000\001\164\000\000\000\000\001\167\000\000\000\189\000\000\000\000\001\165\003\232\003?\000\249\003\192\001\168\000\000\000\000\003\193\000\000\000\000\000\000\001\165\000\000\000\000\000\190\000\000\000\189\003?\000\000\003\192\001\213\004w\001\169\003\193\000\000\000\190\005\235\001\170\000\000\006'\001\166\001\171\001\213\005*\000\000\000\000\001\172\000\000\000\000\000\000\001\205\000\000\001\166\000\000\001\167\000\190\003\190\003\213\000\000\005\236\005\199\005\200\000\249\000\131\001\168\000\000\001\167\005\201\000\000\000\000\000\192\000\000\000\000\000\000\000\249\001\165\001\168\000\000\000\000\004N\004\165\000\192\001\169\000\000\000\208\000\000\000\000\001\170\000\000\000\000\000\000\001\171\000\131\000\000\001\169\000\210\001\172\002\245\000\000\001\170\001\205\000\192\000\000\001\171\000\000\000\000\000\000\004U\001\172\000\000\000\000\000\000\001\205\000\000\003?\000\212\003\192\003\206\000\000\000\000\003\193\004Z\000\000\004U\000\000\004[\003\190\003\213\003\207\005\201\000\000\001Q\000\000\003\206\003\160\000\000\000\000\004Z\001[\000\000\004]\004[\000\000\000\000\003\207\000\000\000\000\000\000\001\169\004N\004O\000\000\001T\000\000\000\000\000\000\004]\003\018\000\000\000\000\003\022\000\000\001\188\004_\000\131\000\133\000\134\002\140\000\138\003\190\003\213\000\131\000\000\000\000\000\000\000\000\002\245\000\000\000\000\004_\006,\000\000\003\222\000\000\003?\000\000\003\192\000\000\000\000\000\000\003\193\000\000\004N\004Y\003\190\003\213\000\000\000\000\003\222\000\000\003\223\000\000\000\000\000\000\000\000\003\224\000\140\000\000\000\000\003\225\004U\000\000\000\000\003\160\003\226\000\177\003\223\004N\004\177\003\023\003\206\003\224\000\000\003\024\004Z\003\225\000\000\003?\004[\003\192\003\226\003\207\005\235\003\193\001\148\000\000\001\158\000\000\000\000\001\\\000\000\000\000\006>\004]\000\000\000\000\000\000\003\190\003\213\004m\000\131\000\000\003?\005\235\003\192\005\236\005\199\005\200\003\193\000\000\003\190\003\213\003\143\000\000\000\000\001U\004_\001V\000\000\000\000\004N\005}\000\000\000\000\000\000\000\249\005\236\005\199\005\200\000\000\004U\000\000\000\000\004N\005\127\003\222\000\000\000\000\005\141\000\000\003\206\000\000\000\177\004u\004Z\001\150\004z\000\000\004[\001\151\000\000\003\207\000\000\003\223\004\146\003?\000\000\003\192\003\224\000\000\000\000\003\193\003\225\004]\000\000\000\000\000\000\003\226\003?\000\000\003\192\003%\000\000\004U\003\193\005\201\000\000\000\000\004m\000\000\001\227\003\018\003&\003\206\003\022\001\164\004_\004Z\001\148\000\000\001\158\004[\000\000\000\000\003\207\000\000\005\201\001B\004U\000\000\000\000\000\000\000\000\000\000\000\131\003\222\004]\000\000\003\206\000\000\000\000\000\000\004Z\000\000\000\000\000\000\004[\005\143\001E\003\207\000\000\000\000\004u\003\223\000\000\004z\001p\000\000\003\224\004_\000\000\004]\003\225\004\146\003\190\003\213\000\000\003\226\000\000\000\177\000\000\000\000\000\000\003\023\000\000\000\000\000\177\003\024\003\222\001\150\000\000\004U\000\000\001\151\004_\000\000\003I\004N\005\129\001\165\000\000\003\206\000\000\000\000\004U\004Z\003\223\000\000\000\000\004[\003V\003\224\003\207\003\222\003\206\003\225\000\000\001\148\004Z\001\158\003\226\000\000\004[\000\000\004]\003\207\000\000\000\000\006G\001\164\001\166\003\223\003?\000\131\003\192\000\000\003\224\004]\003\193\000\000\003\225\000\000\006e\000\000\001\167\003\226\000\000\004_\000\000\006E\000\000\000\000\000\249\000\000\001\168\000\000\003\190\003\191\000\000\000\000\004_\000\000\000\000\000\000\000\000\006f\003\222\006i\005\199\005\200\000\000\001\148\001\169\001\158\000\000\000\177\000\000\001\170\001\150\003\222\000\000\001\171\001\151\000\000\003\223\003%\001\172\000\131\000\000\003\224\001\205\000\000\001\148\003\225\001\158\000\000\003&\003\223\003\226\000\000\000\000\000\000\003\224\001\165\000\000\000\000\003\225\000\000\000\131\000\000\000\000\003\226\000\000\001\163\000\177\000\000\003\192\000\000\001\164\000\000\003\193\003\018\003\190\003\213\003\022\000\000\000\000\000\000\004U\000\177\000\000\000\000\001\150\000\000\001\166\000\000\001\151\005\201\003\206\001\148\000\000\001\149\004Z\000\000\000\000\004\168\004[\000\000\001\167\003\207\000\177\000\000\000\000\001\150\000\000\001\208\000\249\001\151\001\168\000\000\000\000\004]\000\000\000\000\000\000\000\000\000\000\001\207\000\000\000\000\003'\000\175\001\164\000\000\000\000\000\176\001\169\000\000\000\000\000\177\003?\001\170\003\192\003\023\004_\001\171\003\193\003\024\001\211\000\000\001\172\000\175\001\165\001\164\001\209\000\184\000\000\000\177\000\000\000\000\001\150\000\000\000\000\003\222\001\151\000\000\000\175\000\131\000\000\000\000\000\184\000\000\000\000\000\131\000\133\000\134\002\214\000\138\000\000\000\000\003\206\003\223\000\131\001\166\003\190\003\191\003\224\000\000\000\000\000\177\003\225\003\207\000\000\000\000\000\178\003\226\006e\001\167\000\179\000\000\001\164\000\000\000\000\000\000\000\000\000\249\001\165\001\168\006\148\000\177\000\000\000\000\000\000\000\000\000\178\000\140\000\000\000\000\000\179\006f\000\000\006i\005\199\005\200\000\177\001\169\000\000\001\165\000\000\000\178\001\170\000\175\000\188\000\179\001\171\000\184\004U\001\166\000\000\001\172\000\000\000\000\000\177\001\205\003\192\003%\003\206\000\131\003\193\000\000\004Z\001\167\000\188\000\000\004[\000\000\003&\003\207\001\166\000\249\000\000\001\168\003\018\003\223\000\000\003\022\000\000\000\188\000\000\004]\000\000\000\000\001\167\000\000\001\165\000\000\000\000\003\234\000\000\001\169\000\249\000\000\001\168\000\000\001\170\000\000\000\000\000\000\001\171\000\177\000\000\005\201\004_\001\172\000\178\000\000\000\000\001\205\000\179\000\175\001\169\000\000\000\000\000\184\000\000\001\170\000\189\000\000\000\000\001\171\000\000\003\222\000\000\000\000\001\172\000\131\000\000\000\175\001\205\000\000\000\177\000\184\000\000\000\000\003\023\000\000\000\189\000\000\003\024\003\223\003I\000\000\000\188\000\131\003\224\000\190\000\000\000\000\003\225\000\000\000\000\000\189\000\000\003\226\003X\000\000\000\000\001\169\003\206\001\240\000\000\000\000\000\000\000\000\000\175\000\190\001B\000\177\000\184\003\207\000\000\001\190\000\178\000\000\003\001\000\000\000\179\000\000\000\000\000\000\000\190\002\015\000\000\000\000\000\000\000\177\000\000\001E\000\000\000\249\000\178\000\192\000\222\000\000\000\179\001p\003\003\000\000\000\000\000\000\003\018\000\000\000\000\003\022\000\249\000\214\000\000\000\222\000\000\000\000\000\188\000\192\006\155\000\000\000\000\000\223\000\189\000\000\000\000\000\224\000\000\000\000\000\177\000\000\000\000\000\194\000\192\000\178\000\188\000\175\000\223\000\179\000\000\000\184\000\224\000\000\003%\000\000\000\000\003\001\000\194\003\223\000\000\000\000\002\018\000\190\000\000\003&\000\000\000\000\001\148\000\000\001\149\000\000\000\000\003\236\000\000\000\000\003?\000\000\000\000\003\020\003\023\000\000\000\000\000\188\003\024\000\000\000\000\000\249\003\018\000\000\000\222\003\022\000\000\000\000\000\131\000\133\000\134\002\220\000\138\000\000\000\131\000\000\000\189\000\000\000\000\000\177\000\000\000\000\000\000\000\192\000\178\003r\000\000\000\223\000\179\000\000\000\000\000\224\000\000\000\000\000\189\000\000\000\000\000\194\000\000\003\174\000\177\000\218\000\000\001\150\000\000\000\190\000\000\001\151\000\175\000\000\000\140\000\000\000\184\003I\000\000\000\000\000\000\003\174\000\000\000\000\000\177\003\176\000\188\000\190\003\023\000\000\000\175\003Z\003\024\000\249\000\184\000\189\000\222\000\000\000\131\000\133\000\134\002\225\000\138\004\004\000\000\003A\001Q\001\164\000\175\000\000\000\000\000\249\000\184\001[\000\222\000\192\000\000\000\000\000\221\000\223\003%\006\211\003g\000\224\000\190\000\000\000\000\001T\003D\000\194\000\177\003&\000\000\000\192\000\000\000\178\000\000\000\223\000\000\000\179\000\140\000\224\000\000\000\000\000\000\000\175\000\000\000\194\000\177\000\176\003u\000\222\001\196\000\178\000\000\000\000\003j\000\179\000\000\003\018\000\189\000\000\003\022\003G\000\000\000\000\000\177\000\000\003\190\003\191\000\192\000\178\000\000\000\188\000\223\000\179\000\000\000\000\000\224\000\000\000\000\001\165\000\000\000\221\000\194\000\000\000\000\000\000\000\000\000\190\003%\000\188\000\000\003\018\000\000\000\000\003\022\000\000\000\000\000\000\000\175\003&\000\000\000\177\000\184\003I\000\000\000\000\000\178\000\188\000\000\000\000\000\179\000\000\001\\\001B\000\222\000\177\000\000\003J\000\000\003\023\000\000\000\000\000\000\003\024\000\177\000\000\003\192\000\000\002\254\000\000\003\193\000\000\000\000\000\192\001E\004\129\000\000\000\223\001U\000\000\001V\000\224\001p\000\000\000\188\000\189\000\000\000\194\000\249\003?\000\000\003\018\001\169\003\023\003\022\003x\000\177\003\024\000\000\000\000\000\000\000\178\000\000\000\189\000\000\000\179\001\192\000\000\000\221\003\018\000\000\000\000\003\022\003I\000\190\000\000\000\000\000\000\000\000\001B\000\000\000\189\000\000\000\000\003@\000\000\003<\003\\\000\000\000\000\000\000\000\000\000\190\000\000\000\000\000\000\000\000\000\000\000\000\000\188\001E\000\222\000\000\000\000\000\240\000\000\000\000\000\000\001p\003?\000\190\000\175\000\000\003\023\000\000\000\184\000\000\003\024\000\189\000\222\000\192\003%\000\000\003\018\000\223\000\000\003\022\003?\000\224\000\000\003\206\003\023\003&\000\000\000\194\003\024\000\000\000\222\000\192\000\000\003A\003\207\000\223\000\000\003i\000\000\000\224\000\190\000\000\000\000\000\000\000\000\000\194\000\000\000\000\003%\000\192\003g\000\000\000\000\000\223\000\000\003m\003D\000\224\003:\003&\000\000\000\000\000\177\000\194\000\000\000\000\000\189\000\178\000\000\000\175\000\000\000\179\000\175\000\184\003?\000\000\000\184\000\000\003\023\000\000\000\000\000\000\003\024\000\000\003j\000\000\000\192\000\000\000\000\003<\000\000\003G\000\000\003A\000\175\000\190\003\190\003\191\000\184\003I\000\216\000\000\000\000\000\000\000\000\000\188\003\223\000\000\003%\003p\003g\003A\000\000\003^\000\175\000\000\003D\000\000\000\184\003&\003\238\000\000\000\222\000\000\000\000\000\000\003%\000\177\003g\000\000\000\177\000\000\000\178\003I\003D\000\178\000\179\003&\000\000\000\179\000\000\000\192\000\175\000\000\003j\000\223\000\184\003J\000\000\000\224\000\000\003G\000\177\000\000\000\177\000\194\003\192\000\178\000\000\000\000\003\193\000\179\003j\000\000\000\000\003A\000\000\000\000\000\000\003G\000\188\003\137\000\177\000\188\000\000\003\018\000\000\000\178\003\022\000\189\003%\000\179\003g\000\000\001\148\000\000\001\149\000\000\003D\000\000\000\000\003&\000\000\003I\003\250\000\188\000\000\000\000\000\000\000\000\000\177\000\000\003<\005\235\000\000\000\178\000\000\003J\000\190\000\179\000\000\003I\000\000\000\000\000\175\000\188\003j\000\000\000\184\000\000\003\190\003\191\004/\003G\000\000\003J\005\236\005\199\005\200\000\000\000\175\000\000\000\000\000\177\000\184\000\222\003\148\003\023\000\000\003\156\000\000\003\024\000\177\000\188\000\189\001\150\000\175\000\189\000\000\001\151\000\184\000\000\000\000\000\000\000\192\000\000\003\190\003\191\000\223\000\000\003\206\003\163\000\224\000\000\000\000\003I\000\000\003<\000\194\000\189\003<\003\207\000\177\000\190\000\000\000\000\000\190\000\178\000\177\003J\003\192\000\179\000\000\000\000\003\193\001\164\000\000\000\000\000\177\000\189\000\000\000\000\003<\000\178\0041\000\000\005\201\000\179\000\190\000\000\000\222\000\000\000\000\000\222\000\177\000\000\000\000\000\175\000\000\000\178\0043\000\184\000\221\000\179\000\177\000\188\003\192\000\189\000\190\000\192\003\193\000\000\000\192\000\223\000\175\000\222\000\223\000\224\000\184\000\000\000\224\000\188\000\000\000\194\000\000\000\000\000\194\000\000\000\000\003%\000\221\000\000\000\000\003\223\000\192\000\222\000\190\000\188\000\223\000\000\003&\000\000\000\224\000\000\000\131\000\000\000\175\003\240\000\194\001\165\000\184\000\000\000\000\000\000\000\192\000\177\000\000\000\000\000\223\000\000\000\178\000\000\000\224\000\222\000\179\000\000\000\000\000\000\000\194\000\000\000\000\000\000\000\177\000\000\003\206\000\000\000\000\000\178\000\000\000\189\000\000\000\179\000\192\000\000\000\000\003\207\000\223\000\000\000\000\000\000\000\224\000\000\000\000\000\000\000\000\000\189\000\194\000\000\000\188\006}\000\000\000\000\000\221\004\133\000\177\000\000\000\000\000\000\000\190\000\178\003\206\000\189\001Q\000\179\003I\000\188\000\000\000\000\000\221\001[\000\000\003\207\001\169\000\000\000\190\000\000\000\000\000\000\003`\000\000\000\000\000\000\000\000\001T\003<\000\222\001\194\000\000\000\000\000\175\000\190\000\175\000\000\000\184\000\000\000\184\000\000\000\188\000\000\000\000\000\000\000\222\000\175\000\000\000\192\000\000\000\184\003\223\000\223\000\175\000\000\000\000\000\224\000\184\004\142\000\000\000\000\000\222\000\194\000\000\000\192\003\242\000\189\000\000\000\223\000\000\000\000\000\000\000\224\000\000\000\000\004\150\000\000\000\000\000\194\000\000\000\192\000\000\000\000\000\189\000\223\000\000\000\000\003\223\000\224\003<\000\000\000\177\000\000\000\177\000\194\000\190\000\178\000\000\000\178\000\000\000\179\003\244\000\179\005\235\000\177\000\000\003<\005\001\000\000\000\178\000\000\000\177\000\190\000\179\001\\\000\189\000\178\000\000\000\000\000\000\000\179\000\000\000\222\000\000\000\000\000\000\005\236\005\199\005\200\000\000\000\000\000\000\000\000\000\000\000\188\000\000\000\188\004\137\003<\000\222\001U\000\192\001V\000\000\000\190\000\223\000\000\000\188\000\175\000\224\000\249\000\000\000\184\000\000\000\188\000\194\000\000\000\000\000\192\000\175\000\175\000\000\000\223\000\184\000\184\000\000\000\224\000\000\000\000\000\000\000\000\000\222\000\194\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\175\000\000\000\000\000\000\000\184\000\192\000\000\000\000\000\000\000\223\000\000\005\201\000\000\000\224\007\019\005\r\000\000\005\018\000\000\000\194\000\000\000\177\000\000\000\189\000\000\000\189\000\178\000\000\005\025\000\000\000\179\000\000\000\177\000\177\000\000\005\"\000\189\000\178\000\178\000\000\000\000\000\179\000\179\000\189\000\000\000\000\003<\000\000\003<\000\000\000\000\000\000\000\190\000\000\000\190\000\000\000\000\000\000\000\177\003<\000\000\000\000\000\000\000\178\000\188\000\190\003<\000\179\000\000\000\000\000\175\000\000\000\190\000\175\000\184\000\188\000\188\000\184\000\000\000\222\000\000\000\222\000\000\000\000\000\000\000\175\000\000\000\000\000\000\000\184\000\000\000\000\000\222\000\000\000\000\000\000\000\000\000\000\000\192\000\222\000\192\000\188\000\223\000\000\000\223\000\000\000\224\000\000\000\224\000\000\000\000\000\192\000\194\000\000\000\194\000\223\000\000\000\000\000\192\000\224\000\000\000\000\000\223\000\000\006\130\000\194\000\224\000\000\000\177\000\000\0058\000\177\000\194\000\178\000\000\000\000\000\178\000\179\000\189\000\000\000\179\005=\005D\000\177\000\000\000\000\000\000\000\000\000\178\000\189\000\189\000\175\000\179\000\000\000\000\001\238\000\000\000\000\000\000\000\000\000\000\003<\000\000\000\000\000\000\000\000\000\000\000\190\000\000\000\000\000\000\000\188\003<\003<\000\188\000\189\000\000\000\175\000\190\000\190\000\000\000\184\000\000\000\000\000\175\000\000\000\188\000\000\000\184\000\000\000\000\000\000\000\000\000\000\000\222\000\000\000\000\003\018\006\176\000\175\003\022\000\000\000\000\000\184\000\190\000\222\000\222\000\000\000\000\000\177\000\000\000\000\000\175\000\192\000\178\000\000\000\184\000\223\000\179\000\000\000\000\000\224\000\000\000\000\000\192\000\192\000\000\000\194\000\223\000\223\000\000\000\222\000\224\000\224\000\000\000\177\000\000\000\000\000\194\000\194\000\178\000\000\000\177\000\000\000\179\000\189\000\000\000\178\000\189\000\000\000\192\000\179\000\188\000\000\000\223\000\177\000\000\000\177\000\224\003\023\000\189\000\000\000\178\003\024\000\194\000\000\000\179\000\000\000\242\000\000\000\177\001\217\000\000\000\000\000\190\000\178\000\000\000\190\000\188\000\179\000\000\000\000\000\000\001\231\000\175\000\188\000\000\000\000\000\184\000\190\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\175\000\188\000\222\000\000\000\184\000\222\000\000\000\175\000\000\000\000\000\000\000\184\000\000\000\000\000\188\000\000\000\000\000\222\000\000\000\000\001\148\000\192\001\149\000\000\000\192\000\223\000\000\000\189\000\223\000\224\000\000\000\000\000\224\000\000\000\000\000\194\000\192\000\000\000\194\000\000\000\223\000\000\000\000\000\177\000\224\000\000\000\000\000\175\000\178\000\000\000\194\000\184\000\179\000\189\000\000\000\000\000\190\000\000\000\177\000\000\000\189\000\000\003%\000\178\000\000\000\177\000\000\000\179\000\000\000\000\000\178\000\000\000\000\003&\000\179\000\189\001\253\000\000\000\177\000\000\000\000\001\150\000\190\002\235\000\000\001\151\000\188\000\000\000\189\000\190\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\239\000\000\000\000\000\188\000\000\000\000\000\190\000\177\000\000\000\000\000\188\000\222\000\178\003\031\000\000\000\000\000\179\000\000\000\222\000\190\000\175\000\000\000\000\001\164\000\184\000\000\000\000\000\000\000\000\000\000\000\192\000\175\000\000\000\222\000\223\000\184\000\000\000\192\000\224\000\000\000\000\000\223\000\000\000\000\000\194\000\224\000\222\000\000\000\000\003I\000\188\000\194\000\192\000\000\000\000\000\000\000\223\000\000\000\000\000\000\000\224\000\000\000\189\003b\000\000\000\192\000\194\000\175\000\175\000\223\000\000\000\184\000\184\000\224\000\000\000\000\000\000\000\189\000\177\000\194\000\000\000\000\000\000\000\178\000\189\003.\000\000\000\179\000\000\000\177\000\000\000\190\000\000\000\000\000\178\000\000\000\000\001\165\000\179\000\000\0030\000\000\000\000\000\000\000\000\000\000\000\190\003\200\000\000\000\000\000\000\000\000\000\000\000\190\000\000\000\000\000\175\000\000\000\222\000\000\000\184\000\188\000\000\000\000\000\189\000\177\000\177\000\000\000\000\000\000\000\178\000\178\000\188\000\222\000\179\000\179\000\000\000\192\000\175\000\000\000\222\000\223\000\184\000\000\000\000\000\224\000\000\004\t\000\000\000\000\000\000\000\194\000\192\000\190\000\000\000\000\000\223\000\000\000\175\000\192\000\224\000\000\000\184\000\223\000\000\000\000\000\194\000\224\000\188\000\188\001\169\000\000\000\000\000\194\000\177\000\000\000\000\000\000\000\175\000\178\000\222\000\000\000\184\000\179\001\200\000\000\000\000\000\000\000\000\000\175\000\000\000\000\000\000\000\184\000\000\000\189\000\177\000\000\000\000\000\192\000\175\000\178\000\000\000\223\000\184\000\179\000\189\000\224\000\000\000\000\000\000\000\000\000\000\000\194\000\000\000\000\000\177\000\188\004\014\000\000\000\000\000\178\000\000\000\000\000\190\000\179\000\000\000\000\000\000\004\018\000\000\000\000\000\000\000\000\000\000\000\190\000\177\000\000\000\000\000\188\000\000\000\178\000\189\000\189\001\148\000\179\001\149\000\177\000\000\000\000\000\000\000\222\000\178\000\000\000\000\000\000\000\179\000\000\000\177\000\188\000\000\000\000\000\222\000\178\000\000\004'\004R\000\179\000\000\000\000\000\192\000\190\000\190\000\000\000\223\000\000\000\175\000\000\000\224\000\188\000\184\000\192\000\000\000\000\000\194\000\223\000\000\000\000\000\000\000\224\000\188\000\189\000\000\000\000\000\000\000\194\000\175\000\000\000\222\000\222\000\184\000\188\000\177\000\000\000\000\001\150\000\000\000\000\000\000\001\151\000\000\000\000\000\000\000\189\004\244\000\000\000\000\000\192\000\192\000\000\000\190\000\223\000\223\000\000\000\000\000\224\000\224\000\000\000\000\000\000\000\000\000\194\000\194\000\189\000\177\000\000\005[\000\000\000\000\000\178\000\000\000\000\000\190\000\179\000\000\001\164\000\000\000\222\000\175\000\000\000\000\000\000\000\176\000\189\000\177\000\000\005o\000\000\000\000\000\178\000\000\000\000\000\190\000\179\000\189\000\000\000\192\000\175\000\000\000\222\000\223\000\176\000\000\000\131\000\224\000\189\005q\000\188\000\000\000\000\000\194\000\000\000\190\000\000\000\000\000\000\000\000\005s\000\192\000\222\000\000\000\000\000\223\000\190\000\000\000\000\000\224\000\188\005y\003\190\003\191\000\000\000\194\000\175\000\190\000\000\000\177\000\176\000\192\000\222\000\000\000\178\000\223\000\000\000\000\000\179\000\224\003\190\003\191\001\165\000\222\001\148\000\194\001\149\000\000\000\177\000\000\000\000\000\192\000\000\000\178\000\222\000\223\000\000\000\179\003\018\000\224\000\000\003\022\000\192\000\000\001Q\000\194\000\223\000\000\003\190\003\191\000\224\001[\000\188\000\192\000\189\003\018\000\194\000\223\003\022\000\000\000\177\000\224\003\192\000\000\000\177\001T\003\193\000\194\000\000\000\178\000\000\000\188\000\131\000\179\000\189\000\000\000\000\005\135\000\177\000\000\003\192\000\000\000\177\000\190\003\193\001\150\003\190\003\191\000\000\001\151\000\000\000\000\000\000\000\000\000\000\001\169\000\177\005\149\003\190\003\191\003\023\000\000\000\000\000\190\003\024\000\000\000\177\000\188\003\192\001\202\000\222\000\000\003\193\000\177\000\000\000\000\000\000\003\023\000\000\000\000\000\000\003\024\000\000\000\000\000\000\001\164\000\189\000\000\000\000\000\192\000\222\000\000\000\000\000\223\000\000\000\000\000\000\000\224\000\000\000\000\001Q\000\000\000\000\000\194\000\177\000\189\003\192\001[\000\000\000\192\003\193\000\000\001\\\000\223\000\000\000\190\000\177\000\224\003\192\000\000\000\000\001T\003\193\000\194\000\000\000\000\003\206\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\190\005\t\000\000\003\207\001U\000\000\001V\000\189\000\000\000\000\003\206\000\000\000\000\000\000\000\249\000\000\000\000\000\000\000\000\000\000\000\000\003\207\000\000\000\000\000\000\001\165\000\000\000\192\003%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\190\000\000\003\206\003&\000\000\000\226\000\000\000\000\000\000\003%\000\192\000\000\000\000\003\207\000\000\000\000\000\000\000\000\000\000\000\000\003&\000\000\000\000\000\000\000\228\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\\\003\223\003\206\000\000\000\000\000\000\000\000\000\000\000\192\000\000\000\000\000\000\000\000\003\207\003\206\003\246\000\000\000\000\000\000\003\223\000\000\000\000\000\230\0054\001\169\003\207\001U\000\000\001V\000\000\000\000\000\000\000\000\003\248\000\000\000\000\000\249\000\000\001\204\003I\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\223\000\000\000\000\000\000\000\000\000\000\003d\000\000\000\000\003I\000\000\000\000\000\000\000\000\003\254\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\223\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\223\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\002"))
   
   let semantic_action =
     [|
@@ -1604,12 +1604,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos__1_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let _1 : 'tv_eexpr = Obj.magic _1 in
+        let _1 : 'tv_dexpr = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_aexpr = 
-# 1932 "parser_cocci_menhir.mly"
-      ( Ast0.set_arg_exp _1 )
+# 1973 "parser_cocci_menhir.mly"
+          ( Ast0.set_arg_exp _1 )
 # 1614 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
@@ -1629,14 +1629,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 45 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
        (Parse_aux.list_info)
 # 1635 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_aexpr = 
-# 1934 "parser_cocci_menhir.mly"
+# 1975 "parser_cocci_menhir.mly"
       ( let (nm,lenname,pure,clt) = _1 in
       let nm = P.clt2mcode nm clt in
       let lenname =
@@ -1667,7 +1667,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_aexpr = 
-# 1943 "parser_cocci_menhir.mly"
+# 1984 "parser_cocci_menhir.mly"
       ( Ast0.set_arg_exp(Ast0.wrap(Ast0.TypeExp(_1))) )
 # 1673 "parser_cocci_menhir.ml"
          in
@@ -1689,7 +1689,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_any_strict = 
-# 1987 "parser_cocci_menhir.mly"
+# 2020 "parser_cocci_menhir.mly"
             ( Ast.WhenAny )
 # 1695 "parser_cocci_menhir.ml"
          in
@@ -1711,7 +1711,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_any_strict = 
-# 1988 "parser_cocci_menhir.mly"
+# 2021 "parser_cocci_menhir.mly"
             ( Ast.WhenStrict )
 # 1717 "parser_cocci_menhir.ml"
          in
@@ -1733,7 +1733,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_any_strict = 
-# 1989 "parser_cocci_menhir.mly"
+# 2022 "parser_cocci_menhir.mly"
             ( Ast.WhenForall )
 # 1739 "parser_cocci_menhir.ml"
          in
@@ -1755,7 +1755,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_any_strict = 
-# 1990 "parser_cocci_menhir.mly"
+# 2023 "parser_cocci_menhir.mly"
             ( Ast.WhenExists )
 # 1761 "parser_cocci_menhir.ml"
          in
@@ -1779,7 +1779,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1290 "parser_cocci_menhir.mly"
+# 1314 "parser_cocci_menhir.mly"
                                             ( _1 )
 # 1785 "parser_cocci_menhir.ml"
          in
@@ -1811,7 +1811,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 78 "parser_cocci_menhir.mly"
+# 102 "parser_cocci_menhir.mly"
        (Data.clt)
 # 1817 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -1819,7 +1819,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1292 "parser_cocci_menhir.mly"
+# 1316 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Mul _1 _2 _3 )
 # 1825 "parser_cocci_menhir.ml"
          in
@@ -1851,7 +1851,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 76 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Ast_cocci.arithOp * Data.clt)
 # 1857 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -1859,7 +1859,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1294 "parser_cocci_menhir.mly"
+# 1318 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.arith_op op _1 clt _3 )
 # 1865 "parser_cocci_menhir.ml"
          in
@@ -1891,7 +1891,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 77 "parser_cocci_menhir.mly"
+# 101 "parser_cocci_menhir.mly"
        (Data.clt)
 # 1897 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -1899,7 +1899,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1296 "parser_cocci_menhir.mly"
+# 1320 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Plus _1 _2 _3 )
 # 1905 "parser_cocci_menhir.ml"
          in
@@ -1931,7 +1931,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 77 "parser_cocci_menhir.mly"
+# 101 "parser_cocci_menhir.mly"
        (Data.clt)
 # 1937 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -1939,7 +1939,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1298 "parser_cocci_menhir.mly"
+# 1322 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Minus _1 _2 _3 )
 # 1945 "parser_cocci_menhir.ml"
          in
@@ -1971,7 +1971,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 75 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Ast_cocci.arithOp * Data.clt)
 # 1977 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -1979,7 +1979,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1300 "parser_cocci_menhir.mly"
+# 1324 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.arith_op op _1 clt _3 )
 # 1985 "parser_cocci_menhir.ml"
          in
@@ -2011,7 +2011,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 75 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Ast_cocci.arithOp * Data.clt)
 # 2017 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -2019,7 +2019,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1302 "parser_cocci_menhir.mly"
+# 1326 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.arith_op op _1 clt _3 )
 # 2025 "parser_cocci_menhir.ml"
          in
@@ -2051,7 +2051,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 74 "parser_cocci_menhir.mly"
+# 98 "parser_cocci_menhir.mly"
        (Ast_cocci.logicalOp * Data.clt)
 # 2057 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -2059,7 +2059,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1304 "parser_cocci_menhir.mly"
+# 1328 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.logic_op op _1 clt _3 )
 # 2065 "parser_cocci_menhir.ml"
          in
@@ -2091,7 +2091,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 73 "parser_cocci_menhir.mly"
+# 97 "parser_cocci_menhir.mly"
        (Data.clt)
 # 2097 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -2099,7 +2099,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1306 "parser_cocci_menhir.mly"
+# 1330 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.Eq _1 _2 _3 )
 # 2105 "parser_cocci_menhir.ml"
          in
@@ -2131,7 +2131,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 73 "parser_cocci_menhir.mly"
+# 97 "parser_cocci_menhir.mly"
        (Data.clt)
 # 2137 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -2139,7 +2139,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1308 "parser_cocci_menhir.mly"
+# 1332 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.NotEq _1 _2 _3 )
 # 2145 "parser_cocci_menhir.ml"
          in
@@ -2171,7 +2171,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 72 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
 # 2177 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -2179,7 +2179,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1310 "parser_cocci_menhir.mly"
+# 1334 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.And _1 _2 _3 )
 # 2185 "parser_cocci_menhir.ml"
          in
@@ -2211,7 +2211,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 70 "parser_cocci_menhir.mly"
+# 94 "parser_cocci_menhir.mly"
        (Data.clt)
 # 2217 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -2219,7 +2219,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1312 "parser_cocci_menhir.mly"
+# 1336 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Or _1 _2 _3 )
 # 2225 "parser_cocci_menhir.ml"
          in
@@ -2251,7 +2251,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 71 "parser_cocci_menhir.mly"
+# 95 "parser_cocci_menhir.mly"
        (Data.clt)
 # 2257 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -2259,7 +2259,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1314 "parser_cocci_menhir.mly"
+# 1338 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Xor _1 _2 _3 )
 # 2265 "parser_cocci_menhir.ml"
          in
@@ -2291,7 +2291,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 69 "parser_cocci_menhir.mly"
+# 93 "parser_cocci_menhir.mly"
        (Data.clt)
 # 2297 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -2299,7 +2299,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1316 "parser_cocci_menhir.mly"
+# 1340 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.AndLog _1 _2 _3 )
 # 2305 "parser_cocci_menhir.ml"
          in
@@ -2331,7 +2331,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 68 "parser_cocci_menhir.mly"
+# 92 "parser_cocci_menhir.mly"
        (Data.clt)
 # 2337 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -2339,7 +2339,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1318 "parser_cocci_menhir.mly"
+# 1342 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.OrLog _1 _2 _3 )
 # 2345 "parser_cocci_menhir.ml"
          in
@@ -2363,7 +2363,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1290 "parser_cocci_menhir.mly"
+# 1314 "parser_cocci_menhir.mly"
                                             ( _1 )
 # 2369 "parser_cocci_menhir.ml"
          in
@@ -2395,7 +2395,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 78 "parser_cocci_menhir.mly"
+# 102 "parser_cocci_menhir.mly"
        (Data.clt)
 # 2401 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -2403,7 +2403,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1292 "parser_cocci_menhir.mly"
+# 1316 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Mul _1 _2 _3 )
 # 2409 "parser_cocci_menhir.ml"
          in
@@ -2435,7 +2435,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 76 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Ast_cocci.arithOp * Data.clt)
 # 2441 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -2443,7 +2443,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1294 "parser_cocci_menhir.mly"
+# 1318 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.arith_op op _1 clt _3 )
 # 2449 "parser_cocci_menhir.ml"
          in
@@ -2475,7 +2475,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 77 "parser_cocci_menhir.mly"
+# 101 "parser_cocci_menhir.mly"
        (Data.clt)
 # 2481 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -2483,7 +2483,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1296 "parser_cocci_menhir.mly"
+# 1320 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Plus _1 _2 _3 )
 # 2489 "parser_cocci_menhir.ml"
          in
@@ -2515,7 +2515,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 77 "parser_cocci_menhir.mly"
+# 101 "parser_cocci_menhir.mly"
        (Data.clt)
 # 2521 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -2523,7 +2523,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1298 "parser_cocci_menhir.mly"
+# 1322 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Minus _1 _2 _3 )
 # 2529 "parser_cocci_menhir.ml"
          in
@@ -2555,7 +2555,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 75 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Ast_cocci.arithOp * Data.clt)
 # 2561 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -2563,7 +2563,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1300 "parser_cocci_menhir.mly"
+# 1324 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.arith_op op _1 clt _3 )
 # 2569 "parser_cocci_menhir.ml"
          in
@@ -2595,7 +2595,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 75 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Ast_cocci.arithOp * Data.clt)
 # 2601 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -2603,7 +2603,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1302 "parser_cocci_menhir.mly"
+# 1326 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.arith_op op _1 clt _3 )
 # 2609 "parser_cocci_menhir.ml"
          in
@@ -2635,7 +2635,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 74 "parser_cocci_menhir.mly"
+# 98 "parser_cocci_menhir.mly"
        (Ast_cocci.logicalOp * Data.clt)
 # 2641 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -2643,7 +2643,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1304 "parser_cocci_menhir.mly"
+# 1328 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.logic_op op _1 clt _3 )
 # 2649 "parser_cocci_menhir.ml"
          in
@@ -2675,7 +2675,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 73 "parser_cocci_menhir.mly"
+# 97 "parser_cocci_menhir.mly"
        (Data.clt)
 # 2681 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -2683,7 +2683,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1306 "parser_cocci_menhir.mly"
+# 1330 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.Eq _1 _2 _3 )
 # 2689 "parser_cocci_menhir.ml"
          in
@@ -2715,7 +2715,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 73 "parser_cocci_menhir.mly"
+# 97 "parser_cocci_menhir.mly"
        (Data.clt)
 # 2721 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -2723,7 +2723,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1308 "parser_cocci_menhir.mly"
+# 1332 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.NotEq _1 _2 _3 )
 # 2729 "parser_cocci_menhir.ml"
          in
@@ -2755,7 +2755,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 72 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
 # 2761 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -2763,7 +2763,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1310 "parser_cocci_menhir.mly"
+# 1334 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.And _1 _2 _3 )
 # 2769 "parser_cocci_menhir.ml"
          in
@@ -2795,7 +2795,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 70 "parser_cocci_menhir.mly"
+# 94 "parser_cocci_menhir.mly"
        (Data.clt)
 # 2801 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -2803,7 +2803,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1312 "parser_cocci_menhir.mly"
+# 1336 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Or _1 _2 _3 )
 # 2809 "parser_cocci_menhir.ml"
          in
@@ -2835,7 +2835,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 71 "parser_cocci_menhir.mly"
+# 95 "parser_cocci_menhir.mly"
        (Data.clt)
 # 2841 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -2843,7 +2843,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1314 "parser_cocci_menhir.mly"
+# 1338 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Xor _1 _2 _3 )
 # 2849 "parser_cocci_menhir.ml"
          in
@@ -2875,7 +2875,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 69 "parser_cocci_menhir.mly"
+# 93 "parser_cocci_menhir.mly"
        (Data.clt)
 # 2881 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -2883,7 +2883,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1316 "parser_cocci_menhir.mly"
+# 1340 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.AndLog _1 _2 _3 )
 # 2889 "parser_cocci_menhir.ml"
          in
@@ -2915,7 +2915,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 68 "parser_cocci_menhir.mly"
+# 92 "parser_cocci_menhir.mly"
        (Data.clt)
 # 2921 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -2923,7 +2923,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1318 "parser_cocci_menhir.mly"
+# 1342 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.OrLog _1 _2 _3 )
 # 2929 "parser_cocci_menhir.ml"
          in
@@ -2947,7 +2947,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1290 "parser_cocci_menhir.mly"
+# 1314 "parser_cocci_menhir.mly"
                                             ( _1 )
 # 2953 "parser_cocci_menhir.ml"
          in
@@ -2979,7 +2979,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 78 "parser_cocci_menhir.mly"
+# 102 "parser_cocci_menhir.mly"
        (Data.clt)
 # 2985 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -2987,7 +2987,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1292 "parser_cocci_menhir.mly"
+# 1316 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Mul _1 _2 _3 )
 # 2993 "parser_cocci_menhir.ml"
          in
@@ -3019,7 +3019,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 76 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Ast_cocci.arithOp * Data.clt)
 # 3025 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -3027,7 +3027,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1294 "parser_cocci_menhir.mly"
+# 1318 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.arith_op op _1 clt _3 )
 # 3033 "parser_cocci_menhir.ml"
          in
@@ -3059,7 +3059,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 77 "parser_cocci_menhir.mly"
+# 101 "parser_cocci_menhir.mly"
        (Data.clt)
 # 3065 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -3067,7 +3067,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1296 "parser_cocci_menhir.mly"
+# 1320 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Plus _1 _2 _3 )
 # 3073 "parser_cocci_menhir.ml"
          in
@@ -3099,7 +3099,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 77 "parser_cocci_menhir.mly"
+# 101 "parser_cocci_menhir.mly"
        (Data.clt)
 # 3105 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -3107,7 +3107,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1298 "parser_cocci_menhir.mly"
+# 1322 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Minus _1 _2 _3 )
 # 3113 "parser_cocci_menhir.ml"
          in
@@ -3139,7 +3139,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 75 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Ast_cocci.arithOp * Data.clt)
 # 3145 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -3147,7 +3147,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1300 "parser_cocci_menhir.mly"
+# 1324 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.arith_op op _1 clt _3 )
 # 3153 "parser_cocci_menhir.ml"
          in
@@ -3179,7 +3179,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 75 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Ast_cocci.arithOp * Data.clt)
 # 3185 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -3187,7 +3187,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1302 "parser_cocci_menhir.mly"
+# 1326 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.arith_op op _1 clt _3 )
 # 3193 "parser_cocci_menhir.ml"
          in
@@ -3219,7 +3219,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 74 "parser_cocci_menhir.mly"
+# 98 "parser_cocci_menhir.mly"
        (Ast_cocci.logicalOp * Data.clt)
 # 3225 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -3227,7 +3227,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1304 "parser_cocci_menhir.mly"
+# 1328 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.logic_op op _1 clt _3 )
 # 3233 "parser_cocci_menhir.ml"
          in
@@ -3259,7 +3259,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 73 "parser_cocci_menhir.mly"
+# 97 "parser_cocci_menhir.mly"
        (Data.clt)
 # 3265 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -3267,7 +3267,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1306 "parser_cocci_menhir.mly"
+# 1330 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.Eq _1 _2 _3 )
 # 3273 "parser_cocci_menhir.ml"
          in
@@ -3299,7 +3299,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 73 "parser_cocci_menhir.mly"
+# 97 "parser_cocci_menhir.mly"
        (Data.clt)
 # 3305 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -3307,7 +3307,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1308 "parser_cocci_menhir.mly"
+# 1332 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.NotEq _1 _2 _3 )
 # 3313 "parser_cocci_menhir.ml"
          in
@@ -3339,7 +3339,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 72 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
 # 3345 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -3347,7 +3347,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1310 "parser_cocci_menhir.mly"
+# 1334 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.And _1 _2 _3 )
 # 3353 "parser_cocci_menhir.ml"
          in
@@ -3379,7 +3379,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 70 "parser_cocci_menhir.mly"
+# 94 "parser_cocci_menhir.mly"
        (Data.clt)
 # 3385 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -3387,7 +3387,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1312 "parser_cocci_menhir.mly"
+# 1336 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Or _1 _2 _3 )
 # 3393 "parser_cocci_menhir.ml"
          in
@@ -3419,7 +3419,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 71 "parser_cocci_menhir.mly"
+# 95 "parser_cocci_menhir.mly"
        (Data.clt)
 # 3425 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -3427,7 +3427,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1314 "parser_cocci_menhir.mly"
+# 1338 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Xor _1 _2 _3 )
 # 3433 "parser_cocci_menhir.ml"
          in
@@ -3459,7 +3459,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 69 "parser_cocci_menhir.mly"
+# 93 "parser_cocci_menhir.mly"
        (Data.clt)
 # 3465 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -3467,7 +3467,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1316 "parser_cocci_menhir.mly"
+# 1340 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.AndLog _1 _2 _3 )
 # 3473 "parser_cocci_menhir.ml"
          in
@@ -3499,7 +3499,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 68 "parser_cocci_menhir.mly"
+# 92 "parser_cocci_menhir.mly"
        (Data.clt)
 # 3505 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -3507,7 +3507,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1318 "parser_cocci_menhir.mly"
+# 1342 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.OrLog _1 _2 _3 )
 # 3513 "parser_cocci_menhir.ml"
          in
@@ -3531,7 +3531,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_arith_expr_expr_invalid_ = 
-# 1290 "parser_cocci_menhir.mly"
+# 1314 "parser_cocci_menhir.mly"
                                             ( _1 )
 # 3537 "parser_cocci_menhir.ml"
          in
@@ -3563,7 +3563,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 78 "parser_cocci_menhir.mly"
+# 102 "parser_cocci_menhir.mly"
        (Data.clt)
 # 3569 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -3571,7 +3571,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_expr_invalid_ = 
-# 1292 "parser_cocci_menhir.mly"
+# 1316 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Mul _1 _2 _3 )
 # 3577 "parser_cocci_menhir.ml"
          in
@@ -3603,167 +3603,167 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 76 "parser_cocci_menhir.mly"
-       (Ast_cocci.arithOp * Data.clt)
-# 3609 "parser_cocci_menhir.ml"
-        ) = Obj.magic _2 in
-        let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__3_ in
-        let _v : 'tv_arith_expr_expr_invalid_ = 
-# 1294 "parser_cocci_menhir.mly"
-      ( let (op,clt) = _2 in P.arith_op op _1 clt _3 )
-# 3617 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = _3;
-          MenhirLib.EngineTypes.startp = _startpos__3_;
-          MenhirLib.EngineTypes.endp = _endpos__3_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = _2;
-            MenhirLib.EngineTypes.startp = _startpos__2_;
-            MenhirLib.EngineTypes.endp = _endpos__2_;
-            MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.state = _menhir_s;
-              MenhirLib.EngineTypes.semv = _1;
-              MenhirLib.EngineTypes.startp = _startpos__1_;
-              MenhirLib.EngineTypes.endp = _endpos__1_;
-              MenhirLib.EngineTypes.next = _menhir_stack;
-              };
-            };
-          } = _menhir_stack in
-        let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
-        let _2 : (
-# 77 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 3649 "parser_cocci_menhir.ml"
-        ) = Obj.magic _2 in
-        let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__3_ in
-        let _v : 'tv_arith_expr_expr_invalid_ = 
-# 1296 "parser_cocci_menhir.mly"
-      ( P.arith_op Ast.Plus _1 _2 _3 )
-# 3657 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = _3;
-          MenhirLib.EngineTypes.startp = _startpos__3_;
-          MenhirLib.EngineTypes.endp = _endpos__3_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = _2;
-            MenhirLib.EngineTypes.startp = _startpos__2_;
-            MenhirLib.EngineTypes.endp = _endpos__2_;
-            MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.state = _menhir_s;
-              MenhirLib.EngineTypes.semv = _1;
-              MenhirLib.EngineTypes.startp = _startpos__1_;
-              MenhirLib.EngineTypes.endp = _endpos__1_;
-              MenhirLib.EngineTypes.next = _menhir_stack;
-              };
-            };
-          } = _menhir_stack in
-        let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
-        let _2 : (
-# 77 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 3689 "parser_cocci_menhir.ml"
-        ) = Obj.magic _2 in
-        let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__3_ in
-        let _v : 'tv_arith_expr_expr_invalid_ = 
-# 1298 "parser_cocci_menhir.mly"
-      ( P.arith_op Ast.Minus _1 _2 _3 )
-# 3697 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = _3;
-          MenhirLib.EngineTypes.startp = _startpos__3_;
-          MenhirLib.EngineTypes.endp = _endpos__3_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = _2;
-            MenhirLib.EngineTypes.startp = _startpos__2_;
-            MenhirLib.EngineTypes.endp = _endpos__2_;
-            MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.state = _menhir_s;
-              MenhirLib.EngineTypes.semv = _1;
-              MenhirLib.EngineTypes.startp = _startpos__1_;
-              MenhirLib.EngineTypes.endp = _endpos__1_;
-              MenhirLib.EngineTypes.next = _menhir_stack;
-              };
-            };
-          } = _menhir_stack in
-        let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
-        let _2 : (
-# 75 "parser_cocci_menhir.mly"
-       (Ast_cocci.arithOp * Data.clt)
-# 3729 "parser_cocci_menhir.ml"
-        ) = Obj.magic _2 in
-        let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__3_ in
-        let _v : 'tv_arith_expr_expr_invalid_ = 
-# 1300 "parser_cocci_menhir.mly"
-      ( let (op,clt) = _2 in P.arith_op op _1 clt _3 )
-# 3737 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = _3;
-          MenhirLib.EngineTypes.startp = _startpos__3_;
-          MenhirLib.EngineTypes.endp = _endpos__3_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = _2;
-            MenhirLib.EngineTypes.startp = _startpos__2_;
-            MenhirLib.EngineTypes.endp = _endpos__2_;
-            MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.state = _menhir_s;
-              MenhirLib.EngineTypes.semv = _1;
-              MenhirLib.EngineTypes.startp = _startpos__1_;
-              MenhirLib.EngineTypes.endp = _endpos__1_;
-              MenhirLib.EngineTypes.next = _menhir_stack;
-              };
-            };
-          } = _menhir_stack in
-        let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
-        let _2 : (
-# 75 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
+       (Ast_cocci.arithOp * Data.clt)
+# 3609 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__3_ in
+        let _v : 'tv_arith_expr_expr_invalid_ = 
+# 1318 "parser_cocci_menhir.mly"
+      ( let (op,clt) = _2 in P.arith_op op _1 clt _3 )
+# 3617 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _3;
+          MenhirLib.EngineTypes.startp = _startpos__3_;
+          MenhirLib.EngineTypes.endp = _endpos__3_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = _2;
+            MenhirLib.EngineTypes.startp = _startpos__2_;
+            MenhirLib.EngineTypes.endp = _endpos__2_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = _1;
+              MenhirLib.EngineTypes.startp = _startpos__1_;
+              MenhirLib.EngineTypes.endp = _endpos__1_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
+            };
+          } = _menhir_stack in
+        let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
+        let _2 : (
+# 101 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 3649 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__3_ in
+        let _v : 'tv_arith_expr_expr_invalid_ = 
+# 1320 "parser_cocci_menhir.mly"
+      ( P.arith_op Ast.Plus _1 _2 _3 )
+# 3657 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _3;
+          MenhirLib.EngineTypes.startp = _startpos__3_;
+          MenhirLib.EngineTypes.endp = _endpos__3_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = _2;
+            MenhirLib.EngineTypes.startp = _startpos__2_;
+            MenhirLib.EngineTypes.endp = _endpos__2_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = _1;
+              MenhirLib.EngineTypes.startp = _startpos__1_;
+              MenhirLib.EngineTypes.endp = _endpos__1_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
+            };
+          } = _menhir_stack in
+        let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
+        let _2 : (
+# 101 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 3689 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__3_ in
+        let _v : 'tv_arith_expr_expr_invalid_ = 
+# 1322 "parser_cocci_menhir.mly"
+      ( P.arith_op Ast.Minus _1 _2 _3 )
+# 3697 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _3;
+          MenhirLib.EngineTypes.startp = _startpos__3_;
+          MenhirLib.EngineTypes.endp = _endpos__3_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = _2;
+            MenhirLib.EngineTypes.startp = _startpos__2_;
+            MenhirLib.EngineTypes.endp = _endpos__2_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = _1;
+              MenhirLib.EngineTypes.startp = _startpos__1_;
+              MenhirLib.EngineTypes.endp = _endpos__1_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
+            };
+          } = _menhir_stack in
+        let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
+        let _2 : (
+# 99 "parser_cocci_menhir.mly"
+       (Ast_cocci.arithOp * Data.clt)
+# 3729 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_arith_expr_expr_invalid_ = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__3_ in
+        let _v : 'tv_arith_expr_expr_invalid_ = 
+# 1324 "parser_cocci_menhir.mly"
+      ( let (op,clt) = _2 in P.arith_op op _1 clt _3 )
+# 3737 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _3;
+          MenhirLib.EngineTypes.startp = _startpos__3_;
+          MenhirLib.EngineTypes.endp = _endpos__3_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = _2;
+            MenhirLib.EngineTypes.startp = _startpos__2_;
+            MenhirLib.EngineTypes.endp = _endpos__2_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = _1;
+              MenhirLib.EngineTypes.startp = _startpos__1_;
+              MenhirLib.EngineTypes.endp = _endpos__1_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
+            };
+          } = _menhir_stack in
+        let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
+        let _2 : (
+# 99 "parser_cocci_menhir.mly"
        (Ast_cocci.arithOp * Data.clt)
 # 3769 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -3771,7 +3771,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_expr_invalid_ = 
-# 1302 "parser_cocci_menhir.mly"
+# 1326 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.arith_op op _1 clt _3 )
 # 3777 "parser_cocci_menhir.ml"
          in
@@ -3803,7 +3803,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 74 "parser_cocci_menhir.mly"
+# 98 "parser_cocci_menhir.mly"
        (Ast_cocci.logicalOp * Data.clt)
 # 3809 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -3811,7 +3811,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_expr_invalid_ = 
-# 1304 "parser_cocci_menhir.mly"
+# 1328 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.logic_op op _1 clt _3 )
 # 3817 "parser_cocci_menhir.ml"
          in
@@ -3843,7 +3843,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 73 "parser_cocci_menhir.mly"
+# 97 "parser_cocci_menhir.mly"
        (Data.clt)
 # 3849 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -3851,7 +3851,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_expr_invalid_ = 
-# 1306 "parser_cocci_menhir.mly"
+# 1330 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.Eq _1 _2 _3 )
 # 3857 "parser_cocci_menhir.ml"
          in
@@ -3883,7 +3883,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 73 "parser_cocci_menhir.mly"
+# 97 "parser_cocci_menhir.mly"
        (Data.clt)
 # 3889 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -3891,7 +3891,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_expr_invalid_ = 
-# 1308 "parser_cocci_menhir.mly"
+# 1332 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.NotEq _1 _2 _3 )
 # 3897 "parser_cocci_menhir.ml"
          in
@@ -3923,7 +3923,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 72 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
 # 3929 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -3931,7 +3931,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_expr_invalid_ = 
-# 1310 "parser_cocci_menhir.mly"
+# 1334 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.And _1 _2 _3 )
 # 3937 "parser_cocci_menhir.ml"
          in
@@ -3963,7 +3963,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 70 "parser_cocci_menhir.mly"
+# 94 "parser_cocci_menhir.mly"
        (Data.clt)
 # 3969 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -3971,7 +3971,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_expr_invalid_ = 
-# 1312 "parser_cocci_menhir.mly"
+# 1336 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Or _1 _2 _3 )
 # 3977 "parser_cocci_menhir.ml"
          in
@@ -4003,7 +4003,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 71 "parser_cocci_menhir.mly"
+# 95 "parser_cocci_menhir.mly"
        (Data.clt)
 # 4009 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -4011,7 +4011,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_expr_invalid_ = 
-# 1314 "parser_cocci_menhir.mly"
+# 1338 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Xor _1 _2 _3 )
 # 4017 "parser_cocci_menhir.ml"
          in
@@ -4043,7 +4043,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 69 "parser_cocci_menhir.mly"
+# 93 "parser_cocci_menhir.mly"
        (Data.clt)
 # 4049 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -4051,7 +4051,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_expr_invalid_ = 
-# 1316 "parser_cocci_menhir.mly"
+# 1340 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.AndLog _1 _2 _3 )
 # 4057 "parser_cocci_menhir.ml"
          in
@@ -4083,7 +4083,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 68 "parser_cocci_menhir.mly"
+# 92 "parser_cocci_menhir.mly"
        (Data.clt)
 # 4089 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -4091,7 +4091,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_expr_invalid_ = 
-# 1318 "parser_cocci_menhir.mly"
+# 1342 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.OrLog _1 _2 _3 )
 # 4097 "parser_cocci_menhir.ml"
          in
@@ -4113,7 +4113,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_arity = 
-# 489 "parser_cocci_menhir.mly"
+# 513 "parser_cocci_menhir.mly"
               ( Ast.UNIQUE )
 # 4119 "parser_cocci_menhir.ml"
          in
@@ -4135,7 +4135,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_arity = 
-# 490 "parser_cocci_menhir.mly"
+# 514 "parser_cocci_menhir.mly"
               ( Ast.OPT )
 # 4141 "parser_cocci_menhir.ml"
          in
@@ -4157,7 +4157,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_arity = 
-# 491 "parser_cocci_menhir.mly"
+# 515 "parser_cocci_menhir.mly"
               ( Ast.MULTI )
 # 4163 "parser_cocci_menhir.ml"
          in
@@ -4174,7 +4174,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
         let _endpos = _startpos in
         let _v : 'tv_arity = 
-# 492 "parser_cocci_menhir.mly"
+# 516 "parser_cocci_menhir.mly"
                    ( Ast.NONE )
 # 4180 "parser_cocci_menhir.ml"
          in
@@ -4205,20 +4205,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let r : (
-# 81 "parser_cocci_menhir.mly"
+# 105 "parser_cocci_menhir.mly"
        (Data.clt)
 # 4211 "parser_cocci_menhir.ml"
         ) = Obj.magic r in
         let i : 'tv_option_eexpr_ = Obj.magic i in
         let l : (
-# 81 "parser_cocci_menhir.mly"
+# 105 "parser_cocci_menhir.mly"
        (Data.clt)
 # 4217 "parser_cocci_menhir.ml"
         ) = Obj.magic l in
         let _startpos = _startpos_l_ in
         let _endpos = _endpos_r_ in
         let _v : 'tv_array_dec = 
-# 1093 "parser_cocci_menhir.mly"
+# 1141 "parser_cocci_menhir.mly"
                                            ( (l,i,r) )
 # 4224 "parser_cocci_menhir.ml"
          in
@@ -4242,7 +4242,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_assign_expr_eexpr_dot_expressions_ = 
-# 1262 "parser_cocci_menhir.mly"
+# 1286 "parser_cocci_menhir.mly"
                                            ( _1 )
 # 4248 "parser_cocci_menhir.ml"
          in
@@ -4274,7 +4274,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_assign_expr_bis = Obj.magic _3 in
         let _2 : (
-# 87 "parser_cocci_menhir.mly"
+# 111 "parser_cocci_menhir.mly"
        (Ast_cocci.assignOp * Data.clt)
 # 4280 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -4282,7 +4282,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_assign_expr_eexpr_dot_expressions_ = 
-# 1264 "parser_cocci_menhir.mly"
+# 1288 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in
       Ast0.wrap(Ast0.Assignment(_1,P.clt2mcode op clt,
                                Ast0.set_arg_exp _3,false)) )
@@ -4316,7 +4316,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_assign_expr_bis = Obj.magic _3 in
         let _2 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
 # 4322 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -4324,7 +4324,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_assign_expr_eexpr_dot_expressions_ = 
-# 1268 "parser_cocci_menhir.mly"
+# 1292 "parser_cocci_menhir.mly"
       ( Ast0.wrap
          (Ast0.Assignment
             (_1,P.clt2mcode Ast.SimpleAssign _2,Ast0.set_arg_exp _3,false)) )
@@ -4350,7 +4350,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_assign_expr_eexpr_nest_expressions_ = 
-# 1262 "parser_cocci_menhir.mly"
+# 1286 "parser_cocci_menhir.mly"
                                            ( _1 )
 # 4356 "parser_cocci_menhir.ml"
          in
@@ -4382,7 +4382,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_assign_expr_bis = Obj.magic _3 in
         let _2 : (
-# 87 "parser_cocci_menhir.mly"
+# 111 "parser_cocci_menhir.mly"
        (Ast_cocci.assignOp * Data.clt)
 # 4388 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -4390,7 +4390,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_assign_expr_eexpr_nest_expressions_ = 
-# 1264 "parser_cocci_menhir.mly"
+# 1288 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in
       Ast0.wrap(Ast0.Assignment(_1,P.clt2mcode op clt,
                                Ast0.set_arg_exp _3,false)) )
@@ -4424,7 +4424,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_assign_expr_bis = Obj.magic _3 in
         let _2 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
 # 4430 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -4432,7 +4432,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_assign_expr_eexpr_nest_expressions_ = 
-# 1268 "parser_cocci_menhir.mly"
+# 1292 "parser_cocci_menhir.mly"
       ( Ast0.wrap
          (Ast0.Assignment
             (_1,P.clt2mcode Ast.SimpleAssign _2,Ast0.set_arg_exp _3,false)) )
@@ -4458,7 +4458,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_assign_expr_expr_invalid_ = 
-# 1262 "parser_cocci_menhir.mly"
+# 1286 "parser_cocci_menhir.mly"
                                            ( _1 )
 # 4464 "parser_cocci_menhir.ml"
          in
@@ -4490,7 +4490,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_assign_expr_bis = Obj.magic _3 in
         let _2 : (
-# 87 "parser_cocci_menhir.mly"
+# 111 "parser_cocci_menhir.mly"
        (Ast_cocci.assignOp * Data.clt)
 # 4496 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -4498,7 +4498,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_assign_expr_expr_invalid_ = 
-# 1264 "parser_cocci_menhir.mly"
+# 1288 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in
       Ast0.wrap(Ast0.Assignment(_1,P.clt2mcode op clt,
                                Ast0.set_arg_exp _3,false)) )
@@ -4532,7 +4532,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_assign_expr_bis = Obj.magic _3 in
         let _2 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
 # 4538 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -4540,7 +4540,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_assign_expr_expr_invalid_ = 
-# 1268 "parser_cocci_menhir.mly"
+# 1292 "parser_cocci_menhir.mly"
       ( Ast0.wrap
          (Ast0.Assignment
             (_1,P.clt2mcode Ast.SimpleAssign _2,Ast0.set_arg_exp _3,false)) )
@@ -4566,7 +4566,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_assign_expr_bis = 
-# 1273 "parser_cocci_menhir.mly"
+# 1297 "parser_cocci_menhir.mly"
                                                             ( _1 )
 # 4572 "parser_cocci_menhir.ml"
          in
@@ -4598,7 +4598,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_assign_expr_bis = Obj.magic _3 in
         let _2 : (
-# 87 "parser_cocci_menhir.mly"
+# 111 "parser_cocci_menhir.mly"
        (Ast_cocci.assignOp * Data.clt)
 # 4604 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -4606,7 +4606,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_assign_expr_bis = 
-# 1275 "parser_cocci_menhir.mly"
+# 1299 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in
       Ast0.wrap(Ast0.Assignment(_1,P.clt2mcode op clt,
                                Ast0.set_arg_exp _3,false)) )
@@ -4640,7 +4640,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_assign_expr_bis = Obj.magic _3 in
         let _2 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
 # 4646 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
@@ -4648,7 +4648,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_assign_expr_bis = 
-# 1279 "parser_cocci_menhir.mly"
+# 1303 "parser_cocci_menhir.mly"
       ( Ast0.wrap
          (Ast0.Assignment
             (_1,P.clt2mcode Ast.SimpleAssign _2,Ast0.set_arg_exp _3,false)) )
@@ -4674,7 +4674,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_basic_expr_eexpr_dot_expressions_ = 
-# 1259 "parser_cocci_menhir.mly"
+# 1283 "parser_cocci_menhir.mly"
                                                              ( _1 )
 # 4680 "parser_cocci_menhir.ml"
          in
@@ -4698,7 +4698,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_basic_expr_eexpr_nest_expressions_ = 
-# 1259 "parser_cocci_menhir.mly"
+# 1283 "parser_cocci_menhir.mly"
                                                              ( _1 )
 # 4704 "parser_cocci_menhir.ml"
          in
@@ -4722,7 +4722,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_basic_expr_expr_invalid_ = 
-# 1259 "parser_cocci_menhir.mly"
+# 1283 "parser_cocci_menhir.mly"
                                                              ( _1 )
 # 4728 "parser_cocci_menhir.ml"
          in
@@ -4754,19 +4754,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_fun_start = Obj.magic _3 in
         let _2 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
 # 4760 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 35 "parser_cocci_menhir.mly"
+# 59 "parser_cocci_menhir.mly"
        (Data.clt)
 # 4765 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_case_line = 
-# 955 "parser_cocci_menhir.mly"
+# 1003 "parser_cocci_menhir.mly"
       ( Ast0.wrap
          (Ast0.Default(P.clt2mcode "default" _1,P.clt2mcode ":" _2,_3)) )
 # 4773 "parser_cocci_menhir.ml"
@@ -4804,20 +4804,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _4 : 'tv_fun_start = Obj.magic _4 in
         let _3 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
 # 4810 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_eexpr = Obj.magic _2 in
         let _1 : (
-# 35 "parser_cocci_menhir.mly"
+# 59 "parser_cocci_menhir.mly"
        (Data.clt)
 # 4816 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : 'tv_case_line = 
-# 958 "parser_cocci_menhir.mly"
+# 1006 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Case(P.clt2mcode "case" _1,_2,P.clt2mcode ":" _3,_4)) )
 # 4823 "parser_cocci_menhir.ml"
          in
@@ -4841,7 +4841,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_cast_expr_eexpr_dot_expressions_ = 
-# 1321 "parser_cocci_menhir.mly"
+# 1345 "parser_cocci_menhir.mly"
                                           ( _1 )
 # 4847 "parser_cocci_menhir.ml"
          in
@@ -4878,20 +4878,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let e : 'tv_cast_expr_eexpr_dot_expressions_ = Obj.magic e in
         let rp : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
 # 4884 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let t : 'tv_ctype = Obj.magic t in
         let lp : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
 # 4890 "parser_cocci_menhir.ml"
         ) = Obj.magic lp in
         let _startpos = _startpos_lp_ in
         let _endpos = _endpos_e_ in
         let _v : 'tv_cast_expr_eexpr_dot_expressions_ = 
-# 1323 "parser_cocci_menhir.mly"
+# 1347 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Cast (P.clt2mcode "(" lp, t,
                             P.clt2mcode ")" rp, e)) )
 # 4898 "parser_cocci_menhir.ml"
@@ -4916,7 +4916,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_cast_expr_eexpr_invalid_ = 
-# 1321 "parser_cocci_menhir.mly"
+# 1345 "parser_cocci_menhir.mly"
                                           ( _1 )
 # 4922 "parser_cocci_menhir.ml"
          in
@@ -4953,20 +4953,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let e : 'tv_cast_expr_eexpr_invalid_ = Obj.magic e in
         let rp : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
 # 4959 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let t : 'tv_ctype = Obj.magic t in
         let lp : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
 # 4965 "parser_cocci_menhir.ml"
         ) = Obj.magic lp in
         let _startpos = _startpos_lp_ in
         let _endpos = _endpos_e_ in
         let _v : 'tv_cast_expr_eexpr_invalid_ = 
-# 1323 "parser_cocci_menhir.mly"
+# 1347 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Cast (P.clt2mcode "(" lp, t,
                             P.clt2mcode ")" rp, e)) )
 # 4973 "parser_cocci_menhir.ml"
@@ -4991,7 +4991,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_cast_expr_eexpr_nest_expressions_ = 
-# 1321 "parser_cocci_menhir.mly"
+# 1345 "parser_cocci_menhir.mly"
                                           ( _1 )
 # 4997 "parser_cocci_menhir.ml"
          in
@@ -5028,20 +5028,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let e : 'tv_cast_expr_eexpr_nest_expressions_ = Obj.magic e in
         let rp : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
 # 5034 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let t : 'tv_ctype = Obj.magic t in
         let lp : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
 # 5040 "parser_cocci_menhir.ml"
         ) = Obj.magic lp in
         let _startpos = _startpos_lp_ in
         let _endpos = _endpos_e_ in
         let _v : 'tv_cast_expr_eexpr_nest_expressions_ = 
-# 1323 "parser_cocci_menhir.mly"
+# 1347 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Cast (P.clt2mcode "(" lp, t,
                             P.clt2mcode ")" rp, e)) )
 # 5048 "parser_cocci_menhir.ml"
@@ -5066,7 +5066,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_cast_expr_expr_invalid_ = 
-# 1321 "parser_cocci_menhir.mly"
+# 1345 "parser_cocci_menhir.mly"
                                           ( _1 )
 # 5072 "parser_cocci_menhir.ml"
          in
@@ -5103,20 +5103,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let e : 'tv_cast_expr_expr_invalid_ = Obj.magic e in
         let rp : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
 # 5109 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let t : 'tv_ctype = Obj.magic t in
         let lp : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
 # 5115 "parser_cocci_menhir.ml"
         ) = Obj.magic lp in
         let _startpos = _startpos_lp_ in
         let _endpos = _endpos_e_ in
         let _v : 'tv_cast_expr_expr_invalid_ = 
-# 1323 "parser_cocci_menhir.mly"
+# 1347 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Cast (P.clt2mcode "(" lp, t,
                             P.clt2mcode ")" rp, e)) )
 # 5123 "parser_cocci_menhir.ml"
@@ -5145,7 +5145,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_choose_iso = 
-# 218 "parser_cocci_menhir.mly"
+# 242 "parser_cocci_menhir.mly"
                                                  ( List.map P.id2name _2 )
 # 5151 "parser_cocci_menhir.ml"
          in
@@ -5156,358 +5156,6 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos;
           MenhirLib.EngineTypes.next = _menhir_stack;
           });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = _2;
-          MenhirLib.EngineTypes.startp = _startpos__2_;
-          MenhirLib.EngineTypes.endp = _endpos__2_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = _1;
-            MenhirLib.EngineTypes.startp = _startpos__1_;
-            MenhirLib.EngineTypes.endp = _endpos__1_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
-          } = _menhir_stack in
-        let _2 : (
-# 52 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 5177 "parser_cocci_menhir.ml"
-        ) = Obj.magic _2 in
-        let _1 : (
-# 86 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 5182 "parser_cocci_menhir.ml"
-        ) = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__2_ in
-        let _v : 'tv_comma_decls_TEllipsis_decl_ = 
-# 1727 "parser_cocci_menhir.mly"
-    ( function dot_builder ->
-      [Ast0.wrap(Ast0.PComma(P.clt2mcode "," _1));
-       dot_builder _2] )
-# 5191 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = _2;
-          MenhirLib.EngineTypes.startp = _startpos__2_;
-          MenhirLib.EngineTypes.endp = _endpos__2_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = _1;
-            MenhirLib.EngineTypes.startp = _startpos__1_;
-            MenhirLib.EngineTypes.endp = _endpos__1_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
-          } = _menhir_stack in
-        let _2 : 'tv_one_dec_decl_ = Obj.magic _2 in
-        let _1 : (
-# 86 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 5218 "parser_cocci_menhir.ml"
-        ) = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__2_ in
-        let _v : 'tv_comma_decls_TEllipsis_decl_ = 
-# 1731 "parser_cocci_menhir.mly"
-    ( function dot_builder ->
-      [Ast0.wrap(Ast0.PComma(P.clt2mcode "," _1)); _2] )
-# 5226 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = _2;
-          MenhirLib.EngineTypes.startp = _startpos__2_;
-          MenhirLib.EngineTypes.endp = _endpos__2_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = _1;
-            MenhirLib.EngineTypes.startp = _startpos__1_;
-            MenhirLib.EngineTypes.endp = _endpos__1_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
-          } = _menhir_stack in
-        let _2 : (
-# 52 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 5252 "parser_cocci_menhir.ml"
-        ) = Obj.magic _2 in
-        let _1 : (
-# 86 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 5257 "parser_cocci_menhir.ml"
-        ) = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__2_ in
-        let _v : 'tv_comma_decls_TEllipsis_name_opt_decl_ = 
-# 1727 "parser_cocci_menhir.mly"
-    ( function dot_builder ->
-      [Ast0.wrap(Ast0.PComma(P.clt2mcode "," _1));
-       dot_builder _2] )
-# 5266 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = _2;
-          MenhirLib.EngineTypes.startp = _startpos__2_;
-          MenhirLib.EngineTypes.endp = _endpos__2_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = _1;
-            MenhirLib.EngineTypes.startp = _startpos__1_;
-            MenhirLib.EngineTypes.endp = _endpos__1_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
-          } = _menhir_stack in
-        let _2 : 'tv_one_dec_name_opt_decl_ = Obj.magic _2 in
-        let _1 : (
-# 86 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 5293 "parser_cocci_menhir.ml"
-        ) = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__2_ in
-        let _v : 'tv_comma_decls_TEllipsis_name_opt_decl_ = 
-# 1731 "parser_cocci_menhir.mly"
-    ( function dot_builder ->
-      [Ast0.wrap(Ast0.PComma(P.clt2mcode "," _1)); _2] )
-# 5301 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
-        let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
-        let _endpos = _startpos in
-        let _v : 'tv_comma_initializers_edots_when_TEllipsis_initialize__ = 
-# 1148 "parser_cocci_menhir.mly"
-              ( [] )
-# 5318 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = r;
-          MenhirLib.EngineTypes.startp = _startpos_r_;
-          MenhirLib.EngineTypes.endp = _endpos_r_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = d;
-            MenhirLib.EngineTypes.startp = _startpos_d_;
-            MenhirLib.EngineTypes.endp = _endpos_d_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
-          } = _menhir_stack in
-        let r : 'tv_comma_initializers2_edots_when_TEllipsis_initialize__ = Obj.magic r in
-        let d : 'tv_edots_when_TEllipsis_initialize_ = Obj.magic d in
-        let _startpos = _startpos_d_ in
-        let _endpos = _endpos_r_ in
-        let _v : 'tv_comma_initializers_edots_when_TEllipsis_initialize__ = 
-# 1150 "parser_cocci_menhir.mly"
-      ( (function dot_builder -> [dot_builder d])::r )
-# 5348 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = r;
-          MenhirLib.EngineTypes.startp = _startpos_r_;
-          MenhirLib.EngineTypes.endp = _endpos_r_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.startp = _startpos__1_;
-            MenhirLib.EngineTypes.endp = _endpos__1_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
-          } = _menhir_stack in
-        let r : 'tv_comma_initializers_edots_when_TEllipsis_initialize__ = Obj.magic r in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos_r_ in
-        let _v : 'tv_comma_initializers_edots_when_TEllipsis_initialize__ = 
-# 1151 "parser_cocci_menhir.mly"
-                                        ( r )
-# 5376 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = r;
-          MenhirLib.EngineTypes.startp = _startpos_r_;
-          MenhirLib.EngineTypes.endp = _endpos_r_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = c;
-            MenhirLib.EngineTypes.startp = _startpos_c_;
-            MenhirLib.EngineTypes.endp = _endpos_c_;
-            MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.state = _menhir_s;
-              MenhirLib.EngineTypes.semv = i;
-              MenhirLib.EngineTypes.startp = _startpos_i_;
-              MenhirLib.EngineTypes.endp = _endpos_i_;
-              MenhirLib.EngineTypes.next = _menhir_stack;
-              };
-            };
-          } = _menhir_stack in
-        let r : 'tv_comma_initializers_edots_when_TEllipsis_initialize__ = Obj.magic r in
-        let c : (
-# 86 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 5408 "parser_cocci_menhir.ml"
-        ) = Obj.magic c in
-        let i : 'tv_initialize2 = Obj.magic i in
-        let _startpos = _startpos_i_ in
-        let _endpos = _endpos_r_ in
-        let _v : 'tv_comma_initializers_edots_when_TEllipsis_initialize__ = 
-# 1153 "parser_cocci_menhir.mly"
-    ( (function dot_builder -> [i; Ast0.wrap(Ast0.IComma(P.clt2mcode "," c))])::
-      r )
-# 5417 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
-        let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
-        let _endpos = _startpos in
-        let _v : 'tv_comma_initializers2_edots_when_TEllipsis_initialize__ = 
-# 1157 "parser_cocci_menhir.mly"
-              ( [] )
-# 5434 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = r;
-          MenhirLib.EngineTypes.startp = _startpos_r_;
-          MenhirLib.EngineTypes.endp = _endpos_r_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.startp = _startpos__1_;
-            MenhirLib.EngineTypes.endp = _endpos__1_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
-          } = _menhir_stack in
-        let r : 'tv_comma_initializers_edots_when_TEllipsis_initialize__ = Obj.magic r in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos_r_ in
-        let _v : 'tv_comma_initializers2_edots_when_TEllipsis_initialize__ = 
-# 1158 "parser_cocci_menhir.mly"
-                                        ( r )
-# 5462 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = r;
-          MenhirLib.EngineTypes.startp = _startpos_r_;
-          MenhirLib.EngineTypes.endp = _endpos_r_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = c;
-            MenhirLib.EngineTypes.startp = _startpos_c_;
-            MenhirLib.EngineTypes.endp = _endpos_c_;
-            MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.state = _menhir_s;
-              MenhirLib.EngineTypes.semv = i;
-              MenhirLib.EngineTypes.startp = _startpos_i_;
-              MenhirLib.EngineTypes.endp = _endpos_i_;
-              MenhirLib.EngineTypes.next = _menhir_stack;
-              };
-            };
-          } = _menhir_stack in
-        let r : 'tv_comma_initializers_edots_when_TEllipsis_initialize__ = Obj.magic r in
-        let c : (
-# 86 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 5494 "parser_cocci_menhir.ml"
-        ) = Obj.magic c in
-        let i : 'tv_initialize2 = Obj.magic i in
-        let _startpos = _startpos_i_ in
-        let _endpos = _endpos_r_ in
-        let _v : 'tv_comma_initializers2_edots_when_TEllipsis_initialize__ = 
-# 1160 "parser_cocci_menhir.mly"
-    ( (function dot_builder -> [i; Ast0.wrap(Ast0.IComma(P.clt2mcode "," c))])::
-      r )
-# 5503 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
@@ -5521,9 +5169,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_comma_list_any_strict_ = 
-# 1965 "parser_cocci_menhir.mly"
+# 1998 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5527 "parser_cocci_menhir.ml"
+# 5175 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5545,9 +5193,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_comma_list_ctype_ = 
-# 1965 "parser_cocci_menhir.mly"
+# 1998 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5551 "parser_cocci_menhir.ml"
+# 5199 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5569,9 +5217,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_comma_list_d_ident_ = 
-# 1965 "parser_cocci_menhir.mly"
+# 1998 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5575 "parser_cocci_menhir.ml"
+# 5223 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5593,9 +5241,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_comma_list_ident_or_const_ = 
-# 1965 "parser_cocci_menhir.mly"
+# 1998 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5599 "parser_cocci_menhir.ml"
+# 5247 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5617,9 +5265,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_comma_list_meta_ident_ = 
-# 1965 "parser_cocci_menhir.mly"
+# 1998 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5623 "parser_cocci_menhir.ml"
+# 5271 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5641,9 +5289,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_comma_list_pure_ident_ = 
-# 1965 "parser_cocci_menhir.mly"
+# 1998 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5647 "parser_cocci_menhir.ml"
+# 5295 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5665,9 +5313,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_comma_list_pure_ident_or_meta_ident_ = 
-# 1965 "parser_cocci_menhir.mly"
+# 1998 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5671 "parser_cocci_menhir.ml"
+# 5319 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5689,9 +5337,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_comma_list_pure_ident_or_meta_ident_with_econstraint_not_ceq_or_sub__ = 
-# 1965 "parser_cocci_menhir.mly"
+# 1998 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5695 "parser_cocci_menhir.ml"
+# 5343 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5713,9 +5361,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_comma_list_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe_or_sub__ = 
-# 1965 "parser_cocci_menhir.mly"
+# 1998 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5719 "parser_cocci_menhir.ml"
+# 5367 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5737,9 +5385,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_comma_list_pure_ident_or_meta_ident_with_idconstraint_re_or_not_eqid__ = 
-# 1965 "parser_cocci_menhir.mly"
+# 1998 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5743 "parser_cocci_menhir.ml"
+# 5391 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5761,9 +5409,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_comma_list_pure_ident_or_meta_ident_with_idconstraint_virt_re_or_not_eqid__ = 
-# 1965 "parser_cocci_menhir.mly"
+# 1998 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5767 "parser_cocci_menhir.ml"
+# 5415 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5785,9 +5433,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_comma_list_pure_ident_or_meta_ident_with_seed_ = 
-# 1965 "parser_cocci_menhir.mly"
+# 1998 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5791 "parser_cocci_menhir.ml"
+# 5439 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5809,9 +5457,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_comma_list_pure_ident_or_meta_ident_with_x_eq_not_pos__ = 
-# 1965 "parser_cocci_menhir.mly"
+# 1998 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5815 "parser_cocci_menhir.ml"
+# 5463 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5833,9 +5481,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_comma_list_typedef_ident_ = 
-# 1965 "parser_cocci_menhir.mly"
+# 1998 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5839 "parser_cocci_menhir.ml"
+# 5487 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5857,9 +5505,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_cond_expr_eexpr_dot_expressions_ = 
-# 1284 "parser_cocci_menhir.mly"
+# 1308 "parser_cocci_menhir.mly"
                                              ( _1 )
-# 5863 "parser_cocci_menhir.ml"
+# 5511 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5899,24 +5547,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let r : 'tv_cond_expr_eexpr_dot_expressions_ = Obj.magic r in
         let dd : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 5905 "parser_cocci_menhir.ml"
+# 5553 "parser_cocci_menhir.ml"
         ) = Obj.magic dd in
         let t : 'tv_option_eexpr_ = Obj.magic t in
         let w : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 5911 "parser_cocci_menhir.ml"
+# 5559 "parser_cocci_menhir.ml"
         ) = Obj.magic w in
         let l : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic l in
         let _startpos = _startpos_l_ in
         let _endpos = _endpos_r_ in
         let _v : 'tv_cond_expr_eexpr_dot_expressions_ = 
-# 1286 "parser_cocci_menhir.mly"
+# 1310 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.CondExpr (l, P.clt2mcode "?" w, t,
                                 P.clt2mcode ":" dd, r)) )
-# 5920 "parser_cocci_menhir.ml"
+# 5568 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5938,9 +5586,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_cond_expr_eexpr_nest_expressions_ = 
-# 1284 "parser_cocci_menhir.mly"
+# 1308 "parser_cocci_menhir.mly"
                                              ( _1 )
-# 5944 "parser_cocci_menhir.ml"
+# 5592 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5980,24 +5628,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let r : 'tv_cond_expr_eexpr_nest_expressions_ = Obj.magic r in
         let dd : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 5986 "parser_cocci_menhir.ml"
+# 5634 "parser_cocci_menhir.ml"
         ) = Obj.magic dd in
         let t : 'tv_option_eexpr_ = Obj.magic t in
         let w : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 5992 "parser_cocci_menhir.ml"
+# 5640 "parser_cocci_menhir.ml"
         ) = Obj.magic w in
         let l : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic l in
         let _startpos = _startpos_l_ in
         let _endpos = _endpos_r_ in
         let _v : 'tv_cond_expr_eexpr_nest_expressions_ = 
-# 1286 "parser_cocci_menhir.mly"
+# 1310 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.CondExpr (l, P.clt2mcode "?" w, t,
                                 P.clt2mcode ":" dd, r)) )
-# 6001 "parser_cocci_menhir.ml"
+# 5649 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6019,9 +5667,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_cond_expr_expr_invalid_ = 
-# 1284 "parser_cocci_menhir.mly"
+# 1308 "parser_cocci_menhir.mly"
                                              ( _1 )
-# 6025 "parser_cocci_menhir.ml"
+# 5673 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6061,24 +5709,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let r : 'tv_cond_expr_expr_invalid_ = Obj.magic r in
         let dd : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 6067 "parser_cocci_menhir.ml"
+# 5715 "parser_cocci_menhir.ml"
         ) = Obj.magic dd in
         let t : 'tv_option_eexpr_ = Obj.magic t in
         let w : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 6073 "parser_cocci_menhir.ml"
+# 5721 "parser_cocci_menhir.ml"
         ) = Obj.magic w in
         let l : 'tv_arith_expr_expr_invalid_ = Obj.magic l in
         let _startpos = _startpos_l_ in
         let _endpos = _endpos_r_ in
         let _v : 'tv_cond_expr_expr_invalid_ = 
-# 1286 "parser_cocci_menhir.mly"
+# 1310 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.CondExpr (l, P.clt2mcode "?" w, t,
                                 P.clt2mcode ":" dd, r)) )
-# 6082 "parser_cocci_menhir.ml"
+# 5730 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6097,16 +5745,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 32 "parser_cocci_menhir.mly"
+# 56 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6103 "parser_cocci_menhir.ml"
+# 5751 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_const_vol = 
-# 864 "parser_cocci_menhir.mly"
+# 912 "parser_cocci_menhir.mly"
                    ( P.clt2mcode Ast.Const _1 )
-# 6110 "parser_cocci_menhir.ml"
+# 5758 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6125,16 +5773,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 32 "parser_cocci_menhir.mly"
+# 56 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6131 "parser_cocci_menhir.ml"
+# 5779 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_const_vol = 
-# 865 "parser_cocci_menhir.mly"
+# 913 "parser_cocci_menhir.mly"
                    ( P.clt2mcode Ast.Volatile _1 )
-# 6138 "parser_cocci_menhir.ml"
+# 5786 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6145,13 +5793,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           });
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
-        let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
-        let _endpos = _startpos in
-        let _v : 'tv_continue_struct_decl_list = 
-# 614 "parser_cocci_menhir.mly"
-                                     ( [] )
-# 6155 "parser_cocci_menhir.ml"
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : 'tv_aexpr = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_continue_list_aexpr_TEllipsis_ = 
+# 1774 "parser_cocci_menhir.mly"
+       ( fun build_dots build_comma -> [_1] )
+# 5810 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6174,14 +5829,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             MenhirLib.EngineTypes.next = _menhir_stack;
             };
           } = _menhir_stack in
-        let _2 : 'tv_struct_decl_list_start = Obj.magic _2 in
-        let _1 : 'tv_struct_decl = Obj.magic _1 in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 5836 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_aexpr = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
-        let _v : 'tv_continue_struct_decl_list = 
-# 615 "parser_cocci_menhir.mly"
-                                     ( _1@_2 )
-# 6185 "parser_cocci_menhir.ml"
+        let _v : 'tv_continue_list_aexpr_TEllipsis_ = 
+# 1776 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      _1::[Ast0.wrap(build_comma(P.clt2mcode "," _2))] )
+# 5845 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6193,19 +5853,37 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = _1;
-          MenhirLib.EngineTypes.startp = _startpos__1_;
-          MenhirLib.EngineTypes.endp = _endpos__1_;
-          MenhirLib.EngineTypes.next = _menhir_stack;
+          MenhirLib.EngineTypes.semv = _3;
+          MenhirLib.EngineTypes.startp = _startpos__3_;
+          MenhirLib.EngineTypes.endp = _endpos__3_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = _2;
+            MenhirLib.EngineTypes.startp = _startpos__2_;
+            MenhirLib.EngineTypes.endp = _endpos__2_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = _1;
+              MenhirLib.EngineTypes.startp = _startpos__1_;
+              MenhirLib.EngineTypes.endp = _endpos__1_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
+            };
           } = _menhir_stack in
-        let _1 : 'tv_struct_decl = Obj.magic _1 in
+        let _3 : 'tv_nonempty_list_start_aexpr_TEllipsis_ = Obj.magic _3 in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 5877 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_aexpr = Obj.magic _1 in
         let _startpos = _startpos__1_ in
-        let _endpos = _endpos__1_ in
-        let _v : 'tv_continue_struct_decl_list = 
-# 616 "parser_cocci_menhir.mly"
-                                     ( _1 )
-# 6209 "parser_cocci_menhir.ml"
+        let _endpos = _endpos__3_ in
+        let _v : 'tv_continue_list_aexpr_TEllipsis_ = 
+# 1779 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      _1::(Ast0.wrap(build_comma(P.clt2mcode "," _2)))::
+      (_3 build_dots build_comma) )
+# 5887 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6217,63 +5895,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.semv = m;
-          MenhirLib.EngineTypes.startp = _startpos_m_;
-          MenhirLib.EngineTypes.endp = _endpos_m_;
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = ty00;
-            MenhirLib.EngineTypes.startp = _startpos_ty00_;
-            MenhirLib.EngineTypes.endp = _endpos_ty00_;
-            MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.state = _menhir_s;
-              MenhirLib.EngineTypes.semv = r0;
-              MenhirLib.EngineTypes.startp = _startpos_r0_;
-              MenhirLib.EngineTypes.endp = _endpos_r0_;
-              MenhirLib.EngineTypes.next = _menhir_stack;
-              };
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
             };
           } = _menhir_stack in
-        let m : 'tv_list_TMul_ = Obj.magic m in
-        let ty00 : (
-# 27 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 6241 "parser_cocci_menhir.ml"
-        ) = Obj.magic ty00 in
-        let r0 : (
-# 29 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 6246 "parser_cocci_menhir.ml"
-        ) = Obj.magic r0 in
-        let _startpos = _startpos_r0_ in
-        let _endpos = _endpos_m_ in
-        let _v : 'tv_ctype = let ty =
-          let ty0 = ty00 in
-          let r = r0 in
-          let ty =
-            let ty = ty0 in
-            
-# 499 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
-# 6258 "parser_cocci_menhir.ml"
-            
-          in
-          
-# 551 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 6264 "parser_cocci_menhir.ml"
-          
-        in
-        let cv =
-          
-# 39 "standard.mly"
-    ( None )
-# 6271 "parser_cocci_menhir.ml"
-          
-        in
-        
-# 559 "parser_cocci_menhir.mly"
-    ( P.pointerify (P.make_cv cv ty) m )
-# 6277 "parser_cocci_menhir.ml"
+        let _2 : 'tv_nonempty_list_start_aexpr_TEllipsis_ = Obj.magic _2 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_continue_list_aexpr_TEllipsis_ = 
+# 1782 "parser_cocci_menhir.mly"
+                                            ( _2 )
+# 5915 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6285,63 +5923,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.semv = m;
-          MenhirLib.EngineTypes.startp = _startpos_m_;
-          MenhirLib.EngineTypes.endp = _endpos_m_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = ty00;
-            MenhirLib.EngineTypes.startp = _startpos_ty00_;
-            MenhirLib.EngineTypes.endp = _endpos_ty00_;
-            MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.state = _menhir_s;
-              MenhirLib.EngineTypes.semv = r0;
-              MenhirLib.EngineTypes.startp = _startpos_r0_;
-              MenhirLib.EngineTypes.endp = _endpos_r0_;
-              MenhirLib.EngineTypes.next = _menhir_stack;
-              };
-            };
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let m : 'tv_list_TMul_ = Obj.magic m in
-        let ty00 : (
-# 27 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 6309 "parser_cocci_menhir.ml"
-        ) = Obj.magic ty00 in
-        let r0 : (
-# 29 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 6314 "parser_cocci_menhir.ml"
-        ) = Obj.magic r0 in
-        let _startpos = _startpos_r0_ in
-        let _endpos = _endpos_m_ in
-        let _v : 'tv_ctype = let ty =
-          let ty0 = ty00 in
-          let r = r0 in
-          let ty =
-            let ty = ty0 in
-            
-# 501 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
-# 6326 "parser_cocci_menhir.ml"
-            
-          in
-          
-# 551 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 6332 "parser_cocci_menhir.ml"
-          
-        in
-        let cv =
-          
-# 39 "standard.mly"
-    ( None )
-# 6339 "parser_cocci_menhir.ml"
-          
-        in
-        
-# 559 "parser_cocci_menhir.mly"
-    ( P.pointerify (P.make_cv cv ty) m )
-# 6345 "parser_cocci_menhir.ml"
+        let _1 : 'tv_dparam = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_continue_list_dparam_TEllipsis_ = 
+# 1774 "parser_cocci_menhir.mly"
+       ( fun build_dots build_comma -> [_1] )
+# 5939 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6353,63 +5947,30 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.semv = m;
-          MenhirLib.EngineTypes.startp = _startpos_m_;
-          MenhirLib.EngineTypes.endp = _endpos_m_;
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = ty00;
-            MenhirLib.EngineTypes.startp = _startpos_ty00_;
-            MenhirLib.EngineTypes.endp = _endpos_ty00_;
-            MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.state = _menhir_s;
-              MenhirLib.EngineTypes.semv = r0;
-              MenhirLib.EngineTypes.startp = _startpos_r0_;
-              MenhirLib.EngineTypes.endp = _endpos_r0_;
-              MenhirLib.EngineTypes.next = _menhir_stack;
-              };
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = _1;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
             };
           } = _menhir_stack in
-        let m : 'tv_list_TMul_ = Obj.magic m in
-        let ty00 : (
-# 27 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 6377 "parser_cocci_menhir.ml"
-        ) = Obj.magic ty00 in
-        let r0 : (
-# 29 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 6382 "parser_cocci_menhir.ml"
-        ) = Obj.magic r0 in
-        let _startpos = _startpos_r0_ in
-        let _endpos = _endpos_m_ in
-        let _v : 'tv_ctype = let ty =
-          let ty0 = ty00 in
-          let r = r0 in
-          let ty =
-            let ty = ty0 in
-            
-# 503 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
-# 6394 "parser_cocci_menhir.ml"
-            
-          in
-          
-# 551 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 6400 "parser_cocci_menhir.ml"
-          
-        in
-        let cv =
-          
-# 39 "standard.mly"
-    ( None )
-# 6407 "parser_cocci_menhir.ml"
-          
-        in
-        
-# 559 "parser_cocci_menhir.mly"
-    ( P.pointerify (P.make_cv cv ty) m )
-# 6413 "parser_cocci_menhir.ml"
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 5965 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_dparam = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_continue_list_dparam_TEllipsis_ = 
+# 1776 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      _1::[Ast0.wrap(build_comma(P.clt2mcode "," _2))] )
+# 5974 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6421,64 +5982,37 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.semv = m;
-          MenhirLib.EngineTypes.startp = _startpos_m_;
-          MenhirLib.EngineTypes.endp = _endpos_m_;
+          MenhirLib.EngineTypes.semv = _3;
+          MenhirLib.EngineTypes.startp = _startpos__3_;
+          MenhirLib.EngineTypes.endp = _endpos__3_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = p00;
-            MenhirLib.EngineTypes.startp = _startpos_p00_;
-            MenhirLib.EngineTypes.endp = _endpos_p00_;
+            MenhirLib.EngineTypes.semv = _2;
+            MenhirLib.EngineTypes.startp = _startpos__2_;
+            MenhirLib.EngineTypes.endp = _endpos__2_;
             MenhirLib.EngineTypes.next = {
               MenhirLib.EngineTypes.state = _menhir_s;
-              MenhirLib.EngineTypes.semv = r0;
-              MenhirLib.EngineTypes.startp = _startpos_r0_;
-              MenhirLib.EngineTypes.endp = _endpos_r0_;
+              MenhirLib.EngineTypes.semv = _1;
+              MenhirLib.EngineTypes.startp = _startpos__1_;
+              MenhirLib.EngineTypes.endp = _endpos__1_;
               MenhirLib.EngineTypes.next = _menhir_stack;
               };
             };
           } = _menhir_stack in
-        let m : 'tv_list_TMul_ = Obj.magic m in
-        let p00 : (
-# 43 "parser_cocci_menhir.mly"
-       (Parse_aux.info)
-# 6445 "parser_cocci_menhir.ml"
-        ) = Obj.magic p00 in
-        let r0 : (
-# 29 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 6450 "parser_cocci_menhir.ml"
-        ) = Obj.magic r0 in
-        let _startpos = _startpos_r0_ in
-        let _endpos = _endpos_m_ in
-        let _v : 'tv_ctype = let ty =
-          let p0 = p00 in
-          let r = r0 in
-          let ty =
-            let p = p0 in
-            
-# 505 "parser_cocci_menhir.mly"
-    ( let (nm,pure,clt) = p in
-      Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 6463 "parser_cocci_menhir.ml"
-            
-          in
-          
-# 551 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 6469 "parser_cocci_menhir.ml"
-          
-        in
-        let cv =
-          
-# 39 "standard.mly"
-    ( None )
-# 6476 "parser_cocci_menhir.ml"
-          
-        in
-        
-# 559 "parser_cocci_menhir.mly"
-    ( P.pointerify (P.make_cv cv ty) m )
-# 6482 "parser_cocci_menhir.ml"
+        let _3 : 'tv_nonempty_list_start_dparam_TEllipsis_ = Obj.magic _3 in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 6006 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_dparam = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__3_ in
+        let _v : 'tv_continue_list_dparam_TEllipsis_ = 
+# 1779 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      _1::(Ast0.wrap(build_comma(P.clt2mcode "," _2)))::
+      (_3 build_dots build_comma) )
+# 6016 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6490,84 +6024,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.semv = m;
-          MenhirLib.EngineTypes.startp = _startpos_m_;
-          MenhirLib.EngineTypes.endp = _endpos_m_;
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = p00;
-            MenhirLib.EngineTypes.startp = _startpos_p00_;
-            MenhirLib.EngineTypes.endp = _endpos_p00_;
-            MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.startp = _startpos__3_;
-              MenhirLib.EngineTypes.endp = _endpos__3_;
-              MenhirLib.EngineTypes.next = {
-                MenhirLib.EngineTypes.semv = r00;
-                MenhirLib.EngineTypes.startp = _startpos_r00_;
-                MenhirLib.EngineTypes.endp = _endpos_r00_;
-                MenhirLib.EngineTypes.next = {
-                  MenhirLib.EngineTypes.state = _menhir_s;
-                  MenhirLib.EngineTypes.semv = r1;
-                  MenhirLib.EngineTypes.startp = _startpos_r1_;
-                  MenhirLib.EngineTypes.endp = _endpos_r1_;
-                  MenhirLib.EngineTypes.next = _menhir_stack;
-                  };
-                };
-              };
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
             };
           } = _menhir_stack in
-        let m : 'tv_list_TMul_ = Obj.magic m in
-        let p00 : (
-# 37 "parser_cocci_menhir.mly"
-       (string * Data.clt)
-# 6523 "parser_cocci_menhir.ml"
-        ) = Obj.magic p00 in
-        let r00 : (
-# 25 "parser_cocci_menhir.mly"
-      (string)
-# 6528 "parser_cocci_menhir.ml"
-        ) = Obj.magic r00 in
-        let r1 : (
-# 29 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 6533 "parser_cocci_menhir.ml"
-        ) = Obj.magic r1 in
-        let _startpos = _startpos_r1_ in
-        let _endpos = _endpos_m_ in
-        let _v : 'tv_ctype = let ty =
-          let p0 = p00 in
-          let r0 = r00 in
-          let r = r1 in
-          let ty =
-            let p = p0 in
-            let r = r0 in
-            
-# 508 "parser_cocci_menhir.mly"
-    ( let nm = (r,P.id2name p) in
-    (* this is only possible when we are in a metavar decl.  Otherwise,
-       it will be represented already as a MetaType *)
-    let _ = P.check_meta(Ast.MetaTypeDecl(Ast.NONE,nm)) in
-    Ast0.wrap(Ast0.MetaType(P.clt2mcode nm (P.id2clt p),
-                           Ast0.Impure (*will be ignored*))) )
-# 6552 "parser_cocci_menhir.ml"
-            
-          in
-          
-# 551 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 6558 "parser_cocci_menhir.ml"
-          
-        in
-        let cv =
-          
-# 39 "standard.mly"
-    ( None )
-# 6565 "parser_cocci_menhir.ml"
-          
-        in
-        
-# 559 "parser_cocci_menhir.mly"
-    ( P.pointerify (P.make_cv cv ty) m )
-# 6571 "parser_cocci_menhir.ml"
+        let _2 : 'tv_nonempty_list_start_dparam_TEllipsis_ = Obj.magic _2 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_continue_list_dparam_TEllipsis_ = 
+# 1782 "parser_cocci_menhir.mly"
+                                            ( _2 )
+# 6044 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6579,63 +6052,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.semv = m;
-          MenhirLib.EngineTypes.startp = _startpos_m_;
-          MenhirLib.EngineTypes.endp = _endpos_m_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = ty00;
-            MenhirLib.EngineTypes.startp = _startpos_ty00_;
-            MenhirLib.EngineTypes.endp = _endpos_ty00_;
-            MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.state = _menhir_s;
-              MenhirLib.EngineTypes.semv = r0;
-              MenhirLib.EngineTypes.startp = _startpos_r0_;
-              MenhirLib.EngineTypes.endp = _endpos_r0_;
-              MenhirLib.EngineTypes.next = _menhir_stack;
-              };
-            };
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let m : 'tv_list_TMul_ = Obj.magic m in
-        let ty00 : (
-# 27 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 6603 "parser_cocci_menhir.ml"
-        ) = Obj.magic ty00 in
-        let r0 : (
-# 29 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 6608 "parser_cocci_menhir.ml"
-        ) = Obj.magic r0 in
-        let _startpos = _startpos_r0_ in
-        let _endpos = _endpos_m_ in
-        let _v : 'tv_ctype = let ty =
-          let ty0 = ty00 in
-          let r = r0 in
-          let ty =
-            let ty = ty0 in
-            
-# 515 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
-# 6620 "parser_cocci_menhir.ml"
-            
-          in
-          
-# 551 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 6626 "parser_cocci_menhir.ml"
-          
-        in
-        let cv =
-          
-# 39 "standard.mly"
-    ( None )
-# 6633 "parser_cocci_menhir.ml"
-          
-        in
-        
-# 559 "parser_cocci_menhir.mly"
-    ( P.pointerify (P.make_cv cv ty) m )
-# 6639 "parser_cocci_menhir.ml"
+        let _1 : 'tv_enum_decl_one = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_continue_list_enum_decl_one_edots_when_TEllipsis_enum_decl_one__ = 
+# 1774 "parser_cocci_menhir.mly"
+       ( fun build_dots build_comma -> [_1] )
+# 6068 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6647,78 +6076,30 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.semv = m;
-          MenhirLib.EngineTypes.startp = _startpos_m_;
-          MenhirLib.EngineTypes.endp = _endpos_m_;
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = ty200;
-            MenhirLib.EngineTypes.startp = _startpos_ty200_;
-            MenhirLib.EngineTypes.endp = _endpos_ty200_;
-            MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.semv = ty100;
-              MenhirLib.EngineTypes.startp = _startpos_ty100_;
-              MenhirLib.EngineTypes.endp = _endpos_ty100_;
-              MenhirLib.EngineTypes.next = {
-                MenhirLib.EngineTypes.state = _menhir_s;
-                MenhirLib.EngineTypes.semv = r0;
-                MenhirLib.EngineTypes.startp = _startpos_r0_;
-                MenhirLib.EngineTypes.endp = _endpos_r0_;
-                MenhirLib.EngineTypes.next = _menhir_stack;
-                };
-              };
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = _1;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
             };
           } = _menhir_stack in
-        let m : 'tv_list_TMul_ = Obj.magic m in
-        let ty200 : (
-# 27 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 6676 "parser_cocci_menhir.ml"
-        ) = Obj.magic ty200 in
-        let ty100 : (
-# 27 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 6681 "parser_cocci_menhir.ml"
-        ) = Obj.magic ty100 in
-        let r0 : (
-# 29 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 6686 "parser_cocci_menhir.ml"
-        ) = Obj.magic r0 in
-        let _startpos = _startpos_r0_ in
-        let _endpos = _endpos_m_ in
-        let _v : 'tv_ctype = let ty =
-          let ty20 = ty200 in
-          let ty10 = ty100 in
-          let r = r0 in
-          let ty =
-            let ty2 = ty20 in
-            let ty1 = ty10 in
-            
-# 517 "parser_cocci_menhir.mly"
-    ( Ast0.wrap
-       (Ast0.BaseType
-          (Ast.LongLongType,
-           [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
-# 6703 "parser_cocci_menhir.ml"
-            
-          in
-          
-# 551 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 6709 "parser_cocci_menhir.ml"
-          
-        in
-        let cv =
-          
-# 39 "standard.mly"
-    ( None )
-# 6716 "parser_cocci_menhir.ml"
-          
-        in
-        
-# 559 "parser_cocci_menhir.mly"
-    ( P.pointerify (P.make_cv cv ty) m )
-# 6722 "parser_cocci_menhir.ml"
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 6094 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_enum_decl_one = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_continue_list_enum_decl_one_edots_when_TEllipsis_enum_decl_one__ = 
+# 1776 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      _1::[Ast0.wrap(build_comma(P.clt2mcode "," _2))] )
+# 6103 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6730,9 +6111,537 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.semv = m;
-          MenhirLib.EngineTypes.startp = _startpos_m_;
-          MenhirLib.EngineTypes.endp = _endpos_m_;
+          MenhirLib.EngineTypes.semv = _3;
+          MenhirLib.EngineTypes.startp = _startpos__3_;
+          MenhirLib.EngineTypes.endp = _endpos__3_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = _2;
+            MenhirLib.EngineTypes.startp = _startpos__2_;
+            MenhirLib.EngineTypes.endp = _endpos__2_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = _1;
+              MenhirLib.EngineTypes.startp = _startpos__1_;
+              MenhirLib.EngineTypes.endp = _endpos__1_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
+            };
+          } = _menhir_stack in
+        let _3 : 'tv_nonempty_list_start_enum_decl_one_edots_when_TEllipsis_enum_decl_one__ = Obj.magic _3 in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 6135 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_enum_decl_one = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__3_ in
+        let _v : 'tv_continue_list_enum_decl_one_edots_when_TEllipsis_enum_decl_one__ = 
+# 1779 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      _1::(Ast0.wrap(build_comma(P.clt2mcode "," _2)))::
+      (_3 build_dots build_comma) )
+# 6145 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let _2 : 'tv_nonempty_list_start_enum_decl_one_edots_when_TEllipsis_enum_decl_one__ = Obj.magic _2 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_continue_list_enum_decl_one_edots_when_TEllipsis_enum_decl_one__ = 
+# 1782 "parser_cocci_menhir.mly"
+                                            ( _2 )
+# 6173 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : 'tv_initialize2 = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_continue_list_initialize2_edots_when_TEllipsis_initialize__ = 
+# 1774 "parser_cocci_menhir.mly"
+       ( fun build_dots build_comma -> [_1] )
+# 6197 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = _1;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 6223 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_initialize2 = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_continue_list_initialize2_edots_when_TEllipsis_initialize__ = 
+# 1776 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      _1::[Ast0.wrap(build_comma(P.clt2mcode "," _2))] )
+# 6232 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _3;
+          MenhirLib.EngineTypes.startp = _startpos__3_;
+          MenhirLib.EngineTypes.endp = _endpos__3_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = _2;
+            MenhirLib.EngineTypes.startp = _startpos__2_;
+            MenhirLib.EngineTypes.endp = _endpos__2_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = _1;
+              MenhirLib.EngineTypes.startp = _startpos__1_;
+              MenhirLib.EngineTypes.endp = _endpos__1_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
+            };
+          } = _menhir_stack in
+        let _3 : 'tv_nonempty_list_start_initialize2_edots_when_TEllipsis_initialize__ = Obj.magic _3 in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 6264 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_initialize2 = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__3_ in
+        let _v : 'tv_continue_list_initialize2_edots_when_TEllipsis_initialize__ = 
+# 1779 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      _1::(Ast0.wrap(build_comma(P.clt2mcode "," _2)))::
+      (_3 build_dots build_comma) )
+# 6274 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let _2 : 'tv_nonempty_list_start_initialize2_edots_when_TEllipsis_initialize__ = Obj.magic _2 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_continue_list_initialize2_edots_when_TEllipsis_initialize__ = 
+# 1782 "parser_cocci_menhir.mly"
+                                            ( _2 )
+# 6302 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : 'tv_one_dec_decl_ = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_continue_list_one_dec_decl__TEllipsis_ = 
+# 1774 "parser_cocci_menhir.mly"
+       ( fun build_dots build_comma -> [_1] )
+# 6326 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = _1;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 6352 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_one_dec_decl_ = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_continue_list_one_dec_decl__TEllipsis_ = 
+# 1776 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      _1::[Ast0.wrap(build_comma(P.clt2mcode "," _2))] )
+# 6361 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _3;
+          MenhirLib.EngineTypes.startp = _startpos__3_;
+          MenhirLib.EngineTypes.endp = _endpos__3_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = _2;
+            MenhirLib.EngineTypes.startp = _startpos__2_;
+            MenhirLib.EngineTypes.endp = _endpos__2_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = _1;
+              MenhirLib.EngineTypes.startp = _startpos__1_;
+              MenhirLib.EngineTypes.endp = _endpos__1_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
+            };
+          } = _menhir_stack in
+        let _3 : 'tv_nonempty_list_start_one_dec_decl__TEllipsis_ = Obj.magic _3 in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 6393 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_one_dec_decl_ = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__3_ in
+        let _v : 'tv_continue_list_one_dec_decl__TEllipsis_ = 
+# 1779 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      _1::(Ast0.wrap(build_comma(P.clt2mcode "," _2)))::
+      (_3 build_dots build_comma) )
+# 6403 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let _2 : 'tv_nonempty_list_start_one_dec_decl__TEllipsis_ = Obj.magic _2 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_continue_list_one_dec_decl__TEllipsis_ = 
+# 1782 "parser_cocci_menhir.mly"
+                                            ( _2 )
+# 6431 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : 'tv_one_dec_name_opt_decl_ = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_continue_list_one_dec_name_opt_decl__TEllipsis_ = 
+# 1774 "parser_cocci_menhir.mly"
+       ( fun build_dots build_comma -> [_1] )
+# 6455 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = _1;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 6481 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_one_dec_name_opt_decl_ = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_continue_list_one_dec_name_opt_decl__TEllipsis_ = 
+# 1776 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      _1::[Ast0.wrap(build_comma(P.clt2mcode "," _2))] )
+# 6490 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _3;
+          MenhirLib.EngineTypes.startp = _startpos__3_;
+          MenhirLib.EngineTypes.endp = _endpos__3_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = _2;
+            MenhirLib.EngineTypes.startp = _startpos__2_;
+            MenhirLib.EngineTypes.endp = _endpos__2_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = _1;
+              MenhirLib.EngineTypes.startp = _startpos__1_;
+              MenhirLib.EngineTypes.endp = _endpos__1_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
+            };
+          } = _menhir_stack in
+        let _3 : 'tv_nonempty_list_start_one_dec_name_opt_decl__TEllipsis_ = Obj.magic _3 in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 6522 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_one_dec_name_opt_decl_ = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__3_ in
+        let _v : 'tv_continue_list_one_dec_name_opt_decl__TEllipsis_ = 
+# 1779 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      _1::(Ast0.wrap(build_comma(P.clt2mcode "," _2)))::
+      (_3 build_dots build_comma) )
+# 6532 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let _2 : 'tv_nonempty_list_start_one_dec_name_opt_decl__TEllipsis_ = Obj.magic _2 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_continue_list_one_dec_name_opt_decl__TEllipsis_ = 
+# 1782 "parser_cocci_menhir.mly"
+                                            ( _2 )
+# 6560 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
+        let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
+        let _endpos = _startpos in
+        let _v : 'tv_continue_struct_decl_list = 
+# 646 "parser_cocci_menhir.mly"
+                                     ( [] )
+# 6577 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = _1;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let _2 : 'tv_struct_decl_list_start = Obj.magic _2 in
+        let _1 : 'tv_struct_decl = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_continue_struct_decl_list = 
+# 647 "parser_cocci_menhir.mly"
+                                     ( _1@_2 )
+# 6607 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : 'tv_struct_decl = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_continue_struct_decl_list = 
+# 648 "parser_cocci_menhir.mly"
+                                     ( _1 )
+# 6631 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = m;
+          MenhirLib.EngineTypes.startp = _startpos_m_;
+          MenhirLib.EngineTypes.endp = _endpos_m_;
           MenhirLib.EngineTypes.next = {
             MenhirLib.EngineTypes.semv = ty00;
             MenhirLib.EngineTypes.startp = _startpos_ty00_;
@@ -6748,14 +6657,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6754 "parser_cocci_menhir.ml"
+# 6663 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6759 "parser_cocci_menhir.ml"
+# 6668 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -6765,28 +6674,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 499 "parser_cocci_menhir.mly"
+# 523 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
-# 6771 "parser_cocci_menhir.ml"
+# 6680 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 6777 "parser_cocci_menhir.ml"
+# 580 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
+# 6686 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 6784 "parser_cocci_menhir.ml"
+# 6693 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 6790 "parser_cocci_menhir.ml"
+# 6699 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6816,14 +6725,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6822 "parser_cocci_menhir.ml"
+# 6731 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6827 "parser_cocci_menhir.ml"
+# 6736 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -6833,28 +6742,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 501 "parser_cocci_menhir.mly"
+# 525 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
-# 6839 "parser_cocci_menhir.ml"
+# 6748 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 6845 "parser_cocci_menhir.ml"
+# 580 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
+# 6754 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 6852 "parser_cocci_menhir.ml"
+# 6761 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 6858 "parser_cocci_menhir.ml"
+# 6767 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6884,14 +6793,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6890 "parser_cocci_menhir.ml"
+# 6799 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6895 "parser_cocci_menhir.ml"
+# 6804 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -6901,28 +6810,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 503 "parser_cocci_menhir.mly"
+# 527 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
-# 6907 "parser_cocci_menhir.ml"
+# 6816 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 6913 "parser_cocci_menhir.ml"
+# 580 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
+# 6822 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 6920 "parser_cocci_menhir.ml"
+# 6829 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 6926 "parser_cocci_menhir.ml"
+# 6835 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6952,14 +6861,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 43 "parser_cocci_menhir.mly"
+# 67 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 6958 "parser_cocci_menhir.ml"
+# 6867 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6963 "parser_cocci_menhir.ml"
+# 6872 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -6969,29 +6878,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 505 "parser_cocci_menhir.mly"
+# 529 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = p in
       Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 6976 "parser_cocci_menhir.ml"
+# 6885 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 6982 "parser_cocci_menhir.ml"
+# 580 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
+# 6891 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 6989 "parser_cocci_menhir.ml"
+# 6898 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 6995 "parser_cocci_menhir.ml"
+# 6904 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7030,19 +6939,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 37 "parser_cocci_menhir.mly"
+# 61 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 7036 "parser_cocci_menhir.ml"
+# 6945 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r00 : (
-# 25 "parser_cocci_menhir.mly"
+# 49 "parser_cocci_menhir.mly"
       (string)
-# 7041 "parser_cocci_menhir.ml"
+# 6950 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let r1 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 7046 "parser_cocci_menhir.ml"
+# 6955 "parser_cocci_menhir.ml"
         ) = Obj.magic r1 in
         let _startpos = _startpos_r1_ in
         let _endpos = _endpos_m_ in
@@ -7054,33 +6963,33 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let p = p0 in
             let r = r0 in
             
-# 508 "parser_cocci_menhir.mly"
+# 532 "parser_cocci_menhir.mly"
     ( let nm = (r,P.id2name p) in
     (* this is only possible when we are in a metavar decl.  Otherwise,
        it will be represented already as a MetaType *)
     let _ = P.check_meta(Ast.MetaTypeDecl(Ast.NONE,nm)) in
     Ast0.wrap(Ast0.MetaType(P.clt2mcode nm (P.id2clt p),
                            Ast0.Impure (*will be ignored*))) )
-# 7065 "parser_cocci_menhir.ml"
+# 6974 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 7071 "parser_cocci_menhir.ml"
+# 580 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
+# 6980 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7078 "parser_cocci_menhir.ml"
+# 6987 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7084 "parser_cocci_menhir.ml"
+# 6993 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7110,14 +7019,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 7116 "parser_cocci_menhir.ml"
+# 7025 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 7121 "parser_cocci_menhir.ml"
+# 7030 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -7127,28 +7036,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 515 "parser_cocci_menhir.mly"
+# 539 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
-# 7133 "parser_cocci_menhir.ml"
+# 7042 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 7139 "parser_cocci_menhir.ml"
+# 580 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
+# 7048 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7146 "parser_cocci_menhir.ml"
+# 7055 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7152 "parser_cocci_menhir.ml"
+# 7061 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7183,19 +7092,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty200 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 7189 "parser_cocci_menhir.ml"
+# 7098 "parser_cocci_menhir.ml"
         ) = Obj.magic ty200 in
         let ty100 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 7194 "parser_cocci_menhir.ml"
+# 7103 "parser_cocci_menhir.ml"
         ) = Obj.magic ty100 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 7199 "parser_cocci_menhir.ml"
+# 7108 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -7207,31 +7116,31 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let ty2 = ty20 in
             let ty1 = ty10 in
             
-# 517 "parser_cocci_menhir.mly"
+# 541 "parser_cocci_menhir.mly"
     ( Ast0.wrap
        (Ast0.BaseType
           (Ast.LongLongType,
            [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
-# 7216 "parser_cocci_menhir.ml"
+# 7125 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 7222 "parser_cocci_menhir.ml"
+# 580 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
+# 7131 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7229 "parser_cocci_menhir.ml"
+# 7138 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7235 "parser_cocci_menhir.ml"
+# 7144 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7247,48 +7156,59 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.startp = _startpos_m_;
           MenhirLib.EngineTypes.endp = _endpos_m_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
             MenhirLib.EngineTypes.semv = ty00;
             MenhirLib.EngineTypes.startp = _startpos_ty00_;
             MenhirLib.EngineTypes.endp = _endpos_ty00_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = r0;
+              MenhirLib.EngineTypes.startp = _startpos_r0_;
+              MenhirLib.EngineTypes.endp = _endpos_r0_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 7262 "parser_cocci_menhir.ml"
+# 7176 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
-        let _startpos = _startpos_ty00_ in
+        let r0 : (
+# 53 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 7181 "parser_cocci_menhir.ml"
+        ) = Obj.magic r0 in
+        let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
           let ty0 = ty00 in
+          let r = r0 in
           let ty =
             let ty = ty0 in
             
-# 499 "parser_cocci_menhir.mly"
+# 523 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
-# 7273 "parser_cocci_menhir.ml"
+# 7193 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
-                    ( ty )
-# 7279 "parser_cocci_menhir.ml"
+# 582 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
+# 7199 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7286 "parser_cocci_menhir.ml"
+# 7206 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7292 "parser_cocci_menhir.ml"
+# 7212 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7304,48 +7224,59 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.startp = _startpos_m_;
           MenhirLib.EngineTypes.endp = _endpos_m_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
             MenhirLib.EngineTypes.semv = ty00;
             MenhirLib.EngineTypes.startp = _startpos_ty00_;
             MenhirLib.EngineTypes.endp = _endpos_ty00_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
-          } = _menhir_stack in
-        let m : 'tv_list_TMul_ = Obj.magic m in
-        let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = r0;
+              MenhirLib.EngineTypes.startp = _startpos_r0_;
+              MenhirLib.EngineTypes.endp = _endpos_r0_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
+            };
+          } = _menhir_stack in
+        let m : 'tv_list_TMul_ = Obj.magic m in
+        let ty00 : (
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 7319 "parser_cocci_menhir.ml"
+# 7244 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
-        let _startpos = _startpos_ty00_ in
+        let r0 : (
+# 53 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 7249 "parser_cocci_menhir.ml"
+        ) = Obj.magic r0 in
+        let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
           let ty0 = ty00 in
+          let r = r0 in
           let ty =
             let ty = ty0 in
             
-# 501 "parser_cocci_menhir.mly"
+# 525 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
-# 7330 "parser_cocci_menhir.ml"
+# 7261 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
-                    ( ty )
-# 7336 "parser_cocci_menhir.ml"
+# 582 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
+# 7267 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7343 "parser_cocci_menhir.ml"
+# 7274 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7349 "parser_cocci_menhir.ml"
+# 7280 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7361,48 +7292,59 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.startp = _startpos_m_;
           MenhirLib.EngineTypes.endp = _endpos_m_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
             MenhirLib.EngineTypes.semv = ty00;
             MenhirLib.EngineTypes.startp = _startpos_ty00_;
             MenhirLib.EngineTypes.endp = _endpos_ty00_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = r0;
+              MenhirLib.EngineTypes.startp = _startpos_r0_;
+              MenhirLib.EngineTypes.endp = _endpos_r0_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 7376 "parser_cocci_menhir.ml"
+# 7312 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
-        let _startpos = _startpos_ty00_ in
+        let r0 : (
+# 53 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 7317 "parser_cocci_menhir.ml"
+        ) = Obj.magic r0 in
+        let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
           let ty0 = ty00 in
+          let r = r0 in
           let ty =
             let ty = ty0 in
             
-# 503 "parser_cocci_menhir.mly"
+# 527 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
-# 7387 "parser_cocci_menhir.ml"
+# 7329 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
-                    ( ty )
-# 7393 "parser_cocci_menhir.ml"
+# 582 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
+# 7335 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7400 "parser_cocci_menhir.ml"
+# 7342 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7406 "parser_cocci_menhir.ml"
+# 7348 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7418,49 +7360,60 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.startp = _startpos_m_;
           MenhirLib.EngineTypes.endp = _endpos_m_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
             MenhirLib.EngineTypes.semv = p00;
             MenhirLib.EngineTypes.startp = _startpos_p00_;
             MenhirLib.EngineTypes.endp = _endpos_p00_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = r0;
+              MenhirLib.EngineTypes.startp = _startpos_r0_;
+              MenhirLib.EngineTypes.endp = _endpos_r0_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 43 "parser_cocci_menhir.mly"
+# 67 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 7433 "parser_cocci_menhir.ml"
+# 7380 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
-        let _startpos = _startpos_p00_ in
+        let r0 : (
+# 53 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 7385 "parser_cocci_menhir.ml"
+        ) = Obj.magic r0 in
+        let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
           let p0 = p00 in
+          let r = r0 in
           let ty =
             let p = p0 in
             
-# 505 "parser_cocci_menhir.mly"
+# 529 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = p in
       Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 7445 "parser_cocci_menhir.ml"
+# 7398 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
-                    ( ty )
-# 7451 "parser_cocci_menhir.ml"
+# 582 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
+# 7404 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7458 "parser_cocci_menhir.ml"
+# 7411 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7464 "parser_cocci_menhir.ml"
+# 7417 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7480,65 +7433,76 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             MenhirLib.EngineTypes.startp = _startpos_p00_;
             MenhirLib.EngineTypes.endp = _endpos_p00_;
             MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.startp = _startpos__2_;
-              MenhirLib.EngineTypes.endp = _endpos__2_;
+              MenhirLib.EngineTypes.startp = _startpos__3_;
+              MenhirLib.EngineTypes.endp = _endpos__3_;
               MenhirLib.EngineTypes.next = {
-                MenhirLib.EngineTypes.state = _menhir_s;
                 MenhirLib.EngineTypes.semv = r00;
                 MenhirLib.EngineTypes.startp = _startpos_r00_;
                 MenhirLib.EngineTypes.endp = _endpos_r00_;
-                MenhirLib.EngineTypes.next = _menhir_stack;
+                MenhirLib.EngineTypes.next = {
+                  MenhirLib.EngineTypes.state = _menhir_s;
+                  MenhirLib.EngineTypes.semv = r1;
+                  MenhirLib.EngineTypes.startp = _startpos_r1_;
+                  MenhirLib.EngineTypes.endp = _endpos_r1_;
+                  MenhirLib.EngineTypes.next = _menhir_stack;
+                  };
                 };
               };
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 37 "parser_cocci_menhir.mly"
+# 61 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 7500 "parser_cocci_menhir.ml"
+# 7458 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r00 : (
-# 25 "parser_cocci_menhir.mly"
+# 49 "parser_cocci_menhir.mly"
       (string)
-# 7505 "parser_cocci_menhir.ml"
+# 7463 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
-        let _startpos = _startpos_r00_ in
+        let r1 : (
+# 53 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 7468 "parser_cocci_menhir.ml"
+        ) = Obj.magic r1 in
+        let _startpos = _startpos_r1_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
           let p0 = p00 in
           let r0 = r00 in
+          let r = r1 in
           let ty =
             let p = p0 in
             let r = r0 in
             
-# 508 "parser_cocci_menhir.mly"
+# 532 "parser_cocci_menhir.mly"
     ( let nm = (r,P.id2name p) in
     (* this is only possible when we are in a metavar decl.  Otherwise,
        it will be represented already as a MetaType *)
     let _ = P.check_meta(Ast.MetaTypeDecl(Ast.NONE,nm)) in
     Ast0.wrap(Ast0.MetaType(P.clt2mcode nm (P.id2clt p),
                            Ast0.Impure (*will be ignored*))) )
-# 7523 "parser_cocci_menhir.ml"
+# 7487 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
-                    ( ty )
-# 7529 "parser_cocci_menhir.ml"
+# 582 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
+# 7493 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7536 "parser_cocci_menhir.ml"
+# 7500 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7542 "parser_cocci_menhir.ml"
+# 7506 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7554,48 +7518,59 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.startp = _startpos_m_;
           MenhirLib.EngineTypes.endp = _endpos_m_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
             MenhirLib.EngineTypes.semv = ty00;
             MenhirLib.EngineTypes.startp = _startpos_ty00_;
             MenhirLib.EngineTypes.endp = _endpos_ty00_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = r0;
+              MenhirLib.EngineTypes.startp = _startpos_r0_;
+              MenhirLib.EngineTypes.endp = _endpos_r0_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 7569 "parser_cocci_menhir.ml"
+# 7538 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
-        let _startpos = _startpos_ty00_ in
+        let r0 : (
+# 53 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 7543 "parser_cocci_menhir.ml"
+        ) = Obj.magic r0 in
+        let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
           let ty0 = ty00 in
+          let r = r0 in
           let ty =
             let ty = ty0 in
             
-# 515 "parser_cocci_menhir.mly"
+# 539 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
-# 7580 "parser_cocci_menhir.ml"
+# 7555 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
-                    ( ty )
-# 7586 "parser_cocci_menhir.ml"
+# 582 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
+# 7561 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7593 "parser_cocci_menhir.ml"
+# 7568 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7599 "parser_cocci_menhir.ml"
+# 7574 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7615,59 +7590,70 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             MenhirLib.EngineTypes.startp = _startpos_ty200_;
             MenhirLib.EngineTypes.endp = _endpos_ty200_;
             MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.state = _menhir_s;
               MenhirLib.EngineTypes.semv = ty100;
               MenhirLib.EngineTypes.startp = _startpos_ty100_;
               MenhirLib.EngineTypes.endp = _endpos_ty100_;
-              MenhirLib.EngineTypes.next = _menhir_stack;
+              MenhirLib.EngineTypes.next = {
+                MenhirLib.EngineTypes.state = _menhir_s;
+                MenhirLib.EngineTypes.semv = r0;
+                MenhirLib.EngineTypes.startp = _startpos_r0_;
+                MenhirLib.EngineTypes.endp = _endpos_r0_;
+                MenhirLib.EngineTypes.next = _menhir_stack;
+                };
               };
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty200 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 7631 "parser_cocci_menhir.ml"
+# 7611 "parser_cocci_menhir.ml"
         ) = Obj.magic ty200 in
         let ty100 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 7636 "parser_cocci_menhir.ml"
+# 7616 "parser_cocci_menhir.ml"
         ) = Obj.magic ty100 in
-        let _startpos = _startpos_ty100_ in
+        let r0 : (
+# 53 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 7621 "parser_cocci_menhir.ml"
+        ) = Obj.magic r0 in
+        let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
           let ty20 = ty200 in
           let ty10 = ty100 in
+          let r = r0 in
           let ty =
             let ty2 = ty20 in
             let ty1 = ty10 in
             
-# 517 "parser_cocci_menhir.mly"
+# 541 "parser_cocci_menhir.mly"
     ( Ast0.wrap
        (Ast0.BaseType
           (Ast.LongLongType,
            [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
-# 7652 "parser_cocci_menhir.ml"
+# 7638 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
-                    ( ty )
-# 7658 "parser_cocci_menhir.ml"
+# 582 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
+# 7644 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7665 "parser_cocci_menhir.ml"
+# 7651 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7671 "parser_cocci_menhir.ml"
+# 7657 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7692,9 +7678,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 28 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 7698 "parser_cocci_menhir.ml"
+# 7684 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
@@ -7703,28 +7689,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 525 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.BaseType(Ast.VoidType,[P.clt2mcode "void" ty])) )
-# 7709 "parser_cocci_menhir.ml"
+# 523 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
+# 7695 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
-                        ( ty )
-# 7715 "parser_cocci_menhir.ml"
+# 583 "parser_cocci_menhir.mly"
+                    ( ty )
+# 7701 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7722 "parser_cocci_menhir.ml"
+# 7708 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7728 "parser_cocci_menhir.ml"
+# 7714 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7749,9 +7735,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 7755 "parser_cocci_menhir.ml"
+# 7741 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
@@ -7760,28 +7746,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 527 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.BaseType(Ast.DoubleType,[P.clt2mcode "double" ty])) )
-# 7766 "parser_cocci_menhir.ml"
+# 525 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
+# 7752 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
-                        ( ty )
-# 7772 "parser_cocci_menhir.ml"
+# 583 "parser_cocci_menhir.mly"
+                    ( ty )
+# 7758 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7779 "parser_cocci_menhir.ml"
+# 7765 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7785 "parser_cocci_menhir.ml"
+# 7771 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7806,9 +7792,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 7812 "parser_cocci_menhir.ml"
+# 7798 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
@@ -7817,28 +7803,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 529 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.BaseType(Ast.FloatType,[P.clt2mcode "float" ty])) )
-# 7823 "parser_cocci_menhir.ml"
+# 527 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
+# 7809 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
-                        ( ty )
-# 7829 "parser_cocci_menhir.ml"
+# 583 "parser_cocci_menhir.mly"
+                    ( ty )
+# 7815 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7836 "parser_cocci_menhir.ml"
+# 7822 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7842 "parser_cocci_menhir.ml"
+# 7828 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7854,56 +7840,49 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.startp = _startpos_m_;
           MenhirLib.EngineTypes.endp = _endpos_m_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = i00;
-            MenhirLib.EngineTypes.startp = _startpos_i00_;
-            MenhirLib.EngineTypes.endp = _endpos_i00_;
-            MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.state = _menhir_s;
-              MenhirLib.EngineTypes.semv = s00;
-              MenhirLib.EngineTypes.startp = _startpos_s00_;
-              MenhirLib.EngineTypes.endp = _endpos_s00_;
-              MenhirLib.EngineTypes.next = _menhir_stack;
-              };
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = p00;
+            MenhirLib.EngineTypes.startp = _startpos_p00_;
+            MenhirLib.EngineTypes.endp = _endpos_p00_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
-        let i00 : 'tv_ident = Obj.magic i00 in
-        let s00 : (
-# 28 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 7875 "parser_cocci_menhir.ml"
-        ) = Obj.magic s00 in
-        let _startpos = _startpos_s00_ in
+        let p00 : (
+# 67 "parser_cocci_menhir.mly"
+       (Parse_aux.info)
+# 7855 "parser_cocci_menhir.ml"
+        ) = Obj.magic p00 in
+        let _startpos = _startpos_p00_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
-          let i0 = i00 in
-          let s0 = s00 in
+          let p0 = p00 in
           let ty =
-            let i = i0 in
-            let s = s0 in
+            let p = p0 in
             
-# 531 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, i)) )
-# 7888 "parser_cocci_menhir.ml"
+# 529 "parser_cocci_menhir.mly"
+    ( let (nm,pure,clt) = p in
+      Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
+# 7867 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
-                        ( ty )
-# 7894 "parser_cocci_menhir.ml"
+# 583 "parser_cocci_menhir.mly"
+                    ( ty )
+# 7873 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7901 "parser_cocci_menhir.ml"
+# 7880 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7907 "parser_cocci_menhir.ml"
+# 7886 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7919,52 +7898,69 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.startp = _startpos_m_;
           MenhirLib.EngineTypes.endp = _endpos_m_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = i00;
-            MenhirLib.EngineTypes.startp = _startpos_i00_;
-            MenhirLib.EngineTypes.endp = _endpos_i00_;
+            MenhirLib.EngineTypes.semv = p00;
+            MenhirLib.EngineTypes.startp = _startpos_p00_;
+            MenhirLib.EngineTypes.endp = _endpos_p00_;
             MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.state = _menhir_s;
-              MenhirLib.EngineTypes.semv = s00;
-              MenhirLib.EngineTypes.startp = _startpos_s00_;
-              MenhirLib.EngineTypes.endp = _endpos_s00_;
-              MenhirLib.EngineTypes.next = _menhir_stack;
+              MenhirLib.EngineTypes.startp = _startpos__2_;
+              MenhirLib.EngineTypes.endp = _endpos__2_;
+              MenhirLib.EngineTypes.next = {
+                MenhirLib.EngineTypes.state = _menhir_s;
+                MenhirLib.EngineTypes.semv = r00;
+                MenhirLib.EngineTypes.startp = _startpos_r00_;
+                MenhirLib.EngineTypes.endp = _endpos_r00_;
+                MenhirLib.EngineTypes.next = _menhir_stack;
+                };
               };
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
-        let i00 : 'tv_ident = Obj.magic i00 in
-        let s00 : 'tv_struct_or_union = Obj.magic s00 in
-        let _startpos = _startpos_s00_ in
+        let p00 : (
+# 61 "parser_cocci_menhir.mly"
+       (string * Data.clt)
+# 7922 "parser_cocci_menhir.ml"
+        ) = Obj.magic p00 in
+        let r00 : (
+# 49 "parser_cocci_menhir.mly"
+      (string)
+# 7927 "parser_cocci_menhir.ml"
+        ) = Obj.magic r00 in
+        let _startpos = _startpos_r00_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
-          let i0 = i00 in
-          let s0 = s00 in
+          let p0 = p00 in
+          let r0 = r00 in
           let ty =
-            let i = i0 in
-            let s = s0 in
+            let p = p0 in
+            let r = r0 in
             
-# 533 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.StructUnionName(s, Some i)) )
-# 7949 "parser_cocci_menhir.ml"
+# 532 "parser_cocci_menhir.mly"
+    ( let nm = (r,P.id2name p) in
+    (* this is only possible when we are in a metavar decl.  Otherwise,
+       it will be represented already as a MetaType *)
+    let _ = P.check_meta(Ast.MetaTypeDecl(Ast.NONE,nm)) in
+    Ast0.wrap(Ast0.MetaType(P.clt2mcode nm (P.id2clt p),
+                           Ast0.Impure (*will be ignored*))) )
+# 7945 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
-                        ( ty )
-# 7955 "parser_cocci_menhir.ml"
+# 583 "parser_cocci_menhir.mly"
+                    ( ty )
+# 7951 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7962 "parser_cocci_menhir.ml"
+# 7958 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7968 "parser_cocci_menhir.ml"
+# 7964 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7980,87 +7976,48 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.startp = _startpos_m_;
           MenhirLib.EngineTypes.endp = _endpos_m_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = r00;
-            MenhirLib.EngineTypes.startp = _startpos_r00_;
-            MenhirLib.EngineTypes.endp = _endpos_r00_;
-            MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.semv = d00;
-              MenhirLib.EngineTypes.startp = _startpos_d00_;
-              MenhirLib.EngineTypes.endp = _endpos_d00_;
-              MenhirLib.EngineTypes.next = {
-                MenhirLib.EngineTypes.semv = l00;
-                MenhirLib.EngineTypes.startp = _startpos_l00_;
-                MenhirLib.EngineTypes.endp = _endpos_l00_;
-                MenhirLib.EngineTypes.next = {
-                  MenhirLib.EngineTypes.state = _menhir_s;
-                  MenhirLib.EngineTypes.semv = s00;
-                  MenhirLib.EngineTypes.startp = _startpos_s00_;
-                  MenhirLib.EngineTypes.endp = _endpos_s00_;
-                  MenhirLib.EngineTypes.next = _menhir_stack;
-                  };
-                };
-              };
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = ty00;
+            MenhirLib.EngineTypes.startp = _startpos_ty00_;
+            MenhirLib.EngineTypes.endp = _endpos_ty00_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
-        let r00 : (
-# 80 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 8010 "parser_cocci_menhir.ml"
-        ) = Obj.magic r00 in
-        let d00 : 'tv_struct_decl_list = Obj.magic d00 in
-        let l00 : (
-# 80 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 8016 "parser_cocci_menhir.ml"
-        ) = Obj.magic l00 in
-        let s00 : 'tv_struct_or_union = Obj.magic s00 in
-        let _startpos = _startpos_s00_ in
+        let ty00 : (
+# 51 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 7991 "parser_cocci_menhir.ml"
+        ) = Obj.magic ty00 in
+        let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
-          let r0 = r00 in
-          let d0 = d00 in
-          let l0 = l00 in
-          let s0 = s00 in
+          let ty0 = ty00 in
           let ty =
-            let r = r0 in
-            let d = d0 in
-            let l = l0 in
-            let s = s0 in
-            let i =
-              
-# 39 "standard.mly"
-    ( None )
-# 8035 "parser_cocci_menhir.ml"
-              
-            in
+            let ty = ty0 in
             
-# 536 "parser_cocci_menhir.mly"
-    ( (if i = None && !Data.in_iso
-    then failwith "structures must be named in the iso file");
-      Ast0.wrap(Ast0.StructUnionDef(Ast0.wrap(Ast0.StructUnionName(s, i)),
-                                   P.clt2mcode "{" l,
-                                   d, P.clt2mcode "}" r)) )
-# 8045 "parser_cocci_menhir.ml"
+# 539 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
+# 8002 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
-                        ( ty )
-# 8051 "parser_cocci_menhir.ml"
+# 583 "parser_cocci_menhir.mly"
+                    ( ty )
+# 8008 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 8058 "parser_cocci_menhir.ml"
+# 8015 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 8064 "parser_cocci_menhir.ml"
+# 8021 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -8076,96 +8033,63 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.startp = _startpos_m_;
           MenhirLib.EngineTypes.endp = _endpos_m_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = r00;
-            MenhirLib.EngineTypes.startp = _startpos_r00_;
-            MenhirLib.EngineTypes.endp = _endpos_r00_;
+            MenhirLib.EngineTypes.semv = ty200;
+            MenhirLib.EngineTypes.startp = _startpos_ty200_;
+            MenhirLib.EngineTypes.endp = _endpos_ty200_;
             MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.semv = d00;
-              MenhirLib.EngineTypes.startp = _startpos_d00_;
-              MenhirLib.EngineTypes.endp = _endpos_d00_;
-              MenhirLib.EngineTypes.next = {
-                MenhirLib.EngineTypes.semv = l00;
-                MenhirLib.EngineTypes.startp = _startpos_l00_;
-                MenhirLib.EngineTypes.endp = _endpos_l00_;
-                MenhirLib.EngineTypes.next = {
-                  MenhirLib.EngineTypes.semv = x000;
-                  MenhirLib.EngineTypes.startp = _startpos_x000_;
-                  MenhirLib.EngineTypes.endp = _endpos_x000_;
-                  MenhirLib.EngineTypes.next = {
-                    MenhirLib.EngineTypes.state = _menhir_s;
-                    MenhirLib.EngineTypes.semv = s00;
-                    MenhirLib.EngineTypes.startp = _startpos_s00_;
-                    MenhirLib.EngineTypes.endp = _endpos_s00_;
-                    MenhirLib.EngineTypes.next = _menhir_stack;
-                    };
-                  };
-                };
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = ty100;
+              MenhirLib.EngineTypes.startp = _startpos_ty100_;
+              MenhirLib.EngineTypes.endp = _endpos_ty100_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
               };
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
-        let r00 : (
-# 80 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 8111 "parser_cocci_menhir.ml"
-        ) = Obj.magic r00 in
-        let d00 : 'tv_struct_decl_list = Obj.magic d00 in
-        let l00 : (
-# 80 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 8117 "parser_cocci_menhir.ml"
-        ) = Obj.magic l00 in
-        let x000 : 'tv_ident = Obj.magic x000 in
-        let s00 : 'tv_struct_or_union = Obj.magic s00 in
-        let _startpos = _startpos_s00_ in
+        let ty200 : (
+# 51 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 8053 "parser_cocci_menhir.ml"
+        ) = Obj.magic ty200 in
+        let ty100 : (
+# 51 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 8058 "parser_cocci_menhir.ml"
+        ) = Obj.magic ty100 in
+        let _startpos = _startpos_ty100_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
-          let r0 = r00 in
-          let d0 = d00 in
-          let l0 = l00 in
-          let x00 = x000 in
-          let s0 = s00 in
+          let ty20 = ty200 in
+          let ty10 = ty100 in
           let ty =
-            let r = r0 in
-            let d = d0 in
-            let l = l0 in
-            let x0 = x00 in
-            let s = s0 in
-            let i =
-              let x = x0 in
-              
-# 41 "standard.mly"
-    ( Some x )
-# 8140 "parser_cocci_menhir.ml"
-              
-            in
+            let ty2 = ty20 in
+            let ty1 = ty10 in
             
-# 536 "parser_cocci_menhir.mly"
-    ( (if i = None && !Data.in_iso
-    then failwith "structures must be named in the iso file");
-      Ast0.wrap(Ast0.StructUnionDef(Ast0.wrap(Ast0.StructUnionName(s, i)),
-                                   P.clt2mcode "{" l,
-                                   d, P.clt2mcode "}" r)) )
-# 8150 "parser_cocci_menhir.ml"
+# 541 "parser_cocci_menhir.mly"
+    ( Ast0.wrap
+       (Ast0.BaseType
+          (Ast.LongLongType,
+           [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
+# 8074 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
-                        ( ty )
-# 8156 "parser_cocci_menhir.ml"
+# 583 "parser_cocci_menhir.mly"
+                    ( ty )
+# 8080 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 8163 "parser_cocci_menhir.ml"
+# 8087 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 8169 "parser_cocci_menhir.ml"
+# 8093 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -8181,82 +8105,48 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.startp = _startpos_m_;
           MenhirLib.EngineTypes.endp = _endpos_m_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = r00;
-            MenhirLib.EngineTypes.startp = _startpos_r00_;
-            MenhirLib.EngineTypes.endp = _endpos_r00_;
-            MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.semv = d00;
-              MenhirLib.EngineTypes.startp = _startpos_d00_;
-              MenhirLib.EngineTypes.endp = _endpos_d00_;
-              MenhirLib.EngineTypes.next = {
-                MenhirLib.EngineTypes.semv = l00;
-                MenhirLib.EngineTypes.startp = _startpos_l00_;
-                MenhirLib.EngineTypes.endp = _endpos_l00_;
-                MenhirLib.EngineTypes.next = {
-                  MenhirLib.EngineTypes.state = _menhir_s;
-                  MenhirLib.EngineTypes.semv = s00;
-                  MenhirLib.EngineTypes.startp = _startpos_s00_;
-                  MenhirLib.EngineTypes.endp = _endpos_s00_;
-                  MenhirLib.EngineTypes.next = _menhir_stack;
-                  };
-                };
-              };
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = ty00;
+            MenhirLib.EngineTypes.startp = _startpos_ty00_;
+            MenhirLib.EngineTypes.endp = _endpos_ty00_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
-        let r00 : (
-# 80 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 8211 "parser_cocci_menhir.ml"
-        ) = Obj.magic r00 in
-        let d00 : 'tv_struct_decl_list = Obj.magic d00 in
-        let l00 : (
-# 80 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 8217 "parser_cocci_menhir.ml"
-        ) = Obj.magic l00 in
-        let s00 : (
-# 43 "parser_cocci_menhir.mly"
-       (Parse_aux.info)
-# 8222 "parser_cocci_menhir.ml"
-        ) = Obj.magic s00 in
-        let _startpos = _startpos_s00_ in
+        let ty00 : (
+# 52 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 8120 "parser_cocci_menhir.ml"
+        ) = Obj.magic ty00 in
+        let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
-          let r0 = r00 in
-          let d0 = d00 in
-          let l0 = l00 in
-          let s0 = s00 in
+          let ty0 = ty00 in
           let ty =
-            let r = r0 in
-            let d = d0 in
-            let l = l0 in
-            let s = s0 in
+            let ty = ty0 in
             
-# 542 "parser_cocci_menhir.mly"
-    ( let (nm,pure,clt) = s in
-    let ty = Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) in
-    Ast0.wrap(Ast0.StructUnionDef(ty,P.clt2mcode "{" l,d,P.clt2mcode "}" r)) )
-# 8241 "parser_cocci_menhir.ml"
+# 549 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.BaseType(Ast.VoidType,[P.clt2mcode "void" ty])) )
+# 8131 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 8247 "parser_cocci_menhir.ml"
+# 8137 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 8254 "parser_cocci_menhir.ml"
+# 8144 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 8260 "parser_cocci_menhir.ml"
+# 8150 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -8273,47 +8163,47 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos_m_;
           MenhirLib.EngineTypes.next = {
             MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = p00;
-            MenhirLib.EngineTypes.startp = _startpos_p00_;
-            MenhirLib.EngineTypes.endp = _endpos_p00_;
+            MenhirLib.EngineTypes.semv = ty00;
+            MenhirLib.EngineTypes.startp = _startpos_ty00_;
+            MenhirLib.EngineTypes.endp = _endpos_ty00_;
             MenhirLib.EngineTypes.next = _menhir_stack;
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
-        let p00 : (
-# 37 "parser_cocci_menhir.mly"
-       (string * Data.clt)
-# 8287 "parser_cocci_menhir.ml"
-        ) = Obj.magic p00 in
-        let _startpos = _startpos_p00_ in
+        let ty00 : (
+# 51 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 8177 "parser_cocci_menhir.ml"
+        ) = Obj.magic ty00 in
+        let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
-          let p0 = p00 in
+          let ty0 = ty00 in
           let ty =
-            let p = p0 in
+            let ty = ty0 in
             
-# 546 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.TypeName(P.id2mcode p)) )
-# 8298 "parser_cocci_menhir.ml"
+# 551 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.BaseType(Ast.DoubleType,[P.clt2mcode "double" ty])) )
+# 8188 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 8304 "parser_cocci_menhir.ml"
+# 8194 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 8311 "parser_cocci_menhir.ml"
+# 8201 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 8317 "parser_cocci_menhir.ml"
+# 8207 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -8329,141 +8219,48 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.startp = _startpos_m_;
           MenhirLib.EngineTypes.endp = _endpos_m_;
           MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
             MenhirLib.EngineTypes.semv = ty00;
             MenhirLib.EngineTypes.startp = _startpos_ty00_;
             MenhirLib.EngineTypes.endp = _endpos_ty00_;
-            MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.semv = r0;
-              MenhirLib.EngineTypes.startp = _startpos_r0_;
-              MenhirLib.EngineTypes.endp = _endpos_r0_;
-              MenhirLib.EngineTypes.next = {
-                MenhirLib.EngineTypes.state = _menhir_s;
-                MenhirLib.EngineTypes.semv = x0;
-                MenhirLib.EngineTypes.startp = _startpos_x0_;
-                MenhirLib.EngineTypes.endp = _endpos_x0_;
-                MenhirLib.EngineTypes.next = _menhir_stack;
-                };
-              };
+            MenhirLib.EngineTypes.next = _menhir_stack;
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8354 "parser_cocci_menhir.ml"
+# 8234 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
-        let r0 : (
-# 29 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 8359 "parser_cocci_menhir.ml"
-        ) = Obj.magic r0 in
-        let x0 : 'tv_const_vol = Obj.magic x0 in
-        let _startpos = _startpos_x0_ in
+        let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
           let ty0 = ty00 in
-          let r = r0 in
           let ty =
             let ty = ty0 in
             
-# 499 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
-# 8372 "parser_cocci_menhir.ml"
+# 553 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.BaseType(Ast.FloatType,[P.clt2mcode "float" ty])) )
+# 8245 "parser_cocci_menhir.ml"
             
           in
           
-# 551 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 8378 "parser_cocci_menhir.ml"
+# 584 "parser_cocci_menhir.mly"
+                        ( ty )
+# 8251 "parser_cocci_menhir.ml"
           
         in
         let cv =
-          let x = x0 in
           
-# 41 "standard.mly"
-    ( Some x )
-# 8386 "parser_cocci_menhir.ml"
-          
-        in
-        
-# 559 "parser_cocci_menhir.mly"
-    ( P.pointerify (P.make_cv cv ty) m )
-# 8392 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = m;
-          MenhirLib.EngineTypes.startp = _startpos_m_;
-          MenhirLib.EngineTypes.endp = _endpos_m_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = ty00;
-            MenhirLib.EngineTypes.startp = _startpos_ty00_;
-            MenhirLib.EngineTypes.endp = _endpos_ty00_;
-            MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.semv = r0;
-              MenhirLib.EngineTypes.startp = _startpos_r0_;
-              MenhirLib.EngineTypes.endp = _endpos_r0_;
-              MenhirLib.EngineTypes.next = {
-                MenhirLib.EngineTypes.state = _menhir_s;
-                MenhirLib.EngineTypes.semv = x0;
-                MenhirLib.EngineTypes.startp = _startpos_x0_;
-                MenhirLib.EngineTypes.endp = _endpos_x0_;
-                MenhirLib.EngineTypes.next = _menhir_stack;
-                };
-              };
-            };
-          } = _menhir_stack in
-        let m : 'tv_list_TMul_ = Obj.magic m in
-        let ty00 : (
-# 27 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 8429 "parser_cocci_menhir.ml"
-        ) = Obj.magic ty00 in
-        let r0 : (
-# 29 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 8434 "parser_cocci_menhir.ml"
-        ) = Obj.magic r0 in
-        let x0 : 'tv_const_vol = Obj.magic x0 in
-        let _startpos = _startpos_x0_ in
-        let _endpos = _endpos_m_ in
-        let _v : 'tv_ctype = let ty =
-          let ty0 = ty00 in
-          let r = r0 in
-          let ty =
-            let ty = ty0 in
-            
-# 501 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
-# 8447 "parser_cocci_menhir.ml"
-            
-          in
-          
-# 551 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 8453 "parser_cocci_menhir.ml"
-          
-        in
-        let cv =
-          let x = x0 in
-          
-# 41 "standard.mly"
-    ( Some x )
-# 8461 "parser_cocci_menhir.ml"
+# 39 "standard.mly"
+    ( None )
+# 8258 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 8467 "parser_cocci_menhir.ml"
+# 8264 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -8479,66 +8276,56 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.startp = _startpos_m_;
           MenhirLib.EngineTypes.endp = _endpos_m_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = ty00;
-            MenhirLib.EngineTypes.startp = _startpos_ty00_;
-            MenhirLib.EngineTypes.endp = _endpos_ty00_;
+            MenhirLib.EngineTypes.semv = i00;
+            MenhirLib.EngineTypes.startp = _startpos_i00_;
+            MenhirLib.EngineTypes.endp = _endpos_i00_;
             MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.semv = r0;
-              MenhirLib.EngineTypes.startp = _startpos_r0_;
-              MenhirLib.EngineTypes.endp = _endpos_r0_;
-              MenhirLib.EngineTypes.next = {
-                MenhirLib.EngineTypes.state = _menhir_s;
-                MenhirLib.EngineTypes.semv = x0;
-                MenhirLib.EngineTypes.startp = _startpos_x0_;
-                MenhirLib.EngineTypes.endp = _endpos_x0_;
-                MenhirLib.EngineTypes.next = _menhir_stack;
-                };
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = s00;
+              MenhirLib.EngineTypes.startp = _startpos_s00_;
+              MenhirLib.EngineTypes.endp = _endpos_s00_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
               };
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
-        let ty00 : (
-# 27 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 8504 "parser_cocci_menhir.ml"
-        ) = Obj.magic ty00 in
-        let r0 : (
-# 29 "parser_cocci_menhir.mly"
+        let i00 : 'tv_ident = Obj.magic i00 in
+        let s00 : (
+# 52 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8509 "parser_cocci_menhir.ml"
-        ) = Obj.magic r0 in
-        let x0 : 'tv_const_vol = Obj.magic x0 in
-        let _startpos = _startpos_x0_ in
+# 8297 "parser_cocci_menhir.ml"
+        ) = Obj.magic s00 in
+        let _startpos = _startpos_s00_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
-          let ty0 = ty00 in
-          let r = r0 in
+          let i0 = i00 in
+          let s0 = s00 in
           let ty =
-            let ty = ty0 in
+            let i = i0 in
+            let s = s0 in
             
-# 503 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
-# 8522 "parser_cocci_menhir.ml"
+# 555 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, Some i)) )
+# 8310 "parser_cocci_menhir.ml"
             
           in
           
-# 551 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 8528 "parser_cocci_menhir.ml"
+# 584 "parser_cocci_menhir.mly"
+                        ( ty )
+# 8316 "parser_cocci_menhir.ml"
           
         in
         let cv =
-          let x = x0 in
           
-# 41 "standard.mly"
-    ( Some x )
-# 8536 "parser_cocci_menhir.ml"
+# 39 "standard.mly"
+    ( None )
+# 8323 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 8542 "parser_cocci_menhir.ml"
+# 8329 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -8554,67 +8341,90 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.startp = _startpos_m_;
           MenhirLib.EngineTypes.endp = _endpos_m_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = p00;
-            MenhirLib.EngineTypes.startp = _startpos_p00_;
-            MenhirLib.EngineTypes.endp = _endpos_p00_;
+            MenhirLib.EngineTypes.semv = r00;
+            MenhirLib.EngineTypes.startp = _startpos_r00_;
+            MenhirLib.EngineTypes.endp = _endpos_r00_;
             MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.semv = r0;
-              MenhirLib.EngineTypes.startp = _startpos_r0_;
-              MenhirLib.EngineTypes.endp = _endpos_r0_;
+              MenhirLib.EngineTypes.semv = ids00;
+              MenhirLib.EngineTypes.startp = _startpos_ids00_;
+              MenhirLib.EngineTypes.endp = _endpos_ids00_;
               MenhirLib.EngineTypes.next = {
-                MenhirLib.EngineTypes.state = _menhir_s;
-                MenhirLib.EngineTypes.semv = x0;
-                MenhirLib.EngineTypes.startp = _startpos_x0_;
-                MenhirLib.EngineTypes.endp = _endpos_x0_;
-                MenhirLib.EngineTypes.next = _menhir_stack;
+                MenhirLib.EngineTypes.semv = l00;
+                MenhirLib.EngineTypes.startp = _startpos_l00_;
+                MenhirLib.EngineTypes.endp = _endpos_l00_;
+                MenhirLib.EngineTypes.next = {
+                  MenhirLib.EngineTypes.state = _menhir_s;
+                  MenhirLib.EngineTypes.semv = s00;
+                  MenhirLib.EngineTypes.startp = _startpos_s00_;
+                  MenhirLib.EngineTypes.endp = _endpos_s00_;
+                  MenhirLib.EngineTypes.next = _menhir_stack;
+                  };
                 };
               };
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
-        let p00 : (
-# 43 "parser_cocci_menhir.mly"
-       (Parse_aux.info)
-# 8579 "parser_cocci_menhir.ml"
-        ) = Obj.magic p00 in
-        let r0 : (
-# 29 "parser_cocci_menhir.mly"
+        let r00 : (
+# 104 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 8371 "parser_cocci_menhir.ml"
+        ) = Obj.magic r00 in
+        let ids00 : 'tv_enum_decl_list = Obj.magic ids00 in
+        let l00 : (
+# 104 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 8377 "parser_cocci_menhir.ml"
+        ) = Obj.magic l00 in
+        let s00 : (
+# 52 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8584 "parser_cocci_menhir.ml"
-        ) = Obj.magic r0 in
-        let x0 : 'tv_const_vol = Obj.magic x0 in
-        let _startpos = _startpos_x0_ in
+# 8382 "parser_cocci_menhir.ml"
+        ) = Obj.magic s00 in
+        let _startpos = _startpos_s00_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
-          let p0 = p00 in
-          let r = r0 in
+          let r0 = r00 in
+          let ids0 = ids00 in
+          let l0 = l00 in
+          let s0 = s00 in
           let ty =
-            let p = p0 in
+            let r = r0 in
+            let ids = ids0 in
+            let l = l0 in
+            let s = s0 in
+            let i =
+              
+# 39 "standard.mly"
+    ( None )
+# 8400 "parser_cocci_menhir.ml"
+              
+            in
             
-# 505 "parser_cocci_menhir.mly"
-    ( let (nm,pure,clt) = p in
-      Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 8598 "parser_cocci_menhir.ml"
+# 557 "parser_cocci_menhir.mly"
+    ( (if i = None && !Data.in_iso
+    then failwith "enums must be named in the iso file");
+      Ast0.wrap(Ast0.EnumDef(Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, i)),
+                            P.clt2mcode "{" l, ids, P.clt2mcode "}" r)) )
+# 8409 "parser_cocci_menhir.ml"
             
           in
           
-# 551 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 8604 "parser_cocci_menhir.ml"
+# 584 "parser_cocci_menhir.mly"
+                        ( ty )
+# 8415 "parser_cocci_menhir.ml"
           
         in
         let cv =
-          let x = x0 in
           
-# 41 "standard.mly"
-    ( Some x )
-# 8612 "parser_cocci_menhir.ml"
+# 39 "standard.mly"
+    ( None )
+# 8422 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 8618 "parser_cocci_menhir.ml"
+# 8428 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -8630,25 +8440,26 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.startp = _startpos_m_;
           MenhirLib.EngineTypes.endp = _endpos_m_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = p00;
-            MenhirLib.EngineTypes.startp = _startpos_p00_;
-            MenhirLib.EngineTypes.endp = _endpos_p00_;
+            MenhirLib.EngineTypes.semv = r00;
+            MenhirLib.EngineTypes.startp = _startpos_r00_;
+            MenhirLib.EngineTypes.endp = _endpos_r00_;
             MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.startp = _startpos__4_;
-              MenhirLib.EngineTypes.endp = _endpos__4_;
+              MenhirLib.EngineTypes.semv = ids00;
+              MenhirLib.EngineTypes.startp = _startpos_ids00_;
+              MenhirLib.EngineTypes.endp = _endpos_ids00_;
               MenhirLib.EngineTypes.next = {
-                MenhirLib.EngineTypes.semv = r00;
-                MenhirLib.EngineTypes.startp = _startpos_r00_;
-                MenhirLib.EngineTypes.endp = _endpos_r00_;
+                MenhirLib.EngineTypes.semv = l00;
+                MenhirLib.EngineTypes.startp = _startpos_l00_;
+                MenhirLib.EngineTypes.endp = _endpos_l00_;
                 MenhirLib.EngineTypes.next = {
-                  MenhirLib.EngineTypes.semv = r1;
-                  MenhirLib.EngineTypes.startp = _startpos_r1_;
-                  MenhirLib.EngineTypes.endp = _endpos_r1_;
+                  MenhirLib.EngineTypes.semv = x000;
+                  MenhirLib.EngineTypes.startp = _startpos_x000_;
+                  MenhirLib.EngineTypes.endp = _endpos_x000_;
                   MenhirLib.EngineTypes.next = {
                     MenhirLib.EngineTypes.state = _menhir_s;
-                    MenhirLib.EngineTypes.semv = x0;
-                    MenhirLib.EngineTypes.startp = _startpos_x0_;
-                    MenhirLib.EngineTypes.endp = _endpos_x0_;
+                    MenhirLib.EngineTypes.semv = s00;
+                    MenhirLib.EngineTypes.startp = _startpos_s00_;
+                    MenhirLib.EngineTypes.endp = _endpos_s00_;
                     MenhirLib.EngineTypes.next = _menhir_stack;
                     };
                   };
@@ -8657,60 +8468,71 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
-        let p00 : (
-# 37 "parser_cocci_menhir.mly"
-       (string * Data.clt)
-# 8664 "parser_cocci_menhir.ml"
-        ) = Obj.magic p00 in
         let r00 : (
-# 25 "parser_cocci_menhir.mly"
-      (string)
-# 8669 "parser_cocci_menhir.ml"
+# 104 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 8475 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
-        let r1 : (
-# 29 "parser_cocci_menhir.mly"
+        let ids00 : 'tv_enum_decl_list = Obj.magic ids00 in
+        let l00 : (
+# 104 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 8481 "parser_cocci_menhir.ml"
+        ) = Obj.magic l00 in
+        let x000 : 'tv_ident = Obj.magic x000 in
+        let s00 : (
+# 52 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8674 "parser_cocci_menhir.ml"
-        ) = Obj.magic r1 in
-        let x0 : 'tv_const_vol = Obj.magic x0 in
-        let _startpos = _startpos_x0_ in
+# 8487 "parser_cocci_menhir.ml"
+        ) = Obj.magic s00 in
+        let _startpos = _startpos_s00_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
-          let p0 = p00 in
           let r0 = r00 in
-          let r = r1 in
+          let ids0 = ids00 in
+          let l0 = l00 in
+          let x00 = x000 in
+          let s0 = s00 in
           let ty =
-            let p = p0 in
             let r = r0 in
+            let ids = ids0 in
+            let l = l0 in
+            let x0 = x00 in
+            let s = s0 in
+            let i =
+              let x = x0 in
+              
+# 41 "standard.mly"
+    ( Some x )
+# 8508 "parser_cocci_menhir.ml"
+              
+            in
             
-# 508 "parser_cocci_menhir.mly"
-    ( let nm = (r,P.id2name p) in
-    (* this is only possible when we are in a metavar decl.  Otherwise,
-       it will be represented already as a MetaType *)
-    let _ = P.check_meta(Ast.MetaTypeDecl(Ast.NONE,nm)) in
-    Ast0.wrap(Ast0.MetaType(P.clt2mcode nm (P.id2clt p),
-                           Ast0.Impure (*will be ignored*))) )
-# 8694 "parser_cocci_menhir.ml"
+# 557 "parser_cocci_menhir.mly"
+    ( (if i = None && !Data.in_iso
+    then failwith "enums must be named in the iso file");
+      Ast0.wrap(Ast0.EnumDef(Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, i)),
+                            P.clt2mcode "{" l, ids, P.clt2mcode "}" r)) )
+# 8517 "parser_cocci_menhir.ml"
             
           in
           
-# 551 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 8700 "parser_cocci_menhir.ml"
+# 584 "parser_cocci_menhir.mly"
+                        ( ty )
+# 8523 "parser_cocci_menhir.ml"
           
         in
         let cv =
-          let x = x0 in
           
-# 41 "standard.mly"
-    ( Some x )
-# 8708 "parser_cocci_menhir.ml"
+# 39 "standard.mly"
+    ( None )
+# 8530 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 8714 "parser_cocci_menhir.ml"
+# 8536 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -8726,66 +8548,52 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.startp = _startpos_m_;
           MenhirLib.EngineTypes.endp = _endpos_m_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = ty00;
-            MenhirLib.EngineTypes.startp = _startpos_ty00_;
-            MenhirLib.EngineTypes.endp = _endpos_ty00_;
+            MenhirLib.EngineTypes.semv = i00;
+            MenhirLib.EngineTypes.startp = _startpos_i00_;
+            MenhirLib.EngineTypes.endp = _endpos_i00_;
             MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.semv = r0;
-              MenhirLib.EngineTypes.startp = _startpos_r0_;
-              MenhirLib.EngineTypes.endp = _endpos_r0_;
-              MenhirLib.EngineTypes.next = {
-                MenhirLib.EngineTypes.state = _menhir_s;
-                MenhirLib.EngineTypes.semv = x0;
-                MenhirLib.EngineTypes.startp = _startpos_x0_;
-                MenhirLib.EngineTypes.endp = _endpos_x0_;
-                MenhirLib.EngineTypes.next = _menhir_stack;
-                };
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = s00;
+              MenhirLib.EngineTypes.startp = _startpos_s00_;
+              MenhirLib.EngineTypes.endp = _endpos_s00_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
               };
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
-        let ty00 : (
-# 27 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 8751 "parser_cocci_menhir.ml"
-        ) = Obj.magic ty00 in
-        let r0 : (
-# 29 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 8756 "parser_cocci_menhir.ml"
-        ) = Obj.magic r0 in
-        let x0 : 'tv_const_vol = Obj.magic x0 in
-        let _startpos = _startpos_x0_ in
+        let i00 : 'tv_ident = Obj.magic i00 in
+        let s00 : 'tv_struct_or_union = Obj.magic s00 in
+        let _startpos = _startpos_s00_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
-          let ty0 = ty00 in
-          let r = r0 in
+          let i0 = i00 in
+          let s0 = s00 in
           let ty =
-            let ty = ty0 in
+            let i = i0 in
+            let s = s0 in
             
-# 515 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
-# 8769 "parser_cocci_menhir.ml"
+# 562 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.StructUnionName(s, Some i)) )
+# 8578 "parser_cocci_menhir.ml"
             
           in
           
-# 551 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 8775 "parser_cocci_menhir.ml"
+# 584 "parser_cocci_menhir.mly"
+                        ( ty )
+# 8584 "parser_cocci_menhir.ml"
           
         in
         let cv =
-          let x = x0 in
           
-# 41 "standard.mly"
-    ( Some x )
-# 8783 "parser_cocci_menhir.ml"
+# 39 "standard.mly"
+    ( None )
+# 8591 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 8789 "parser_cocci_menhir.ml"
+# 8597 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -8801,22 +8609,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.startp = _startpos_m_;
           MenhirLib.EngineTypes.endp = _endpos_m_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = ty200;
-            MenhirLib.EngineTypes.startp = _startpos_ty200_;
-            MenhirLib.EngineTypes.endp = _endpos_ty200_;
+            MenhirLib.EngineTypes.semv = r00;
+            MenhirLib.EngineTypes.startp = _startpos_r00_;
+            MenhirLib.EngineTypes.endp = _endpos_r00_;
             MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.semv = ty100;
-              MenhirLib.EngineTypes.startp = _startpos_ty100_;
-              MenhirLib.EngineTypes.endp = _endpos_ty100_;
+              MenhirLib.EngineTypes.semv = d00;
+              MenhirLib.EngineTypes.startp = _startpos_d00_;
+              MenhirLib.EngineTypes.endp = _endpos_d00_;
               MenhirLib.EngineTypes.next = {
-                MenhirLib.EngineTypes.semv = r0;
-                MenhirLib.EngineTypes.startp = _startpos_r0_;
-                MenhirLib.EngineTypes.endp = _endpos_r0_;
+                MenhirLib.EngineTypes.semv = l00;
+                MenhirLib.EngineTypes.startp = _startpos_l00_;
+                MenhirLib.EngineTypes.endp = _endpos_l00_;
                 MenhirLib.EngineTypes.next = {
                   MenhirLib.EngineTypes.state = _menhir_s;
-                  MenhirLib.EngineTypes.semv = x0;
-                  MenhirLib.EngineTypes.startp = _startpos_x0_;
-                  MenhirLib.EngineTypes.endp = _endpos_x0_;
+                  MenhirLib.EngineTypes.semv = s00;
+                  MenhirLib.EngineTypes.startp = _startpos_s00_;
+                  MenhirLib.EngineTypes.endp = _endpos_s00_;
                   MenhirLib.EngineTypes.next = _menhir_stack;
                   };
                 };
@@ -8824,58 +8632,64 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
-        let ty200 : (
-# 27 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 8831 "parser_cocci_menhir.ml"
-        ) = Obj.magic ty200 in
-        let ty100 : (
-# 27 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 8836 "parser_cocci_menhir.ml"
-        ) = Obj.magic ty100 in
-        let r0 : (
-# 29 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 8841 "parser_cocci_menhir.ml"
-        ) = Obj.magic r0 in
-        let x0 : 'tv_const_vol = Obj.magic x0 in
-        let _startpos = _startpos_x0_ in
+        let r00 : (
+# 104 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 8639 "parser_cocci_menhir.ml"
+        ) = Obj.magic r00 in
+        let d00 : 'tv_struct_decl_list = Obj.magic d00 in
+        let l00 : (
+# 104 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 8645 "parser_cocci_menhir.ml"
+        ) = Obj.magic l00 in
+        let s00 : 'tv_struct_or_union = Obj.magic s00 in
+        let _startpos = _startpos_s00_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
-          let ty20 = ty200 in
-          let ty10 = ty100 in
-          let r = r0 in
+          let r0 = r00 in
+          let d0 = d00 in
+          let l0 = l00 in
+          let s0 = s00 in
           let ty =
-            let ty2 = ty20 in
-            let ty1 = ty10 in
+            let r = r0 in
+            let d = d0 in
+            let l = l0 in
+            let s = s0 in
+            let i =
+              
+# 39 "standard.mly"
+    ( None )
+# 8664 "parser_cocci_menhir.ml"
+              
+            in
             
-# 517 "parser_cocci_menhir.mly"
-    ( Ast0.wrap
-       (Ast0.BaseType
-          (Ast.LongLongType,
-           [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
-# 8859 "parser_cocci_menhir.ml"
+# 565 "parser_cocci_menhir.mly"
+    ( (if i = None && !Data.in_iso
+    then failwith "structures must be named in the iso file");
+      Ast0.wrap(Ast0.StructUnionDef(Ast0.wrap(Ast0.StructUnionName(s, i)),
+                                   P.clt2mcode "{" l,
+                                   d, P.clt2mcode "}" r)) )
+# 8674 "parser_cocci_menhir.ml"
             
           in
           
-# 551 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 8865 "parser_cocci_menhir.ml"
+# 584 "parser_cocci_menhir.mly"
+                        ( ty )
+# 8680 "parser_cocci_menhir.ml"
           
         in
         let cv =
-          let x = x0 in
           
-# 41 "standard.mly"
-    ( Some x )
-# 8873 "parser_cocci_menhir.ml"
+# 39 "standard.mly"
+    ( None )
+# 8687 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 8879 "parser_cocci_menhir.ml"
+# 8693 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -8891,66 +8705,96 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.startp = _startpos_m_;
           MenhirLib.EngineTypes.endp = _endpos_m_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = ty00;
-            MenhirLib.EngineTypes.startp = _startpos_ty00_;
-            MenhirLib.EngineTypes.endp = _endpos_ty00_;
+            MenhirLib.EngineTypes.semv = r00;
+            MenhirLib.EngineTypes.startp = _startpos_r00_;
+            MenhirLib.EngineTypes.endp = _endpos_r00_;
             MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.semv = r0;
-              MenhirLib.EngineTypes.startp = _startpos_r0_;
-              MenhirLib.EngineTypes.endp = _endpos_r0_;
+              MenhirLib.EngineTypes.semv = d00;
+              MenhirLib.EngineTypes.startp = _startpos_d00_;
+              MenhirLib.EngineTypes.endp = _endpos_d00_;
               MenhirLib.EngineTypes.next = {
-                MenhirLib.EngineTypes.state = _menhir_s;
-                MenhirLib.EngineTypes.semv = x0;
-                MenhirLib.EngineTypes.startp = _startpos_x0_;
-                MenhirLib.EngineTypes.endp = _endpos_x0_;
-                MenhirLib.EngineTypes.next = _menhir_stack;
+                MenhirLib.EngineTypes.semv = l00;
+                MenhirLib.EngineTypes.startp = _startpos_l00_;
+                MenhirLib.EngineTypes.endp = _endpos_l00_;
+                MenhirLib.EngineTypes.next = {
+                  MenhirLib.EngineTypes.semv = x000;
+                  MenhirLib.EngineTypes.startp = _startpos_x000_;
+                  MenhirLib.EngineTypes.endp = _endpos_x000_;
+                  MenhirLib.EngineTypes.next = {
+                    MenhirLib.EngineTypes.state = _menhir_s;
+                    MenhirLib.EngineTypes.semv = s00;
+                    MenhirLib.EngineTypes.startp = _startpos_s00_;
+                    MenhirLib.EngineTypes.endp = _endpos_s00_;
+                    MenhirLib.EngineTypes.next = _menhir_stack;
+                    };
+                  };
                 };
               };
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
-        let ty00 : (
-# 27 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 8916 "parser_cocci_menhir.ml"
-        ) = Obj.magic ty00 in
-        let r0 : (
-# 29 "parser_cocci_menhir.mly"
-      (Data.clt)
-# 8921 "parser_cocci_menhir.ml"
-        ) = Obj.magic r0 in
-        let x0 : 'tv_const_vol = Obj.magic x0 in
-        let _startpos = _startpos_x0_ in
+        let r00 : (
+# 104 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 8740 "parser_cocci_menhir.ml"
+        ) = Obj.magic r00 in
+        let d00 : 'tv_struct_decl_list = Obj.magic d00 in
+        let l00 : (
+# 104 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 8746 "parser_cocci_menhir.ml"
+        ) = Obj.magic l00 in
+        let x000 : 'tv_ident = Obj.magic x000 in
+        let s00 : 'tv_struct_or_union = Obj.magic s00 in
+        let _startpos = _startpos_s00_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
-          let ty0 = ty00 in
-          let r = r0 in
+          let r0 = r00 in
+          let d0 = d00 in
+          let l0 = l00 in
+          let x00 = x000 in
+          let s0 = s00 in
           let ty =
-            let ty = ty0 in
+            let r = r0 in
+            let d = d0 in
+            let l = l0 in
+            let x0 = x00 in
+            let s = s0 in
+            let i =
+              let x = x0 in
+              
+# 41 "standard.mly"
+    ( Some x )
+# 8769 "parser_cocci_menhir.ml"
+              
+            in
             
-# 499 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
-# 8934 "parser_cocci_menhir.ml"
+# 565 "parser_cocci_menhir.mly"
+    ( (if i = None && !Data.in_iso
+    then failwith "structures must be named in the iso file");
+      Ast0.wrap(Ast0.StructUnionDef(Ast0.wrap(Ast0.StructUnionName(s, i)),
+                                   P.clt2mcode "{" l,
+                                   d, P.clt2mcode "}" r)) )
+# 8779 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 8940 "parser_cocci_menhir.ml"
+# 584 "parser_cocci_menhir.mly"
+                        ( ty )
+# 8785 "parser_cocci_menhir.ml"
           
         in
         let cv =
-          let x = x0 in
           
-# 41 "standard.mly"
-    ( Some x )
-# 8948 "parser_cocci_menhir.ml"
+# 39 "standard.mly"
+    ( None )
+# 8792 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 8954 "parser_cocci_menhir.ml"
+# 8798 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -8966,33 +8810,181 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.startp = _startpos_m_;
           MenhirLib.EngineTypes.endp = _endpos_m_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = ty00;
-            MenhirLib.EngineTypes.startp = _startpos_ty00_;
-            MenhirLib.EngineTypes.endp = _endpos_ty00_;
+            MenhirLib.EngineTypes.semv = r00;
+            MenhirLib.EngineTypes.startp = _startpos_r00_;
+            MenhirLib.EngineTypes.endp = _endpos_r00_;
             MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.semv = r0;
-              MenhirLib.EngineTypes.startp = _startpos_r0_;
-              MenhirLib.EngineTypes.endp = _endpos_r0_;
+              MenhirLib.EngineTypes.semv = d00;
+              MenhirLib.EngineTypes.startp = _startpos_d00_;
+              MenhirLib.EngineTypes.endp = _endpos_d00_;
               MenhirLib.EngineTypes.next = {
-                MenhirLib.EngineTypes.state = _menhir_s;
-                MenhirLib.EngineTypes.semv = x0;
-                MenhirLib.EngineTypes.startp = _startpos_x0_;
-                MenhirLib.EngineTypes.endp = _endpos_x0_;
-                MenhirLib.EngineTypes.next = _menhir_stack;
-                };
+                MenhirLib.EngineTypes.semv = l00;
+                MenhirLib.EngineTypes.startp = _startpos_l00_;
+                MenhirLib.EngineTypes.endp = _endpos_l00_;
+                MenhirLib.EngineTypes.next = {
+                  MenhirLib.EngineTypes.state = _menhir_s;
+                  MenhirLib.EngineTypes.semv = s00;
+                  MenhirLib.EngineTypes.startp = _startpos_s00_;
+                  MenhirLib.EngineTypes.endp = _endpos_s00_;
+                  MenhirLib.EngineTypes.next = _menhir_stack;
+                  };
+                };
+              };
+            };
+          } = _menhir_stack in
+        let m : 'tv_list_TMul_ = Obj.magic m in
+        let r00 : (
+# 104 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 8840 "parser_cocci_menhir.ml"
+        ) = Obj.magic r00 in
+        let d00 : 'tv_struct_decl_list = Obj.magic d00 in
+        let l00 : (
+# 104 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 8846 "parser_cocci_menhir.ml"
+        ) = Obj.magic l00 in
+        let s00 : (
+# 67 "parser_cocci_menhir.mly"
+       (Parse_aux.info)
+# 8851 "parser_cocci_menhir.ml"
+        ) = Obj.magic s00 in
+        let _startpos = _startpos_s00_ in
+        let _endpos = _endpos_m_ in
+        let _v : 'tv_ctype = let ty =
+          let r0 = r00 in
+          let d0 = d00 in
+          let l0 = l00 in
+          let s0 = s00 in
+          let ty =
+            let r = r0 in
+            let d = d0 in
+            let l = l0 in
+            let s = s0 in
+            
+# 571 "parser_cocci_menhir.mly"
+    ( let (nm,pure,clt) = s in
+    let ty = Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) in
+    Ast0.wrap(Ast0.StructUnionDef(ty,P.clt2mcode "{" l,d,P.clt2mcode "}" r)) )
+# 8870 "parser_cocci_menhir.ml"
+            
+          in
+          
+# 584 "parser_cocci_menhir.mly"
+                        ( ty )
+# 8876 "parser_cocci_menhir.ml"
+          
+        in
+        let cv =
+          
+# 39 "standard.mly"
+    ( None )
+# 8883 "parser_cocci_menhir.ml"
+          
+        in
+        
+# 588 "parser_cocci_menhir.mly"
+    ( P.pointerify (P.make_cv cv ty) m )
+# 8889 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = m;
+          MenhirLib.EngineTypes.startp = _startpos_m_;
+          MenhirLib.EngineTypes.endp = _endpos_m_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = p00;
+            MenhirLib.EngineTypes.startp = _startpos_p00_;
+            MenhirLib.EngineTypes.endp = _endpos_p00_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let m : 'tv_list_TMul_ = Obj.magic m in
+        let p00 : (
+# 61 "parser_cocci_menhir.mly"
+       (string * Data.clt)
+# 8916 "parser_cocci_menhir.ml"
+        ) = Obj.magic p00 in
+        let _startpos = _startpos_p00_ in
+        let _endpos = _endpos_m_ in
+        let _v : 'tv_ctype = let ty =
+          let p0 = p00 in
+          let ty =
+            let p = p0 in
+            
+# 575 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.TypeName(P.id2mcode p)) )
+# 8927 "parser_cocci_menhir.ml"
+            
+          in
+          
+# 584 "parser_cocci_menhir.mly"
+                        ( ty )
+# 8933 "parser_cocci_menhir.ml"
+          
+        in
+        let cv =
+          
+# 39 "standard.mly"
+    ( None )
+# 8940 "parser_cocci_menhir.ml"
+          
+        in
+        
+# 588 "parser_cocci_menhir.mly"
+    ( P.pointerify (P.make_cv cv ty) m )
+# 8946 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = m;
+          MenhirLib.EngineTypes.startp = _startpos_m_;
+          MenhirLib.EngineTypes.endp = _endpos_m_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = ty00;
+            MenhirLib.EngineTypes.startp = _startpos_ty00_;
+            MenhirLib.EngineTypes.endp = _endpos_ty00_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.semv = r0;
+              MenhirLib.EngineTypes.startp = _startpos_r0_;
+              MenhirLib.EngineTypes.endp = _endpos_r0_;
+              MenhirLib.EngineTypes.next = {
+                MenhirLib.EngineTypes.state = _menhir_s;
+                MenhirLib.EngineTypes.semv = x0;
+                MenhirLib.EngineTypes.startp = _startpos_x0_;
+                MenhirLib.EngineTypes.endp = _endpos_x0_;
+                MenhirLib.EngineTypes.next = _menhir_stack;
+                };
               };
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8991 "parser_cocci_menhir.ml"
+# 8983 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8996 "parser_cocci_menhir.ml"
+# 8988 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -9003,29 +8995,104 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 501 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
-# 9009 "parser_cocci_menhir.ml"
+# 523 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
+# 9001 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
+# 580 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
+# 9007 "parser_cocci_menhir.ml"
+          
+        in
+        let cv =
+          let x = x0 in
+          
+# 41 "standard.mly"
+    ( Some x )
 # 9015 "parser_cocci_menhir.ml"
           
         in
+        
+# 588 "parser_cocci_menhir.mly"
+    ( P.pointerify (P.make_cv cv ty) m )
+# 9021 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = m;
+          MenhirLib.EngineTypes.startp = _startpos_m_;
+          MenhirLib.EngineTypes.endp = _endpos_m_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = ty00;
+            MenhirLib.EngineTypes.startp = _startpos_ty00_;
+            MenhirLib.EngineTypes.endp = _endpos_ty00_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.semv = r0;
+              MenhirLib.EngineTypes.startp = _startpos_r0_;
+              MenhirLib.EngineTypes.endp = _endpos_r0_;
+              MenhirLib.EngineTypes.next = {
+                MenhirLib.EngineTypes.state = _menhir_s;
+                MenhirLib.EngineTypes.semv = x0;
+                MenhirLib.EngineTypes.startp = _startpos_x0_;
+                MenhirLib.EngineTypes.endp = _endpos_x0_;
+                MenhirLib.EngineTypes.next = _menhir_stack;
+                };
+              };
+            };
+          } = _menhir_stack in
+        let m : 'tv_list_TMul_ = Obj.magic m in
+        let ty00 : (
+# 51 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 9058 "parser_cocci_menhir.ml"
+        ) = Obj.magic ty00 in
+        let r0 : (
+# 53 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 9063 "parser_cocci_menhir.ml"
+        ) = Obj.magic r0 in
+        let x0 : 'tv_const_vol = Obj.magic x0 in
+        let _startpos = _startpos_x0_ in
+        let _endpos = _endpos_m_ in
+        let _v : 'tv_ctype = let ty =
+          let ty0 = ty00 in
+          let r = r0 in
+          let ty =
+            let ty = ty0 in
+            
+# 525 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
+# 9076 "parser_cocci_menhir.ml"
+            
+          in
+          
+# 580 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
+# 9082 "parser_cocci_menhir.ml"
+          
+        in
         let cv =
           let x = x0 in
           
 # 41 "standard.mly"
     ( Some x )
-# 9023 "parser_cocci_menhir.ml"
+# 9090 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9029 "parser_cocci_menhir.ml"
+# 9096 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9060,14 +9127,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9066 "parser_cocci_menhir.ml"
+# 9133 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9071 "parser_cocci_menhir.ml"
+# 9138 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -9078,15 +9145,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 503 "parser_cocci_menhir.mly"
+# 527 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
-# 9084 "parser_cocci_menhir.ml"
+# 9151 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 9090 "parser_cocci_menhir.ml"
+# 580 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
+# 9157 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9094,13 +9161,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9098 "parser_cocci_menhir.ml"
+# 9165 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9104 "parser_cocci_menhir.ml"
+# 9171 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9135,14 +9202,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 43 "parser_cocci_menhir.mly"
+# 67 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 9141 "parser_cocci_menhir.ml"
+# 9208 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9146 "parser_cocci_menhir.ml"
+# 9213 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -9153,16 +9220,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 505 "parser_cocci_menhir.mly"
+# 529 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = p in
       Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 9160 "parser_cocci_menhir.ml"
+# 9227 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 9166 "parser_cocci_menhir.ml"
+# 580 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
+# 9233 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9170,13 +9237,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9174 "parser_cocci_menhir.ml"
+# 9241 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9180 "parser_cocci_menhir.ml"
+# 9247 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9220,19 +9287,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 37 "parser_cocci_menhir.mly"
+# 61 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 9226 "parser_cocci_menhir.ml"
+# 9293 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r00 : (
-# 25 "parser_cocci_menhir.mly"
+# 49 "parser_cocci_menhir.mly"
       (string)
-# 9231 "parser_cocci_menhir.ml"
+# 9298 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let r1 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9236 "parser_cocci_menhir.ml"
+# 9303 "parser_cocci_menhir.ml"
         ) = Obj.magic r1 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -9245,20 +9312,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let p = p0 in
             let r = r0 in
             
-# 508 "parser_cocci_menhir.mly"
+# 532 "parser_cocci_menhir.mly"
     ( let nm = (r,P.id2name p) in
     (* this is only possible when we are in a metavar decl.  Otherwise,
        it will be represented already as a MetaType *)
     let _ = P.check_meta(Ast.MetaTypeDecl(Ast.NONE,nm)) in
     Ast0.wrap(Ast0.MetaType(P.clt2mcode nm (P.id2clt p),
                            Ast0.Impure (*will be ignored*))) )
-# 9256 "parser_cocci_menhir.ml"
+# 9323 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 9262 "parser_cocci_menhir.ml"
+# 580 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
+# 9329 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9266,13 +9333,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9270 "parser_cocci_menhir.ml"
+# 9337 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9276 "parser_cocci_menhir.ml"
+# 9343 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9307,14 +9374,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9313 "parser_cocci_menhir.ml"
+# 9380 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9318 "parser_cocci_menhir.ml"
+# 9385 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -9325,15 +9392,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 515 "parser_cocci_menhir.mly"
+# 539 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
-# 9331 "parser_cocci_menhir.ml"
+# 9398 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 9337 "parser_cocci_menhir.ml"
+# 580 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
+# 9404 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9341,13 +9408,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9345 "parser_cocci_menhir.ml"
+# 9412 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9351 "parser_cocci_menhir.ml"
+# 9418 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9387,19 +9454,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty200 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9393 "parser_cocci_menhir.ml"
+# 9460 "parser_cocci_menhir.ml"
         ) = Obj.magic ty200 in
         let ty100 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9398 "parser_cocci_menhir.ml"
+# 9465 "parser_cocci_menhir.ml"
         ) = Obj.magic ty100 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9403 "parser_cocci_menhir.ml"
+# 9470 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -9412,18 +9479,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let ty2 = ty20 in
             let ty1 = ty10 in
             
-# 517 "parser_cocci_menhir.mly"
+# 541 "parser_cocci_menhir.mly"
     ( Ast0.wrap
        (Ast0.BaseType
           (Ast.LongLongType,
            [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
-# 9421 "parser_cocci_menhir.ml"
+# 9488 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 9427 "parser_cocci_menhir.ml"
+# 580 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
+# 9494 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9431,13 +9498,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9435 "parser_cocci_menhir.ml"
+# 9502 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9441 "parser_cocci_menhir.ml"
+# 9508 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9457,37 +9524,48 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             MenhirLib.EngineTypes.startp = _startpos_ty00_;
             MenhirLib.EngineTypes.endp = _endpos_ty00_;
             MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.state = _menhir_s;
-              MenhirLib.EngineTypes.semv = x0;
-              MenhirLib.EngineTypes.startp = _startpos_x0_;
-              MenhirLib.EngineTypes.endp = _endpos_x0_;
-              MenhirLib.EngineTypes.next = _menhir_stack;
+              MenhirLib.EngineTypes.semv = r0;
+              MenhirLib.EngineTypes.startp = _startpos_r0_;
+              MenhirLib.EngineTypes.endp = _endpos_r0_;
+              MenhirLib.EngineTypes.next = {
+                MenhirLib.EngineTypes.state = _menhir_s;
+                MenhirLib.EngineTypes.semv = x0;
+                MenhirLib.EngineTypes.startp = _startpos_x0_;
+                MenhirLib.EngineTypes.endp = _endpos_x0_;
+                MenhirLib.EngineTypes.next = _menhir_stack;
+                };
               };
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9473 "parser_cocci_menhir.ml"
+# 9545 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
+        let r0 : (
+# 53 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 9550 "parser_cocci_menhir.ml"
+        ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
           let ty0 = ty00 in
+          let r = r0 in
           let ty =
             let ty = ty0 in
             
-# 499 "parser_cocci_menhir.mly"
+# 523 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
-# 9485 "parser_cocci_menhir.ml"
+# 9563 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
-                    ( ty )
-# 9491 "parser_cocci_menhir.ml"
+# 582 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
+# 9569 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9495,13 +9573,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9499 "parser_cocci_menhir.ml"
+# 9577 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9505 "parser_cocci_menhir.ml"
+# 9583 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9521,37 +9599,48 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             MenhirLib.EngineTypes.startp = _startpos_ty00_;
             MenhirLib.EngineTypes.endp = _endpos_ty00_;
             MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.state = _menhir_s;
-              MenhirLib.EngineTypes.semv = x0;
-              MenhirLib.EngineTypes.startp = _startpos_x0_;
-              MenhirLib.EngineTypes.endp = _endpos_x0_;
-              MenhirLib.EngineTypes.next = _menhir_stack;
+              MenhirLib.EngineTypes.semv = r0;
+              MenhirLib.EngineTypes.startp = _startpos_r0_;
+              MenhirLib.EngineTypes.endp = _endpos_r0_;
+              MenhirLib.EngineTypes.next = {
+                MenhirLib.EngineTypes.state = _menhir_s;
+                MenhirLib.EngineTypes.semv = x0;
+                MenhirLib.EngineTypes.startp = _startpos_x0_;
+                MenhirLib.EngineTypes.endp = _endpos_x0_;
+                MenhirLib.EngineTypes.next = _menhir_stack;
+                };
               };
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9537 "parser_cocci_menhir.ml"
+# 9620 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
+        let r0 : (
+# 53 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 9625 "parser_cocci_menhir.ml"
+        ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
           let ty0 = ty00 in
+          let r = r0 in
           let ty =
             let ty = ty0 in
             
-# 501 "parser_cocci_menhir.mly"
+# 525 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
-# 9549 "parser_cocci_menhir.ml"
+# 9638 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
-                    ( ty )
-# 9555 "parser_cocci_menhir.ml"
+# 582 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
+# 9644 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9559,13 +9648,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9563 "parser_cocci_menhir.ml"
+# 9652 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9569 "parser_cocci_menhir.ml"
+# 9658 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9585,37 +9674,48 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             MenhirLib.EngineTypes.startp = _startpos_ty00_;
             MenhirLib.EngineTypes.endp = _endpos_ty00_;
             MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.state = _menhir_s;
-              MenhirLib.EngineTypes.semv = x0;
-              MenhirLib.EngineTypes.startp = _startpos_x0_;
-              MenhirLib.EngineTypes.endp = _endpos_x0_;
-              MenhirLib.EngineTypes.next = _menhir_stack;
+              MenhirLib.EngineTypes.semv = r0;
+              MenhirLib.EngineTypes.startp = _startpos_r0_;
+              MenhirLib.EngineTypes.endp = _endpos_r0_;
+              MenhirLib.EngineTypes.next = {
+                MenhirLib.EngineTypes.state = _menhir_s;
+                MenhirLib.EngineTypes.semv = x0;
+                MenhirLib.EngineTypes.startp = _startpos_x0_;
+                MenhirLib.EngineTypes.endp = _endpos_x0_;
+                MenhirLib.EngineTypes.next = _menhir_stack;
+                };
               };
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9601 "parser_cocci_menhir.ml"
+# 9695 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
+        let r0 : (
+# 53 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 9700 "parser_cocci_menhir.ml"
+        ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
           let ty0 = ty00 in
+          let r = r0 in
           let ty =
             let ty = ty0 in
             
-# 503 "parser_cocci_menhir.mly"
+# 527 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
-# 9613 "parser_cocci_menhir.ml"
+# 9713 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
-                    ( ty )
-# 9619 "parser_cocci_menhir.ml"
+# 582 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
+# 9719 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9623,13 +9723,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9627 "parser_cocci_menhir.ml"
+# 9727 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9633 "parser_cocci_menhir.ml"
+# 9733 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9649,38 +9749,49 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             MenhirLib.EngineTypes.startp = _startpos_p00_;
             MenhirLib.EngineTypes.endp = _endpos_p00_;
             MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.state = _menhir_s;
-              MenhirLib.EngineTypes.semv = x0;
-              MenhirLib.EngineTypes.startp = _startpos_x0_;
-              MenhirLib.EngineTypes.endp = _endpos_x0_;
-              MenhirLib.EngineTypes.next = _menhir_stack;
+              MenhirLib.EngineTypes.semv = r0;
+              MenhirLib.EngineTypes.startp = _startpos_r0_;
+              MenhirLib.EngineTypes.endp = _endpos_r0_;
+              MenhirLib.EngineTypes.next = {
+                MenhirLib.EngineTypes.state = _menhir_s;
+                MenhirLib.EngineTypes.semv = x0;
+                MenhirLib.EngineTypes.startp = _startpos_x0_;
+                MenhirLib.EngineTypes.endp = _endpos_x0_;
+                MenhirLib.EngineTypes.next = _menhir_stack;
+                };
               };
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 43 "parser_cocci_menhir.mly"
+# 67 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 9665 "parser_cocci_menhir.ml"
+# 9770 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
+        let r0 : (
+# 53 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 9775 "parser_cocci_menhir.ml"
+        ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
           let p0 = p00 in
+          let r = r0 in
           let ty =
             let p = p0 in
             
-# 505 "parser_cocci_menhir.mly"
+# 529 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = p in
       Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 9678 "parser_cocci_menhir.ml"
+# 9789 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
-                    ( ty )
-# 9684 "parser_cocci_menhir.ml"
+# 582 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
+# 9795 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9688,13 +9799,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9692 "parser_cocci_menhir.ml"
+# 9803 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9698 "parser_cocci_menhir.ml"
+# 9809 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9714,18 +9825,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             MenhirLib.EngineTypes.startp = _startpos_p00_;
             MenhirLib.EngineTypes.endp = _endpos_p00_;
             MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.startp = _startpos__3_;
-              MenhirLib.EngineTypes.endp = _endpos__3_;
+              MenhirLib.EngineTypes.startp = _startpos__4_;
+              MenhirLib.EngineTypes.endp = _endpos__4_;
               MenhirLib.EngineTypes.next = {
                 MenhirLib.EngineTypes.semv = r00;
                 MenhirLib.EngineTypes.startp = _startpos_r00_;
                 MenhirLib.EngineTypes.endp = _endpos_r00_;
                 MenhirLib.EngineTypes.next = {
-                  MenhirLib.EngineTypes.state = _menhir_s;
-                  MenhirLib.EngineTypes.semv = x0;
-                  MenhirLib.EngineTypes.startp = _startpos_x0_;
-                  MenhirLib.EngineTypes.endp = _endpos_x0_;
-                  MenhirLib.EngineTypes.next = _menhir_stack;
+                  MenhirLib.EngineTypes.semv = r1;
+                  MenhirLib.EngineTypes.startp = _startpos_r1_;
+                  MenhirLib.EngineTypes.endp = _endpos_r1_;
+                  MenhirLib.EngineTypes.next = {
+                    MenhirLib.EngineTypes.state = _menhir_s;
+                    MenhirLib.EngineTypes.semv = x0;
+                    MenhirLib.EngineTypes.startp = _startpos_x0_;
+                    MenhirLib.EngineTypes.endp = _endpos_x0_;
+                    MenhirLib.EngineTypes.next = _menhir_stack;
+                    };
                   };
                 };
               };
@@ -9733,39 +9849,45 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 37 "parser_cocci_menhir.mly"
+# 61 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 9739 "parser_cocci_menhir.ml"
+# 9855 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r00 : (
-# 25 "parser_cocci_menhir.mly"
+# 49 "parser_cocci_menhir.mly"
       (string)
-# 9744 "parser_cocci_menhir.ml"
+# 9860 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
+        let r1 : (
+# 53 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 9865 "parser_cocci_menhir.ml"
+        ) = Obj.magic r1 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
           let p0 = p00 in
           let r0 = r00 in
+          let r = r1 in
           let ty =
             let p = p0 in
             let r = r0 in
             
-# 508 "parser_cocci_menhir.mly"
+# 532 "parser_cocci_menhir.mly"
     ( let nm = (r,P.id2name p) in
     (* this is only possible when we are in a metavar decl.  Otherwise,
        it will be represented already as a MetaType *)
     let _ = P.check_meta(Ast.MetaTypeDecl(Ast.NONE,nm)) in
     Ast0.wrap(Ast0.MetaType(P.clt2mcode nm (P.id2clt p),
                            Ast0.Impure (*will be ignored*))) )
-# 9763 "parser_cocci_menhir.ml"
+# 9885 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
-                    ( ty )
-# 9769 "parser_cocci_menhir.ml"
+# 582 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
+# 9891 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9773,13 +9895,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9777 "parser_cocci_menhir.ml"
+# 9899 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9783 "parser_cocci_menhir.ml"
+# 9905 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9799,37 +9921,48 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             MenhirLib.EngineTypes.startp = _startpos_ty00_;
             MenhirLib.EngineTypes.endp = _endpos_ty00_;
             MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.state = _menhir_s;
-              MenhirLib.EngineTypes.semv = x0;
-              MenhirLib.EngineTypes.startp = _startpos_x0_;
-              MenhirLib.EngineTypes.endp = _endpos_x0_;
-              MenhirLib.EngineTypes.next = _menhir_stack;
+              MenhirLib.EngineTypes.semv = r0;
+              MenhirLib.EngineTypes.startp = _startpos_r0_;
+              MenhirLib.EngineTypes.endp = _endpos_r0_;
+              MenhirLib.EngineTypes.next = {
+                MenhirLib.EngineTypes.state = _menhir_s;
+                MenhirLib.EngineTypes.semv = x0;
+                MenhirLib.EngineTypes.startp = _startpos_x0_;
+                MenhirLib.EngineTypes.endp = _endpos_x0_;
+                MenhirLib.EngineTypes.next = _menhir_stack;
+                };
               };
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9815 "parser_cocci_menhir.ml"
+# 9942 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
+        let r0 : (
+# 53 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 9947 "parser_cocci_menhir.ml"
+        ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
           let ty0 = ty00 in
+          let r = r0 in
           let ty =
             let ty = ty0 in
             
-# 515 "parser_cocci_menhir.mly"
+# 539 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
-# 9827 "parser_cocci_menhir.ml"
+# 9960 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
-                    ( ty )
-# 9833 "parser_cocci_menhir.ml"
+# 582 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
+# 9966 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9837,13 +9970,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9841 "parser_cocci_menhir.ml"
+# 9974 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9847 "parser_cocci_menhir.ml"
+# 9980 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9867,48 +10000,59 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               MenhirLib.EngineTypes.startp = _startpos_ty100_;
               MenhirLib.EngineTypes.endp = _endpos_ty100_;
               MenhirLib.EngineTypes.next = {
-                MenhirLib.EngineTypes.state = _menhir_s;
-                MenhirLib.EngineTypes.semv = x0;
-                MenhirLib.EngineTypes.startp = _startpos_x0_;
-                MenhirLib.EngineTypes.endp = _endpos_x0_;
-                MenhirLib.EngineTypes.next = _menhir_stack;
+                MenhirLib.EngineTypes.semv = r0;
+                MenhirLib.EngineTypes.startp = _startpos_r0_;
+                MenhirLib.EngineTypes.endp = _endpos_r0_;
+                MenhirLib.EngineTypes.next = {
+                  MenhirLib.EngineTypes.state = _menhir_s;
+                  MenhirLib.EngineTypes.semv = x0;
+                  MenhirLib.EngineTypes.startp = _startpos_x0_;
+                  MenhirLib.EngineTypes.endp = _endpos_x0_;
+                  MenhirLib.EngineTypes.next = _menhir_stack;
+                  };
                 };
               };
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty200 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9884 "parser_cocci_menhir.ml"
+# 10022 "parser_cocci_menhir.ml"
         ) = Obj.magic ty200 in
         let ty100 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9889 "parser_cocci_menhir.ml"
+# 10027 "parser_cocci_menhir.ml"
         ) = Obj.magic ty100 in
+        let r0 : (
+# 53 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 10032 "parser_cocci_menhir.ml"
+        ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
           let ty20 = ty200 in
           let ty10 = ty100 in
+          let r = r0 in
           let ty =
             let ty2 = ty20 in
             let ty1 = ty10 in
             
-# 517 "parser_cocci_menhir.mly"
+# 541 "parser_cocci_menhir.mly"
     ( Ast0.wrap
        (Ast0.BaseType
           (Ast.LongLongType,
            [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
-# 9906 "parser_cocci_menhir.ml"
+# 10050 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
-                    ( ty )
-# 9912 "parser_cocci_menhir.ml"
+# 582 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
+# 10056 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9916,13 +10060,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9920 "parser_cocci_menhir.ml"
+# 10064 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9926 "parser_cocci_menhir.ml"
+# 10070 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9952,9 +10096,73 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 28 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9958 "parser_cocci_menhir.ml"
+# 10102 "parser_cocci_menhir.ml"
+        ) = Obj.magic ty00 in
+        let x0 : 'tv_const_vol = Obj.magic x0 in
+        let _startpos = _startpos_x0_ in
+        let _endpos = _endpos_m_ in
+        let _v : 'tv_ctype = let ty =
+          let ty0 = ty00 in
+          let ty =
+            let ty = ty0 in
+            
+# 523 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
+# 10114 "parser_cocci_menhir.ml"
+            
+          in
+          
+# 583 "parser_cocci_menhir.mly"
+                    ( ty )
+# 10120 "parser_cocci_menhir.ml"
+          
+        in
+        let cv =
+          let x = x0 in
+          
+# 41 "standard.mly"
+    ( Some x )
+# 10128 "parser_cocci_menhir.ml"
+          
+        in
+        
+# 588 "parser_cocci_menhir.mly"
+    ( P.pointerify (P.make_cv cv ty) m )
+# 10134 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = m;
+          MenhirLib.EngineTypes.startp = _startpos_m_;
+          MenhirLib.EngineTypes.endp = _endpos_m_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = ty00;
+            MenhirLib.EngineTypes.startp = _startpos_ty00_;
+            MenhirLib.EngineTypes.endp = _endpos_ty00_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = x0;
+              MenhirLib.EngineTypes.startp = _startpos_x0_;
+              MenhirLib.EngineTypes.endp = _endpos_x0_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
+            };
+          } = _menhir_stack in
+        let m : 'tv_list_TMul_ = Obj.magic m in
+        let ty00 : (
+# 51 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 10166 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -9965,14 +10173,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let ty = ty0 in
             
 # 525 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.BaseType(Ast.VoidType,[P.clt2mcode "void" ty])) )
-# 9970 "parser_cocci_menhir.ml"
+    ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
+# 10178 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
-                        ( ty )
-# 9976 "parser_cocci_menhir.ml"
+# 583 "parser_cocci_menhir.mly"
+                    ( ty )
+# 10184 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9980,13 +10188,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9984 "parser_cocci_menhir.ml"
+# 10192 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9990 "parser_cocci_menhir.ml"
+# 10198 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10016,9 +10224,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 10022 "parser_cocci_menhir.ml"
+# 10230 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -10029,14 +10237,164 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let ty = ty0 in
             
 # 527 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.BaseType(Ast.DoubleType,[P.clt2mcode "double" ty])) )
-# 10034 "parser_cocci_menhir.ml"
+    ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
+# 10242 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
-                        ( ty )
-# 10040 "parser_cocci_menhir.ml"
+# 583 "parser_cocci_menhir.mly"
+                    ( ty )
+# 10248 "parser_cocci_menhir.ml"
+          
+        in
+        let cv =
+          let x = x0 in
+          
+# 41 "standard.mly"
+    ( Some x )
+# 10256 "parser_cocci_menhir.ml"
+          
+        in
+        
+# 588 "parser_cocci_menhir.mly"
+    ( P.pointerify (P.make_cv cv ty) m )
+# 10262 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = m;
+          MenhirLib.EngineTypes.startp = _startpos_m_;
+          MenhirLib.EngineTypes.endp = _endpos_m_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = p00;
+            MenhirLib.EngineTypes.startp = _startpos_p00_;
+            MenhirLib.EngineTypes.endp = _endpos_p00_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = x0;
+              MenhirLib.EngineTypes.startp = _startpos_x0_;
+              MenhirLib.EngineTypes.endp = _endpos_x0_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
+            };
+          } = _menhir_stack in
+        let m : 'tv_list_TMul_ = Obj.magic m in
+        let p00 : (
+# 67 "parser_cocci_menhir.mly"
+       (Parse_aux.info)
+# 10294 "parser_cocci_menhir.ml"
+        ) = Obj.magic p00 in
+        let x0 : 'tv_const_vol = Obj.magic x0 in
+        let _startpos = _startpos_x0_ in
+        let _endpos = _endpos_m_ in
+        let _v : 'tv_ctype = let ty =
+          let p0 = p00 in
+          let ty =
+            let p = p0 in
+            
+# 529 "parser_cocci_menhir.mly"
+    ( let (nm,pure,clt) = p in
+      Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
+# 10307 "parser_cocci_menhir.ml"
+            
+          in
+          
+# 583 "parser_cocci_menhir.mly"
+                    ( ty )
+# 10313 "parser_cocci_menhir.ml"
+          
+        in
+        let cv =
+          let x = x0 in
+          
+# 41 "standard.mly"
+    ( Some x )
+# 10321 "parser_cocci_menhir.ml"
+          
+        in
+        
+# 588 "parser_cocci_menhir.mly"
+    ( P.pointerify (P.make_cv cv ty) m )
+# 10327 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = m;
+          MenhirLib.EngineTypes.startp = _startpos_m_;
+          MenhirLib.EngineTypes.endp = _endpos_m_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = p00;
+            MenhirLib.EngineTypes.startp = _startpos_p00_;
+            MenhirLib.EngineTypes.endp = _endpos_p00_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.startp = _startpos__3_;
+              MenhirLib.EngineTypes.endp = _endpos__3_;
+              MenhirLib.EngineTypes.next = {
+                MenhirLib.EngineTypes.semv = r00;
+                MenhirLib.EngineTypes.startp = _startpos_r00_;
+                MenhirLib.EngineTypes.endp = _endpos_r00_;
+                MenhirLib.EngineTypes.next = {
+                  MenhirLib.EngineTypes.state = _menhir_s;
+                  MenhirLib.EngineTypes.semv = x0;
+                  MenhirLib.EngineTypes.startp = _startpos_x0_;
+                  MenhirLib.EngineTypes.endp = _endpos_x0_;
+                  MenhirLib.EngineTypes.next = _menhir_stack;
+                  };
+                };
+              };
+            };
+          } = _menhir_stack in
+        let m : 'tv_list_TMul_ = Obj.magic m in
+        let p00 : (
+# 61 "parser_cocci_menhir.mly"
+       (string * Data.clt)
+# 10368 "parser_cocci_menhir.ml"
+        ) = Obj.magic p00 in
+        let r00 : (
+# 49 "parser_cocci_menhir.mly"
+      (string)
+# 10373 "parser_cocci_menhir.ml"
+        ) = Obj.magic r00 in
+        let x0 : 'tv_const_vol = Obj.magic x0 in
+        let _startpos = _startpos_x0_ in
+        let _endpos = _endpos_m_ in
+        let _v : 'tv_ctype = let ty =
+          let p0 = p00 in
+          let r0 = r00 in
+          let ty =
+            let p = p0 in
+            let r = r0 in
+            
+# 532 "parser_cocci_menhir.mly"
+    ( let nm = (r,P.id2name p) in
+    (* this is only possible when we are in a metavar decl.  Otherwise,
+       it will be represented already as a MetaType *)
+    let _ = P.check_meta(Ast.MetaTypeDecl(Ast.NONE,nm)) in
+    Ast0.wrap(Ast0.MetaType(P.clt2mcode nm (P.id2clt p),
+                           Ast0.Impure (*will be ignored*))) )
+# 10392 "parser_cocci_menhir.ml"
+            
+          in
+          
+# 583 "parser_cocci_menhir.mly"
+                    ( ty )
+# 10398 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -10044,13 +10402,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 10048 "parser_cocci_menhir.ml"
+# 10406 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 10054 "parser_cocci_menhir.ml"
+# 10412 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10080,9 +10438,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 10086 "parser_cocci_menhir.ml"
+# 10444 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -10092,15 +10450,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 529 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.BaseType(Ast.FloatType,[P.clt2mcode "float" ty])) )
-# 10098 "parser_cocci_menhir.ml"
+# 539 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
+# 10456 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
-                        ( ty )
-# 10104 "parser_cocci_menhir.ml"
+# 583 "parser_cocci_menhir.mly"
+                    ( ty )
+# 10462 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -10108,13 +10466,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 10112 "parser_cocci_menhir.ml"
+# 10470 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 10118 "parser_cocci_menhir.ml"
+# 10476 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10130,13 +10488,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.startp = _startpos_m_;
           MenhirLib.EngineTypes.endp = _endpos_m_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = i00;
-            MenhirLib.EngineTypes.startp = _startpos_i00_;
-            MenhirLib.EngineTypes.endp = _endpos_i00_;
+            MenhirLib.EngineTypes.semv = ty200;
+            MenhirLib.EngineTypes.startp = _startpos_ty200_;
+            MenhirLib.EngineTypes.endp = _endpos_ty200_;
             MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.semv = s00;
-              MenhirLib.EngineTypes.startp = _startpos_s00_;
-              MenhirLib.EngineTypes.endp = _endpos_s00_;
+              MenhirLib.EngineTypes.semv = ty100;
+              MenhirLib.EngineTypes.startp = _startpos_ty100_;
+              MenhirLib.EngineTypes.endp = _endpos_ty100_;
               MenhirLib.EngineTypes.next = {
                 MenhirLib.EngineTypes.state = _menhir_s;
                 MenhirLib.EngineTypes.semv = x0;
@@ -10148,31 +10506,102 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
-        let i00 : 'tv_ident = Obj.magic i00 in
-        let s00 : (
-# 28 "parser_cocci_menhir.mly"
+        let ty200 : (
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 10156 "parser_cocci_menhir.ml"
-        ) = Obj.magic s00 in
+# 10513 "parser_cocci_menhir.ml"
+        ) = Obj.magic ty200 in
+        let ty100 : (
+# 51 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 10518 "parser_cocci_menhir.ml"
+        ) = Obj.magic ty100 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
-          let i0 = i00 in
-          let s0 = s00 in
+          let ty20 = ty200 in
+          let ty10 = ty100 in
           let ty =
-            let i = i0 in
-            let s = s0 in
+            let ty2 = ty20 in
+            let ty1 = ty10 in
             
-# 531 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, i)) )
-# 10170 "parser_cocci_menhir.ml"
+# 541 "parser_cocci_menhir.mly"
+    ( Ast0.wrap
+       (Ast0.BaseType
+          (Ast.LongLongType,
+           [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
+# 10535 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
+                    ( ty )
+# 10541 "parser_cocci_menhir.ml"
+          
+        in
+        let cv =
+          let x = x0 in
+          
+# 41 "standard.mly"
+    ( Some x )
+# 10549 "parser_cocci_menhir.ml"
+          
+        in
+        
+# 588 "parser_cocci_menhir.mly"
+    ( P.pointerify (P.make_cv cv ty) m )
+# 10555 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = m;
+          MenhirLib.EngineTypes.startp = _startpos_m_;
+          MenhirLib.EngineTypes.endp = _endpos_m_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = ty00;
+            MenhirLib.EngineTypes.startp = _startpos_ty00_;
+            MenhirLib.EngineTypes.endp = _endpos_ty00_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = x0;
+              MenhirLib.EngineTypes.startp = _startpos_x0_;
+              MenhirLib.EngineTypes.endp = _endpos_x0_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
+            };
+          } = _menhir_stack in
+        let m : 'tv_list_TMul_ = Obj.magic m in
+        let ty00 : (
+# 52 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 10587 "parser_cocci_menhir.ml"
+        ) = Obj.magic ty00 in
+        let x0 : 'tv_const_vol = Obj.magic x0 in
+        let _startpos = _startpos_x0_ in
+        let _endpos = _endpos_m_ in
+        let _v : 'tv_ctype = let ty =
+          let ty0 = ty00 in
+          let ty =
+            let ty = ty0 in
+            
+# 549 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.BaseType(Ast.VoidType,[P.clt2mcode "void" ty])) )
+# 10599 "parser_cocci_menhir.ml"
+            
+          in
+          
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 10176 "parser_cocci_menhir.ml"
+# 10605 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -10180,13 +10609,141 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 10184 "parser_cocci_menhir.ml"
+# 10613 "parser_cocci_menhir.ml"
+          
+        in
+        
+# 588 "parser_cocci_menhir.mly"
+    ( P.pointerify (P.make_cv cv ty) m )
+# 10619 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = m;
+          MenhirLib.EngineTypes.startp = _startpos_m_;
+          MenhirLib.EngineTypes.endp = _endpos_m_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = ty00;
+            MenhirLib.EngineTypes.startp = _startpos_ty00_;
+            MenhirLib.EngineTypes.endp = _endpos_ty00_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = x0;
+              MenhirLib.EngineTypes.startp = _startpos_x0_;
+              MenhirLib.EngineTypes.endp = _endpos_x0_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
+            };
+          } = _menhir_stack in
+        let m : 'tv_list_TMul_ = Obj.magic m in
+        let ty00 : (
+# 51 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 10651 "parser_cocci_menhir.ml"
+        ) = Obj.magic ty00 in
+        let x0 : 'tv_const_vol = Obj.magic x0 in
+        let _startpos = _startpos_x0_ in
+        let _endpos = _endpos_m_ in
+        let _v : 'tv_ctype = let ty =
+          let ty0 = ty00 in
+          let ty =
+            let ty = ty0 in
+            
+# 551 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.BaseType(Ast.DoubleType,[P.clt2mcode "double" ty])) )
+# 10663 "parser_cocci_menhir.ml"
+            
+          in
+          
+# 584 "parser_cocci_menhir.mly"
+                        ( ty )
+# 10669 "parser_cocci_menhir.ml"
+          
+        in
+        let cv =
+          let x = x0 in
+          
+# 41 "standard.mly"
+    ( Some x )
+# 10677 "parser_cocci_menhir.ml"
+          
+        in
+        
+# 588 "parser_cocci_menhir.mly"
+    ( P.pointerify (P.make_cv cv ty) m )
+# 10683 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = m;
+          MenhirLib.EngineTypes.startp = _startpos_m_;
+          MenhirLib.EngineTypes.endp = _endpos_m_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = ty00;
+            MenhirLib.EngineTypes.startp = _startpos_ty00_;
+            MenhirLib.EngineTypes.endp = _endpos_ty00_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = x0;
+              MenhirLib.EngineTypes.startp = _startpos_x0_;
+              MenhirLib.EngineTypes.endp = _endpos_x0_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
+            };
+          } = _menhir_stack in
+        let m : 'tv_list_TMul_ = Obj.magic m in
+        let ty00 : (
+# 51 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 10715 "parser_cocci_menhir.ml"
+        ) = Obj.magic ty00 in
+        let x0 : 'tv_const_vol = Obj.magic x0 in
+        let _startpos = _startpos_x0_ in
+        let _endpos = _endpos_m_ in
+        let _v : 'tv_ctype = let ty =
+          let ty0 = ty00 in
+          let ty =
+            let ty = ty0 in
+            
+# 553 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.BaseType(Ast.FloatType,[P.clt2mcode "float" ty])) )
+# 10727 "parser_cocci_menhir.ml"
+            
+          in
+          
+# 584 "parser_cocci_menhir.mly"
+                        ( ty )
+# 10733 "parser_cocci_menhir.ml"
+          
+        in
+        let cv =
+          let x = x0 in
+          
+# 41 "standard.mly"
+    ( Some x )
+# 10741 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 10190 "parser_cocci_menhir.ml"
+# 10747 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10221,7 +10778,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let i00 : 'tv_ident = Obj.magic i00 in
-        let s00 : 'tv_struct_or_union = Obj.magic s00 in
+        let s00 : (
+# 52 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 10785 "parser_cocci_menhir.ml"
+        ) = Obj.magic s00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
         let _endpos = _endpos_m_ in
@@ -10232,15 +10793,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let i = i0 in
             let s = s0 in
             
-# 533 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.StructUnionName(s, Some i)) )
-# 10238 "parser_cocci_menhir.ml"
+# 555 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, Some i)) )
+# 10799 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 10244 "parser_cocci_menhir.ml"
+# 10805 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -10248,13 +10809,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 10252 "parser_cocci_menhir.ml"
+# 10813 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 10258 "parser_cocci_menhir.ml"
+# 10819 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10274,9 +10835,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             MenhirLib.EngineTypes.startp = _startpos_r00_;
             MenhirLib.EngineTypes.endp = _endpos_r00_;
             MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.semv = d00;
-              MenhirLib.EngineTypes.startp = _startpos_d00_;
-              MenhirLib.EngineTypes.endp = _endpos_d00_;
+              MenhirLib.EngineTypes.semv = ids00;
+              MenhirLib.EngineTypes.startp = _startpos_ids00_;
+              MenhirLib.EngineTypes.endp = _endpos_ids00_;
               MenhirLib.EngineTypes.next = {
                 MenhirLib.EngineTypes.semv = l00;
                 MenhirLib.EngineTypes.startp = _startpos_l00_;
@@ -10299,51 +10860,54 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let r00 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10305 "parser_cocci_menhir.ml"
+# 10866 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
-        let d00 : 'tv_struct_decl_list = Obj.magic d00 in
+        let ids00 : 'tv_enum_decl_list = Obj.magic ids00 in
         let l00 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10311 "parser_cocci_menhir.ml"
+# 10872 "parser_cocci_menhir.ml"
         ) = Obj.magic l00 in
-        let s00 : 'tv_struct_or_union = Obj.magic s00 in
+        let s00 : (
+# 52 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 10877 "parser_cocci_menhir.ml"
+        ) = Obj.magic s00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
           let r0 = r00 in
-          let d0 = d00 in
+          let ids0 = ids00 in
           let l0 = l00 in
           let s0 = s00 in
           let ty =
             let r = r0 in
-            let d = d0 in
+            let ids = ids0 in
             let l = l0 in
             let s = s0 in
             let i =
               
 # 39 "standard.mly"
     ( None )
-# 10331 "parser_cocci_menhir.ml"
+# 10896 "parser_cocci_menhir.ml"
               
             in
             
-# 536 "parser_cocci_menhir.mly"
+# 557 "parser_cocci_menhir.mly"
     ( (if i = None && !Data.in_iso
-    then failwith "structures must be named in the iso file");
-      Ast0.wrap(Ast0.StructUnionDef(Ast0.wrap(Ast0.StructUnionName(s, i)),
-                                   P.clt2mcode "{" l,
-                                   d, P.clt2mcode "}" r)) )
-# 10341 "parser_cocci_menhir.ml"
+    then failwith "enums must be named in the iso file");
+      Ast0.wrap(Ast0.EnumDef(Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, i)),
+                            P.clt2mcode "{" l, ids, P.clt2mcode "}" r)) )
+# 10905 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 10347 "parser_cocci_menhir.ml"
+# 10911 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -10351,13 +10915,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 10355 "parser_cocci_menhir.ml"
+# 10919 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 10361 "parser_cocci_menhir.ml"
+# 10925 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10377,9 +10941,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             MenhirLib.EngineTypes.startp = _startpos_r00_;
             MenhirLib.EngineTypes.endp = _endpos_r00_;
             MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.semv = d00;
-              MenhirLib.EngineTypes.startp = _startpos_d00_;
-              MenhirLib.EngineTypes.endp = _endpos_d00_;
+              MenhirLib.EngineTypes.semv = ids00;
+              MenhirLib.EngineTypes.startp = _startpos_ids00_;
+              MenhirLib.EngineTypes.endp = _endpos_ids00_;
               MenhirLib.EngineTypes.next = {
                 MenhirLib.EngineTypes.semv = l00;
                 MenhirLib.EngineTypes.startp = _startpos_l00_;
@@ -10407,30 +10971,34 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let r00 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10413 "parser_cocci_menhir.ml"
+# 10977 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
-        let d00 : 'tv_struct_decl_list = Obj.magic d00 in
+        let ids00 : 'tv_enum_decl_list = Obj.magic ids00 in
         let l00 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10419 "parser_cocci_menhir.ml"
+# 10983 "parser_cocci_menhir.ml"
         ) = Obj.magic l00 in
         let x000 : 'tv_ident = Obj.magic x000 in
-        let s00 : 'tv_struct_or_union = Obj.magic s00 in
+        let s00 : (
+# 52 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 10989 "parser_cocci_menhir.ml"
+        ) = Obj.magic s00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_ctype = let ty =
           let r0 = r00 in
-          let d0 = d00 in
+          let ids0 = ids00 in
           let l0 = l00 in
           let x00 = x000 in
           let s0 = s00 in
           let ty =
             let r = r0 in
-            let d = d0 in
+            let ids = ids0 in
             let l = l0 in
             let x0 = x00 in
             let s = s0 in
@@ -10439,23 +11007,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               
 # 41 "standard.mly"
     ( Some x )
-# 10443 "parser_cocci_menhir.ml"
+# 11011 "parser_cocci_menhir.ml"
               
             in
             
-# 536 "parser_cocci_menhir.mly"
+# 557 "parser_cocci_menhir.mly"
     ( (if i = None && !Data.in_iso
-    then failwith "structures must be named in the iso file");
-      Ast0.wrap(Ast0.StructUnionDef(Ast0.wrap(Ast0.StructUnionName(s, i)),
-                                   P.clt2mcode "{" l,
-                                   d, P.clt2mcode "}" r)) )
-# 10453 "parser_cocci_menhir.ml"
+    then failwith "enums must be named in the iso file");
+      Ast0.wrap(Ast0.EnumDef(Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, i)),
+                            P.clt2mcode "{" l, ids, P.clt2mcode "}" r)) )
+# 11020 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 10459 "parser_cocci_menhir.ml"
+# 11026 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -10463,13 +11030,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 10467 "parser_cocci_menhir.ml"
+# 11034 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 10473 "parser_cocci_menhir.ml"
+# 11040 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10485,50 +11052,333 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.startp = _startpos_m_;
           MenhirLib.EngineTypes.endp = _endpos_m_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = r00;
-            MenhirLib.EngineTypes.startp = _startpos_r00_;
-            MenhirLib.EngineTypes.endp = _endpos_r00_;
+            MenhirLib.EngineTypes.semv = i00;
+            MenhirLib.EngineTypes.startp = _startpos_i00_;
+            MenhirLib.EngineTypes.endp = _endpos_i00_;
             MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.semv = d00;
-              MenhirLib.EngineTypes.startp = _startpos_d00_;
-              MenhirLib.EngineTypes.endp = _endpos_d00_;
+              MenhirLib.EngineTypes.semv = s00;
+              MenhirLib.EngineTypes.startp = _startpos_s00_;
+              MenhirLib.EngineTypes.endp = _endpos_s00_;
               MenhirLib.EngineTypes.next = {
-                MenhirLib.EngineTypes.semv = l00;
-                MenhirLib.EngineTypes.startp = _startpos_l00_;
-                MenhirLib.EngineTypes.endp = _endpos_l00_;
-                MenhirLib.EngineTypes.next = {
-                  MenhirLib.EngineTypes.semv = s00;
-                  MenhirLib.EngineTypes.startp = _startpos_s00_;
-                  MenhirLib.EngineTypes.endp = _endpos_s00_;
-                  MenhirLib.EngineTypes.next = {
-                    MenhirLib.EngineTypes.state = _menhir_s;
-                    MenhirLib.EngineTypes.semv = x0;
-                    MenhirLib.EngineTypes.startp = _startpos_x0_;
-                    MenhirLib.EngineTypes.endp = _endpos_x0_;
-                    MenhirLib.EngineTypes.next = _menhir_stack;
-                    };
-                  };
+                MenhirLib.EngineTypes.state = _menhir_s;
+                MenhirLib.EngineTypes.semv = x0;
+                MenhirLib.EngineTypes.startp = _startpos_x0_;
+                MenhirLib.EngineTypes.endp = _endpos_x0_;
+                MenhirLib.EngineTypes.next = _menhir_stack;
                 };
               };
             };
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
-        let r00 : (
-# 80 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 10520 "parser_cocci_menhir.ml"
-        ) = Obj.magic r00 in
-        let d00 : 'tv_struct_decl_list = Obj.magic d00 in
-        let l00 : (
-# 80 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 10526 "parser_cocci_menhir.ml"
-        ) = Obj.magic l00 in
-        let s00 : (
-# 43 "parser_cocci_menhir.mly"
-       (Parse_aux.info)
-# 10531 "parser_cocci_menhir.ml"
-        ) = Obj.magic s00 in
+        let i00 : 'tv_ident = Obj.magic i00 in
+        let s00 : 'tv_struct_or_union = Obj.magic s00 in
+        let x0 : 'tv_const_vol = Obj.magic x0 in
+        let _startpos = _startpos_x0_ in
+        let _endpos = _endpos_m_ in
+        let _v : 'tv_ctype = let ty =
+          let i0 = i00 in
+          let s0 = s00 in
+          let ty =
+            let i = i0 in
+            let s = s0 in
+            
+# 562 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.StructUnionName(s, Some i)) )
+# 11088 "parser_cocci_menhir.ml"
+            
+          in
+          
+# 584 "parser_cocci_menhir.mly"
+                        ( ty )
+# 11094 "parser_cocci_menhir.ml"
+          
+        in
+        let cv =
+          let x = x0 in
+          
+# 41 "standard.mly"
+    ( Some x )
+# 11102 "parser_cocci_menhir.ml"
+          
+        in
+        
+# 588 "parser_cocci_menhir.mly"
+    ( P.pointerify (P.make_cv cv ty) m )
+# 11108 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = m;
+          MenhirLib.EngineTypes.startp = _startpos_m_;
+          MenhirLib.EngineTypes.endp = _endpos_m_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = r00;
+            MenhirLib.EngineTypes.startp = _startpos_r00_;
+            MenhirLib.EngineTypes.endp = _endpos_r00_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.semv = d00;
+              MenhirLib.EngineTypes.startp = _startpos_d00_;
+              MenhirLib.EngineTypes.endp = _endpos_d00_;
+              MenhirLib.EngineTypes.next = {
+                MenhirLib.EngineTypes.semv = l00;
+                MenhirLib.EngineTypes.startp = _startpos_l00_;
+                MenhirLib.EngineTypes.endp = _endpos_l00_;
+                MenhirLib.EngineTypes.next = {
+                  MenhirLib.EngineTypes.semv = s00;
+                  MenhirLib.EngineTypes.startp = _startpos_s00_;
+                  MenhirLib.EngineTypes.endp = _endpos_s00_;
+                  MenhirLib.EngineTypes.next = {
+                    MenhirLib.EngineTypes.state = _menhir_s;
+                    MenhirLib.EngineTypes.semv = x0;
+                    MenhirLib.EngineTypes.startp = _startpos_x0_;
+                    MenhirLib.EngineTypes.endp = _endpos_x0_;
+                    MenhirLib.EngineTypes.next = _menhir_stack;
+                    };
+                  };
+                };
+              };
+            };
+          } = _menhir_stack in
+        let m : 'tv_list_TMul_ = Obj.magic m in
+        let r00 : (
+# 104 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 11155 "parser_cocci_menhir.ml"
+        ) = Obj.magic r00 in
+        let d00 : 'tv_struct_decl_list = Obj.magic d00 in
+        let l00 : (
+# 104 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 11161 "parser_cocci_menhir.ml"
+        ) = Obj.magic l00 in
+        let s00 : 'tv_struct_or_union = Obj.magic s00 in
+        let x0 : 'tv_const_vol = Obj.magic x0 in
+        let _startpos = _startpos_x0_ in
+        let _endpos = _endpos_m_ in
+        let _v : 'tv_ctype = let ty =
+          let r0 = r00 in
+          let d0 = d00 in
+          let l0 = l00 in
+          let s0 = s00 in
+          let ty =
+            let r = r0 in
+            let d = d0 in
+            let l = l0 in
+            let s = s0 in
+            let i =
+              
+# 39 "standard.mly"
+    ( None )
+# 11181 "parser_cocci_menhir.ml"
+              
+            in
+            
+# 565 "parser_cocci_menhir.mly"
+    ( (if i = None && !Data.in_iso
+    then failwith "structures must be named in the iso file");
+      Ast0.wrap(Ast0.StructUnionDef(Ast0.wrap(Ast0.StructUnionName(s, i)),
+                                   P.clt2mcode "{" l,
+                                   d, P.clt2mcode "}" r)) )
+# 11191 "parser_cocci_menhir.ml"
+            
+          in
+          
+# 584 "parser_cocci_menhir.mly"
+                        ( ty )
+# 11197 "parser_cocci_menhir.ml"
+          
+        in
+        let cv =
+          let x = x0 in
+          
+# 41 "standard.mly"
+    ( Some x )
+# 11205 "parser_cocci_menhir.ml"
+          
+        in
+        
+# 588 "parser_cocci_menhir.mly"
+    ( P.pointerify (P.make_cv cv ty) m )
+# 11211 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = m;
+          MenhirLib.EngineTypes.startp = _startpos_m_;
+          MenhirLib.EngineTypes.endp = _endpos_m_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = r00;
+            MenhirLib.EngineTypes.startp = _startpos_r00_;
+            MenhirLib.EngineTypes.endp = _endpos_r00_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.semv = d00;
+              MenhirLib.EngineTypes.startp = _startpos_d00_;
+              MenhirLib.EngineTypes.endp = _endpos_d00_;
+              MenhirLib.EngineTypes.next = {
+                MenhirLib.EngineTypes.semv = l00;
+                MenhirLib.EngineTypes.startp = _startpos_l00_;
+                MenhirLib.EngineTypes.endp = _endpos_l00_;
+                MenhirLib.EngineTypes.next = {
+                  MenhirLib.EngineTypes.semv = x000;
+                  MenhirLib.EngineTypes.startp = _startpos_x000_;
+                  MenhirLib.EngineTypes.endp = _endpos_x000_;
+                  MenhirLib.EngineTypes.next = {
+                    MenhirLib.EngineTypes.semv = s00;
+                    MenhirLib.EngineTypes.startp = _startpos_s00_;
+                    MenhirLib.EngineTypes.endp = _endpos_s00_;
+                    MenhirLib.EngineTypes.next = {
+                      MenhirLib.EngineTypes.state = _menhir_s;
+                      MenhirLib.EngineTypes.semv = x0;
+                      MenhirLib.EngineTypes.startp = _startpos_x0_;
+                      MenhirLib.EngineTypes.endp = _endpos_x0_;
+                      MenhirLib.EngineTypes.next = _menhir_stack;
+                      };
+                    };
+                  };
+                };
+              };
+            };
+          } = _menhir_stack in
+        let m : 'tv_list_TMul_ = Obj.magic m in
+        let r00 : (
+# 104 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 11263 "parser_cocci_menhir.ml"
+        ) = Obj.magic r00 in
+        let d00 : 'tv_struct_decl_list = Obj.magic d00 in
+        let l00 : (
+# 104 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 11269 "parser_cocci_menhir.ml"
+        ) = Obj.magic l00 in
+        let x000 : 'tv_ident = Obj.magic x000 in
+        let s00 : 'tv_struct_or_union = Obj.magic s00 in
+        let x0 : 'tv_const_vol = Obj.magic x0 in
+        let _startpos = _startpos_x0_ in
+        let _endpos = _endpos_m_ in
+        let _v : 'tv_ctype = let ty =
+          let r0 = r00 in
+          let d0 = d00 in
+          let l0 = l00 in
+          let x00 = x000 in
+          let s0 = s00 in
+          let ty =
+            let r = r0 in
+            let d = d0 in
+            let l = l0 in
+            let x0 = x00 in
+            let s = s0 in
+            let i =
+              let x = x0 in
+              
+# 41 "standard.mly"
+    ( Some x )
+# 11293 "parser_cocci_menhir.ml"
+              
+            in
+            
+# 565 "parser_cocci_menhir.mly"
+    ( (if i = None && !Data.in_iso
+    then failwith "structures must be named in the iso file");
+      Ast0.wrap(Ast0.StructUnionDef(Ast0.wrap(Ast0.StructUnionName(s, i)),
+                                   P.clt2mcode "{" l,
+                                   d, P.clt2mcode "}" r)) )
+# 11303 "parser_cocci_menhir.ml"
+            
+          in
+          
+# 584 "parser_cocci_menhir.mly"
+                        ( ty )
+# 11309 "parser_cocci_menhir.ml"
+          
+        in
+        let cv =
+          let x = x0 in
+          
+# 41 "standard.mly"
+    ( Some x )
+# 11317 "parser_cocci_menhir.ml"
+          
+        in
+        
+# 588 "parser_cocci_menhir.mly"
+    ( P.pointerify (P.make_cv cv ty) m )
+# 11323 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = m;
+          MenhirLib.EngineTypes.startp = _startpos_m_;
+          MenhirLib.EngineTypes.endp = _endpos_m_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = r00;
+            MenhirLib.EngineTypes.startp = _startpos_r00_;
+            MenhirLib.EngineTypes.endp = _endpos_r00_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.semv = d00;
+              MenhirLib.EngineTypes.startp = _startpos_d00_;
+              MenhirLib.EngineTypes.endp = _endpos_d00_;
+              MenhirLib.EngineTypes.next = {
+                MenhirLib.EngineTypes.semv = l00;
+                MenhirLib.EngineTypes.startp = _startpos_l00_;
+                MenhirLib.EngineTypes.endp = _endpos_l00_;
+                MenhirLib.EngineTypes.next = {
+                  MenhirLib.EngineTypes.semv = s00;
+                  MenhirLib.EngineTypes.startp = _startpos_s00_;
+                  MenhirLib.EngineTypes.endp = _endpos_s00_;
+                  MenhirLib.EngineTypes.next = {
+                    MenhirLib.EngineTypes.state = _menhir_s;
+                    MenhirLib.EngineTypes.semv = x0;
+                    MenhirLib.EngineTypes.startp = _startpos_x0_;
+                    MenhirLib.EngineTypes.endp = _endpos_x0_;
+                    MenhirLib.EngineTypes.next = _menhir_stack;
+                    };
+                  };
+                };
+              };
+            };
+          } = _menhir_stack in
+        let m : 'tv_list_TMul_ = Obj.magic m in
+        let r00 : (
+# 104 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 11370 "parser_cocci_menhir.ml"
+        ) = Obj.magic r00 in
+        let d00 : 'tv_struct_decl_list = Obj.magic d00 in
+        let l00 : (
+# 104 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 11376 "parser_cocci_menhir.ml"
+        ) = Obj.magic l00 in
+        let s00 : (
+# 67 "parser_cocci_menhir.mly"
+       (Parse_aux.info)
+# 11381 "parser_cocci_menhir.ml"
+        ) = Obj.magic s00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
         let _endpos = _endpos_m_ in
@@ -10543,17 +11393,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let l = l0 in
             let s = s0 in
             
-# 542 "parser_cocci_menhir.mly"
+# 571 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = s in
     let ty = Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) in
     Ast0.wrap(Ast0.StructUnionDef(ty,P.clt2mcode "{" l,d,P.clt2mcode "}" r)) )
-# 10551 "parser_cocci_menhir.ml"
+# 11401 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 10557 "parser_cocci_menhir.ml"
+# 11407 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -10561,13 +11411,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 10565 "parser_cocci_menhir.ml"
+# 11415 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 10571 "parser_cocci_menhir.ml"
+# 11421 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10597,9 +11447,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 37 "parser_cocci_menhir.mly"
+# 61 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 10603 "parser_cocci_menhir.ml"
+# 11453 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -10609,15 +11459,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 546 "parser_cocci_menhir.mly"
+# 575 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.TypeName(P.id2mcode p)) )
-# 10615 "parser_cocci_menhir.ml"
+# 11465 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 10621 "parser_cocci_menhir.ml"
+# 11471 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -10625,13 +11475,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 10629 "parser_cocci_menhir.ml"
+# 11479 "parser_cocci_menhir.ml"
           
         in
         
-# 559 "parser_cocci_menhir.mly"
+# 588 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 10635 "parser_cocci_menhir.ml"
+# 11485 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10650,16 +11500,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let r : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 10656 "parser_cocci_menhir.ml"
+# 11506 "parser_cocci_menhir.ml"
         ) = Obj.magic r in
         let _startpos = _startpos_r_ in
         let _endpos = _endpos_r_ in
         let _v : 'tv_ctype = 
-# 561 "parser_cocci_menhir.mly"
+# 590 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,None)) )
-# 10663 "parser_cocci_menhir.ml"
+# 11513 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10678,16 +11528,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let r : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 10684 "parser_cocci_menhir.ml"
+# 11534 "parser_cocci_menhir.ml"
         ) = Obj.magic r in
         let _startpos = _startpos_r_ in
         let _endpos = _endpos_r_ in
         let _v : 'tv_ctype = 
-# 563 "parser_cocci_menhir.mly"
+# 592 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,None)) )
-# 10691 "parser_cocci_menhir.ml"
+# 11541 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10716,24 +11566,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let rp : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10722 "parser_cocci_menhir.ml"
+# 11572 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let t : 'tv_midzero_list_ctype_ctype_ = Obj.magic t in
         let lp : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10728 "parser_cocci_menhir.ml"
+# 11578 "parser_cocci_menhir.ml"
         ) = Obj.magic lp in
         let _startpos = _startpos_lp_ in
         let _endpos = _endpos_rp_ in
         let _v : 'tv_ctype = 
-# 565 "parser_cocci_menhir.mly"
+# 594 "parser_cocci_menhir.mly"
     ( let (mids,code) = t in
       Ast0.wrap
        (Ast0.DisjType(P.clt2mcode "(" lp,code,mids, P.clt2mcode ")" rp)) )
-# 10737 "parser_cocci_menhir.ml"
+# 11587 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10761,7 +11611,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_d_ident = 
-# 1084 "parser_cocci_menhir.mly"
+# 1132 "parser_cocci_menhir.mly"
       ( (_1,
         function t ->
           List.fold_right
@@ -10770,7 +11620,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
                 Ast0.wrap
                   (Ast0.Array(rest,P.clt2mcode "[" l,i,P.clt2mcode "]" r)))
             _2 t) )
-# 10774 "parser_cocci_menhir.ml"
+# 11624 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10798,9 +11648,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_t_ in
         let _endpos = _endpos_i_ in
         let _v : 'tv_decl = 
-# 838 "parser_cocci_menhir.mly"
+# 886 "parser_cocci_menhir.mly"
  ( Ast0.wrap(Ast0.Param(t, Some i)) )
-# 10804 "parser_cocci_menhir.ml"
+# 11654 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10822,9 +11672,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_t_ in
         let _endpos = _endpos_t_ in
         let _v : 'tv_decl = 
-# 839 "parser_cocci_menhir.mly"
+# 887 "parser_cocci_menhir.mly"
               ( (*verify in FunDecl*) Ast0.wrap(Ast0.Param(t, None)) )
-# 10828 "parser_cocci_menhir.ml"
+# 11678 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10878,44 +11728,44 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let rp1 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10884 "parser_cocci_menhir.ml"
+# 11734 "parser_cocci_menhir.ml"
         ) = Obj.magic rp1 in
         let d : 'tv_decl_list_name_opt_decl_ = Obj.magic d in
         let lp1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10890 "parser_cocci_menhir.ml"
+# 11740 "parser_cocci_menhir.ml"
         ) = Obj.magic lp1 in
         let rp : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10895 "parser_cocci_menhir.ml"
+# 11745 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let i : 'tv_ident = Obj.magic i in
         let s : (
-# 78 "parser_cocci_menhir.mly"
+# 102 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10901 "parser_cocci_menhir.ml"
+# 11751 "parser_cocci_menhir.ml"
         ) = Obj.magic s in
         let lp : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10906 "parser_cocci_menhir.ml"
+# 11756 "parser_cocci_menhir.ml"
         ) = Obj.magic lp in
         let t : 'tv_ctype = Obj.magic t in
         let _startpos = _startpos_t_ in
         let _endpos = _endpos_rp1_ in
         let _v : 'tv_decl = 
-# 842 "parser_cocci_menhir.mly"
+# 890 "parser_cocci_menhir.mly"
         ( let fnptr =
          Ast0.wrap
            (Ast0.FunctionPointer
               (t,P.clt2mcode "(" lp,P.clt2mcode "*" s,P.clt2mcode ")" rp,
                P.clt2mcode "(" lp1,d,P.clt2mcode ")" rp1)) in
        Ast0.wrap(Ast0.Param(fnptr, Some i)) )
-# 10919 "parser_cocci_menhir.ml"
+# 11769 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10934,17 +11784,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 43 "parser_cocci_menhir.mly"
+# 67 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 10940 "parser_cocci_menhir.ml"
+# 11790 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_decl = 
-# 849 "parser_cocci_menhir.mly"
+# 897 "parser_cocci_menhir.mly"
  ( let (nm,pure,clt) = _1 in
        Ast0.wrap(Ast0.MetaParam(P.clt2mcode nm clt,pure)) )
-# 10948 "parser_cocci_menhir.ml"
+# 11798 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10963,16 +11813,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 37 "parser_cocci_menhir.mly"
+# 61 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 10969 "parser_cocci_menhir.ml"
+# 11819 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_decl_ident = 
-# 1675 "parser_cocci_menhir.mly"
+# 1699 "parser_cocci_menhir.mly"
          ( Ast0.wrap(Ast0.Id(P.id2mcode _1)) )
-# 10976 "parser_cocci_menhir.ml"
+# 11826 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10991,34 +11841,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 41 "parser_cocci_menhir.mly"
+# 65 "parser_cocci_menhir.mly"
        (Parse_aux.idinfo)
-# 10997 "parser_cocci_menhir.ml"
+# 11847 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_decl_ident = 
-# 1677 "parser_cocci_menhir.mly"
+# 1701 "parser_cocci_menhir.mly"
          ( let (nm,constraints,pure,clt) = _1 in
          Ast0.wrap(Ast0.MetaId(P.clt2mcode nm clt,constraints,pure)) )
-# 11005 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
-        let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
-        let _endpos = _startpos in
-        let _v : 'tv_decl_list_decl_ = 
-# 1697 "parser_cocci_menhir.mly"
-              ( Ast0.wrap(Ast0.DOTS([])) )
-# 11022 "parser_cocci_menhir.ml"
+# 11855 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11036,34 +11869,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos__1_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let _1 : 'tv_decl_list_start_decl_ = Obj.magic _1 in
+        let _1 : 'tv_empty_list_start_one_dec_decl__TEllipsis_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_decl_list_decl_ = 
-# 1699 "parser_cocci_menhir.mly"
-     (let circle x =
-       match Ast0.unwrap x with Ast0.Pcircles(_) -> true | _ -> false in
-     if List.exists circle _1
-     then Ast0.wrap(Ast0.CIRCLES(_1))
-     else Ast0.wrap(Ast0.DOTS(_1)) )
-# 11050 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
-        let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
-        let _endpos = _startpos in
-        let _v : 'tv_decl_list_name_opt_decl_ = 
-# 1697 "parser_cocci_menhir.mly"
-              ( Ast0.wrap(Ast0.DOTS([])) )
-# 11067 "parser_cocci_menhir.ml"
+# 1722 "parser_cocci_menhir.mly"
+     ( Ast0.wrap
+        (Ast0.DOTS
+           (_1
+              (fun _ d -> Ast0.wrap(Ast0.Pdots(P.clt2mcode "..." d)))
+              (fun c -> Ast0.PComma c))) )
+# 11883 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11081,215 +11897,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos__1_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let _1 : 'tv_decl_list_start_name_opt_decl_ = Obj.magic _1 in
+        let _1 : 'tv_empty_list_start_one_dec_name_opt_decl__TEllipsis_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_decl_list_name_opt_decl_ = 
-# 1699 "parser_cocci_menhir.mly"
-     (let circle x =
-       match Ast0.unwrap x with Ast0.Pcircles(_) -> true | _ -> false in
-     if List.exists circle _1
-     then Ast0.wrap(Ast0.CIRCLES(_1))
-     else Ast0.wrap(Ast0.DOTS(_1)) )
-# 11095 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = _1;
-          MenhirLib.EngineTypes.startp = _startpos__1_;
-          MenhirLib.EngineTypes.endp = _endpos__1_;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          } = _menhir_stack in
-        let _1 : 'tv_one_dec_decl_ = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__1_ in
-        let _v : 'tv_decl_list_start_decl_ = 
-# 1706 "parser_cocci_menhir.mly"
-                 ( [_1] )
-# 11119 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = _3;
-          MenhirLib.EngineTypes.startp = _startpos__3_;
-          MenhirLib.EngineTypes.endp = _endpos__3_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = _2;
-            MenhirLib.EngineTypes.startp = _startpos__2_;
-            MenhirLib.EngineTypes.endp = _endpos__2_;
-            MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.state = _menhir_s;
-              MenhirLib.EngineTypes.semv = _1;
-              MenhirLib.EngineTypes.startp = _startpos__1_;
-              MenhirLib.EngineTypes.endp = _endpos__1_;
-              MenhirLib.EngineTypes.next = _menhir_stack;
-              };
-            };
-          } = _menhir_stack in
-        let _3 : 'tv_decl_list_start_decl_ = Obj.magic _3 in
-        let _2 : (
-# 86 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 11151 "parser_cocci_menhir.ml"
-        ) = Obj.magic _2 in
-        let _1 : 'tv_one_dec_decl_ = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__3_ in
-        let _v : 'tv_decl_list_start_decl_ = 
-# 1708 "parser_cocci_menhir.mly"
-    ( _1::Ast0.wrap(Ast0.PComma(P.clt2mcode "," _2))::_3 )
-# 11159 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = _2;
-          MenhirLib.EngineTypes.startp = _startpos__2_;
-          MenhirLib.EngineTypes.endp = _endpos__2_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = _1;
-            MenhirLib.EngineTypes.startp = _startpos__1_;
-            MenhirLib.EngineTypes.endp = _endpos__1_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
-          } = _menhir_stack in
-        let _2 : 'tv_list_comma_decls_TEllipsis_decl__ = Obj.magic _2 in
-        let _1 : (
-# 52 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 11186 "parser_cocci_menhir.ml"
-        ) = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__2_ in
-        let _v : 'tv_decl_list_start_decl_ = 
-# 1710 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Pdots(P.clt2mcode "..." _1))::
-      (List.concat(List.map (function x -> x (P.mkpdots "...")) _2)) )
-# 11194 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = _1;
-          MenhirLib.EngineTypes.startp = _startpos__1_;
-          MenhirLib.EngineTypes.endp = _endpos__1_;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          } = _menhir_stack in
-        let _1 : 'tv_one_dec_name_opt_decl_ = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__1_ in
-        let _v : 'tv_decl_list_start_name_opt_decl_ = 
-# 1706 "parser_cocci_menhir.mly"
-                 ( [_1] )
-# 11218 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = _3;
-          MenhirLib.EngineTypes.startp = _startpos__3_;
-          MenhirLib.EngineTypes.endp = _endpos__3_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = _2;
-            MenhirLib.EngineTypes.startp = _startpos__2_;
-            MenhirLib.EngineTypes.endp = _endpos__2_;
-            MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.state = _menhir_s;
-              MenhirLib.EngineTypes.semv = _1;
-              MenhirLib.EngineTypes.startp = _startpos__1_;
-              MenhirLib.EngineTypes.endp = _endpos__1_;
-              MenhirLib.EngineTypes.next = _menhir_stack;
-              };
-            };
-          } = _menhir_stack in
-        let _3 : 'tv_decl_list_start_name_opt_decl_ = Obj.magic _3 in
-        let _2 : (
-# 86 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 11250 "parser_cocci_menhir.ml"
-        ) = Obj.magic _2 in
-        let _1 : 'tv_one_dec_name_opt_decl_ = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__3_ in
-        let _v : 'tv_decl_list_start_name_opt_decl_ = 
-# 1708 "parser_cocci_menhir.mly"
-    ( _1::Ast0.wrap(Ast0.PComma(P.clt2mcode "," _2))::_3 )
-# 11258 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = _2;
-          MenhirLib.EngineTypes.startp = _startpos__2_;
-          MenhirLib.EngineTypes.endp = _endpos__2_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = _1;
-            MenhirLib.EngineTypes.startp = _startpos__1_;
-            MenhirLib.EngineTypes.endp = _endpos__1_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
-          } = _menhir_stack in
-        let _2 : 'tv_list_comma_decls_TEllipsis_name_opt_decl__ = Obj.magic _2 in
-        let _1 : (
-# 52 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 11285 "parser_cocci_menhir.ml"
-        ) = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__2_ in
-        let _v : 'tv_decl_list_start_name_opt_decl_ = 
-# 1710 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.Pdots(P.clt2mcode "..." _1))::
-      (List.concat(List.map (function x -> x (P.mkpdots "...")) _2)) )
-# 11293 "parser_cocci_menhir.ml"
+# 1722 "parser_cocci_menhir.mly"
+     ( Ast0.wrap
+        (Ast0.DOTS
+           (_1
+              (fun _ d -> Ast0.wrap(Ast0.Pdots(P.clt2mcode "..." d)))
+              (fun c -> Ast0.PComma c))) )
+# 11911 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11308,17 +11926,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 43 "parser_cocci_menhir.mly"
+# 67 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 11314 "parser_cocci_menhir.ml"
+# 11932 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_decl_statement = 
-# 1166 "parser_cocci_menhir.mly"
+# 1190 "parser_cocci_menhir.mly"
       ( let (nm,pure,clt) = _1 in
       [Ast0.wrap(Ast0.MetaStmt(P.clt2mcode nm clt,pure))] )
-# 11322 "parser_cocci_menhir.ml"
+# 11940 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11340,13 +11958,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_decl_statement = 
-# 1169 "parser_cocci_menhir.mly"
+# 1193 "parser_cocci_menhir.mly"
       ( List.map
          (function x ->
            Ast0.wrap
              (Ast0.Decl((Ast0.default_info(),Ast0.context_befaft()),x)))
          _1 )
-# 11350 "parser_cocci_menhir.ml"
+# 11968 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11368,9 +11986,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_decl_statement = 
-# 1174 "parser_cocci_menhir.mly"
+# 1198 "parser_cocci_menhir.mly"
               ( [_1] )
-# 11374 "parser_cocci_menhir.ml"
+# 11992 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11399,20 +12017,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11405 "parser_cocci_menhir.ml"
+# 12023 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let t : 'tv_midzero_list_fun_start_fun_start_ = Obj.magic t in
         let _1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11411 "parser_cocci_menhir.ml"
+# 12029 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_decl_statement = 
-# 1183 "parser_cocci_menhir.mly"
+# 1207 "parser_cocci_menhir.mly"
       ( let (mids,code) = t in
        if List.for_all
            (function x ->
@@ -11422,7 +12040,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       else
          [Ast0.wrap(Ast0.Disj(P.clt2mcode "(" _1, code, mids,
                               P.clt2mcode ")" _3))] )
-# 11426 "parser_cocci_menhir.ml"
+# 12044 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11441,17 +12059,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 43 "parser_cocci_menhir.mly"
+# 67 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 11447 "parser_cocci_menhir.ml"
+# 12065 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_decl_statement_expr = 
-# 1196 "parser_cocci_menhir.mly"
+# 1220 "parser_cocci_menhir.mly"
       ( let (nm,pure,clt) = _1 in
       [Ast0.wrap(Ast0.MetaStmt(P.clt2mcode nm clt,pure))] )
-# 11455 "parser_cocci_menhir.ml"
+# 12073 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11473,13 +12091,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_decl_statement_expr = 
-# 1199 "parser_cocci_menhir.mly"
+# 1223 "parser_cocci_menhir.mly"
       ( List.map
          (function x ->
            Ast0.wrap
              (Ast0.Decl((Ast0.default_info(),Ast0.context_befaft()),x)))
          _1 )
-# 11483 "parser_cocci_menhir.ml"
+# 12101 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11501,9 +12119,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_decl_statement_expr = 
-# 1204 "parser_cocci_menhir.mly"
+# 1228 "parser_cocci_menhir.mly"
               ( [_1] )
-# 11507 "parser_cocci_menhir.ml"
+# 12125 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11532,20 +12150,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11538 "parser_cocci_menhir.ml"
+# 12156 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let t : 'tv_midzero_list_fun_after_stm_fun_after_dots_or_ = Obj.magic t in
         let _1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11544 "parser_cocci_menhir.ml"
+# 12162 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_decl_statement_expr = 
-# 1213 "parser_cocci_menhir.mly"
+# 1237 "parser_cocci_menhir.mly"
       ( let (mids,code) = t in
        if List.for_all (function [] -> true | _ -> false) code
       then []
@@ -11554,7 +12172,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
            List.map (function x -> Ast0.wrap(Ast0.DOTS x)) code in
          [Ast0.wrap(Ast0.Disj(P.clt2mcode "(" _1, dot_code, mids,
                               P.clt2mcode ")" _3))] )
-# 11558 "parser_cocci_menhir.ml"
+# 12176 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11578,17 +12196,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11584 "parser_cocci_menhir.ml"
+# 12202 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let t : 'tv_ctype = Obj.magic t in
         let _startpos = _startpos_t_ in
         let _endpos = _endpos_pv_ in
         let _v : 'tv_decl_var = 
-# 970 "parser_cocci_menhir.mly"
+# 1018 "parser_cocci_menhir.mly"
       ( [Ast0.wrap(Ast0.TyDecl(t,P.clt2mcode ";" pv))] )
-# 11592 "parser_cocci_menhir.ml"
+# 12210 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11607,16 +12225,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 44 "parser_cocci_menhir.mly"
+# 68 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 11613 "parser_cocci_menhir.ml"
+# 12231 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_decl_var = 
-# 971 "parser_cocci_menhir.mly"
+# 1019 "parser_cocci_menhir.mly"
               ( [P.meta_decl _1] )
-# 11620 "parser_cocci_menhir.ml"
+# 12238 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11645,9 +12263,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11651 "parser_cocci_menhir.ml"
+# 12269 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let d : 'tv_comma_list_d_ident_ = Obj.magic d in
         let t : 'tv_ctype = Obj.magic t in
@@ -11657,16 +12275,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 11661 "parser_cocci_menhir.ml"
+# 12279 "parser_cocci_menhir.ml"
           
         in
         
-# 973 "parser_cocci_menhir.mly"
+# 1021 "parser_cocci_menhir.mly"
       ( List.map
          (function (id,fn) ->
            Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv)))
          d )
-# 11670 "parser_cocci_menhir.ml"
+# 12288 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11700,9 +12318,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11706 "parser_cocci_menhir.ml"
+# 12324 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let d : 'tv_comma_list_d_ident_ = Obj.magic d in
         let t : 'tv_ctype = Obj.magic t in
@@ -11714,16 +12332,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 11718 "parser_cocci_menhir.ml"
+# 12336 "parser_cocci_menhir.ml"
           
         in
         
-# 973 "parser_cocci_menhir.mly"
+# 1021 "parser_cocci_menhir.mly"
       ( List.map
          (function (id,fn) ->
            Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv)))
          d )
-# 11727 "parser_cocci_menhir.ml"
+# 12345 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11745,9 +12363,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_f_ in
         let _endpos = _endpos_f_ in
         let _v : 'tv_decl_var = 
-# 977 "parser_cocci_menhir.mly"
+# 1025 "parser_cocci_menhir.mly"
                ( [f] )
-# 11751 "parser_cocci_menhir.ml"
+# 12369 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11786,15 +12404,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11792 "parser_cocci_menhir.ml"
+# 12410 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11798 "parser_cocci_menhir.ml"
+# 12416 "parser_cocci_menhir.ml"
         ) = Obj.magic q in
         let d : 'tv_d_ident = Obj.magic d in
         let t : 'tv_ctype = Obj.magic t in
@@ -11804,14 +12422,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 11808 "parser_cocci_menhir.ml"
+# 12426 "parser_cocci_menhir.ml"
           
         in
         
-# 979 "parser_cocci_menhir.mly"
+# 1027 "parser_cocci_menhir.mly"
       (let (id,fn) = d in
       [Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv))])
-# 11815 "parser_cocci_menhir.ml"
+# 12433 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11855,15 +12473,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11861 "parser_cocci_menhir.ml"
+# 12479 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11867 "parser_cocci_menhir.ml"
+# 12485 "parser_cocci_menhir.ml"
         ) = Obj.magic q in
         let d : 'tv_d_ident = Obj.magic d in
         let t : 'tv_ctype = Obj.magic t in
@@ -11875,14 +12493,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 11879 "parser_cocci_menhir.ml"
+# 12497 "parser_cocci_menhir.ml"
           
         in
         
-# 979 "parser_cocci_menhir.mly"
+# 1027 "parser_cocci_menhir.mly"
       (let (id,fn) = d in
       [Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv))])
-# 11886 "parser_cocci_menhir.ml"
+# 12504 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11911,9 +12529,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11917 "parser_cocci_menhir.ml"
+# 12535 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let d : 'tv_comma_list_d_ident_ = Obj.magic d in
         let i : 'tv_pure_ident = Obj.magic i in
@@ -11923,25 +12541,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 11927 "parser_cocci_menhir.ml"
+# 12545 "parser_cocci_menhir.ml"
           
         in
         let s =
           
 # 39 "standard.mly"
     ( None )
-# 11934 "parser_cocci_menhir.ml"
+# 12552 "parser_cocci_menhir.ml"
           
         in
         
-# 984 "parser_cocci_menhir.mly"
+# 1032 "parser_cocci_menhir.mly"
       ( List.map
          (function (id,fn) ->
            let idtype =
              P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in
            Ast0.wrap(Ast0.UnInit(s,fn idtype,id,P.clt2mcode ";" pv)))
          d )
-# 11945 "parser_cocci_menhir.ml"
+# 12563 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11975,9 +12593,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11981 "parser_cocci_menhir.ml"
+# 12599 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let d : 'tv_comma_list_d_ident_ = Obj.magic d in
         let i : 'tv_pure_ident = Obj.magic i in
@@ -11989,25 +12607,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 11993 "parser_cocci_menhir.ml"
+# 12611 "parser_cocci_menhir.ml"
           
         in
         let s =
           
 # 39 "standard.mly"
     ( None )
-# 12000 "parser_cocci_menhir.ml"
+# 12618 "parser_cocci_menhir.ml"
           
         in
         
-# 984 "parser_cocci_menhir.mly"
+# 1032 "parser_cocci_menhir.mly"
       ( List.map
          (function (id,fn) ->
            let idtype =
              P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in
            Ast0.wrap(Ast0.UnInit(s,fn idtype,id,P.clt2mcode ";" pv)))
          d )
-# 12011 "parser_cocci_menhir.ml"
+# 12629 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12041,9 +12659,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12047 "parser_cocci_menhir.ml"
+# 12665 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let d : 'tv_comma_list_d_ident_ = Obj.magic d in
         let i : 'tv_pure_ident = Obj.magic i in
@@ -12054,7 +12672,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 12058 "parser_cocci_menhir.ml"
+# 12676 "parser_cocci_menhir.ml"
           
         in
         let s =
@@ -12062,18 +12680,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 12066 "parser_cocci_menhir.ml"
+# 12684 "parser_cocci_menhir.ml"
           
         in
         
-# 984 "parser_cocci_menhir.mly"
+# 1032 "parser_cocci_menhir.mly"
       ( List.map
          (function (id,fn) ->
            let idtype =
              P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in
            Ast0.wrap(Ast0.UnInit(s,fn idtype,id,P.clt2mcode ";" pv)))
          d )
-# 12077 "parser_cocci_menhir.ml"
+# 12695 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12112,9 +12730,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12118 "parser_cocci_menhir.ml"
+# 12736 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let d : 'tv_comma_list_d_ident_ = Obj.magic d in
         let i : 'tv_pure_ident = Obj.magic i in
@@ -12127,7 +12745,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 12131 "parser_cocci_menhir.ml"
+# 12749 "parser_cocci_menhir.ml"
           
         in
         let s =
@@ -12135,18 +12753,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 12139 "parser_cocci_menhir.ml"
+# 12757 "parser_cocci_menhir.ml"
           
         in
         
-# 984 "parser_cocci_menhir.mly"
+# 1032 "parser_cocci_menhir.mly"
       ( List.map
          (function (id,fn) ->
            let idtype =
              P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in
            Ast0.wrap(Ast0.UnInit(s,fn idtype,id,P.clt2mcode ";" pv)))
          d )
-# 12150 "parser_cocci_menhir.ml"
+# 12768 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12185,15 +12803,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12191 "parser_cocci_menhir.ml"
+# 12809 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12197 "parser_cocci_menhir.ml"
+# 12815 "parser_cocci_menhir.ml"
         ) = Obj.magic q in
         let d : 'tv_d_ident = Obj.magic d in
         let i : 'tv_pure_ident = Obj.magic i in
@@ -12203,24 +12821,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 12207 "parser_cocci_menhir.ml"
+# 12825 "parser_cocci_menhir.ml"
           
         in
         let s =
           
 # 39 "standard.mly"
     ( None )
-# 12214 "parser_cocci_menhir.ml"
+# 12832 "parser_cocci_menhir.ml"
           
         in
         
-# 992 "parser_cocci_menhir.mly"
+# 1040 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
       !Data.add_type_name (P.id2name i);
       let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in
       [Ast0.wrap(Ast0.Init(s,fn idtype,id,P.clt2mcode "=" q,e,
                           P.clt2mcode ";" pv))] )
-# 12224 "parser_cocci_menhir.ml"
+# 12842 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12264,15 +12882,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12270 "parser_cocci_menhir.ml"
+# 12888 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12276 "parser_cocci_menhir.ml"
+# 12894 "parser_cocci_menhir.ml"
         ) = Obj.magic q in
         let d : 'tv_d_ident = Obj.magic d in
         let i : 'tv_pure_ident = Obj.magic i in
@@ -12284,24 +12902,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 12288 "parser_cocci_menhir.ml"
+# 12906 "parser_cocci_menhir.ml"
           
         in
         let s =
           
 # 39 "standard.mly"
     ( None )
-# 12295 "parser_cocci_menhir.ml"
+# 12913 "parser_cocci_menhir.ml"
           
         in
         
-# 992 "parser_cocci_menhir.mly"
+# 1040 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
       !Data.add_type_name (P.id2name i);
       let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in
       [Ast0.wrap(Ast0.Init(s,fn idtype,id,P.clt2mcode "=" q,e,
                           P.clt2mcode ";" pv))] )
-# 12305 "parser_cocci_menhir.ml"
+# 12923 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12345,15 +12963,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12351 "parser_cocci_menhir.ml"
+# 12969 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12357 "parser_cocci_menhir.ml"
+# 12975 "parser_cocci_menhir.ml"
         ) = Obj.magic q in
         let d : 'tv_d_ident = Obj.magic d in
         let i : 'tv_pure_ident = Obj.magic i in
@@ -12364,7 +12982,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 12368 "parser_cocci_menhir.ml"
+# 12986 "parser_cocci_menhir.ml"
           
         in
         let s =
@@ -12372,17 +12990,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 12376 "parser_cocci_menhir.ml"
+# 12994 "parser_cocci_menhir.ml"
           
         in
         
-# 992 "parser_cocci_menhir.mly"
+# 1040 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
       !Data.add_type_name (P.id2name i);
       let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in
       [Ast0.wrap(Ast0.Init(s,fn idtype,id,P.clt2mcode "=" q,e,
                           P.clt2mcode ";" pv))] )
-# 12386 "parser_cocci_menhir.ml"
+# 13004 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12431,15 +13049,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12437 "parser_cocci_menhir.ml"
+# 13055 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12443 "parser_cocci_menhir.ml"
+# 13061 "parser_cocci_menhir.ml"
         ) = Obj.magic q in
         let d : 'tv_d_ident = Obj.magic d in
         let i : 'tv_pure_ident = Obj.magic i in
@@ -12452,7 +13070,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 12456 "parser_cocci_menhir.ml"
+# 13074 "parser_cocci_menhir.ml"
           
         in
         let s =
@@ -12460,17 +13078,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 12464 "parser_cocci_menhir.ml"
+# 13082 "parser_cocci_menhir.ml"
           
         in
         
-# 992 "parser_cocci_menhir.mly"
+# 1040 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
       !Data.add_type_name (P.id2name i);
       let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in
       [Ast0.wrap(Ast0.Init(s,fn idtype,id,P.clt2mcode "=" q,e,
                           P.clt2mcode ";" pv))] )
-# 12474 "parser_cocci_menhir.ml"
+# 13092 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12529,36 +13147,36 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12535 "parser_cocci_menhir.ml"
+# 13153 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let rp2 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12540 "parser_cocci_menhir.ml"
+# 13158 "parser_cocci_menhir.ml"
         ) = Obj.magic rp2 in
         let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in
         let lp2 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12546 "parser_cocci_menhir.ml"
+# 13164 "parser_cocci_menhir.ml"
         ) = Obj.magic lp2 in
         let rp1 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12551 "parser_cocci_menhir.ml"
+# 13169 "parser_cocci_menhir.ml"
         ) = Obj.magic rp1 in
         let d : 'tv_d_ident = Obj.magic d in
         let st : (
-# 78 "parser_cocci_menhir.mly"
+# 102 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12557 "parser_cocci_menhir.ml"
+# 13175 "parser_cocci_menhir.ml"
         ) = Obj.magic st in
         let lp1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12562 "parser_cocci_menhir.ml"
+# 13180 "parser_cocci_menhir.ml"
         ) = Obj.magic lp1 in
         let t : 'tv_ctype = Obj.magic t in
         let _startpos = _startpos_t_ in
@@ -12567,11 +13185,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 12571 "parser_cocci_menhir.ml"
+# 13189 "parser_cocci_menhir.ml"
           
         in
         
-# 1002 "parser_cocci_menhir.mly"
+# 1050 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
         let t =
          Ast0.wrap
@@ -12579,7 +13197,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               (t,P.clt2mcode "(" lp1,P.clt2mcode "*" st,P.clt2mcode ")" rp1,
                P.clt2mcode "(" lp2,p,P.clt2mcode ")" rp2)) in
         [Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv))] )
-# 12583 "parser_cocci_menhir.ml"
+# 13201 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12643,36 +13261,36 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12649 "parser_cocci_menhir.ml"
+# 13267 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let rp2 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12654 "parser_cocci_menhir.ml"
+# 13272 "parser_cocci_menhir.ml"
         ) = Obj.magic rp2 in
         let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in
         let lp2 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12660 "parser_cocci_menhir.ml"
+# 13278 "parser_cocci_menhir.ml"
         ) = Obj.magic lp2 in
         let rp1 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12665 "parser_cocci_menhir.ml"
+# 13283 "parser_cocci_menhir.ml"
         ) = Obj.magic rp1 in
         let d : 'tv_d_ident = Obj.magic d in
         let st : (
-# 78 "parser_cocci_menhir.mly"
+# 102 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12671 "parser_cocci_menhir.ml"
+# 13289 "parser_cocci_menhir.ml"
         ) = Obj.magic st in
         let lp1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12676 "parser_cocci_menhir.ml"
+# 13294 "parser_cocci_menhir.ml"
         ) = Obj.magic lp1 in
         let t : 'tv_ctype = Obj.magic t in
         let x0 : 'tv_storage = Obj.magic x0 in
@@ -12683,11 +13301,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 12687 "parser_cocci_menhir.ml"
+# 13305 "parser_cocci_menhir.ml"
           
         in
         
-# 1002 "parser_cocci_menhir.mly"
+# 1050 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
         let t =
          Ast0.wrap
@@ -12695,7 +13313,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               (t,P.clt2mcode "(" lp1,P.clt2mcode "*" st,P.clt2mcode ")" rp1,
                P.clt2mcode "(" lp2,p,P.clt2mcode ")" rp2)) in
         [Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv))] )
-# 12699 "parser_cocci_menhir.ml"
+# 13317 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12734,29 +13352,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _5 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12740 "parser_cocci_menhir.ml"
+# 13358 "parser_cocci_menhir.ml"
         ) = Obj.magic _5 in
         let _4 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12745 "parser_cocci_menhir.ml"
+# 13363 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr_list_option = Obj.magic _3 in
         let _2 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12751 "parser_cocci_menhir.ml"
+# 13369 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_decl_ident = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__5_ in
         let _v : 'tv_decl_var = 
-# 1010 "parser_cocci_menhir.mly"
+# 1058 "parser_cocci_menhir.mly"
       ( [Ast0.wrap(Ast0.MacroDecl(_1,P.clt2mcode "(" _2,_3,
                                  P.clt2mcode ")" _4,P.clt2mcode ";" _5))] )
-# 12760 "parser_cocci_menhir.ml"
+# 13378 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12825,42 +13443,42 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12831 "parser_cocci_menhir.ml"
+# 13449 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12837 "parser_cocci_menhir.ml"
+# 13455 "parser_cocci_menhir.ml"
         ) = Obj.magic q in
         let rp2 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12842 "parser_cocci_menhir.ml"
+# 13460 "parser_cocci_menhir.ml"
         ) = Obj.magic rp2 in
         let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in
         let lp2 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12848 "parser_cocci_menhir.ml"
+# 13466 "parser_cocci_menhir.ml"
         ) = Obj.magic lp2 in
         let rp1 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12853 "parser_cocci_menhir.ml"
+# 13471 "parser_cocci_menhir.ml"
         ) = Obj.magic rp1 in
         let d : 'tv_d_ident = Obj.magic d in
         let st : (
-# 78 "parser_cocci_menhir.mly"
+# 102 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12859 "parser_cocci_menhir.ml"
+# 13477 "parser_cocci_menhir.ml"
         ) = Obj.magic st in
         let lp1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12864 "parser_cocci_menhir.ml"
+# 13482 "parser_cocci_menhir.ml"
         ) = Obj.magic lp1 in
         let t : 'tv_ctype = Obj.magic t in
         let _startpos = _startpos_t_ in
@@ -12869,11 +13487,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 12873 "parser_cocci_menhir.ml"
+# 13491 "parser_cocci_menhir.ml"
           
         in
         
-# 1016 "parser_cocci_menhir.mly"
+# 1064 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
         let t =
          Ast0.wrap
@@ -12881,7 +13499,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               (t,P.clt2mcode "(" lp1,P.clt2mcode "*" st,P.clt2mcode ")" rp1,
                P.clt2mcode "(" lp2,p,P.clt2mcode ")" rp2)) in
       [Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv))])
-# 12885 "parser_cocci_menhir.ml"
+# 13503 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12955,42 +13573,42 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12961 "parser_cocci_menhir.ml"
+# 13579 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12967 "parser_cocci_menhir.ml"
+# 13585 "parser_cocci_menhir.ml"
         ) = Obj.magic q in
         let rp2 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12972 "parser_cocci_menhir.ml"
+# 13590 "parser_cocci_menhir.ml"
         ) = Obj.magic rp2 in
         let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in
         let lp2 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12978 "parser_cocci_menhir.ml"
+# 13596 "parser_cocci_menhir.ml"
         ) = Obj.magic lp2 in
         let rp1 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12983 "parser_cocci_menhir.ml"
+# 13601 "parser_cocci_menhir.ml"
         ) = Obj.magic rp1 in
         let d : 'tv_d_ident = Obj.magic d in
         let st : (
-# 78 "parser_cocci_menhir.mly"
+# 102 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12989 "parser_cocci_menhir.ml"
+# 13607 "parser_cocci_menhir.ml"
         ) = Obj.magic st in
         let lp1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12994 "parser_cocci_menhir.ml"
+# 13612 "parser_cocci_menhir.ml"
         ) = Obj.magic lp1 in
         let t : 'tv_ctype = Obj.magic t in
         let x0 : 'tv_storage = Obj.magic x0 in
@@ -13001,11 +13619,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 13005 "parser_cocci_menhir.ml"
+# 13623 "parser_cocci_menhir.ml"
           
         in
         
-# 1016 "parser_cocci_menhir.mly"
+# 1064 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
         let t =
          Ast0.wrap
@@ -13013,7 +13631,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               (t,P.clt2mcode "(" lp1,P.clt2mcode "*" st,P.clt2mcode ")" rp1,
                P.clt2mcode "(" lp2,p,P.clt2mcode ")" rp2)) in
       [Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv))])
-# 13017 "parser_cocci_menhir.ml"
+# 13635 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13047,55 +13665,27 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13053 "parser_cocci_menhir.ml"
+# 13671 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let id : 'tv_comma_list_typedef_ident_ = Obj.magic id in
         let t : 'tv_typedef_ctype = Obj.magic t in
         let s : (
-# 31 "parser_cocci_menhir.mly"
+# 55 "parser_cocci_menhir.mly"
       (Data.clt)
-# 13060 "parser_cocci_menhir.ml"
+# 13678 "parser_cocci_menhir.ml"
         ) = Obj.magic s in
         let _startpos = _startpos_s_ in
         let _endpos = _endpos_pv_ in
         let _v : 'tv_decl_var = 
-# 1024 "parser_cocci_menhir.mly"
+# 1072 "parser_cocci_menhir.mly"
       ( let s = P.clt2mcode "typedef" s in
         List.map
          (function id ->
            Ast0.wrap(Ast0.Typedef(s,t,id,P.clt2mcode ";" pv)))
          id )
-# 13071 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = _1;
-          MenhirLib.EngineTypes.startp = _startpos__1_;
-          MenhirLib.EngineTypes.endp = _endpos__1_;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          } = _menhir_stack in
-        let _1 : 'tv_define_param_list_start = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__1_ in
-        let _v : 'tv_define_param_list = 
-# 740 "parser_cocci_menhir.mly"
-     (let circle x =
-       match Ast0.unwrap x with Ast0.DPcircles(_) -> true | _ -> false in
-     if List.exists circle _1
-     then Ast0.wrap(Ast0.CIRCLES(_1))
-     else Ast0.wrap(Ast0.DOTS(_1)) )
-# 13099 "parser_cocci_menhir.ml"
+# 13689 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13113,130 +13703,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos__1_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let _1 : 'tv_define_param_list = Obj.magic _1 in
+        let _1 : 'tv_empty_list_start_dparam_TEllipsis_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_define_param_list_option = 
-# 764 "parser_cocci_menhir.mly"
-                                            ( _1 )
-# 13123 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
-        let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
-        let _endpos = _startpos in
-        let _v : 'tv_define_param_list_option = 
-# 765 "parser_cocci_menhir.mly"
-                           ( Ast0.wrap(Ast0.DOTS([])) )
-# 13140 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = _1;
-          MenhirLib.EngineTypes.startp = _startpos__1_;
-          MenhirLib.EngineTypes.endp = _endpos__1_;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          } = _menhir_stack in
-        let _1 : 'tv_ident = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__1_ in
-        let _v : 'tv_define_param_list_start = 
-# 747 "parser_cocci_menhir.mly"
-          ( [Ast0.wrap(Ast0.DParam _1)] )
-# 13164 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = _3;
-          MenhirLib.EngineTypes.startp = _startpos__3_;
-          MenhirLib.EngineTypes.endp = _endpos__3_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = _2;
-            MenhirLib.EngineTypes.startp = _startpos__2_;
-            MenhirLib.EngineTypes.endp = _endpos__2_;
-            MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.state = _menhir_s;
-              MenhirLib.EngineTypes.semv = _1;
-              MenhirLib.EngineTypes.startp = _startpos__1_;
-              MenhirLib.EngineTypes.endp = _endpos__1_;
-              MenhirLib.EngineTypes.next = _menhir_stack;
-              };
-            };
-          } = _menhir_stack in
-        let _3 : 'tv_define_param_list_start = Obj.magic _3 in
-        let _2 : (
-# 86 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 13196 "parser_cocci_menhir.ml"
-        ) = Obj.magic _2 in
-        let _1 : 'tv_ident = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__3_ in
-        let _v : 'tv_define_param_list_start = 
-# 749 "parser_cocci_menhir.mly"
-      ( Ast0.wrap(Ast0.DParam _1)::
-       Ast0.wrap(Ast0.DPComma(P.clt2mcode "," _2))::_3 )
-# 13205 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = r;
-          MenhirLib.EngineTypes.startp = _startpos_r_;
-          MenhirLib.EngineTypes.endp = _endpos_r_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = d;
-            MenhirLib.EngineTypes.startp = _startpos_d_;
-            MenhirLib.EngineTypes.endp = _endpos_d_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
-          } = _menhir_stack in
-        let r : 'tv_list_dp_comma_args_TEllipsis__ = Obj.magic r in
-        let d : (
-# 52 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 13232 "parser_cocci_menhir.ml"
-        ) = Obj.magic d in
-        let _startpos = _startpos_d_ in
-        let _endpos = _endpos_r_ in
-        let _v : 'tv_define_param_list_start = 
-# 752 "parser_cocci_menhir.mly"
-      ( (P.mkdpdots "..." d)::
-       (List.concat (List.map (function x -> x (P.mkdpdots "...")) r)) )
-# 13240 "parser_cocci_menhir.ml"
+# 809 "parser_cocci_menhir.mly"
+      ( Ast0.wrap
+         (Ast0.DOTS
+            (_1
+               (fun _ d -> Ast0.wrap(Ast0.DPdots(P.clt2mcode "," d)))
+               (fun c -> Ast0.DPComma c))) )
+# 13717 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13255,14 +13732,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 60 "parser_cocci_menhir.mly"
+# 84 "parser_cocci_menhir.mly"
        (Data.clt * token)
-# 13261 "parser_cocci_menhir.ml"
+# 13738 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_defineop = 
-# 699 "parser_cocci_menhir.mly"
+# 765 "parser_cocci_menhir.mly"
     ( let (clt,ident) = _1 in
       function body ->
        Ast0.wrap
@@ -13279,7 +13756,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
                       "unexpected name for a #define")),
              Ast0.wrap Ast0.NoParams,
              body)) )
-# 13283 "parser_cocci_menhir.ml"
+# 13760 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13308,20 +13785,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13314 "parser_cocci_menhir.ml"
+# 13791 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_define_param_list_option = Obj.magic _2 in
         let _1 : (
-# 61 "parser_cocci_menhir.mly"
+# 85 "parser_cocci_menhir.mly"
        (Data.clt * token * int * int)
-# 13320 "parser_cocci_menhir.ml"
+# 13797 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_defineop = 
-# 716 "parser_cocci_menhir.mly"
+# 782 "parser_cocci_menhir.mly"
     ( let (clt,ident,parenoff,parencol) = _1 in
       (* clt is the start of the #define itself *)
       let (arity,line,lline,offset,col,strbef,straft,pos) = clt in
@@ -13342,7 +13819,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
                    (Semantic_cocci.Semantic
                       "unexpected name for a #define")),
              Ast0.wrap (Ast0.DParams (lp,_2,P.clt2mcode ")" _3)),body)) )
-# 13346 "parser_cocci_menhir.ml"
+# 13823 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13364,9 +13841,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_dep = 
-# 206 "parser_cocci_menhir.mly"
+# 230 "parser_cocci_menhir.mly"
                    ( _1 )
-# 13370 "parser_cocci_menhir.ml"
+# 13847 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13398,9 +13875,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_dep = 
-# 207 "parser_cocci_menhir.mly"
+# 231 "parser_cocci_menhir.mly"
                    ( Ast.AndDep(_1, _3) )
-# 13404 "parser_cocci_menhir.ml"
+# 13881 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13432,9 +13909,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_dep = 
-# 208 "parser_cocci_menhir.mly"
+# 232 "parser_cocci_menhir.mly"
                    ( Ast.OrDep (_1, _3) )
-# 13438 "parser_cocci_menhir.ml"
+# 13915 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13449,9 +13926,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
         let _endpos = _startpos in
         let _v : 'tv_depends = 
-# 202 "parser_cocci_menhir.mly"
+# 226 "parser_cocci_menhir.mly"
                            ( Ast.NoDep )
-# 13455 "parser_cocci_menhir.ml"
+# 13932 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13481,9 +13958,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_parents_ in
         let _v : 'tv_depends = 
-# 203 "parser_cocci_menhir.mly"
+# 227 "parser_cocci_menhir.mly"
                            ( parents )
-# 13487 "parser_cocci_menhir.ml"
+# 13964 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13508,16 +13985,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_ident = Obj.magic _2 in
         let _1 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13514 "parser_cocci_menhir.ml"
+# 13991 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_designator = 
-# 1126 "parser_cocci_menhir.mly"
+# 1176 "parser_cocci_menhir.mly"
      ( Ast0.DesignatorField (P.clt2mcode "." _1,_2) )
-# 13521 "parser_cocci_menhir.ml"
+# 13998 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13546,22 +14023,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 81 "parser_cocci_menhir.mly"
+# 105 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13552 "parser_cocci_menhir.ml"
+# 14029 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_eexpr = Obj.magic _2 in
         let _1 : (
-# 81 "parser_cocci_menhir.mly"
+# 105 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13558 "parser_cocci_menhir.ml"
+# 14035 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_designator = 
-# 1128 "parser_cocci_menhir.mly"
+# 1178 "parser_cocci_menhir.mly"
      ( Ast0.DesignatorIndex (P.clt2mcode "[" _1,_2,P.clt2mcode "]" _3) )
-# 13565 "parser_cocci_menhir.ml"
+# 14042 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13600,29 +14077,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _5 : (
-# 81 "parser_cocci_menhir.mly"
+# 105 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13606 "parser_cocci_menhir.ml"
+# 14083 "parser_cocci_menhir.ml"
         ) = Obj.magic _5 in
         let _4 : 'tv_eexpr = Obj.magic _4 in
         let _3 : (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13612 "parser_cocci_menhir.ml"
+# 14089 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_eexpr = Obj.magic _2 in
         let _1 : (
-# 81 "parser_cocci_menhir.mly"
+# 105 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13618 "parser_cocci_menhir.ml"
+# 14095 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__5_ in
         let _v : 'tv_designator = 
-# 1130 "parser_cocci_menhir.mly"
+# 1180 "parser_cocci_menhir.mly"
      ( Ast0.DesignatorRange (P.clt2mcode "[" _1,_2,P.clt2mcode "..." _3,
                             _4,P.clt2mcode "]" _5) )
-# 13626 "parser_cocci_menhir.ml"
+# 14103 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13644,9 +14121,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_dexpr = 
-# 1233 "parser_cocci_menhir.mly"
+# 1257 "parser_cocci_menhir.mly"
                                           ( _1 )
-# 13650 "parser_cocci_menhir.ml"
+# 14127 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13672,9 +14149,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_disable = 
-# 221 "parser_cocci_menhir.mly"
+# 245 "parser_cocci_menhir.mly"
                                                       ( List.map P.id2name _2 )
-# 13678 "parser_cocci_menhir.ml"
+# 14155 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13693,16 +14170,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13699 "parser_cocci_menhir.ml"
+# 14176 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_dot_expressions = 
-# 1242 "parser_cocci_menhir.mly"
+# 1266 "parser_cocci_menhir.mly"
             ( Ast0.wrap(Ast0.Edots(P.clt2mcode "..." _1,None)) )
-# 13706 "parser_cocci_menhir.ml"
+# 14183 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13724,9 +14201,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_dot_expressions = 
-# 1243 "parser_cocci_menhir.mly"
+# 1267 "parser_cocci_menhir.mly"
                    ( _1 )
-# 13730 "parser_cocci_menhir.ml"
+# 14207 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13738,70 +14215,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.semv = d;
-          MenhirLib.EngineTypes.startp = _startpos_d_;
-          MenhirLib.EngineTypes.endp = _endpos_d_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = c;
-            MenhirLib.EngineTypes.startp = _startpos_c_;
-            MenhirLib.EngineTypes.endp = _endpos_c_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
-          } = _menhir_stack in
-        let d : (
-# 52 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 13756 "parser_cocci_menhir.ml"
-        ) = Obj.magic d in
-        let c : (
-# 86 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 13761 "parser_cocci_menhir.ml"
-        ) = Obj.magic c in
-        let _startpos = _startpos_c_ in
-        let _endpos = _endpos_d_ in
-        let _v : 'tv_dp_comma_args_TEllipsis_ = 
-# 757 "parser_cocci_menhir.mly"
-    ( function dot_builder ->
-      [Ast0.wrap(Ast0.DPComma(P.clt2mcode "," c)); dot_builder d] )
-# 13769 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
           MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = _2;
-          MenhirLib.EngineTypes.startp = _startpos__2_;
-          MenhirLib.EngineTypes.endp = _endpos__2_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = _1;
-            MenhirLib.EngineTypes.startp = _startpos__1_;
-            MenhirLib.EngineTypes.endp = _endpos__1_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
           } = _menhir_stack in
-        let _2 : 'tv_ident = Obj.magic _2 in
-        let _1 : (
-# 86 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 13796 "parser_cocci_menhir.ml"
-        ) = Obj.magic _1 in
+        let _1 : 'tv_ident = Obj.magic _1 in
         let _startpos = _startpos__1_ in
-        let _endpos = _endpos__2_ in
-        let _v : 'tv_dp_comma_args_TEllipsis_ = 
-# 760 "parser_cocci_menhir.mly"
-    ( function dot_builder ->
-      [Ast0.wrap(Ast0.DPComma(P.clt2mcode "," _1));
-       Ast0.wrap(Ast0.DParam _2)] )
-# 13805 "parser_cocci_menhir.ml"
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_dparam = 
+# 805 "parser_cocci_menhir.mly"
+              ( Ast0.wrap(Ast0.DParam _1) )
+# 14231 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13820,16 +14246,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let d : (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13826 "parser_cocci_menhir.ml"
+# 14252 "parser_cocci_menhir.ml"
         ) = Obj.magic d in
         let _startpos = _startpos_d_ in
         let _endpos = _endpos_d_ in
         let _v : 'tv_edots_when_TEllipsis_eexpr_ = 
-# 1975 "parser_cocci_menhir.mly"
+# 2008 "parser_cocci_menhir.mly"
                                                   ( (d,None) )
-# 13833 "parser_cocci_menhir.ml"
+# 14259 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13866,16 +14292,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let w : 'tv_eexpr = Obj.magic w in
         let d : (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13872 "parser_cocci_menhir.ml"
+# 14298 "parser_cocci_menhir.ml"
         ) = Obj.magic d in
         let _startpos = _startpos_d_ in
         let _endpos = _endpos__5_ in
         let _v : 'tv_edots_when_TEllipsis_eexpr_ = 
-# 1976 "parser_cocci_menhir.mly"
+# 2009 "parser_cocci_menhir.mly"
                                                   ( (d,Some w) )
-# 13879 "parser_cocci_menhir.ml"
+# 14305 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13894,16 +14320,90 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let d : (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 14326 "parser_cocci_menhir.ml"
+        ) = Obj.magic d in
+        let _startpos = _startpos_d_ in
+        let _endpos = _endpos_d_ in
+        let _v : 'tv_edots_when_TEllipsis_enum_decl_one_ = 
+# 2008 "parser_cocci_menhir.mly"
+                                                  ( (d,None) )
+# 14333 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.startp = _startpos__5_;
+          MenhirLib.EngineTypes.endp = _endpos__5_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = w;
+            MenhirLib.EngineTypes.startp = _startpos_w_;
+            MenhirLib.EngineTypes.endp = _endpos_w_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.startp = _startpos__3_;
+              MenhirLib.EngineTypes.endp = _endpos__3_;
+              MenhirLib.EngineTypes.next = {
+                MenhirLib.EngineTypes.startp = _startpos__2_;
+                MenhirLib.EngineTypes.endp = _endpos__2_;
+                MenhirLib.EngineTypes.next = {
+                  MenhirLib.EngineTypes.state = _menhir_s;
+                  MenhirLib.EngineTypes.semv = d;
+                  MenhirLib.EngineTypes.startp = _startpos_d_;
+                  MenhirLib.EngineTypes.endp = _endpos_d_;
+                  MenhirLib.EngineTypes.next = _menhir_stack;
+                  };
+                };
+              };
+            };
+          } = _menhir_stack in
+        let w : 'tv_enum_decl_one = Obj.magic w in
+        let d : (
+# 76 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 14372 "parser_cocci_menhir.ml"
+        ) = Obj.magic d in
+        let _startpos = _startpos_d_ in
+        let _endpos = _endpos__5_ in
+        let _v : 'tv_edots_when_TEllipsis_enum_decl_one_ = 
+# 2009 "parser_cocci_menhir.mly"
+                                                  ( (d,Some w) )
+# 14379 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = d;
+          MenhirLib.EngineTypes.startp = _startpos_d_;
+          MenhirLib.EngineTypes.endp = _endpos_d_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let d : (
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13900 "parser_cocci_menhir.ml"
+# 14400 "parser_cocci_menhir.ml"
         ) = Obj.magic d in
         let _startpos = _startpos_d_ in
         let _endpos = _endpos_d_ in
         let _v : 'tv_edots_when_TEllipsis_initialize_ = 
-# 1975 "parser_cocci_menhir.mly"
+# 2008 "parser_cocci_menhir.mly"
                                                   ( (d,None) )
-# 13907 "parser_cocci_menhir.ml"
+# 14407 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13940,16 +14440,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let w : 'tv_initialize = Obj.magic w in
         let d : (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13946 "parser_cocci_menhir.ml"
+# 14446 "parser_cocci_menhir.ml"
         ) = Obj.magic d in
         let _startpos = _startpos_d_ in
         let _endpos = _endpos__5_ in
         let _v : 'tv_edots_when_TEllipsis_initialize_ = 
-# 1976 "parser_cocci_menhir.mly"
+# 2009 "parser_cocci_menhir.mly"
                                                   ( (d,Some w) )
-# 13953 "parser_cocci_menhir.ml"
+# 14453 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13968,16 +14468,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let d : (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13974 "parser_cocci_menhir.ml"
+# 14474 "parser_cocci_menhir.ml"
         ) = Obj.magic d in
         let _startpos = _startpos_d_ in
         let _endpos = _endpos_d_ in
-        let _v : 'tv_edots_when_TEllipsis_struct_decl_ = 
-# 1975 "parser_cocci_menhir.mly"
+        let _v : 'tv_edots_when_TEllipsis_struct_decl_one_ = 
+# 2008 "parser_cocci_menhir.mly"
                                                   ( (d,None) )
-# 13981 "parser_cocci_menhir.ml"
+# 14481 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14012,18 +14512,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               };
             };
           } = _menhir_stack in
-        let w : 'tv_struct_decl = Obj.magic w in
+        let w : 'tv_struct_decl_one = Obj.magic w in
         let d : (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
-# 14020 "parser_cocci_menhir.ml"
+# 14520 "parser_cocci_menhir.ml"
         ) = Obj.magic d in
         let _startpos = _startpos_d_ in
         let _endpos = _endpos__5_ in
-        let _v : 'tv_edots_when_TEllipsis_struct_decl_ = 
-# 1976 "parser_cocci_menhir.mly"
+        let _v : 'tv_edots_when_TEllipsis_struct_decl_one_ = 
+# 2009 "parser_cocci_menhir.mly"
                                                   ( (d,Some w) )
-# 14027 "parser_cocci_menhir.ml"
+# 14527 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14045,9 +14545,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_eexpr = 
-# 1231 "parser_cocci_menhir.mly"
+# 1255 "parser_cocci_menhir.mly"
                                          ( _1 )
-# 14051 "parser_cocci_menhir.ml"
+# 14551 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14065,22 +14565,34 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos__1_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let _1 : 'tv_eexpr_list_start = Obj.magic _1 in
+        let _1 : 'tv_empty_list_start_aexpr_TEllipsis_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
-        let _v : 'tv_eexpr_list = 
-# 1918 "parser_cocci_menhir.mly"
-     (let circle x =
-       match Ast0.unwrap x with Ast0.Ecircles(_) -> true | _ -> false in
-     let star x =
-       match Ast0.unwrap x with Ast0.Estars(_) -> true | _ -> false in
-     if List.exists circle _1
-     then Ast0.wrap(Ast0.CIRCLES(_1))
-     else
-       if List.exists star _1
-       then Ast0.wrap(Ast0.STARS(_1))
-       else Ast0.wrap(Ast0.DOTS(_1)) )
-# 14084 "parser_cocci_menhir.ml"
+        let _v : 'tv_eexpr_list_option = 
+# 1988 "parser_cocci_menhir.mly"
+      ( Ast0.wrap
+         (Ast0.DOTS
+            (_1
+               (fun _ d -> Ast0.wrap(Ast0.Edots(P.clt2mcode "..." d,None)))
+               (fun c -> Ast0.EComma c))) )
+# 14579 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
+        let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
+        let _endpos = _startpos in
+        let _v : 'tv_empty_list_start_aexpr_TEllipsis_ = 
+# 1750 "parser_cocci_menhir.mly"
+              ( fun build_dots build_comma -> [] )
+# 14596 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14098,13 +14610,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos__1_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let _1 : 'tv_eexpr_list = Obj.magic _1 in
+        let _1 : 'tv_nonempty_list_start_aexpr_TEllipsis_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
-        let _v : 'tv_eexpr_list_option = 
-# 1958 "parser_cocci_menhir.mly"
-                              ( _1 )
-# 14108 "parser_cocci_menhir.ml"
+        let _v : 'tv_empty_list_start_aexpr_TEllipsis_ = 
+# 1751 "parser_cocci_menhir.mly"
+                                   ( _1 )
+# 14620 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14118,10 +14630,10 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
         let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
         let _endpos = _startpos in
-        let _v : 'tv_eexpr_list_option = 
-# 1959 "parser_cocci_menhir.mly"
-                           ( Ast0.wrap(Ast0.DOTS([])) )
-# 14125 "parser_cocci_menhir.ml"
+        let _v : 'tv_empty_list_start_dparam_TEllipsis_ = 
+# 1750 "parser_cocci_menhir.mly"
+              ( fun build_dots build_comma -> [] )
+# 14637 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14139,13 +14651,184 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos__1_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let _1 : 'tv_aexpr = Obj.magic _1 in
+        let _1 : 'tv_nonempty_list_start_dparam_TEllipsis_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
-        let _v : 'tv_eexpr_list_start = 
-# 1946 "parser_cocci_menhir.mly"
-          ( [_1] )
-# 14149 "parser_cocci_menhir.ml"
+        let _v : 'tv_empty_list_start_dparam_TEllipsis_ = 
+# 1751 "parser_cocci_menhir.mly"
+                                   ( _1 )
+# 14661 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
+        let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
+        let _endpos = _startpos in
+        let _v : 'tv_empty_list_start_initialize2_edots_when_TEllipsis_initialize__ = 
+# 1750 "parser_cocci_menhir.mly"
+              ( fun build_dots build_comma -> [] )
+# 14678 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : 'tv_nonempty_list_start_initialize2_edots_when_TEllipsis_initialize__ = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_empty_list_start_initialize2_edots_when_TEllipsis_initialize__ = 
+# 1751 "parser_cocci_menhir.mly"
+                                   ( _1 )
+# 14702 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
+        let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
+        let _endpos = _startpos in
+        let _v : 'tv_empty_list_start_one_dec_decl__TEllipsis_ = 
+# 1750 "parser_cocci_menhir.mly"
+              ( fun build_dots build_comma -> [] )
+# 14719 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : 'tv_nonempty_list_start_one_dec_decl__TEllipsis_ = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_empty_list_start_one_dec_decl__TEllipsis_ = 
+# 1751 "parser_cocci_menhir.mly"
+                                   ( _1 )
+# 14743 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
+        let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
+        let _endpos = _startpos in
+        let _v : 'tv_empty_list_start_one_dec_name_opt_decl__TEllipsis_ = 
+# 1750 "parser_cocci_menhir.mly"
+              ( fun build_dots build_comma -> [] )
+# 14760 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : 'tv_nonempty_list_start_one_dec_name_opt_decl__TEllipsis_ = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_empty_list_start_one_dec_name_opt_decl__TEllipsis_ = 
+# 1751 "parser_cocci_menhir.mly"
+                                   ( _1 )
+# 14784 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : 'tv_nonempty_list_start_enum_decl_one_edots_when_TEllipsis_enum_decl_one__ = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_enum_decl_list = 
+# 683 "parser_cocci_menhir.mly"
+     ( Ast0.wrap(Ast0.DOTS(_1 P.mkedots (fun c -> Ast0.EComma c))) )
+# 14808 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : 'tv_ident = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_enum_decl_one = 
+# 655 "parser_cocci_menhir.mly"
+               ( Ast0.wrap(Ast0.Ident(_1)) )
+# 14832 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14173,19 +14856,166 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               };
             };
           } = _menhir_stack in
-        let _3 : 'tv_eexpr_list_start = Obj.magic _3 in
+        let _3 : 'tv_enum_val = Obj.magic _3 in
         let _2 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 14181 "parser_cocci_menhir.ml"
+# 14864 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
-        let _1 : 'tv_aexpr = Obj.magic _1 in
+        let _1 : 'tv_ident = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
-        let _v : 'tv_eexpr_list_start = 
-# 1948 "parser_cocci_menhir.mly"
-      ( _1::Ast0.wrap(Ast0.EComma(P.clt2mcode "," _2))::_3 )
-# 14189 "parser_cocci_menhir.ml"
+        let _v : 'tv_enum_decl_one = 
+# 657 "parser_cocci_menhir.mly"
+ ( let id = Ast0.wrap(Ast0.Ident(_1)) in
+       Ast0.wrap
+         (Ast0.Assignment
+            (id,P.clt2mcode Ast.SimpleAssign _2,Ast0.set_arg_exp _3,
+             false)) )
+# 14876 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : 'tv_ident = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_enum_val = 
+# 664 "parser_cocci_menhir.mly"
+            ( Ast0.wrap(Ast0.Ident(_1)) )
+# 14900 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : (
+# 90 "parser_cocci_menhir.mly"
+       (string * Data.clt)
+# 14921 "parser_cocci_menhir.ml"
+        ) = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_enum_val = 
+# 666 "parser_cocci_menhir.mly"
+     ( let (x,clt) = _1 in
+     Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Int x) clt)) )
+# 14929 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : (
+# 70 "parser_cocci_menhir.mly"
+       (Parse_aux.typed_expinfo)
+# 14950 "parser_cocci_menhir.ml"
+        ) = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_enum_val = 
+# 669 "parser_cocci_menhir.mly"
+     ( let (nm,constraints,pure,ty,clt) = _1 in
+     Ast0.wrap
+       (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.CONST,pure)) )
+# 14959 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : (
+# 70 "parser_cocci_menhir.mly"
+       (Parse_aux.typed_expinfo)
+# 14980 "parser_cocci_menhir.ml"
+        ) = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_enum_val = 
+# 673 "parser_cocci_menhir.mly"
+     ( let (nm,constraints,pure,ty,clt) = _1 in
+     Ast0.wrap
+       (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ANY,pure)) )
+# 14989 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : (
+# 70 "parser_cocci_menhir.mly"
+       (Parse_aux.typed_expinfo)
+# 15010 "parser_cocci_menhir.ml"
+        ) = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_enum_val = 
+# 677 "parser_cocci_menhir.mly"
+     ( let (nm,constraints,pure,ty,clt) = _1 in
+     Ast0.wrap
+       (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ID,pure)) )
+# 15019 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14205,9 +15035,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_exists = 
-# 224 "parser_cocci_menhir.mly"
+# 248 "parser_cocci_menhir.mly"
           ( Ast.Exists )
-# 14211 "parser_cocci_menhir.ml"
+# 15041 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14227,9 +15057,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_exists = 
-# 225 "parser_cocci_menhir.mly"
+# 249 "parser_cocci_menhir.mly"
           ( Ast.Forall )
-# 14233 "parser_cocci_menhir.ml"
+# 15063 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14244,9 +15074,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
         let _endpos = _startpos in
         let _v : 'tv_exists = 
-# 226 "parser_cocci_menhir.mly"
+# 250 "parser_cocci_menhir.mly"
           ( Ast.Undetermined )
-# 14250 "parser_cocci_menhir.ml"
+# 15080 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14268,9 +15098,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_expr = 
-# 1229 "parser_cocci_menhir.mly"
+# 1253 "parser_cocci_menhir.mly"
                                 ( _1 )
-# 14274 "parser_cocci_menhir.ml"
+# 15104 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14292,9 +15122,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_r_ in
         let _endpos = _endpos_r_ in
         let _v : 'tv_expr_dots_TEllipsis_ = 
-# 1413 "parser_cocci_menhir.mly"
+# 1437 "parser_cocci_menhir.mly"
                                                        ( r )
-# 14298 "parser_cocci_menhir.ml"
+# 15128 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14309,9 +15139,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
         let _endpos = _startpos in
         let _v : 'tv_extends = 
-# 197 "parser_cocci_menhir.mly"
+# 221 "parser_cocci_menhir.mly"
                                                   ( () )
-# 14315 "parser_cocci_menhir.ml"
+# 15145 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14334,16 +15164,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let parent : (
-# 25 "parser_cocci_menhir.mly"
+# 49 "parser_cocci_menhir.mly"
       (string)
-# 14340 "parser_cocci_menhir.ml"
+# 15170 "parser_cocci_menhir.ml"
         ) = Obj.magic parent in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_parent_ in
         let _v : 'tv_extends = 
-# 199 "parser_cocci_menhir.mly"
+# 223 "parser_cocci_menhir.mly"
     ( !Data.install_bindings (parent) )
-# 14347 "parser_cocci_menhir.ml"
+# 15177 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14367,23 +15197,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 62 "parser_cocci_menhir.mly"
+# 86 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 14373 "parser_cocci_menhir.ml"
+# 15203 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 62 "parser_cocci_menhir.mly"
+# 86 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 14378 "parser_cocci_menhir.ml"
+# 15208 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_filespec = 
-# 654 "parser_cocci_menhir.mly"
+# 720 "parser_cocci_menhir.mly"
     ( [Ast0.wrap
          (Ast0.FILEINFO(P.id2mcode _1,
                         P.id2mcode _2))] )
-# 14387 "parser_cocci_menhir.ml"
+# 15217 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14398,9 +15228,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
         let _endpos = _startpos in
         let _v : 'tv_fninfo = 
-# 793 "parser_cocci_menhir.mly"
+# 841 "parser_cocci_menhir.mly"
                 ( [] )
-# 14404 "parser_cocci_menhir.ml"
+# 15234 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14428,13 +15258,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fninfo = 
-# 795 "parser_cocci_menhir.mly"
+# 843 "parser_cocci_menhir.mly"
       ( try
        let _ =
          List.find (function Ast0.FStorage(_) -> true | _ -> false) _2 in
        raise (Semantic_cocci.Semantic "duplicate storage")
       with Not_found -> (Ast0.FStorage(_1))::_2 )
-# 14438 "parser_cocci_menhir.ml"
+# 15268 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14462,9 +15292,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_t_ in
         let _endpos = _endpos_r_ in
         let _v : 'tv_fninfo = 
-# 800 "parser_cocci_menhir.mly"
+# 848 "parser_cocci_menhir.mly"
                         ( (Ast0.FType(t))::r )
-# 14468 "parser_cocci_menhir.ml"
+# 15298 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14489,19 +15319,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_fninfo = Obj.magic _2 in
         let _1 : (
-# 31 "parser_cocci_menhir.mly"
+# 55 "parser_cocci_menhir.mly"
       (Data.clt)
-# 14495 "parser_cocci_menhir.ml"
+# 15325 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fninfo = 
-# 802 "parser_cocci_menhir.mly"
+# 850 "parser_cocci_menhir.mly"
       ( try
        let _ = List.find (function Ast0.FInline(_) -> true | _ -> false) _2 in
        raise (Semantic_cocci.Semantic "duplicate inline")
       with Not_found -> (Ast0.FInline(P.clt2mcode "inline" _1))::_2 )
-# 14505 "parser_cocci_menhir.ml"
+# 15335 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14526,19 +15356,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_fninfo = Obj.magic _2 in
         let _1 : (
-# 33 "parser_cocci_menhir.mly"
+# 57 "parser_cocci_menhir.mly"
       (string * Data.clt)
-# 14532 "parser_cocci_menhir.ml"
+# 15362 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fninfo = 
-# 807 "parser_cocci_menhir.mly"
+# 855 "parser_cocci_menhir.mly"
       ( try
        let _ = List.find (function Ast0.FAttr(_) -> true | _ -> false) _2 in
        raise (Semantic_cocci.Semantic "multiple attributes")
       with Not_found -> (Ast0.FAttr(P.id2mcode _1))::_2 )
-# 14542 "parser_cocci_menhir.ml"
+# 15372 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14553,9 +15383,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
         let _endpos = _startpos in
         let _v : 'tv_fninfo_nt = 
-# 813 "parser_cocci_menhir.mly"
+# 861 "parser_cocci_menhir.mly"
                 ( [] )
-# 14559 "parser_cocci_menhir.ml"
+# 15389 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14583,13 +15413,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fninfo_nt = 
-# 815 "parser_cocci_menhir.mly"
+# 863 "parser_cocci_menhir.mly"
       ( try
        let _ =
          List.find (function Ast0.FStorage(_) -> true | _ -> false) _2 in
        raise (Semantic_cocci.Semantic "duplicate storage")
       with Not_found -> (Ast0.FStorage(_1))::_2 )
-# 14593 "parser_cocci_menhir.ml"
+# 15423 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14614,19 +15444,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_fninfo_nt = Obj.magic _2 in
         let _1 : (
-# 31 "parser_cocci_menhir.mly"
+# 55 "parser_cocci_menhir.mly"
       (Data.clt)
-# 14620 "parser_cocci_menhir.ml"
+# 15450 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fninfo_nt = 
-# 821 "parser_cocci_menhir.mly"
+# 869 "parser_cocci_menhir.mly"
       ( try
        let _ = List.find (function Ast0.FInline(_) -> true | _ -> false) _2 in
        raise (Semantic_cocci.Semantic "duplicate inline")
       with Not_found -> (Ast0.FInline(P.clt2mcode "inline" _1))::_2 )
-# 14630 "parser_cocci_menhir.ml"
+# 15460 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14651,19 +15481,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_fninfo_nt = Obj.magic _2 in
         let _1 : (
-# 33 "parser_cocci_menhir.mly"
+# 57 "parser_cocci_menhir.mly"
       (string * Data.clt)
-# 14657 "parser_cocci_menhir.ml"
+# 15487 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fninfo_nt = 
-# 826 "parser_cocci_menhir.mly"
+# 874 "parser_cocci_menhir.mly"
       ( try
        let _ = List.find (function Ast0.FAttr(_) -> true | _ -> false) _2 in
        raise (Semantic_cocci.Semantic "duplicate init")
       with Not_found -> (Ast0.FAttr(P.id2mcode _1))::_2 )
-# 14667 "parser_cocci_menhir.ml"
+# 15497 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14678,9 +15508,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
         let _endpos = _startpos in
         let _v : 'tv_fun_after_dots = 
-# 1866 "parser_cocci_menhir.mly"
+# 1921 "parser_cocci_menhir.mly"
                                ([])
-# 14684 "parser_cocci_menhir.ml"
+# 15514 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14706,9 +15536,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fun_after_dots = 
-# 1867 "parser_cocci_menhir.mly"
+# 1922 "parser_cocci_menhir.mly"
                                (_2)
-# 14712 "parser_cocci_menhir.ml"
+# 15542 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14736,9 +15566,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fun_after_dots = 
-# 1868 "parser_cocci_menhir.mly"
+# 1923 "parser_cocci_menhir.mly"
                                (Ast0.wrap(Ast0.Exp(_1))::_2)
-# 14742 "parser_cocci_menhir.ml"
+# 15572 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14766,9 +15596,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fun_after_dots = 
-# 1869 "parser_cocci_menhir.mly"
+# 1924 "parser_cocci_menhir.mly"
                                     (_1@_2)
-# 14772 "parser_cocci_menhir.ml"
+# 15602 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14783,9 +15613,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
         let _endpos = _startpos in
         let _v : 'tv_fun_after_dots_or = 
-# 1876 "parser_cocci_menhir.mly"
+# 1931 "parser_cocci_menhir.mly"
                                ([])
-# 14789 "parser_cocci_menhir.ml"
+# 15619 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14811,9 +15641,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fun_after_dots_or = 
-# 1877 "parser_cocci_menhir.mly"
+# 1932 "parser_cocci_menhir.mly"
                                (_2)
-# 14817 "parser_cocci_menhir.ml"
+# 15647 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14841,9 +15671,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fun_after_dots_or = 
-# 1878 "parser_cocci_menhir.mly"
+# 1933 "parser_cocci_menhir.mly"
                                (Ast0.wrap(Ast0.Exp(_1))::_2)
-# 14847 "parser_cocci_menhir.ml"
+# 15677 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14871,9 +15701,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fun_after_dots_or = 
-# 1879 "parser_cocci_menhir.mly"
+# 1934 "parser_cocci_menhir.mly"
                                     (_1@_2)
-# 14877 "parser_cocci_menhir.ml"
+# 15707 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14901,9 +15731,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fun_after_exp = 
-# 1872 "parser_cocci_menhir.mly"
+# 1927 "parser_cocci_menhir.mly"
                                (_1::_2)
-# 14907 "parser_cocci_menhir.ml"
+# 15737 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14918,9 +15748,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
         let _endpos = _startpos in
         let _v : 'tv_fun_after_exp_or = 
-# 1882 "parser_cocci_menhir.mly"
+# 1937 "parser_cocci_menhir.mly"
                                ([])
-# 14924 "parser_cocci_menhir.ml"
+# 15754 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14948,9 +15778,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fun_after_exp_or = 
-# 1883 "parser_cocci_menhir.mly"
+# 1938 "parser_cocci_menhir.mly"
                                (_1::_2)
-# 14954 "parser_cocci_menhir.ml"
+# 15784 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14965,9 +15795,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
         let _endpos = _startpos in
         let _v : 'tv_fun_after_stm = 
-# 1861 "parser_cocci_menhir.mly"
+# 1916 "parser_cocci_menhir.mly"
                                ([])
-# 14971 "parser_cocci_menhir.ml"
+# 15801 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14995,9 +15825,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fun_after_stm = 
-# 1862 "parser_cocci_menhir.mly"
+# 1917 "parser_cocci_menhir.mly"
                                (_1::_2)
-# 15001 "parser_cocci_menhir.ml"
+# 15831 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15025,9 +15855,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fun_after_stm = 
-# 1863 "parser_cocci_menhir.mly"
+# 1918 "parser_cocci_menhir.mly"
                                (_1@_2)
-# 15031 "parser_cocci_menhir.ml"
+# 15861 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15049,9 +15879,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_fun_start = 
-# 1858 "parser_cocci_menhir.mly"
+# 1913 "parser_cocci_menhir.mly"
                  ( Ast0.wrap(Ast0.DOTS(_1)) )
-# 15055 "parser_cocci_menhir.ml"
+# 15885 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15073,9 +15903,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_func_ident = 
-# 1655 "parser_cocci_menhir.mly"
+# 1679 "parser_cocci_menhir.mly"
          ( Ast0.wrap(Ast0.Id(P.id2mcode _1)) )
-# 15079 "parser_cocci_menhir.ml"
+# 15909 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15094,17 +15924,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 40 "parser_cocci_menhir.mly"
+# 64 "parser_cocci_menhir.mly"
        (Parse_aux.idinfo)
-# 15100 "parser_cocci_menhir.ml"
+# 15930 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_func_ident = 
-# 1657 "parser_cocci_menhir.mly"
+# 1681 "parser_cocci_menhir.mly"
          ( let (nm,constraints,pure,clt) = _1 in
         Ast0.wrap(Ast0.MetaId(P.clt2mcode nm clt,constraints,pure)) )
-# 15108 "parser_cocci_menhir.ml"
+# 15938 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15123,17 +15953,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 40 "parser_cocci_menhir.mly"
+# 64 "parser_cocci_menhir.mly"
        (Parse_aux.idinfo)
-# 15129 "parser_cocci_menhir.ml"
+# 15959 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_func_ident = 
-# 1660 "parser_cocci_menhir.mly"
+# 1684 "parser_cocci_menhir.mly"
          ( let (nm,constraints,pure,clt) = _1 in
         Ast0.wrap(Ast0.MetaFunc(P.clt2mcode nm clt,constraints,pure)) )
-# 15137 "parser_cocci_menhir.ml"
+# 15967 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15152,18 +15982,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 40 "parser_cocci_menhir.mly"
+# 64 "parser_cocci_menhir.mly"
        (Parse_aux.idinfo)
-# 15158 "parser_cocci_menhir.ml"
+# 15988 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_func_ident = 
-# 1663 "parser_cocci_menhir.mly"
+# 1687 "parser_cocci_menhir.mly"
   ( let (nm,constraints,pure,clt) = _1 in
         Ast0.wrap
           (Ast0.MetaLocalFunc(P.clt2mcode nm clt,constraints,pure)) )
-# 15167 "parser_cocci_menhir.ml"
+# 15997 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15221,33 +16051,33 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let rb : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15227 "parser_cocci_menhir.ml"
+# 16057 "parser_cocci_menhir.ml"
         ) = Obj.magic rb in
         let b : 'tv_fun_start = Obj.magic b in
         let lb : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15233 "parser_cocci_menhir.ml"
+# 16063 "parser_cocci_menhir.ml"
         ) = Obj.magic lb in
         let rp : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15238 "parser_cocci_menhir.ml"
+# 16068 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let d : 'tv_decl_list_decl_ = Obj.magic d in
         let lp : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15244 "parser_cocci_menhir.ml"
+# 16074 "parser_cocci_menhir.ml"
         ) = Obj.magic lp in
         let i : 'tv_func_ident = Obj.magic i in
         let f : 'tv_fninfo = Obj.magic f in
         let _startpos = _startpos_f_ in
         let _endpos = _endpos_rb_ in
         let _v : 'tv_fundecl = 
-# 784 "parser_cocci_menhir.mly"
+# 832 "parser_cocci_menhir.mly"
       ( P.verify_parameter_declarations (Ast0.undots d);
        Ast0.wrap(Ast0.FunDecl((Ast0.default_info(),Ast0.context_befaft()),
                               f, i,
@@ -15255,7 +16085,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
                               P.clt2mcode ")" rp,
                               P.clt2mcode "{" lb, b,
                               P.clt2mcode "}" rb)) )
-# 15259 "parser_cocci_menhir.ml"
+# 16089 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15299,20 +16129,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pt : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15305 "parser_cocci_menhir.ml"
+# 16135 "parser_cocci_menhir.ml"
         ) = Obj.magic pt in
         let rp : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15310 "parser_cocci_menhir.ml"
+# 16140 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let d : 'tv_decl_list_name_opt_decl_ = Obj.magic d in
         let lp : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15316 "parser_cocci_menhir.ml"
+# 16146 "parser_cocci_menhir.ml"
         ) = Obj.magic lp in
         let id : 'tv_func_ident = Obj.magic id in
         let t : 'tv_ctype = Obj.magic t in
@@ -15322,11 +16152,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 15326 "parser_cocci_menhir.ml"
+# 16156 "parser_cocci_menhir.ml"
           
         in
         
-# 772 "parser_cocci_menhir.mly"
+# 820 "parser_cocci_menhir.mly"
       ( Ast0.wrap
          (Ast0.UnInit
             (s,
@@ -15334,7 +16164,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
                (Ast0.FunctionType(Some t,
                                   P.clt2mcode "(" lp, d, P.clt2mcode ")" rp)),
              id, P.clt2mcode ";" pt)) )
-# 15338 "parser_cocci_menhir.ml"
+# 16168 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15383,20 +16213,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pt : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15389 "parser_cocci_menhir.ml"
+# 16219 "parser_cocci_menhir.ml"
         ) = Obj.magic pt in
         let rp : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15394 "parser_cocci_menhir.ml"
+# 16224 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let d : 'tv_decl_list_name_opt_decl_ = Obj.magic d in
         let lp : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15400 "parser_cocci_menhir.ml"
+# 16230 "parser_cocci_menhir.ml"
         ) = Obj.magic lp in
         let id : 'tv_func_ident = Obj.magic id in
         let t : 'tv_ctype = Obj.magic t in
@@ -15408,11 +16238,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 15412 "parser_cocci_menhir.ml"
+# 16242 "parser_cocci_menhir.ml"
           
         in
         
-# 772 "parser_cocci_menhir.mly"
+# 820 "parser_cocci_menhir.mly"
       ( Ast0.wrap
          (Ast0.UnInit
             (s,
@@ -15420,7 +16250,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
                (Ast0.FunctionType(Some t,
                                   P.clt2mcode "(" lp, d, P.clt2mcode ")" rp)),
              id, P.clt2mcode ";" pt)) )
-# 15424 "parser_cocci_menhir.ml"
+# 16254 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15442,9 +16272,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_ident = 
-# 1668 "parser_cocci_menhir.mly"
+# 1692 "parser_cocci_menhir.mly"
          ( Ast0.wrap(Ast0.Id(P.id2mcode _1)) )
-# 15448 "parser_cocci_menhir.ml"
+# 16278 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15463,17 +16293,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 40 "parser_cocci_menhir.mly"
+# 64 "parser_cocci_menhir.mly"
        (Parse_aux.idinfo)
-# 15469 "parser_cocci_menhir.ml"
+# 16299 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_ident = 
-# 1670 "parser_cocci_menhir.mly"
+# 1694 "parser_cocci_menhir.mly"
          ( let (nm,constraints,pure,clt) = _1 in
          Ast0.wrap(Ast0.MetaId(P.clt2mcode nm clt,constraints,pure)) )
-# 15477 "parser_cocci_menhir.ml"
+# 16307 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15495,9 +16325,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_i_ in
         let _endpos = _endpos_i_ in
         let _v : 'tv_ident_or_const = 
-# 1628 "parser_cocci_menhir.mly"
+# 1652 "parser_cocci_menhir.mly"
                     ( Ast0.wrap(Ast0.Ident(Ast0.wrap(Ast0.Id(P.id2mcode i)))) )
-# 15501 "parser_cocci_menhir.ml"
+# 16331 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15516,17 +16346,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 15522 "parser_cocci_menhir.ml"
+# 16352 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_ident_or_const = 
-# 1630 "parser_cocci_menhir.mly"
+# 1654 "parser_cocci_menhir.mly"
   ( let (x,clt) = _1 in
         Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Int x) clt)) )
-# 15530 "parser_cocci_menhir.ml"
+# 16360 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15545,16 +16375,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 59 "parser_cocci_menhir.mly"
+# 83 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 15551 "parser_cocci_menhir.ml"
+# 16381 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_incl = 
-# 237 "parser_cocci_menhir.mly"
+# 261 "parser_cocci_menhir.mly"
                       ( let (x,_) = _1 in Data.Include(x) )
-# 15558 "parser_cocci_menhir.ml"
+# 16388 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15577,16 +16407,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 15583 "parser_cocci_menhir.ml"
+# 16413 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_incl = 
-# 238 "parser_cocci_menhir.mly"
+# 262 "parser_cocci_menhir.mly"
                       ( Data.Iso(Common.Left(P.id2name _2)) )
-# 15590 "parser_cocci_menhir.ml"
+# 16420 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15609,16 +16439,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 58 "parser_cocci_menhir.mly"
+# 82 "parser_cocci_menhir.mly"
        (string)
-# 15615 "parser_cocci_menhir.ml"
+# 16445 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_incl = 
-# 239 "parser_cocci_menhir.mly"
+# 263 "parser_cocci_menhir.mly"
                       ( Data.Iso(Common.Right _2) )
-# 15622 "parser_cocci_menhir.ml"
+# 16452 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15644,14 +16474,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_incl = 
-# 241 "parser_cocci_menhir.mly"
+# 265 "parser_cocci_menhir.mly"
     ( let names = List.map P.id2name _2 in
       (* ensure that the names of virtual and real rules don't overlap *)
       List.iter
       (function name -> Hashtbl.add Data.all_metadecls name [])
       names;
       Data.Virt(names) )
-# 15655 "parser_cocci_menhir.ml"
+# 16485 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15677,13 +16507,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 127 "parser_cocci_menhir.mly"
+# 151 "parser_cocci_menhir.mly"
       (Data.incl_iso list)
-# 15683 "parser_cocci_menhir.ml"
+# 16513 "parser_cocci_menhir.ml"
         ) = 
-# 233 "parser_cocci_menhir.mly"
+# 257 "parser_cocci_menhir.mly"
                        ( _1 )
-# 15687 "parser_cocci_menhir.ml"
+# 16517 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15709,13 +16539,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 127 "parser_cocci_menhir.mly"
+# 151 "parser_cocci_menhir.mly"
       (Data.incl_iso list)
-# 15715 "parser_cocci_menhir.ml"
+# 16545 "parser_cocci_menhir.ml"
         ) = 
-# 234 "parser_cocci_menhir.mly"
+# 258 "parser_cocci_menhir.mly"
                        ( _1 )
-# 15719 "parser_cocci_menhir.ml"
+# 16549 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15734,14 +16564,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 59 "parser_cocci_menhir.mly"
+# 83 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 15740 "parser_cocci_menhir.ml"
+# 16570 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_includes = 
-# 660 "parser_cocci_menhir.mly"
+# 726 "parser_cocci_menhir.mly"
     ( Ast0.wrap
              (Ast0.Include(P.clt2mcode "#include"
                              (P.drop_pos (P.drop_aft (P.id2clt _1))),
@@ -15752,7 +16582,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
                            P.clt2mcode
                              (Ast.Local (Parse_aux.str2inc (P.id2name _1)))
                              (P.drop_bef clt))) )
-# 15756 "parser_cocci_menhir.ml"
+# 16586 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15771,14 +16601,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 59 "parser_cocci_menhir.mly"
+# 83 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 15777 "parser_cocci_menhir.ml"
+# 16607 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_includes = 
-# 671 "parser_cocci_menhir.mly"
+# 737 "parser_cocci_menhir.mly"
     ( Ast0.wrap
              (Ast0.Include(P.clt2mcode "#include"
                              (P.drop_pos (P.drop_aft (P.id2clt _1))),
@@ -15789,7 +16619,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
                            P.clt2mcode
                              (Ast.NonLocal (Parse_aux.str2inc (P.id2name _1)))
                              (P.drop_bef clt))) )
-# 15793 "parser_cocci_menhir.ml"
+# 16623 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15815,9 +16645,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_d_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_includes = 
-# 682 "parser_cocci_menhir.mly"
+# 748 "parser_cocci_menhir.mly"
     ( d (Ast0.wrap(Ast0.DOTS([]))) )
-# 15821 "parser_cocci_menhir.ml"
+# 16651 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15849,10 +16679,10 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_d_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_includes = 
-# 684 "parser_cocci_menhir.mly"
+# 750 "parser_cocci_menhir.mly"
     ( let ty = Ast0.wrap(Ast0.TopExp(Ast0.wrap(Ast0.TypeExp(t)))) in
       d (Ast0.wrap(Ast0.DOTS([ty]))) )
-# 15856 "parser_cocci_menhir.ml"
+# 16686 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15884,7 +16714,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_includes = 
-# 687 "parser_cocci_menhir.mly"
+# 753 "parser_cocci_menhir.mly"
     ( let body =
        match b with
          [e] ->
@@ -15894,7 +16724,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
            | _ -> b)
        | _ -> b in
       _1 (Ast0.wrap(Ast0.DOTS(body))) )
-# 15898 "parser_cocci_menhir.ml"
+# 16728 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15916,9 +16746,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_initialize = 
-# 1097 "parser_cocci_menhir.mly"
+# 1145 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.InitExpr(_1)) )
-# 15922 "parser_cocci_menhir.ml"
+# 16752 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15947,62 +16777,27 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15953 "parser_cocci_menhir.ml"
+# 16783 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_initialize_list = Obj.magic _2 in
         let _1 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15959 "parser_cocci_menhir.ml"
+# 16789 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_initialize = 
-# 1099 "parser_cocci_menhir.mly"
-      ( Ast0.wrap(Ast0.InitList(P.clt2mcode "{" _1,_2,P.clt2mcode "}" _3)) )
-# 15966 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = _2;
-          MenhirLib.EngineTypes.startp = _startpos__2_;
-          MenhirLib.EngineTypes.endp = _endpos__2_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = _1;
-            MenhirLib.EngineTypes.startp = _startpos__1_;
-            MenhirLib.EngineTypes.endp = _endpos__1_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
-          } = _menhir_stack in
-        let _2 : (
-# 80 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 15992 "parser_cocci_menhir.ml"
-        ) = Obj.magic _2 in
-        let _1 : (
-# 80 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 15997 "parser_cocci_menhir.ml"
-        ) = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__2_ in
-        let _v : 'tv_initialize = 
-# 1101 "parser_cocci_menhir.mly"
-      ( Ast0.wrap
-         (Ast0.InitList(P.clt2mcode "{" _1,Ast0.wrap(Ast0.DOTS []),
-                        P.clt2mcode "}" _2)) )
-# 16006 "parser_cocci_menhir.ml"
+# 1147 "parser_cocci_menhir.mly"
+    ( if P.struct_initializer _2
+    then
+      let il = P.drop_dot_commas _2 in
+      Ast0.wrap(Ast0.InitList(P.clt2mcode "{" _1,il,P.clt2mcode "}" _3,false))
+    else
+      Ast0.wrap(Ast0.InitList(P.clt2mcode "{" _1,_2,P.clt2mcode "}" _3,true)) )
+# 16801 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16021,17 +16816,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 44 "parser_cocci_menhir.mly"
+# 68 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 16027 "parser_cocci_menhir.ml"
+# 16822 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_initialize = 
-# 1105 "parser_cocci_menhir.mly"
+# 1154 "parser_cocci_menhir.mly"
       (let (nm,pure,clt) = _1 in
       Ast0.wrap(Ast0.MetaInit(P.clt2mcode nm clt,pure)) )
-# 16035 "parser_cocci_menhir.ml"
+# 16830 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16053,9 +16848,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_initialize2 = 
-# 1111 "parser_cocci_menhir.mly"
+# 1160 "parser_cocci_menhir.mly"
                             ( Ast0.wrap(Ast0.InitExpr(_1)) )
-# 16059 "parser_cocci_menhir.ml"
+# 16854 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16084,62 +16879,27 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 16090 "parser_cocci_menhir.ml"
+# 16885 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_initialize_list = Obj.magic _2 in
         let _1 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 16096 "parser_cocci_menhir.ml"
+# 16891 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_initialize2 = 
-# 1113 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.InitList(P.clt2mcode "{" _1,_2,P.clt2mcode "}" _3)) )
-# 16103 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = _2;
-          MenhirLib.EngineTypes.startp = _startpos__2_;
-          MenhirLib.EngineTypes.endp = _endpos__2_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = _1;
-            MenhirLib.EngineTypes.startp = _startpos__1_;
-            MenhirLib.EngineTypes.endp = _endpos__1_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
-          } = _menhir_stack in
-        let _2 : (
-# 80 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 16129 "parser_cocci_menhir.ml"
-        ) = Obj.magic _2 in
-        let _1 : (
-# 80 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 16134 "parser_cocci_menhir.ml"
-        ) = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__2_ in
-        let _v : 'tv_initialize2 = 
-# 1115 "parser_cocci_menhir.mly"
-    ( Ast0.wrap
-       (Ast0.InitList(P.clt2mcode "{" _1,Ast0.wrap(Ast0.DOTS []),
-                      P.clt2mcode "}" _2)) )
-# 16143 "parser_cocci_menhir.ml"
+# 1162 "parser_cocci_menhir.mly"
+    ( if P.struct_initializer _2
+    then
+      let il = P.drop_dot_commas _2 in
+      Ast0.wrap(Ast0.InitList(P.clt2mcode "{" _1,il,P.clt2mcode "}" _3,false))
+    else
+      Ast0.wrap(Ast0.InitList(P.clt2mcode "{" _1,_2,P.clt2mcode "}" _3,true)) )
+# 16903 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16169,17 +16929,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_initialize2 = Obj.magic _3 in
         let _2 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 16175 "parser_cocci_menhir.ml"
+# 16935 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_list_designator_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_initialize2 = 
-# 1120 "parser_cocci_menhir.mly"
+# 1170 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.InitGccExt(_1,P.clt2mcode "=" _2,_3)) )
-# 16183 "parser_cocci_menhir.ml"
+# 16943 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16209,17 +16969,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_initialize2 = Obj.magic _3 in
         let _2 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 16215 "parser_cocci_menhir.ml"
+# 16975 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_ident = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_initialize2 = 
-# 1122 "parser_cocci_menhir.mly"
+# 1172 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.InitGccName(_1,P.clt2mcode ":" _2,_3)) )
-# 16223 "parser_cocci_menhir.ml"
+# 16983 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16237,146 +16997,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos__1_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let _1 : 'tv_initialize_list_start = Obj.magic _1 in
+        let _1 : 'tv_empty_list_start_initialize2_edots_when_TEllipsis_initialize__ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_initialize_list = 
-# 1134 "parser_cocci_menhir.mly"
-                         ( Ast0.wrap(Ast0.DOTS(_1)) )
-# 16247 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = _2;
-          MenhirLib.EngineTypes.startp = _startpos__2_;
-          MenhirLib.EngineTypes.endp = _endpos__2_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = _1;
-            MenhirLib.EngineTypes.startp = _startpos__1_;
-            MenhirLib.EngineTypes.endp = _endpos__1_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
-          } = _menhir_stack in
-        let _2 : (
-# 86 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 16273 "parser_cocci_menhir.ml"
-        ) = Obj.magic _2 in
-        let _1 : 'tv_initialize2 = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__2_ in
-        let _v : 'tv_initialize_list_start = 
-# 1137 "parser_cocci_menhir.mly"
-                     ( [_1;Ast0.wrap(Ast0.IComma(P.clt2mcode "," _2))] )
-# 16281 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = _3;
-          MenhirLib.EngineTypes.startp = _startpos__3_;
-          MenhirLib.EngineTypes.endp = _endpos__3_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = _2;
-            MenhirLib.EngineTypes.startp = _startpos__2_;
-            MenhirLib.EngineTypes.endp = _endpos__2_;
-            MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.state = _menhir_s;
-              MenhirLib.EngineTypes.semv = _1;
-              MenhirLib.EngineTypes.startp = _startpos__1_;
-              MenhirLib.EngineTypes.endp = _endpos__1_;
-              MenhirLib.EngineTypes.next = _menhir_stack;
-              };
-            };
-          } = _menhir_stack in
-        let _3 : 'tv_initialize_list_start = Obj.magic _3 in
-        let _2 : (
-# 86 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 16313 "parser_cocci_menhir.ml"
-        ) = Obj.magic _2 in
-        let _1 : 'tv_initialize2 = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__3_ in
-        let _v : 'tv_initialize_list_start = 
-# 1139 "parser_cocci_menhir.mly"
-    ( _1::Ast0.wrap(Ast0.IComma(P.clt2mcode "," _2))::_3 )
-# 16321 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = _2;
-          MenhirLib.EngineTypes.startp = _startpos__2_;
-          MenhirLib.EngineTypes.endp = _endpos__2_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.startp = _startpos__1_;
-            MenhirLib.EngineTypes.endp = _endpos__1_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
-          } = _menhir_stack in
-        let _2 : 'tv_initialize_list_start = Obj.magic _2 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__2_ in
-        let _v : 'tv_initialize_list_start = 
-# 1141 "parser_cocci_menhir.mly"
-    ( _2 )
-# 16349 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = r;
-          MenhirLib.EngineTypes.startp = _startpos_r_;
-          MenhirLib.EngineTypes.endp = _endpos_r_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = d;
-            MenhirLib.EngineTypes.startp = _startpos_d_;
-            MenhirLib.EngineTypes.endp = _endpos_d_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
-          } = _menhir_stack in
-        let r : 'tv_comma_initializers_edots_when_TEllipsis_initialize__ = Obj.magic r in
-        let d : 'tv_edots_when_TEllipsis_initialize_ = Obj.magic d in
-        let _startpos = _startpos_d_ in
-        let _endpos = _endpos_r_ in
-        let _v : 'tv_initialize_list_start = 
-# 1144 "parser_cocci_menhir.mly"
-    ( (P.mkidots "..." d)::
-      (List.concat(List.map (function x -> x (P.mkidots "...")) r)) )
-# 16380 "parser_cocci_menhir.ml"
+# 1185 "parser_cocci_menhir.mly"
+     ( Ast0.wrap(Ast0.DOTS(_1 P.mkidots (fun c -> Ast0.IComma c))) )
+# 17007 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16396,9 +17023,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_invalid = 
-# 1239 "parser_cocci_menhir.mly"
+# 1263 "parser_cocci_menhir.mly"
            ( raise (Semantic_cocci.Semantic "not matchable") )
-# 16402 "parser_cocci_menhir.ml"
+# 17029 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16413,9 +17040,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
         let _endpos = _startpos in
         let _v : 'tv_is_expression = 
-# 229 "parser_cocci_menhir.mly"
+# 253 "parser_cocci_menhir.mly"
               ( false )
-# 16419 "parser_cocci_menhir.ml"
+# 17046 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16435,9 +17062,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_is_expression = 
-# 230 "parser_cocci_menhir.mly"
+# 254 "parser_cocci_menhir.mly"
               ( true )
-# 16441 "parser_cocci_menhir.ml"
+# 17068 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16463,9 +17090,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_t_ in
         let _v : 'tv_iso_ctype_ = 
-# 2031 "parser_cocci_menhir.mly"
+# 2064 "parser_cocci_menhir.mly"
                 ( Common.Left t )
-# 16469 "parser_cocci_menhir.ml"
+# 17096 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16491,9 +17118,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_t_ in
         let _v : 'tv_iso_ctype_ = 
-# 2032 "parser_cocci_menhir.mly"
+# 2065 "parser_cocci_menhir.mly"
                      ( Common.Right t )
-# 16497 "parser_cocci_menhir.ml"
+# 17124 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16519,9 +17146,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_t_ in
         let _v : 'tv_iso_decl_var_ = 
-# 2031 "parser_cocci_menhir.mly"
+# 2064 "parser_cocci_menhir.mly"
                 ( Common.Left t )
-# 16525 "parser_cocci_menhir.ml"
+# 17152 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16547,9 +17174,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_t_ in
         let _v : 'tv_iso_decl_var_ = 
-# 2032 "parser_cocci_menhir.mly"
+# 2065 "parser_cocci_menhir.mly"
                      ( Common.Right t )
-# 16553 "parser_cocci_menhir.ml"
+# 17180 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16575,9 +17202,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_t_ in
         let _v : 'tv_iso_eexpr_ = 
-# 2031 "parser_cocci_menhir.mly"
+# 2064 "parser_cocci_menhir.mly"
                 ( Common.Left t )
-# 16581 "parser_cocci_menhir.ml"
+# 17208 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16603,9 +17230,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_t_ in
         let _v : 'tv_iso_eexpr_ = 
-# 2032 "parser_cocci_menhir.mly"
+# 2065 "parser_cocci_menhir.mly"
                      ( Common.Right t )
-# 16609 "parser_cocci_menhir.ml"
+# 17236 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16631,9 +17258,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_t_ in
         let _v : 'tv_iso_nest_start_ = 
-# 2031 "parser_cocci_menhir.mly"
+# 2064 "parser_cocci_menhir.mly"
                 ( Common.Left t )
-# 16637 "parser_cocci_menhir.ml"
+# 17264 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16659,9 +17286,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_t_ in
         let _v : 'tv_iso_nest_start_ = 
-# 2032 "parser_cocci_menhir.mly"
+# 2065 "parser_cocci_menhir.mly"
                      ( Common.Right t )
-# 16665 "parser_cocci_menhir.ml"
+# 17292 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16687,9 +17314,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_t_ in
         let _v : 'tv_iso_single_statement_ = 
-# 2031 "parser_cocci_menhir.mly"
+# 2064 "parser_cocci_menhir.mly"
                 ( Common.Left t )
-# 16693 "parser_cocci_menhir.ml"
+# 17320 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16715,9 +17342,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_t_ in
         let _v : 'tv_iso_single_statement_ = 
-# 2032 "parser_cocci_menhir.mly"
+# 2065 "parser_cocci_menhir.mly"
                      ( Common.Right t )
-# 16721 "parser_cocci_menhir.ml"
+# 17348 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16753,13 +17380,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : (
-# 143 "parser_cocci_menhir.mly"
+# 167 "parser_cocci_menhir.mly"
       (Ast0_cocci.anything list list)
-# 16759 "parser_cocci_menhir.ml"
+# 17386 "parser_cocci_menhir.ml"
         ) = 
-# 1999 "parser_cocci_menhir.mly"
+# 2032 "parser_cocci_menhir.mly"
     ( let fn x = Ast0.ExprTag x in P.iso_adjust fn fn e1 el )
-# 16763 "parser_cocci_menhir.ml"
+# 17390 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16795,13 +17422,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : (
-# 143 "parser_cocci_menhir.mly"
+# 167 "parser_cocci_menhir.mly"
       (Ast0_cocci.anything list list)
-# 16801 "parser_cocci_menhir.ml"
+# 17428 "parser_cocci_menhir.ml"
         ) = 
-# 2001 "parser_cocci_menhir.mly"
+# 2034 "parser_cocci_menhir.mly"
     ( let fn x = Ast0.ArgExprTag x in P.iso_adjust fn fn e1 el )
-# 16805 "parser_cocci_menhir.ml"
+# 17432 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16837,13 +17464,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : (
-# 143 "parser_cocci_menhir.mly"
+# 167 "parser_cocci_menhir.mly"
       (Ast0_cocci.anything list list)
-# 16843 "parser_cocci_menhir.ml"
+# 17470 "parser_cocci_menhir.ml"
         ) = 
-# 2003 "parser_cocci_menhir.mly"
+# 2036 "parser_cocci_menhir.mly"
     ( let fn x = Ast0.TestExprTag x in P.iso_adjust fn fn e1 el )
-# 16847 "parser_cocci_menhir.ml"
+# 17474 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16879,15 +17506,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : (
-# 143 "parser_cocci_menhir.mly"
+# 167 "parser_cocci_menhir.mly"
       (Ast0_cocci.anything list list)
-# 16885 "parser_cocci_menhir.ml"
+# 17512 "parser_cocci_menhir.ml"
         ) = 
-# 2005 "parser_cocci_menhir.mly"
+# 2038 "parser_cocci_menhir.mly"
     ( let ffn x = Ast0.ExprTag x in
       let fn x =  Ast0.TestExprTag x in
       P.iso_adjust ffn fn e1 el )
-# 16891 "parser_cocci_menhir.ml"
+# 17518 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16923,13 +17550,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : (
-# 143 "parser_cocci_menhir.mly"
+# 167 "parser_cocci_menhir.mly"
       (Ast0_cocci.anything list list)
-# 16929 "parser_cocci_menhir.ml"
+# 17556 "parser_cocci_menhir.ml"
         ) = 
-# 2009 "parser_cocci_menhir.mly"
+# 2042 "parser_cocci_menhir.mly"
     ( let fn x = Ast0.StmtTag x in P.iso_adjust fn fn s1 sl )
-# 16933 "parser_cocci_menhir.ml"
+# 17560 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16965,13 +17592,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : (
-# 143 "parser_cocci_menhir.mly"
+# 167 "parser_cocci_menhir.mly"
       (Ast0_cocci.anything list list)
-# 16971 "parser_cocci_menhir.ml"
+# 17598 "parser_cocci_menhir.ml"
         ) = 
-# 2011 "parser_cocci_menhir.mly"
+# 2044 "parser_cocci_menhir.mly"
     ( let fn x = Ast0.TypeCTag x in P.iso_adjust fn fn t1 tl )
-# 16975 "parser_cocci_menhir.ml"
+# 17602 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17007,13 +17634,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : (
-# 143 "parser_cocci_menhir.mly"
+# 167 "parser_cocci_menhir.mly"
       (Ast0_cocci.anything list list)
-# 17013 "parser_cocci_menhir.ml"
+# 17640 "parser_cocci_menhir.ml"
         ) = 
-# 2013 "parser_cocci_menhir.mly"
+# 2046 "parser_cocci_menhir.mly"
     ( let fn x = Ast0.DotsStmtTag x in P.iso_adjust fn fn e1 el )
-# 17017 "parser_cocci_menhir.ml"
+# 17644 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17049,11 +17676,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : (
-# 143 "parser_cocci_menhir.mly"
+# 167 "parser_cocci_menhir.mly"
       (Ast0_cocci.anything list list)
-# 17055 "parser_cocci_menhir.ml"
+# 17682 "parser_cocci_menhir.ml"
         ) = 
-# 2015 "parser_cocci_menhir.mly"
+# 2048 "parser_cocci_menhir.mly"
     ( let check_one = function
        [x] -> x
       | _ ->
@@ -17068,7 +17695,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
          | Common.Right x -> Common.Right(check_one x))
        dl in
     let fn x = Ast0.DeclTag x in P.iso_adjust fn fn d1 dl )
-# 17072 "parser_cocci_menhir.ml"
+# 17699 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17090,13 +17717,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_m_ in
         let _endpos = _endpos_m_ in
         let _v : (
-# 146 "parser_cocci_menhir.mly"
+# 170 "parser_cocci_menhir.mly"
       ((Ast_cocci.metavar,Ast_cocci.metavar) Common.either list)
-# 17096 "parser_cocci_menhir.ml"
+# 17723 "parser_cocci_menhir.ml"
         ) = 
-# 163 "parser_cocci_menhir.mly"
+# 187 "parser_cocci_menhir.mly"
                          ( m "" )
-# 17100 "parser_cocci_menhir.ml"
+# 17727 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17122,13 +17749,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_nm_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 130 "parser_cocci_menhir.mly"
+# 154 "parser_cocci_menhir.mly"
       (Ast_cocci.rulename)
-# 17128 "parser_cocci_menhir.ml"
+# 17755 "parser_cocci_menhir.ml"
         ) = 
-# 178 "parser_cocci_menhir.mly"
+# 202 "parser_cocci_menhir.mly"
                       ( P.make_iso_rule_name_result (P.id2name nm) )
-# 17132 "parser_cocci_menhir.ml"
+# 17759 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17147,16 +17774,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 37 "parser_cocci_menhir.mly"
+# 61 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 17153 "parser_cocci_menhir.ml"
+# 17780 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_iter_ident = 
-# 1682 "parser_cocci_menhir.mly"
+# 1706 "parser_cocci_menhir.mly"
          ( Ast0.wrap(Ast0.Id(P.id2mcode _1)) )
-# 17160 "parser_cocci_menhir.ml"
+# 17787 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17175,17 +17802,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 41 "parser_cocci_menhir.mly"
+# 65 "parser_cocci_menhir.mly"
        (Parse_aux.idinfo)
-# 17181 "parser_cocci_menhir.ml"
+# 17808 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_iter_ident = 
-# 1684 "parser_cocci_menhir.mly"
+# 1708 "parser_cocci_menhir.mly"
          ( let (nm,constraints,pure,clt) = _1 in
          Ast0.wrap(Ast0.MetaId(P.clt2mcode nm clt,constraints,pure)) )
-# 17189 "parser_cocci_menhir.ml"
+# 17816 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17202,7 +17829,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_TMul_ = 
 # 114 "standard.mly"
     ( [] )
-# 17206 "parser_cocci_menhir.ml"
+# 17833 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17227,16 +17854,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let xs : 'tv_list_TMul_ = Obj.magic xs in
         let x : (
-# 78 "parser_cocci_menhir.mly"
+# 102 "parser_cocci_menhir.mly"
        (Data.clt)
-# 17233 "parser_cocci_menhir.ml"
+# 17860 "parser_cocci_menhir.ml"
         ) = Obj.magic x in
         let _startpos = _startpos_x_ in
         let _endpos = _endpos_xs_ in
         let _v : 'tv_list_TMul_ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17240 "parser_cocci_menhir.ml"
+# 17867 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17253,7 +17880,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_array_dec_ = 
 # 114 "standard.mly"
     ( [] )
-# 17257 "parser_cocci_menhir.ml"
+# 17884 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17283,7 +17910,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_array_dec_ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17287 "parser_cocci_menhir.ml"
+# 17914 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17300,7 +17927,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_case_line_ = 
 # 114 "standard.mly"
     ( [] )
-# 17304 "parser_cocci_menhir.ml"
+# 17931 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17330,101 +17957,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_case_line_ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17334 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
-        let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
-        let _endpos = _startpos in
-        let _v : 'tv_list_comma_decls_TEllipsis_decl__ = 
-# 114 "standard.mly"
-    ( [] )
-# 17351 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = xs;
-          MenhirLib.EngineTypes.startp = _startpos_xs_;
-          MenhirLib.EngineTypes.endp = _endpos_xs_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = x;
-            MenhirLib.EngineTypes.startp = _startpos_x_;
-            MenhirLib.EngineTypes.endp = _endpos_x_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
-          } = _menhir_stack in
-        let xs : 'tv_list_comma_decls_TEllipsis_decl__ = Obj.magic xs in
-        let x : 'tv_comma_decls_TEllipsis_decl_ = Obj.magic x in
-        let _startpos = _startpos_x_ in
-        let _endpos = _endpos_xs_ in
-        let _v : 'tv_list_comma_decls_TEllipsis_decl__ = 
-# 116 "standard.mly"
-    ( x :: xs )
-# 17381 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
-        let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
-        let _endpos = _startpos in
-        let _v : 'tv_list_comma_decls_TEllipsis_name_opt_decl__ = 
-# 114 "standard.mly"
-    ( [] )
-# 17398 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = xs;
-          MenhirLib.EngineTypes.startp = _startpos_xs_;
-          MenhirLib.EngineTypes.endp = _endpos_xs_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = x;
-            MenhirLib.EngineTypes.startp = _startpos_x_;
-            MenhirLib.EngineTypes.endp = _endpos_x_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
-          } = _menhir_stack in
-        let xs : 'tv_list_comma_decls_TEllipsis_name_opt_decl__ = Obj.magic xs in
-        let x : 'tv_comma_decls_TEllipsis_name_opt_decl_ = Obj.magic x in
-        let _startpos = _startpos_x_ in
-        let _endpos = _endpos_xs_ in
-        let _v : 'tv_list_comma_decls_TEllipsis_name_opt_decl__ = 
-# 116 "standard.mly"
-    ( x :: xs )
-# 17428 "parser_cocci_menhir.ml"
+# 17961 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17441,7 +17974,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_decl_var_ = 
 # 114 "standard.mly"
     ( [] )
-# 17445 "parser_cocci_menhir.ml"
+# 17978 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17471,7 +18004,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_decl_var_ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17475 "parser_cocci_menhir.ml"
+# 18008 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17488,7 +18021,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_designator_ = 
 # 114 "standard.mly"
     ( [] )
-# 17492 "parser_cocci_menhir.ml"
+# 18025 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17518,54 +18051,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_designator_ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17522 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
-        let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
-        let _endpos = _startpos in
-        let _v : 'tv_list_dp_comma_args_TEllipsis__ = 
-# 114 "standard.mly"
-    ( [] )
-# 17539 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = xs;
-          MenhirLib.EngineTypes.startp = _startpos_xs_;
-          MenhirLib.EngineTypes.endp = _endpos_xs_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = x;
-            MenhirLib.EngineTypes.startp = _startpos_x_;
-            MenhirLib.EngineTypes.endp = _endpos_x_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
-          } = _menhir_stack in
-        let xs : 'tv_list_dp_comma_args_TEllipsis__ = Obj.magic xs in
-        let x : 'tv_dp_comma_args_TEllipsis_ = Obj.magic x in
-        let _startpos = _startpos_x_ in
-        let _endpos = _endpos_xs_ in
-        let _v : 'tv_list_dp_comma_args_TEllipsis__ = 
-# 116 "standard.mly"
-    ( x :: xs )
-# 17569 "parser_cocci_menhir.ml"
+# 18055 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17582,7 +18068,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_incl_ = 
 # 114 "standard.mly"
     ( [] )
-# 17586 "parser_cocci_menhir.ml"
+# 18072 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17612,7 +18098,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_incl_ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17616 "parser_cocci_menhir.ml"
+# 18102 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17629,7 +18115,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_iso_ctype__ = 
 # 114 "standard.mly"
     ( [] )
-# 17633 "parser_cocci_menhir.ml"
+# 18119 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17659,7 +18145,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_iso_ctype__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17663 "parser_cocci_menhir.ml"
+# 18149 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17676,7 +18162,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_iso_decl_var__ = 
 # 114 "standard.mly"
     ( [] )
-# 17680 "parser_cocci_menhir.ml"
+# 18166 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17706,7 +18192,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_iso_decl_var__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17710 "parser_cocci_menhir.ml"
+# 18196 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17723,7 +18209,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_iso_eexpr__ = 
 # 114 "standard.mly"
     ( [] )
-# 17727 "parser_cocci_menhir.ml"
+# 18213 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17753,7 +18239,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_iso_eexpr__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17757 "parser_cocci_menhir.ml"
+# 18243 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17770,7 +18256,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_iso_nest_start__ = 
 # 114 "standard.mly"
     ( [] )
-# 17774 "parser_cocci_menhir.ml"
+# 18260 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17800,7 +18286,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_iso_nest_start__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17804 "parser_cocci_menhir.ml"
+# 18290 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17817,7 +18303,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_iso_single_statement__ = 
 # 114 "standard.mly"
     ( [] )
-# 17821 "parser_cocci_menhir.ml"
+# 18307 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17847,7 +18333,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_iso_single_statement__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17851 "parser_cocci_menhir.ml"
+# 18337 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17864,7 +18350,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_mzl_ctype__ = 
 # 114 "standard.mly"
     ( [] )
-# 17868 "parser_cocci_menhir.ml"
+# 18354 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17894,7 +18380,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_mzl_ctype__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17898 "parser_cocci_menhir.ml"
+# 18384 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17911,7 +18397,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_mzl_eexpr__ = 
 # 114 "standard.mly"
     ( [] )
-# 17915 "parser_cocci_menhir.ml"
+# 18401 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17941,7 +18427,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_mzl_eexpr__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17945 "parser_cocci_menhir.ml"
+# 18431 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17958,7 +18444,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_mzl_fun_after_dots_or__ = 
 # 114 "standard.mly"
     ( [] )
-# 17962 "parser_cocci_menhir.ml"
+# 18448 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17988,7 +18474,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_mzl_fun_after_dots_or__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17992 "parser_cocci_menhir.ml"
+# 18478 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18005,7 +18491,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_mzl_fun_start__ = 
 # 114 "standard.mly"
     ( [] )
-# 18009 "parser_cocci_menhir.ml"
+# 18495 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18035,7 +18521,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_mzl_fun_start__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 18039 "parser_cocci_menhir.ml"
+# 18525 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18052,7 +18538,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_mzl_rule_elem_statement__ = 
 # 114 "standard.mly"
     ( [] )
-# 18056 "parser_cocci_menhir.ml"
+# 18542 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18082,7 +18568,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_mzl_rule_elem_statement__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 18086 "parser_cocci_menhir.ml"
+# 18572 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18099,7 +18585,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_mzl_statement__ = 
 # 114 "standard.mly"
     ( [] )
-# 18103 "parser_cocci_menhir.ml"
+# 18589 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18129,7 +18615,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_mzl_statement__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 18133 "parser_cocci_menhir.ml"
+# 18619 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18146,7 +18632,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_pair_edots_when_TEllipsis_eexpr__dexpr__ = 
 # 114 "standard.mly"
     ( [] )
-# 18150 "parser_cocci_menhir.ml"
+# 18636 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18185,13 +18671,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 70 "standard.mly"
     ( (x, y) )
-# 18189 "parser_cocci_menhir.ml"
+# 18675 "parser_cocci_menhir.ml"
           
         in
         
 # 116 "standard.mly"
     ( x :: xs )
-# 18195 "parser_cocci_menhir.ml"
+# 18681 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18208,7 +18694,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_whenppdecs_ = 
 # 114 "standard.mly"
     ( [] )
-# 18212 "parser_cocci_menhir.ml"
+# 18698 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18238,7 +18724,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_whenppdecs_ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 18242 "parser_cocci_menhir.ml"
+# 18728 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18260,9 +18746,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_list_len = 
-# 310 "parser_cocci_menhir.mly"
+# 334 "parser_cocci_menhir.mly"
                            ( Common.Left _1 )
-# 18266 "parser_cocci_menhir.ml"
+# 18752 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18281,16 +18767,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 18287 "parser_cocci_menhir.ml"
+# 18773 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_list_len = 
-# 311 "parser_cocci_menhir.mly"
+# 335 "parser_cocci_menhir.mly"
        ( let (x,clt) = _1 in Common.Right (int_of_string x) )
-# 18294 "parser_cocci_menhir.ml"
+# 18780 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18307,7 +18793,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_loption_choose_iso_ = 
 # 57 "standard.mly"
     ( [] )
-# 18311 "parser_cocci_menhir.ml"
+# 18797 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18331,7 +18817,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_loption_choose_iso_ = 
 # 59 "standard.mly"
     ( x )
-# 18335 "parser_cocci_menhir.ml"
+# 18821 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18348,7 +18834,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_loption_disable_ = 
 # 57 "standard.mly"
     ( [] )
-# 18352 "parser_cocci_menhir.ml"
+# 18838 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18372,7 +18858,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_loption_disable_ = 
 # 59 "standard.mly"
     ( x )
-# 18376 "parser_cocci_menhir.ml"
+# 18862 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18389,7 +18875,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_loption_filespec_ = 
 # 57 "standard.mly"
     ( [] )
-# 18393 "parser_cocci_menhir.ml"
+# 18879 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18413,7 +18899,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_loption_filespec_ = 
 # 59 "standard.mly"
     ( x )
-# 18417 "parser_cocci_menhir.ml"
+# 18903 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18430,7 +18916,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_loption_minus_start_ = 
 # 57 "standard.mly"
     ( [] )
-# 18434 "parser_cocci_menhir.ml"
+# 18920 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18454,7 +18940,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_loption_minus_start_ = 
 # 59 "standard.mly"
     ( x )
-# 18458 "parser_cocci_menhir.ml"
+# 18944 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18471,7 +18957,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_loption_not_pos_ = 
 # 57 "standard.mly"
     ( [] )
-# 18475 "parser_cocci_menhir.ml"
+# 18961 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18495,7 +18981,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_loption_not_pos_ = 
 # 59 "standard.mly"
     ( x )
-# 18499 "parser_cocci_menhir.ml"
+# 18985 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18512,7 +18998,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_loption_plus_start_ = 
 # 57 "standard.mly"
     ( [] )
-# 18516 "parser_cocci_menhir.ml"
+# 19002 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18536,7 +19022,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_loption_plus_start_ = 
 # 59 "standard.mly"
     ( x )
-# 18540 "parser_cocci_menhir.ml"
+# 19026 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18558,9 +19044,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_t_ in
         let _endpos = _endpos_t_ in
         let _v : 'tv_meta_exp_type = 
-# 483 "parser_cocci_menhir.mly"
+# 507 "parser_cocci_menhir.mly"
     ( [Ast0_cocci.ast0_type_to_type t] )
-# 18564 "parser_cocci_menhir.ml"
+# 19050 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18596,11 +19082,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_meta_exp_type = 
-# 485 "parser_cocci_menhir.mly"
+# 509 "parser_cocci_menhir.mly"
     ( List.map
        (function x -> P.ty_pointerify (Ast0_cocci.ast0_type_to_type x) m)
        t )
-# 18604 "parser_cocci_menhir.ml"
+# 19090 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18629,16 +19115,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_pure_ident = Obj.magic _3 in
         let _1 : (
-# 25 "parser_cocci_menhir.mly"
+# 49 "parser_cocci_menhir.mly"
       (string)
-# 18635 "parser_cocci_menhir.ml"
+# 19121 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_meta_ident = 
-# 1451 "parser_cocci_menhir.mly"
+# 1475 "parser_cocci_menhir.mly"
                                    ( (Some _1,P.id2name _3) )
-# 18642 "parser_cocci_menhir.ml"
+# 19128 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18667,16 +19153,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_pure_ident_kwd = Obj.magic _3 in
         let _1 : (
-# 25 "parser_cocci_menhir.mly"
+# 49 "parser_cocci_menhir.mly"
       (string)
-# 18673 "parser_cocci_menhir.ml"
+# 19159 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_meta_ident = 
-# 1452 "parser_cocci_menhir.mly"
+# 1476 "parser_cocci_menhir.mly"
                                    ( (Some _1,_3) )
-# 18680 "parser_cocci_menhir.ml"
+# 19166 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18698,13 +19184,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_m_ in
         let _endpos = _endpos_m_ in
         let _v : (
-# 138 "parser_cocci_menhir.mly"
+# 162 "parser_cocci_menhir.mly"
       ((Ast_cocci.metavar,Ast_cocci.metavar) Common.either list)
-# 18704 "parser_cocci_menhir.ml"
+# 19190 "parser_cocci_menhir.ml"
         ) = 
-# 162 "parser_cocci_menhir.mly"
+# 186 "parser_cocci_menhir.mly"
                        ( m (!Ast0.rule_name) )
-# 18708 "parser_cocci_menhir.ml"
+# 19194 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18747,17 +19233,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 322 "parser_cocci_menhir.mly"
+# 346 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta ->
       let tok = check_meta(Ast.MetaParamDecl(arity,name)) in
       !Data.add_param_meta name pure; tok) )
-# 18755 "parser_cocci_menhir.ml"
+# 19241 "parser_cocci_menhir.ml"
           
         in
         
-# 251 "parser_cocci_menhir.mly"
+# 275 "parser_cocci_menhir.mly"
     ( P.create_metadec ar ispure kindfn ids )
-# 18761 "parser_cocci_menhir.ml"
+# 19247 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18804,18 +19290,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__6_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 326 "parser_cocci_menhir.mly"
+# 350 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta ->
       let len = Ast.AnyLen in
       let tok = check_meta(Ast.MetaParamListDecl(arity,name,len)) in
       !Data.add_paramlist_meta name len pure; tok) )
-# 18813 "parser_cocci_menhir.ml"
+# 19299 "parser_cocci_menhir.ml"
           
         in
         
-# 251 "parser_cocci_menhir.mly"
+# 275 "parser_cocci_menhir.mly"
     ( P.create_metadec ar ispure kindfn ids )
-# 18819 "parser_cocci_menhir.ml"
+# 19305 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18862,18 +19348,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__6_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 331 "parser_cocci_menhir.mly"
+# 355 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta ->
       let len = Ast.AnyLen in
       let tok = check_meta(Ast.MetaExpListDecl(arity,name,len)) in
       !Data.add_explist_meta name len pure; tok) )
-# 18871 "parser_cocci_menhir.ml"
+# 19357 "parser_cocci_menhir.ml"
           
         in
         
-# 251 "parser_cocci_menhir.mly"
+# 275 "parser_cocci_menhir.mly"
     ( P.create_metadec ar ispure kindfn ids )
-# 18877 "parser_cocci_menhir.ml"
+# 19363 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18916,17 +19402,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 336 "parser_cocci_menhir.mly"
+# 360 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta ->
       let tok = check_meta(Ast.MetaTypeDecl(arity,name)) in
       !Data.add_type_meta name pure; tok) )
-# 18924 "parser_cocci_menhir.ml"
+# 19410 "parser_cocci_menhir.ml"
           
         in
         
-# 251 "parser_cocci_menhir.mly"
+# 275 "parser_cocci_menhir.mly"
     ( P.create_metadec ar ispure kindfn ids )
-# 18930 "parser_cocci_menhir.ml"
+# 19416 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18969,17 +19455,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 340 "parser_cocci_menhir.mly"
+# 364 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta ->
       let tok = check_meta(Ast.MetaInitDecl(arity,name)) in
       !Data.add_init_meta name pure; tok) )
-# 18977 "parser_cocci_menhir.ml"
+# 19463 "parser_cocci_menhir.ml"
           
         in
         
-# 251 "parser_cocci_menhir.mly"
+# 275 "parser_cocci_menhir.mly"
     ( P.create_metadec ar ispure kindfn ids )
-# 18983 "parser_cocci_menhir.ml"
+# 19469 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19022,17 +19508,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 344 "parser_cocci_menhir.mly"
+# 368 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta ->
       let tok = check_meta(Ast.MetaStmDecl(arity,name)) in
       !Data.add_stm_meta name pure; tok) )
-# 19030 "parser_cocci_menhir.ml"
+# 19516 "parser_cocci_menhir.ml"
           
         in
         
-# 251 "parser_cocci_menhir.mly"
+# 275 "parser_cocci_menhir.mly"
     ( P.create_metadec ar ispure kindfn ids )
-# 19036 "parser_cocci_menhir.ml"
+# 19522 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19075,17 +19561,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 348 "parser_cocci_menhir.mly"
+# 372 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta ->
       let tok = check_meta(Ast.MetaDeclDecl(arity,name)) in
       !Data.add_decl_meta name pure; tok) )
-# 19083 "parser_cocci_menhir.ml"
+# 19569 "parser_cocci_menhir.ml"
           
         in
         
-# 251 "parser_cocci_menhir.mly"
+# 275 "parser_cocci_menhir.mly"
     ( P.create_metadec ar ispure kindfn ids )
-# 19089 "parser_cocci_menhir.ml"
+# 19575 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19128,17 +19614,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 352 "parser_cocci_menhir.mly"
+# 376 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta ->
       let tok = check_meta(Ast.MetaFieldDecl(arity,name)) in
       !Data.add_field_meta name pure; tok) )
-# 19136 "parser_cocci_menhir.ml"
+# 19622 "parser_cocci_menhir.ml"
           
         in
         
-# 251 "parser_cocci_menhir.mly"
+# 275 "parser_cocci_menhir.mly"
     ( P.create_metadec ar ispure kindfn ids )
-# 19142 "parser_cocci_menhir.ml"
+# 19628 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19185,17 +19671,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__6_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 356 "parser_cocci_menhir.mly"
+# 380 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta ->
       let tok = check_meta(Ast.MetaStmListDecl(arity,name)) in
       !Data.add_stmlist_meta name pure; tok) )
-# 19193 "parser_cocci_menhir.ml"
+# 19679 "parser_cocci_menhir.ml"
           
         in
         
-# 251 "parser_cocci_menhir.mly"
+# 275 "parser_cocci_menhir.mly"
     ( P.create_metadec ar ispure kindfn ids )
-# 19199 "parser_cocci_menhir.ml"
+# 19685 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19238,18 +19724,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 360 "parser_cocci_menhir.mly"
+# 384 "parser_cocci_menhir.mly"
     ( (fun arity (_,name) pure check_meta ->
       if arity = Ast.NONE && pure = Ast0.Impure
       then (!Data.add_type_name name; [])
       else raise (Semantic_cocci.Semantic "bad typedef")) )
-# 19247 "parser_cocci_menhir.ml"
+# 19733 "parser_cocci_menhir.ml"
           
         in
         
-# 251 "parser_cocci_menhir.mly"
+# 275 "parser_cocci_menhir.mly"
     ( P.create_metadec ar ispure kindfn ids )
-# 19253 "parser_cocci_menhir.ml"
+# 19739 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19296,18 +19782,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__6_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 365 "parser_cocci_menhir.mly"
+# 389 "parser_cocci_menhir.mly"
     ( (fun arity (_,name) pure check_meta ->
       if arity = Ast.NONE && pure = Ast0.Impure
       then (!Data.add_declarer_name name; [])
       else raise (Semantic_cocci.Semantic "bad declarer")) )
-# 19305 "parser_cocci_menhir.ml"
+# 19791 "parser_cocci_menhir.ml"
           
         in
         
-# 251 "parser_cocci_menhir.mly"
+# 275 "parser_cocci_menhir.mly"
     ( P.create_metadec ar ispure kindfn ids )
-# 19311 "parser_cocci_menhir.ml"
+# 19797 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19354,18 +19840,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__6_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 370 "parser_cocci_menhir.mly"
+# 394 "parser_cocci_menhir.mly"
     ( (fun arity (_,name) pure check_meta ->
       if arity = Ast.NONE && pure = Ast0.Impure
       then (!Data.add_iterator_name name; [])
       else raise (Semantic_cocci.Semantic "bad iterator")) )
-# 19363 "parser_cocci_menhir.ml"
+# 19849 "parser_cocci_menhir.ml"
           
         in
         
-# 251 "parser_cocci_menhir.mly"
+# 275 "parser_cocci_menhir.mly"
     ( P.create_metadec ar ispure kindfn ids )
-# 19369 "parser_cocci_menhir.ml"
+# 19855 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19400,17 +19886,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__4_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 315 "parser_cocci_menhir.mly"
+# 339 "parser_cocci_menhir.mly"
     ( (fun name check_meta seed ->
       let tok = check_meta(Ast.MetaFreshIdDecl(name,seed)) in
       !Data.add_fresh_id_meta name; tok) )
-# 19408 "parser_cocci_menhir.ml"
+# 19894 "parser_cocci_menhir.ml"
           
         in
         
-# 254 "parser_cocci_menhir.mly"
+# 278 "parser_cocci_menhir.mly"
     ( P.create_fresh_metadec kindfn ids )
-# 19414 "parser_cocci_menhir.ml"
+# 19900 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19453,7 +19939,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 377 "parser_cocci_menhir.mly"
+# 401 "parser_cocci_menhir.mly"
     (
      let idfn arity name pure check_meta constraints =
        let tok = check_meta(Ast.MetaIdDecl(arity,name)) in
@@ -19467,17 +19953,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let tok = check_meta(Ast.MetaIdDecl(arity,name)) in
         !Data.add_virt_id_meta_not_found name pure; tok in
      (idfn,virtfn) )
-# 19471 "parser_cocci_menhir.ml"
+# 19957 "parser_cocci_menhir.ml"
           
         in
         
-# 260 "parser_cocci_menhir.mly"
+# 284 "parser_cocci_menhir.mly"
     ( let (normal,virt) = Common.partition_either (fun x -> x) ids in
     let (idfn,virtfn) = kindfn in
     function cr ->
       (P.create_metadec_with_constraints ar ispure idfn normal cr) @
       (P.create_metadec_virt ar ispure virtfn virt cr) )
-# 19481 "parser_cocci_menhir.ml"
+# 19967 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19520,17 +20006,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 393 "parser_cocci_menhir.mly"
+# 417 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta constraints ->
       let tok = check_meta(Ast.MetaFuncDecl(arity,name)) in
       !Data.add_func_meta name constraints pure; tok) )
-# 19528 "parser_cocci_menhir.ml"
+# 20014 "parser_cocci_menhir.ml"
           
         in
         
-# 269 "parser_cocci_menhir.mly"
+# 293 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 19534 "parser_cocci_menhir.ml"
+# 20020 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19577,18 +20063,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__6_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 397 "parser_cocci_menhir.mly"
+# 421 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta constraints ->
       let tok = check_meta(Ast.MetaLocalFuncDecl(arity,name)) in
       !Data.add_local_func_meta name constraints pure;
       tok) )
-# 19586 "parser_cocci_menhir.ml"
+# 20072 "parser_cocci_menhir.ml"
           
         in
         
-# 269 "parser_cocci_menhir.mly"
+# 293 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 19592 "parser_cocci_menhir.ml"
+# 20078 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19631,17 +20117,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 402 "parser_cocci_menhir.mly"
+# 426 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta constraints ->
       let tok = check_meta(Ast.MetaDeclarerDecl(arity,name)) in
       !Data.add_declarer_meta name constraints pure; tok) )
-# 19639 "parser_cocci_menhir.ml"
+# 20125 "parser_cocci_menhir.ml"
           
         in
         
-# 269 "parser_cocci_menhir.mly"
+# 293 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 19645 "parser_cocci_menhir.ml"
+# 20131 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19684,17 +20170,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 406 "parser_cocci_menhir.mly"
+# 430 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta constraints ->
       let tok = check_meta(Ast.MetaIteratorDecl(arity,name)) in
       !Data.add_iterator_meta name constraints pure; tok) )
-# 19692 "parser_cocci_menhir.ml"
+# 20178 "parser_cocci_menhir.ml"
           
         in
         
-# 269 "parser_cocci_menhir.mly"
+# 293 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 19698 "parser_cocci_menhir.ml"
+# 20184 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19737,17 +20223,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 412 "parser_cocci_menhir.mly"
+# 436 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta constraints ->
       let tok = check_meta(Ast.MetaErrDecl(arity,name)) in
       !Data.add_err_meta name constraints pure; tok) )
-# 19745 "parser_cocci_menhir.ml"
+# 20231 "parser_cocci_menhir.ml"
           
         in
         
-# 274 "parser_cocci_menhir.mly"
+# 298 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 19751 "parser_cocci_menhir.ml"
+# 20237 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19800,11 +20286,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             
 # 39 "standard.mly"
     ( None )
-# 19804 "parser_cocci_menhir.ml"
+# 20290 "parser_cocci_menhir.ml"
             
           in
           
-# 416 "parser_cocci_menhir.mly"
+# 440 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta constraints ->
       match l with
        None ->
@@ -19813,13 +20299,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       | Some _ ->
          !Data.add_local_idexp_meta ty name constraints pure;
          check_meta(Ast.MetaLocalIdExpDecl(arity,name,ty))) )
-# 19817 "parser_cocci_menhir.ml"
+# 20303 "parser_cocci_menhir.ml"
           
         in
         
-# 274 "parser_cocci_menhir.mly"
+# 298 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 19823 "parser_cocci_menhir.ml"
+# 20309 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19880,11 +20366,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             
 # 41 "standard.mly"
     ( Some x )
-# 19884 "parser_cocci_menhir.ml"
+# 20370 "parser_cocci_menhir.ml"
             
           in
           
-# 416 "parser_cocci_menhir.mly"
+# 440 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta constraints ->
       match l with
        None ->
@@ -19893,13 +20379,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       | Some _ ->
          !Data.add_local_idexp_meta ty name constraints pure;
          check_meta(Ast.MetaLocalIdExpDecl(arity,name,ty))) )
-# 19897 "parser_cocci_menhir.ml"
+# 20383 "parser_cocci_menhir.ml"
           
         in
         
-# 274 "parser_cocci_menhir.mly"
+# 298 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 19903 "parser_cocci_menhir.ml"
+# 20389 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19956,7 +20442,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let m = m0 in
           let l = l0 in
           
-# 425 "parser_cocci_menhir.mly"
+# 449 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta constraints ->
       let ty = Some [P.ty_pointerify Type_cocci.Unknown m] in
       match l with
@@ -19966,13 +20452,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       | Some _ ->
          !Data.add_local_idexp_meta ty name constraints pure;
          check_meta(Ast.MetaLocalIdExpDecl(arity,name,ty))) )
-# 19970 "parser_cocci_menhir.ml"
+# 20456 "parser_cocci_menhir.ml"
           
         in
         
-# 274 "parser_cocci_menhir.mly"
+# 298 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 19976 "parser_cocci_menhir.ml"
+# 20462 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -20022,18 +20508,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_metadec = let kindfn =
           let m = m0 in
           
-# 435 "parser_cocci_menhir.mly"
+# 459 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta constraints ->
       let ty = Some [P.ty_pointerify Type_cocci.Unknown m] in
       let tok = check_meta(Ast.MetaExpDecl(arity,name,ty)) in
       !Data.add_exp_meta ty name constraints pure; tok) )
-# 20031 "parser_cocci_menhir.ml"
+# 20517 "parser_cocci_menhir.ml"
           
         in
         
-# 274 "parser_cocci_menhir.mly"
+# 298 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 20037 "parser_cocci_menhir.ml"
+# 20523 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -20087,18 +20573,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_metadec = let kindfn =
           let vl = vl0 in
           
-# 440 "parser_cocci_menhir.mly"
+# 464 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta constraints ->
       let ty = Some (List.map (function x -> Type_cocci.Array x) vl) in
       let tok = check_meta(Ast.MetaExpDecl(arity,name,ty)) in
       !Data.add_exp_meta ty name constraints pure; tok) )
-# 20096 "parser_cocci_menhir.ml"
+# 20582 "parser_cocci_menhir.ml"
           
         in
         
-# 274 "parser_cocci_menhir.mly"
+# 298 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 20102 "parser_cocci_menhir.ml"
+# 20588 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -20144,21 +20630,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             
 # 39 "standard.mly"
     ( None )
-# 20148 "parser_cocci_menhir.ml"
+# 20634 "parser_cocci_menhir.ml"
             
           in
           
-# 445 "parser_cocci_menhir.mly"
+# 469 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta constraints ->
       let tok = check_meta(Ast.MetaConstDecl(arity,name,ty)) in
       !Data.add_const_meta ty name constraints pure; tok) )
-# 20156 "parser_cocci_menhir.ml"
+# 20642 "parser_cocci_menhir.ml"
           
         in
         
-# 274 "parser_cocci_menhir.mly"
+# 298 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 20162 "parser_cocci_menhir.ml"
+# 20648 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -20212,21 +20698,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             
 # 41 "standard.mly"
     ( Some x )
-# 20216 "parser_cocci_menhir.ml"
+# 20702 "parser_cocci_menhir.ml"
             
           in
           
-# 445 "parser_cocci_menhir.mly"
+# 469 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta constraints ->
       let tok = check_meta(Ast.MetaConstDecl(arity,name,ty)) in
       !Data.add_const_meta ty name constraints pure; tok) )
-# 20224 "parser_cocci_menhir.ml"
+# 20710 "parser_cocci_menhir.ml"
           
         in
         
-# 274 "parser_cocci_menhir.mly"
+# 298 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 20230 "parser_cocci_menhir.ml"
+# 20716 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -20269,17 +20755,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 451 "parser_cocci_menhir.mly"
+# 475 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta constraints ->
       let tok = check_meta(Ast.MetaExpDecl(arity,name,None)) in
       !Data.add_exp_meta None name constraints pure; tok) )
-# 20277 "parser_cocci_menhir.ml"
+# 20763 "parser_cocci_menhir.ml"
           
         in
         
-# 279 "parser_cocci_menhir.mly"
+# 303 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 20283 "parser_cocci_menhir.ml"
+# 20769 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -20325,7 +20811,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_metadec = let kindfn =
           let vl = vl0 in
           
-# 455 "parser_cocci_menhir.mly"
+# 479 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta constraints ->
       let ty = Some vl in
       (match constraints with
@@ -20350,13 +20836,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       let tok = check_meta(Ast.MetaExpDecl(arity,name,ty)) in
       !Data.add_exp_meta ty name constraints pure; tok)
     )
-# 20354 "parser_cocci_menhir.ml"
+# 20840 "parser_cocci_menhir.ml"
           
         in
         
-# 279 "parser_cocci_menhir.mly"
+# 303 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 20360 "parser_cocci_menhir.ml"
+# 20846 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -20398,7 +20884,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_ar_ in
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = 
-# 285 "parser_cocci_menhir.mly"
+# 309 "parser_cocci_menhir.mly"
     ( (if !Data.in_generating
       then failwith "position variables not allowed in a generated rule file");
       let kindfn arity name pure check_meta constraints =
@@ -20406,7 +20892,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       let any = match a with None -> Ast.PER | Some _ -> Ast.ALL in
       !Data.add_pos_meta name constraints any; tok in
     P.create_metadec_with_constraints ar false kindfn ids )
-# 20410 "parser_cocci_menhir.ml"
+# 20896 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -20466,13 +20952,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_ar_ in
         let _endpos = _endpos__9_ in
         let _v : 'tv_metadec = 
-# 295 "parser_cocci_menhir.mly"
+# 319 "parser_cocci_menhir.mly"
     ( P.create_len_metadec ar ispure
        (fun lenname arity name pure check_meta ->
          let tok = check_meta(Ast.MetaParamListDecl(arity,name,lenname)) in
          !Data.add_paramlist_meta name lenname pure; tok)
        len ids )
-# 20476 "parser_cocci_menhir.ml"
+# 20962 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -20532,13 +21018,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_ar_ in
         let _endpos = _endpos__9_ in
         let _v : 'tv_metadec = 
-# 303 "parser_cocci_menhir.mly"
+# 327 "parser_cocci_menhir.mly"
     ( P.create_len_metadec ar ispure
        (fun lenname arity name pure check_meta ->
          let tok = check_meta(Ast.MetaExpListDecl(arity,name,lenname)) in
          !Data.add_explist_meta name lenname pure; tok)
        len ids )
-# 20542 "parser_cocci_menhir.ml"
+# 21028 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -20566,9 +21052,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_a_ in
         let _endpos = _endpos_b_ in
         let _v : 'tv_midzero_list_ctype_ctype_ = 
-# 1969 "parser_cocci_menhir.mly"
+# 2002 "parser_cocci_menhir.mly"
      ( let (mids,code) = List.split b in (mids,(a::code)) )
-# 20572 "parser_cocci_menhir.ml"
+# 21058 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -20596,9 +21082,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_a_ in
         let _endpos = _endpos_b_ in
         let _v : 'tv_midzero_list_eexpr_eexpr_ = 
-# 1969 "parser_cocci_menhir.mly"
+# 2002 "parser_cocci_menhir.mly"
      ( let (mids,code) = List.split b in (mids,(a::code)) )
-# 20602 "parser_cocci_menhir.ml"
+# 21088 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -20626,9 +21112,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_a_ in
         let _endpos = _endpos_b_ in
         let _v : 'tv_midzero_list_expr_eexpr_ = 
-# 1969 "parser_cocci_menhir.mly"
+# 2002 "parser_cocci_menhir.mly"
      ( let (mids,code) = List.split b in (mids,(a::code)) )
-# 20632 "parser_cocci_menhir.ml"
+# 21118 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -20656,9 +21142,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_a_ in
         let _endpos = _endpos_b_ in
         let _v : 'tv_midzero_list_fun_after_stm_fun_after_dots_or_ = 
-# 1969 "parser_cocci_menhir.mly"
+# 2002 "parser_cocci_menhir.mly"
      ( let (mids,code) = List.split b in (mids,(a::code)) )
-# 20662 "parser_cocci_menhir.ml"
+# 21148 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -20686,9 +21172,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_a_ in
         let _endpos = _endpos_b_ in
         let _v : 'tv_midzero_list_fun_start_fun_start_ = 
-# 1969 "parser_cocci_menhir.mly"
+# 2002 "parser_cocci_menhir.mly"
      ( let (mids,code) = List.split b in (mids,(a::code)) )
-# 20692 "parser_cocci_menhir.ml"
+# 21178 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -20716,9 +21202,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_a_ in
         let _endpos = _endpos_b_ in
         let _v : 'tv_midzero_list_rule_elem_statement_rule_elem_statement_ = 
-# 1969 "parser_cocci_menhir.mly"
+# 2002 "parser_cocci_menhir.mly"
      ( let (mids,code) = List.split b in (mids,(a::code)) )
-# 20722 "parser_cocci_menhir.ml"
+# 21208 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -20746,9 +21232,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_a_ in
         let _endpos = _endpos_b_ in
         let _v : 'tv_midzero_list_statement_statement_ = 
-# 1969 "parser_cocci_menhir.mly"
+# 2002 "parser_cocci_menhir.mly"
      ( let (mids,code) = List.split b in (mids,(a::code)) )
-# 20752 "parser_cocci_menhir.ml"
+# 21238 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -20776,11 +21262,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_f_ in
         let _endpos = _endpos_b_ in
         let _v : 'tv_minus_body = 
-# 628 "parser_cocci_menhir.mly"
+# 694 "parser_cocci_menhir.mly"
     ( match f@b(*@ew*) with
       [] -> raise (Semantic_cocci.Semantic "minus slice can't be empty")
     | code -> Top_level.top_level code )
-# 20784 "parser_cocci_menhir.ml"
+# 21270 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -20808,11 +21294,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_f_ in
         let _endpos = _endpos_b_ in
         let _v : 'tv_minus_exp_body = 
-# 642 "parser_cocci_menhir.mly"
+# 708 "parser_cocci_menhir.mly"
     ( match f@[b](*@ew*) with
       [] -> raise (Semantic_cocci.Semantic "minus slice can't be empty")
     | code -> Top_level.top_level code )
-# 20816 "parser_cocci_menhir.ml"
+# 21302 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -20838,13 +21324,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 118 "parser_cocci_menhir.mly"
+# 142 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
-# 20844 "parser_cocci_menhir.ml"
+# 21330 "parser_cocci_menhir.ml"
         ) = 
-# 158 "parser_cocci_menhir.mly"
+# 182 "parser_cocci_menhir.mly"
                                    ( _1 )
-# 20848 "parser_cocci_menhir.ml"
+# 21334 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -20870,13 +21356,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_m_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 118 "parser_cocci_menhir.mly"
+# 142 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
-# 20876 "parser_cocci_menhir.ml"
+# 21362 "parser_cocci_menhir.ml"
         ) = 
-# 158 "parser_cocci_menhir.mly"
+# 182 "parser_cocci_menhir.mly"
                                                                        ( m )
-# 20880 "parser_cocci_menhir.ml"
+# 21366 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -20902,13 +21388,375 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_m_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 118 "parser_cocci_menhir.mly"
+# 142 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
-# 20908 "parser_cocci_menhir.ml"
+# 21394 "parser_cocci_menhir.ml"
         ) = 
-# 159 "parser_cocci_menhir.mly"
+# 183 "parser_cocci_menhir.mly"
                          ( m )
-# 20912 "parser_cocci_menhir.ml"
+# 21398 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = _1;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let _1 : 'tv_minus_body = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : (
+# 139 "parser_cocci_menhir.mly"
+      (Ast0_cocci.rule)
+# 21426 "parser_cocci_menhir.ml"
+        ) = 
+# 178 "parser_cocci_menhir.mly"
+                           ( _1 )
+# 21430 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = m;
+            MenhirLib.EngineTypes.startp = _startpos_m_;
+            MenhirLib.EngineTypes.endp = _endpos_m_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let m : 'tv_minus_body = Obj.magic m in
+        let _startpos = _startpos_m_ in
+        let _endpos = _endpos__2_ in
+        let _v : (
+# 139 "parser_cocci_menhir.mly"
+      (Ast0_cocci.rule)
+# 21458 "parser_cocci_menhir.ml"
+        ) = 
+# 178 "parser_cocci_menhir.mly"
+                                                           ( m )
+# 21462 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = m;
+            MenhirLib.EngineTypes.startp = _startpos_m_;
+            MenhirLib.EngineTypes.endp = _endpos_m_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let m : 'tv_minus_body = Obj.magic m in
+        let _startpos = _startpos_m_ in
+        let _endpos = _endpos__2_ in
+        let _v : (
+# 139 "parser_cocci_menhir.mly"
+      (Ast0_cocci.rule)
+# 21490 "parser_cocci_menhir.ml"
+        ) = 
+# 179 "parser_cocci_menhir.mly"
+                     ( m )
+# 21494 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : 'tv_fundecl = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_minus_start = 
+# 1827 "parser_cocci_menhir.mly"
+                         ( [Ast0.wrap(Ast0.DECL(_1))] )
+# 21518 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : 'tv_ctype = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_minus_start = 
+# 1828 "parser_cocci_menhir.mly"
+                         ( [Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.Ty(_1))))] )
+# 21542 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : 'tv_top_init = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_minus_start = 
+# 1829 "parser_cocci_menhir.mly"
+                    ( [Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.TopInit(_1))))] )
+# 21566 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : 'tv_toplevel_seq_startne_toplevel_after_dots_init_ = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_minus_start = 
+# 1831 "parser_cocci_menhir.mly"
+    ( List.map (function x -> Ast0.wrap(Ast0.OTHER(x))) _1 )
+# 21590 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = b;
+          MenhirLib.EngineTypes.startp = _startpos_b_;
+          MenhirLib.EngineTypes.endp = _endpos_b_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = a;
+            MenhirLib.EngineTypes.startp = _startpos_a_;
+            MenhirLib.EngineTypes.endp = _endpos_a_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let b : 'tv_ctype = Obj.magic b in
+        let a : (
+# 80 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 21617 "parser_cocci_menhir.ml"
+        ) = Obj.magic a in
+        let _startpos = _startpos_a_ in
+        let _endpos = _endpos_b_ in
+        let _v : 'tv_mzl_ctype_ = 
+# 2005 "parser_cocci_menhir.mly"
+                 ( (P.clt2mcode "|" a, b) )
+# 21624 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = b;
+          MenhirLib.EngineTypes.startp = _startpos_b_;
+          MenhirLib.EngineTypes.endp = _endpos_b_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = a;
+            MenhirLib.EngineTypes.startp = _startpos_a_;
+            MenhirLib.EngineTypes.endp = _endpos_a_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let b : 'tv_eexpr = Obj.magic b in
+        let a : (
+# 80 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 21651 "parser_cocci_menhir.ml"
+        ) = Obj.magic a in
+        let _startpos = _startpos_a_ in
+        let _endpos = _endpos_b_ in
+        let _v : 'tv_mzl_eexpr_ = 
+# 2005 "parser_cocci_menhir.mly"
+                 ( (P.clt2mcode "|" a, b) )
+# 21658 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = b;
+          MenhirLib.EngineTypes.startp = _startpos_b_;
+          MenhirLib.EngineTypes.endp = _endpos_b_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = a;
+            MenhirLib.EngineTypes.startp = _startpos_a_;
+            MenhirLib.EngineTypes.endp = _endpos_a_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let b : 'tv_fun_after_dots_or = Obj.magic b in
+        let a : (
+# 80 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 21685 "parser_cocci_menhir.ml"
+        ) = Obj.magic a in
+        let _startpos = _startpos_a_ in
+        let _endpos = _endpos_b_ in
+        let _v : 'tv_mzl_fun_after_dots_or_ = 
+# 2005 "parser_cocci_menhir.mly"
+                 ( (P.clt2mcode "|" a, b) )
+# 21692 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = b;
+          MenhirLib.EngineTypes.startp = _startpos_b_;
+          MenhirLib.EngineTypes.endp = _endpos_b_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = a;
+            MenhirLib.EngineTypes.startp = _startpos_a_;
+            MenhirLib.EngineTypes.endp = _endpos_a_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let b : 'tv_fun_start = Obj.magic b in
+        let a : (
+# 80 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 21719 "parser_cocci_menhir.ml"
+        ) = Obj.magic a in
+        let _startpos = _startpos_a_ in
+        let _endpos = _endpos_b_ in
+        let _v : 'tv_mzl_fun_start_ = 
+# 2005 "parser_cocci_menhir.mly"
+                 ( (P.clt2mcode "|" a, b) )
+# 21726 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = b;
+          MenhirLib.EngineTypes.startp = _startpos_b_;
+          MenhirLib.EngineTypes.endp = _endpos_b_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = a;
+            MenhirLib.EngineTypes.startp = _startpos_a_;
+            MenhirLib.EngineTypes.endp = _endpos_a_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let b : 'tv_rule_elem_statement = Obj.magic b in
+        let a : (
+# 80 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 21753 "parser_cocci_menhir.ml"
+        ) = Obj.magic a in
+        let _startpos = _startpos_a_ in
+        let _endpos = _endpos_b_ in
+        let _v : 'tv_mzl_rule_elem_statement_ = 
+# 2005 "parser_cocci_menhir.mly"
+                 ( (P.clt2mcode "|" a, b) )
+# 21760 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -20920,6 +21768,920 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
+          MenhirLib.EngineTypes.semv = b;
+          MenhirLib.EngineTypes.startp = _startpos_b_;
+          MenhirLib.EngineTypes.endp = _endpos_b_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = a;
+            MenhirLib.EngineTypes.startp = _startpos_a_;
+            MenhirLib.EngineTypes.endp = _endpos_a_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let b : 'tv_statement = Obj.magic b in
+        let a : (
+# 80 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 21787 "parser_cocci_menhir.ml"
+        ) = Obj.magic a in
+        let _startpos = _startpos_a_ in
+        let _endpos = _endpos_b_ in
+        let _v : 'tv_mzl_statement_ = 
+# 2005 "parser_cocci_menhir.mly"
+                 ( (P.clt2mcode "|" a, b) )
+# 21794 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : 'tv_decl = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_name_opt_decl = 
+# 901 "parser_cocci_menhir.mly"
+            ( _1 )
+# 21818 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = rp1;
+          MenhirLib.EngineTypes.startp = _startpos_rp1_;
+          MenhirLib.EngineTypes.endp = _endpos_rp1_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = d;
+            MenhirLib.EngineTypes.startp = _startpos_d_;
+            MenhirLib.EngineTypes.endp = _endpos_d_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.semv = lp1;
+              MenhirLib.EngineTypes.startp = _startpos_lp1_;
+              MenhirLib.EngineTypes.endp = _endpos_lp1_;
+              MenhirLib.EngineTypes.next = {
+                MenhirLib.EngineTypes.semv = rp;
+                MenhirLib.EngineTypes.startp = _startpos_rp_;
+                MenhirLib.EngineTypes.endp = _endpos_rp_;
+                MenhirLib.EngineTypes.next = {
+                  MenhirLib.EngineTypes.semv = s;
+                  MenhirLib.EngineTypes.startp = _startpos_s_;
+                  MenhirLib.EngineTypes.endp = _endpos_s_;
+                  MenhirLib.EngineTypes.next = {
+                    MenhirLib.EngineTypes.semv = lp;
+                    MenhirLib.EngineTypes.startp = _startpos_lp_;
+                    MenhirLib.EngineTypes.endp = _endpos_lp_;
+                    MenhirLib.EngineTypes.next = {
+                      MenhirLib.EngineTypes.state = _menhir_s;
+                      MenhirLib.EngineTypes.semv = t;
+                      MenhirLib.EngineTypes.startp = _startpos_t_;
+                      MenhirLib.EngineTypes.endp = _endpos_t_;
+                      MenhirLib.EngineTypes.next = _menhir_stack;
+                      };
+                    };
+                  };
+                };
+              };
+            };
+          } = _menhir_stack in
+        let rp1 : (
+# 80 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 21869 "parser_cocci_menhir.ml"
+        ) = Obj.magic rp1 in
+        let d : 'tv_decl_list_name_opt_decl_ = Obj.magic d in
+        let lp1 : (
+# 79 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 21875 "parser_cocci_menhir.ml"
+        ) = Obj.magic lp1 in
+        let rp : (
+# 80 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 21880 "parser_cocci_menhir.ml"
+        ) = Obj.magic rp in
+        let s : (
+# 102 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 21885 "parser_cocci_menhir.ml"
+        ) = Obj.magic s in
+        let lp : (
+# 79 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 21890 "parser_cocci_menhir.ml"
+        ) = Obj.magic lp in
+        let t : 'tv_ctype = Obj.magic t in
+        let _startpos = _startpos_t_ in
+        let _endpos = _endpos_rp1_ in
+        let _v : 'tv_name_opt_decl = 
+# 904 "parser_cocci_menhir.mly"
+        ( let fnptr =
+         Ast0.wrap
+           (Ast0.FunctionPointer
+              (t,P.clt2mcode "(" lp,P.clt2mcode "*" s,P.clt2mcode ")" rp,
+               P.clt2mcode "(" lp1,d,P.clt2mcode ")" rp1)) in
+       Ast0.wrap(Ast0.Param(fnptr, None)) )
+# 21903 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = _1;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let _2 : 'tv_nest_after_stm = Obj.magic _2 in
+        let _1 : 'tv_decl_statement_expr = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_nest_after_dots = 
+# 1947 "parser_cocci_menhir.mly"
+                                     (_1@_2)
+# 21933 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let _2 : 'tv_nest_after_exp = Obj.magic _2 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_nest_after_dots = 
+# 1948 "parser_cocci_menhir.mly"
+                                (_2)
+# 21961 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = _1;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let _2 : 'tv_nest_after_exp = Obj.magic _2 in
+        let _1 : 'tv_expr = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_nest_after_dots = 
+# 1949 "parser_cocci_menhir.mly"
+                                ((Ast0.wrap(Ast0.Exp(_1)))::_2)
+# 21991 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
+        let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
+        let _endpos = _startpos in
+        let _v : 'tv_nest_after_exp = 
+# 1957 "parser_cocci_menhir.mly"
+                                ([])
+# 22008 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = _1;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let _2 : 'tv_nest_after_dots = Obj.magic _2 in
+        let _1 : 'tv_stm_dots = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_nest_after_exp = 
+# 1958 "parser_cocci_menhir.mly"
+                                (_1::_2)
+# 22038 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
+        let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
+        let _endpos = _startpos in
+        let _v : 'tv_nest_after_stm = 
+# 1952 "parser_cocci_menhir.mly"
+                                ([])
+# 22055 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = _1;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let _2 : 'tv_nest_after_dots = Obj.magic _2 in
+        let _1 : 'tv_stm_dots = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_nest_after_stm = 
+# 1953 "parser_cocci_menhir.mly"
+                                (_1::_2)
+# 22085 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = _1;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let _2 : 'tv_nest_after_stm = Obj.magic _2 in
+        let _1 : 'tv_decl_statement = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_nest_after_stm = 
+# 1954 "parser_cocci_menhir.mly"
+                                (_1@_2)
+# 22115 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = c;
+          MenhirLib.EngineTypes.startp = _startpos_c_;
+          MenhirLib.EngineTypes.endp = _endpos_c_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = e;
+            MenhirLib.EngineTypes.startp = _startpos_e_;
+            MenhirLib.EngineTypes.endp = _endpos_e_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = _1;
+              MenhirLib.EngineTypes.startp = _startpos__1_;
+              MenhirLib.EngineTypes.endp = _endpos__1_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
+            };
+          } = _menhir_stack in
+        let c : (
+# 76 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 22146 "parser_cocci_menhir.ml"
+        ) = Obj.magic c in
+        let e : 'tv_expr_dots_TEllipsis_ = Obj.magic e in
+        let _1 : (
+# 76 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 22152 "parser_cocci_menhir.ml"
+        ) = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos_c_ in
+        let _v : 'tv_nest_expressions = 
+# 1272 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.NestExpr(P.clt2mcode "<..." _1,
+                             Ast0.wrap(Ast0.DOTS(e (P.mkedots "..."))),
+                             P.clt2mcode "...>" c, None, false)) )
+# 22161 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = c;
+          MenhirLib.EngineTypes.startp = _startpos_c_;
+          MenhirLib.EngineTypes.endp = _endpos_c_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = e;
+            MenhirLib.EngineTypes.startp = _startpos_e_;
+            MenhirLib.EngineTypes.endp = _endpos_e_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = _1;
+              MenhirLib.EngineTypes.startp = _startpos__1_;
+              MenhirLib.EngineTypes.endp = _endpos__1_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
+            };
+          } = _menhir_stack in
+        let c : (
+# 76 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 22192 "parser_cocci_menhir.ml"
+        ) = Obj.magic c in
+        let e : 'tv_expr_dots_TEllipsis_ = Obj.magic e in
+        let _1 : (
+# 76 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 22198 "parser_cocci_menhir.ml"
+        ) = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos_c_ in
+        let _v : 'tv_nest_expressions = 
+# 1276 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.NestExpr(P.clt2mcode "<+..." _1,
+                             Ast0.wrap(Ast0.DOTS(e (P.mkedots "..."))),
+                             P.clt2mcode "...+>" c, None, true)) )
+# 22207 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : 'tv_nest_after_dots = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_nest_start = 
+# 1944 "parser_cocci_menhir.mly"
+                   ( Ast0.wrap(Ast0.DOTS(_1)) )
+# 22231 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : (
+# 173 "parser_cocci_menhir.mly"
+      (unit)
+# 22253 "parser_cocci_menhir.ml"
+        ) = 
+# 2072 "parser_cocci_menhir.mly"
+                    ( () )
+# 22257 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : (
+# 173 "parser_cocci_menhir.mly"
+      (unit)
+# 22283 "parser_cocci_menhir.ml"
+        ) = 
+# 2073 "parser_cocci_menhir.mly"
+                    ( () )
+# 22287 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : (
+# 173 "parser_cocci_menhir.mly"
+      (unit)
+# 22309 "parser_cocci_menhir.ml"
+        ) = 
+# 2074 "parser_cocci_menhir.mly"
+                    ( () )
+# 22313 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = dg;
+          MenhirLib.EngineTypes.startp = _startpos_dg_;
+          MenhirLib.EngineTypes.endp = _endpos_dg_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = g;
+            MenhirLib.EngineTypes.startp = _startpos_g_;
+            MenhirLib.EngineTypes.endp = _endpos_g_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let dg : 'tv_list_pair_edots_when_TEllipsis_eexpr__dexpr__ = Obj.magic dg in
+        let g : 'tv_dexpr = Obj.magic g in
+        let _startpos = _startpos_g_ in
+        let _endpos = _endpos_dg_ in
+        let _v : 'tv_no_dot_start_end_dexpr_edots_when_TEllipsis_eexpr__ = 
+# 1442 "parser_cocci_menhir.mly"
+  ( function dot_builder ->
+      g :: (List.concat(List.map (function (d,g) -> [dot_builder d;g]) dg)) )
+# 22344 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = x;
+          MenhirLib.EngineTypes.startp = _startpos_x_;
+          MenhirLib.EngineTypes.endp = _endpos_x_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let x : (
+# 102 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 22365 "parser_cocci_menhir.ml"
+        ) = Obj.magic x in
+        let _startpos = _startpos_x_ in
+        let _endpos = _endpos_x_ in
+        let _v : 'tv_nonempty_list_TMul_ = 
+# 124 "standard.mly"
+    ( [ x ] )
+# 22372 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = xs;
+          MenhirLib.EngineTypes.startp = _startpos_xs_;
+          MenhirLib.EngineTypes.endp = _endpos_xs_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = x;
+            MenhirLib.EngineTypes.startp = _startpos_x_;
+            MenhirLib.EngineTypes.endp = _endpos_x_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let xs : 'tv_nonempty_list_TMul_ = Obj.magic xs in
+        let x : (
+# 102 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 22399 "parser_cocci_menhir.ml"
+        ) = Obj.magic x in
+        let _startpos = _startpos_x_ in
+        let _endpos = _endpos_xs_ in
+        let _v : 'tv_nonempty_list_TMul_ = 
+# 126 "standard.mly"
+    ( x :: xs )
+# 22406 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : 'tv_aexpr = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_nonempty_list_start_aexpr_TEllipsis_ = 
+# 1754 "parser_cocci_menhir.mly"
+       ( fun build_dots build_comma -> [_1] )
+# 22430 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = _1;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 22456 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_aexpr = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_nonempty_list_start_aexpr_TEllipsis_ = 
+# 1756 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      _1::[Ast0.wrap(build_comma(P.clt2mcode "," _2))] )
+# 22465 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _3;
+          MenhirLib.EngineTypes.startp = _startpos__3_;
+          MenhirLib.EngineTypes.endp = _endpos__3_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = _2;
+            MenhirLib.EngineTypes.startp = _startpos__2_;
+            MenhirLib.EngineTypes.endp = _endpos__2_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = _1;
+              MenhirLib.EngineTypes.startp = _startpos__1_;
+              MenhirLib.EngineTypes.endp = _endpos__1_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
+            };
+          } = _menhir_stack in
+        let _3 : 'tv_nonempty_list_start_aexpr_TEllipsis_ = Obj.magic _3 in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 22497 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_aexpr = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__3_ in
+        let _v : 'tv_nonempty_list_start_aexpr_TEllipsis_ = 
+# 1759 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      _1::(Ast0.wrap(build_comma(P.clt2mcode "," _2)))::
+      (_3 build_dots build_comma) )
+# 22507 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let _2 : 'tv_nonempty_list_start_aexpr_TEllipsis_ = Obj.magic _2 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_nonempty_list_start_aexpr_TEllipsis_ = 
+# 1762 "parser_cocci_menhir.mly"
+                                            ( _2 )
+# 22535 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = d;
+          MenhirLib.EngineTypes.startp = _startpos_d_;
+          MenhirLib.EngineTypes.endp = _endpos_d_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let d : (
+# 76 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 22556 "parser_cocci_menhir.ml"
+        ) = Obj.magic d in
+        let _startpos = _startpos_d_ in
+        let _endpos = _endpos_d_ in
+        let _v : 'tv_nonempty_list_start_aexpr_TEllipsis_ = 
+# 1763 "parser_cocci_menhir.mly"
+           ( fun build_dots build_comma -> [(build_dots "..." d)] )
+# 22563 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = d;
+            MenhirLib.EngineTypes.startp = _startpos_d_;
+            MenhirLib.EngineTypes.endp = _endpos_d_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 22589 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let d : (
+# 76 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 22594 "parser_cocci_menhir.ml"
+        ) = Obj.magic d in
+        let _startpos = _startpos_d_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_nonempty_list_start_aexpr_TEllipsis_ = 
+# 1765 "parser_cocci_menhir.mly"
+      ( fun build_dots build_comma ->
+       [(build_dots "..." d);Ast0.wrap(build_comma(P.clt2mcode "," _2))] )
+# 22602 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = r;
+          MenhirLib.EngineTypes.startp = _startpos_r_;
+          MenhirLib.EngineTypes.endp = _endpos_r_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = _2;
+            MenhirLib.EngineTypes.startp = _startpos__2_;
+            MenhirLib.EngineTypes.endp = _endpos__2_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = d;
+              MenhirLib.EngineTypes.startp = _startpos_d_;
+              MenhirLib.EngineTypes.endp = _endpos_d_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
+            };
+          } = _menhir_stack in
+        let r : 'tv_continue_list_aexpr_TEllipsis_ = Obj.magic r in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 22634 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let d : (
+# 76 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 22639 "parser_cocci_menhir.ml"
+        ) = Obj.magic d in
+        let _startpos = _startpos_d_ in
+        let _endpos = _endpos_r_ in
+        let _v : 'tv_nonempty_list_start_aexpr_TEllipsis_ = 
+# 1768 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      (build_dots "..." d)::
+      (Ast0.wrap(build_comma(P.clt2mcode "," _2)))::
+      (r build_dots build_comma) )
+# 22649 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : 'tv_dparam = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_nonempty_list_start_dparam_TEllipsis_ = 
+# 1754 "parser_cocci_menhir.mly"
+       ( fun build_dots build_comma -> [_1] )
+# 22673 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _2;
           MenhirLib.EngineTypes.startp = _startpos__2_;
           MenhirLib.EngineTypes.endp = _endpos__2_;
           MenhirLib.EngineTypes.next = {
@@ -20930,17 +22692,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             MenhirLib.EngineTypes.next = _menhir_stack;
             };
           } = _menhir_stack in
-        let _1 : 'tv_minus_body = Obj.magic _1 in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 22699 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_dparam = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
-        let _v : (
-# 115 "parser_cocci_menhir.mly"
-      (Ast0_cocci.rule)
-# 20940 "parser_cocci_menhir.ml"
-        ) = 
-# 154 "parser_cocci_menhir.mly"
-                           ( _1 )
-# 20944 "parser_cocci_menhir.ml"
+        let _v : 'tv_nonempty_list_start_dparam_TEllipsis_ = 
+# 1756 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      _1::[Ast0.wrap(build_comma(P.clt2mcode "," _2))] )
+# 22708 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -20952,27 +22716,37 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.startp = _startpos__2_;
-          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.semv = _3;
+          MenhirLib.EngineTypes.startp = _startpos__3_;
+          MenhirLib.EngineTypes.endp = _endpos__3_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = m;
-            MenhirLib.EngineTypes.startp = _startpos_m_;
-            MenhirLib.EngineTypes.endp = _endpos_m_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
+            MenhirLib.EngineTypes.semv = _2;
+            MenhirLib.EngineTypes.startp = _startpos__2_;
+            MenhirLib.EngineTypes.endp = _endpos__2_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = _1;
+              MenhirLib.EngineTypes.startp = _startpos__1_;
+              MenhirLib.EngineTypes.endp = _endpos__1_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
             };
           } = _menhir_stack in
-        let m : 'tv_minus_body = Obj.magic m in
-        let _startpos = _startpos_m_ in
-        let _endpos = _endpos__2_ in
-        let _v : (
-# 115 "parser_cocci_menhir.mly"
-      (Ast0_cocci.rule)
-# 20972 "parser_cocci_menhir.ml"
-        ) = 
-# 154 "parser_cocci_menhir.mly"
-                                                           ( m )
-# 20976 "parser_cocci_menhir.ml"
+        let _3 : 'tv_nonempty_list_start_dparam_TEllipsis_ = Obj.magic _3 in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 22740 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_dparam = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__3_ in
+        let _v : 'tv_nonempty_list_start_dparam_TEllipsis_ = 
+# 1759 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      _1::(Ast0.wrap(build_comma(P.clt2mcode "," _2)))::
+      (_3 build_dots build_comma) )
+# 22750 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -20984,27 +22758,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
+          MenhirLib.EngineTypes.semv = _2;
           MenhirLib.EngineTypes.startp = _startpos__2_;
           MenhirLib.EngineTypes.endp = _endpos__2_;
           MenhirLib.EngineTypes.next = {
             MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = m;
-            MenhirLib.EngineTypes.startp = _startpos_m_;
-            MenhirLib.EngineTypes.endp = _endpos_m_;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
             MenhirLib.EngineTypes.next = _menhir_stack;
             };
           } = _menhir_stack in
-        let m : 'tv_minus_body = Obj.magic m in
-        let _startpos = _startpos_m_ in
+        let _2 : 'tv_nonempty_list_start_dparam_TEllipsis_ = Obj.magic _2 in
+        let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
-        let _v : (
-# 115 "parser_cocci_menhir.mly"
-      (Ast0_cocci.rule)
-# 21004 "parser_cocci_menhir.ml"
-        ) = 
-# 155 "parser_cocci_menhir.mly"
-                     ( m )
-# 21008 "parser_cocci_menhir.ml"
+        let _v : 'tv_nonempty_list_start_dparam_TEllipsis_ = 
+# 1762 "parser_cocci_menhir.mly"
+                                            ( _2 )
+# 22778 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21017,18 +22787,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
           MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = _1;
-          MenhirLib.EngineTypes.startp = _startpos__1_;
-          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.semv = d;
+          MenhirLib.EngineTypes.startp = _startpos_d_;
+          MenhirLib.EngineTypes.endp = _endpos_d_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let _1 : 'tv_fundecl = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__1_ in
-        let _v : 'tv_minus_start = 
-# 1777 "parser_cocci_menhir.mly"
-                         ( [Ast0.wrap(Ast0.DECL(_1))] )
-# 21032 "parser_cocci_menhir.ml"
+        let d : (
+# 76 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 22799 "parser_cocci_menhir.ml"
+        ) = Obj.magic d in
+        let _startpos = _startpos_d_ in
+        let _endpos = _endpos_d_ in
+        let _v : 'tv_nonempty_list_start_dparam_TEllipsis_ = 
+# 1763 "parser_cocci_menhir.mly"
+           ( fun build_dots build_comma -> [(build_dots "..." d)] )
+# 22806 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21040,19 +22814,34 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = _1;
-          MenhirLib.EngineTypes.startp = _startpos__1_;
-          MenhirLib.EngineTypes.endp = _endpos__1_;
-          MenhirLib.EngineTypes.next = _menhir_stack;
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = d;
+            MenhirLib.EngineTypes.startp = _startpos_d_;
+            MenhirLib.EngineTypes.endp = _endpos_d_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
           } = _menhir_stack in
-        let _1 : 'tv_ctype = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__1_ in
-        let _v : 'tv_minus_start = 
-# 1778 "parser_cocci_menhir.mly"
-                         ( [Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.Ty(_1))))] )
-# 21056 "parser_cocci_menhir.ml"
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 22832 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let d : (
+# 76 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 22837 "parser_cocci_menhir.ml"
+        ) = Obj.magic d in
+        let _startpos = _startpos_d_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_nonempty_list_start_dparam_TEllipsis_ = 
+# 1765 "parser_cocci_menhir.mly"
+      ( fun build_dots build_comma ->
+       [(build_dots "..." d);Ast0.wrap(build_comma(P.clt2mcode "," _2))] )
+# 22845 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21064,19 +22853,42 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = _1;
-          MenhirLib.EngineTypes.startp = _startpos__1_;
-          MenhirLib.EngineTypes.endp = _endpos__1_;
-          MenhirLib.EngineTypes.next = _menhir_stack;
+          MenhirLib.EngineTypes.semv = r;
+          MenhirLib.EngineTypes.startp = _startpos_r_;
+          MenhirLib.EngineTypes.endp = _endpos_r_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = _2;
+            MenhirLib.EngineTypes.startp = _startpos__2_;
+            MenhirLib.EngineTypes.endp = _endpos__2_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = d;
+              MenhirLib.EngineTypes.startp = _startpos_d_;
+              MenhirLib.EngineTypes.endp = _endpos_d_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
+            };
           } = _menhir_stack in
-        let _1 : 'tv_top_init = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__1_ in
-        let _v : 'tv_minus_start = 
-# 1779 "parser_cocci_menhir.mly"
-                    ( [Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.TopInit(_1))))] )
-# 21080 "parser_cocci_menhir.ml"
+        let r : 'tv_continue_list_dparam_TEllipsis_ = Obj.magic r in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 22877 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let d : (
+# 76 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 22882 "parser_cocci_menhir.ml"
+        ) = Obj.magic d in
+        let _startpos = _startpos_d_ in
+        let _endpos = _endpos_r_ in
+        let _v : 'tv_nonempty_list_start_dparam_TEllipsis_ = 
+# 1768 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      (build_dots "..." d)::
+      (Ast0.wrap(build_comma(P.clt2mcode "," _2)))::
+      (r build_dots build_comma) )
+# 22892 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21094,13 +22906,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos__1_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let _1 : 'tv_toplevel_seq_startne_toplevel_after_dots_init_ = Obj.magic _1 in
+        let _1 : 'tv_enum_decl_one = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
-        let _v : 'tv_minus_start = 
-# 1781 "parser_cocci_menhir.mly"
-    ( List.map (function x -> Ast0.wrap(Ast0.OTHER(x))) _1 )
-# 21104 "parser_cocci_menhir.ml"
+        let _v : 'tv_nonempty_list_start_enum_decl_one_edots_when_TEllipsis_enum_decl_one__ = 
+# 1754 "parser_cocci_menhir.mly"
+       ( fun build_dots build_comma -> [_1] )
+# 22916 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21112,29 +22924,30 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.semv = b;
-          MenhirLib.EngineTypes.startp = _startpos_b_;
-          MenhirLib.EngineTypes.endp = _endpos_b_;
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
           MenhirLib.EngineTypes.next = {
             MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = a;
-            MenhirLib.EngineTypes.startp = _startpos_a_;
-            MenhirLib.EngineTypes.endp = _endpos_a_;
+            MenhirLib.EngineTypes.semv = _1;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
             MenhirLib.EngineTypes.next = _menhir_stack;
             };
           } = _menhir_stack in
-        let b : 'tv_ctype = Obj.magic b in
-        let a : (
-# 56 "parser_cocci_menhir.mly"
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 21131 "parser_cocci_menhir.ml"
-        ) = Obj.magic a in
-        let _startpos = _startpos_a_ in
-        let _endpos = _endpos_b_ in
-        let _v : 'tv_mzl_ctype_ = 
-# 1972 "parser_cocci_menhir.mly"
-                 ( (P.clt2mcode "|" a, b) )
-# 21138 "parser_cocci_menhir.ml"
+# 22942 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_enum_decl_one = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_nonempty_list_start_enum_decl_one_edots_when_TEllipsis_enum_decl_one__ = 
+# 1756 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      _1::[Ast0.wrap(build_comma(P.clt2mcode "," _2))] )
+# 22951 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21146,29 +22959,37 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.semv = b;
-          MenhirLib.EngineTypes.startp = _startpos_b_;
-          MenhirLib.EngineTypes.endp = _endpos_b_;
+          MenhirLib.EngineTypes.semv = _3;
+          MenhirLib.EngineTypes.startp = _startpos__3_;
+          MenhirLib.EngineTypes.endp = _endpos__3_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = a;
-            MenhirLib.EngineTypes.startp = _startpos_a_;
-            MenhirLib.EngineTypes.endp = _endpos_a_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
+            MenhirLib.EngineTypes.semv = _2;
+            MenhirLib.EngineTypes.startp = _startpos__2_;
+            MenhirLib.EngineTypes.endp = _endpos__2_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = _1;
+              MenhirLib.EngineTypes.startp = _startpos__1_;
+              MenhirLib.EngineTypes.endp = _endpos__1_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
             };
           } = _menhir_stack in
-        let b : 'tv_eexpr = Obj.magic b in
-        let a : (
-# 56 "parser_cocci_menhir.mly"
+        let _3 : 'tv_nonempty_list_start_enum_decl_one_edots_when_TEllipsis_enum_decl_one__ = Obj.magic _3 in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 21165 "parser_cocci_menhir.ml"
-        ) = Obj.magic a in
-        let _startpos = _startpos_a_ in
-        let _endpos = _endpos_b_ in
-        let _v : 'tv_mzl_eexpr_ = 
-# 1972 "parser_cocci_menhir.mly"
-                 ( (P.clt2mcode "|" a, b) )
-# 21172 "parser_cocci_menhir.ml"
+# 22983 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_enum_decl_one = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__3_ in
+        let _v : 'tv_nonempty_list_start_enum_decl_one_edots_when_TEllipsis_enum_decl_one__ = 
+# 1759 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      _1::(Ast0.wrap(build_comma(P.clt2mcode "," _2)))::
+      (_3 build_dots build_comma) )
+# 22993 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21180,29 +23001,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.semv = b;
-          MenhirLib.EngineTypes.startp = _startpos_b_;
-          MenhirLib.EngineTypes.endp = _endpos_b_;
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
           MenhirLib.EngineTypes.next = {
             MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = a;
-            MenhirLib.EngineTypes.startp = _startpos_a_;
-            MenhirLib.EngineTypes.endp = _endpos_a_;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
             MenhirLib.EngineTypes.next = _menhir_stack;
             };
           } = _menhir_stack in
-        let b : 'tv_fun_after_dots_or = Obj.magic b in
-        let a : (
-# 56 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 21199 "parser_cocci_menhir.ml"
-        ) = Obj.magic a in
-        let _startpos = _startpos_a_ in
-        let _endpos = _endpos_b_ in
-        let _v : 'tv_mzl_fun_after_dots_or_ = 
-# 1972 "parser_cocci_menhir.mly"
-                 ( (P.clt2mcode "|" a, b) )
-# 21206 "parser_cocci_menhir.ml"
+        let _2 : 'tv_nonempty_list_start_enum_decl_one_edots_when_TEllipsis_enum_decl_one__ = Obj.magic _2 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_nonempty_list_start_enum_decl_one_edots_when_TEllipsis_enum_decl_one__ = 
+# 1762 "parser_cocci_menhir.mly"
+                                            ( _2 )
+# 23021 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21214,29 +23029,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.semv = b;
-          MenhirLib.EngineTypes.startp = _startpos_b_;
-          MenhirLib.EngineTypes.endp = _endpos_b_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = a;
-            MenhirLib.EngineTypes.startp = _startpos_a_;
-            MenhirLib.EngineTypes.endp = _endpos_a_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = d;
+          MenhirLib.EngineTypes.startp = _startpos_d_;
+          MenhirLib.EngineTypes.endp = _endpos_d_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let b : 'tv_fun_start = Obj.magic b in
-        let a : (
-# 56 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 21233 "parser_cocci_menhir.ml"
-        ) = Obj.magic a in
-        let _startpos = _startpos_a_ in
-        let _endpos = _endpos_b_ in
-        let _v : 'tv_mzl_fun_start_ = 
-# 1972 "parser_cocci_menhir.mly"
-                 ( (P.clt2mcode "|" a, b) )
-# 21240 "parser_cocci_menhir.ml"
+        let d : 'tv_edots_when_TEllipsis_enum_decl_one_ = Obj.magic d in
+        let _startpos = _startpos_d_ in
+        let _endpos = _endpos_d_ in
+        let _v : 'tv_nonempty_list_start_enum_decl_one_edots_when_TEllipsis_enum_decl_one__ = 
+# 1763 "parser_cocci_menhir.mly"
+           ( fun build_dots build_comma -> [(build_dots "..." d)] )
+# 23045 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21248,29 +23053,30 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.semv = b;
-          MenhirLib.EngineTypes.startp = _startpos_b_;
-          MenhirLib.EngineTypes.endp = _endpos_b_;
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
           MenhirLib.EngineTypes.next = {
             MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = a;
-            MenhirLib.EngineTypes.startp = _startpos_a_;
-            MenhirLib.EngineTypes.endp = _endpos_a_;
+            MenhirLib.EngineTypes.semv = d;
+            MenhirLib.EngineTypes.startp = _startpos_d_;
+            MenhirLib.EngineTypes.endp = _endpos_d_;
             MenhirLib.EngineTypes.next = _menhir_stack;
             };
           } = _menhir_stack in
-        let b : 'tv_rule_elem_statement = Obj.magic b in
-        let a : (
-# 56 "parser_cocci_menhir.mly"
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 21267 "parser_cocci_menhir.ml"
-        ) = Obj.magic a in
-        let _startpos = _startpos_a_ in
-        let _endpos = _endpos_b_ in
-        let _v : 'tv_mzl_rule_elem_statement_ = 
-# 1972 "parser_cocci_menhir.mly"
-                 ( (P.clt2mcode "|" a, b) )
-# 21274 "parser_cocci_menhir.ml"
+# 23071 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let d : 'tv_edots_when_TEllipsis_enum_decl_one_ = Obj.magic d in
+        let _startpos = _startpos_d_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_nonempty_list_start_enum_decl_one_edots_when_TEllipsis_enum_decl_one__ = 
+# 1765 "parser_cocci_menhir.mly"
+      ( fun build_dots build_comma ->
+       [(build_dots "..." d);Ast0.wrap(build_comma(P.clt2mcode "," _2))] )
+# 23080 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21282,29 +23088,38 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.semv = b;
-          MenhirLib.EngineTypes.startp = _startpos_b_;
-          MenhirLib.EngineTypes.endp = _endpos_b_;
+          MenhirLib.EngineTypes.semv = r;
+          MenhirLib.EngineTypes.startp = _startpos_r_;
+          MenhirLib.EngineTypes.endp = _endpos_r_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = a;
-            MenhirLib.EngineTypes.startp = _startpos_a_;
-            MenhirLib.EngineTypes.endp = _endpos_a_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
+            MenhirLib.EngineTypes.semv = _2;
+            MenhirLib.EngineTypes.startp = _startpos__2_;
+            MenhirLib.EngineTypes.endp = _endpos__2_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = d;
+              MenhirLib.EngineTypes.startp = _startpos_d_;
+              MenhirLib.EngineTypes.endp = _endpos_d_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
             };
           } = _menhir_stack in
-        let b : 'tv_statement = Obj.magic b in
-        let a : (
-# 56 "parser_cocci_menhir.mly"
+        let r : 'tv_continue_list_enum_decl_one_edots_when_TEllipsis_enum_decl_one__ = Obj.magic r in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 21301 "parser_cocci_menhir.ml"
-        ) = Obj.magic a in
-        let _startpos = _startpos_a_ in
-        let _endpos = _endpos_b_ in
-        let _v : 'tv_mzl_statement_ = 
-# 1972 "parser_cocci_menhir.mly"
-                 ( (P.clt2mcode "|" a, b) )
-# 21308 "parser_cocci_menhir.ml"
+# 23112 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let d : 'tv_edots_when_TEllipsis_enum_decl_one_ = Obj.magic d in
+        let _startpos = _startpos_d_ in
+        let _endpos = _endpos_r_ in
+        let _v : 'tv_nonempty_list_start_enum_decl_one_edots_when_TEllipsis_enum_decl_one__ = 
+# 1768 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      (build_dots "..." d)::
+      (Ast0.wrap(build_comma(P.clt2mcode "," _2)))::
+      (r build_dots build_comma) )
+# 23123 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21322,98 +23137,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos__1_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let _1 : 'tv_decl = Obj.magic _1 in
+        let _1 : 'tv_initialize2 = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
-        let _v : 'tv_name_opt_decl = 
-# 853 "parser_cocci_menhir.mly"
-            ( _1 )
-# 21332 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = rp1;
-          MenhirLib.EngineTypes.startp = _startpos_rp1_;
-          MenhirLib.EngineTypes.endp = _endpos_rp1_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = d;
-            MenhirLib.EngineTypes.startp = _startpos_d_;
-            MenhirLib.EngineTypes.endp = _endpos_d_;
-            MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.semv = lp1;
-              MenhirLib.EngineTypes.startp = _startpos_lp1_;
-              MenhirLib.EngineTypes.endp = _endpos_lp1_;
-              MenhirLib.EngineTypes.next = {
-                MenhirLib.EngineTypes.semv = rp;
-                MenhirLib.EngineTypes.startp = _startpos_rp_;
-                MenhirLib.EngineTypes.endp = _endpos_rp_;
-                MenhirLib.EngineTypes.next = {
-                  MenhirLib.EngineTypes.semv = s;
-                  MenhirLib.EngineTypes.startp = _startpos_s_;
-                  MenhirLib.EngineTypes.endp = _endpos_s_;
-                  MenhirLib.EngineTypes.next = {
-                    MenhirLib.EngineTypes.semv = lp;
-                    MenhirLib.EngineTypes.startp = _startpos_lp_;
-                    MenhirLib.EngineTypes.endp = _endpos_lp_;
-                    MenhirLib.EngineTypes.next = {
-                      MenhirLib.EngineTypes.state = _menhir_s;
-                      MenhirLib.EngineTypes.semv = t;
-                      MenhirLib.EngineTypes.startp = _startpos_t_;
-                      MenhirLib.EngineTypes.endp = _endpos_t_;
-                      MenhirLib.EngineTypes.next = _menhir_stack;
-                      };
-                    };
-                  };
-                };
-              };
-            };
-          } = _menhir_stack in
-        let rp1 : (
-# 56 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 21383 "parser_cocci_menhir.ml"
-        ) = Obj.magic rp1 in
-        let d : 'tv_decl_list_name_opt_decl_ = Obj.magic d in
-        let lp1 : (
-# 55 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 21389 "parser_cocci_menhir.ml"
-        ) = Obj.magic lp1 in
-        let rp : (
-# 56 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 21394 "parser_cocci_menhir.ml"
-        ) = Obj.magic rp in
-        let s : (
-# 78 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 21399 "parser_cocci_menhir.ml"
-        ) = Obj.magic s in
-        let lp : (
-# 55 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 21404 "parser_cocci_menhir.ml"
-        ) = Obj.magic lp in
-        let t : 'tv_ctype = Obj.magic t in
-        let _startpos = _startpos_t_ in
-        let _endpos = _endpos_rp1_ in
-        let _v : 'tv_name_opt_decl = 
-# 856 "parser_cocci_menhir.mly"
-        ( let fnptr =
-         Ast0.wrap
-           (Ast0.FunctionPointer
-              (t,P.clt2mcode "(" lp,P.clt2mcode "*" s,P.clt2mcode ")" rp,
-               P.clt2mcode "(" lp1,d,P.clt2mcode ")" rp1)) in
-       Ast0.wrap(Ast0.Param(fnptr, None)) )
-# 21417 "parser_cocci_menhir.ml"
+        let _v : 'tv_nonempty_list_start_initialize2_edots_when_TEllipsis_initialize__ = 
+# 1754 "parser_cocci_menhir.mly"
+       ( fun build_dots build_comma -> [_1] )
+# 23147 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21436,14 +23166,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             MenhirLib.EngineTypes.next = _menhir_stack;
             };
           } = _menhir_stack in
-        let _2 : 'tv_nest_after_stm = Obj.magic _2 in
-        let _1 : 'tv_decl_statement_expr = Obj.magic _1 in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 23173 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_initialize2 = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
-        let _v : 'tv_nest_after_dots = 
-# 1892 "parser_cocci_menhir.mly"
-                                     (_1@_2)
-# 21447 "parser_cocci_menhir.ml"
+        let _v : 'tv_nonempty_list_start_initialize2_edots_when_TEllipsis_initialize__ = 
+# 1756 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      _1::[Ast0.wrap(build_comma(P.clt2mcode "," _2))] )
+# 23182 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21455,23 +23190,37 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.semv = _2;
-          MenhirLib.EngineTypes.startp = _startpos__2_;
-          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.semv = _3;
+          MenhirLib.EngineTypes.startp = _startpos__3_;
+          MenhirLib.EngineTypes.endp = _endpos__3_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.startp = _startpos__1_;
-            MenhirLib.EngineTypes.endp = _endpos__1_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
+            MenhirLib.EngineTypes.semv = _2;
+            MenhirLib.EngineTypes.startp = _startpos__2_;
+            MenhirLib.EngineTypes.endp = _endpos__2_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = _1;
+              MenhirLib.EngineTypes.startp = _startpos__1_;
+              MenhirLib.EngineTypes.endp = _endpos__1_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
             };
           } = _menhir_stack in
-        let _2 : 'tv_nest_after_exp = Obj.magic _2 in
+        let _3 : 'tv_nonempty_list_start_initialize2_edots_when_TEllipsis_initialize__ = Obj.magic _3 in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 23214 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_initialize2 = Obj.magic _1 in
         let _startpos = _startpos__1_ in
-        let _endpos = _endpos__2_ in
-        let _v : 'tv_nest_after_dots = 
-# 1893 "parser_cocci_menhir.mly"
-                                (_2)
-# 21475 "parser_cocci_menhir.ml"
+        let _endpos = _endpos__3_ in
+        let _v : 'tv_nonempty_list_start_initialize2_edots_when_TEllipsis_initialize__ = 
+# 1759 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      _1::(Ast0.wrap(build_comma(P.clt2mcode "," _2)))::
+      (_3 build_dots build_comma) )
+# 23224 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21488,20 +23237,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos__2_;
           MenhirLib.EngineTypes.next = {
             MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = _1;
             MenhirLib.EngineTypes.startp = _startpos__1_;
             MenhirLib.EngineTypes.endp = _endpos__1_;
             MenhirLib.EngineTypes.next = _menhir_stack;
             };
           } = _menhir_stack in
-        let _2 : 'tv_nest_after_exp = Obj.magic _2 in
-        let _1 : 'tv_expr = Obj.magic _1 in
+        let _2 : 'tv_nonempty_list_start_initialize2_edots_when_TEllipsis_initialize__ = Obj.magic _2 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
-        let _v : 'tv_nest_after_dots = 
-# 1894 "parser_cocci_menhir.mly"
-                                ((Ast0.wrap(Ast0.Exp(_1)))::_2)
-# 21505 "parser_cocci_menhir.ml"
+        let _v : 'tv_nonempty_list_start_initialize2_edots_when_TEllipsis_initialize__ = 
+# 1762 "parser_cocci_menhir.mly"
+                                            ( _2 )
+# 23252 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21512,13 +23259,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           });
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
-        let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
-        let _endpos = _startpos in
-        let _v : 'tv_nest_after_exp = 
-# 1902 "parser_cocci_menhir.mly"
-                                ([])
-# 21522 "parser_cocci_menhir.ml"
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = d;
+          MenhirLib.EngineTypes.startp = _startpos_d_;
+          MenhirLib.EngineTypes.endp = _endpos_d_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let d : 'tv_edots_when_TEllipsis_initialize_ = Obj.magic d in
+        let _startpos = _startpos_d_ in
+        let _endpos = _endpos_d_ in
+        let _v : 'tv_nonempty_list_start_initialize2_edots_when_TEllipsis_initialize__ = 
+# 1763 "parser_cocci_menhir.mly"
+           ( fun build_dots build_comma -> [(build_dots "..." d)] )
+# 23276 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21535,20 +23289,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos__2_;
           MenhirLib.EngineTypes.next = {
             MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = _1;
-            MenhirLib.EngineTypes.startp = _startpos__1_;
-            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.semv = d;
+            MenhirLib.EngineTypes.startp = _startpos_d_;
+            MenhirLib.EngineTypes.endp = _endpos_d_;
             MenhirLib.EngineTypes.next = _menhir_stack;
             };
           } = _menhir_stack in
-        let _2 : 'tv_nest_after_dots = Obj.magic _2 in
-        let _1 : 'tv_stm_dots = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 23302 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let d : 'tv_edots_when_TEllipsis_initialize_ = Obj.magic d in
+        let _startpos = _startpos_d_ in
         let _endpos = _endpos__2_ in
-        let _v : 'tv_nest_after_exp = 
-# 1903 "parser_cocci_menhir.mly"
-                                (_1::_2)
-# 21552 "parser_cocci_menhir.ml"
+        let _v : 'tv_nonempty_list_start_initialize2_edots_when_TEllipsis_initialize__ = 
+# 1765 "parser_cocci_menhir.mly"
+      ( fun build_dots build_comma ->
+       [(build_dots "..." d);Ast0.wrap(build_comma(P.clt2mcode "," _2))] )
+# 23311 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21559,13 +23318,39 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           });
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
-        let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
-        let _endpos = _startpos in
-        let _v : 'tv_nest_after_stm = 
-# 1897 "parser_cocci_menhir.mly"
-                                ([])
-# 21569 "parser_cocci_menhir.ml"
+        let {
+          MenhirLib.EngineTypes.semv = r;
+          MenhirLib.EngineTypes.startp = _startpos_r_;
+          MenhirLib.EngineTypes.endp = _endpos_r_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = _2;
+            MenhirLib.EngineTypes.startp = _startpos__2_;
+            MenhirLib.EngineTypes.endp = _endpos__2_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = d;
+              MenhirLib.EngineTypes.startp = _startpos_d_;
+              MenhirLib.EngineTypes.endp = _endpos_d_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
+            };
+          } = _menhir_stack in
+        let r : 'tv_continue_list_initialize2_edots_when_TEllipsis_initialize__ = Obj.magic r in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 23343 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let d : 'tv_edots_when_TEllipsis_initialize_ = Obj.magic d in
+        let _startpos = _startpos_d_ in
+        let _endpos = _endpos_r_ in
+        let _v : 'tv_nonempty_list_start_initialize2_edots_when_TEllipsis_initialize__ = 
+# 1768 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      (build_dots "..." d)::
+      (Ast0.wrap(build_comma(P.clt2mcode "," _2)))::
+      (r build_dots build_comma) )
+# 23354 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21577,25 +23362,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.semv = _2;
-          MenhirLib.EngineTypes.startp = _startpos__2_;
-          MenhirLib.EngineTypes.endp = _endpos__2_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = _1;
-            MenhirLib.EngineTypes.startp = _startpos__1_;
-            MenhirLib.EngineTypes.endp = _endpos__1_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let _2 : 'tv_nest_after_dots = Obj.magic _2 in
-        let _1 : 'tv_stm_dots = Obj.magic _1 in
+        let _1 : 'tv_one_dec_decl_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
-        let _endpos = _endpos__2_ in
-        let _v : 'tv_nest_after_stm = 
-# 1898 "parser_cocci_menhir.mly"
-                                (_1::_2)
-# 21599 "parser_cocci_menhir.ml"
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_nonempty_list_start_one_dec_decl__TEllipsis_ = 
+# 1754 "parser_cocci_menhir.mly"
+       ( fun build_dots build_comma -> [_1] )
+# 23378 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21618,14 +23397,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             MenhirLib.EngineTypes.next = _menhir_stack;
             };
           } = _menhir_stack in
-        let _2 : 'tv_nest_after_stm = Obj.magic _2 in
-        let _1 : 'tv_decl_statement = Obj.magic _1 in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 23404 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_one_dec_decl_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
-        let _v : 'tv_nest_after_stm = 
-# 1899 "parser_cocci_menhir.mly"
-                                (_1@_2)
-# 21629 "parser_cocci_menhir.ml"
+        let _v : 'tv_nonempty_list_start_one_dec_decl__TEllipsis_ = 
+# 1756 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      _1::[Ast0.wrap(build_comma(P.clt2mcode "," _2))] )
+# 23413 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21637,13 +23421,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.semv = c;
-          MenhirLib.EngineTypes.startp = _startpos_c_;
-          MenhirLib.EngineTypes.endp = _endpos_c_;
+          MenhirLib.EngineTypes.semv = _3;
+          MenhirLib.EngineTypes.startp = _startpos__3_;
+          MenhirLib.EngineTypes.endp = _endpos__3_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = e;
-            MenhirLib.EngineTypes.startp = _startpos_e_;
-            MenhirLib.EngineTypes.endp = _endpos_e_;
+            MenhirLib.EngineTypes.semv = _2;
+            MenhirLib.EngineTypes.startp = _startpos__2_;
+            MenhirLib.EngineTypes.endp = _endpos__2_;
             MenhirLib.EngineTypes.next = {
               MenhirLib.EngineTypes.state = _menhir_s;
               MenhirLib.EngineTypes.semv = _1;
@@ -21653,25 +23437,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               };
             };
           } = _menhir_stack in
-        let c : (
-# 52 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 21660 "parser_cocci_menhir.ml"
-        ) = Obj.magic c in
-        let e : 'tv_expr_dots_TEllipsis_ = Obj.magic e in
-        let _1 : (
-# 52 "parser_cocci_menhir.mly"
+        let _3 : 'tv_nonempty_list_start_one_dec_decl__TEllipsis_ = Obj.magic _3 in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 21666 "parser_cocci_menhir.ml"
-        ) = Obj.magic _1 in
+# 23445 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_one_dec_decl_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
-        let _endpos = _endpos_c_ in
-        let _v : 'tv_nest_expressions = 
-# 1248 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.NestExpr(P.clt2mcode "<..." _1,
-                             Ast0.wrap(Ast0.DOTS(e (P.mkedots "..."))),
-                             P.clt2mcode "...>" c, None, false)) )
-# 21675 "parser_cocci_menhir.ml"
+        let _endpos = _endpos__3_ in
+        let _v : 'tv_nonempty_list_start_one_dec_decl__TEllipsis_ = 
+# 1759 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      _1::(Ast0.wrap(build_comma(P.clt2mcode "," _2)))::
+      (_3 build_dots build_comma) )
+# 23455 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21683,41 +23463,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.semv = c;
-          MenhirLib.EngineTypes.startp = _startpos_c_;
-          MenhirLib.EngineTypes.endp = _endpos_c_;
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
           MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.semv = e;
-            MenhirLib.EngineTypes.startp = _startpos_e_;
-            MenhirLib.EngineTypes.endp = _endpos_e_;
-            MenhirLib.EngineTypes.next = {
-              MenhirLib.EngineTypes.state = _menhir_s;
-              MenhirLib.EngineTypes.semv = _1;
-              MenhirLib.EngineTypes.startp = _startpos__1_;
-              MenhirLib.EngineTypes.endp = _endpos__1_;
-              MenhirLib.EngineTypes.next = _menhir_stack;
-              };
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
             };
           } = _menhir_stack in
-        let c : (
-# 52 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 21706 "parser_cocci_menhir.ml"
-        ) = Obj.magic c in
-        let e : 'tv_expr_dots_TEllipsis_ = Obj.magic e in
-        let _1 : (
-# 52 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 21712 "parser_cocci_menhir.ml"
-        ) = Obj.magic _1 in
+        let _2 : 'tv_nonempty_list_start_one_dec_decl__TEllipsis_ = Obj.magic _2 in
         let _startpos = _startpos__1_ in
-        let _endpos = _endpos_c_ in
-        let _v : 'tv_nest_expressions = 
-# 1252 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.NestExpr(P.clt2mcode "<+..." _1,
-                             Ast0.wrap(Ast0.DOTS(e (P.mkedots "..."))),
-                             P.clt2mcode "...+>" c, None, true)) )
-# 21721 "parser_cocci_menhir.ml"
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_nonempty_list_start_one_dec_decl__TEllipsis_ = 
+# 1762 "parser_cocci_menhir.mly"
+                                            ( _2 )
+# 23483 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21730,18 +23492,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
           MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = _1;
-          MenhirLib.EngineTypes.startp = _startpos__1_;
-          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.semv = d;
+          MenhirLib.EngineTypes.startp = _startpos_d_;
+          MenhirLib.EngineTypes.endp = _endpos_d_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let _1 : 'tv_nest_after_dots = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__1_ in
-        let _v : 'tv_nest_start = 
-# 1889 "parser_cocci_menhir.mly"
-                   ( Ast0.wrap(Ast0.DOTS(_1)) )
-# 21745 "parser_cocci_menhir.ml"
+        let d : (
+# 76 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 23504 "parser_cocci_menhir.ml"
+        ) = Obj.magic d in
+        let _startpos = _startpos_d_ in
+        let _endpos = _endpos_d_ in
+        let _v : 'tv_nonempty_list_start_one_dec_decl__TEllipsis_ = 
+# 1763 "parser_cocci_menhir.mly"
+           ( fun build_dots build_comma -> [(build_dots "..." d)] )
+# 23511 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21753,21 +23519,105 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = d;
+            MenhirLib.EngineTypes.startp = _startpos_d_;
+            MenhirLib.EngineTypes.endp = _endpos_d_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 23537 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let d : (
+# 76 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 23542 "parser_cocci_menhir.ml"
+        ) = Obj.magic d in
+        let _startpos = _startpos_d_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_nonempty_list_start_one_dec_decl__TEllipsis_ = 
+# 1765 "parser_cocci_menhir.mly"
+      ( fun build_dots build_comma ->
+       [(build_dots "..." d);Ast0.wrap(build_comma(P.clt2mcode "," _2))] )
+# 23550 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = r;
+          MenhirLib.EngineTypes.startp = _startpos_r_;
+          MenhirLib.EngineTypes.endp = _endpos_r_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = _2;
+            MenhirLib.EngineTypes.startp = _startpos__2_;
+            MenhirLib.EngineTypes.endp = _endpos__2_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = d;
+              MenhirLib.EngineTypes.startp = _startpos_d_;
+              MenhirLib.EngineTypes.endp = _endpos_d_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
+            };
+          } = _menhir_stack in
+        let r : 'tv_continue_list_one_dec_decl__TEllipsis_ = Obj.magic r in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 23582 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let d : (
+# 76 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 23587 "parser_cocci_menhir.ml"
+        ) = Obj.magic d in
+        let _startpos = _startpos_d_ in
+        let _endpos = _endpos_r_ in
+        let _v : 'tv_nonempty_list_start_one_dec_decl__TEllipsis_ = 
+# 1768 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      (build_dots "..." d)::
+      (Ast0.wrap(build_comma(P.clt2mcode "," _2)))::
+      (r build_dots build_comma) )
+# 23597 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
           MenhirLib.EngineTypes.startp = _startpos__1_;
           MenhirLib.EngineTypes.endp = _endpos__1_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
+        let _1 : 'tv_one_dec_name_opt_decl_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
-        let _v : (
-# 149 "parser_cocci_menhir.mly"
-      (unit)
-# 21767 "parser_cocci_menhir.ml"
-        ) = 
-# 2039 "parser_cocci_menhir.mly"
-                    ( () )
-# 21771 "parser_cocci_menhir.ml"
+        let _v : 'tv_nonempty_list_start_one_dec_name_opt_decl__TEllipsis_ = 
+# 1754 "parser_cocci_menhir.mly"
+       ( fun build_dots build_comma -> [_1] )
+# 23621 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21779,25 +23629,30 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
+          MenhirLib.EngineTypes.semv = _2;
           MenhirLib.EngineTypes.startp = _startpos__2_;
           MenhirLib.EngineTypes.endp = _endpos__2_;
           MenhirLib.EngineTypes.next = {
             MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = _1;
             MenhirLib.EngineTypes.startp = _startpos__1_;
             MenhirLib.EngineTypes.endp = _endpos__1_;
             MenhirLib.EngineTypes.next = _menhir_stack;
             };
           } = _menhir_stack in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 23647 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_one_dec_name_opt_decl_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
-        let _v : (
-# 149 "parser_cocci_menhir.mly"
-      (unit)
-# 21797 "parser_cocci_menhir.ml"
-        ) = 
-# 2040 "parser_cocci_menhir.mly"
-                    ( () )
-# 21801 "parser_cocci_menhir.ml"
+        let _v : 'tv_nonempty_list_start_one_dec_name_opt_decl__TEllipsis_ = 
+# 1756 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      _1::[Ast0.wrap(build_comma(P.clt2mcode "," _2))] )
+# 23656 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21809,21 +23664,37 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.startp = _startpos__1_;
-          MenhirLib.EngineTypes.endp = _endpos__1_;
-          MenhirLib.EngineTypes.next = _menhir_stack;
+          MenhirLib.EngineTypes.semv = _3;
+          MenhirLib.EngineTypes.startp = _startpos__3_;
+          MenhirLib.EngineTypes.endp = _endpos__3_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = _2;
+            MenhirLib.EngineTypes.startp = _startpos__2_;
+            MenhirLib.EngineTypes.endp = _endpos__2_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = _1;
+              MenhirLib.EngineTypes.startp = _startpos__1_;
+              MenhirLib.EngineTypes.endp = _endpos__1_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
+            };
           } = _menhir_stack in
+        let _3 : 'tv_nonempty_list_start_one_dec_name_opt_decl__TEllipsis_ = Obj.magic _3 in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 23688 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let _1 : 'tv_one_dec_name_opt_decl_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
-        let _endpos = _endpos__1_ in
-        let _v : (
-# 149 "parser_cocci_menhir.mly"
-      (unit)
-# 21823 "parser_cocci_menhir.ml"
-        ) = 
-# 2041 "parser_cocci_menhir.mly"
-                    ( () )
-# 21827 "parser_cocci_menhir.ml"
+        let _endpos = _endpos__3_ in
+        let _v : 'tv_nonempty_list_start_one_dec_name_opt_decl__TEllipsis_ = 
+# 1759 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      _1::(Ast0.wrap(build_comma(P.clt2mcode "," _2)))::
+      (_3 build_dots build_comma) )
+# 23698 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21835,26 +23706,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.semv = dg;
-          MenhirLib.EngineTypes.startp = _startpos_dg_;
-          MenhirLib.EngineTypes.endp = _endpos_dg_;
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
           MenhirLib.EngineTypes.next = {
             MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = g;
-            MenhirLib.EngineTypes.startp = _startpos_g_;
-            MenhirLib.EngineTypes.endp = _endpos_g_;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
             MenhirLib.EngineTypes.next = _menhir_stack;
             };
           } = _menhir_stack in
-        let dg : 'tv_list_pair_edots_when_TEllipsis_eexpr__dexpr__ = Obj.magic dg in
-        let g : 'tv_dexpr = Obj.magic g in
-        let _startpos = _startpos_g_ in
-        let _endpos = _endpos_dg_ in
-        let _v : 'tv_no_dot_start_end_dexpr_edots_when_TEllipsis_eexpr__ = 
-# 1418 "parser_cocci_menhir.mly"
-  ( function dot_builder ->
-      g :: (List.concat(List.map (function (d,g) -> [dot_builder d;g]) dg)) )
-# 21858 "parser_cocci_menhir.ml"
+        let _2 : 'tv_nonempty_list_start_one_dec_name_opt_decl__TEllipsis_ = Obj.magic _2 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_nonempty_list_start_one_dec_name_opt_decl__TEllipsis_ = 
+# 1762 "parser_cocci_menhir.mly"
+                                            ( _2 )
+# 23726 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21867,22 +23735,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
           MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = x;
-          MenhirLib.EngineTypes.startp = _startpos_x_;
-          MenhirLib.EngineTypes.endp = _endpos_x_;
+          MenhirLib.EngineTypes.semv = d;
+          MenhirLib.EngineTypes.startp = _startpos_d_;
+          MenhirLib.EngineTypes.endp = _endpos_d_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let x : (
-# 78 "parser_cocci_menhir.mly"
+        let d : (
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
-# 21879 "parser_cocci_menhir.ml"
-        ) = Obj.magic x in
-        let _startpos = _startpos_x_ in
-        let _endpos = _endpos_x_ in
-        let _v : 'tv_nonempty_list_TMul_ = 
-# 124 "standard.mly"
-    ( [ x ] )
-# 21886 "parser_cocci_menhir.ml"
+# 23747 "parser_cocci_menhir.ml"
+        ) = Obj.magic d in
+        let _startpos = _startpos_d_ in
+        let _endpos = _endpos_d_ in
+        let _v : 'tv_nonempty_list_start_one_dec_name_opt_decl__TEllipsis_ = 
+# 1763 "parser_cocci_menhir.mly"
+           ( fun build_dots build_comma -> [(build_dots "..." d)] )
+# 23754 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21894,29 +23762,81 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       (fun _menhir_env ->
         let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
         let {
-          MenhirLib.EngineTypes.semv = xs;
-          MenhirLib.EngineTypes.startp = _startpos_xs_;
-          MenhirLib.EngineTypes.endp = _endpos_xs_;
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
           MenhirLib.EngineTypes.next = {
             MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = x;
-            MenhirLib.EngineTypes.startp = _startpos_x_;
-            MenhirLib.EngineTypes.endp = _endpos_x_;
+            MenhirLib.EngineTypes.semv = d;
+            MenhirLib.EngineTypes.startp = _startpos_d_;
+            MenhirLib.EngineTypes.endp = _endpos_d_;
             MenhirLib.EngineTypes.next = _menhir_stack;
             };
           } = _menhir_stack in
-        let xs : 'tv_nonempty_list_TMul_ = Obj.magic xs in
-        let x : (
-# 78 "parser_cocci_menhir.mly"
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 21913 "parser_cocci_menhir.ml"
-        ) = Obj.magic x in
-        let _startpos = _startpos_x_ in
-        let _endpos = _endpos_xs_ in
-        let _v : 'tv_nonempty_list_TMul_ = 
-# 126 "standard.mly"
-    ( x :: xs )
-# 21920 "parser_cocci_menhir.ml"
+# 23780 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let d : (
+# 76 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 23785 "parser_cocci_menhir.ml"
+        ) = Obj.magic d in
+        let _startpos = _startpos_d_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_nonempty_list_start_one_dec_name_opt_decl__TEllipsis_ = 
+# 1765 "parser_cocci_menhir.mly"
+      ( fun build_dots build_comma ->
+       [(build_dots "..." d);Ast0.wrap(build_comma(P.clt2mcode "," _2))] )
+# 23793 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = r;
+          MenhirLib.EngineTypes.startp = _startpos_r_;
+          MenhirLib.EngineTypes.endp = _endpos_r_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = _2;
+            MenhirLib.EngineTypes.startp = _startpos__2_;
+            MenhirLib.EngineTypes.endp = _endpos__2_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.state = _menhir_s;
+              MenhirLib.EngineTypes.semv = d;
+              MenhirLib.EngineTypes.startp = _startpos_d_;
+              MenhirLib.EngineTypes.endp = _endpos_d_;
+              MenhirLib.EngineTypes.next = _menhir_stack;
+              };
+            };
+          } = _menhir_stack in
+        let r : 'tv_continue_list_one_dec_name_opt_decl__TEllipsis_ = Obj.magic r in
+        let _2 : (
+# 110 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 23825 "parser_cocci_menhir.ml"
+        ) = Obj.magic _2 in
+        let d : (
+# 76 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 23830 "parser_cocci_menhir.ml"
+        ) = Obj.magic d in
+        let _startpos = _startpos_d_ in
+        let _endpos = _endpos_r_ in
+        let _v : 'tv_nonempty_list_start_one_dec_name_opt_decl__TEllipsis_ = 
+# 1768 "parser_cocci_menhir.mly"
+    ( fun build_dots build_comma ->
+      (build_dots "..." d)::
+      (Ast0.wrap(build_comma(P.clt2mcode "," _2)))::
+      (r build_dots build_comma) )
+# 23840 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21942,13 +23862,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_i_ in
         let _v : 'tv_not_ceq = 
-# 1591 "parser_cocci_menhir.mly"
+# 1615 "parser_cocci_menhir.mly"
          ( (if !Data.in_iso
           then failwith "constraints not allowed in iso file");
           (if !Data.in_generating
           then failwith "constraints not allowed in a generated rule file");
           [i] )
-# 21952 "parser_cocci_menhir.ml"
+# 23872 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21982,13 +23902,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : 'tv_not_ceq = 
-# 1597 "parser_cocci_menhir.mly"
+# 1621 "parser_cocci_menhir.mly"
   ( (if !Data.in_iso
           then failwith "constraints not allowed in iso file");
           (if !Data.in_generating
           then failwith "constraints not allowed in a generated rule file");
           l )
-# 21992 "parser_cocci_menhir.ml"
+# 23912 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22010,9 +23930,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_ceq_ in
         let _endpos = _endpos_ceq_ in
         let _v : 'tv_not_ceq_or_sub = 
-# 1567 "parser_cocci_menhir.mly"
+# 1591 "parser_cocci_menhir.mly"
                   (Ast0.NotExpCstrt ceq)
-# 22016 "parser_cocci_menhir.ml"
+# 23936 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22034,9 +23954,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_s_ in
         let _endpos = _endpos_s_ in
         let _v : 'tv_not_ceq_or_sub = 
-# 1568 "parser_cocci_menhir.mly"
+# 1592 "parser_cocci_menhir.mly"
                   (Ast0.SubExpCstrt s)
-# 22040 "parser_cocci_menhir.ml"
+# 23960 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22062,14 +23982,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_i_ in
         let _v : 'tv_not_eqe = 
-# 1572 "parser_cocci_menhir.mly"
+# 1596 "parser_cocci_menhir.mly"
          ( (if !Data.in_iso
           then failwith "constraints not allowed in iso file");
           (if !Data.in_generating
           then failwith "constraints not allowed in a generated rule file");
           [Ast0.wrap(Ast0.Ident(Ast0.wrap(Ast0.Id(P.id2mcode i))))]
         )
-# 22073 "parser_cocci_menhir.ml"
+# 23993 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22103,7 +24023,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : 'tv_not_eqe = 
-# 1579 "parser_cocci_menhir.mly"
+# 1603 "parser_cocci_menhir.mly"
   ( (if !Data.in_iso
           then failwith "constraints not allowed in iso file");
           (if !Data.in_generating
@@ -22113,7 +24033,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
                Ast0.wrap(Ast0.Ident(Ast0.wrap(Ast0.Id(P.id2mcode i)))))
             l
         )
-# 22117 "parser_cocci_menhir.ml"
+# 24037 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22139,7 +24059,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_i_ in
         let _v : 'tv_not_eqid = 
-# 1529 "parser_cocci_menhir.mly"
+# 1553 "parser_cocci_menhir.mly"
          ( (if !Data.in_iso
           then failwith "constraints not allowed in iso file");
           (if !Data.in_generating
@@ -22153,7 +24073,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
                   (function mv -> Ast.MetaIdDecl(Ast.NONE,mv)) in
               Ast.IdNegIdSet([],[i])
           | (None,i) -> Ast.IdNegIdSet([i],[])) )
-# 22157 "parser_cocci_menhir.ml"
+# 24077 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22187,7 +24107,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : 'tv_not_eqid = 
-# 1543 "parser_cocci_menhir.mly"
+# 1567 "parser_cocci_menhir.mly"
   ( (if !Data.in_iso
           then failwith "constraints not allowed in iso file");
           (if !Data.in_generating
@@ -22205,7 +24125,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               ([],[]) l in
           Ast.IdNegIdSet(str,meta)
         )
-# 22209 "parser_cocci_menhir.ml"
+# 24129 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22231,7 +24151,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_i_ in
         let _v : 'tv_not_pos = 
-# 1635 "parser_cocci_menhir.mly"
+# 1659 "parser_cocci_menhir.mly"
          ( (if !Data.in_iso
           then failwith "constraints not allowed in iso file");
           (if !Data.in_generating
@@ -22240,7 +24160,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             P.check_inherited_constraint i
               (function mv -> Ast.MetaPosDecl(Ast.NONE,mv)) in
           [i] )
-# 22244 "parser_cocci_menhir.ml"
+# 24164 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22274,7 +24194,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : 'tv_not_pos = 
-# 1644 "parser_cocci_menhir.mly"
+# 1668 "parser_cocci_menhir.mly"
   ( (if !Data.in_iso
           then failwith "constraints not allowed in iso file");
           (if !Data.in_generating
@@ -22284,7 +24204,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               P.check_inherited_constraint i
                 (function mv -> Ast.MetaPosDecl(Ast.NONE,mv)))
             l )
-# 22288 "parser_cocci_menhir.ml"
+# 24208 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22306,9 +24226,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_one_dec_decl_ = 
-# 1714 "parser_cocci_menhir.mly"
+# 1729 "parser_cocci_menhir.mly"
         ( _1 )
-# 22312 "parser_cocci_menhir.ml"
+# 24232 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22327,14 +24247,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 45 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
        (Parse_aux.list_info)
-# 22333 "parser_cocci_menhir.ml"
+# 24253 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_one_dec_decl_ = 
-# 1716 "parser_cocci_menhir.mly"
+# 1731 "parser_cocci_menhir.mly"
     ( let (nm,lenname,pure,clt) = _1 in
     let nm = P.clt2mcode nm clt in
       let lenname =
@@ -22343,7 +24263,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
        | Ast.MetaLen nm -> Ast0.MetaListLen(P.clt2mcode nm clt)
        | Ast.CstLen n -> Ast0.CstListLen n in
     Ast0.wrap(Ast0.MetaParamList(nm,lenname,pure)) )
-# 22347 "parser_cocci_menhir.ml"
+# 24267 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22365,9 +24285,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_one_dec_name_opt_decl_ = 
-# 1714 "parser_cocci_menhir.mly"
+# 1729 "parser_cocci_menhir.mly"
         ( _1 )
-# 22371 "parser_cocci_menhir.ml"
+# 24291 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22386,14 +24306,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 45 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
        (Parse_aux.list_info)
-# 22392 "parser_cocci_menhir.ml"
+# 24312 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_one_dec_name_opt_decl_ = 
-# 1716 "parser_cocci_menhir.mly"
+# 1731 "parser_cocci_menhir.mly"
     ( let (nm,lenname,pure,clt) = _1 in
     let nm = P.clt2mcode nm clt in
       let lenname =
@@ -22402,7 +24322,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
        | Ast.MetaLen nm -> Ast0.MetaListLen(P.clt2mcode nm clt)
        | Ast.CstLen n -> Ast0.CstListLen n in
     Ast0.wrap(Ast0.MetaParamList(nm,lenname,pure)) )
-# 22406 "parser_cocci_menhir.ml"
+# 24326 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22426,17 +24346,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22432 "parser_cocci_menhir.ml"
+# 24352 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let t : 'tv_ctype = Obj.magic t in
         let _startpos = _startpos_t_ in
         let _endpos = _endpos_pv_ in
         let _v : 'tv_one_decl_var = 
-# 1032 "parser_cocci_menhir.mly"
+# 1080 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.TyDecl(t,P.clt2mcode ";" pv)) )
-# 22440 "parser_cocci_menhir.ml"
+# 24360 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22455,16 +24375,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 44 "parser_cocci_menhir.mly"
+# 68 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 22461 "parser_cocci_menhir.ml"
+# 24381 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_one_decl_var = 
-# 1033 "parser_cocci_menhir.mly"
+# 1081 "parser_cocci_menhir.mly"
               ( P.meta_decl _1 )
-# 22468 "parser_cocci_menhir.ml"
+# 24388 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22493,9 +24413,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22499 "parser_cocci_menhir.ml"
+# 24419 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let d : 'tv_d_ident = Obj.magic d in
         let t : 'tv_ctype = Obj.magic t in
@@ -22505,14 +24425,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 22509 "parser_cocci_menhir.ml"
+# 24429 "parser_cocci_menhir.ml"
           
         in
         
-# 1035 "parser_cocci_menhir.mly"
+# 1083 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
         Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv)) )
-# 22516 "parser_cocci_menhir.ml"
+# 24436 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22546,9 +24466,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22552 "parser_cocci_menhir.ml"
+# 24472 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let d : 'tv_d_ident = Obj.magic d in
         let t : 'tv_ctype = Obj.magic t in
@@ -22560,14 +24480,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 22564 "parser_cocci_menhir.ml"
+# 24484 "parser_cocci_menhir.ml"
           
         in
         
-# 1035 "parser_cocci_menhir.mly"
+# 1083 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
         Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv)) )
-# 22571 "parser_cocci_menhir.ml"
+# 24491 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22589,9 +24509,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_f_ in
         let _endpos = _endpos_f_ in
         let _v : 'tv_one_decl_var = 
-# 1037 "parser_cocci_menhir.mly"
+# 1085 "parser_cocci_menhir.mly"
                ( f )
-# 22595 "parser_cocci_menhir.ml"
+# 24515 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22630,15 +24550,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22636 "parser_cocci_menhir.ml"
+# 24556 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22642 "parser_cocci_menhir.ml"
+# 24562 "parser_cocci_menhir.ml"
         ) = Obj.magic q in
         let d : 'tv_d_ident = Obj.magic d in
         let t : 'tv_ctype = Obj.magic t in
@@ -22648,14 +24568,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 22652 "parser_cocci_menhir.ml"
+# 24572 "parser_cocci_menhir.ml"
           
         in
         
-# 1039 "parser_cocci_menhir.mly"
+# 1087 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
       Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv)) )
-# 22659 "parser_cocci_menhir.ml"
+# 24579 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22699,15 +24619,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22705 "parser_cocci_menhir.ml"
+# 24625 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22711 "parser_cocci_menhir.ml"
+# 24631 "parser_cocci_menhir.ml"
         ) = Obj.magic q in
         let d : 'tv_d_ident = Obj.magic d in
         let t : 'tv_ctype = Obj.magic t in
@@ -22719,14 +24639,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 22723 "parser_cocci_menhir.ml"
+# 24643 "parser_cocci_menhir.ml"
           
         in
         
-# 1039 "parser_cocci_menhir.mly"
+# 1087 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
       Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv)) )
-# 22730 "parser_cocci_menhir.ml"
+# 24650 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22755,9 +24675,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22761 "parser_cocci_menhir.ml"
+# 24681 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let d : 'tv_d_ident = Obj.magic d in
         let i : 'tv_pure_ident = Obj.magic i in
@@ -22767,22 +24687,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 22771 "parser_cocci_menhir.ml"
+# 24691 "parser_cocci_menhir.ml"
           
         in
         let s =
           
 # 39 "standard.mly"
     ( None )
-# 22778 "parser_cocci_menhir.ml"
+# 24698 "parser_cocci_menhir.ml"
           
         in
         
-# 1044 "parser_cocci_menhir.mly"
+# 1092 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
         let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in
        Ast0.wrap(Ast0.UnInit(s,fn idtype,id,P.clt2mcode ";" pv)) )
-# 22786 "parser_cocci_menhir.ml"
+# 24706 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22816,9 +24736,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22822 "parser_cocci_menhir.ml"
+# 24742 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let d : 'tv_d_ident = Obj.magic d in
         let i : 'tv_pure_ident = Obj.magic i in
@@ -22830,22 +24750,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 22834 "parser_cocci_menhir.ml"
+# 24754 "parser_cocci_menhir.ml"
           
         in
         let s =
           
 # 39 "standard.mly"
     ( None )
-# 22841 "parser_cocci_menhir.ml"
+# 24761 "parser_cocci_menhir.ml"
           
         in
         
-# 1044 "parser_cocci_menhir.mly"
+# 1092 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
         let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in
        Ast0.wrap(Ast0.UnInit(s,fn idtype,id,P.clt2mcode ";" pv)) )
-# 22849 "parser_cocci_menhir.ml"
+# 24769 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22879,9 +24799,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22885 "parser_cocci_menhir.ml"
+# 24805 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let d : 'tv_d_ident = Obj.magic d in
         let i : 'tv_pure_ident = Obj.magic i in
@@ -22892,7 +24812,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 22896 "parser_cocci_menhir.ml"
+# 24816 "parser_cocci_menhir.ml"
           
         in
         let s =
@@ -22900,15 +24820,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 22904 "parser_cocci_menhir.ml"
+# 24824 "parser_cocci_menhir.ml"
           
         in
         
-# 1044 "parser_cocci_menhir.mly"
+# 1092 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
         let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in
        Ast0.wrap(Ast0.UnInit(s,fn idtype,id,P.clt2mcode ";" pv)) )
-# 22912 "parser_cocci_menhir.ml"
+# 24832 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22947,9 +24867,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22953 "parser_cocci_menhir.ml"
+# 24873 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let d : 'tv_d_ident = Obj.magic d in
         let i : 'tv_pure_ident = Obj.magic i in
@@ -22962,7 +24882,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 22966 "parser_cocci_menhir.ml"
+# 24886 "parser_cocci_menhir.ml"
           
         in
         let s =
@@ -22970,15 +24890,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 22974 "parser_cocci_menhir.ml"
+# 24894 "parser_cocci_menhir.ml"
           
         in
         
-# 1044 "parser_cocci_menhir.mly"
+# 1092 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
         let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in
        Ast0.wrap(Ast0.UnInit(s,fn idtype,id,P.clt2mcode ";" pv)) )
-# 22982 "parser_cocci_menhir.ml"
+# 24902 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23017,15 +24937,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23023 "parser_cocci_menhir.ml"
+# 24943 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23029 "parser_cocci_menhir.ml"
+# 24949 "parser_cocci_menhir.ml"
         ) = Obj.magic q in
         let d : 'tv_d_ident = Obj.magic d in
         let i : 'tv_pure_ident = Obj.magic i in
@@ -23035,24 +24955,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 23039 "parser_cocci_menhir.ml"
+# 24959 "parser_cocci_menhir.ml"
           
         in
         let s =
           
 # 39 "standard.mly"
     ( None )
-# 23046 "parser_cocci_menhir.ml"
+# 24966 "parser_cocci_menhir.ml"
           
         in
         
-# 1049 "parser_cocci_menhir.mly"
+# 1097 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
       !Data.add_type_name (P.id2name i);
       let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in
       Ast0.wrap(Ast0.Init(s,fn idtype,id,P.clt2mcode "=" q,e,
                           P.clt2mcode ";" pv)) )
-# 23056 "parser_cocci_menhir.ml"
+# 24976 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23096,15 +25016,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23102 "parser_cocci_menhir.ml"
+# 25022 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23108 "parser_cocci_menhir.ml"
+# 25028 "parser_cocci_menhir.ml"
         ) = Obj.magic q in
         let d : 'tv_d_ident = Obj.magic d in
         let i : 'tv_pure_ident = Obj.magic i in
@@ -23116,24 +25036,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 23120 "parser_cocci_menhir.ml"
+# 25040 "parser_cocci_menhir.ml"
           
         in
         let s =
           
 # 39 "standard.mly"
     ( None )
-# 23127 "parser_cocci_menhir.ml"
+# 25047 "parser_cocci_menhir.ml"
           
         in
         
-# 1049 "parser_cocci_menhir.mly"
+# 1097 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
       !Data.add_type_name (P.id2name i);
       let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in
       Ast0.wrap(Ast0.Init(s,fn idtype,id,P.clt2mcode "=" q,e,
                           P.clt2mcode ";" pv)) )
-# 23137 "parser_cocci_menhir.ml"
+# 25057 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23177,15 +25097,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23183 "parser_cocci_menhir.ml"
+# 25103 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23189 "parser_cocci_menhir.ml"
+# 25109 "parser_cocci_menhir.ml"
         ) = Obj.magic q in
         let d : 'tv_d_ident = Obj.magic d in
         let i : 'tv_pure_ident = Obj.magic i in
@@ -23196,7 +25116,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 23200 "parser_cocci_menhir.ml"
+# 25120 "parser_cocci_menhir.ml"
           
         in
         let s =
@@ -23204,17 +25124,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 23208 "parser_cocci_menhir.ml"
+# 25128 "parser_cocci_menhir.ml"
           
         in
         
-# 1049 "parser_cocci_menhir.mly"
+# 1097 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
       !Data.add_type_name (P.id2name i);
       let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in
       Ast0.wrap(Ast0.Init(s,fn idtype,id,P.clt2mcode "=" q,e,
                           P.clt2mcode ";" pv)) )
-# 23218 "parser_cocci_menhir.ml"
+# 25138 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23263,15 +25183,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23269 "parser_cocci_menhir.ml"
+# 25189 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23275 "parser_cocci_menhir.ml"
+# 25195 "parser_cocci_menhir.ml"
         ) = Obj.magic q in
         let d : 'tv_d_ident = Obj.magic d in
         let i : 'tv_pure_ident = Obj.magic i in
@@ -23284,7 +25204,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 23288 "parser_cocci_menhir.ml"
+# 25208 "parser_cocci_menhir.ml"
           
         in
         let s =
@@ -23292,17 +25212,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 23296 "parser_cocci_menhir.ml"
+# 25216 "parser_cocci_menhir.ml"
           
         in
         
-# 1049 "parser_cocci_menhir.mly"
+# 1097 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
       !Data.add_type_name (P.id2name i);
       let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in
       Ast0.wrap(Ast0.Init(s,fn idtype,id,P.clt2mcode "=" q,e,
                           P.clt2mcode ";" pv)) )
-# 23306 "parser_cocci_menhir.ml"
+# 25226 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23361,36 +25281,36 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23367 "parser_cocci_menhir.ml"
+# 25287 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let rp2 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23372 "parser_cocci_menhir.ml"
+# 25292 "parser_cocci_menhir.ml"
         ) = Obj.magic rp2 in
         let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in
         let lp2 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23378 "parser_cocci_menhir.ml"
+# 25298 "parser_cocci_menhir.ml"
         ) = Obj.magic lp2 in
         let rp1 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23383 "parser_cocci_menhir.ml"
+# 25303 "parser_cocci_menhir.ml"
         ) = Obj.magic rp1 in
         let d : 'tv_d_ident = Obj.magic d in
         let st : (
-# 78 "parser_cocci_menhir.mly"
+# 102 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23389 "parser_cocci_menhir.ml"
+# 25309 "parser_cocci_menhir.ml"
         ) = Obj.magic st in
         let lp1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23394 "parser_cocci_menhir.ml"
+# 25314 "parser_cocci_menhir.ml"
         ) = Obj.magic lp1 in
         let t : 'tv_ctype = Obj.magic t in
         let _startpos = _startpos_t_ in
@@ -23399,11 +25319,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 23403 "parser_cocci_menhir.ml"
+# 25323 "parser_cocci_menhir.ml"
           
         in
         
-# 1059 "parser_cocci_menhir.mly"
+# 1107 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
         let t =
          Ast0.wrap
@@ -23411,7 +25331,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               (t,P.clt2mcode "(" lp1,P.clt2mcode "*" st,P.clt2mcode ")" rp1,
                P.clt2mcode "(" lp2,p,P.clt2mcode ")" rp2)) in
         Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv)) )
-# 23415 "parser_cocci_menhir.ml"
+# 25335 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23475,36 +25395,36 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23481 "parser_cocci_menhir.ml"
+# 25401 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let rp2 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23486 "parser_cocci_menhir.ml"
+# 25406 "parser_cocci_menhir.ml"
         ) = Obj.magic rp2 in
         let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in
         let lp2 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23492 "parser_cocci_menhir.ml"
+# 25412 "parser_cocci_menhir.ml"
         ) = Obj.magic lp2 in
         let rp1 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23497 "parser_cocci_menhir.ml"
+# 25417 "parser_cocci_menhir.ml"
         ) = Obj.magic rp1 in
         let d : 'tv_d_ident = Obj.magic d in
         let st : (
-# 78 "parser_cocci_menhir.mly"
+# 102 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23503 "parser_cocci_menhir.ml"
+# 25423 "parser_cocci_menhir.ml"
         ) = Obj.magic st in
         let lp1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23508 "parser_cocci_menhir.ml"
+# 25428 "parser_cocci_menhir.ml"
         ) = Obj.magic lp1 in
         let t : 'tv_ctype = Obj.magic t in
         let x0 : 'tv_storage = Obj.magic x0 in
@@ -23515,11 +25435,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 23519 "parser_cocci_menhir.ml"
+# 25439 "parser_cocci_menhir.ml"
           
         in
         
-# 1059 "parser_cocci_menhir.mly"
+# 1107 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
         let t =
          Ast0.wrap
@@ -23527,7 +25447,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               (t,P.clt2mcode "(" lp1,P.clt2mcode "*" st,P.clt2mcode ")" rp1,
                P.clt2mcode "(" lp2,p,P.clt2mcode ")" rp2)) in
         Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv)) )
-# 23531 "parser_cocci_menhir.ml"
+# 25451 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23566,29 +25486,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _5 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23572 "parser_cocci_menhir.ml"
+# 25492 "parser_cocci_menhir.ml"
         ) = Obj.magic _5 in
         let _4 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23577 "parser_cocci_menhir.ml"
+# 25497 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr_list_option = Obj.magic _3 in
         let _2 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23583 "parser_cocci_menhir.ml"
+# 25503 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_decl_ident = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__5_ in
         let _v : 'tv_one_decl_var = 
-# 1067 "parser_cocci_menhir.mly"
+# 1115 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.MacroDecl(_1,P.clt2mcode "(" _2,_3,
                                  P.clt2mcode ")" _4,P.clt2mcode ";" _5)) )
-# 23592 "parser_cocci_menhir.ml"
+# 25512 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23657,42 +25577,42 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23663 "parser_cocci_menhir.ml"
+# 25583 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23669 "parser_cocci_menhir.ml"
+# 25589 "parser_cocci_menhir.ml"
         ) = Obj.magic q in
         let rp2 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23674 "parser_cocci_menhir.ml"
+# 25594 "parser_cocci_menhir.ml"
         ) = Obj.magic rp2 in
         let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in
         let lp2 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23680 "parser_cocci_menhir.ml"
+# 25600 "parser_cocci_menhir.ml"
         ) = Obj.magic lp2 in
         let rp1 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23685 "parser_cocci_menhir.ml"
+# 25605 "parser_cocci_menhir.ml"
         ) = Obj.magic rp1 in
         let d : 'tv_d_ident = Obj.magic d in
         let st : (
-# 78 "parser_cocci_menhir.mly"
+# 102 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23691 "parser_cocci_menhir.ml"
+# 25611 "parser_cocci_menhir.ml"
         ) = Obj.magic st in
         let lp1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23696 "parser_cocci_menhir.ml"
+# 25616 "parser_cocci_menhir.ml"
         ) = Obj.magic lp1 in
         let t : 'tv_ctype = Obj.magic t in
         let _startpos = _startpos_t_ in
@@ -23701,11 +25621,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 23705 "parser_cocci_menhir.ml"
+# 25625 "parser_cocci_menhir.ml"
           
         in
         
-# 1073 "parser_cocci_menhir.mly"
+# 1121 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
         let t =
          Ast0.wrap
@@ -23713,7 +25633,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               (t,P.clt2mcode "(" lp1,P.clt2mcode "*" st,P.clt2mcode ")" rp1,
                P.clt2mcode "(" lp2,p,P.clt2mcode ")" rp2)) in
       Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv)))
-# 23717 "parser_cocci_menhir.ml"
+# 25637 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23787,42 +25707,42 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23793 "parser_cocci_menhir.ml"
+# 25713 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23799 "parser_cocci_menhir.ml"
+# 25719 "parser_cocci_menhir.ml"
         ) = Obj.magic q in
         let rp2 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23804 "parser_cocci_menhir.ml"
+# 25724 "parser_cocci_menhir.ml"
         ) = Obj.magic rp2 in
         let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in
         let lp2 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23810 "parser_cocci_menhir.ml"
+# 25730 "parser_cocci_menhir.ml"
         ) = Obj.magic lp2 in
         let rp1 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23815 "parser_cocci_menhir.ml"
+# 25735 "parser_cocci_menhir.ml"
         ) = Obj.magic rp1 in
         let d : 'tv_d_ident = Obj.magic d in
         let st : (
-# 78 "parser_cocci_menhir.mly"
+# 102 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23821 "parser_cocci_menhir.ml"
+# 25741 "parser_cocci_menhir.ml"
         ) = Obj.magic st in
         let lp1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23826 "parser_cocci_menhir.ml"
+# 25746 "parser_cocci_menhir.ml"
         ) = Obj.magic lp1 in
         let t : 'tv_ctype = Obj.magic t in
         let x0 : 'tv_storage = Obj.magic x0 in
@@ -23833,11 +25753,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 23837 "parser_cocci_menhir.ml"
+# 25757 "parser_cocci_menhir.ml"
           
         in
         
-# 1073 "parser_cocci_menhir.mly"
+# 1121 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
         let t =
          Ast0.wrap
@@ -23845,7 +25765,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               (t,P.clt2mcode "(" lp1,P.clt2mcode "*" st,P.clt2mcode ")" rp1,
                P.clt2mcode "(" lp2,p,P.clt2mcode ")" rp2)) in
       Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv)))
-# 23849 "parser_cocci_menhir.ml"
+# 25769 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23862,7 +25782,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_option_TLocal_ = 
 # 29 "standard.mly"
     ( None )
-# 23866 "parser_cocci_menhir.ml"
+# 25786 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23886,7 +25806,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_option_TLocal_ = 
 # 31 "standard.mly"
     ( Some x )
-# 23890 "parser_cocci_menhir.ml"
+# 25810 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23903,7 +25823,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_option_TPosAny_ = 
 # 29 "standard.mly"
     ( None )
-# 23907 "parser_cocci_menhir.ml"
+# 25827 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23927,7 +25847,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_option_TPosAny_ = 
 # 31 "standard.mly"
     ( Some x )
-# 23931 "parser_cocci_menhir.ml"
+# 25851 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23944,7 +25864,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_option_eexpr_ = 
 # 29 "standard.mly"
     ( None )
-# 23948 "parser_cocci_menhir.ml"
+# 25868 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23968,7 +25888,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_option_eexpr_ = 
 # 31 "standard.mly"
     ( Some x )
-# 23972 "parser_cocci_menhir.ml"
+# 25892 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23985,7 +25905,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_option_not_ceq_or_sub_ = 
 # 29 "standard.mly"
     ( None )
-# 23989 "parser_cocci_menhir.ml"
+# 25909 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24009,7 +25929,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_option_not_ceq_or_sub_ = 
 # 31 "standard.mly"
     ( Some x )
-# 24013 "parser_cocci_menhir.ml"
+# 25933 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24026,7 +25946,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_option_re_or_not_eqe_or_sub_ = 
 # 29 "standard.mly"
     ( None )
-# 24030 "parser_cocci_menhir.ml"
+# 25950 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24050,7 +25970,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_option_re_or_not_eqe_or_sub_ = 
 # 31 "standard.mly"
     ( Some x )
-# 24054 "parser_cocci_menhir.ml"
+# 25974 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24067,7 +25987,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_option_re_or_not_eqid_ = 
 # 29 "standard.mly"
     ( None )
-# 24071 "parser_cocci_menhir.ml"
+# 25991 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24091,7 +26011,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_option_re_or_not_eqid_ = 
 # 31 "standard.mly"
     ( Some x )
-# 24095 "parser_cocci_menhir.ml"
+# 26015 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24106,9 +26026,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
         let _endpos = _startpos in
         let _v : 'tv_plus_after_dots = 
-# 1839 "parser_cocci_menhir.mly"
+# 1894 "parser_cocci_menhir.mly"
                                                                          ([])
-# 24112 "parser_cocci_menhir.ml"
+# 26032 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24134,9 +26054,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_plus_after_dots = 
-# 1840 "parser_cocci_menhir.mly"
+# 1895 "parser_cocci_menhir.mly"
                                                                          (_2)
-# 24140 "parser_cocci_menhir.ml"
+# 26060 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24164,9 +26084,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_plus_after_dots = 
-# 1842 "parser_cocci_menhir.mly"
+# 1897 "parser_cocci_menhir.mly"
                      ( (Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.Exp(_1)))))::_2 )
-# 24170 "parser_cocci_menhir.ml"
+# 26090 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24194,9 +26114,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_plus_after_dots = 
-# 1843 "parser_cocci_menhir.mly"
+# 1898 "parser_cocci_menhir.mly"
                                              ( Ast0.wrap(Ast0.DECL(_1))::_2 )
-# 24200 "parser_cocci_menhir.ml"
+# 26120 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24224,9 +26144,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_plus_after_dots = 
-# 1845 "parser_cocci_menhir.mly"
+# 1900 "parser_cocci_menhir.mly"
                 ( (List.map (function x -> Ast0.wrap(Ast0.OTHER(x))) _1)@_2 )
-# 24230 "parser_cocci_menhir.ml"
+# 26150 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24241,9 +26161,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
         let _endpos = _startpos in
         let _v : 'tv_plus_after_exp = 
-# 1835 "parser_cocci_menhir.mly"
+# 1890 "parser_cocci_menhir.mly"
                                                                          ([])
-# 24247 "parser_cocci_menhir.ml"
+# 26167 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24271,9 +26191,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_plus_after_exp = 
-# 1836 "parser_cocci_menhir.mly"
+# 1891 "parser_cocci_menhir.mly"
                                           ( (Ast0.wrap(Ast0.OTHER(_1)))::_2 )
-# 24277 "parser_cocci_menhir.ml"
+# 26197 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24288,9 +26208,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
         let _endpos = _startpos in
         let _v : 'tv_plus_after_stm = 
-# 1848 "parser_cocci_menhir.mly"
+# 1903 "parser_cocci_menhir.mly"
                                                                          ([])
-# 24294 "parser_cocci_menhir.ml"
+# 26214 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24318,9 +26238,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_plus_after_stm = 
-# 1849 "parser_cocci_menhir.mly"
+# 1904 "parser_cocci_menhir.mly"
                                           ( (Ast0.wrap(Ast0.OTHER(_1)))::_2 )
-# 24324 "parser_cocci_menhir.ml"
+# 26244 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24348,9 +26268,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_plus_after_stm = 
-# 1850 "parser_cocci_menhir.mly"
+# 1905 "parser_cocci_menhir.mly"
                                              ( Ast0.wrap(Ast0.DECL(_1))::_2 )
-# 24354 "parser_cocci_menhir.ml"
+# 26274 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24378,9 +26298,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_plus_after_stm = 
-# 1852 "parser_cocci_menhir.mly"
+# 1907 "parser_cocci_menhir.mly"
                 ( (List.map (function x -> Ast0.wrap(Ast0.OTHER(x))) _1)@_2 )
-# 24384 "parser_cocci_menhir.ml"
+# 26304 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24408,9 +26328,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_f_ in
         let _endpos = _endpos_b_ in
         let _v : 'tv_plus_body = 
-# 636 "parser_cocci_menhir.mly"
+# 702 "parser_cocci_menhir.mly"
     ( Top_level.top_level (f@b(*@ew*)) )
-# 24414 "parser_cocci_menhir.ml"
+# 26334 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24438,9 +26358,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_f_ in
         let _endpos = _endpos_b_ in
         let _v : 'tv_plus_exp_body = 
-# 650 "parser_cocci_menhir.mly"
+# 716 "parser_cocci_menhir.mly"
     ( Top_level.top_level (f@[b](*@ew*)) )
-# 24444 "parser_cocci_menhir.ml"
+# 26364 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24466,13 +26386,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 124 "parser_cocci_menhir.mly"
+# 148 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
-# 24472 "parser_cocci_menhir.ml"
+# 26392 "parser_cocci_menhir.ml"
         ) = 
-# 160 "parser_cocci_menhir.mly"
+# 184 "parser_cocci_menhir.mly"
                                  ( _1 )
-# 24476 "parser_cocci_menhir.ml"
+# 26396 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24498,13 +26418,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_p_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 124 "parser_cocci_menhir.mly"
+# 148 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
-# 24504 "parser_cocci_menhir.ml"
+# 26424 "parser_cocci_menhir.ml"
         ) = 
-# 160 "parser_cocci_menhir.mly"
+# 184 "parser_cocci_menhir.mly"
                                                                     ( p )
-# 24508 "parser_cocci_menhir.ml"
+# 26428 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24530,13 +26450,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_p_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 124 "parser_cocci_menhir.mly"
+# 148 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
-# 24536 "parser_cocci_menhir.ml"
+# 26456 "parser_cocci_menhir.ml"
         ) = 
-# 161 "parser_cocci_menhir.mly"
+# 185 "parser_cocci_menhir.mly"
                         ( p )
-# 24540 "parser_cocci_menhir.ml"
+# 26460 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24562,13 +26482,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 121 "parser_cocci_menhir.mly"
+# 145 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
-# 24568 "parser_cocci_menhir.ml"
+# 26488 "parser_cocci_menhir.ml"
         ) = 
-# 156 "parser_cocci_menhir.mly"
+# 180 "parser_cocci_menhir.mly"
                          ( _1 )
-# 24572 "parser_cocci_menhir.ml"
+# 26492 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24594,13 +26514,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_p_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 121 "parser_cocci_menhir.mly"
+# 145 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
-# 24600 "parser_cocci_menhir.ml"
+# 26520 "parser_cocci_menhir.ml"
         ) = 
-# 156 "parser_cocci_menhir.mly"
+# 180 "parser_cocci_menhir.mly"
                                                         ( p )
-# 24604 "parser_cocci_menhir.ml"
+# 26524 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24626,13 +26546,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_p_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 121 "parser_cocci_menhir.mly"
+# 145 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
-# 24632 "parser_cocci_menhir.ml"
+# 26552 "parser_cocci_menhir.ml"
         ) = 
-# 157 "parser_cocci_menhir.mly"
+# 181 "parser_cocci_menhir.mly"
                     ( p )
-# 24636 "parser_cocci_menhir.ml"
+# 26556 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24654,9 +26574,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_plus_start = 
-# 1824 "parser_cocci_menhir.mly"
+# 1879 "parser_cocci_menhir.mly"
                           ( [Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.Ty(_1))))] )
-# 24660 "parser_cocci_menhir.ml"
+# 26580 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24678,9 +26598,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_plus_start = 
-# 1825 "parser_cocci_menhir.mly"
+# 1880 "parser_cocci_menhir.mly"
                      ( [Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.TopInit(_1))))] )
-# 24684 "parser_cocci_menhir.ml"
+# 26604 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24708,9 +26628,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_plus_start = 
-# 1827 "parser_cocci_menhir.mly"
+# 1882 "parser_cocci_menhir.mly"
                                           ( (Ast0.wrap(Ast0.OTHER(_1)))::_2 )
-# 24714 "parser_cocci_menhir.ml"
+# 26634 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24738,9 +26658,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_plus_start = 
-# 1829 "parser_cocci_menhir.mly"
+# 1884 "parser_cocci_menhir.mly"
                      ( (Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.Exp(_1)))))::_2 )
-# 24744 "parser_cocci_menhir.ml"
+# 26664 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24768,9 +26688,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_plus_start = 
-# 1830 "parser_cocci_menhir.mly"
+# 1885 "parser_cocci_menhir.mly"
                                              ( Ast0.wrap(Ast0.DECL(_1))::_2 )
-# 24774 "parser_cocci_menhir.ml"
+# 26694 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24798,9 +26718,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_plus_start = 
-# 1832 "parser_cocci_menhir.mly"
+# 1887 "parser_cocci_menhir.mly"
                 ( (List.map (function x -> Ast0.wrap(Ast0.OTHER(x))) _1)@_2 )
-# 24804 "parser_cocci_menhir.ml"
+# 26724 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24819,16 +26739,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 25 "parser_cocci_menhir.mly"
+# 49 "parser_cocci_menhir.mly"
       (string)
-# 24825 "parser_cocci_menhir.ml"
+# 26745 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pnrule = 
-# 211 "parser_cocci_menhir.mly"
+# 235 "parser_cocci_menhir.mly"
                    ( Ast.Dep      _1 )
-# 24832 "parser_cocci_menhir.ml"
+# 26752 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24851,16 +26771,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 25 "parser_cocci_menhir.mly"
+# 49 "parser_cocci_menhir.mly"
       (string)
-# 24857 "parser_cocci_menhir.ml"
+# 26777 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_pnrule = 
-# 212 "parser_cocci_menhir.mly"
+# 236 "parser_cocci_menhir.mly"
                    ( Ast.AntiDep  _2 )
-# 24864 "parser_cocci_menhir.ml"
+# 26784 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24883,16 +26803,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 25 "parser_cocci_menhir.mly"
+# 49 "parser_cocci_menhir.mly"
       (string)
-# 24889 "parser_cocci_menhir.ml"
+# 26809 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_pnrule = 
-# 213 "parser_cocci_menhir.mly"
+# 237 "parser_cocci_menhir.mly"
                    ( Ast.EverDep  _2 )
-# 24896 "parser_cocci_menhir.ml"
+# 26816 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24915,16 +26835,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 25 "parser_cocci_menhir.mly"
+# 49 "parser_cocci_menhir.mly"
       (string)
-# 24921 "parser_cocci_menhir.ml"
+# 26841 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_pnrule = 
-# 214 "parser_cocci_menhir.mly"
+# 238 "parser_cocci_menhir.mly"
                    ( Ast.NeverDep _2 )
-# 24928 "parser_cocci_menhir.ml"
+# 26848 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24954,9 +26874,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_pnrule = 
-# 215 "parser_cocci_menhir.mly"
+# 239 "parser_cocci_menhir.mly"
                    ( _2 )
-# 24960 "parser_cocci_menhir.ml"
+# 26880 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24978,9 +26898,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_postfix_expr_eexpr_dot_expressions_ = 
-# 1351 "parser_cocci_menhir.mly"
+# 1375 "parser_cocci_menhir.mly"
                                                  ( _1 )
-# 24984 "parser_cocci_menhir.ml"
+# 26904 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25014,24 +26934,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _4 : (
-# 81 "parser_cocci_menhir.mly"
+# 105 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25020 "parser_cocci_menhir.ml"
+# 26940 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr = Obj.magic _3 in
         let _2 : (
-# 81 "parser_cocci_menhir.mly"
+# 105 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25026 "parser_cocci_menhir.ml"
+# 26946 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_postfix_expr_eexpr_dot_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : 'tv_postfix_expr_eexpr_dot_expressions_ = 
-# 1353 "parser_cocci_menhir.mly"
+# 1377 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.ArrayAccess (_1,P.clt2mcode "[" _2,_3,
                                       P.clt2mcode "]" _4)) )
-# 25035 "parser_cocci_menhir.ml"
+# 26955 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25061,17 +26981,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_ident = Obj.magic _3 in
         let _2 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25067 "parser_cocci_menhir.ml"
+# 26987 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_postfix_expr_eexpr_dot_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_postfix_expr_eexpr_dot_expressions_ = 
-# 1356 "parser_cocci_menhir.mly"
+# 1380 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.RecordAccess(_1, P.clt2mcode "." _2, _3)) )
-# 25075 "parser_cocci_menhir.ml"
+# 26995 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25101,18 +27021,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_ident = Obj.magic _3 in
         let _2 : (
-# 83 "parser_cocci_menhir.mly"
+# 107 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25107 "parser_cocci_menhir.ml"
+# 27027 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_postfix_expr_eexpr_dot_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_postfix_expr_eexpr_dot_expressions_ = 
-# 1358 "parser_cocci_menhir.mly"
+# 1382 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.RecordPtAccess(_1, P.clt2mcode "->" _2,
                                     _3)) )
-# 25116 "parser_cocci_menhir.ml"
+# 27036 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25136,17 +27056,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 64 "parser_cocci_menhir.mly"
+# 88 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25142 "parser_cocci_menhir.ml"
+# 27062 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_postfix_expr_eexpr_dot_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_postfix_expr_eexpr_dot_expressions_ = 
-# 1361 "parser_cocci_menhir.mly"
+# 1385 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Inc _2)) )
-# 25150 "parser_cocci_menhir.ml"
+# 27070 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25170,17 +27090,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 64 "parser_cocci_menhir.mly"
+# 88 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25176 "parser_cocci_menhir.ml"
+# 27096 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_postfix_expr_eexpr_dot_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_postfix_expr_eexpr_dot_expressions_ = 
-# 1363 "parser_cocci_menhir.mly"
+# 1387 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Dec _2)) )
-# 25184 "parser_cocci_menhir.ml"
+# 27104 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25214,25 +27134,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _4 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25220 "parser_cocci_menhir.ml"
+# 27140 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr_list_option = Obj.magic _3 in
         let _2 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25226 "parser_cocci_menhir.ml"
+# 27146 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_postfix_expr_eexpr_dot_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : 'tv_postfix_expr_eexpr_dot_expressions_ = 
-# 1365 "parser_cocci_menhir.mly"
+# 1389 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.FunCall(_1,P.clt2mcode "(" _2,
                              _3,
                              P.clt2mcode ")" _4)) )
-# 25236 "parser_cocci_menhir.ml"
+# 27156 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25254,9 +27174,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_postfix_expr_eexpr_invalid_ = 
-# 1351 "parser_cocci_menhir.mly"
+# 1375 "parser_cocci_menhir.mly"
                                                  ( _1 )
-# 25260 "parser_cocci_menhir.ml"
+# 27180 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25290,24 +27210,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _4 : (
-# 81 "parser_cocci_menhir.mly"
+# 105 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25296 "parser_cocci_menhir.ml"
+# 27216 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr = Obj.magic _3 in
         let _2 : (
-# 81 "parser_cocci_menhir.mly"
+# 105 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25302 "parser_cocci_menhir.ml"
+# 27222 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_postfix_expr_eexpr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : 'tv_postfix_expr_eexpr_invalid_ = 
-# 1353 "parser_cocci_menhir.mly"
+# 1377 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.ArrayAccess (_1,P.clt2mcode "[" _2,_3,
                                       P.clt2mcode "]" _4)) )
-# 25311 "parser_cocci_menhir.ml"
+# 27231 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25337,17 +27257,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_ident = Obj.magic _3 in
         let _2 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25343 "parser_cocci_menhir.ml"
+# 27263 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_postfix_expr_eexpr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_postfix_expr_eexpr_invalid_ = 
-# 1356 "parser_cocci_menhir.mly"
+# 1380 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.RecordAccess(_1, P.clt2mcode "." _2, _3)) )
-# 25351 "parser_cocci_menhir.ml"
+# 27271 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25377,18 +27297,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_ident = Obj.magic _3 in
         let _2 : (
-# 83 "parser_cocci_menhir.mly"
+# 107 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25383 "parser_cocci_menhir.ml"
+# 27303 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_postfix_expr_eexpr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_postfix_expr_eexpr_invalid_ = 
-# 1358 "parser_cocci_menhir.mly"
+# 1382 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.RecordPtAccess(_1, P.clt2mcode "->" _2,
                                     _3)) )
-# 25392 "parser_cocci_menhir.ml"
+# 27312 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25412,17 +27332,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 64 "parser_cocci_menhir.mly"
+# 88 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25418 "parser_cocci_menhir.ml"
+# 27338 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_postfix_expr_eexpr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_postfix_expr_eexpr_invalid_ = 
-# 1361 "parser_cocci_menhir.mly"
+# 1385 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Inc _2)) )
-# 25426 "parser_cocci_menhir.ml"
+# 27346 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25446,17 +27366,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 64 "parser_cocci_menhir.mly"
+# 88 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25452 "parser_cocci_menhir.ml"
+# 27372 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_postfix_expr_eexpr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_postfix_expr_eexpr_invalid_ = 
-# 1363 "parser_cocci_menhir.mly"
+# 1387 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Dec _2)) )
-# 25460 "parser_cocci_menhir.ml"
+# 27380 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25490,25 +27410,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _4 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25496 "parser_cocci_menhir.ml"
+# 27416 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr_list_option = Obj.magic _3 in
         let _2 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25502 "parser_cocci_menhir.ml"
+# 27422 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_postfix_expr_eexpr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : 'tv_postfix_expr_eexpr_invalid_ = 
-# 1365 "parser_cocci_menhir.mly"
+# 1389 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.FunCall(_1,P.clt2mcode "(" _2,
                              _3,
                              P.clt2mcode ")" _4)) )
-# 25512 "parser_cocci_menhir.ml"
+# 27432 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25530,9 +27450,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_postfix_expr_eexpr_nest_expressions_ = 
-# 1351 "parser_cocci_menhir.mly"
+# 1375 "parser_cocci_menhir.mly"
                                                  ( _1 )
-# 25536 "parser_cocci_menhir.ml"
+# 27456 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25566,24 +27486,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _4 : (
-# 81 "parser_cocci_menhir.mly"
+# 105 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25572 "parser_cocci_menhir.ml"
+# 27492 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr = Obj.magic _3 in
         let _2 : (
-# 81 "parser_cocci_menhir.mly"
+# 105 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25578 "parser_cocci_menhir.ml"
+# 27498 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_postfix_expr_eexpr_nest_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : 'tv_postfix_expr_eexpr_nest_expressions_ = 
-# 1353 "parser_cocci_menhir.mly"
+# 1377 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.ArrayAccess (_1,P.clt2mcode "[" _2,_3,
                                       P.clt2mcode "]" _4)) )
-# 25587 "parser_cocci_menhir.ml"
+# 27507 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25613,17 +27533,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_ident = Obj.magic _3 in
         let _2 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25619 "parser_cocci_menhir.ml"
+# 27539 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_postfix_expr_eexpr_nest_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_postfix_expr_eexpr_nest_expressions_ = 
-# 1356 "parser_cocci_menhir.mly"
+# 1380 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.RecordAccess(_1, P.clt2mcode "." _2, _3)) )
-# 25627 "parser_cocci_menhir.ml"
+# 27547 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25653,18 +27573,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_ident = Obj.magic _3 in
         let _2 : (
-# 83 "parser_cocci_menhir.mly"
+# 107 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25659 "parser_cocci_menhir.ml"
+# 27579 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_postfix_expr_eexpr_nest_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_postfix_expr_eexpr_nest_expressions_ = 
-# 1358 "parser_cocci_menhir.mly"
+# 1382 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.RecordPtAccess(_1, P.clt2mcode "->" _2,
                                     _3)) )
-# 25668 "parser_cocci_menhir.ml"
+# 27588 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25688,17 +27608,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 64 "parser_cocci_menhir.mly"
+# 88 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25694 "parser_cocci_menhir.ml"
+# 27614 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_postfix_expr_eexpr_nest_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_postfix_expr_eexpr_nest_expressions_ = 
-# 1361 "parser_cocci_menhir.mly"
+# 1385 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Inc _2)) )
-# 25702 "parser_cocci_menhir.ml"
+# 27622 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25722,17 +27642,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 64 "parser_cocci_menhir.mly"
+# 88 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25728 "parser_cocci_menhir.ml"
+# 27648 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_postfix_expr_eexpr_nest_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_postfix_expr_eexpr_nest_expressions_ = 
-# 1363 "parser_cocci_menhir.mly"
+# 1387 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Dec _2)) )
-# 25736 "parser_cocci_menhir.ml"
+# 27656 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25766,25 +27686,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _4 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25772 "parser_cocci_menhir.ml"
+# 27692 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr_list_option = Obj.magic _3 in
         let _2 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25778 "parser_cocci_menhir.ml"
+# 27698 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_postfix_expr_eexpr_nest_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : 'tv_postfix_expr_eexpr_nest_expressions_ = 
-# 1365 "parser_cocci_menhir.mly"
+# 1389 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.FunCall(_1,P.clt2mcode "(" _2,
                              _3,
                              P.clt2mcode ")" _4)) )
-# 25788 "parser_cocci_menhir.ml"
+# 27708 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25806,9 +27726,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_postfix_expr_expr_invalid_ = 
-# 1351 "parser_cocci_menhir.mly"
+# 1375 "parser_cocci_menhir.mly"
                                                  ( _1 )
-# 25812 "parser_cocci_menhir.ml"
+# 27732 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25842,24 +27762,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _4 : (
-# 81 "parser_cocci_menhir.mly"
+# 105 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25848 "parser_cocci_menhir.ml"
+# 27768 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr = Obj.magic _3 in
         let _2 : (
-# 81 "parser_cocci_menhir.mly"
+# 105 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25854 "parser_cocci_menhir.ml"
+# 27774 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_postfix_expr_expr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : 'tv_postfix_expr_expr_invalid_ = 
-# 1353 "parser_cocci_menhir.mly"
+# 1377 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.ArrayAccess (_1,P.clt2mcode "[" _2,_3,
                                       P.clt2mcode "]" _4)) )
-# 25863 "parser_cocci_menhir.ml"
+# 27783 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25889,17 +27809,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_ident = Obj.magic _3 in
         let _2 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25895 "parser_cocci_menhir.ml"
+# 27815 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_postfix_expr_expr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_postfix_expr_expr_invalid_ = 
-# 1356 "parser_cocci_menhir.mly"
+# 1380 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.RecordAccess(_1, P.clt2mcode "." _2, _3)) )
-# 25903 "parser_cocci_menhir.ml"
+# 27823 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25929,18 +27849,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_ident = Obj.magic _3 in
         let _2 : (
-# 83 "parser_cocci_menhir.mly"
+# 107 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25935 "parser_cocci_menhir.ml"
+# 27855 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_postfix_expr_expr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_postfix_expr_expr_invalid_ = 
-# 1358 "parser_cocci_menhir.mly"
+# 1382 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.RecordPtAccess(_1, P.clt2mcode "->" _2,
                                     _3)) )
-# 25944 "parser_cocci_menhir.ml"
+# 27864 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25964,17 +27884,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 64 "parser_cocci_menhir.mly"
+# 88 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25970 "parser_cocci_menhir.ml"
+# 27890 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_postfix_expr_expr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_postfix_expr_expr_invalid_ = 
-# 1361 "parser_cocci_menhir.mly"
+# 1385 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Inc _2)) )
-# 25978 "parser_cocci_menhir.ml"
+# 27898 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25998,17 +27918,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 64 "parser_cocci_menhir.mly"
+# 88 "parser_cocci_menhir.mly"
        (Data.clt)
-# 26004 "parser_cocci_menhir.ml"
+# 27924 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_postfix_expr_expr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_postfix_expr_expr_invalid_ = 
-# 1363 "parser_cocci_menhir.mly"
+# 1387 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Dec _2)) )
-# 26012 "parser_cocci_menhir.ml"
+# 27932 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26042,25 +27962,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _4 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 26048 "parser_cocci_menhir.ml"
+# 27968 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr_list_option = Obj.magic _3 in
         let _2 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 26054 "parser_cocci_menhir.ml"
+# 27974 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_postfix_expr_expr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : 'tv_postfix_expr_expr_invalid_ = 
-# 1365 "parser_cocci_menhir.mly"
+# 1389 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.FunCall(_1,P.clt2mcode "(" _2,
                              _3,
                              P.clt2mcode ")" _4)) )
-# 26064 "parser_cocci_menhir.ml"
+# 27984 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26082,9 +28002,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_dot_expressions_ = 
-# 1370 "parser_cocci_menhir.mly"
+# 1394 "parser_cocci_menhir.mly"
                 ( Ast0.wrap(Ast0.Ident(_1)) )
-# 26088 "parser_cocci_menhir.ml"
+# 28008 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26103,17 +28023,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 26109 "parser_cocci_menhir.ml"
+# 28029 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_dot_expressions_ = 
-# 1372 "parser_cocci_menhir.mly"
+# 1396 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Int x) clt)) )
-# 26117 "parser_cocci_menhir.ml"
+# 28037 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26132,17 +28052,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 26138 "parser_cocci_menhir.ml"
+# 28058 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_dot_expressions_ = 
-# 1375 "parser_cocci_menhir.mly"
+# 1399 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Float x) clt)) )
-# 26146 "parser_cocci_menhir.ml"
+# 28066 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26161,17 +28081,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 26167 "parser_cocci_menhir.ml"
+# 28087 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_dot_expressions_ = 
-# 1378 "parser_cocci_menhir.mly"
+# 1402 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.String x) clt)) )
-# 26175 "parser_cocci_menhir.ml"
+# 28095 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26190,17 +28110,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 26196 "parser_cocci_menhir.ml"
+# 28116 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_dot_expressions_ = 
-# 1381 "parser_cocci_menhir.mly"
+# 1405 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Char x) clt)) )
-# 26204 "parser_cocci_menhir.ml"
+# 28124 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26219,18 +28139,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 46 "parser_cocci_menhir.mly"
+# 70 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 26225 "parser_cocci_menhir.ml"
+# 28145 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_dot_expressions_ = 
-# 1384 "parser_cocci_menhir.mly"
+# 1408 "parser_cocci_menhir.mly"
      ( let (nm,constraints,pure,ty,clt) = _1 in
      Ast0.wrap
        (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.CONST,pure)) )
-# 26234 "parser_cocci_menhir.ml"
+# 28154 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26249,17 +28169,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 42 "parser_cocci_menhir.mly"
+# 66 "parser_cocci_menhir.mly"
        (Parse_aux.expinfo)
-# 26255 "parser_cocci_menhir.ml"
+# 28175 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_dot_expressions_ = 
-# 1388 "parser_cocci_menhir.mly"
+# 1412 "parser_cocci_menhir.mly"
      ( let (nm,constraints,pure,clt) = _1 in
      Ast0.wrap(Ast0.MetaErr(P.clt2mcode nm clt,constraints,pure)) )
-# 26263 "parser_cocci_menhir.ml"
+# 28183 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26278,18 +28198,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 46 "parser_cocci_menhir.mly"
+# 70 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 26284 "parser_cocci_menhir.ml"
+# 28204 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_dot_expressions_ = 
-# 1391 "parser_cocci_menhir.mly"
+# 1415 "parser_cocci_menhir.mly"
      ( let (nm,constraints,pure,ty,clt) = _1 in
      Ast0.wrap
        (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ANY,pure)) )
-# 26293 "parser_cocci_menhir.ml"
+# 28213 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26308,18 +28228,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 46 "parser_cocci_menhir.mly"
+# 70 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 26314 "parser_cocci_menhir.ml"
+# 28234 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_dot_expressions_ = 
-# 1395 "parser_cocci_menhir.mly"
+# 1419 "parser_cocci_menhir.mly"
      ( let (nm,constraints,pure,ty,clt) = _1 in
      Ast0.wrap
        (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ID,pure)) )
-# 26323 "parser_cocci_menhir.ml"
+# 28243 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26338,18 +28258,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 46 "parser_cocci_menhir.mly"
+# 70 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 26344 "parser_cocci_menhir.ml"
+# 28264 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_dot_expressions_ = 
-# 1399 "parser_cocci_menhir.mly"
+# 1423 "parser_cocci_menhir.mly"
      ( let (nm,constraints,pure,ty,clt) = _1 in
      Ast0.wrap
        (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.LocalID,pure)) )
-# 26353 "parser_cocci_menhir.ml"
+# 28273 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26378,23 +28298,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 26384 "parser_cocci_menhir.ml"
+# 28304 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_eexpr = Obj.magic _2 in
         let _1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 26390 "parser_cocci_menhir.ml"
+# 28310 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_primary_expr_eexpr_dot_expressions_ = 
-# 1403 "parser_cocci_menhir.mly"
+# 1427 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.Paren(P.clt2mcode "(" _1,_2,
                            P.clt2mcode ")" _3)) )
-# 26398 "parser_cocci_menhir.ml"
+# 28318 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26423,25 +28343,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 26429 "parser_cocci_menhir.ml"
+# 28349 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_midzero_list_eexpr_eexpr_ = Obj.magic _2 in
         let _1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 26435 "parser_cocci_menhir.ml"
+# 28355 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_primary_expr_eexpr_dot_expressions_ = 
-# 1406 "parser_cocci_menhir.mly"
+# 1430 "parser_cocci_menhir.mly"
      ( let (mids,code) = _2 in
        Ast0.wrap(Ast0.DisjExpr(P.clt2mcode "(" _1,
                               code, mids,
                               P.clt2mcode ")" _3)) )
-# 26445 "parser_cocci_menhir.ml"
+# 28365 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26463,9 +28383,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_dot_expressions_ = 
-# 1410 "parser_cocci_menhir.mly"
+# 1434 "parser_cocci_menhir.mly"
                  ( _1 )
-# 26469 "parser_cocci_menhir.ml"
+# 28389 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26487,9 +28407,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_invalid_ = 
-# 1370 "parser_cocci_menhir.mly"
+# 1394 "parser_cocci_menhir.mly"
                 ( Ast0.wrap(Ast0.Ident(_1)) )
-# 26493 "parser_cocci_menhir.ml"
+# 28413 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26508,17 +28428,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 26514 "parser_cocci_menhir.ml"
+# 28434 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_invalid_ = 
-# 1372 "parser_cocci_menhir.mly"
+# 1396 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Int x) clt)) )
-# 26522 "parser_cocci_menhir.ml"
+# 28442 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26537,17 +28457,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 26543 "parser_cocci_menhir.ml"
+# 28463 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_invalid_ = 
-# 1375 "parser_cocci_menhir.mly"
+# 1399 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Float x) clt)) )
-# 26551 "parser_cocci_menhir.ml"
+# 28471 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26566,17 +28486,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 26572 "parser_cocci_menhir.ml"
+# 28492 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_invalid_ = 
-# 1378 "parser_cocci_menhir.mly"
+# 1402 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.String x) clt)) )
-# 26580 "parser_cocci_menhir.ml"
+# 28500 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26595,17 +28515,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 26601 "parser_cocci_menhir.ml"
+# 28521 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_invalid_ = 
-# 1381 "parser_cocci_menhir.mly"
+# 1405 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Char x) clt)) )
-# 26609 "parser_cocci_menhir.ml"
+# 28529 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26624,18 +28544,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 46 "parser_cocci_menhir.mly"
+# 70 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 26630 "parser_cocci_menhir.ml"
+# 28550 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_invalid_ = 
-# 1384 "parser_cocci_menhir.mly"
+# 1408 "parser_cocci_menhir.mly"
      ( let (nm,constraints,pure,ty,clt) = _1 in
      Ast0.wrap
        (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.CONST,pure)) )
-# 26639 "parser_cocci_menhir.ml"
+# 28559 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26654,17 +28574,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 42 "parser_cocci_menhir.mly"
+# 66 "parser_cocci_menhir.mly"
        (Parse_aux.expinfo)
-# 26660 "parser_cocci_menhir.ml"
+# 28580 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_invalid_ = 
-# 1388 "parser_cocci_menhir.mly"
+# 1412 "parser_cocci_menhir.mly"
      ( let (nm,constraints,pure,clt) = _1 in
      Ast0.wrap(Ast0.MetaErr(P.clt2mcode nm clt,constraints,pure)) )
-# 26668 "parser_cocci_menhir.ml"
+# 28588 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26683,18 +28603,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 46 "parser_cocci_menhir.mly"
+# 70 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 26689 "parser_cocci_menhir.ml"
+# 28609 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_invalid_ = 
-# 1391 "parser_cocci_menhir.mly"
+# 1415 "parser_cocci_menhir.mly"
      ( let (nm,constraints,pure,ty,clt) = _1 in
      Ast0.wrap
        (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ANY,pure)) )
-# 26698 "parser_cocci_menhir.ml"
+# 28618 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26713,18 +28633,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 46 "parser_cocci_menhir.mly"
+# 70 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 26719 "parser_cocci_menhir.ml"
+# 28639 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_invalid_ = 
-# 1395 "parser_cocci_menhir.mly"
+# 1419 "parser_cocci_menhir.mly"
      ( let (nm,constraints,pure,ty,clt) = _1 in
      Ast0.wrap
        (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ID,pure)) )
-# 26728 "parser_cocci_menhir.ml"
+# 28648 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26743,18 +28663,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 46 "parser_cocci_menhir.mly"
+# 70 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 26749 "parser_cocci_menhir.ml"
+# 28669 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_invalid_ = 
-# 1399 "parser_cocci_menhir.mly"
+# 1423 "parser_cocci_menhir.mly"
      ( let (nm,constraints,pure,ty,clt) = _1 in
      Ast0.wrap
        (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.LocalID,pure)) )
-# 26758 "parser_cocci_menhir.ml"
+# 28678 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26783,23 +28703,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 26789 "parser_cocci_menhir.ml"
+# 28709 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_eexpr = Obj.magic _2 in
         let _1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 26795 "parser_cocci_menhir.ml"
+# 28715 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_primary_expr_eexpr_invalid_ = 
-# 1403 "parser_cocci_menhir.mly"
+# 1427 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.Paren(P.clt2mcode "(" _1,_2,
                            P.clt2mcode ")" _3)) )
-# 26803 "parser_cocci_menhir.ml"
+# 28723 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26828,25 +28748,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 26834 "parser_cocci_menhir.ml"
+# 28754 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_midzero_list_eexpr_eexpr_ = Obj.magic _2 in
         let _1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 26840 "parser_cocci_menhir.ml"
+# 28760 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_primary_expr_eexpr_invalid_ = 
-# 1406 "parser_cocci_menhir.mly"
+# 1430 "parser_cocci_menhir.mly"
      ( let (mids,code) = _2 in
        Ast0.wrap(Ast0.DisjExpr(P.clt2mcode "(" _1,
                               code, mids,
                               P.clt2mcode ")" _3)) )
-# 26850 "parser_cocci_menhir.ml"
+# 28770 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26868,9 +28788,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_invalid_ = 
-# 1410 "parser_cocci_menhir.mly"
+# 1434 "parser_cocci_menhir.mly"
                  ( _1 )
-# 26874 "parser_cocci_menhir.ml"
+# 28794 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26892,9 +28812,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_nest_expressions_ = 
-# 1370 "parser_cocci_menhir.mly"
+# 1394 "parser_cocci_menhir.mly"
                 ( Ast0.wrap(Ast0.Ident(_1)) )
-# 26898 "parser_cocci_menhir.ml"
+# 28818 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26913,17 +28833,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 26919 "parser_cocci_menhir.ml"
+# 28839 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_nest_expressions_ = 
-# 1372 "parser_cocci_menhir.mly"
+# 1396 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Int x) clt)) )
-# 26927 "parser_cocci_menhir.ml"
+# 28847 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26942,17 +28862,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 26948 "parser_cocci_menhir.ml"
+# 28868 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_nest_expressions_ = 
-# 1375 "parser_cocci_menhir.mly"
+# 1399 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Float x) clt)) )
-# 26956 "parser_cocci_menhir.ml"
+# 28876 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26971,17 +28891,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 26977 "parser_cocci_menhir.ml"
+# 28897 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_nest_expressions_ = 
-# 1378 "parser_cocci_menhir.mly"
+# 1402 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.String x) clt)) )
-# 26985 "parser_cocci_menhir.ml"
+# 28905 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27000,17 +28920,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 27006 "parser_cocci_menhir.ml"
+# 28926 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_nest_expressions_ = 
-# 1381 "parser_cocci_menhir.mly"
+# 1405 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Char x) clt)) )
-# 27014 "parser_cocci_menhir.ml"
+# 28934 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27029,18 +28949,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 46 "parser_cocci_menhir.mly"
+# 70 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 27035 "parser_cocci_menhir.ml"
+# 28955 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_nest_expressions_ = 
-# 1384 "parser_cocci_menhir.mly"
+# 1408 "parser_cocci_menhir.mly"
      ( let (nm,constraints,pure,ty,clt) = _1 in
      Ast0.wrap
        (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.CONST,pure)) )
-# 27044 "parser_cocci_menhir.ml"
+# 28964 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27059,17 +28979,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 42 "parser_cocci_menhir.mly"
+# 66 "parser_cocci_menhir.mly"
        (Parse_aux.expinfo)
-# 27065 "parser_cocci_menhir.ml"
+# 28985 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_nest_expressions_ = 
-# 1388 "parser_cocci_menhir.mly"
+# 1412 "parser_cocci_menhir.mly"
      ( let (nm,constraints,pure,clt) = _1 in
      Ast0.wrap(Ast0.MetaErr(P.clt2mcode nm clt,constraints,pure)) )
-# 27073 "parser_cocci_menhir.ml"
+# 28993 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27088,18 +29008,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 46 "parser_cocci_menhir.mly"
+# 70 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 27094 "parser_cocci_menhir.ml"
+# 29014 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_nest_expressions_ = 
-# 1391 "parser_cocci_menhir.mly"
+# 1415 "parser_cocci_menhir.mly"
      ( let (nm,constraints,pure,ty,clt) = _1 in
      Ast0.wrap
        (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ANY,pure)) )
-# 27103 "parser_cocci_menhir.ml"
+# 29023 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27118,18 +29038,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 46 "parser_cocci_menhir.mly"
+# 70 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 27124 "parser_cocci_menhir.ml"
+# 29044 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_nest_expressions_ = 
-# 1395 "parser_cocci_menhir.mly"
+# 1419 "parser_cocci_menhir.mly"
      ( let (nm,constraints,pure,ty,clt) = _1 in
      Ast0.wrap
        (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ID,pure)) )
-# 27133 "parser_cocci_menhir.ml"
+# 29053 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27148,18 +29068,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 46 "parser_cocci_menhir.mly"
+# 70 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 27154 "parser_cocci_menhir.ml"
+# 29074 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_nest_expressions_ = 
-# 1399 "parser_cocci_menhir.mly"
+# 1423 "parser_cocci_menhir.mly"
      ( let (nm,constraints,pure,ty,clt) = _1 in
      Ast0.wrap
        (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.LocalID,pure)) )
-# 27163 "parser_cocci_menhir.ml"
+# 29083 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27188,23 +29108,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 27194 "parser_cocci_menhir.ml"
+# 29114 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_eexpr = Obj.magic _2 in
         let _1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 27200 "parser_cocci_menhir.ml"
+# 29120 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_primary_expr_eexpr_nest_expressions_ = 
-# 1403 "parser_cocci_menhir.mly"
+# 1427 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.Paren(P.clt2mcode "(" _1,_2,
                            P.clt2mcode ")" _3)) )
-# 27208 "parser_cocci_menhir.ml"
+# 29128 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27233,25 +29153,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 27239 "parser_cocci_menhir.ml"
+# 29159 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_midzero_list_eexpr_eexpr_ = Obj.magic _2 in
         let _1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 27245 "parser_cocci_menhir.ml"
+# 29165 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_primary_expr_eexpr_nest_expressions_ = 
-# 1406 "parser_cocci_menhir.mly"
+# 1430 "parser_cocci_menhir.mly"
      ( let (mids,code) = _2 in
        Ast0.wrap(Ast0.DisjExpr(P.clt2mcode "(" _1,
                               code, mids,
                               P.clt2mcode ")" _3)) )
-# 27255 "parser_cocci_menhir.ml"
+# 29175 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27273,9 +29193,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_nest_expressions_ = 
-# 1410 "parser_cocci_menhir.mly"
+# 1434 "parser_cocci_menhir.mly"
                  ( _1 )
-# 27279 "parser_cocci_menhir.ml"
+# 29199 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27297,9 +29217,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_expr_invalid_ = 
-# 1370 "parser_cocci_menhir.mly"
+# 1394 "parser_cocci_menhir.mly"
                 ( Ast0.wrap(Ast0.Ident(_1)) )
-# 27303 "parser_cocci_menhir.ml"
+# 29223 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27318,17 +29238,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 27324 "parser_cocci_menhir.ml"
+# 29244 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_expr_invalid_ = 
-# 1372 "parser_cocci_menhir.mly"
+# 1396 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Int x) clt)) )
-# 27332 "parser_cocci_menhir.ml"
+# 29252 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27347,17 +29267,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 27353 "parser_cocci_menhir.ml"
+# 29273 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_expr_invalid_ = 
-# 1375 "parser_cocci_menhir.mly"
+# 1399 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Float x) clt)) )
-# 27361 "parser_cocci_menhir.ml"
+# 29281 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27376,17 +29296,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 27382 "parser_cocci_menhir.ml"
+# 29302 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_expr_invalid_ = 
-# 1378 "parser_cocci_menhir.mly"
+# 1402 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.String x) clt)) )
-# 27390 "parser_cocci_menhir.ml"
+# 29310 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27405,17 +29325,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 27411 "parser_cocci_menhir.ml"
+# 29331 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_expr_invalid_ = 
-# 1381 "parser_cocci_menhir.mly"
+# 1405 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Char x) clt)) )
-# 27419 "parser_cocci_menhir.ml"
+# 29339 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27434,18 +29354,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 46 "parser_cocci_menhir.mly"
+# 70 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 27440 "parser_cocci_menhir.ml"
+# 29360 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_expr_invalid_ = 
-# 1384 "parser_cocci_menhir.mly"
+# 1408 "parser_cocci_menhir.mly"
      ( let (nm,constraints,pure,ty,clt) = _1 in
      Ast0.wrap
        (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.CONST,pure)) )
-# 27449 "parser_cocci_menhir.ml"
+# 29369 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27464,17 +29384,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 42 "parser_cocci_menhir.mly"
+# 66 "parser_cocci_menhir.mly"
        (Parse_aux.expinfo)
-# 27470 "parser_cocci_menhir.ml"
+# 29390 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_expr_invalid_ = 
-# 1388 "parser_cocci_menhir.mly"
+# 1412 "parser_cocci_menhir.mly"
      ( let (nm,constraints,pure,clt) = _1 in
      Ast0.wrap(Ast0.MetaErr(P.clt2mcode nm clt,constraints,pure)) )
-# 27478 "parser_cocci_menhir.ml"
+# 29398 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27493,18 +29413,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 46 "parser_cocci_menhir.mly"
+# 70 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 27499 "parser_cocci_menhir.ml"
+# 29419 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_expr_invalid_ = 
-# 1391 "parser_cocci_menhir.mly"
+# 1415 "parser_cocci_menhir.mly"
      ( let (nm,constraints,pure,ty,clt) = _1 in
      Ast0.wrap
        (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ANY,pure)) )
-# 27508 "parser_cocci_menhir.ml"
+# 29428 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27523,18 +29443,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 46 "parser_cocci_menhir.mly"
+# 70 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 27529 "parser_cocci_menhir.ml"
+# 29449 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_expr_invalid_ = 
-# 1395 "parser_cocci_menhir.mly"
+# 1419 "parser_cocci_menhir.mly"
      ( let (nm,constraints,pure,ty,clt) = _1 in
      Ast0.wrap
        (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ID,pure)) )
-# 27538 "parser_cocci_menhir.ml"
+# 29458 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27553,18 +29473,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 46 "parser_cocci_menhir.mly"
+# 70 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 27559 "parser_cocci_menhir.ml"
+# 29479 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_expr_invalid_ = 
-# 1399 "parser_cocci_menhir.mly"
+# 1423 "parser_cocci_menhir.mly"
      ( let (nm,constraints,pure,ty,clt) = _1 in
      Ast0.wrap
        (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.LocalID,pure)) )
-# 27568 "parser_cocci_menhir.ml"
+# 29488 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27593,23 +29513,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 27599 "parser_cocci_menhir.ml"
+# 29519 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_eexpr = Obj.magic _2 in
         let _1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 27605 "parser_cocci_menhir.ml"
+# 29525 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_primary_expr_expr_invalid_ = 
-# 1403 "parser_cocci_menhir.mly"
+# 1427 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.Paren(P.clt2mcode "(" _1,_2,
                            P.clt2mcode ")" _3)) )
-# 27613 "parser_cocci_menhir.ml"
+# 29533 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27638,25 +29558,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 27644 "parser_cocci_menhir.ml"
+# 29564 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_midzero_list_expr_eexpr_ = Obj.magic _2 in
         let _1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 27650 "parser_cocci_menhir.ml"
+# 29570 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_primary_expr_expr_invalid_ = 
-# 1406 "parser_cocci_menhir.mly"
+# 1430 "parser_cocci_menhir.mly"
      ( let (mids,code) = _2 in
        Ast0.wrap(Ast0.DisjExpr(P.clt2mcode "(" _1,
                               code, mids,
                               P.clt2mcode ")" _3)) )
-# 27660 "parser_cocci_menhir.ml"
+# 29580 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27678,9 +29598,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_expr_invalid_ = 
-# 1410 "parser_cocci_menhir.mly"
+# 1434 "parser_cocci_menhir.mly"
                  ( _1 )
-# 27684 "parser_cocci_menhir.ml"
+# 29604 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27700,9 +29620,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure = 
-# 171 "parser_cocci_menhir.mly"
+# 195 "parser_cocci_menhir.mly"
                  ( Ast0.Pure )
-# 27706 "parser_cocci_menhir.ml"
+# 29626 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27722,9 +29642,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure = 
-# 172 "parser_cocci_menhir.mly"
+# 196 "parser_cocci_menhir.mly"
                  ( Ast0.Context )
-# 27728 "parser_cocci_menhir.ml"
+# 29648 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27748,9 +29668,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_pure = 
-# 173 "parser_cocci_menhir.mly"
+# 197 "parser_cocci_menhir.mly"
                  ( Ast0.PureContext )
-# 27754 "parser_cocci_menhir.ml"
+# 29674 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27774,9 +29694,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_pure = 
-# 174 "parser_cocci_menhir.mly"
+# 198 "parser_cocci_menhir.mly"
                  ( Ast0.PureContext )
-# 27780 "parser_cocci_menhir.ml"
+# 29700 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27791,9 +29711,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
         let _endpos = _startpos in
         let _v : 'tv_pure = 
-# 175 "parser_cocci_menhir.mly"
+# 199 "parser_cocci_menhir.mly"
                  ( Ast0.Impure )
-# 27797 "parser_cocci_menhir.ml"
+# 29717 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27812,16 +29732,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 37 "parser_cocci_menhir.mly"
+# 61 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 27818 "parser_cocci_menhir.ml"
+# 29738 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident = 
-# 1424 "parser_cocci_menhir.mly"
+# 1448 "parser_cocci_menhir.mly"
             ( _1 )
-# 27825 "parser_cocci_menhir.ml"
+# 29745 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27841,9 +29761,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1427 "parser_cocci_menhir.mly"
+# 1451 "parser_cocci_menhir.mly"
                  ( "identifier" )
-# 27847 "parser_cocci_menhir.ml"
+# 29767 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27863,9 +29783,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1428 "parser_cocci_menhir.mly"
+# 1452 "parser_cocci_menhir.mly"
                  ( "expression" )
-# 27869 "parser_cocci_menhir.ml"
+# 29789 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27885,9 +29805,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1429 "parser_cocci_menhir.mly"
+# 1453 "parser_cocci_menhir.mly"
                 ( "statement" )
-# 27891 "parser_cocci_menhir.ml"
+# 29811 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27907,9 +29827,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1430 "parser_cocci_menhir.mly"
+# 1454 "parser_cocci_menhir.mly"
                ( "function" )
-# 27913 "parser_cocci_menhir.ml"
+# 29833 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27929,9 +29849,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1431 "parser_cocci_menhir.mly"
+# 1455 "parser_cocci_menhir.mly"
             ( "local" )
-# 27935 "parser_cocci_menhir.ml"
+# 29855 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27951,9 +29871,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1432 "parser_cocci_menhir.mly"
+# 1456 "parser_cocci_menhir.mly"
            ( "type" )
-# 27957 "parser_cocci_menhir.ml"
+# 29877 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27973,9 +29893,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1433 "parser_cocci_menhir.mly"
+# 1457 "parser_cocci_menhir.mly"
                 ( "parameter" )
-# 27979 "parser_cocci_menhir.ml"
+# 29899 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27995,9 +29915,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1434 "parser_cocci_menhir.mly"
+# 1458 "parser_cocci_menhir.mly"
                    ( "idexpression" )
-# 28001 "parser_cocci_menhir.ml"
+# 29921 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28017,9 +29937,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1435 "parser_cocci_menhir.mly"
+# 1459 "parser_cocci_menhir.mly"
                   ( "initialiser" )
-# 28023 "parser_cocci_menhir.ml"
+# 29943 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28039,9 +29959,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1436 "parser_cocci_menhir.mly"
+# 1460 "parser_cocci_menhir.mly"
            ( "list" )
-# 28045 "parser_cocci_menhir.ml"
+# 29965 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28061,9 +29981,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1437 "parser_cocci_menhir.mly"
+# 1461 "parser_cocci_menhir.mly"
             ( "fresh" )
-# 28067 "parser_cocci_menhir.ml"
+# 29987 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28083,9 +30003,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1438 "parser_cocci_menhir.mly"
+# 1462 "parser_cocci_menhir.mly"
                ( "constant" )
-# 28089 "parser_cocci_menhir.ml"
+# 30009 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28105,9 +30025,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1439 "parser_cocci_menhir.mly"
+# 1463 "parser_cocci_menhir.mly"
             ( "error" )
-# 28111 "parser_cocci_menhir.ml"
+# 30031 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28127,9 +30047,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1440 "parser_cocci_menhir.mly"
+# 1464 "parser_cocci_menhir.mly"
             ( "words" )
-# 28133 "parser_cocci_menhir.ml"
+# 30053 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28149,9 +30069,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1441 "parser_cocci_menhir.mly"
+# 1465 "parser_cocci_menhir.mly"
            ( "pure" )
-# 28155 "parser_cocci_menhir.ml"
+# 30075 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28171,9 +30091,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1442 "parser_cocci_menhir.mly"
+# 1466 "parser_cocci_menhir.mly"
               ( "context" )
-# 28177 "parser_cocci_menhir.ml"
+# 30097 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28193,9 +30113,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1443 "parser_cocci_menhir.mly"
+# 1467 "parser_cocci_menhir.mly"
                 ( "generated" )
-# 28199 "parser_cocci_menhir.ml"
+# 30119 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28215,9 +30135,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1444 "parser_cocci_menhir.mly"
+# 1468 "parser_cocci_menhir.mly"
               ( "typedef" )
-# 28221 "parser_cocci_menhir.ml"
+# 30141 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28237,9 +30157,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1445 "parser_cocci_menhir.mly"
+# 1469 "parser_cocci_menhir.mly"
                ( "declarer" )
-# 28243 "parser_cocci_menhir.ml"
+# 30163 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28259,9 +30179,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1446 "parser_cocci_menhir.mly"
+# 1470 "parser_cocci_menhir.mly"
                ( "iterator" )
-# 28265 "parser_cocci_menhir.ml"
+# 30185 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28281,9 +30201,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1447 "parser_cocci_menhir.mly"
+# 1471 "parser_cocci_menhir.mly"
            ( "name" )
-# 28287 "parser_cocci_menhir.ml"
+# 30207 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28303,9 +30223,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1448 "parser_cocci_menhir.mly"
+# 1472 "parser_cocci_menhir.mly"
                ( "position" )
-# 28309 "parser_cocci_menhir.ml"
+# 30229 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28327,9 +30247,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_or_meta_ident = 
-# 1455 "parser_cocci_menhir.mly"
+# 1479 "parser_cocci_menhir.mly"
                                  ( (None,P.id2name _1) )
-# 28333 "parser_cocci_menhir.ml"
+# 30253 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28351,9 +30271,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_or_meta_ident = 
-# 1456 "parser_cocci_menhir.mly"
+# 1480 "parser_cocci_menhir.mly"
                                  ( (None,_1) )
-# 28357 "parser_cocci_menhir.ml"
+# 30277 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28375,9 +30295,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_or_meta_ident = 
-# 1457 "parser_cocci_menhir.mly"
+# 1481 "parser_cocci_menhir.mly"
                                  ( _1 )
-# 28381 "parser_cocci_menhir.ml"
+# 30301 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28405,13 +30325,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_i_ in
         let _endpos = _endpos_optc_ in
         let _v : 'tv_pure_ident_or_meta_ident_with_econstraint_not_ceq_or_sub_ = 
-# 1483 "parser_cocci_menhir.mly"
+# 1507 "parser_cocci_menhir.mly"
     (
       match optc with
          None   -> (i, Ast0.NoConstraint)
        | Some c -> (i, c)
     )
-# 28415 "parser_cocci_menhir.ml"
+# 30335 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28439,13 +30359,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_i_ in
         let _endpos = _endpos_optc_ in
         let _v : 'tv_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe_or_sub_ = 
-# 1483 "parser_cocci_menhir.mly"
+# 1507 "parser_cocci_menhir.mly"
     (
       match optc with
          None   -> (i, Ast0.NoConstraint)
        | Some c -> (i, c)
     )
-# 28449 "parser_cocci_menhir.ml"
+# 30369 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28473,13 +30393,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_i_ in
         let _endpos = _endpos_c_ in
         let _v : 'tv_pure_ident_or_meta_ident_with_idconstraint_re_or_not_eqid_ = 
-# 1501 "parser_cocci_menhir.mly"
+# 1525 "parser_cocci_menhir.mly"
     (
       match c with
          None -> (i, Ast.IdNoConstraint)
        | Some constraint_ -> (i,constraint_)
     )
-# 28483 "parser_cocci_menhir.ml"
+# 30403 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28507,14 +30427,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_i_ in
         let _endpos = _endpos_c_ in
         let _v : 'tv_pure_ident_or_meta_ident_with_idconstraint_virt_re_or_not_eqid_ = 
-# 1491 "parser_cocci_menhir.mly"
+# 1515 "parser_cocci_menhir.mly"
     (
       Common.Left
         (match c with
          None -> (i, Ast.IdNoConstraint)
        | Some constraint_ -> (i,constraint_))
     )
-# 28518 "parser_cocci_menhir.ml"
+# 30438 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28544,9 +30464,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_pure_ident_or_meta_ident_with_idconstraint_virt_re_or_not_eqid_ = 
-# 1497 "parser_cocci_menhir.mly"
+# 1521 "parser_cocci_menhir.mly"
                            ( Common.Right (P.id2name _3) )
-# 28550 "parser_cocci_menhir.ml"
+# 30470 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28568,9 +30488,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_or_meta_ident_with_seed = 
-# 1460 "parser_cocci_menhir.mly"
+# 1484 "parser_cocci_menhir.mly"
                                 ( (_1,Ast.NoVal) )
-# 28574 "parser_cocci_menhir.ml"
+# 30494 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28602,11 +30522,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_pure_ident_or_meta_ident_with_seed = 
-# 1463 "parser_cocci_menhir.mly"
+# 1487 "parser_cocci_menhir.mly"
   ( match _3 with
           [Ast.SeedString s] -> (_1,Ast.StringSeed s)
         | _ -> (_1,Ast.ListSeed _3) )
-# 28610 "parser_cocci_menhir.ml"
+# 30530 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28634,11 +30554,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_i_ in
         let _endpos = _endpos_l_ in
         let _v : 'tv_pure_ident_or_meta_ident_with_x_eq_not_pos_ = 
-# 1477 "parser_cocci_menhir.mly"
+# 1501 "parser_cocci_menhir.mly"
     (
       (i, l)
     )
-# 28642 "parser_cocci_menhir.ml"
+# 30562 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28660,9 +30580,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_re_ in
         let _endpos = _endpos_re_ in
         let _v : 'tv_re_or_not_eqe_or_sub = 
-# 1562 "parser_cocci_menhir.mly"
+# 1586 "parser_cocci_menhir.mly"
                   (Ast0.NotIdCstrt  re)
-# 28666 "parser_cocci_menhir.ml"
+# 30586 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28684,9 +30604,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_ne_ in
         let _endpos = _endpos_ne_ in
         let _v : 'tv_re_or_not_eqe_or_sub = 
-# 1563 "parser_cocci_menhir.mly"
+# 1587 "parser_cocci_menhir.mly"
                   (Ast0.NotExpCstrt ne)
-# 28690 "parser_cocci_menhir.ml"
+# 30610 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28708,9 +30628,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_s_ in
         let _endpos = _endpos_s_ in
         let _v : 'tv_re_or_not_eqe_or_sub = 
-# 1564 "parser_cocci_menhir.mly"
+# 1588 "parser_cocci_menhir.mly"
                   (Ast0.SubExpCstrt s)
-# 28714 "parser_cocci_menhir.ml"
+# 30634 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28732,9 +30652,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_re_ in
         let _endpos = _endpos_re_ in
         let _v : 'tv_re_or_not_eqid = 
-# 1508 "parser_cocci_menhir.mly"
+# 1532 "parser_cocci_menhir.mly"
                   (Ast.IdRegExpConstraint re)
-# 28738 "parser_cocci_menhir.ml"
+# 30658 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28756,9 +30676,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_ne_ in
         let _endpos = _endpos_ne_ in
         let _v : 'tv_re_or_not_eqid = 
-# 1509 "parser_cocci_menhir.mly"
+# 1533 "parser_cocci_menhir.mly"
                   (ne)
-# 28762 "parser_cocci_menhir.ml"
+# 30682 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28781,21 +30701,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let re : (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 28787 "parser_cocci_menhir.ml"
+# 30707 "parser_cocci_menhir.ml"
         ) = Obj.magic re in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_re_ in
         let _v : 'tv_regexp_eqid = 
-# 1513 "parser_cocci_menhir.mly"
+# 1537 "parser_cocci_menhir.mly"
          ( (if !Data.in_iso
            then failwith "constraints not allowed in iso file");
           (if !Data.in_generating
            then failwith "constraints not allowed in a generated rule file");
           let (s,_) = re in Ast.IdRegExp (s,Str.regexp s)
         )
-# 28799 "parser_cocci_menhir.ml"
+# 30719 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28818,21 +30738,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let re : (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 28824 "parser_cocci_menhir.ml"
+# 30744 "parser_cocci_menhir.ml"
         ) = Obj.magic re in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_re_ in
         let _v : 'tv_regexp_eqid = 
-# 1520 "parser_cocci_menhir.mly"
+# 1544 "parser_cocci_menhir.mly"
          ( (if !Data.in_iso
            then failwith "constraints not allowed in iso file");
           (if !Data.in_generating
            then failwith "constraints not allowed in a generated rule file");
           let (s,_) = re in Ast.IdNotRegExp (s,Str.regexp s)
         )
-# 28836 "parser_cocci_menhir.ml"
+# 30756 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28847,13 +30767,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
         let _endpos = _startpos in
         let _v : (
-# 112 "parser_cocci_menhir.mly"
+# 136 "parser_cocci_menhir.mly"
       (unit)
-# 28853 "parser_cocci_menhir.ml"
+# 30773 "parser_cocci_menhir.ml"
         ) = 
-# 153 "parser_cocci_menhir.mly"
+# 177 "parser_cocci_menhir.mly"
         ( )
-# 28857 "parser_cocci_menhir.ml"
+# 30777 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28875,9 +30795,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_rule_elem_statement = 
-# 928 "parser_cocci_menhir.mly"
+# 976 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Decl((Ast0.default_info(),Ast0.context_befaft()),_1)) )
-# 28881 "parser_cocci_menhir.ml"
+# 30801 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28901,17 +30821,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 28907 "parser_cocci_menhir.ml"
+# 30827 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_expr = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_rule_elem_statement = 
-# 929 "parser_cocci_menhir.mly"
+# 977 "parser_cocci_menhir.mly"
                ( P.exp_stm _1 _2 )
-# 28915 "parser_cocci_menhir.ml"
+# 30835 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28940,22 +30860,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 28946 "parser_cocci_menhir.ml"
+# 30866 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_eexpr = Obj.magic _2 in
         let _1 : (
-# 35 "parser_cocci_menhir.mly"
+# 59 "parser_cocci_menhir.mly"
        (Data.clt)
-# 28952 "parser_cocci_menhir.ml"
+# 30872 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_rule_elem_statement = 
-# 930 "parser_cocci_menhir.mly"
+# 978 "parser_cocci_menhir.mly"
                         ( P.ret_exp _1 _2 _3 )
-# 28959 "parser_cocci_menhir.ml"
+# 30879 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28979,21 +30899,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 28985 "parser_cocci_menhir.ml"
+# 30905 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 35 "parser_cocci_menhir.mly"
+# 59 "parser_cocci_menhir.mly"
        (Data.clt)
-# 28990 "parser_cocci_menhir.ml"
+# 30910 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_rule_elem_statement = 
-# 931 "parser_cocci_menhir.mly"
+# 979 "parser_cocci_menhir.mly"
                   ( P.ret _1 _2 )
-# 28997 "parser_cocci_menhir.ml"
+# 30917 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29017,21 +30937,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 29023 "parser_cocci_menhir.ml"
+# 30943 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 36 "parser_cocci_menhir.mly"
+# 60 "parser_cocci_menhir.mly"
        (Data.clt)
-# 29028 "parser_cocci_menhir.ml"
+# 30948 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_rule_elem_statement = 
-# 932 "parser_cocci_menhir.mly"
+# 980 "parser_cocci_menhir.mly"
                  ( P.break _1 _2 )
-# 29035 "parser_cocci_menhir.ml"
+# 30955 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29055,21 +30975,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 29061 "parser_cocci_menhir.ml"
+# 30981 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 36 "parser_cocci_menhir.mly"
+# 60 "parser_cocci_menhir.mly"
        (Data.clt)
-# 29066 "parser_cocci_menhir.ml"
+# 30986 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_rule_elem_statement = 
-# 933 "parser_cocci_menhir.mly"
+# 981 "parser_cocci_menhir.mly"
                     ( P.cont _1 _2 )
-# 29073 "parser_cocci_menhir.ml"
+# 30993 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29098,26 +31018,26 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 29104 "parser_cocci_menhir.ml"
+# 31024 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_midzero_list_rule_elem_statement_rule_elem_statement_ = Obj.magic _2 in
         let _1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 29110 "parser_cocci_menhir.ml"
+# 31030 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_rule_elem_statement = 
-# 935 "parser_cocci_menhir.mly"
+# 983 "parser_cocci_menhir.mly"
     ( let (mids,code) = _2 in
     Ast0.wrap
       (Ast0.Disj(P.clt2mcode "(" _1,
                 List.map (function x -> Ast0.wrap(Ast0.DOTS([x]))) code,
                 mids, P.clt2mcode ")" _3)) )
-# 29121 "parser_cocci_menhir.ml"
+# 31041 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29171,20 +31091,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__7_ in
         let _v : (
-# 134 "parser_cocci_menhir.mly"
+# 158 "parser_cocci_menhir.mly"
       (Ast_cocci.rulename)
-# 29177 "parser_cocci_menhir.ml"
+# 31097 "parser_cocci_menhir.ml"
         ) = let nm =
           
 # 39 "standard.mly"
     ( None )
-# 29182 "parser_cocci_menhir.ml"
+# 31102 "parser_cocci_menhir.ml"
           
         in
         
-# 183 "parser_cocci_menhir.mly"
+# 207 "parser_cocci_menhir.mly"
       ( P.make_cocci_rule_name_result nm d i a e ee )
-# 29188 "parser_cocci_menhir.ml"
+# 31108 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29244,21 +31164,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_x0_ in
         let _endpos = _endpos__8_ in
         let _v : (
-# 134 "parser_cocci_menhir.mly"
+# 158 "parser_cocci_menhir.mly"
       (Ast_cocci.rulename)
-# 29250 "parser_cocci_menhir.ml"
+# 31170 "parser_cocci_menhir.ml"
         ) = let nm =
           let x = x0 in
           
 # 41 "standard.mly"
     ( Some x )
-# 29256 "parser_cocci_menhir.ml"
+# 31176 "parser_cocci_menhir.ml"
           
         in
         
-# 183 "parser_cocci_menhir.mly"
+# 207 "parser_cocci_menhir.mly"
       ( P.make_cocci_rule_name_result nm d i a e ee )
-# 29262 "parser_cocci_menhir.ml"
+# 31182 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29316,13 +31236,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__8_ in
         let _v : (
-# 134 "parser_cocci_menhir.mly"
+# 158 "parser_cocci_menhir.mly"
       (Ast_cocci.rulename)
-# 29322 "parser_cocci_menhir.ml"
+# 31242 "parser_cocci_menhir.ml"
         ) = 
-# 188 "parser_cocci_menhir.mly"
+# 212 "parser_cocci_menhir.mly"
       ( P.make_generated_rule_name_result None d i a e ee )
-# 29326 "parser_cocci_menhir.ml"
+# 31246 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29362,20 +31282,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__5_ in
         let _v : (
-# 134 "parser_cocci_menhir.mly"
+# 158 "parser_cocci_menhir.mly"
       (Ast_cocci.rulename)
-# 29368 "parser_cocci_menhir.ml"
+# 31288 "parser_cocci_menhir.ml"
         ) = let nm =
           
 # 39 "standard.mly"
     ( None )
-# 29373 "parser_cocci_menhir.ml"
+# 31293 "parser_cocci_menhir.ml"
           
         in
         
-# 190 "parser_cocci_menhir.mly"
+# 214 "parser_cocci_menhir.mly"
       ( P.make_script_rule_name_result lang nm d )
-# 29379 "parser_cocci_menhir.ml"
+# 31299 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29421,21 +31341,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__6_ in
         let _v : (
-# 134 "parser_cocci_menhir.mly"
+# 158 "parser_cocci_menhir.mly"
       (Ast_cocci.rulename)
-# 29427 "parser_cocci_menhir.ml"
+# 31347 "parser_cocci_menhir.ml"
         ) = let nm =
           let x = x0 in
           
 # 41 "standard.mly"
     ( Some x )
-# 29433 "parser_cocci_menhir.ml"
+# 31353 "parser_cocci_menhir.ml"
           
         in
         
-# 190 "parser_cocci_menhir.mly"
+# 214 "parser_cocci_menhir.mly"
       ( P.make_script_rule_name_result lang nm d )
-# 29439 "parser_cocci_menhir.ml"
+# 31359 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29475,13 +31395,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__5_ in
         let _v : (
-# 134 "parser_cocci_menhir.mly"
+# 158 "parser_cocci_menhir.mly"
       (Ast_cocci.rulename)
-# 29481 "parser_cocci_menhir.ml"
+# 31401 "parser_cocci_menhir.ml"
         ) = 
-# 192 "parser_cocci_menhir.mly"
+# 216 "parser_cocci_menhir.mly"
       ( P.make_initial_script_rule_name_result lang d )
-# 29485 "parser_cocci_menhir.ml"
+# 31405 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29521,13 +31441,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__5_ in
         let _v : (
-# 134 "parser_cocci_menhir.mly"
+# 158 "parser_cocci_menhir.mly"
       (Ast_cocci.rulename)
-# 29527 "parser_cocci_menhir.ml"
+# 31447 "parser_cocci_menhir.ml"
         ) = 
-# 194 "parser_cocci_menhir.mly"
+# 218 "parser_cocci_menhir.mly"
       ( P.make_final_script_rule_name_result lang d )
-# 29531 "parser_cocci_menhir.ml"
+# 31451 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29553,13 +31473,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_py_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 140 "parser_cocci_menhir.mly"
+# 164 "parser_cocci_menhir.mly"
        ((string option (*string*) * string option (*ast*)) * (Ast_cocci.meta_name * Ast_cocci.metavar) option)
-# 29559 "parser_cocci_menhir.ml"
+# 31479 "parser_cocci_menhir.ml"
         ) = 
-# 2045 "parser_cocci_menhir.mly"
+# 2078 "parser_cocci_menhir.mly"
   ( ((Some (P.id2name py), None), None) )
-# 29563 "parser_cocci_menhir.ml"
+# 31483 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29591,13 +31511,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_py_ in
         let _endpos = _endpos__3_ in
         let _v : (
-# 140 "parser_cocci_menhir.mly"
+# 164 "parser_cocci_menhir.mly"
        ((string option (*string*) * string option (*ast*)) * (Ast_cocci.meta_name * Ast_cocci.metavar) option)
-# 29597 "parser_cocci_menhir.ml"
+# 31517 "parser_cocci_menhir.ml"
         ) = 
-# 2047 "parser_cocci_menhir.mly"
+# 2080 "parser_cocci_menhir.mly"
   ( ((Some (P.id2name py), None), Some _2) )
-# 29601 "parser_cocci_menhir.ml"
+# 31521 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29645,13 +31565,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__7_ in
         let _v : (
-# 140 "parser_cocci_menhir.mly"
+# 164 "parser_cocci_menhir.mly"
        ((string option (*string*) * string option (*ast*)) * (Ast_cocci.meta_name * Ast_cocci.metavar) option)
-# 29651 "parser_cocci_menhir.ml"
+# 31571 "parser_cocci_menhir.ml"
         ) = 
-# 2049 "parser_cocci_menhir.mly"
+# 2082 "parser_cocci_menhir.mly"
   ( ((None, Some (P.id2name ast)), Some _6) )
-# 29655 "parser_cocci_menhir.ml"
+# 31575 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29699,13 +31619,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__7_ in
         let _v : (
-# 140 "parser_cocci_menhir.mly"
+# 164 "parser_cocci_menhir.mly"
        ((string option (*string*) * string option (*ast*)) * (Ast_cocci.meta_name * Ast_cocci.metavar) option)
-# 29705 "parser_cocci_menhir.ml"
+# 31625 "parser_cocci_menhir.ml"
         ) = 
-# 2051 "parser_cocci_menhir.mly"
+# 2084 "parser_cocci_menhir.mly"
   ( ((Some (P.id2name str), None), Some _6) )
-# 29709 "parser_cocci_menhir.ml"
+# 31629 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29755,13 +31675,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__7_ in
         let _v : (
-# 140 "parser_cocci_menhir.mly"
+# 164 "parser_cocci_menhir.mly"
        ((string option (*string*) * string option (*ast*)) * (Ast_cocci.meta_name * Ast_cocci.metavar) option)
-# 29761 "parser_cocci_menhir.ml"
+# 31681 "parser_cocci_menhir.ml"
         ) = 
-# 2053 "parser_cocci_menhir.mly"
+# 2086 "parser_cocci_menhir.mly"
   ( ((Some (P.id2name str), Some (P.id2name ast)), Some _6) )
-# 29765 "parser_cocci_menhir.ml"
+# 31685 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29794,18 +31714,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let cocci : 'tv_pure_ident = Obj.magic cocci in
         let _2 : (
-# 25 "parser_cocci_menhir.mly"
+# 49 "parser_cocci_menhir.mly"
       (string)
-# 29800 "parser_cocci_menhir.ml"
+# 31720 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_cocci_ in
         let _v : 'tv_script_name_decl = 
-# 2057 "parser_cocci_menhir.mly"
+# 2090 "parser_cocci_menhir.mly"
       ( let nm = P.id2name cocci in
         let mv = Parse_aux.lookup _2 nm in
         ((_2, nm), mv) )
-# 29809 "parser_cocci_menhir.ml"
+# 31729 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29839,12 +31759,12 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_cocci_ in
         let _v : 'tv_script_name_decl = 
-# 2061 "parser_cocci_menhir.mly"
+# 2094 "parser_cocci_menhir.mly"
       ( let nm = P.id2name cocci in
         let name = ("virtual", nm) in
         let mv = Ast.MetaIdDecl(Ast.NONE,name) in
         (name,mv) )
-# 29848 "parser_cocci_menhir.ml"
+# 31768 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29863,16 +31783,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 29869 "parser_cocci_menhir.ml"
+# 31789 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_seed_elem = 
-# 1468 "parser_cocci_menhir.mly"
+# 1492 "parser_cocci_menhir.mly"
           ( let (x,_) = _1 in Ast.SeedString x )
-# 29876 "parser_cocci_menhir.ml"
+# 31796 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29891,16 +31811,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 40 "parser_cocci_menhir.mly"
+# 64 "parser_cocci_menhir.mly"
        (Parse_aux.idinfo)
-# 29897 "parser_cocci_menhir.ml"
+# 31817 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_seed_elem = 
-# 1469 "parser_cocci_menhir.mly"
+# 1493 "parser_cocci_menhir.mly"
           ( let (x,_,_,_) = _1 in Ast.SeedId x )
-# 29904 "parser_cocci_menhir.ml"
+# 31824 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29929,18 +31849,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_pure_ident = Obj.magic _3 in
         let _1 : (
-# 25 "parser_cocci_menhir.mly"
+# 49 "parser_cocci_menhir.mly"
       (string)
-# 29935 "parser_cocci_menhir.ml"
+# 31855 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_seed_elem = 
-# 1471 "parser_cocci_menhir.mly"
+# 1495 "parser_cocci_menhir.mly"
     ( let nm = (_1,P.id2name _3) in
       P.check_meta(Ast.MetaIdDecl(Ast.NONE,nm));
       Ast.SeedId nm )
-# 29944 "parser_cocci_menhir.ml"
+# 31864 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29959,16 +31879,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let x : (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 29965 "parser_cocci_menhir.ml"
+# 31885 "parser_cocci_menhir.ml"
         ) = Obj.magic x in
         let _startpos = _startpos_x_ in
         let _endpos = _endpos_x_ in
         let _v : 'tv_separated_nonempty_list_TComma_TString_ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 29972 "parser_cocci_menhir.ml"
+# 31892 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29997,16 +31917,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let xs : 'tv_separated_nonempty_list_TComma_TString_ = Obj.magic xs in
         let x : (
-# 66 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 30003 "parser_cocci_menhir.ml"
+# 31923 "parser_cocci_menhir.ml"
         ) = Obj.magic x in
         let _startpos = _startpos_x_ in
         let _endpos = _endpos_xs_ in
         let _v : 'tv_separated_nonempty_list_TComma_TString_ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 30010 "parser_cocci_menhir.ml"
+# 31930 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30030,7 +31950,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_any_strict_ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 30034 "parser_cocci_menhir.ml"
+# 31954 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30064,7 +31984,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_any_strict_ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 30068 "parser_cocci_menhir.ml"
+# 31988 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30088,7 +32008,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_ctype_ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 30092 "parser_cocci_menhir.ml"
+# 32012 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30122,7 +32042,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_ctype_ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 30126 "parser_cocci_menhir.ml"
+# 32046 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30146,7 +32066,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_d_ident_ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 30150 "parser_cocci_menhir.ml"
+# 32070 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30180,7 +32100,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_d_ident_ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 30184 "parser_cocci_menhir.ml"
+# 32104 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30204,7 +32124,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_ident_or_const_ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 30208 "parser_cocci_menhir.ml"
+# 32128 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30238,7 +32158,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_ident_or_const_ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 30242 "parser_cocci_menhir.ml"
+# 32162 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30262,7 +32182,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_meta_ident_ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 30266 "parser_cocci_menhir.ml"
+# 32186 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30296,7 +32216,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_meta_ident_ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 30300 "parser_cocci_menhir.ml"
+# 32220 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30320,7 +32240,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_pure_ident_ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 30324 "parser_cocci_menhir.ml"
+# 32244 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30354,7 +32274,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_pure_ident_ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 30358 "parser_cocci_menhir.ml"
+# 32278 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30378,7 +32298,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 30382 "parser_cocci_menhir.ml"
+# 32302 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30412,7 +32332,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 30416 "parser_cocci_menhir.ml"
+# 32336 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30436,7 +32356,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_econstraint_not_ceq_or_sub__ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 30440 "parser_cocci_menhir.ml"
+# 32360 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30470,7 +32390,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_econstraint_not_ceq_or_sub__ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 30474 "parser_cocci_menhir.ml"
+# 32394 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30494,7 +32414,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe_or_sub__ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 30498 "parser_cocci_menhir.ml"
+# 32418 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30528,7 +32448,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe_or_sub__ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 30532 "parser_cocci_menhir.ml"
+# 32452 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30552,7 +32472,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_idconstraint_re_or_not_eqid__ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 30556 "parser_cocci_menhir.ml"
+# 32476 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30586,7 +32506,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_idconstraint_re_or_not_eqid__ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 30590 "parser_cocci_menhir.ml"
+# 32510 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30610,7 +32530,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_idconstraint_virt_re_or_not_eqid__ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 30614 "parser_cocci_menhir.ml"
+# 32534 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30644,7 +32564,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_idconstraint_virt_re_or_not_eqid__ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 30648 "parser_cocci_menhir.ml"
+# 32568 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30668,7 +32588,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_seed_ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 30672 "parser_cocci_menhir.ml"
+# 32592 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30702,7 +32622,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_seed_ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 30706 "parser_cocci_menhir.ml"
+# 32626 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30726,7 +32646,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_x_eq_not_pos__ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 30730 "parser_cocci_menhir.ml"
+# 32650 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30760,7 +32680,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_x_eq_not_pos__ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 30764 "parser_cocci_menhir.ml"
+# 32684 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30784,7 +32704,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_typedef_ident_ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 30788 "parser_cocci_menhir.ml"
+# 32708 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30818,7 +32738,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_typedef_ident_ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 30822 "parser_cocci_menhir.ml"
+# 32742 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30842,7 +32762,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TCppConcatOp_seed_elem_ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 30846 "parser_cocci_menhir.ml"
+# 32766 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30876,7 +32796,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TCppConcatOp_seed_elem_ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 30880 "parser_cocci_menhir.ml"
+# 32800 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30898,9 +32818,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_single_statement = 
-# 943 "parser_cocci_menhir.mly"
+# 991 "parser_cocci_menhir.mly"
                                       ( _1 )
-# 30904 "parser_cocci_menhir.ml"
+# 32824 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30929,26 +32849,26 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30935 "parser_cocci_menhir.ml"
+# 32855 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_midzero_list_statement_statement_ = Obj.magic _2 in
         let _1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30941 "parser_cocci_menhir.ml"
+# 32861 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_single_statement = 
-# 947 "parser_cocci_menhir.mly"
+# 995 "parser_cocci_menhir.mly"
       ( let (mids,code) = _2 in
         Ast0.wrap
          (Ast0.Disj(P.clt2mcode "(" _1,
                     List.map (function x -> Ast0.wrap(Ast0.DOTS([x]))) code,
                     mids, P.clt2mcode ")" _3)) )
-# 30952 "parser_cocci_menhir.ml"
+# 32872 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30970,9 +32890,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_statement = 
-# 870 "parser_cocci_menhir.mly"
+# 918 "parser_cocci_menhir.mly"
            ( _1 )
-# 30976 "parser_cocci_menhir.ml"
+# 32896 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30991,16 +32911,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 43 "parser_cocci_menhir.mly"
+# 67 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 30997 "parser_cocci_menhir.ml"
+# 32917 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_statement = 
-# 872 "parser_cocci_menhir.mly"
+# 920 "parser_cocci_menhir.mly"
     ( P.meta_stm _1 )
-# 31004 "parser_cocci_menhir.ml"
+# 32924 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31024,17 +32944,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31030 "parser_cocci_menhir.ml"
+# 32950 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_expr = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_statement = 
-# 874 "parser_cocci_menhir.mly"
+# 922 "parser_cocci_menhir.mly"
     ( P.exp_stm _1 _2 )
-# 31038 "parser_cocci_menhir.ml"
+# 32958 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31074,27 +32994,27 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _5 : 'tv_single_statement = Obj.magic _5 in
         let _4 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31080 "parser_cocci_menhir.ml"
+# 33000 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr = Obj.magic _3 in
         let _2 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31086 "parser_cocci_menhir.ml"
+# 33006 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 35 "parser_cocci_menhir.mly"
+# 59 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31091 "parser_cocci_menhir.ml"
+# 33011 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__5_ in
         let _v : 'tv_statement = 
-# 876 "parser_cocci_menhir.mly"
+# 924 "parser_cocci_menhir.mly"
     ( P.ifthen _1 _2 _3 _4 _5 )
-# 31098 "parser_cocci_menhir.ml"
+# 33018 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31144,33 +33064,33 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _7 : 'tv_single_statement = Obj.magic _7 in
         let _6 : (
-# 35 "parser_cocci_menhir.mly"
+# 59 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31150 "parser_cocci_menhir.ml"
+# 33070 "parser_cocci_menhir.ml"
         ) = Obj.magic _6 in
         let _5 : 'tv_single_statement = Obj.magic _5 in
         let _4 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31156 "parser_cocci_menhir.ml"
+# 33076 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr = Obj.magic _3 in
         let _2 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31162 "parser_cocci_menhir.ml"
+# 33082 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 35 "parser_cocci_menhir.mly"
+# 59 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31167 "parser_cocci_menhir.ml"
+# 33087 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__7_ in
         let _v : 'tv_statement = 
-# 878 "parser_cocci_menhir.mly"
+# 926 "parser_cocci_menhir.mly"
     ( P.ifthenelse _1 _2 _3 _4 _5 _6 _7 )
-# 31174 "parser_cocci_menhir.ml"
+# 33094 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31230,39 +33150,39 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _9 : 'tv_single_statement = Obj.magic _9 in
         let _8 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31236 "parser_cocci_menhir.ml"
+# 33156 "parser_cocci_menhir.ml"
         ) = Obj.magic _8 in
         let _7 : 'tv_option_eexpr_ = Obj.magic _7 in
         let _6 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31242 "parser_cocci_menhir.ml"
+# 33162 "parser_cocci_menhir.ml"
         ) = Obj.magic _6 in
         let _5 : 'tv_option_eexpr_ = Obj.magic _5 in
         let _4 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31248 "parser_cocci_menhir.ml"
+# 33168 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_option_eexpr_ = Obj.magic _3 in
         let _2 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31254 "parser_cocci_menhir.ml"
+# 33174 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 35 "parser_cocci_menhir.mly"
+# 59 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31259 "parser_cocci_menhir.ml"
+# 33179 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__9_ in
         let _v : 'tv_statement = 
-# 881 "parser_cocci_menhir.mly"
+# 929 "parser_cocci_menhir.mly"
     ( P.forloop _1 _2 _3 _4 _5 _6 _7 _8 _9 )
-# 31266 "parser_cocci_menhir.ml"
+# 33186 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31302,27 +33222,27 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _5 : 'tv_single_statement = Obj.magic _5 in
         let _4 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31308 "parser_cocci_menhir.ml"
+# 33228 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr = Obj.magic _3 in
         let _2 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31314 "parser_cocci_menhir.ml"
+# 33234 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 35 "parser_cocci_menhir.mly"
+# 59 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31319 "parser_cocci_menhir.ml"
+# 33239 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__5_ in
         let _v : 'tv_statement = 
-# 883 "parser_cocci_menhir.mly"
+# 931 "parser_cocci_menhir.mly"
     ( P.whileloop _1 _2 _3 _4 _5 )
-# 31326 "parser_cocci_menhir.ml"
+# 33246 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31371,38 +33291,38 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _7 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31377 "parser_cocci_menhir.ml"
+# 33297 "parser_cocci_menhir.ml"
         ) = Obj.magic _7 in
         let _6 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31382 "parser_cocci_menhir.ml"
+# 33302 "parser_cocci_menhir.ml"
         ) = Obj.magic _6 in
         let _5 : 'tv_eexpr = Obj.magic _5 in
         let _4 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31388 "parser_cocci_menhir.ml"
+# 33308 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : (
-# 35 "parser_cocci_menhir.mly"
+# 59 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31393 "parser_cocci_menhir.ml"
+# 33313 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_single_statement = Obj.magic _2 in
         let _1 : (
-# 35 "parser_cocci_menhir.mly"
+# 59 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31399 "parser_cocci_menhir.ml"
+# 33319 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__7_ in
         let _v : 'tv_statement = 
-# 885 "parser_cocci_menhir.mly"
+# 933 "parser_cocci_menhir.mly"
     ( P.doloop _1 _2 _3 _4 _5 _6 _7 )
-# 31406 "parser_cocci_menhir.ml"
+# 33326 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31442,23 +33362,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _5 : 'tv_single_statement = Obj.magic _5 in
         let _4 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31448 "parser_cocci_menhir.ml"
+# 33368 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr_list_option = Obj.magic _3 in
         let _2 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31454 "parser_cocci_menhir.ml"
+# 33374 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_iter_ident = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__5_ in
         let _v : 'tv_statement = 
-# 887 "parser_cocci_menhir.mly"
+# 935 "parser_cocci_menhir.mly"
     ( P.iterator _1 _2 _3 _4 _5 )
-# 31462 "parser_cocci_menhir.ml"
+# 33382 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31512,39 +33432,39 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _8 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31518 "parser_cocci_menhir.ml"
+# 33438 "parser_cocci_menhir.ml"
         ) = Obj.magic _8 in
         let _7 : 'tv_list_case_line_ = Obj.magic _7 in
         let _6 : 'tv_list_decl_var_ = Obj.magic _6 in
         let _5 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31525 "parser_cocci_menhir.ml"
+# 33445 "parser_cocci_menhir.ml"
         ) = Obj.magic _5 in
         let _4 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31530 "parser_cocci_menhir.ml"
+# 33450 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr = Obj.magic _3 in
         let _2 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31536 "parser_cocci_menhir.ml"
+# 33456 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 35 "parser_cocci_menhir.mly"
+# 59 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31541 "parser_cocci_menhir.ml"
+# 33461 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__8_ in
         let _v : 'tv_statement = 
-# 889 "parser_cocci_menhir.mly"
+# 937 "parser_cocci_menhir.mly"
     ( P.switch _1 _2 _3 _4 _5 (List.concat _6) _7 _8 )
-# 31548 "parser_cocci_menhir.ml"
+# 33468 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31573,22 +33493,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31579 "parser_cocci_menhir.ml"
+# 33499 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_eexpr = Obj.magic _2 in
         let _1 : (
-# 35 "parser_cocci_menhir.mly"
+# 59 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31585 "parser_cocci_menhir.ml"
+# 33505 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_statement = 
-# 890 "parser_cocci_menhir.mly"
+# 938 "parser_cocci_menhir.mly"
                         ( P.ret_exp _1 _2 _3 )
-# 31592 "parser_cocci_menhir.ml"
+# 33512 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31612,21 +33532,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31618 "parser_cocci_menhir.ml"
+# 33538 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 35 "parser_cocci_menhir.mly"
+# 59 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31623 "parser_cocci_menhir.ml"
+# 33543 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_statement = 
-# 891 "parser_cocci_menhir.mly"
+# 939 "parser_cocci_menhir.mly"
                   ( P.ret _1 _2 )
-# 31630 "parser_cocci_menhir.ml"
+# 33550 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31650,21 +33570,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31656 "parser_cocci_menhir.ml"
+# 33576 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 36 "parser_cocci_menhir.mly"
+# 60 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31661 "parser_cocci_menhir.ml"
+# 33581 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_statement = 
-# 892 "parser_cocci_menhir.mly"
+# 940 "parser_cocci_menhir.mly"
                  ( P.break _1 _2 )
-# 31668 "parser_cocci_menhir.ml"
+# 33588 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31688,21 +33608,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31694 "parser_cocci_menhir.ml"
+# 33614 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 36 "parser_cocci_menhir.mly"
+# 60 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31699 "parser_cocci_menhir.ml"
+# 33619 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_statement = 
-# 893 "parser_cocci_menhir.mly"
+# 941 "parser_cocci_menhir.mly"
                     ( P.cont _1 _2 )
-# 31706 "parser_cocci_menhir.ml"
+# 33626 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31726,17 +33646,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31732 "parser_cocci_menhir.ml"
+# 33652 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_ident = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_statement = 
-# 894 "parser_cocci_menhir.mly"
+# 942 "parser_cocci_menhir.mly"
                 ( P.label _1 _2 )
-# 31740 "parser_cocci_menhir.ml"
+# 33660 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31765,22 +33685,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31771 "parser_cocci_menhir.ml"
+# 33691 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_ident = Obj.magic _2 in
         let _1 : (
-# 36 "parser_cocci_menhir.mly"
+# 60 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31777 "parser_cocci_menhir.ml"
+# 33697 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_statement = 
-# 895 "parser_cocci_menhir.mly"
+# 943 "parser_cocci_menhir.mly"
                       ( P.goto _1 _2 _3 )
-# 31784 "parser_cocci_menhir.ml"
+# 33704 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31809,22 +33729,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31815 "parser_cocci_menhir.ml"
+# 33735 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_fun_start = Obj.magic _2 in
         let _1 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31821 "parser_cocci_menhir.ml"
+# 33741 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_statement = 
-# 897 "parser_cocci_menhir.mly"
+# 945 "parser_cocci_menhir.mly"
     ( P.seq _1 _2 _3 )
-# 31828 "parser_cocci_menhir.ml"
+# 33748 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31849,16 +33769,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let w : 'tv_list_whenppdecs_ = Obj.magic w in
         let _1 : (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31855 "parser_cocci_menhir.ml"
+# 33775 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_w_ in
         let _v : 'tv_stm_dots = 
-# 901 "parser_cocci_menhir.mly"
+# 949 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Dots(P.clt2mcode "..." _1, List.concat w)) )
-# 31862 "parser_cocci_menhir.ml"
+# 33782 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31892,24 +33812,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let c : (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31898 "parser_cocci_menhir.ml"
+# 33818 "parser_cocci_menhir.ml"
         ) = Obj.magic c in
         let b : 'tv_nest_start = Obj.magic b in
         let w : 'tv_list_whenppdecs_ = Obj.magic w in
         let _1 : (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31905 "parser_cocci_menhir.ml"
+# 33825 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_c_ in
         let _v : 'tv_stm_dots = 
-# 903 "parser_cocci_menhir.mly"
+# 951 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Nest(P.clt2mcode "<..." _1, b,
                          P.clt2mcode "...>" c, List.concat w, false)) )
-# 31913 "parser_cocci_menhir.ml"
+# 33833 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31943,24 +33863,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let c : (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31949 "parser_cocci_menhir.ml"
+# 33869 "parser_cocci_menhir.ml"
         ) = Obj.magic c in
         let b : 'tv_nest_start = Obj.magic b in
         let w : 'tv_list_whenppdecs_ = Obj.magic w in
         let _1 : (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31956 "parser_cocci_menhir.ml"
+# 33876 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_c_ in
         let _v : 'tv_stm_dots = 
-# 906 "parser_cocci_menhir.mly"
+# 954 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Nest(P.clt2mcode "<+..." _1, b,
                          P.clt2mcode "...+>" c, List.concat w, true)) )
-# 31964 "parser_cocci_menhir.ml"
+# 33884 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31979,16 +33899,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let s : (
-# 31 "parser_cocci_menhir.mly"
+# 55 "parser_cocci_menhir.mly"
       (Data.clt)
-# 31985 "parser_cocci_menhir.ml"
+# 33905 "parser_cocci_menhir.ml"
         ) = Obj.magic s in
         let _startpos = _startpos_s_ in
         let _endpos = _endpos_s_ in
         let _v : 'tv_storage = 
-# 832 "parser_cocci_menhir.mly"
+# 880 "parser_cocci_menhir.mly"
                         ( P.clt2mcode Ast.Static s )
-# 31992 "parser_cocci_menhir.ml"
+# 33912 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32007,16 +33927,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let s : (
-# 31 "parser_cocci_menhir.mly"
+# 55 "parser_cocci_menhir.mly"
       (Data.clt)
-# 32013 "parser_cocci_menhir.ml"
+# 33933 "parser_cocci_menhir.ml"
         ) = Obj.magic s in
         let _startpos = _startpos_s_ in
         let _endpos = _endpos_s_ in
         let _v : 'tv_storage = 
-# 833 "parser_cocci_menhir.mly"
+# 881 "parser_cocci_menhir.mly"
                         ( P.clt2mcode Ast.Auto s )
-# 32020 "parser_cocci_menhir.ml"
+# 33940 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32035,16 +33955,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let s : (
-# 31 "parser_cocci_menhir.mly"
+# 55 "parser_cocci_menhir.mly"
       (Data.clt)
-# 32041 "parser_cocci_menhir.ml"
+# 33961 "parser_cocci_menhir.ml"
         ) = Obj.magic s in
         let _startpos = _startpos_s_ in
         let _endpos = _endpos_s_ in
         let _v : 'tv_storage = 
-# 834 "parser_cocci_menhir.mly"
+# 882 "parser_cocci_menhir.mly"
                         ( P.clt2mcode Ast.Register s )
-# 32048 "parser_cocci_menhir.ml"
+# 33968 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32063,16 +33983,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let s : (
-# 31 "parser_cocci_menhir.mly"
+# 55 "parser_cocci_menhir.mly"
       (Data.clt)
-# 32069 "parser_cocci_menhir.ml"
+# 33989 "parser_cocci_menhir.ml"
         ) = Obj.magic s in
         let _startpos = _startpos_s_ in
         let _endpos = _endpos_s_ in
         let _v : 'tv_storage = 
-# 835 "parser_cocci_menhir.mly"
+# 883 "parser_cocci_menhir.mly"
                         ( P.clt2mcode Ast.Extern s )
-# 32076 "parser_cocci_menhir.ml"
+# 33996 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32092,9 +34012,141 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_struct_decl = 
-# 585 "parser_cocci_menhir.mly"
-               ( [] )
-# 32098 "parser_cocci_menhir.ml"
+# 614 "parser_cocci_menhir.mly"
+                      ( [] )
+# 34018 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : 'tv_struct_decl_one = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_struct_decl = 
+# 615 "parser_cocci_menhir.mly"
+                      ( [_1] )
+# 34042 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : 'tv_struct_decl_list_start = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_struct_decl_list = 
+# 637 "parser_cocci_menhir.mly"
+                          ( Ast0.wrap(Ast0.DOTS(_1)) )
+# 34066 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = _1;
+          MenhirLib.EngineTypes.startp = _startpos__1_;
+          MenhirLib.EngineTypes.endp = _endpos__1_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let _1 : 'tv_struct_decl = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_struct_decl_list_start = 
+# 640 "parser_cocci_menhir.mly"
+                                     ( _1 )
+# 34090 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = _2;
+          MenhirLib.EngineTypes.startp = _startpos__2_;
+          MenhirLib.EngineTypes.endp = _endpos__2_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = _1;
+            MenhirLib.EngineTypes.startp = _startpos__1_;
+            MenhirLib.EngineTypes.endp = _endpos__1_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let _2 : 'tv_struct_decl_list_start = Obj.magic _2 in
+        let _1 : 'tv_struct_decl = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_struct_decl_list_start = 
+# 641 "parser_cocci_menhir.mly"
+                                     ( _1@_2 )
+# 34120 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = r;
+          MenhirLib.EngineTypes.startp = _startpos_r_;
+          MenhirLib.EngineTypes.endp = _endpos_r_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.state = _menhir_s;
+            MenhirLib.EngineTypes.semv = d;
+            MenhirLib.EngineTypes.startp = _startpos_d_;
+            MenhirLib.EngineTypes.endp = _endpos_d_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let r : 'tv_continue_struct_decl_list = Obj.magic r in
+        let d : 'tv_edots_when_TEllipsis_struct_decl_one_ = Obj.magic d in
+        let _startpos = _startpos_d_ in
+        let _endpos = _endpos_r_ in
+        let _v : 'tv_struct_decl_list_start = 
+# 643 "parser_cocci_menhir.mly"
+    ( (P.mkddots_one "..." d)::r )
+# 34150 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32113,16 +34165,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 44 "parser_cocci_menhir.mly"
+# 68 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 32119 "parser_cocci_menhir.ml"
+# 34171 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
-        let _v : 'tv_struct_decl = 
-# 586 "parser_cocci_menhir.mly"
-                 ( [P.meta_field _1] )
-# 32126 "parser_cocci_menhir.ml"
+        let _v : 'tv_struct_decl_one = 
+# 618 "parser_cocci_menhir.mly"
+                 ( P.meta_field _1 )
+# 34178 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32151,19 +34203,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 32157 "parser_cocci_menhir.ml"
+# 34209 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let d : 'tv_d_ident = Obj.magic d in
         let t : 'tv_ctype = Obj.magic t in
         let _startpos = _startpos_t_ in
         let _endpos = _endpos_pv_ in
-        let _v : 'tv_struct_decl = 
-# 588 "parser_cocci_menhir.mly"
+        let _v : 'tv_struct_decl_one = 
+# 620 "parser_cocci_menhir.mly"
   ( let (id,fn) = d in
-        [Ast0.wrap(Ast0.UnInit(None,fn t,id,P.clt2mcode ";" pv))] )
-# 32167 "parser_cocci_menhir.ml"
+        Ast0.wrap(Ast0.UnInit(None,fn t,id,P.clt2mcode ";" pv)) )
+# 34219 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32222,50 +34274,50 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 32228 "parser_cocci_menhir.ml"
+# 34280 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let rp2 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 32233 "parser_cocci_menhir.ml"
+# 34285 "parser_cocci_menhir.ml"
         ) = Obj.magic rp2 in
         let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in
         let lp2 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 32239 "parser_cocci_menhir.ml"
+# 34291 "parser_cocci_menhir.ml"
         ) = Obj.magic lp2 in
         let rp1 : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 32244 "parser_cocci_menhir.ml"
+# 34296 "parser_cocci_menhir.ml"
         ) = Obj.magic rp1 in
         let d : 'tv_d_ident = Obj.magic d in
         let st : (
-# 78 "parser_cocci_menhir.mly"
+# 102 "parser_cocci_menhir.mly"
        (Data.clt)
-# 32250 "parser_cocci_menhir.ml"
+# 34302 "parser_cocci_menhir.ml"
         ) = Obj.magic st in
         let lp1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 32255 "parser_cocci_menhir.ml"
+# 34307 "parser_cocci_menhir.ml"
         ) = Obj.magic lp1 in
         let t : 'tv_ctype = Obj.magic t in
         let _startpos = _startpos_t_ in
         let _endpos = _endpos_pv_ in
-        let _v : 'tv_struct_decl = 
-# 592 "parser_cocci_menhir.mly"
+        let _v : 'tv_struct_decl_one = 
+# 624 "parser_cocci_menhir.mly"
         ( let (id,fn) = d in
         let t =
          Ast0.wrap
            (Ast0.FunctionPointer
               (t,P.clt2mcode "(" lp1,P.clt2mcode "*" st,P.clt2mcode ")" rp1,
                P.clt2mcode "(" lp2,p,P.clt2mcode ")" rp2)) in
-        [Ast0.wrap(Ast0.UnInit(None,fn t,id,P.clt2mcode ";" pv))] )
-# 32269 "parser_cocci_menhir.ml"
+        Ast0.wrap(Ast0.UnInit(None,fn t,id,P.clt2mcode ";" pv)) )
+# 34321 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32294,27 +34346,27 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 32300 "parser_cocci_menhir.ml"
+# 34352 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let d : 'tv_d_ident = Obj.magic d in
         let i : 'tv_pure_ident = Obj.magic i in
         let _startpos = _startpos_i_ in
         let _endpos = _endpos_pv_ in
-        let _v : 'tv_struct_decl = let cv =
+        let _v : 'tv_struct_decl_one = let cv =
           
 # 39 "standard.mly"
     ( None )
-# 32310 "parser_cocci_menhir.ml"
+# 34362 "parser_cocci_menhir.ml"
           
         in
         
-# 600 "parser_cocci_menhir.mly"
+# 632 "parser_cocci_menhir.mly"
   ( let (id,fn) = d in
         let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in
-        [Ast0.wrap(Ast0.UnInit(None,fn idtype,id,P.clt2mcode ";" pv))] )
-# 32318 "parser_cocci_menhir.ml"
+        Ast0.wrap(Ast0.UnInit(None,fn idtype,id,P.clt2mcode ";" pv)) )
+# 34370 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32348,137 +34400,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 86 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (Data.clt)
-# 32354 "parser_cocci_menhir.ml"
+# 34406 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let d : 'tv_d_ident = Obj.magic d in
         let i : 'tv_pure_ident = Obj.magic i in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
         let _endpos = _endpos_pv_ in
-        let _v : 'tv_struct_decl = let cv =
+        let _v : 'tv_struct_decl_one = let cv =
           let x = x0 in
           
 # 41 "standard.mly"
     ( Some x )
-# 32366 "parser_cocci_menhir.ml"
+# 34418 "parser_cocci_menhir.ml"
           
         in
         
-# 600 "parser_cocci_menhir.mly"
+# 632 "parser_cocci_menhir.mly"
   ( let (id,fn) = d in
         let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in
-        [Ast0.wrap(Ast0.UnInit(None,fn idtype,id,P.clt2mcode ";" pv))] )
-# 32374 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = _1;
-          MenhirLib.EngineTypes.startp = _startpos__1_;
-          MenhirLib.EngineTypes.endp = _endpos__1_;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          } = _menhir_stack in
-        let _1 : 'tv_struct_decl_list_start = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__1_ in
-        let _v : 'tv_struct_decl_list = 
-# 605 "parser_cocci_menhir.mly"
-                          ( Ast0.wrap(Ast0.DOTS(_1)) )
-# 32398 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = _1;
-          MenhirLib.EngineTypes.startp = _startpos__1_;
-          MenhirLib.EngineTypes.endp = _endpos__1_;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          } = _menhir_stack in
-        let _1 : 'tv_struct_decl = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__1_ in
-        let _v : 'tv_struct_decl_list_start = 
-# 608 "parser_cocci_menhir.mly"
-                                     ( _1 )
-# 32422 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = _2;
-          MenhirLib.EngineTypes.startp = _startpos__2_;
-          MenhirLib.EngineTypes.endp = _endpos__2_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = _1;
-            MenhirLib.EngineTypes.startp = _startpos__1_;
-            MenhirLib.EngineTypes.endp = _endpos__1_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
-          } = _menhir_stack in
-        let _2 : 'tv_struct_decl_list_start = Obj.magic _2 in
-        let _1 : 'tv_struct_decl = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__2_ in
-        let _v : 'tv_struct_decl_list_start = 
-# 609 "parser_cocci_menhir.mly"
-                                     ( _1@_2 )
-# 32452 "parser_cocci_menhir.ml"
-         in
-        _menhir_env.MenhirLib.EngineTypes.stack <- {
-          MenhirLib.EngineTypes.state = _menhir_s;
-          MenhirLib.EngineTypes.semv = Obj.repr _v;
-          MenhirLib.EngineTypes.startp = _startpos;
-          MenhirLib.EngineTypes.endp = _endpos;
-          MenhirLib.EngineTypes.next = _menhir_stack;
-          });
-      (fun _menhir_env ->
-        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
-        let {
-          MenhirLib.EngineTypes.semv = r;
-          MenhirLib.EngineTypes.startp = _startpos_r_;
-          MenhirLib.EngineTypes.endp = _endpos_r_;
-          MenhirLib.EngineTypes.next = {
-            MenhirLib.EngineTypes.state = _menhir_s;
-            MenhirLib.EngineTypes.semv = d;
-            MenhirLib.EngineTypes.startp = _startpos_d_;
-            MenhirLib.EngineTypes.endp = _endpos_d_;
-            MenhirLib.EngineTypes.next = _menhir_stack;
-            };
-          } = _menhir_stack in
-        let r : 'tv_continue_struct_decl_list = Obj.magic r in
-        let d : 'tv_edots_when_TEllipsis_struct_decl_ = Obj.magic d in
-        let _startpos = _startpos_d_ in
-        let _endpos = _endpos_r_ in
-        let _v : 'tv_struct_decl_list_start = 
-# 611 "parser_cocci_menhir.mly"
-    ( (P.mkddots "..." d)::r )
-# 32482 "parser_cocci_menhir.ml"
+        Ast0.wrap(Ast0.UnInit(None,fn idtype,id,P.clt2mcode ";" pv)) )
+# 34426 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32497,16 +34441,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let s : (
-# 28 "parser_cocci_menhir.mly"
+# 52 "parser_cocci_menhir.mly"
       (Data.clt)
-# 32503 "parser_cocci_menhir.ml"
+# 34447 "parser_cocci_menhir.ml"
         ) = Obj.magic s in
         let _startpos = _startpos_s_ in
         let _endpos = _endpos_s_ in
         let _v : 'tv_struct_or_union = 
-# 581 "parser_cocci_menhir.mly"
+# 610 "parser_cocci_menhir.mly"
                  ( P.clt2mcode Ast.Struct s )
-# 32510 "parser_cocci_menhir.ml"
+# 34454 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32525,16 +34469,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let u : (
-# 28 "parser_cocci_menhir.mly"
+# 52 "parser_cocci_menhir.mly"
       (Data.clt)
-# 32531 "parser_cocci_menhir.ml"
+# 34475 "parser_cocci_menhir.ml"
         ) = Obj.magic u in
         let _startpos = _startpos_u_ in
         let _endpos = _endpos_u_ in
         let _v : 'tv_struct_or_union = 
-# 582 "parser_cocci_menhir.mly"
+# 611 "parser_cocci_menhir.mly"
                  ( P.clt2mcode Ast.Union u )
-# 32538 "parser_cocci_menhir.ml"
+# 34482 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32560,7 +34504,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_i_ in
         let _v : 'tv_sub = 
-# 1608 "parser_cocci_menhir.mly"
+# 1632 "parser_cocci_menhir.mly"
          ( (if !Data.in_iso
           then failwith "constraints not allowed in iso file");
           (if !Data.in_generating
@@ -32569,7 +34513,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             P.check_inherited_constraint i
               (function mv -> Ast.MetaExpDecl(Ast.NONE,mv,None)) in
           [i] )
-# 32573 "parser_cocci_menhir.ml"
+# 34517 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32603,7 +34547,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : 'tv_sub = 
-# 1617 "parser_cocci_menhir.mly"
+# 1641 "parser_cocci_menhir.mly"
   ( (if !Data.in_iso
           then failwith "constraints not allowed in iso file");
           (if !Data.in_generating
@@ -32613,7 +34557,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               P.check_inherited_constraint i
                 (function mv -> Ast.MetaExpDecl(Ast.NONE,mv,None)))
             l)
-# 32617 "parser_cocci_menhir.ml"
+# 34561 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32635,9 +34579,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_top_eexpr = 
-# 1236 "parser_cocci_menhir.mly"
+# 1260 "parser_cocci_menhir.mly"
         ( Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.Exp(_1)))) )
-# 32641 "parser_cocci_menhir.ml"
+# 34585 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32666,22 +34610,27 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 32672 "parser_cocci_menhir.ml"
+# 34616 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_initialize_list = Obj.magic _2 in
         let _1 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 32678 "parser_cocci_menhir.ml"
+# 34622 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_top_init = 
-# 1817 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.InitList(P.clt2mcode "{" _1,_2,P.clt2mcode "}" _3)) )
-# 32685 "parser_cocci_menhir.ml"
+# 1867 "parser_cocci_menhir.mly"
+    ( if P.struct_initializer _2
+    then
+      let il = P.drop_dot_commas _2 in
+      Ast0.wrap(Ast0.InitList(P.clt2mcode "{" _1,il,P.clt2mcode "}" _3,false))
+    else
+      Ast0.wrap(Ast0.InitList(P.clt2mcode "{" _1,_2,P.clt2mcode "}" _3,true)) )
+# 34634 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32696,9 +34645,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
         let _endpos = _startpos in
         let _v : 'tv_toplevel_after_dots = 
-# 1805 "parser_cocci_menhir.mly"
+# 1855 "parser_cocci_menhir.mly"
                                      ([])
-# 32702 "parser_cocci_menhir.ml"
+# 34651 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32724,9 +34673,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_toplevel_after_dots = 
-# 1806 "parser_cocci_menhir.mly"
+# 1856 "parser_cocci_menhir.mly"
                                      (_2)
-# 32730 "parser_cocci_menhir.ml"
+# 34679 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32754,9 +34703,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_toplevel_after_dots = 
-# 1807 "parser_cocci_menhir.mly"
+# 1857 "parser_cocci_menhir.mly"
                                      ((Ast0.wrap(Ast0.Exp(_1)))::_2)
-# 32760 "parser_cocci_menhir.ml"
+# 34709 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32784,9 +34733,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_toplevel_after_dots = 
-# 1808 "parser_cocci_menhir.mly"
+# 1858 "parser_cocci_menhir.mly"
                                           (_1@_2)
-# 32790 "parser_cocci_menhir.ml"
+# 34739 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32812,9 +34761,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_toplevel_after_dots_init = 
-# 1796 "parser_cocci_menhir.mly"
+# 1846 "parser_cocci_menhir.mly"
                                      (_2)
-# 32818 "parser_cocci_menhir.ml"
+# 34767 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32842,9 +34791,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_toplevel_after_dots_init = 
-# 1797 "parser_cocci_menhir.mly"
+# 1847 "parser_cocci_menhir.mly"
                                      ((Ast0.wrap(Ast0.Exp(_1)))::_2)
-# 32848 "parser_cocci_menhir.ml"
+# 34797 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32872,9 +34821,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_toplevel_after_dots_init = 
-# 1798 "parser_cocci_menhir.mly"
+# 1848 "parser_cocci_menhir.mly"
                                           (_1@_2)
-# 32878 "parser_cocci_menhir.ml"
+# 34827 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32889,9 +34838,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
         let _endpos = _startpos in
         let _v : 'tv_toplevel_after_exp = 
-# 1801 "parser_cocci_menhir.mly"
+# 1851 "parser_cocci_menhir.mly"
                                      ([])
-# 32895 "parser_cocci_menhir.ml"
+# 34844 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32919,9 +34868,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_toplevel_after_exp = 
-# 1802 "parser_cocci_menhir.mly"
+# 1852 "parser_cocci_menhir.mly"
                                      (_1::_2)
-# 32925 "parser_cocci_menhir.ml"
+# 34874 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32936,9 +34885,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _menhir_env.MenhirLib.EngineTypes.lexbuf.Lexing.lex_start_p in
         let _endpos = _startpos in
         let _v : 'tv_toplevel_after_stm = 
-# 1811 "parser_cocci_menhir.mly"
+# 1861 "parser_cocci_menhir.mly"
                                      ([])
-# 32942 "parser_cocci_menhir.ml"
+# 34891 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32966,9 +34915,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_toplevel_after_stm = 
-# 1812 "parser_cocci_menhir.mly"
+# 1862 "parser_cocci_menhir.mly"
                                      (_1::_2)
-# 32972 "parser_cocci_menhir.ml"
+# 34921 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32996,9 +34945,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_toplevel_after_stm = 
-# 1813 "parser_cocci_menhir.mly"
+# 1863 "parser_cocci_menhir.mly"
                                      (_1@_2)
-# 33002 "parser_cocci_menhir.ml"
+# 34951 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33026,9 +34975,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_toplevel_seq_start_toplevel_after_dots_ = 
-# 1791 "parser_cocci_menhir.mly"
+# 1841 "parser_cocci_menhir.mly"
                                      ( _1::_2 )
-# 33032 "parser_cocci_menhir.ml"
+# 34981 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33056,9 +35005,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_toplevel_seq_start_toplevel_after_dots_ = 
-# 1792 "parser_cocci_menhir.mly"
+# 1842 "parser_cocci_menhir.mly"
                                      ( (Ast0.wrap(Ast0.Exp(_1)))::_2 )
-# 33062 "parser_cocci_menhir.ml"
+# 35011 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33086,9 +35035,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_toplevel_seq_start_toplevel_after_dots_ = 
-# 1793 "parser_cocci_menhir.mly"
+# 1843 "parser_cocci_menhir.mly"
                                           ( _1@_2 )
-# 33092 "parser_cocci_menhir.ml"
+# 35041 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33119,9 +35068,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let b : 'tv_toplevel_after_dots_init = Obj.magic b in
         let w0 : 'tv_list_whenppdecs_ = Obj.magic w0 in
         let a0 : (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
-# 33125 "parser_cocci_menhir.ml"
+# 35074 "parser_cocci_menhir.ml"
         ) = Obj.magic a0 in
         let _startpos = _startpos_a0_ in
         let _endpos = _endpos_b_ in
@@ -33129,15 +35078,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let w = w0 in
           let a = a0 in
           
-# 911 "parser_cocci_menhir.mly"
+# 959 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Dots(P.clt2mcode "..." a, List.concat w)) )
-# 33135 "parser_cocci_menhir.ml"
+# 35084 "parser_cocci_menhir.ml"
           
         in
         
-# 1784 "parser_cocci_menhir.mly"
+# 1834 "parser_cocci_menhir.mly"
                                              ( a::b )
-# 33141 "parser_cocci_menhir.ml"
+# 35090 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33177,16 +35126,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let b : 'tv_toplevel_after_dots_init = Obj.magic b in
         let c0 : (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
-# 33183 "parser_cocci_menhir.ml"
+# 35132 "parser_cocci_menhir.ml"
         ) = Obj.magic c0 in
         let b0 : 'tv_nest_start = Obj.magic b0 in
         let w0 : 'tv_list_whenppdecs_ = Obj.magic w0 in
         let a0 : (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
-# 33190 "parser_cocci_menhir.ml"
+# 35139 "parser_cocci_menhir.ml"
         ) = Obj.magic a0 in
         let _startpos = _startpos_a0_ in
         let _endpos = _endpos_b_ in
@@ -33196,16 +35145,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let w = w0 in
           let a = a0 in
           
-# 915 "parser_cocci_menhir.mly"
+# 963 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Nest(P.clt2mcode "<..." a, b,
                          P.clt2mcode "...>" c, List.concat w, false)) )
-# 33203 "parser_cocci_menhir.ml"
+# 35152 "parser_cocci_menhir.ml"
           
         in
         
-# 1785 "parser_cocci_menhir.mly"
+# 1835 "parser_cocci_menhir.mly"
                                               ( a::b )
-# 33209 "parser_cocci_menhir.ml"
+# 35158 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33245,16 +35194,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let b : 'tv_toplevel_after_dots_init = Obj.magic b in
         let c0 : (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
-# 33251 "parser_cocci_menhir.ml"
+# 35200 "parser_cocci_menhir.ml"
         ) = Obj.magic c0 in
         let b0 : 'tv_nest_start = Obj.magic b0 in
         let w0 : 'tv_list_whenppdecs_ = Obj.magic w0 in
         let a0 : (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
-# 33258 "parser_cocci_menhir.ml"
+# 35207 "parser_cocci_menhir.ml"
         ) = Obj.magic a0 in
         let _startpos = _startpos_a0_ in
         let _endpos = _endpos_b_ in
@@ -33264,16 +35213,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let w = w0 in
           let a = a0 in
           
-# 918 "parser_cocci_menhir.mly"
+# 966 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Nest(P.clt2mcode "<+..." a, b,
                          P.clt2mcode "...+>" c, List.concat w, true)) )
-# 33271 "parser_cocci_menhir.ml"
+# 35220 "parser_cocci_menhir.ml"
           
         in
         
-# 1785 "parser_cocci_menhir.mly"
+# 1835 "parser_cocci_menhir.mly"
                                               ( a::b )
-# 33277 "parser_cocci_menhir.ml"
+# 35226 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33307,16 +35256,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let c0 : (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
-# 33313 "parser_cocci_menhir.ml"
+# 35262 "parser_cocci_menhir.ml"
         ) = Obj.magic c0 in
         let b0 : 'tv_nest_start = Obj.magic b0 in
         let w0 : 'tv_list_whenppdecs_ = Obj.magic w0 in
         let a0 : (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
-# 33320 "parser_cocci_menhir.ml"
+# 35269 "parser_cocci_menhir.ml"
         ) = Obj.magic a0 in
         let _startpos = _startpos_a0_ in
         let _endpos = _endpos_c0_ in
@@ -33326,16 +35275,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let w = w0 in
           let a = a0 in
           
-# 915 "parser_cocci_menhir.mly"
+# 963 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Nest(P.clt2mcode "<..." a, b,
                          P.clt2mcode "...>" c, List.concat w, false)) )
-# 33333 "parser_cocci_menhir.ml"
+# 35282 "parser_cocci_menhir.ml"
           
         in
         
-# 1786 "parser_cocci_menhir.mly"
+# 1836 "parser_cocci_menhir.mly"
                                        ( [a] )
-# 33339 "parser_cocci_menhir.ml"
+# 35288 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33369,16 +35318,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let c0 : (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
-# 33375 "parser_cocci_menhir.ml"
+# 35324 "parser_cocci_menhir.ml"
         ) = Obj.magic c0 in
         let b0 : 'tv_nest_start = Obj.magic b0 in
         let w0 : 'tv_list_whenppdecs_ = Obj.magic w0 in
         let a0 : (
-# 52 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
        (Data.clt)
-# 33382 "parser_cocci_menhir.ml"
+# 35331 "parser_cocci_menhir.ml"
         ) = Obj.magic a0 in
         let _startpos = _startpos_a0_ in
         let _endpos = _endpos_c0_ in
@@ -33388,16 +35337,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let w = w0 in
           let a = a0 in
           
-# 918 "parser_cocci_menhir.mly"
+# 966 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Nest(P.clt2mcode "<+..." a, b,
                          P.clt2mcode "...+>" c, List.concat w, true)) )
-# 33395 "parser_cocci_menhir.ml"
+# 35344 "parser_cocci_menhir.ml"
           
         in
         
-# 1786 "parser_cocci_menhir.mly"
+# 1836 "parser_cocci_menhir.mly"
                                        ( [a] )
-# 33401 "parser_cocci_menhir.ml"
+# 35350 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33425,9 +35374,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_toplevel_seq_startne_toplevel_after_dots_init_ = 
-# 1787 "parser_cocci_menhir.mly"
+# 1837 "parser_cocci_menhir.mly"
                                      ( (Ast0.wrap(Ast0.Exp(_1)))::_2 )
-# 33431 "parser_cocci_menhir.ml"
+# 35380 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33455,9 +35404,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_toplevel_seq_startne_toplevel_after_dots_init_ = 
-# 1788 "parser_cocci_menhir.mly"
+# 1838 "parser_cocci_menhir.mly"
                                           ( _1@_2 )
-# 33461 "parser_cocci_menhir.ml"
+# 35410 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33487,14 +35436,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33493 "parser_cocci_menhir.ml"
+# 35442 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33498 "parser_cocci_menhir.ml"
+# 35447 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -33504,28 +35453,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 499 "parser_cocci_menhir.mly"
+# 523 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
-# 33510 "parser_cocci_menhir.ml"
+# 35459 "parser_cocci_menhir.ml"
             
           in
           
-# 551 "parser_cocci_menhir.mly"
+# 580 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 33516 "parser_cocci_menhir.ml"
+# 35465 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 33523 "parser_cocci_menhir.ml"
+# 35472 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 33529 "parser_cocci_menhir.ml"
+# 35478 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33555,14 +35504,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33561 "parser_cocci_menhir.ml"
+# 35510 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33566 "parser_cocci_menhir.ml"
+# 35515 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -33572,28 +35521,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 501 "parser_cocci_menhir.mly"
+# 525 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
-# 33578 "parser_cocci_menhir.ml"
+# 35527 "parser_cocci_menhir.ml"
             
           in
           
-# 551 "parser_cocci_menhir.mly"
+# 580 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 33584 "parser_cocci_menhir.ml"
+# 35533 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 33591 "parser_cocci_menhir.ml"
+# 35540 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 33597 "parser_cocci_menhir.ml"
+# 35546 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33623,14 +35572,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33629 "parser_cocci_menhir.ml"
+# 35578 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33634 "parser_cocci_menhir.ml"
+# 35583 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -33640,28 +35589,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 503 "parser_cocci_menhir.mly"
+# 527 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
-# 33646 "parser_cocci_menhir.ml"
+# 35595 "parser_cocci_menhir.ml"
             
           in
           
-# 551 "parser_cocci_menhir.mly"
+# 580 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 33652 "parser_cocci_menhir.ml"
+# 35601 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 33659 "parser_cocci_menhir.ml"
+# 35608 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 33665 "parser_cocci_menhir.ml"
+# 35614 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33691,14 +35640,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 43 "parser_cocci_menhir.mly"
+# 67 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 33697 "parser_cocci_menhir.ml"
+# 35646 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33702 "parser_cocci_menhir.ml"
+# 35651 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -33708,29 +35657,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 505 "parser_cocci_menhir.mly"
+# 529 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = p in
       Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 33715 "parser_cocci_menhir.ml"
+# 35664 "parser_cocci_menhir.ml"
             
           in
           
-# 551 "parser_cocci_menhir.mly"
+# 580 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 33721 "parser_cocci_menhir.ml"
+# 35670 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 33728 "parser_cocci_menhir.ml"
+# 35677 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 33734 "parser_cocci_menhir.ml"
+# 35683 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33769,19 +35718,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 37 "parser_cocci_menhir.mly"
+# 61 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 33775 "parser_cocci_menhir.ml"
+# 35724 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r00 : (
-# 25 "parser_cocci_menhir.mly"
+# 49 "parser_cocci_menhir.mly"
       (string)
-# 33780 "parser_cocci_menhir.ml"
+# 35729 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let r1 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33785 "parser_cocci_menhir.ml"
+# 35734 "parser_cocci_menhir.ml"
         ) = Obj.magic r1 in
         let _startpos = _startpos_r1_ in
         let _endpos = _endpos_m_ in
@@ -33793,33 +35742,33 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let p = p0 in
             let r = r0 in
             
-# 508 "parser_cocci_menhir.mly"
+# 532 "parser_cocci_menhir.mly"
     ( let nm = (r,P.id2name p) in
     (* this is only possible when we are in a metavar decl.  Otherwise,
        it will be represented already as a MetaType *)
     let _ = P.check_meta(Ast.MetaTypeDecl(Ast.NONE,nm)) in
     Ast0.wrap(Ast0.MetaType(P.clt2mcode nm (P.id2clt p),
                            Ast0.Impure (*will be ignored*))) )
-# 33804 "parser_cocci_menhir.ml"
+# 35753 "parser_cocci_menhir.ml"
             
           in
           
-# 551 "parser_cocci_menhir.mly"
+# 580 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 33810 "parser_cocci_menhir.ml"
+# 35759 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 33817 "parser_cocci_menhir.ml"
+# 35766 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 33823 "parser_cocci_menhir.ml"
+# 35772 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33849,14 +35798,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33855 "parser_cocci_menhir.ml"
+# 35804 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33860 "parser_cocci_menhir.ml"
+# 35809 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -33866,28 +35815,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 515 "parser_cocci_menhir.mly"
+# 539 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
-# 33872 "parser_cocci_menhir.ml"
+# 35821 "parser_cocci_menhir.ml"
             
           in
           
-# 551 "parser_cocci_menhir.mly"
+# 580 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 33878 "parser_cocci_menhir.ml"
+# 35827 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 33885 "parser_cocci_menhir.ml"
+# 35834 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 33891 "parser_cocci_menhir.ml"
+# 35840 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33922,19 +35871,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty200 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33928 "parser_cocci_menhir.ml"
+# 35877 "parser_cocci_menhir.ml"
         ) = Obj.magic ty200 in
         let ty100 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33933 "parser_cocci_menhir.ml"
+# 35882 "parser_cocci_menhir.ml"
         ) = Obj.magic ty100 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33938 "parser_cocci_menhir.ml"
+# 35887 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -33946,31 +35895,31 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let ty2 = ty20 in
             let ty1 = ty10 in
             
-# 517 "parser_cocci_menhir.mly"
+# 541 "parser_cocci_menhir.mly"
     ( Ast0.wrap
        (Ast0.BaseType
           (Ast.LongLongType,
            [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
-# 33955 "parser_cocci_menhir.ml"
+# 35904 "parser_cocci_menhir.ml"
             
           in
           
-# 551 "parser_cocci_menhir.mly"
+# 580 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 33961 "parser_cocci_menhir.ml"
+# 35910 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 33968 "parser_cocci_menhir.ml"
+# 35917 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 33974 "parser_cocci_menhir.ml"
+# 35923 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34000,14 +35949,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34006 "parser_cocci_menhir.ml"
+# 35955 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34011 "parser_cocci_menhir.ml"
+# 35960 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -34017,28 +35966,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 499 "parser_cocci_menhir.mly"
+# 523 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
-# 34023 "parser_cocci_menhir.ml"
+# 35972 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
+# 582 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 34029 "parser_cocci_menhir.ml"
+# 35978 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 34036 "parser_cocci_menhir.ml"
+# 35985 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34042 "parser_cocci_menhir.ml"
+# 35991 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34068,14 +36017,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34074 "parser_cocci_menhir.ml"
+# 36023 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34079 "parser_cocci_menhir.ml"
+# 36028 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -34085,28 +36034,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 501 "parser_cocci_menhir.mly"
+# 525 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
-# 34091 "parser_cocci_menhir.ml"
+# 36040 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
+# 582 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 34097 "parser_cocci_menhir.ml"
+# 36046 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 34104 "parser_cocci_menhir.ml"
+# 36053 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34110 "parser_cocci_menhir.ml"
+# 36059 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34136,14 +36085,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34142 "parser_cocci_menhir.ml"
+# 36091 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34147 "parser_cocci_menhir.ml"
+# 36096 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -34153,28 +36102,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 503 "parser_cocci_menhir.mly"
+# 527 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
-# 34159 "parser_cocci_menhir.ml"
+# 36108 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
+# 582 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 34165 "parser_cocci_menhir.ml"
+# 36114 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 34172 "parser_cocci_menhir.ml"
+# 36121 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34178 "parser_cocci_menhir.ml"
+# 36127 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34204,14 +36153,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 43 "parser_cocci_menhir.mly"
+# 67 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 34210 "parser_cocci_menhir.ml"
+# 36159 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34215 "parser_cocci_menhir.ml"
+# 36164 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -34221,29 +36170,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 505 "parser_cocci_menhir.mly"
+# 529 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = p in
       Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 34228 "parser_cocci_menhir.ml"
+# 36177 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
+# 582 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 34234 "parser_cocci_menhir.ml"
+# 36183 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 34241 "parser_cocci_menhir.ml"
+# 36190 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34247 "parser_cocci_menhir.ml"
+# 36196 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34282,19 +36231,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 37 "parser_cocci_menhir.mly"
+# 61 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 34288 "parser_cocci_menhir.ml"
+# 36237 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r00 : (
-# 25 "parser_cocci_menhir.mly"
+# 49 "parser_cocci_menhir.mly"
       (string)
-# 34293 "parser_cocci_menhir.ml"
+# 36242 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let r1 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34298 "parser_cocci_menhir.ml"
+# 36247 "parser_cocci_menhir.ml"
         ) = Obj.magic r1 in
         let _startpos = _startpos_r1_ in
         let _endpos = _endpos_m_ in
@@ -34306,33 +36255,33 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let p = p0 in
             let r = r0 in
             
-# 508 "parser_cocci_menhir.mly"
+# 532 "parser_cocci_menhir.mly"
     ( let nm = (r,P.id2name p) in
     (* this is only possible when we are in a metavar decl.  Otherwise,
        it will be represented already as a MetaType *)
     let _ = P.check_meta(Ast.MetaTypeDecl(Ast.NONE,nm)) in
     Ast0.wrap(Ast0.MetaType(P.clt2mcode nm (P.id2clt p),
                            Ast0.Impure (*will be ignored*))) )
-# 34317 "parser_cocci_menhir.ml"
+# 36266 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
+# 582 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 34323 "parser_cocci_menhir.ml"
+# 36272 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 34330 "parser_cocci_menhir.ml"
+# 36279 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34336 "parser_cocci_menhir.ml"
+# 36285 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34362,14 +36311,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34368 "parser_cocci_menhir.ml"
+# 36317 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34373 "parser_cocci_menhir.ml"
+# 36322 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -34379,28 +36328,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 515 "parser_cocci_menhir.mly"
+# 539 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
-# 34385 "parser_cocci_menhir.ml"
+# 36334 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
+# 582 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 34391 "parser_cocci_menhir.ml"
+# 36340 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 34398 "parser_cocci_menhir.ml"
+# 36347 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34404 "parser_cocci_menhir.ml"
+# 36353 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34435,19 +36384,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty200 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34441 "parser_cocci_menhir.ml"
+# 36390 "parser_cocci_menhir.ml"
         ) = Obj.magic ty200 in
         let ty100 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34446 "parser_cocci_menhir.ml"
+# 36395 "parser_cocci_menhir.ml"
         ) = Obj.magic ty100 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34451 "parser_cocci_menhir.ml"
+# 36400 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -34459,31 +36408,31 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let ty2 = ty20 in
             let ty1 = ty10 in
             
-# 517 "parser_cocci_menhir.mly"
+# 541 "parser_cocci_menhir.mly"
     ( Ast0.wrap
        (Ast0.BaseType
           (Ast.LongLongType,
            [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
-# 34468 "parser_cocci_menhir.ml"
+# 36417 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
+# 582 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 34474 "parser_cocci_menhir.ml"
+# 36423 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 34481 "parser_cocci_menhir.ml"
+# 36430 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34487 "parser_cocci_menhir.ml"
+# 36436 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34508,9 +36457,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34514 "parser_cocci_menhir.ml"
+# 36463 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
@@ -34519,28 +36468,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 499 "parser_cocci_menhir.mly"
+# 523 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
-# 34525 "parser_cocci_menhir.ml"
+# 36474 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
                     ( ty )
-# 34531 "parser_cocci_menhir.ml"
+# 36480 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 34538 "parser_cocci_menhir.ml"
+# 36487 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34544 "parser_cocci_menhir.ml"
+# 36493 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34565,9 +36514,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34571 "parser_cocci_menhir.ml"
+# 36520 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
@@ -34576,28 +36525,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 501 "parser_cocci_menhir.mly"
+# 525 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
-# 34582 "parser_cocci_menhir.ml"
+# 36531 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
                     ( ty )
-# 34588 "parser_cocci_menhir.ml"
+# 36537 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 34595 "parser_cocci_menhir.ml"
+# 36544 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34601 "parser_cocci_menhir.ml"
+# 36550 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34622,9 +36571,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34628 "parser_cocci_menhir.ml"
+# 36577 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
@@ -34633,28 +36582,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 503 "parser_cocci_menhir.mly"
+# 527 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
-# 34639 "parser_cocci_menhir.ml"
+# 36588 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
                     ( ty )
-# 34645 "parser_cocci_menhir.ml"
+# 36594 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 34652 "parser_cocci_menhir.ml"
+# 36601 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34658 "parser_cocci_menhir.ml"
+# 36607 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34679,9 +36628,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 43 "parser_cocci_menhir.mly"
+# 67 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 34685 "parser_cocci_menhir.ml"
+# 36634 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let _startpos = _startpos_p00_ in
         let _endpos = _endpos_m_ in
@@ -34690,29 +36639,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 505 "parser_cocci_menhir.mly"
+# 529 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = p in
       Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 34697 "parser_cocci_menhir.ml"
+# 36646 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
                     ( ty )
-# 34703 "parser_cocci_menhir.ml"
+# 36652 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 34710 "parser_cocci_menhir.ml"
+# 36659 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34716 "parser_cocci_menhir.ml"
+# 36665 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34746,14 +36695,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 37 "parser_cocci_menhir.mly"
+# 61 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 34752 "parser_cocci_menhir.ml"
+# 36701 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r00 : (
-# 25 "parser_cocci_menhir.mly"
+# 49 "parser_cocci_menhir.mly"
       (string)
-# 34757 "parser_cocci_menhir.ml"
+# 36706 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let _startpos = _startpos_r00_ in
         let _endpos = _endpos_m_ in
@@ -34764,33 +36713,33 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let p = p0 in
             let r = r0 in
             
-# 508 "parser_cocci_menhir.mly"
+# 532 "parser_cocci_menhir.mly"
     ( let nm = (r,P.id2name p) in
     (* this is only possible when we are in a metavar decl.  Otherwise,
        it will be represented already as a MetaType *)
     let _ = P.check_meta(Ast.MetaTypeDecl(Ast.NONE,nm)) in
     Ast0.wrap(Ast0.MetaType(P.clt2mcode nm (P.id2clt p),
                            Ast0.Impure (*will be ignored*))) )
-# 34775 "parser_cocci_menhir.ml"
+# 36724 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
                     ( ty )
-# 34781 "parser_cocci_menhir.ml"
+# 36730 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 34788 "parser_cocci_menhir.ml"
+# 36737 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34794 "parser_cocci_menhir.ml"
+# 36743 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34815,9 +36764,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34821 "parser_cocci_menhir.ml"
+# 36770 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
@@ -34826,28 +36775,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 515 "parser_cocci_menhir.mly"
+# 539 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
-# 34832 "parser_cocci_menhir.ml"
+# 36781 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
                     ( ty )
-# 34838 "parser_cocci_menhir.ml"
+# 36787 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 34845 "parser_cocci_menhir.ml"
+# 36794 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34851 "parser_cocci_menhir.ml"
+# 36800 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34877,14 +36826,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty200 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34883 "parser_cocci_menhir.ml"
+# 36832 "parser_cocci_menhir.ml"
         ) = Obj.magic ty200 in
         let ty100 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34888 "parser_cocci_menhir.ml"
+# 36837 "parser_cocci_menhir.ml"
         ) = Obj.magic ty100 in
         let _startpos = _startpos_ty100_ in
         let _endpos = _endpos_m_ in
@@ -34895,31 +36844,31 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let ty2 = ty20 in
             let ty1 = ty10 in
             
-# 517 "parser_cocci_menhir.mly"
+# 541 "parser_cocci_menhir.mly"
     ( Ast0.wrap
        (Ast0.BaseType
           (Ast.LongLongType,
            [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
-# 34904 "parser_cocci_menhir.ml"
+# 36853 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
                     ( ty )
-# 34910 "parser_cocci_menhir.ml"
+# 36859 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 34917 "parser_cocci_menhir.ml"
+# 36866 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34923 "parser_cocci_menhir.ml"
+# 36872 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34944,9 +36893,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 28 "parser_cocci_menhir.mly"
+# 52 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34950 "parser_cocci_menhir.ml"
+# 36899 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
@@ -34955,28 +36904,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 525 "parser_cocci_menhir.mly"
+# 549 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.VoidType,[P.clt2mcode "void" ty])) )
-# 34961 "parser_cocci_menhir.ml"
+# 36910 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 34967 "parser_cocci_menhir.ml"
+# 36916 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 34974 "parser_cocci_menhir.ml"
+# 36923 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34980 "parser_cocci_menhir.ml"
+# 36929 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35001,9 +36950,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35007 "parser_cocci_menhir.ml"
+# 36956 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
@@ -35012,28 +36961,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 527 "parser_cocci_menhir.mly"
+# 551 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.DoubleType,[P.clt2mcode "double" ty])) )
-# 35018 "parser_cocci_menhir.ml"
+# 36967 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 35024 "parser_cocci_menhir.ml"
+# 36973 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 35031 "parser_cocci_menhir.ml"
+# 36980 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35037 "parser_cocci_menhir.ml"
+# 36986 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35058,9 +37007,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35064 "parser_cocci_menhir.ml"
+# 37013 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
@@ -35069,28 +37018,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 529 "parser_cocci_menhir.mly"
+# 553 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.FloatType,[P.clt2mcode "float" ty])) )
-# 35075 "parser_cocci_menhir.ml"
+# 37024 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 35081 "parser_cocci_menhir.ml"
+# 37030 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 35088 "parser_cocci_menhir.ml"
+# 37037 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35094 "parser_cocci_menhir.ml"
+# 37043 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35121,9 +37070,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let m : 'tv_list_TMul_ = Obj.magic m in
         let i00 : 'tv_ident = Obj.magic i00 in
         let s00 : (
-# 28 "parser_cocci_menhir.mly"
+# 52 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35127 "parser_cocci_menhir.ml"
+# 37076 "parser_cocci_menhir.ml"
         ) = Obj.magic s00 in
         let _startpos = _startpos_s00_ in
         let _endpos = _endpos_m_ in
@@ -35134,28 +37083,235 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let i = i0 in
             let s = s0 in
             
-# 531 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, i)) )
-# 35140 "parser_cocci_menhir.ml"
+# 555 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, Some i)) )
+# 37089 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 35146 "parser_cocci_menhir.ml"
+# 37095 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 35153 "parser_cocci_menhir.ml"
+# 37102 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35159 "parser_cocci_menhir.ml"
+# 37108 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = m;
+          MenhirLib.EngineTypes.startp = _startpos_m_;
+          MenhirLib.EngineTypes.endp = _endpos_m_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = r00;
+            MenhirLib.EngineTypes.startp = _startpos_r00_;
+            MenhirLib.EngineTypes.endp = _endpos_r00_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.semv = ids00;
+              MenhirLib.EngineTypes.startp = _startpos_ids00_;
+              MenhirLib.EngineTypes.endp = _endpos_ids00_;
+              MenhirLib.EngineTypes.next = {
+                MenhirLib.EngineTypes.semv = l00;
+                MenhirLib.EngineTypes.startp = _startpos_l00_;
+                MenhirLib.EngineTypes.endp = _endpos_l00_;
+                MenhirLib.EngineTypes.next = {
+                  MenhirLib.EngineTypes.state = _menhir_s;
+                  MenhirLib.EngineTypes.semv = s00;
+                  MenhirLib.EngineTypes.startp = _startpos_s00_;
+                  MenhirLib.EngineTypes.endp = _endpos_s00_;
+                  MenhirLib.EngineTypes.next = _menhir_stack;
+                  };
+                };
+              };
+            };
+          } = _menhir_stack in
+        let m : 'tv_list_TMul_ = Obj.magic m in
+        let r00 : (
+# 104 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 37150 "parser_cocci_menhir.ml"
+        ) = Obj.magic r00 in
+        let ids00 : 'tv_enum_decl_list = Obj.magic ids00 in
+        let l00 : (
+# 104 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 37156 "parser_cocci_menhir.ml"
+        ) = Obj.magic l00 in
+        let s00 : (
+# 52 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 37161 "parser_cocci_menhir.ml"
+        ) = Obj.magic s00 in
+        let _startpos = _startpos_s00_ in
+        let _endpos = _endpos_m_ in
+        let _v : 'tv_typedef_ctype = let ty =
+          let r0 = r00 in
+          let ids0 = ids00 in
+          let l0 = l00 in
+          let s0 = s00 in
+          let ty =
+            let r = r0 in
+            let ids = ids0 in
+            let l = l0 in
+            let s = s0 in
+            let i =
+              
+# 39 "standard.mly"
+    ( None )
+# 37179 "parser_cocci_menhir.ml"
+              
+            in
+            
+# 557 "parser_cocci_menhir.mly"
+    ( (if i = None && !Data.in_iso
+    then failwith "enums must be named in the iso file");
+      Ast0.wrap(Ast0.EnumDef(Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, i)),
+                            P.clt2mcode "{" l, ids, P.clt2mcode "}" r)) )
+# 37188 "parser_cocci_menhir.ml"
+            
+          in
+          
+# 584 "parser_cocci_menhir.mly"
+                        ( ty )
+# 37194 "parser_cocci_menhir.ml"
+          
+        in
+        let cv =
+          
+# 39 "standard.mly"
+    ( None )
+# 37201 "parser_cocci_menhir.ml"
+          
+        in
+        
+# 601 "parser_cocci_menhir.mly"
+    ( P.pointerify (P.make_cv cv ty) m )
+# 37207 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = m;
+          MenhirLib.EngineTypes.startp = _startpos_m_;
+          MenhirLib.EngineTypes.endp = _endpos_m_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = r00;
+            MenhirLib.EngineTypes.startp = _startpos_r00_;
+            MenhirLib.EngineTypes.endp = _endpos_r00_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.semv = ids00;
+              MenhirLib.EngineTypes.startp = _startpos_ids00_;
+              MenhirLib.EngineTypes.endp = _endpos_ids00_;
+              MenhirLib.EngineTypes.next = {
+                MenhirLib.EngineTypes.semv = l00;
+                MenhirLib.EngineTypes.startp = _startpos_l00_;
+                MenhirLib.EngineTypes.endp = _endpos_l00_;
+                MenhirLib.EngineTypes.next = {
+                  MenhirLib.EngineTypes.semv = x000;
+                  MenhirLib.EngineTypes.startp = _startpos_x000_;
+                  MenhirLib.EngineTypes.endp = _endpos_x000_;
+                  MenhirLib.EngineTypes.next = {
+                    MenhirLib.EngineTypes.state = _menhir_s;
+                    MenhirLib.EngineTypes.semv = s00;
+                    MenhirLib.EngineTypes.startp = _startpos_s00_;
+                    MenhirLib.EngineTypes.endp = _endpos_s00_;
+                    MenhirLib.EngineTypes.next = _menhir_stack;
+                    };
+                  };
+                };
+              };
+            };
+          } = _menhir_stack in
+        let m : 'tv_list_TMul_ = Obj.magic m in
+        let r00 : (
+# 104 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 37254 "parser_cocci_menhir.ml"
+        ) = Obj.magic r00 in
+        let ids00 : 'tv_enum_decl_list = Obj.magic ids00 in
+        let l00 : (
+# 104 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 37260 "parser_cocci_menhir.ml"
+        ) = Obj.magic l00 in
+        let x000 : 'tv_ident = Obj.magic x000 in
+        let s00 : (
+# 52 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 37266 "parser_cocci_menhir.ml"
+        ) = Obj.magic s00 in
+        let _startpos = _startpos_s00_ in
+        let _endpos = _endpos_m_ in
+        let _v : 'tv_typedef_ctype = let ty =
+          let r0 = r00 in
+          let ids0 = ids00 in
+          let l0 = l00 in
+          let x00 = x000 in
+          let s0 = s00 in
+          let ty =
+            let r = r0 in
+            let ids = ids0 in
+            let l = l0 in
+            let x0 = x00 in
+            let s = s0 in
+            let i =
+              let x = x0 in
+              
+# 41 "standard.mly"
+    ( Some x )
+# 37287 "parser_cocci_menhir.ml"
+              
+            in
+            
+# 557 "parser_cocci_menhir.mly"
+    ( (if i = None && !Data.in_iso
+    then failwith "enums must be named in the iso file");
+      Ast0.wrap(Ast0.EnumDef(Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, i)),
+                            P.clt2mcode "{" l, ids, P.clt2mcode "}" r)) )
+# 37296 "parser_cocci_menhir.ml"
+            
+          in
+          
+# 584 "parser_cocci_menhir.mly"
+                        ( ty )
+# 37302 "parser_cocci_menhir.ml"
+          
+        in
+        let cv =
+          
+# 39 "standard.mly"
+    ( None )
+# 37309 "parser_cocci_menhir.ml"
+          
+        in
+        
+# 601 "parser_cocci_menhir.mly"
+    ( P.pointerify (P.make_cv cv ty) m )
+# 37315 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35195,28 +37351,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let i = i0 in
             let s = s0 in
             
-# 533 "parser_cocci_menhir.mly"
+# 562 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.StructUnionName(s, Some i)) )
-# 35201 "parser_cocci_menhir.ml"
+# 37357 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 35207 "parser_cocci_menhir.ml"
+# 37363 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 35214 "parser_cocci_menhir.ml"
+# 37370 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35220 "parser_cocci_menhir.ml"
+# 37376 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35256,15 +37412,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let r00 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 35262 "parser_cocci_menhir.ml"
+# 37418 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let d00 : 'tv_struct_decl_list = Obj.magic d00 in
         let l00 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 35268 "parser_cocci_menhir.ml"
+# 37424 "parser_cocci_menhir.ml"
         ) = Obj.magic l00 in
         let s00 : 'tv_struct_or_union = Obj.magic s00 in
         let _startpos = _startpos_s00_ in
@@ -35283,36 +37439,36 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               
 # 39 "standard.mly"
     ( None )
-# 35287 "parser_cocci_menhir.ml"
+# 37443 "parser_cocci_menhir.ml"
               
             in
             
-# 536 "parser_cocci_menhir.mly"
+# 565 "parser_cocci_menhir.mly"
     ( (if i = None && !Data.in_iso
     then failwith "structures must be named in the iso file");
       Ast0.wrap(Ast0.StructUnionDef(Ast0.wrap(Ast0.StructUnionName(s, i)),
                                    P.clt2mcode "{" l,
                                    d, P.clt2mcode "}" r)) )
-# 35297 "parser_cocci_menhir.ml"
+# 37453 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 35303 "parser_cocci_menhir.ml"
+# 37459 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 35310 "parser_cocci_menhir.ml"
+# 37466 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35316 "parser_cocci_menhir.ml"
+# 37472 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35357,15 +37513,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let r00 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 35363 "parser_cocci_menhir.ml"
+# 37519 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let d00 : 'tv_struct_decl_list = Obj.magic d00 in
         let l00 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 35369 "parser_cocci_menhir.ml"
+# 37525 "parser_cocci_menhir.ml"
         ) = Obj.magic l00 in
         let x000 : 'tv_ident = Obj.magic x000 in
         let s00 : 'tv_struct_or_union = Obj.magic s00 in
@@ -35388,36 +37544,36 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               
 # 41 "standard.mly"
     ( Some x )
-# 35392 "parser_cocci_menhir.ml"
+# 37548 "parser_cocci_menhir.ml"
               
             in
             
-# 536 "parser_cocci_menhir.mly"
+# 565 "parser_cocci_menhir.mly"
     ( (if i = None && !Data.in_iso
     then failwith "structures must be named in the iso file");
       Ast0.wrap(Ast0.StructUnionDef(Ast0.wrap(Ast0.StructUnionName(s, i)),
                                    P.clt2mcode "{" l,
                                    d, P.clt2mcode "}" r)) )
-# 35402 "parser_cocci_menhir.ml"
+# 37558 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 35408 "parser_cocci_menhir.ml"
+# 37564 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 35415 "parser_cocci_menhir.ml"
+# 37571 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35421 "parser_cocci_menhir.ml"
+# 37577 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35457,20 +37613,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let r00 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 35463 "parser_cocci_menhir.ml"
+# 37619 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let d00 : 'tv_struct_decl_list = Obj.magic d00 in
         let l00 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 35469 "parser_cocci_menhir.ml"
+# 37625 "parser_cocci_menhir.ml"
         ) = Obj.magic l00 in
         let s00 : (
-# 43 "parser_cocci_menhir.mly"
+# 67 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 35474 "parser_cocci_menhir.ml"
+# 37630 "parser_cocci_menhir.ml"
         ) = Obj.magic s00 in
         let _startpos = _startpos_s00_ in
         let _endpos = _endpos_m_ in
@@ -35485,30 +37641,30 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let l = l0 in
             let s = s0 in
             
-# 542 "parser_cocci_menhir.mly"
+# 571 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = s in
     let ty = Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) in
     Ast0.wrap(Ast0.StructUnionDef(ty,P.clt2mcode "{" l,d,P.clt2mcode "}" r)) )
-# 35493 "parser_cocci_menhir.ml"
+# 37649 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 35499 "parser_cocci_menhir.ml"
+# 37655 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 35506 "parser_cocci_menhir.ml"
+# 37662 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35512 "parser_cocci_menhir.ml"
+# 37668 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35533,9 +37689,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 37 "parser_cocci_menhir.mly"
+# 61 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 35539 "parser_cocci_menhir.ml"
+# 37695 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let _startpos = _startpos_p00_ in
         let _endpos = _endpos_m_ in
@@ -35544,28 +37700,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 546 "parser_cocci_menhir.mly"
+# 575 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.TypeName(P.id2mcode p)) )
-# 35550 "parser_cocci_menhir.ml"
+# 37706 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 35556 "parser_cocci_menhir.ml"
+# 37712 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 35563 "parser_cocci_menhir.ml"
+# 37719 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35569 "parser_cocci_menhir.ml"
+# 37725 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35600,14 +37756,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35606 "parser_cocci_menhir.ml"
+# 37762 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35611 "parser_cocci_menhir.ml"
+# 37767 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -35618,15 +37774,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 499 "parser_cocci_menhir.mly"
+# 523 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
-# 35624 "parser_cocci_menhir.ml"
+# 37780 "parser_cocci_menhir.ml"
             
           in
           
-# 551 "parser_cocci_menhir.mly"
+# 580 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 35630 "parser_cocci_menhir.ml"
+# 37786 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -35634,13 +37790,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 35638 "parser_cocci_menhir.ml"
+# 37794 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35644 "parser_cocci_menhir.ml"
+# 37800 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35675,14 +37831,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35681 "parser_cocci_menhir.ml"
+# 37837 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35686 "parser_cocci_menhir.ml"
+# 37842 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -35693,15 +37849,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 501 "parser_cocci_menhir.mly"
+# 525 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
-# 35699 "parser_cocci_menhir.ml"
+# 37855 "parser_cocci_menhir.ml"
             
           in
           
-# 551 "parser_cocci_menhir.mly"
+# 580 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 35705 "parser_cocci_menhir.ml"
+# 37861 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -35709,13 +37865,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 35713 "parser_cocci_menhir.ml"
+# 37869 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35719 "parser_cocci_menhir.ml"
+# 37875 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35750,14 +37906,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35756 "parser_cocci_menhir.ml"
+# 37912 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35761 "parser_cocci_menhir.ml"
+# 37917 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -35768,15 +37924,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 503 "parser_cocci_menhir.mly"
+# 527 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
-# 35774 "parser_cocci_menhir.ml"
+# 37930 "parser_cocci_menhir.ml"
             
           in
           
-# 551 "parser_cocci_menhir.mly"
+# 580 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 35780 "parser_cocci_menhir.ml"
+# 37936 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -35784,13 +37940,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 35788 "parser_cocci_menhir.ml"
+# 37944 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35794 "parser_cocci_menhir.ml"
+# 37950 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35825,14 +37981,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 43 "parser_cocci_menhir.mly"
+# 67 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 35831 "parser_cocci_menhir.ml"
+# 37987 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35836 "parser_cocci_menhir.ml"
+# 37992 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -35843,16 +37999,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 505 "parser_cocci_menhir.mly"
+# 529 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = p in
       Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 35850 "parser_cocci_menhir.ml"
+# 38006 "parser_cocci_menhir.ml"
             
           in
           
-# 551 "parser_cocci_menhir.mly"
+# 580 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 35856 "parser_cocci_menhir.ml"
+# 38012 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -35860,13 +38016,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 35864 "parser_cocci_menhir.ml"
+# 38020 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35870 "parser_cocci_menhir.ml"
+# 38026 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35910,19 +38066,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 37 "parser_cocci_menhir.mly"
+# 61 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 35916 "parser_cocci_menhir.ml"
+# 38072 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r00 : (
-# 25 "parser_cocci_menhir.mly"
+# 49 "parser_cocci_menhir.mly"
       (string)
-# 35921 "parser_cocci_menhir.ml"
+# 38077 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let r1 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35926 "parser_cocci_menhir.ml"
+# 38082 "parser_cocci_menhir.ml"
         ) = Obj.magic r1 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -35935,20 +38091,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let p = p0 in
             let r = r0 in
             
-# 508 "parser_cocci_menhir.mly"
+# 532 "parser_cocci_menhir.mly"
     ( let nm = (r,P.id2name p) in
     (* this is only possible when we are in a metavar decl.  Otherwise,
        it will be represented already as a MetaType *)
     let _ = P.check_meta(Ast.MetaTypeDecl(Ast.NONE,nm)) in
     Ast0.wrap(Ast0.MetaType(P.clt2mcode nm (P.id2clt p),
                            Ast0.Impure (*will be ignored*))) )
-# 35946 "parser_cocci_menhir.ml"
+# 38102 "parser_cocci_menhir.ml"
             
           in
           
-# 551 "parser_cocci_menhir.mly"
+# 580 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 35952 "parser_cocci_menhir.ml"
+# 38108 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -35956,13 +38112,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 35960 "parser_cocci_menhir.ml"
+# 38116 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35966 "parser_cocci_menhir.ml"
+# 38122 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35997,14 +38153,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36003 "parser_cocci_menhir.ml"
+# 38159 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36008 "parser_cocci_menhir.ml"
+# 38164 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -36015,15 +38171,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 515 "parser_cocci_menhir.mly"
+# 539 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
-# 36021 "parser_cocci_menhir.ml"
+# 38177 "parser_cocci_menhir.ml"
             
           in
           
-# 551 "parser_cocci_menhir.mly"
+# 580 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 36027 "parser_cocci_menhir.ml"
+# 38183 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36031,13 +38187,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36035 "parser_cocci_menhir.ml"
+# 38191 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36041 "parser_cocci_menhir.ml"
+# 38197 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36077,19 +38233,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty200 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36083 "parser_cocci_menhir.ml"
+# 38239 "parser_cocci_menhir.ml"
         ) = Obj.magic ty200 in
         let ty100 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36088 "parser_cocci_menhir.ml"
+# 38244 "parser_cocci_menhir.ml"
         ) = Obj.magic ty100 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36093 "parser_cocci_menhir.ml"
+# 38249 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -36102,18 +38258,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let ty2 = ty20 in
             let ty1 = ty10 in
             
-# 517 "parser_cocci_menhir.mly"
+# 541 "parser_cocci_menhir.mly"
     ( Ast0.wrap
        (Ast0.BaseType
           (Ast.LongLongType,
            [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
-# 36111 "parser_cocci_menhir.ml"
+# 38267 "parser_cocci_menhir.ml"
             
           in
           
-# 551 "parser_cocci_menhir.mly"
+# 580 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 36117 "parser_cocci_menhir.ml"
+# 38273 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36121,13 +38277,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36125 "parser_cocci_menhir.ml"
+# 38281 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36131 "parser_cocci_menhir.ml"
+# 38287 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36162,14 +38318,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36168 "parser_cocci_menhir.ml"
+# 38324 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36173 "parser_cocci_menhir.ml"
+# 38329 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -36180,15 +38336,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 499 "parser_cocci_menhir.mly"
+# 523 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
-# 36186 "parser_cocci_menhir.ml"
+# 38342 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
+# 582 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 36192 "parser_cocci_menhir.ml"
+# 38348 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36196,13 +38352,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36200 "parser_cocci_menhir.ml"
+# 38356 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36206 "parser_cocci_menhir.ml"
+# 38362 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36237,14 +38393,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36243 "parser_cocci_menhir.ml"
+# 38399 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36248 "parser_cocci_menhir.ml"
+# 38404 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -36255,15 +38411,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 501 "parser_cocci_menhir.mly"
+# 525 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
-# 36261 "parser_cocci_menhir.ml"
+# 38417 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
+# 582 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 36267 "parser_cocci_menhir.ml"
+# 38423 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36271,13 +38427,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36275 "parser_cocci_menhir.ml"
+# 38431 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36281 "parser_cocci_menhir.ml"
+# 38437 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36312,14 +38468,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36318 "parser_cocci_menhir.ml"
+# 38474 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36323 "parser_cocci_menhir.ml"
+# 38479 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -36330,15 +38486,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 503 "parser_cocci_menhir.mly"
+# 527 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
-# 36336 "parser_cocci_menhir.ml"
+# 38492 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
+# 582 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 36342 "parser_cocci_menhir.ml"
+# 38498 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36346,13 +38502,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36350 "parser_cocci_menhir.ml"
+# 38506 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36356 "parser_cocci_menhir.ml"
+# 38512 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36387,14 +38543,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 43 "parser_cocci_menhir.mly"
+# 67 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 36393 "parser_cocci_menhir.ml"
+# 38549 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36398 "parser_cocci_menhir.ml"
+# 38554 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -36405,16 +38561,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 505 "parser_cocci_menhir.mly"
+# 529 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = p in
       Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 36412 "parser_cocci_menhir.ml"
+# 38568 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
+# 582 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 36418 "parser_cocci_menhir.ml"
+# 38574 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36422,13 +38578,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36426 "parser_cocci_menhir.ml"
+# 38582 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36432 "parser_cocci_menhir.ml"
+# 38588 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36472,19 +38628,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 37 "parser_cocci_menhir.mly"
+# 61 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 36478 "parser_cocci_menhir.ml"
+# 38634 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r00 : (
-# 25 "parser_cocci_menhir.mly"
+# 49 "parser_cocci_menhir.mly"
       (string)
-# 36483 "parser_cocci_menhir.ml"
+# 38639 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let r1 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36488 "parser_cocci_menhir.ml"
+# 38644 "parser_cocci_menhir.ml"
         ) = Obj.magic r1 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -36497,20 +38653,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let p = p0 in
             let r = r0 in
             
-# 508 "parser_cocci_menhir.mly"
+# 532 "parser_cocci_menhir.mly"
     ( let nm = (r,P.id2name p) in
     (* this is only possible when we are in a metavar decl.  Otherwise,
        it will be represented already as a MetaType *)
     let _ = P.check_meta(Ast.MetaTypeDecl(Ast.NONE,nm)) in
     Ast0.wrap(Ast0.MetaType(P.clt2mcode nm (P.id2clt p),
                            Ast0.Impure (*will be ignored*))) )
-# 36508 "parser_cocci_menhir.ml"
+# 38664 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
+# 582 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 36514 "parser_cocci_menhir.ml"
+# 38670 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36518,13 +38674,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36522 "parser_cocci_menhir.ml"
+# 38678 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36528 "parser_cocci_menhir.ml"
+# 38684 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36559,14 +38715,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36565 "parser_cocci_menhir.ml"
+# 38721 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36570 "parser_cocci_menhir.ml"
+# 38726 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -36577,15 +38733,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 515 "parser_cocci_menhir.mly"
+# 539 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
-# 36583 "parser_cocci_menhir.ml"
+# 38739 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
+# 582 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 36589 "parser_cocci_menhir.ml"
+# 38745 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36593,13 +38749,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36597 "parser_cocci_menhir.ml"
+# 38753 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36603 "parser_cocci_menhir.ml"
+# 38759 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36639,19 +38795,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty200 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36645 "parser_cocci_menhir.ml"
+# 38801 "parser_cocci_menhir.ml"
         ) = Obj.magic ty200 in
         let ty100 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36650 "parser_cocci_menhir.ml"
+# 38806 "parser_cocci_menhir.ml"
         ) = Obj.magic ty100 in
         let r0 : (
-# 29 "parser_cocci_menhir.mly"
+# 53 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36655 "parser_cocci_menhir.ml"
+# 38811 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -36664,18 +38820,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let ty2 = ty20 in
             let ty1 = ty10 in
             
-# 517 "parser_cocci_menhir.mly"
+# 541 "parser_cocci_menhir.mly"
     ( Ast0.wrap
        (Ast0.BaseType
           (Ast.LongLongType,
            [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
-# 36673 "parser_cocci_menhir.ml"
+# 38829 "parser_cocci_menhir.ml"
             
           in
           
-# 553 "parser_cocci_menhir.mly"
+# 582 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 36679 "parser_cocci_menhir.ml"
+# 38835 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36683,13 +38839,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36687 "parser_cocci_menhir.ml"
+# 38843 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36693 "parser_cocci_menhir.ml"
+# 38849 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36719,9 +38875,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36725 "parser_cocci_menhir.ml"
+# 38881 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -36731,15 +38887,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 499 "parser_cocci_menhir.mly"
+# 523 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
-# 36737 "parser_cocci_menhir.ml"
+# 38893 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
                     ( ty )
-# 36743 "parser_cocci_menhir.ml"
+# 38899 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36747,13 +38903,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36751 "parser_cocci_menhir.ml"
+# 38907 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36757 "parser_cocci_menhir.ml"
+# 38913 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36783,9 +38939,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36789 "parser_cocci_menhir.ml"
+# 38945 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -36795,15 +38951,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 501 "parser_cocci_menhir.mly"
+# 525 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
-# 36801 "parser_cocci_menhir.ml"
+# 38957 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
                     ( ty )
-# 36807 "parser_cocci_menhir.ml"
+# 38963 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36811,13 +38967,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36815 "parser_cocci_menhir.ml"
+# 38971 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36821 "parser_cocci_menhir.ml"
+# 38977 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36847,9 +39003,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36853 "parser_cocci_menhir.ml"
+# 39009 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -36859,15 +39015,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 503 "parser_cocci_menhir.mly"
+# 527 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
-# 36865 "parser_cocci_menhir.ml"
+# 39021 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
                     ( ty )
-# 36871 "parser_cocci_menhir.ml"
+# 39027 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36875,13 +39031,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36879 "parser_cocci_menhir.ml"
+# 39035 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36885 "parser_cocci_menhir.ml"
+# 39041 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36911,9 +39067,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 43 "parser_cocci_menhir.mly"
+# 67 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 36917 "parser_cocci_menhir.ml"
+# 39073 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -36923,16 +39079,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 505 "parser_cocci_menhir.mly"
+# 529 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = p in
       Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 36930 "parser_cocci_menhir.ml"
+# 39086 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
                     ( ty )
-# 36936 "parser_cocci_menhir.ml"
+# 39092 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36940,13 +39096,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36944 "parser_cocci_menhir.ml"
+# 39100 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36950 "parser_cocci_menhir.ml"
+# 39106 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36985,14 +39141,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 37 "parser_cocci_menhir.mly"
+# 61 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 36991 "parser_cocci_menhir.ml"
+# 39147 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r00 : (
-# 25 "parser_cocci_menhir.mly"
+# 49 "parser_cocci_menhir.mly"
       (string)
-# 36996 "parser_cocci_menhir.ml"
+# 39152 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -37004,20 +39160,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let p = p0 in
             let r = r0 in
             
-# 508 "parser_cocci_menhir.mly"
+# 532 "parser_cocci_menhir.mly"
     ( let nm = (r,P.id2name p) in
     (* this is only possible when we are in a metavar decl.  Otherwise,
        it will be represented already as a MetaType *)
     let _ = P.check_meta(Ast.MetaTypeDecl(Ast.NONE,nm)) in
     Ast0.wrap(Ast0.MetaType(P.clt2mcode nm (P.id2clt p),
                            Ast0.Impure (*will be ignored*))) )
-# 37015 "parser_cocci_menhir.ml"
+# 39171 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
                     ( ty )
-# 37021 "parser_cocci_menhir.ml"
+# 39177 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -37025,13 +39181,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 37029 "parser_cocci_menhir.ml"
+# 39185 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 37035 "parser_cocci_menhir.ml"
+# 39191 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37061,9 +39217,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 37067 "parser_cocci_menhir.ml"
+# 39223 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -37073,15 +39229,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 515 "parser_cocci_menhir.mly"
+# 539 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
-# 37079 "parser_cocci_menhir.ml"
+# 39235 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
                     ( ty )
-# 37085 "parser_cocci_menhir.ml"
+# 39241 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -37089,13 +39245,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 37093 "parser_cocci_menhir.ml"
+# 39249 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 37099 "parser_cocci_menhir.ml"
+# 39255 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37130,14 +39286,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty200 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 37136 "parser_cocci_menhir.ml"
+# 39292 "parser_cocci_menhir.ml"
         ) = Obj.magic ty200 in
         let ty100 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 37141 "parser_cocci_menhir.ml"
+# 39297 "parser_cocci_menhir.ml"
         ) = Obj.magic ty100 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -37149,18 +39305,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let ty2 = ty20 in
             let ty1 = ty10 in
             
-# 517 "parser_cocci_menhir.mly"
+# 541 "parser_cocci_menhir.mly"
     ( Ast0.wrap
        (Ast0.BaseType
           (Ast.LongLongType,
            [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
-# 37158 "parser_cocci_menhir.ml"
+# 39314 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
                     ( ty )
-# 37164 "parser_cocci_menhir.ml"
+# 39320 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -37168,13 +39324,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 37172 "parser_cocci_menhir.ml"
+# 39328 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 37178 "parser_cocci_menhir.ml"
+# 39334 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37204,9 +39360,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 28 "parser_cocci_menhir.mly"
+# 52 "parser_cocci_menhir.mly"
       (Data.clt)
-# 37210 "parser_cocci_menhir.ml"
+# 39366 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -37216,15 +39372,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 525 "parser_cocci_menhir.mly"
+# 549 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.VoidType,[P.clt2mcode "void" ty])) )
-# 37222 "parser_cocci_menhir.ml"
+# 39378 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 37228 "parser_cocci_menhir.ml"
+# 39384 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -37232,13 +39388,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 37236 "parser_cocci_menhir.ml"
+# 39392 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 37242 "parser_cocci_menhir.ml"
+# 39398 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37268,9 +39424,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 37274 "parser_cocci_menhir.ml"
+# 39430 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -37280,15 +39436,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 527 "parser_cocci_menhir.mly"
+# 551 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.DoubleType,[P.clt2mcode "double" ty])) )
-# 37286 "parser_cocci_menhir.ml"
+# 39442 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 37292 "parser_cocci_menhir.ml"
+# 39448 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -37296,13 +39452,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 37300 "parser_cocci_menhir.ml"
+# 39456 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 37306 "parser_cocci_menhir.ml"
+# 39462 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37332,9 +39488,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 27 "parser_cocci_menhir.mly"
+# 51 "parser_cocci_menhir.mly"
       (Data.clt)
-# 37338 "parser_cocci_menhir.ml"
+# 39494 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -37344,15 +39500,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 529 "parser_cocci_menhir.mly"
+# 553 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.FloatType,[P.clt2mcode "float" ty])) )
-# 37350 "parser_cocci_menhir.ml"
+# 39506 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 37356 "parser_cocci_menhir.ml"
+# 39512 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -37360,13 +39516,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 37364 "parser_cocci_menhir.ml"
+# 39520 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 37370 "parser_cocci_menhir.ml"
+# 39526 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37402,9 +39558,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let m : 'tv_list_TMul_ = Obj.magic m in
         let i00 : 'tv_ident = Obj.magic i00 in
         let s00 : (
-# 28 "parser_cocci_menhir.mly"
+# 52 "parser_cocci_menhir.mly"
       (Data.clt)
-# 37408 "parser_cocci_menhir.ml"
+# 39564 "parser_cocci_menhir.ml"
         ) = Obj.magic s00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -37416,15 +39572,121 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let i = i0 in
             let s = s0 in
             
-# 531 "parser_cocci_menhir.mly"
-    ( Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, i)) )
-# 37422 "parser_cocci_menhir.ml"
+# 555 "parser_cocci_menhir.mly"
+    ( Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, Some i)) )
+# 39578 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
+                        ( ty )
+# 39584 "parser_cocci_menhir.ml"
+          
+        in
+        let cv =
+          let x = x0 in
+          
+# 41 "standard.mly"
+    ( Some x )
+# 39592 "parser_cocci_menhir.ml"
+          
+        in
+        
+# 601 "parser_cocci_menhir.mly"
+    ( P.pointerify (P.make_cv cv ty) m )
+# 39598 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = m;
+          MenhirLib.EngineTypes.startp = _startpos_m_;
+          MenhirLib.EngineTypes.endp = _endpos_m_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = r00;
+            MenhirLib.EngineTypes.startp = _startpos_r00_;
+            MenhirLib.EngineTypes.endp = _endpos_r00_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.semv = ids00;
+              MenhirLib.EngineTypes.startp = _startpos_ids00_;
+              MenhirLib.EngineTypes.endp = _endpos_ids00_;
+              MenhirLib.EngineTypes.next = {
+                MenhirLib.EngineTypes.semv = l00;
+                MenhirLib.EngineTypes.startp = _startpos_l00_;
+                MenhirLib.EngineTypes.endp = _endpos_l00_;
+                MenhirLib.EngineTypes.next = {
+                  MenhirLib.EngineTypes.semv = s00;
+                  MenhirLib.EngineTypes.startp = _startpos_s00_;
+                  MenhirLib.EngineTypes.endp = _endpos_s00_;
+                  MenhirLib.EngineTypes.next = {
+                    MenhirLib.EngineTypes.state = _menhir_s;
+                    MenhirLib.EngineTypes.semv = x0;
+                    MenhirLib.EngineTypes.startp = _startpos_x0_;
+                    MenhirLib.EngineTypes.endp = _endpos_x0_;
+                    MenhirLib.EngineTypes.next = _menhir_stack;
+                    };
+                  };
+                };
+              };
+            };
+          } = _menhir_stack in
+        let m : 'tv_list_TMul_ = Obj.magic m in
+        let r00 : (
+# 104 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 39645 "parser_cocci_menhir.ml"
+        ) = Obj.magic r00 in
+        let ids00 : 'tv_enum_decl_list = Obj.magic ids00 in
+        let l00 : (
+# 104 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 39651 "parser_cocci_menhir.ml"
+        ) = Obj.magic l00 in
+        let s00 : (
+# 52 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 39656 "parser_cocci_menhir.ml"
+        ) = Obj.magic s00 in
+        let x0 : 'tv_const_vol = Obj.magic x0 in
+        let _startpos = _startpos_x0_ in
+        let _endpos = _endpos_m_ in
+        let _v : 'tv_typedef_ctype = let ty =
+          let r0 = r00 in
+          let ids0 = ids00 in
+          let l0 = l00 in
+          let s0 = s00 in
+          let ty =
+            let r = r0 in
+            let ids = ids0 in
+            let l = l0 in
+            let s = s0 in
+            let i =
+              
+# 39 "standard.mly"
+    ( None )
+# 39675 "parser_cocci_menhir.ml"
+              
+            in
+            
+# 557 "parser_cocci_menhir.mly"
+    ( (if i = None && !Data.in_iso
+    then failwith "enums must be named in the iso file");
+      Ast0.wrap(Ast0.EnumDef(Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, i)),
+                            P.clt2mcode "{" l, ids, P.clt2mcode "}" r)) )
+# 39684 "parser_cocci_menhir.ml"
+            
+          in
+          
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 37428 "parser_cocci_menhir.ml"
+# 39690 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -37432,13 +39694,128 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 37436 "parser_cocci_menhir.ml"
+# 39698 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 37442 "parser_cocci_menhir.ml"
+# 39704 "parser_cocci_menhir.ml"
+         in
+        _menhir_env.MenhirLib.EngineTypes.stack <- {
+          MenhirLib.EngineTypes.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = Obj.repr _v;
+          MenhirLib.EngineTypes.startp = _startpos;
+          MenhirLib.EngineTypes.endp = _endpos;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          });
+      (fun _menhir_env ->
+        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
+        let {
+          MenhirLib.EngineTypes.semv = m;
+          MenhirLib.EngineTypes.startp = _startpos_m_;
+          MenhirLib.EngineTypes.endp = _endpos_m_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = r00;
+            MenhirLib.EngineTypes.startp = _startpos_r00_;
+            MenhirLib.EngineTypes.endp = _endpos_r00_;
+            MenhirLib.EngineTypes.next = {
+              MenhirLib.EngineTypes.semv = ids00;
+              MenhirLib.EngineTypes.startp = _startpos_ids00_;
+              MenhirLib.EngineTypes.endp = _endpos_ids00_;
+              MenhirLib.EngineTypes.next = {
+                MenhirLib.EngineTypes.semv = l00;
+                MenhirLib.EngineTypes.startp = _startpos_l00_;
+                MenhirLib.EngineTypes.endp = _endpos_l00_;
+                MenhirLib.EngineTypes.next = {
+                  MenhirLib.EngineTypes.semv = x000;
+                  MenhirLib.EngineTypes.startp = _startpos_x000_;
+                  MenhirLib.EngineTypes.endp = _endpos_x000_;
+                  MenhirLib.EngineTypes.next = {
+                    MenhirLib.EngineTypes.semv = s00;
+                    MenhirLib.EngineTypes.startp = _startpos_s00_;
+                    MenhirLib.EngineTypes.endp = _endpos_s00_;
+                    MenhirLib.EngineTypes.next = {
+                      MenhirLib.EngineTypes.state = _menhir_s;
+                      MenhirLib.EngineTypes.semv = x0;
+                      MenhirLib.EngineTypes.startp = _startpos_x0_;
+                      MenhirLib.EngineTypes.endp = _endpos_x0_;
+                      MenhirLib.EngineTypes.next = _menhir_stack;
+                      };
+                    };
+                  };
+                };
+              };
+            };
+          } = _menhir_stack in
+        let m : 'tv_list_TMul_ = Obj.magic m in
+        let r00 : (
+# 104 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 39756 "parser_cocci_menhir.ml"
+        ) = Obj.magic r00 in
+        let ids00 : 'tv_enum_decl_list = Obj.magic ids00 in
+        let l00 : (
+# 104 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 39762 "parser_cocci_menhir.ml"
+        ) = Obj.magic l00 in
+        let x000 : 'tv_ident = Obj.magic x000 in
+        let s00 : (
+# 52 "parser_cocci_menhir.mly"
+      (Data.clt)
+# 39768 "parser_cocci_menhir.ml"
+        ) = Obj.magic s00 in
+        let x0 : 'tv_const_vol = Obj.magic x0 in
+        let _startpos = _startpos_x0_ in
+        let _endpos = _endpos_m_ in
+        let _v : 'tv_typedef_ctype = let ty =
+          let r0 = r00 in
+          let ids0 = ids00 in
+          let l0 = l00 in
+          let x00 = x000 in
+          let s0 = s00 in
+          let ty =
+            let r = r0 in
+            let ids = ids0 in
+            let l = l0 in
+            let x0 = x00 in
+            let s = s0 in
+            let i =
+              let x = x0 in
+              
+# 41 "standard.mly"
+    ( Some x )
+# 39790 "parser_cocci_menhir.ml"
+              
+            in
+            
+# 557 "parser_cocci_menhir.mly"
+    ( (if i = None && !Data.in_iso
+    then failwith "enums must be named in the iso file");
+      Ast0.wrap(Ast0.EnumDef(Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, i)),
+                            P.clt2mcode "{" l, ids, P.clt2mcode "}" r)) )
+# 39799 "parser_cocci_menhir.ml"
+            
+          in
+          
+# 584 "parser_cocci_menhir.mly"
+                        ( ty )
+# 39805 "parser_cocci_menhir.ml"
+          
+        in
+        let cv =
+          let x = x0 in
+          
+# 41 "standard.mly"
+    ( Some x )
+# 39813 "parser_cocci_menhir.ml"
+          
+        in
+        
+# 601 "parser_cocci_menhir.mly"
+    ( P.pointerify (P.make_cv cv ty) m )
+# 39819 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37484,15 +39861,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let i = i0 in
             let s = s0 in
             
-# 533 "parser_cocci_menhir.mly"
+# 562 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.StructUnionName(s, Some i)) )
-# 37490 "parser_cocci_menhir.ml"
+# 39867 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 37496 "parser_cocci_menhir.ml"
+# 39873 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -37500,13 +39877,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 37504 "parser_cocci_menhir.ml"
+# 39881 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 37510 "parser_cocci_menhir.ml"
+# 39887 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37551,15 +39928,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let r00 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37557 "parser_cocci_menhir.ml"
+# 39934 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let d00 : 'tv_struct_decl_list = Obj.magic d00 in
         let l00 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37563 "parser_cocci_menhir.ml"
+# 39940 "parser_cocci_menhir.ml"
         ) = Obj.magic l00 in
         let s00 : 'tv_struct_or_union = Obj.magic s00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
@@ -37579,23 +39956,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               
 # 39 "standard.mly"
     ( None )
-# 37583 "parser_cocci_menhir.ml"
+# 39960 "parser_cocci_menhir.ml"
               
             in
             
-# 536 "parser_cocci_menhir.mly"
+# 565 "parser_cocci_menhir.mly"
     ( (if i = None && !Data.in_iso
     then failwith "structures must be named in the iso file");
       Ast0.wrap(Ast0.StructUnionDef(Ast0.wrap(Ast0.StructUnionName(s, i)),
                                    P.clt2mcode "{" l,
                                    d, P.clt2mcode "}" r)) )
-# 37593 "parser_cocci_menhir.ml"
+# 39970 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 37599 "parser_cocci_menhir.ml"
+# 39976 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -37603,13 +39980,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 37607 "parser_cocci_menhir.ml"
+# 39984 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 37613 "parser_cocci_menhir.ml"
+# 39990 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37659,15 +40036,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let r00 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37665 "parser_cocci_menhir.ml"
+# 40042 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let d00 : 'tv_struct_decl_list = Obj.magic d00 in
         let l00 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37671 "parser_cocci_menhir.ml"
+# 40048 "parser_cocci_menhir.ml"
         ) = Obj.magic l00 in
         let x000 : 'tv_ident = Obj.magic x000 in
         let s00 : 'tv_struct_or_union = Obj.magic s00 in
@@ -37691,23 +40068,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               
 # 41 "standard.mly"
     ( Some x )
-# 37695 "parser_cocci_menhir.ml"
+# 40072 "parser_cocci_menhir.ml"
               
             in
             
-# 536 "parser_cocci_menhir.mly"
+# 565 "parser_cocci_menhir.mly"
     ( (if i = None && !Data.in_iso
     then failwith "structures must be named in the iso file");
       Ast0.wrap(Ast0.StructUnionDef(Ast0.wrap(Ast0.StructUnionName(s, i)),
                                    P.clt2mcode "{" l,
                                    d, P.clt2mcode "}" r)) )
-# 37705 "parser_cocci_menhir.ml"
+# 40082 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 37711 "parser_cocci_menhir.ml"
+# 40088 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -37715,13 +40092,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 37719 "parser_cocci_menhir.ml"
+# 40096 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 37725 "parser_cocci_menhir.ml"
+# 40102 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37766,20 +40143,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let r00 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37772 "parser_cocci_menhir.ml"
+# 40149 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let d00 : 'tv_struct_decl_list = Obj.magic d00 in
         let l00 : (
-# 80 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37778 "parser_cocci_menhir.ml"
+# 40155 "parser_cocci_menhir.ml"
         ) = Obj.magic l00 in
         let s00 : (
-# 43 "parser_cocci_menhir.mly"
+# 67 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 37783 "parser_cocci_menhir.ml"
+# 40160 "parser_cocci_menhir.ml"
         ) = Obj.magic s00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -37795,17 +40172,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let l = l0 in
             let s = s0 in
             
-# 542 "parser_cocci_menhir.mly"
+# 571 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = s in
     let ty = Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) in
     Ast0.wrap(Ast0.StructUnionDef(ty,P.clt2mcode "{" l,d,P.clt2mcode "}" r)) )
-# 37803 "parser_cocci_menhir.ml"
+# 40180 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 37809 "parser_cocci_menhir.ml"
+# 40186 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -37813,13 +40190,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 37817 "parser_cocci_menhir.ml"
+# 40194 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 37823 "parser_cocci_menhir.ml"
+# 40200 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37849,9 +40226,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 37 "parser_cocci_menhir.mly"
+# 61 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 37855 "parser_cocci_menhir.ml"
+# 40232 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -37861,15 +40238,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 546 "parser_cocci_menhir.mly"
+# 575 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.TypeName(P.id2mcode p)) )
-# 37867 "parser_cocci_menhir.ml"
+# 40244 "parser_cocci_menhir.ml"
             
           in
           
-# 555 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                         ( ty )
-# 37873 "parser_cocci_menhir.ml"
+# 40250 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -37877,13 +40254,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 37881 "parser_cocci_menhir.ml"
+# 40258 "parser_cocci_menhir.ml"
           
         in
         
-# 572 "parser_cocci_menhir.mly"
+# 601 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 37887 "parser_cocci_menhir.ml"
+# 40264 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37912,24 +40289,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let rp : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37918 "parser_cocci_menhir.ml"
+# 40295 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let t : 'tv_midzero_list_ctype_ctype_ = Obj.magic t in
         let lp : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37924 "parser_cocci_menhir.ml"
+# 40301 "parser_cocci_menhir.ml"
         ) = Obj.magic lp in
         let _startpos = _startpos_lp_ in
         let _endpos = _endpos_rp_ in
         let _v : 'tv_typedef_ctype = 
-# 574 "parser_cocci_menhir.mly"
+# 603 "parser_cocci_menhir.mly"
     ( let (mids,code) = t in
       Ast0.wrap
        (Ast0.DisjType(P.clt2mcode "(" lp,code,mids, P.clt2mcode ")" rp)) )
-# 37933 "parser_cocci_menhir.ml"
+# 40310 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37951,9 +40328,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_typedef_ident = 
-# 1689 "parser_cocci_menhir.mly"
+# 1713 "parser_cocci_menhir.mly"
          ( Ast0.wrap(Ast0.TypeName(P.id2mcode _1)) )
-# 37957 "parser_cocci_menhir.ml"
+# 40334 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37972,17 +40349,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 43 "parser_cocci_menhir.mly"
+# 67 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 37978 "parser_cocci_menhir.ml"
+# 40355 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_typedef_ident = 
-# 1691 "parser_cocci_menhir.mly"
+# 1715 "parser_cocci_menhir.mly"
          ( let (nm,pure,clt) = _1 in
         Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 37986 "parser_cocci_menhir.ml"
+# 40363 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38004,9 +40381,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_unary_expr_eexpr_dot_expressions_ = 
-# 1327 "parser_cocci_menhir.mly"
+# 1351 "parser_cocci_menhir.mly"
                                          ( _1 )
-# 38010 "parser_cocci_menhir.ml"
+# 40387 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38031,16 +40408,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_eexpr_dot_expressions_ = Obj.magic _2 in
         let _1 : (
-# 64 "parser_cocci_menhir.mly"
+# 88 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38037 "parser_cocci_menhir.ml"
+# 40414 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_unary_expr_eexpr_dot_expressions_ = 
-# 1329 "parser_cocci_menhir.mly"
+# 1353 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Inc _1)) )
-# 38044 "parser_cocci_menhir.ml"
+# 40421 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38065,16 +40442,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_eexpr_dot_expressions_ = Obj.magic _2 in
         let _1 : (
-# 64 "parser_cocci_menhir.mly"
+# 88 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38071 "parser_cocci_menhir.ml"
+# 40448 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_unary_expr_eexpr_dot_expressions_ = 
-# 1331 "parser_cocci_menhir.mly"
+# 1355 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Dec _1)) )
-# 38078 "parser_cocci_menhir.ml"
+# 40455 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38102,9 +40479,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_unary_expr_eexpr_dot_expressions_ = 
-# 1333 "parser_cocci_menhir.mly"
+# 1357 "parser_cocci_menhir.mly"
       ( let mcode = _1 in Ast0.wrap(Ast0.Unary(_2, mcode)) )
-# 38108 "parser_cocci_menhir.ml"
+# 40485 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38129,17 +40506,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_eexpr_dot_expressions_ = Obj.magic _2 in
         let _1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38135 "parser_cocci_menhir.ml"
+# 40512 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_unary_expr_eexpr_dot_expressions_ = 
-# 1335 "parser_cocci_menhir.mly"
+# 1359 "parser_cocci_menhir.mly"
       ( let mcode = P.clt2mcode Ast.Not _1 in
       Ast0.wrap(Ast0.Unary(_2, mcode)) )
-# 38143 "parser_cocci_menhir.ml"
+# 40520 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38164,16 +40541,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_eexpr_dot_expressions_ = Obj.magic _2 in
         let _1 : (
-# 36 "parser_cocci_menhir.mly"
+# 60 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38170 "parser_cocci_menhir.ml"
+# 40547 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_unary_expr_eexpr_dot_expressions_ = 
-# 1338 "parser_cocci_menhir.mly"
+# 1362 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.SizeOfExpr (P.clt2mcode "sizeof" _1, _2)) )
-# 38177 "parser_cocci_menhir.ml"
+# 40554 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38207,29 +40584,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let rp : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38213 "parser_cocci_menhir.ml"
+# 40590 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let t : 'tv_ctype = Obj.magic t in
         let lp : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38219 "parser_cocci_menhir.ml"
+# 40596 "parser_cocci_menhir.ml"
         ) = Obj.magic lp in
         let s : (
-# 36 "parser_cocci_menhir.mly"
+# 60 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38224 "parser_cocci_menhir.ml"
+# 40601 "parser_cocci_menhir.ml"
         ) = Obj.magic s in
         let _startpos = _startpos_s_ in
         let _endpos = _endpos_rp_ in
         let _v : 'tv_unary_expr_eexpr_dot_expressions_ = 
-# 1340 "parser_cocci_menhir.mly"
+# 1364 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.SizeOfType (P.clt2mcode "sizeof" s,
                                    P.clt2mcode "(" lp,t,
                                    P.clt2mcode ")" rp)) )
-# 38233 "parser_cocci_menhir.ml"
+# 40610 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38251,9 +40628,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_unary_expr_eexpr_invalid_ = 
-# 1327 "parser_cocci_menhir.mly"
+# 1351 "parser_cocci_menhir.mly"
                                          ( _1 )
-# 38257 "parser_cocci_menhir.ml"
+# 40634 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38278,16 +40655,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_eexpr_invalid_ = Obj.magic _2 in
         let _1 : (
-# 64 "parser_cocci_menhir.mly"
+# 88 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38284 "parser_cocci_menhir.ml"
+# 40661 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_unary_expr_eexpr_invalid_ = 
-# 1329 "parser_cocci_menhir.mly"
+# 1353 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Inc _1)) )
-# 38291 "parser_cocci_menhir.ml"
+# 40668 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38312,16 +40689,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_eexpr_invalid_ = Obj.magic _2 in
         let _1 : (
-# 64 "parser_cocci_menhir.mly"
+# 88 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38318 "parser_cocci_menhir.ml"
+# 40695 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_unary_expr_eexpr_invalid_ = 
-# 1331 "parser_cocci_menhir.mly"
+# 1355 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Dec _1)) )
-# 38325 "parser_cocci_menhir.ml"
+# 40702 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38349,9 +40726,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_unary_expr_eexpr_invalid_ = 
-# 1333 "parser_cocci_menhir.mly"
+# 1357 "parser_cocci_menhir.mly"
       ( let mcode = _1 in Ast0.wrap(Ast0.Unary(_2, mcode)) )
-# 38355 "parser_cocci_menhir.ml"
+# 40732 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38376,17 +40753,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_eexpr_invalid_ = Obj.magic _2 in
         let _1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38382 "parser_cocci_menhir.ml"
+# 40759 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_unary_expr_eexpr_invalid_ = 
-# 1335 "parser_cocci_menhir.mly"
+# 1359 "parser_cocci_menhir.mly"
       ( let mcode = P.clt2mcode Ast.Not _1 in
       Ast0.wrap(Ast0.Unary(_2, mcode)) )
-# 38390 "parser_cocci_menhir.ml"
+# 40767 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38411,16 +40788,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_eexpr_invalid_ = Obj.magic _2 in
         let _1 : (
-# 36 "parser_cocci_menhir.mly"
+# 60 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38417 "parser_cocci_menhir.ml"
+# 40794 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_unary_expr_eexpr_invalid_ = 
-# 1338 "parser_cocci_menhir.mly"
+# 1362 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.SizeOfExpr (P.clt2mcode "sizeof" _1, _2)) )
-# 38424 "parser_cocci_menhir.ml"
+# 40801 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38454,29 +40831,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let rp : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38460 "parser_cocci_menhir.ml"
+# 40837 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let t : 'tv_ctype = Obj.magic t in
         let lp : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38466 "parser_cocci_menhir.ml"
+# 40843 "parser_cocci_menhir.ml"
         ) = Obj.magic lp in
         let s : (
-# 36 "parser_cocci_menhir.mly"
+# 60 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38471 "parser_cocci_menhir.ml"
+# 40848 "parser_cocci_menhir.ml"
         ) = Obj.magic s in
         let _startpos = _startpos_s_ in
         let _endpos = _endpos_rp_ in
         let _v : 'tv_unary_expr_eexpr_invalid_ = 
-# 1340 "parser_cocci_menhir.mly"
+# 1364 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.SizeOfType (P.clt2mcode "sizeof" s,
                                    P.clt2mcode "(" lp,t,
                                    P.clt2mcode ")" rp)) )
-# 38480 "parser_cocci_menhir.ml"
+# 40857 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38498,9 +40875,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_unary_expr_eexpr_nest_expressions_ = 
-# 1327 "parser_cocci_menhir.mly"
+# 1351 "parser_cocci_menhir.mly"
                                          ( _1 )
-# 38504 "parser_cocci_menhir.ml"
+# 40881 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38525,16 +40902,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_eexpr_nest_expressions_ = Obj.magic _2 in
         let _1 : (
-# 64 "parser_cocci_menhir.mly"
+# 88 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38531 "parser_cocci_menhir.ml"
+# 40908 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_unary_expr_eexpr_nest_expressions_ = 
-# 1329 "parser_cocci_menhir.mly"
+# 1353 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Inc _1)) )
-# 38538 "parser_cocci_menhir.ml"
+# 40915 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38559,16 +40936,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_eexpr_nest_expressions_ = Obj.magic _2 in
         let _1 : (
-# 64 "parser_cocci_menhir.mly"
+# 88 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38565 "parser_cocci_menhir.ml"
+# 40942 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_unary_expr_eexpr_nest_expressions_ = 
-# 1331 "parser_cocci_menhir.mly"
+# 1355 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Dec _1)) )
-# 38572 "parser_cocci_menhir.ml"
+# 40949 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38596,9 +40973,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_unary_expr_eexpr_nest_expressions_ = 
-# 1333 "parser_cocci_menhir.mly"
+# 1357 "parser_cocci_menhir.mly"
       ( let mcode = _1 in Ast0.wrap(Ast0.Unary(_2, mcode)) )
-# 38602 "parser_cocci_menhir.ml"
+# 40979 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38623,17 +41000,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_eexpr_nest_expressions_ = Obj.magic _2 in
         let _1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38629 "parser_cocci_menhir.ml"
+# 41006 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_unary_expr_eexpr_nest_expressions_ = 
-# 1335 "parser_cocci_menhir.mly"
+# 1359 "parser_cocci_menhir.mly"
       ( let mcode = P.clt2mcode Ast.Not _1 in
       Ast0.wrap(Ast0.Unary(_2, mcode)) )
-# 38637 "parser_cocci_menhir.ml"
+# 41014 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38658,16 +41035,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_eexpr_nest_expressions_ = Obj.magic _2 in
         let _1 : (
-# 36 "parser_cocci_menhir.mly"
+# 60 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38664 "parser_cocci_menhir.ml"
+# 41041 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_unary_expr_eexpr_nest_expressions_ = 
-# 1338 "parser_cocci_menhir.mly"
+# 1362 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.SizeOfExpr (P.clt2mcode "sizeof" _1, _2)) )
-# 38671 "parser_cocci_menhir.ml"
+# 41048 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38701,29 +41078,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let rp : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38707 "parser_cocci_menhir.ml"
+# 41084 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let t : 'tv_ctype = Obj.magic t in
         let lp : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38713 "parser_cocci_menhir.ml"
+# 41090 "parser_cocci_menhir.ml"
         ) = Obj.magic lp in
         let s : (
-# 36 "parser_cocci_menhir.mly"
+# 60 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38718 "parser_cocci_menhir.ml"
+# 41095 "parser_cocci_menhir.ml"
         ) = Obj.magic s in
         let _startpos = _startpos_s_ in
         let _endpos = _endpos_rp_ in
         let _v : 'tv_unary_expr_eexpr_nest_expressions_ = 
-# 1340 "parser_cocci_menhir.mly"
+# 1364 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.SizeOfType (P.clt2mcode "sizeof" s,
                                    P.clt2mcode "(" lp,t,
                                    P.clt2mcode ")" rp)) )
-# 38727 "parser_cocci_menhir.ml"
+# 41104 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38745,9 +41122,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_unary_expr_expr_invalid_ = 
-# 1327 "parser_cocci_menhir.mly"
+# 1351 "parser_cocci_menhir.mly"
                                          ( _1 )
-# 38751 "parser_cocci_menhir.ml"
+# 41128 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38772,16 +41149,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_expr_invalid_ = Obj.magic _2 in
         let _1 : (
-# 64 "parser_cocci_menhir.mly"
+# 88 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38778 "parser_cocci_menhir.ml"
+# 41155 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_unary_expr_expr_invalid_ = 
-# 1329 "parser_cocci_menhir.mly"
+# 1353 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Inc _1)) )
-# 38785 "parser_cocci_menhir.ml"
+# 41162 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38806,16 +41183,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_expr_invalid_ = Obj.magic _2 in
         let _1 : (
-# 64 "parser_cocci_menhir.mly"
+# 88 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38812 "parser_cocci_menhir.ml"
+# 41189 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_unary_expr_expr_invalid_ = 
-# 1331 "parser_cocci_menhir.mly"
+# 1355 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Dec _1)) )
-# 38819 "parser_cocci_menhir.ml"
+# 41196 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38843,9 +41220,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_unary_expr_expr_invalid_ = 
-# 1333 "parser_cocci_menhir.mly"
+# 1357 "parser_cocci_menhir.mly"
       ( let mcode = _1 in Ast0.wrap(Ast0.Unary(_2, mcode)) )
-# 38849 "parser_cocci_menhir.ml"
+# 41226 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38870,17 +41247,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_expr_invalid_ = Obj.magic _2 in
         let _1 : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38876 "parser_cocci_menhir.ml"
+# 41253 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_unary_expr_expr_invalid_ = 
-# 1335 "parser_cocci_menhir.mly"
+# 1359 "parser_cocci_menhir.mly"
       ( let mcode = P.clt2mcode Ast.Not _1 in
       Ast0.wrap(Ast0.Unary(_2, mcode)) )
-# 38884 "parser_cocci_menhir.ml"
+# 41261 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38905,16 +41282,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_expr_invalid_ = Obj.magic _2 in
         let _1 : (
-# 36 "parser_cocci_menhir.mly"
+# 60 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38911 "parser_cocci_menhir.ml"
+# 41288 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_unary_expr_expr_invalid_ = 
-# 1338 "parser_cocci_menhir.mly"
+# 1362 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.SizeOfExpr (P.clt2mcode "sizeof" _1, _2)) )
-# 38918 "parser_cocci_menhir.ml"
+# 41295 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38948,29 +41325,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let rp : (
-# 56 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38954 "parser_cocci_menhir.ml"
+# 41331 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let t : 'tv_ctype = Obj.magic t in
         let lp : (
-# 55 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38960 "parser_cocci_menhir.ml"
+# 41337 "parser_cocci_menhir.ml"
         ) = Obj.magic lp in
         let s : (
-# 36 "parser_cocci_menhir.mly"
+# 60 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38965 "parser_cocci_menhir.ml"
+# 41342 "parser_cocci_menhir.ml"
         ) = Obj.magic s in
         let _startpos = _startpos_s_ in
         let _endpos = _endpos_rp_ in
         let _v : 'tv_unary_expr_expr_invalid_ = 
-# 1340 "parser_cocci_menhir.mly"
+# 1364 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.SizeOfType (P.clt2mcode "sizeof" s,
                                    P.clt2mcode "(" lp,t,
                                    P.clt2mcode ")" rp)) )
-# 38974 "parser_cocci_menhir.ml"
+# 41351 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38989,16 +41366,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 72 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38995 "parser_cocci_menhir.ml"
+# 41372 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_unary_op = 
-# 1344 "parser_cocci_menhir.mly"
+# 1368 "parser_cocci_menhir.mly"
                   ( P.clt2mcode Ast.GetRef _1 )
-# 39002 "parser_cocci_menhir.ml"
+# 41379 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -39017,16 +41394,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 78 "parser_cocci_menhir.mly"
+# 102 "parser_cocci_menhir.mly"
        (Data.clt)
-# 39023 "parser_cocci_menhir.ml"
+# 41400 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_unary_op = 
-# 1345 "parser_cocci_menhir.mly"
+# 1369 "parser_cocci_menhir.mly"
            ( P.clt2mcode Ast.DeRef _1 )
-# 39030 "parser_cocci_menhir.ml"
+# 41407 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -39045,16 +41422,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 77 "parser_cocci_menhir.mly"
+# 101 "parser_cocci_menhir.mly"
        (Data.clt)
-# 39051 "parser_cocci_menhir.ml"
+# 41428 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_unary_op = 
-# 1346 "parser_cocci_menhir.mly"
+# 1370 "parser_cocci_menhir.mly"
            ( P.clt2mcode Ast.UnPlus _1 )
-# 39058 "parser_cocci_menhir.ml"
+# 41435 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -39073,16 +41450,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 77 "parser_cocci_menhir.mly"
+# 101 "parser_cocci_menhir.mly"
        (Data.clt)
-# 39079 "parser_cocci_menhir.ml"
+# 41456 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_unary_op = 
-# 1347 "parser_cocci_menhir.mly"
+# 1371 "parser_cocci_menhir.mly"
            ( P.clt2mcode Ast.UnMinus _1 )
-# 39086 "parser_cocci_menhir.ml"
+# 41463 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -39101,16 +41478,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 78 "parser_cocci_menhir.mly"
+# 102 "parser_cocci_menhir.mly"
        (Data.clt)
-# 39107 "parser_cocci_menhir.ml"
+# 41484 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_unary_op = 
-# 1348 "parser_cocci_menhir.mly"
+# 1372 "parser_cocci_menhir.mly"
            ( P.clt2mcode Ast.Tilde _1 )
-# 39114 "parser_cocci_menhir.ml"
+# 41491 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -39138,9 +41515,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_when_start = 
-# 1910 "parser_cocci_menhir.mly"
+# 1965 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.DOTS((Ast0.wrap(Ast0.Exp(_1)))::_2)) )
-# 39144 "parser_cocci_menhir.ml"
+# 41521 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -39168,9 +41545,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_when_start = 
-# 1912 "parser_cocci_menhir.mly"
+# 1967 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.DOTS(_1@_2)) )
-# 39174 "parser_cocci_menhir.ml"
+# 41551 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -39192,9 +41569,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_w_ in
         let _endpos = _endpos_w_ in
         let _v : 'tv_whenppdecs = 
-# 922 "parser_cocci_menhir.mly"
+# 970 "parser_cocci_menhir.mly"
     ( w )
-# 39198 "parser_cocci_menhir.ml"
+# 41575 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -39228,9 +41605,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : 'tv_whens_when_start_rule_elem_statement_any_strict_ = 
-# 1979 "parser_cocci_menhir.mly"
+# 2012 "parser_cocci_menhir.mly"
                                          ( [Ast0.WhenNot w] )
-# 39234 "parser_cocci_menhir.ml"
+# 41611 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -39264,9 +41641,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : 'tv_whens_when_start_rule_elem_statement_any_strict_ = 
-# 1980 "parser_cocci_menhir.mly"
+# 2013 "parser_cocci_menhir.mly"
                                              ( [Ast0.WhenAlways w] )
-# 39270 "parser_cocci_menhir.ml"
+# 41647 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -39296,9 +41673,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_whens_when_start_rule_elem_statement_any_strict_ = 
-# 1982 "parser_cocci_menhir.mly"
+# 2015 "parser_cocci_menhir.mly"
       ( List.map (function x -> Ast0.WhenModifier(x)) _2 )
-# 39302 "parser_cocci_menhir.ml"
+# 41679 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -39332,9 +41709,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : 'tv_whens_when_start_rule_elem_statement_any_strict_ = 
-# 1983 "parser_cocci_menhir.mly"
+# 2016 "parser_cocci_menhir.mly"
                                         ( [Ast0.WhenNotTrue e] )
-# 39338 "parser_cocci_menhir.ml"
+# 41715 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -39368,9 +41745,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : 'tv_whens_when_start_rule_elem_statement_any_strict_ = 
-# 1984 "parser_cocci_menhir.mly"
+# 2017 "parser_cocci_menhir.mly"
                                          ( [Ast0.WhenNotFalse e] )
-# 39374 "parser_cocci_menhir.ml"
+# 41751 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -39391,106 +41768,106 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
 
 let rec script_meta_main =
   fun lexer lexbuf ->
-    (Obj.magic (MenhirInterpreter.entry 1848 lexer lexbuf) : (
-# 140 "parser_cocci_menhir.mly"
+    (Obj.magic (MenhirInterpreter.entry 1924 lexer lexbuf) : (
+# 164 "parser_cocci_menhir.mly"
        ((string option (*string*) * string option (*ast*)) * (Ast_cocci.meta_name * Ast_cocci.metavar) option)
-# 39398 "parser_cocci_menhir.ml"
+# 41775 "parser_cocci_menhir.ml"
     ))
 
 and rule_name =
   fun lexer lexbuf ->
-    (Obj.magic (MenhirInterpreter.entry 1773 lexer lexbuf) : (
-# 134 "parser_cocci_menhir.mly"
+    (Obj.magic (MenhirInterpreter.entry 1849 lexer lexbuf) : (
+# 158 "parser_cocci_menhir.mly"
       (Ast_cocci.rulename)
-# 39406 "parser_cocci_menhir.ml"
+# 41783 "parser_cocci_menhir.ml"
     ))
 
 and reinit =
   fun lexer lexbuf ->
-    (Obj.magic (MenhirInterpreter.entry 1771 lexer lexbuf) : (
-# 112 "parser_cocci_menhir.mly"
+    (Obj.magic (MenhirInterpreter.entry 1847 lexer lexbuf) : (
+# 136 "parser_cocci_menhir.mly"
       (unit)
-# 39414 "parser_cocci_menhir.ml"
+# 41791 "parser_cocci_menhir.ml"
     ))
 
 and plus_main =
   fun lexer lexbuf ->
-    (Obj.magic (MenhirInterpreter.entry 1735 lexer lexbuf) : (
-# 121 "parser_cocci_menhir.mly"
+    (Obj.magic (MenhirInterpreter.entry 1811 lexer lexbuf) : (
+# 145 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
-# 39422 "parser_cocci_menhir.ml"
+# 41799 "parser_cocci_menhir.ml"
     ))
 
 and plus_exp_main =
   fun lexer lexbuf ->
-    (Obj.magic (MenhirInterpreter.entry 1727 lexer lexbuf) : (
-# 124 "parser_cocci_menhir.mly"
+    (Obj.magic (MenhirInterpreter.entry 1803 lexer lexbuf) : (
+# 148 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
-# 39430 "parser_cocci_menhir.ml"
+# 41807 "parser_cocci_menhir.ml"
     ))
 
 and never_used =
   fun lexer lexbuf ->
-    (Obj.magic (MenhirInterpreter.entry 1721 lexer lexbuf) : (
-# 149 "parser_cocci_menhir.mly"
+    (Obj.magic (MenhirInterpreter.entry 1797 lexer lexbuf) : (
+# 173 "parser_cocci_menhir.mly"
       (unit)
-# 39438 "parser_cocci_menhir.ml"
+# 41815 "parser_cocci_menhir.ml"
     ))
 
 and minus_main =
   fun lexer lexbuf ->
-    (Obj.magic (MenhirInterpreter.entry 1641 lexer lexbuf) : (
-# 115 "parser_cocci_menhir.mly"
+    (Obj.magic (MenhirInterpreter.entry 1713 lexer lexbuf) : (
+# 139 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
-# 39446 "parser_cocci_menhir.ml"
+# 41823 "parser_cocci_menhir.ml"
     ))
 
 and minus_exp_main =
   fun lexer lexbuf ->
-    (Obj.magic (MenhirInterpreter.entry 1629 lexer lexbuf) : (
-# 118 "parser_cocci_menhir.mly"
+    (Obj.magic (MenhirInterpreter.entry 1701 lexer lexbuf) : (
+# 142 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
-# 39454 "parser_cocci_menhir.ml"
+# 41831 "parser_cocci_menhir.ml"
     ))
 
 and meta_main =
   fun lexer lexbuf ->
-    (Obj.magic (MenhirInterpreter.entry 1626 lexer lexbuf) : (
-# 138 "parser_cocci_menhir.mly"
+    (Obj.magic (MenhirInterpreter.entry 1698 lexer lexbuf) : (
+# 162 "parser_cocci_menhir.mly"
       ((Ast_cocci.metavar,Ast_cocci.metavar) Common.either list)
-# 39462 "parser_cocci_menhir.ml"
+# 41839 "parser_cocci_menhir.ml"
     ))
 
 and iso_rule_name =
   fun lexer lexbuf ->
-    (Obj.magic (MenhirInterpreter.entry 1622 lexer lexbuf) : (
-# 130 "parser_cocci_menhir.mly"
+    (Obj.magic (MenhirInterpreter.entry 1694 lexer lexbuf) : (
+# 154 "parser_cocci_menhir.mly"
       (Ast_cocci.rulename)
-# 39470 "parser_cocci_menhir.ml"
+# 41847 "parser_cocci_menhir.ml"
     ))
 
 and iso_meta_main =
   fun lexer lexbuf ->
-    (Obj.magic (MenhirInterpreter.entry 1360 lexer lexbuf) : (
-# 146 "parser_cocci_menhir.mly"
+    (Obj.magic (MenhirInterpreter.entry 1432 lexer lexbuf) : (
+# 170 "parser_cocci_menhir.mly"
       ((Ast_cocci.metavar,Ast_cocci.metavar) Common.either list)
-# 39478 "parser_cocci_menhir.ml"
+# 41855 "parser_cocci_menhir.ml"
     ))
 
 and iso_main =
   fun lexer lexbuf ->
     (Obj.magic (MenhirInterpreter.entry 18 lexer lexbuf) : (
-# 143 "parser_cocci_menhir.mly"
+# 167 "parser_cocci_menhir.mly"
       (Ast0_cocci.anything list list)
-# 39486 "parser_cocci_menhir.ml"
+# 41863 "parser_cocci_menhir.ml"
     ))
 
 and include_main =
   fun lexer lexbuf ->
     (Obj.magic (MenhirInterpreter.entry 0 lexer lexbuf) : (
-# 127 "parser_cocci_menhir.mly"
+# 151 "parser_cocci_menhir.mly"
       (Data.incl_iso list)
-# 39494 "parser_cocci_menhir.ml"
+# 41871 "parser_cocci_menhir.ml"
     ))
 
 
index 1553b7c..d4aa669 100644 (file)
@@ -1,3 +1,27 @@
+/*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ */
+
+
 %{
 
 (* Not clear how to allow function declarations to specify a return type
@@ -528,7 +552,12 @@ non_signable_types:
 | ty=Tfloat
     { Ast0.wrap(Ast0.BaseType(Ast.FloatType,[P.clt2mcode "float" ty])) }
 | s=Tenum i=ident
-    { Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, i)) }
+    { Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, Some i)) }
+| s=Tenum i=ioption(ident) l=TOBrace ids=enum_decl_list r=TCBrace
+    { (if i = None && !Data.in_iso
+    then failwith "enums must be named in the iso file");
+      Ast0.wrap(Ast0.EnumDef(Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, i)),
+                            P.clt2mcode "{" l, ids, P.clt2mcode "}" r)) }
 | s=struct_or_union i=ident
     { Ast0.wrap(Ast0.StructUnionName(s, Some i)) }
 | s=struct_or_union i=ioption(ident)
@@ -582,11 +611,14 @@ struct_or_union:
      | u=Tunion  { P.clt2mcode Ast.Union u }
 
 struct_decl:
-      TNothing { [] }
-    | TMetaField { [P.meta_field $1] }
+      TNothing        { [] }
+    | struct_decl_one { [$1] }
+
+struct_decl_one:
+    | TMetaField { P.meta_field $1 }
     | t=ctype d=d_ident pv=TPtVirg
         { let (id,fn) = d in
-        [Ast0.wrap(Ast0.UnInit(None,fn t,id,P.clt2mcode ";" pv))] }
+        Ast0.wrap(Ast0.UnInit(None,fn t,id,P.clt2mcode ";" pv)) }
     | t=ctype lp1=TOPar st=TMul d=d_ident rp1=TCPar
        lp2=TOPar p=decl_list(name_opt_decl) rp2=TCPar pv=TPtVirg
         { let (id,fn) = d in
@@ -595,11 +627,11 @@ struct_decl:
            (Ast0.FunctionPointer
               (t,P.clt2mcode "(" lp1,P.clt2mcode "*" st,P.clt2mcode ")" rp1,
                P.clt2mcode "(" lp2,p,P.clt2mcode ")" rp2)) in
-        [Ast0.wrap(Ast0.UnInit(None,fn t,id,P.clt2mcode ";" pv))] }
+        Ast0.wrap(Ast0.UnInit(None,fn t,id,P.clt2mcode ";" pv)) }
      | cv=ioption(const_vol) i=pure_ident d=d_ident pv=TPtVirg
         { let (id,fn) = d in
         let idtype = P.make_cv cv (Ast0.wrap (Ast0.TypeName(P.id2mcode i))) in
-        [Ast0.wrap(Ast0.UnInit(None,fn idtype,id,P.clt2mcode ";" pv))] }
+        Ast0.wrap(Ast0.UnInit(None,fn idtype,id,P.clt2mcode ";" pv)) }
 
 struct_decl_list:
    struct_decl_list_start { Ast0.wrap(Ast0.DOTS($1)) }
@@ -607,8 +639,8 @@ struct_decl_list:
 struct_decl_list_start:
   struct_decl                        { $1 }
 | struct_decl struct_decl_list_start { $1@$2 }
-| d=edots_when(TEllipsis,struct_decl) r=continue_struct_decl_list
-    { (P.mkddots "..." d)::r }
+| d=edots_when(TEllipsis,struct_decl_one) r=continue_struct_decl_list
+    { (P.mkddots_one "..." d)::r }
 
 continue_struct_decl_list:
   /* empty */                        { [] }
@@ -616,6 +648,40 @@ continue_struct_decl_list:
 | struct_decl                        { $1 }
 
 
+/* ---------------------------------------------------------------------- */
+/* very restricted what kinds of expressions can appear in an enum decl */
+
+enum_decl_one:
+    | ident    { Ast0.wrap(Ast0.Ident($1)) }
+    | ident TEq enum_val
+       { let id = Ast0.wrap(Ast0.Ident($1)) in
+       Ast0.wrap
+         (Ast0.Assignment
+            (id,P.clt2mcode Ast.SimpleAssign $2,Ast0.set_arg_exp $3,
+             false)) }
+
+enum_val:
+   ident    { Ast0.wrap(Ast0.Ident($1)) }
+ | TInt
+     { let (x,clt) = $1 in
+     Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Int x) clt)) }
+ | TMetaConst
+     { let (nm,constraints,pure,ty,clt) = $1 in
+     Ast0.wrap
+       (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.CONST,pure)) }
+ | TMetaExp
+     { let (nm,constraints,pure,ty,clt) = $1 in
+     Ast0.wrap
+       (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ANY,pure)) }
+ | TMetaIdExp
+     { let (nm,constraints,pure,ty,clt) = $1 in
+     Ast0.wrap
+       (Ast0.MetaExpr(P.clt2mcode nm clt,constraints,ty,Ast.ID,pure)) }
+
+enum_decl_list:
+   nonempty_list_start(enum_decl_one,edots_when(TEllipsis,enum_decl_one))
+     { Ast0.wrap(Ast0.DOTS($1 P.mkedots (fun c -> Ast0.EComma c))) }
+
 /*****************************************************************************/
 
 /* have to inline everything to avoid conflicts? switch to proper
@@ -736,33 +802,15 @@ defineop:
 
 /* ---------------------------------------------------------------------- */
 
-define_param_list: define_param_list_start
-     {let circle x =
-       match Ast0.unwrap x with Ast0.DPcircles(_) -> true | _ -> false in
-     if List.exists circle $1
-     then Ast0.wrap(Ast0.CIRCLES($1))
-     else Ast0.wrap(Ast0.DOTS($1)) }
-
-define_param_list_start:
-    ident { [Ast0.wrap(Ast0.DParam $1)] }
-  | ident TComma define_param_list_start
-      { Ast0.wrap(Ast0.DParam $1)::
-       Ast0.wrap(Ast0.DPComma(P.clt2mcode "," $2))::$3 }
-  | d=TEllipsis r=list(dp_comma_args(TEllipsis))
-      { (P.mkdpdots "..." d)::
-       (List.concat (List.map (function x -> x (P.mkdpdots "...")) r)) }
-
-dp_comma_args(dotter):
-  c=TComma d=dotter
-    { function dot_builder ->
-      [Ast0.wrap(Ast0.DPComma(P.clt2mcode "," c)); dot_builder d] }
-| TComma ident
-    { function dot_builder ->
-      [Ast0.wrap(Ast0.DPComma(P.clt2mcode "," $1));
-       Ast0.wrap(Ast0.DParam $2)] }
-
-define_param_list_option: define_param_list { $1 }
-         | /* empty */     { Ast0.wrap(Ast0.DOTS([])) }
+dparam: ident { Ast0.wrap(Ast0.DParam $1) }
+
+define_param_list_option:
+    empty_list_start(dparam,TEllipsis)
+      { Ast0.wrap
+         (Ast0.DOTS
+            ($1
+               (fun _ d -> Ast0.wrap(Ast0.DPdots(P.clt2mcode "," d)))
+               (fun c -> Ast0.DPComma c))) }
 
 /*****************************************************************************/
 
@@ -1096,11 +1144,12 @@ initialize:
     eexpr
       { Ast0.wrap(Ast0.InitExpr($1)) }
   | TOBrace initialize_list TCBrace
-      { Ast0.wrap(Ast0.InitList(P.clt2mcode "{" $1,$2,P.clt2mcode "}" $3)) }
-  | TOBrace TCBrace
-      { Ast0.wrap
-         (Ast0.InitList(P.clt2mcode "{" $1,Ast0.wrap(Ast0.DOTS []),
-                        P.clt2mcode "}" $2)) }
+    { if P.struct_initializer $2
+    then
+      let il = P.drop_dot_commas $2 in
+      Ast0.wrap(Ast0.InitList(P.clt2mcode "{" $1,il,P.clt2mcode "}" $3,false))
+    else
+      Ast0.wrap(Ast0.InitList(P.clt2mcode "{" $1,$2,P.clt2mcode "}" $3,true)) }
   | TMetaInit
       {let (nm,pure,clt) = $1 in
       Ast0.wrap(Ast0.MetaInit(P.clt2mcode nm clt,pure)) }
@@ -1110,13 +1159,14 @@ initialize2:
   /*dots and nests probably not allowed at top level, haven't looked into why*/
   arith_expr(eexpr,invalid) { Ast0.wrap(Ast0.InitExpr($1)) }
 | TOBrace initialize_list TCBrace
-    { Ast0.wrap(Ast0.InitList(P.clt2mcode "{" $1,$2,P.clt2mcode "}" $3)) }
-| TOBrace TCBrace
-    { Ast0.wrap
-       (Ast0.InitList(P.clt2mcode "{" $1,Ast0.wrap(Ast0.DOTS []),
-                      P.clt2mcode "}" $2)) }
+    { if P.struct_initializer $2
+    then
+      let il = P.drop_dot_commas $2 in
+      Ast0.wrap(Ast0.InitList(P.clt2mcode "{" $1,il,P.clt2mcode "}" $3,false))
+    else
+      Ast0.wrap(Ast0.InitList(P.clt2mcode "{" $1,$2,P.clt2mcode "}" $3,true)) }
            /* gccext:, labeled elements */
-| list(designator) TEq initialize2
+| list(designator) TEq initialize2 /*can we have another of these on the rhs?*/
     { Ast0.wrap(Ast0.InitGccExt($1,P.clt2mcode "=" $2,$3)) }
 | ident TDotDot initialize2
     { Ast0.wrap(Ast0.InitGccName($1,P.clt2mcode ":" $2,$3)) } /* in old kernel */
@@ -1131,34 +1181,8 @@ designator:
                             $4,P.clt2mcode "]" $5) }
 
 initialize_list:
-   initialize_list_start { Ast0.wrap(Ast0.DOTS($1)) }
-
-initialize_list_start:
-  initialize2 TComma { [$1;Ast0.wrap(Ast0.IComma(P.clt2mcode "," $2))] }
-| initialize2 TComma initialize_list_start
-    { $1::Ast0.wrap(Ast0.IComma(P.clt2mcode "," $2))::$3 }
-| TNothing initialize_list_start
-    { $2 } /* + code only */
-| d=edots_when(TEllipsis,initialize)
-      r=comma_initializers(edots_when(TEllipsis,initialize))
-    { (P.mkidots "..." d)::
-      (List.concat(List.map (function x -> x (P.mkidots "...")) r)) }
-
-comma_initializers(dotter):
-  /* empty */ { [] }
-| d=dotter r=comma_initializers2(dotter)
-      { (function dot_builder -> [dot_builder d])::r }
-| TNothing r=comma_initializers(dotter) { r }
-| i=initialize2 c=TComma r=comma_initializers(dotter)
-    { (function dot_builder -> [i; Ast0.wrap(Ast0.IComma(P.clt2mcode "," c))])::
-      r }
-
-comma_initializers2(dotter):
-  /* empty */ { [] }
-| TNothing r=comma_initializers(dotter) { r }
-| i=initialize2 c=TComma r=comma_initializers(dotter)
-    { (function dot_builder -> [i; Ast0.wrap(Ast0.IComma(P.clt2mcode "," c))])::
-      r }
+   empty_list_start(initialize2,edots_when(TEllipsis,initialize))
+     { Ast0.wrap(Ast0.DOTS($1 P.mkidots (fun c -> Ast0.IComma c))) }
 
 /* a statement that is part of a list */
 decl_statement:
@@ -1694,21 +1718,12 @@ typedef_ident:
 /*****************************************************************************/
 
 decl_list(decl):
-  /* empty */ { Ast0.wrap(Ast0.DOTS([])) }
-| decl_list_start(decl)
-     {let circle x =
-       match Ast0.unwrap x with Ast0.Pcircles(_) -> true | _ -> false in
-     if List.exists circle $1
-     then Ast0.wrap(Ast0.CIRCLES($1))
-     else Ast0.wrap(Ast0.DOTS($1)) }
-
-decl_list_start(decl):
-  one_dec(decl)  { [$1] }
-| one_dec(decl) TComma decl_list_start(decl)
-    { $1::Ast0.wrap(Ast0.PComma(P.clt2mcode "," $2))::$3 }
-| TEllipsis list(comma_decls(TEllipsis,decl))
-    { Ast0.wrap(Ast0.Pdots(P.clt2mcode "..." $1))::
-      (List.concat(List.map (function x -> x (P.mkpdots "...")) $2)) }
+  empty_list_start(one_dec(decl),TEllipsis)
+     { Ast0.wrap
+        (Ast0.DOTS
+           ($1
+              (fun _ d -> Ast0.wrap(Ast0.Pdots(P.clt2mcode "..." d)))
+              (fun c -> Ast0.PComma c))) }
 
 one_dec(decl):
   decl  { $1 }
@@ -1722,14 +1737,49 @@ one_dec(decl):
        | Ast.CstLen n -> Ast0.CstListLen n in
     Ast0.wrap(Ast0.MetaParamList(nm,lenname,pure)) }
 
-comma_decls(dotter,decl):
-  TComma dotter
-    { function dot_builder ->
-      [Ast0.wrap(Ast0.PComma(P.clt2mcode "," $1));
-       dot_builder $2] }
-| TComma one_dec(decl)
-    { function dot_builder ->
-      [Ast0.wrap(Ast0.PComma(P.clt2mcode "," $1)); $2] }
+/* ---------------------------------------------------------------------- */
+/* comma list parser, used for fn params, fn args, enums, initlists,
+   #define params */
+
+/* enums: enum_decl, edots_when(TEllipsis,enum_decl_one)
+fun s d -> P.mkedots "..." d
+fun c -> Ast0.EComma c
+ */
+
+empty_list_start(elem,dotter):
+  /* empty */ { fun build_dots build_comma -> [] }
+| nonempty_list_start(elem,dotter) { $1 }
+
+nonempty_list_start(elem,dotter): /* dots allowed */
+  elem { fun build_dots build_comma -> [$1] }
+| elem TComma
+    { fun build_dots build_comma ->
+      $1::[Ast0.wrap(build_comma(P.clt2mcode "," $2))] }
+| elem TComma nonempty_list_start(elem,dotter)
+    { fun build_dots build_comma ->
+      $1::(Ast0.wrap(build_comma(P.clt2mcode "," $2)))::
+      ($3 build_dots build_comma) }
+| TNothing nonempty_list_start(elem,dotter) { $2 }
+| d=dotter { fun build_dots build_comma -> [(build_dots "..." d)] }
+| d=dotter TComma
+      { fun build_dots build_comma ->
+       [(build_dots "..." d);Ast0.wrap(build_comma(P.clt2mcode "," $2))] }
+| d=dotter TComma r=continue_list(elem,dotter)
+    { fun build_dots build_comma ->
+      (build_dots "..." d)::
+      (Ast0.wrap(build_comma(P.clt2mcode "," $2)))::
+      (r build_dots build_comma) }
+
+continue_list(elem,dotter): /* dots not allowed */
+  elem { fun build_dots build_comma -> [$1] }
+| elem TComma
+    { fun build_dots build_comma ->
+      $1::[Ast0.wrap(build_comma(P.clt2mcode "," $2))] }
+| elem TComma nonempty_list_start(elem,dotter)
+    { fun build_dots build_comma ->
+      $1::(Ast0.wrap(build_comma(P.clt2mcode "," $2)))::
+      ($3 build_dots build_comma) }
+| TNothing nonempty_list_start(elem,dotter) { $2 }
 
 /* ---------------------------------------------------------------------- */
 
@@ -1814,7 +1864,12 @@ toplevel_after_stm:
 
 top_init:
   TOInit initialize_list TCBrace
-    { Ast0.wrap(Ast0.InitList(P.clt2mcode "{" $1,$2,P.clt2mcode "}" $3)) }
+    { if P.struct_initializer $2
+    then
+      let il = P.drop_dot_commas $2 in
+      Ast0.wrap(Ast0.InitList(P.clt2mcode "{" $1,il,P.clt2mcode "}" $3,false))
+    else
+      Ast0.wrap(Ast0.InitList(P.clt2mcode "{" $1,$2,P.clt2mcode "}" $3,true)) }
 
 /* ------------------------------------------------------------------------ */
 /* Plus top level */
@@ -1913,23 +1968,9 @@ when_start:
 
 /* ---------------------------------------------------------------------- */
 
-eexpr_list:
-  eexpr_list_start
-     {let circle x =
-       match Ast0.unwrap x with Ast0.Ecircles(_) -> true | _ -> false in
-     let star x =
-       match Ast0.unwrap x with Ast0.Estars(_) -> true | _ -> false in
-     if List.exists circle $1
-     then Ast0.wrap(Ast0.CIRCLES($1))
-     else
-       if List.exists star $1
-       then Ast0.wrap(Ast0.STARS($1))
-       else Ast0.wrap(Ast0.DOTS($1)) }
-
 /* arg expr.  may contain a type or a explist metavariable */
 aexpr:
-    eexpr
-      { Ast0.set_arg_exp $1 }
+    dexpr { Ast0.set_arg_exp $1 }
   | TMetaExpList
       { let (nm,lenname,pure,clt) = $1 in
       let nm = P.clt2mcode nm clt in
@@ -1942,21 +1983,13 @@ aexpr:
   | ctype
       { Ast0.set_arg_exp(Ast0.wrap(Ast0.TypeExp($1))) }
 
-eexpr_list_start:
-    aexpr { [$1] }
-  | aexpr TComma eexpr_list_start
-      { $1::Ast0.wrap(Ast0.EComma(P.clt2mcode "," $2))::$3 }
-
-comma_args(dotter):
-  c=TComma d=dotter
-    { function dot_builder ->
-      [Ast0.wrap(Ast0.EComma(P.clt2mcode "," c)); dot_builder d] }
-| TComma aexpr
-    { function dot_builder ->
-      [Ast0.wrap(Ast0.EComma(P.clt2mcode "," $1)); $2] }
-
-eexpr_list_option: eexpr_list { $1 }
-         | /* empty */     { Ast0.wrap(Ast0.DOTS([])) }
+eexpr_list_option:
+    empty_list_start(aexpr,TEllipsis)
+      { Ast0.wrap
+         (Ast0.DOTS
+            ($1
+               (fun _ d -> Ast0.wrap(Ast0.Edots(P.clt2mcode "..." d,None)))
+               (fun c -> Ast0.EComma c))) }
 
 /****************************************************************************/
 
index 4f0fd91..386c76c 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* The plus fragments are converted to a list of lists of lists.
 Innermost list: Elements have type anything.  For any pair of successive
 elements, n and n+1, the ending line of n is the same as the starting line
index 512f516..01f573b 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val plus :
     Ast_cocci.rule ->
       (Ast_cocci.anything * int * int * int * int) list list list
index bf92cfb..74bfebe 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 open Format
 module Ast = Ast_cocci
 
@@ -348,8 +372,13 @@ and typeC ty =
   | Ast.Array(ty,lb,size,rb) ->
       fullType ty; mcode print_string lb; print_option expression size;
       mcode print_string rb
-  | Ast.EnumName(kind,name) -> mcode print_string kind; print_string " ";
-      ident name
+  | Ast.EnumName(kind,name) ->
+      mcode print_string kind;
+      print_option (function x -> ident x; print_string " ") name
+  | Ast.EnumDef(ty,lb,ids,rb) ->
+      fullType ty; mcode print_string lb;
+      dots force_newline expression ids;
+      mcode print_string rb
   | Ast.StructUnionName(kind,name) ->
       mcode structUnion kind;
       print_option (function x -> ident x; print_string " ") name
@@ -449,7 +478,11 @@ and initialiser i =
     Ast.MetaInit(name,_,_) ->
       mcode print_meta name; print_string " "
   | Ast.InitExpr(exp) -> expression exp
-  | Ast.InitList(allminus,lb,initlist,rb,whencode) ->
+  | Ast.ArInitList(lb,initlist,rb) ->
+      mcode print_string lb; open_box 0;
+      dots force_newline initialiser initlist; close_box();
+      mcode print_string rb
+  | Ast.StrInitList(allminus,lb,initlist,rb,whencode) ->
       mcode print_string lb; open_box 0;
       if not (whencode = [])
       then
@@ -465,6 +498,9 @@ and initialiser i =
   | Ast.InitGccName(name,eq,ini) ->
       ident name; mcode print_string eq; initialiser ini
   | Ast.IComma(comma) -> mcode print_string comma; force_newline()
+  | Ast.Idots(dots,Some whencode) ->
+      mcode print_string dots; print_string "   when != "; initialiser whencode
+  | Ast.Idots(dots,None) -> mcode print_string dots
   | Ast.OptIni(ini) -> print_string "?"; initialiser ini
   | Ast.UniqueIni(ini) -> print_string "!"; initialiser ini
 
index 2f544a7..e0ae1e8 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val unparse : Ast_cocci.rule -> unit
 val unparse_to_string : Ast_cocci.rule -> string
 val expression : Ast_cocci.expression -> unit
index bbea4c9..b8a9ccb 100644 (file)
@@ -1 +1,25 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 exception Semantic of string
index e9d8f28..367f5f1 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 module Ast0 = Ast0_cocci
 module Ast = Ast_cocci
 module V0 = Visitor_ast0
index e9d4c89..5a45d93 100644 (file)
@@ -1 +1,25 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val simple_assignments : Ast0_cocci.rule -> Ast0_cocci.rule
index 2813470..c00db6b 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* detect statements that are between dots in the minus code, because they
 may need a special treatment if they are if branches *)
 
@@ -146,6 +170,7 @@ and left_typeC t =
   | Ast0.FunctionType(None,lp1,params,rp1) -> modif_before_mcode lp1
   | Ast0.Array(ty,lb,size,rb) -> left_typeC ty
   | Ast0.EnumName(kind,name) -> modif_before_mcode kind
+  | Ast0.EnumDef(ty,lb,ids,rb) -> left_typeC ty
   | Ast0.StructUnionName(kind,name) -> modif_before_mcode kind
   | Ast0.StructUnionDef(ty,lb,decls,rb) -> left_typeC ty
   | Ast0.TypeName(name) -> modif_before_mcode name
index eee3744..6b43ffc 100644 (file)
@@ -1 +1,25 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val single_statement : Ast0_cocci.rule -> Ast0_cocci.rule
index 5683b49..8dc1a95 100644 (file)
@@ -1,3 +1,25 @@
+// Copyright 2010, INRIA, University of Copenhagen
+// Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+// Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+// Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+// This file is part of Coccinelle.
+//
+// Coccinelle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, according to version 2 of the License.
+//
+// Coccinelle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+//
+// The authors reserve the right to distribute this or future versions of
+// Coccinelle under other licenses.
+
+
 @@
 struct SHT sht; 
 local function proc_info_func;
index 62ec534..2c4e050 100644 (file)
@@ -1,3 +1,25 @@
+// Copyright 2010, INRIA, University of Copenhagen
+// Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+// Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+// Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+// This file is part of Coccinelle.
+//
+// Coccinelle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, according to version 2 of the License.
+//
+// Coccinelle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+//
+// The authors reserve the right to distribute this or future versions of
+// Coccinelle under other licenses.
+
+
 @@
 struct SHT sht; 
 local function proc_info_func;
index e883496..b4843b2 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 module Ast = Ast_cocci
 module Ast0 = Ast0_cocci
 module V0 = Visitor_ast0
index 29d5ced..35f1d00 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val process : Ast0_cocci.rule -> Ast0_cocci.rule
 
 val process_anything : Ast0_cocci.anything -> Ast0_cocci.anything
index be12362..6dd7eed 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* Reorganize the top level of a rule to be a list of either top-level
 declarations or code dots.  A function declaration is always considered top
 level.  A statement is always considered code dots.  A variable declaration
index 1829d3e..289f997 100644 (file)
@@ -1 +1,25 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val top_level : Ast0_cocci.rule -> Ast0_cocci.rule
index 1486122..0c2fbb4 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* for metavariables in general, but here because needed for metatypes *)
 type inherited = bool (* true if inherited *)
 type keep_binding = Unitary (* need no info *)
index 73185b0..1672c0b 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 type inherited = bool (* true if inherited *)
 type keep_binding = Unitary (* need no info *)
   | Nonunitary (* need an env entry *) | Saved (* need a witness *)
index af7c944..588e0a4 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 module T = Type_cocci
 module Ast = Ast_cocci
 module Ast0 = Ast0_cocci
index 796c6c7..893e983 100644 (file)
@@ -1 +1,25 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val type_infer : Ast0_cocci.rule -> unit
index 2c4ccc0..91ae480 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* --------------------------------------------------------------------- *)
 (* Given two patterns, A and B, determine whether B can match any matched
 subterms of A.  For simplicity, this doesn't maintain an environment; it
@@ -88,6 +112,11 @@ let sdots s =
     Ast.Dots(_,_,_,_) | Ast.Circles(_,_,_,_) | Ast.Stars(_,_,_,_) -> true
   | _ -> false
 
+let idots e =
+  match Ast.unwrap e with
+    Ast.Idots(_,_) -> true
+  | _ -> false
+
 (* --------------------------------------------------------------------- *)
 (* Identifier *)
 
@@ -230,12 +259,17 @@ and unify_typeC t1 t2 =
   | (Ast.Array(ty1,lb1,e1,rb1),Ast.Array(ty2,lb2,e2,rb2)) ->
       conjunct_bindings
        (unify_fullType ty1 ty2) (unify_option unify_expression e1 e2)
-  | (Ast.EnumName(s1,ts1),Ast.EnumName(s2,ts2)) ->
+  | (Ast.EnumName(s1,Some ts1),Ast.EnumName(s2,Some ts2)) ->
       if unify_mcode s1 s2 then unify_ident ts1 ts2 else return false
+  | (Ast.EnumName(s1,None),Ast.EnumName(s2,None)) ->
+      return true
+  | (Ast.EnumDef(ty1,lb1,ids1,rb1),Ast.EnumDef(ty2,lb2,ids2,rb2)) ->
+       conjunct_bindings (unify_fullType ty1 ty2)
+        (unify_dots unify_expression edots ids1 ids2)
   | (Ast.StructUnionName(s1,Some ts1),Ast.StructUnionName(s2,Some ts2)) ->
       if unify_mcode s1 s2 then unify_ident ts1 ts2 else return false
   | (Ast.StructUnionName(s1,None),Ast.StructUnionName(s2,None)) ->
-      return true
+      return (unify_mcode s1 s2)
   | (Ast.StructUnionDef(ty1,lb1,decls1,rb1),
      Ast.StructUnionDef(ty2,lb2,decls2,rb2)) ->
        conjunct_bindings (unify_fullType ty1 ty2)
@@ -295,8 +329,12 @@ and unify_initialiser i1 i2 =
     (Ast.MetaInit(_,_,_),_) | (_,Ast.MetaInit(_,_,_)) -> return true
   | (Ast.InitExpr(expa),Ast.InitExpr(expb)) ->
       unify_expression expa expb
-  | (Ast.InitList(_,_,initlista,_,whena),
-     Ast.InitList(_,_,initlistb,_,whenb)) ->
+  | (Ast.ArInitList(_,initlista,_),
+     Ast.ArInitList(_,initlistb,_)) ->
+      (* ignore whencode - returns true safely *)
+      unify_dots unify_initialiser idots initlista initlistb
+  | (Ast.StrInitList(_,_,initlista,_,whena),
+     Ast.StrInitList(_,_,initlistb,_,whenb)) ->
       (* ignore whencode - returns true safely *)
       unify_lists unify_initialiser (function _ -> false) initlista initlistb
   | (Ast.InitGccExt(designatorsa,_,inia),
@@ -482,7 +520,7 @@ and subexp f =
   let donothing r k e = k e in
   let recursor = V.combiner bind option_default
       mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
-      donothing donothing donothing donothing
+      donothing donothing donothing donothing donothing
       donothing expr donothing donothing donothing donothing donothing
       donothing donothing donothing donothing donothing in
   recursor.V.combiner_rule_elem
@@ -495,7 +533,7 @@ and subtype f =
   let donothing r k e = k e in
   let recursor = V.combiner bind option_default
       mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
-      donothing donothing donothing donothing
+      donothing donothing donothing donothing donothing
       donothing donothing fullType donothing donothing donothing donothing
       donothing donothing donothing donothing donothing in
   recursor.V.combiner_rule_elem
index 95a7d6f..87b6f46 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 type res = NO | MAYBE
 
 val unify_statement_dots :
index 2045ab3..f5768f8 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* find unitary metavariables *)
 module Ast0 = Ast0_cocci
 module Ast = Ast_cocci
index 8aa5873..2361df1 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* 'iso is the return type of parse_iso, which currently is
 (Ast_cocci.metavar list * Ast0_cocci.anything list list) list *)
 
index 1e75e32..7e09e53 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 open Format
 module Ast = Ast_cocci
 module Ast0 = Ast0_cocci
@@ -249,8 +273,13 @@ and typeC t =
       | Ast0.Array(ty,lb,size,rb) ->
          typeC ty; mcode print_string lb; print_option expression size;
          mcode print_string rb
-      | Ast0.EnumName(kind,name) -> mcode print_string kind; print_string " ";
-         ident name
+      | Ast0.EnumName(kind,name) ->
+         mcode print_string kind;
+         print_option (function x -> ident x; print_string " ") name
+      | Ast0.EnumDef(ty,lb,ids,rb) ->
+         typeC ty; mcode print_string lb;
+         dots force_newline expression ids;
+         mcode print_string rb
       | Ast0.StructUnionName(kind,name) ->
          mcode U.structUnion kind;
          print_option (function x -> ident x; print_string " ") name
@@ -342,7 +371,8 @@ and initialiser i =
       match Ast0.unwrap i with
        Ast0.MetaInit(name,_)-> mcode print_meta name; print_string " "
       |        Ast0.InitExpr(exp) -> expression exp
-      | Ast0.InitList(lb,initlist,rb) ->
+      | Ast0.InitList(lb,initlist,rb,ordered) ->
+          (*doesn't show commas dropped in unordered case*)
          mcode print_string lb; open_box 0;
          let _ = dots (function _ -> ()) initialiser initlist in
          close_box(); mcode print_string rb
index 6f66fc0..3818b77 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val expression_dots : Ast0_cocci.expression Ast0_cocci.dots -> unit
 val parameter_list : Ast0_cocci.parameterTypeDef Ast0_cocci.dots -> unit
 val statement_dots : Ast0_cocci.statement Ast0_cocci.dots -> unit
index 3997f74..1264919 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 module Ast0 = Ast0_cocci
 module Ast = Ast_cocci
 
@@ -25,7 +49,8 @@ type 'a combiner =
      combiner_anything : Ast.anything  -> 'a;
      combiner_expression_dots : Ast.expression Ast.dots -> 'a;
      combiner_statement_dots : Ast.statement Ast.dots -> 'a;
-     combiner_declaration_dots : Ast.declaration Ast.dots -> 'a}
+     combiner_declaration_dots : Ast.declaration Ast.dots -> 'a;
+     combiner_initialiser_dots : Ast.initialiser Ast.dots -> 'a}
 
 type ('mc,'a) cmcode = 'a combiner -> 'mc Ast_cocci.mcode -> 'a
 type ('cd,'a) ccode = 'a combiner -> ('cd -> 'a) -> 'cd -> 'a
@@ -36,7 +61,7 @@ let combiner bind option_default
     unary_mcodefn binary_mcodefn
     cv_mcodefn sign_mcodefn struct_mcodefn storage_mcodefn
     inc_file_mcodefn
-    expdotsfn paramdotsfn stmtdotsfn decldotsfn
+    expdotsfn paramdotsfn stmtdotsfn decldotsfn initdotsfn
     identfn exprfn ftfn tyfn initfn paramfn declfn rulefn stmtfn casefn
     topfn anyfn =
   let multibind l =
@@ -49,6 +74,13 @@ let combiner bind option_default
       Some x -> f x
     | None -> option_default in
 
+  let dotsfn param default all_functions arg =
+    let k d =
+      match Ast.unwrap d with
+       Ast.DOTS(l) | Ast.CIRCLES(l) | Ast.STARS(l) ->
+         multibind (List.map default l) in
+    param all_functions k arg in
+
   let rec meta_mcode x = meta_mcodefn all_functions x
   and string_mcode x = string_mcodefn all_functions x
   and const_mcode x = const_mcodefn all_functions x
@@ -62,33 +94,11 @@ let combiner bind option_default
   and storage_mcode x = storage_mcodefn all_functions x
   and inc_file_mcode x = inc_file_mcodefn all_functions x
 
-  and expression_dots d =
-    let k d =
-      match Ast.unwrap d with
-       Ast.DOTS(l) | Ast.CIRCLES(l) | Ast.STARS(l) ->
-         multibind (List.map expression l) in
-    expdotsfn all_functions k d
-
-  and parameter_dots d =
-    let k d =
-      match Ast.unwrap d with
-       Ast.DOTS(l) | Ast.CIRCLES(l) | Ast.STARS(l) ->
-         multibind (List.map parameterTypeDef l) in
-    paramdotsfn all_functions k d
-
-  and statement_dots d =
-    let k d =
-      match Ast.unwrap d with
-       Ast.DOTS(l) | Ast.CIRCLES(l) | Ast.STARS(l) ->
-         multibind (List.map statement l) in
-    stmtdotsfn all_functions k d
-
-  and declaration_dots d =
-    let k d =
-      match Ast.unwrap d with
-       Ast.DOTS(l) | Ast.CIRCLES(l) | Ast.STARS(l) ->
-         multibind (List.map declaration l) in
-    decldotsfn all_functions k d
+  and expression_dots d = dotsfn expdotsfn expression all_functions d
+  and parameter_dots d = dotsfn paramdotsfn parameterTypeDef all_functions d
+  and statement_dots d = dotsfn stmtdotsfn statement all_functions d
+  and declaration_dots d = dotsfn decldotsfn declaration all_functions d
+  and initialiser_dots d = dotsfn initdotsfn initialiser all_functions d
 
   and ident i =
     let k i =
@@ -197,7 +207,12 @@ let combiner bind option_default
       |        Ast.FunctionType (_,ty,lp1,params,rp1) ->
          function_type (ty,lp1,params,rp1) []
       | Ast.Array(ty,lb,size,rb) -> array_type (ty,lb,size,rb) []
-      | Ast.EnumName(kind,name) -> bind (string_mcode kind) (ident name)
+      | Ast.EnumName(kind,name) ->
+         bind (string_mcode kind) (get_option ident name)
+      | Ast.EnumDef(ty,lb,ids,rb) ->
+         multibind
+           [fullType ty; string_mcode lb; expression_dots ids;
+             string_mcode rb]
       | Ast.StructUnionName(kind,name) ->
          bind (struct_mcode kind) (get_option ident name)
       | Ast.StructUnionDef(ty,lb,decls,rb) ->
@@ -252,7 +267,10 @@ let combiner bind option_default
       match Ast.unwrap i with
        Ast.MetaInit(name,_,_) -> meta_mcode name
       |        Ast.InitExpr(exp) -> expression exp
-      | Ast.InitList(allminus,lb,initlist,rb,whencode) ->
+      | Ast.ArInitList(lb,initlist,rb) ->
+         multibind
+           [string_mcode lb; initialiser_dots initlist; string_mcode rb]
+      | Ast.StrInitList(allminus,lb,initlist,rb,whencode) ->
          multibind
            [string_mcode lb;
              multibind (List.map initialiser initlist);
@@ -265,6 +283,8 @@ let combiner bind option_default
            ((List.map designator designators) @
             [string_mcode eq; initialiser ini])
       | Ast.IComma(cm) -> string_mcode cm
+      | Ast.Idots(dots,whencode) ->
+         bind (string_mcode dots) (get_option initialiser whencode)
       | Ast.OptIni(i) -> initialiser i
       | Ast.UniqueIni(i) -> initialiser i in
     initfn all_functions k i
@@ -517,7 +537,8 @@ let combiner bind option_default
       combiner_anything = anything;
       combiner_expression_dots = expression_dots;
       combiner_statement_dots = statement_dots;
-      combiner_declaration_dots = declaration_dots} in
+      combiner_declaration_dots = declaration_dots;
+      combiner_initialiser_dots = initialiser_dots} in
   all_functions
 
 (* ---------------------------------------------------------------------- *)
@@ -540,6 +561,7 @@ type rebuilder =
       rebuilder_expression_dots : Ast.expression Ast.dots inout;
       rebuilder_statement_dots : Ast.statement Ast.dots inout;
       rebuilder_declaration_dots : Ast.declaration Ast.dots inout;
+      rebuilder_initialiser_dots : Ast.initialiser Ast.dots inout;
       rebuilder_define_param_dots : Ast.define_param Ast.dots inout;
       rebuilder_define_param : Ast.define_param inout;
       rebuilder_define_parameters : Ast.define_parameters inout;
@@ -553,47 +575,27 @@ let rebuilder
     meta_mcode string_mcode const_mcode assign_mcode fix_mcode unary_mcode
     binary_mcode cv_mcode sign_mcode struct_mcode storage_mcode
     inc_file_mcode
-    expdotsfn paramdotsfn stmtdotsfn decldotsfn
+    expdotsfn paramdotsfn stmtdotsfn decldotsfn initdotsfn
     identfn exprfn ftfn tyfn initfn paramfn declfn rulefn stmtfn casefn
     topfn anyfn =
   let get_option f = function
       Some x -> Some (f x)
     | None -> None in
-  let rec expression_dots d =
-    let k d =
-      Ast.rewrap d
-       (match Ast.unwrap d with
-         Ast.DOTS(l) -> Ast.DOTS(List.map expression l)
-       | Ast.CIRCLES(l) -> Ast.CIRCLES(List.map expression l)
-       | Ast.STARS(l) -> Ast.STARS(List.map expression l)) in
-    expdotsfn all_functions k d
-
-  and parameter_dots d =
-    let k d =
-      Ast.rewrap d
-       (match Ast.unwrap d with
-         Ast.DOTS(l) -> Ast.DOTS(List.map parameterTypeDef l)
-       | Ast.CIRCLES(l) -> Ast.CIRCLES(List.map parameterTypeDef l)
-       | Ast.STARS(l) -> Ast.STARS(List.map parameterTypeDef l)) in
-    paramdotsfn all_functions k d
 
-  and statement_dots d =
+  let dotsfn param default all_functions arg =
     let k d =
       Ast.rewrap d
        (match Ast.unwrap d with
-         Ast.DOTS(l) -> Ast.DOTS(List.map statement l)
-       | Ast.CIRCLES(l) -> Ast.CIRCLES(List.map statement l)
-       | Ast.STARS(l) -> Ast.STARS(List.map statement l)) in
-    stmtdotsfn all_functions k d
+         Ast.DOTS(l) -> Ast.DOTS(List.map default l)
+       | Ast.CIRCLES(l) -> Ast.CIRCLES(List.map default l)
+       | Ast.STARS(l) -> Ast.STARS(List.map default l)) in
+    param all_functions k arg in
 
-  and declaration_dots d =
-    let k d =
-      Ast.rewrap d
-       (match Ast.unwrap d with
-         Ast.DOTS(l) -> Ast.DOTS(List.map declaration l)
-       | Ast.CIRCLES(l) -> Ast.CIRCLES(List.map declaration l)
-       | Ast.STARS(l) -> Ast.STARS(List.map declaration l)) in
-    decldotsfn all_functions k d
+  let rec expression_dots d = dotsfn expdotsfn expression all_functions d
+  and parameter_dots d = dotsfn paramdotsfn parameterTypeDef all_functions d
+  and statement_dots d = dotsfn stmtdotsfn statement all_functions d
+  and declaration_dots d = dotsfn decldotsfn declaration all_functions d
+  and initialiser_dots d = dotsfn initdotsfn initialiser all_functions d
 
   and ident i =
     let k i =
@@ -705,7 +707,10 @@ let rebuilder
            Ast.Array(fullType ty, string_mcode lb,
                      get_option expression size, string_mcode rb)
        | Ast.EnumName(kind,name) ->
-           Ast.EnumName(string_mcode kind, ident name)
+           Ast.EnumName(string_mcode kind, get_option ident name)
+       | Ast.EnumDef(ty,lb,ids,rb) ->
+           Ast.EnumDef (fullType ty, string_mcode lb, expression_dots ids,
+                        string_mcode rb)
        | Ast.StructUnionName(kind,name) ->
            Ast.StructUnionName (struct_mcode kind, get_option ident name)
        | Ast.StructUnionDef(ty,lb,decls,rb) ->
@@ -752,8 +757,11 @@ let rebuilder
          Ast.MetaInit(name,keep,inherited) ->
            Ast.MetaInit(meta_mcode name,keep,inherited)
        | Ast.InitExpr(exp) -> Ast.InitExpr(expression exp)
-       | Ast.InitList(allminus,lb,initlist,rb,whencode) ->
-           Ast.InitList(allminus,
+       | Ast.ArInitList(lb,initlist,rb) ->
+           Ast.ArInitList(string_mcode lb, initialiser_dots initlist,
+                          string_mcode rb)
+       | Ast.StrInitList(allminus,lb,initlist,rb,whencode) ->
+           Ast.StrInitList(allminus,
                         string_mcode lb, List.map initialiser initlist,
                         string_mcode rb, List.map initialiser whencode)
        | Ast.InitGccName(name,eq,ini) ->
@@ -763,6 +771,8 @@ let rebuilder
              (List.map designator designators, string_mcode eq,
               initialiser ini)
        | Ast.IComma(cm) -> Ast.IComma(string_mcode cm)
+       | Ast.Idots(dots,whencode) ->
+           Ast.Idots(string_mcode dots,get_option initialiser whencode)
        | Ast.OptIni(i) -> Ast.OptIni(initialiser i)
        | Ast.UniqueIni(i) -> Ast.UniqueIni(initialiser i)) in
     initfn all_functions k i
@@ -1045,6 +1055,7 @@ let rebuilder
       rebuilder_expression_dots = expression_dots;
       rebuilder_statement_dots = statement_dots;
       rebuilder_declaration_dots = declaration_dots;
+      rebuilder_initialiser_dots = initialiser_dots;
       rebuilder_define_param_dots = define_param_dots;
       rebuilder_define_param = define_param;
       rebuilder_define_parameters = define_parameters;
index 7b257c3..8c44fc1 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 type 'a combiner =
     {combiner_ident : Ast_cocci.ident -> 'a;
      combiner_expression : Ast_cocci.expression -> 'a;
@@ -17,7 +41,9 @@ type 'a combiner =
      combiner_statement_dots :
             Ast_cocci.statement Ast_cocci.dots -> 'a;
      combiner_declaration_dots :
-                Ast_cocci.declaration Ast_cocci.dots -> 'a}
+                Ast_cocci.declaration Ast_cocci.dots -> 'a;
+     combiner_initialiser_dots :
+                    Ast_cocci.initialiser Ast_cocci.dots -> 'a}
 
 type ('mc,'a) cmcode = 'a combiner -> 'mc Ast_cocci.mcode -> 'a
 type ('cd,'a) ccode = 'a combiner -> ('cd -> 'a) -> 'cd -> 'a
@@ -40,6 +66,7 @@ val combiner :
       ((Ast_cocci.parameterTypeDef Ast_cocci.dots,'a) ccode) ->
       ((Ast_cocci.statement Ast_cocci.dots,'a) ccode) ->
       ((Ast_cocci.declaration Ast_cocci.dots,'a) ccode) ->
+      ((Ast_cocci.initialiser Ast_cocci.dots,'a) ccode) ->
       ((Ast_cocci.ident,'a) ccode) ->
       ((Ast_cocci.expression,'a) ccode) ->
       ((Ast_cocci.fullType,'a) ccode) ->
@@ -72,6 +99,7 @@ type rebuilder =
       rebuilder_expression_dots : Ast_cocci.expression Ast_cocci.dots inout;
       rebuilder_statement_dots : Ast_cocci.statement Ast_cocci.dots inout;
       rebuilder_declaration_dots : Ast_cocci.declaration Ast_cocci.dots inout;
+      rebuilder_initialiser_dots : Ast_cocci.initialiser Ast_cocci.dots inout;
       rebuilder_define_param_dots: Ast_cocci.define_param Ast_cocci.dots inout;
       rebuilder_define_param : Ast_cocci.define_param inout;
       rebuilder_define_parameters : Ast_cocci.define_parameters inout;
@@ -97,6 +125,7 @@ val rebuilder :
     (Ast_cocci.parameterTypeDef Ast_cocci.dots rcode) ->
     (Ast_cocci.statement Ast_cocci.dots rcode) ->
     (Ast_cocci.declaration Ast_cocci.dots rcode) ->
+    (Ast_cocci.initialiser Ast_cocci.dots rcode) ->
     (Ast_cocci.ident rcode) ->
     (Ast_cocci.expression rcode) ->
     (Ast_cocci.fullType rcode) ->
index 6cd9108..1949afd 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* --------------------------------------------------------------------- *)
 (* Generic traversal: rebuilder *)
 
@@ -287,8 +311,14 @@ let visitor mode bind option_default
        | Ast0.Array(ty,lb,size,rb) -> array_type (ty,lb,size,rb) []
        | Ast0.EnumName(kind,name) ->
            let (kind_n,kind) = string_mcode kind in
-           let (name_n,name) = ident name in
+           let (name_n,name) = get_option ident name in
            (bind kind_n name_n, Ast0.EnumName(kind,name))
+       | Ast0.EnumDef(ty,lb,ids,rb) ->
+           let (ty_n,ty) = typeC ty in
+           let (lb_n,lb) = string_mcode lb in
+           let (ids_n,ids) = expression_dots ids in
+           let (rb_n,rb) = string_mcode rb in
+           (multibind [ty_n;lb_n;ids_n;rb_n], Ast0.EnumDef(ty,lb,ids,rb))
        | Ast0.StructUnionName(kind,name) ->
            let (kind_n,kind) = struct_mcode kind in
            let (name_n,name) = get_option ident name in
@@ -435,11 +465,12 @@ let visitor mode bind option_default
        | Ast0.InitExpr(exp) ->
            let (exp_n,exp) = expression exp in
            (exp_n,Ast0.InitExpr(exp))
-       | Ast0.InitList(lb,initlist,rb) ->
+       | Ast0.InitList(lb,initlist,rb,ordered) ->
            let (lb_n,lb) = string_mcode lb in
            let (initlist_n,initlist) = initialiser_list initlist in
            let (rb_n,rb) = string_mcode rb in
-           (multibind [lb_n;initlist_n;rb_n], Ast0.InitList(lb,initlist,rb))
+           (multibind [lb_n;initlist_n;rb_n],
+            Ast0.InitList(lb,initlist,rb,ordered))
        | Ast0.InitGccExt(designators,eq,ini) ->
            let (dn,designators) = map_split_bind designator designators in
            let (eq_n,eq) = string_mcode eq in
index 453c5f8..43590fa 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val combiner_functions : 'a Visitor_ast0_types.combiner_functions
 val combiner :
   ('a -> 'a -> 'a) ->
index a4f9282..98c284a 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 module Ast0 = Ast0_cocci
 module Ast = Ast_cocci
 
index e77bc96..9302461 100644 (file)
@@ -1,3 +1,25 @@
+# Copyright 2010, INRIA, University of Copenhagen
+# Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+# This file is part of Coccinelle.
+#
+# Coccinelle is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, according to version 2 of the License.
+#
+# Coccinelle is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+#
+# The authors reserve the right to distribute this or future versions of
+# Coccinelle under other licenses.
+
+
 #note: if you add a file (a .mli or .ml), dont forget to do a   make depend
 
 -include ../Makefile.config
index 55c8040..abb6b03 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 type sequence =
     Seq of element * sequence
   | Empty
index fb85a8e..5fbf9f8 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 module Ast = Ast_cocci
 module Past = Ast_popl
 
index 5d8e4b1..37e4b82 100644 (file)
@@ -1 +1,25 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val top : Ast_cocci.top_level -> Ast_popl.sequence
index 1119d2b..ad6caad 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 module Past = Ast_popl
 
 (* --------------------------------------------------------------------- *)
index eea1354..4aaf5af 100644 (file)
@@ -1 +1,25 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val insert_befaft : Ast_popl.sequence -> Ast_popl.sequence
index a41da31..3a0980e 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 module Ast = Ast_cocci
 module Past = Ast_popl
 
index b8eef27..0276dba 100644 (file)
@@ -1 +1,25 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val insert_quantifiers : Ast_popl.sequence -> Ast_popl.sequence
index 8c4b87d..c32ae10 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif
 type formula =
     (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl
index 4a7fd49..1185a79 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif
 type formula =
     (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl
index ab1c71d..1f7f457 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 module Past = Ast_popl
 module Ast = Ast_cocci
 module V = Visitor_ast
index b1285d1..c8dd49e 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif
 type formula =
     (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl
index addcf39..0515ad7 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 open Format
 module Past = Ast_popl
 
index 5b3399a..d4ae105 100644 (file)
@@ -1,2 +1,26 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val pretty_print : Ast_popl.sequence -> unit
 val pretty_print_e : Ast_popl.element -> unit
index c88af14..9dc7024 100644 (file)
@@ -1,35 +1,35 @@
-asttopopl.cmi: ast_popl.cmo ../parsing_cocci/ast_cocci.cmi 
-insert_quantifiers.cmi: ast_popl.cmo 
+asttopopl.cmi: ast_popl.cmo ../parsing_cocci/ast_cocci.cmi
+insert_quantifiers.cmi: ast_popl.cmo
 popl.cmi: ../ctl/wrapper_ctl.cmi ../engine/lib_engine.cmo ../ctl/ast_ctl.cmo \
-    ../parsing_cocci/ast_cocci.cmi 
+    ../parsing_cocci/ast_cocci.cmi
 popltoctl.cmi: ../ctl/wrapper_ctl.cmi ../engine/lib_engine.cmo ast_popl.cmo \
-    ../ctl/ast_ctl.cmo ../parsing_cocci/ast_cocci.cmi 
-pretty_print_popl.cmi: ast_popl.cmo 
-ast_popl.cmo: ../parsing_cocci/ast_cocci.cmi 
-ast_popl.cmx: ../parsing_cocci/ast_cocci.cmx 
+    ../ctl/ast_ctl.cmo ../parsing_cocci/ast_cocci.cmi
+pretty_print_popl.cmi: ast_popl.cmo
+ast_popl.cmo: ../parsing_cocci/ast_cocci.cmi
+ast_popl.cmx: ../parsing_cocci/ast_cocci.cmx
 asttopopl.cmo: ../parsing_cocci/pretty_print_cocci.cmi ast_popl.cmo \
-    ../parsing_cocci/ast_cocci.cmi asttopopl.cmi 
+    ../parsing_cocci/ast_cocci.cmi asttopopl.cmi
 asttopopl.cmx: ../parsing_cocci/pretty_print_cocci.cmx ast_popl.cmx \
-    ../parsing_cocci/ast_cocci.cmx asttopopl.cmi 
-flag_popl.cmo: 
-flag_popl.cmx: 
+    ../parsing_cocci/ast_cocci.cmx asttopopl.cmi
+flag_popl.cmo:
+flag_popl.cmx:
 insert_quantifiers.cmo: ../commons/common.cmi ast_popl.cmo \
-    ../parsing_cocci/ast_cocci.cmi insert_quantifiers.cmi 
+    ../parsing_cocci/ast_cocci.cmi insert_quantifiers.cmi
 insert_quantifiers.cmx: ../commons/common.cmx ast_popl.cmx \
-    ../parsing_cocci/ast_cocci.cmx insert_quantifiers.cmi 
+    ../parsing_cocci/ast_cocci.cmx insert_quantifiers.cmi
 popl.cmo: ../ctl/wrapper_ctl.cmi popltoctl.cmi ../engine/lib_engine.cmo \
     insert_quantifiers.cmi asttopopl.cmi ../ctl/ast_ctl.cmo \
-    ../parsing_cocci/ast_cocci.cmi popl.cmi 
+    ../parsing_cocci/ast_cocci.cmi popl.cmi
 popl.cmx: ../ctl/wrapper_ctl.cmx popltoctl.cmx ../engine/lib_engine.cmx \
     insert_quantifiers.cmx asttopopl.cmx ../ctl/ast_ctl.cmx \
-    ../parsing_cocci/ast_cocci.cmx popl.cmi 
+    ../parsing_cocci/ast_cocci.cmx popl.cmi
 popltoctl.cmo: ../ctl/wrapper_ctl.cmi ../parsing_cocci/visitor_ast.cmi \
     ../engine/lib_engine.cmo flag_popl.cmo ast_popl.cmo ../ctl/ast_ctl.cmo \
-    ../parsing_cocci/ast_cocci.cmi popltoctl.cmi 
+    ../parsing_cocci/ast_cocci.cmi popltoctl.cmi
 popltoctl.cmx: ../ctl/wrapper_ctl.cmx ../parsing_cocci/visitor_ast.cmx \
     ../engine/lib_engine.cmx flag_popl.cmx ast_popl.cmx ../ctl/ast_ctl.cmx \
-    ../parsing_cocci/ast_cocci.cmx popltoctl.cmi 
+    ../parsing_cocci/ast_cocci.cmx popltoctl.cmi
 pretty_print_popl.cmo: ../parsing_cocci/pretty_print_cocci.cmi ast_popl.cmo \
-    ../parsing_cocci/ast_cocci.cmi pretty_print_popl.cmi 
+    ../parsing_cocci/ast_cocci.cmi pretty_print_popl.cmi
 pretty_print_popl.cmx: ../parsing_cocci/pretty_print_cocci.cmx ast_popl.cmx \
-    ../parsing_cocci/ast_cocci.cmx pretty_print_popl.cmi 
+    ../parsing_cocci/ast_cocci.cmx pretty_print_popl.cmi
index e0cf4da..db143ea 100644 (file)
@@ -1,3 +1,25 @@
+# Copyright 2010, INRIA, University of Copenhagen
+# Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+# This file is part of Coccinelle.
+#
+# Coccinelle is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, according to version 2 of the License.
+#
+# Coccinelle is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+#
+# The authors reserve the right to distribute this or future versions of
+# Coccinelle under other licenses.
+
+
 #note: if you add a file (a .mli or .ml), dont forget to do a   make depend
 
 -include ../Makefile.config
index f9011e4..e153487 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 type sequence =
     Seq of element * sequence
   | Empty
index a71d983..530560d 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 module Ast = Ast_cocci
 module Past = Ast_popl
 
index 5d8e4b1..37e4b82 100644 (file)
@@ -1 +1,25 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val top : Ast_cocci.top_level -> Ast_popl.sequence
index fedbcee..c509121 100644 (file)
@@ -1,2 +1,26 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 let mark_all = ref false
 let keep_all_wits = ref false
index 59b4590..ce86d0c 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 module Ast = Ast_cocci
 module Past = Ast_popl
 
index b8eef27..0276dba 100644 (file)
@@ -1 +1,25 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val insert_quantifiers : Ast_popl.sequence -> Ast_popl.sequence
index 70ac698..76c4a57 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif
 type formula =
     (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl
index 4a7fd49..1185a79 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif
 type formula =
     (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl
index d1297a0..e126775 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 module Past = Ast_popl
 module Ast = Ast_cocci
 module V = Visitor_ast
@@ -31,7 +55,7 @@ let contains_modif =
   let recursor =
     V.combiner bind option_default
       mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
-      do_nothing do_nothing do_nothing do_nothing
+      do_nothing do_nothing do_nothing do_nothing do_nothing
       do_nothing do_nothing do_nothing do_nothing do_nothing do_nothing
       do_nothing rule_elem do_nothing do_nothing do_nothing do_nothing in
   recursor.V.combiner_rule_elem
index b1285d1..c8dd49e 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 type cocci_predicate = Lib_engine.predicate * Ast_cocci.meta_name Ast_ctl.modif
 type formula =
     (cocci_predicate,Ast_cocci.meta_name, Wrapper_ctl.info) Ast_ctl.generic_ctl
index c083cd0..cf4b9ce 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 open Format
 module Past = Ast_popl
 module Ast = Ast_cocci
index 5b3399a..d4ae105 100644 (file)
@@ -1,2 +1,26 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val pretty_print : Ast_popl.sequence -> unit
 val pretty_print_e : Ast_popl.element -> unit
index 1032941..79b5758 100644 (file)
@@ -28,6 +28,7 @@ clean::
        rm -f *.cm[aiox] *.a
 
 distclean:: clean
+       rm -rf ._d
 
 depend: # added by julia, undoubtedly wrong
 
index facc6d2..db7c388 100644 (file)
@@ -1,12 +1,12 @@
-pycocci.cmi: ../parsing_cocci/ast_cocci.cmi ../parsing_c/ast_c.cmo 
-pycocci_aux.cmi: ../parsing_c/ast_c.cmo 
-no_pycocci.cmo: pycocci_aux.cmi ../commons/common.cmi ../parsing_c/ast_c.cmo 
-no_pycocci.cmx: pycocci_aux.cmx ../commons/common.cmx ../parsing_c/ast_c.cmx 
+pycocci.cmi: ../parsing_cocci/ast_cocci.cmi ../parsing_c/ast_c.cmo
+pycocci_aux.cmi: ../parsing_c/ast_c.cmo
+no_pycocci.cmo: pycocci_aux.cmi ../commons/common.cmi ../parsing_c/ast_c.cmo
+no_pycocci.cmx: pycocci_aux.cmx ../commons/common.cmx ../parsing_c/ast_c.cmx
 pycocci_aux.cmo: ../parsing_c/pretty_print_c.cmi ../commons/common.cmi \
-    ../parsing_cocci/ast_cocci.cmi ../parsing_c/ast_c.cmo pycocci_aux.cmi 
+    ../parsing_cocci/ast_cocci.cmi ../parsing_c/ast_c.cmo pycocci_aux.cmi
 pycocci_aux.cmx: ../parsing_c/pretty_print_c.cmx ../commons/common.cmx \
-    ../parsing_cocci/ast_cocci.cmx ../parsing_c/ast_c.cmx pycocci_aux.cmi 
+    ../parsing_cocci/ast_cocci.cmx ../parsing_c/ast_c.cmx pycocci_aux.cmi
 yes_pycocci.cmo: pycocci_aux.cmi ../globals/flag.cmo ../commons/common.cmi \
-    ../parsing_c/ast_c.cmo 
+    ../parsing_c/ast_c.cmo
 yes_pycocci.cmx: pycocci_aux.cmx ../globals/flag.cmx ../commons/common.cmx \
-    ../parsing_c/ast_c.cmx 
+    ../parsing_c/ast_c.cmx
index a418a93..2c3459a 100644 (file)
@@ -1,3 +1,25 @@
+# Copyright 2010, INRIA, University of Copenhagen
+# Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+# This file is part of Coccinelle.
+#
+# Coccinelle is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, according to version 2 of the License.
+#
+# Coccinelle is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+#
+# The authors reserve the right to distribute this or future versions of
+# Coccinelle under other licenses.
+
+
 #############################################################################
 # Configuration section
 #############################################################################
@@ -86,17 +108,14 @@ $(CTLEXEC): $(CTLOBJS) $(LIBS)
 
 clean::
        rm -f $(OPTLIB) $(LIB:.cma=.a)
-       rm -f $(TARGET) rm -f $(TARGET).byte
+       rm -f $(TARGET)
+       rm -f $(TARGET).byte
        rm -f $(CTLTARGET)
 
-
-#pycocci.ml: ../pycaml/pycaml.ml ../pycaml/pycaml_ml.c
-#pycocci_aux.ml:  ../pycaml/pycaml.ml ../pycaml/pycaml_ml.c
-pycocci_aux.ml:
-       @echo "\n\n\t*** pycocci_aux.ml not found ! ***\n\n\tRun 'configure && make depend' first.\n\n"
-
-rmlinks:
-       rm -f pycocci.ml pycocci_aux.ml
+distclean::
+       $(MAKE) -C coccilib $@
+       rm -f .depend
+       rm -f pycocci.ml
 
 ##############################################################################
 # Generic ocaml rules
@@ -120,10 +139,6 @@ clean::
        rm -f *.cm[iox] *.o  *.annot
        rm -f *~ .*~ #*#
 
-distclean::
-       $(MAKE) -C coccilib $@
-       rm -f .depend
-
 beforedepend:
 
 depend: beforedepend
diff --git a/python/Makefile.orig b/python/Makefile.orig
deleted file mode 100644 (file)
index ddbce90..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-#############################################################################
-# Configuration section
-#############################################################################
--include ../Makefile.config
-
-##############################################################################
-# Variables
-##############################################################################
-TARGET=coccipython
-
-SOURCES= pycocci_aux.ml pycocci.ml
-
-ifeq ("$(PYCAMLDIR)", "pycaml")
-INCLUDEDIRS = ../commons ../commons/ocamlextra ../globals ../$(PYCAMLDIR) \
-             ../parsing_c ../parsing_cocci
-else
-INCLUDEDIRS = ../commons ../commons/ocamlextra ../globals $(PYCAMLDIR) \
-             ../parsing_c ../parsing_cocci
-endif
-
-SYSLIBS = str.cma unix.cma pycaml.cma
-LIBS=../commons/commons.cma ../globals/globals.cma
-
-##############################################################################
-# Generic variables
-##############################################################################
-
-INCLUDES=$(INCLUDEDIRS:%=-I %) $(INCLUDESEXTRA)
-
-##############################################################################
-# Generic ocaml variables
-##############################################################################
-
-# The Caml compilers.
-OCAMLCFLAGS ?= -g -dtypes
-OCAMLC =ocamlc$(OPTBIN) $(OCAMLCFLAGS) $(INCLUDES)
-OCAMLOPT = ocamlopt$(OPTBIN) $(OPTFLAGS) $(INCLUDES)
-OCAMLDEP = ocamldep$(OPTBIN) $(INCLUDES)
-
-
-##############################################################################
-# Top rules
-##############################################################################
-
-EXEC=$(TARGET).byte
-LIB=$(TARGET).cma
-OPTLIB=$(LIB:.cma=.cmxa)
-
-CTLEXEC=$(CTLTARGET)
-
-OBJS = $(SOURCES:.ml=.cmo)
-OPTOBJS = $(OBJS:.cmo=.cmx)
-
-CTLOBJS = $(CTLSOURCES:.ml=.cmo)
-CTLOPTOBJS = $(CTLOBJS:.cmo=.cmx)
-
-
-#all: $(EXEC) $(LIB)
-all: $(LIB)
-
-all.opt: $(OPTLIB)
-
-ctl: $(CTLEXEC)
-
-
-$(LIB): $(OBJS)
-       $(OCAMLC) -a -o $(LIB) $(OBJS)
-
-clean::
-       rm -f $(LIB)
-
-
-$(OPTLIB): $(OPTOBJS)
-       $(OCAMLOPT) -a -o $(OPTLIB) $(OPTOBJS)
-
-
-$(EXEC): $(OBJS) main.cmo $(LIBS)
-       $(OCAMLC) -o $(EXEC) $(SYSLIBS) $(LIBS) $(OBJS) main.cmo
-
-$(CTLEXEC): $(CTLOBJS) $(LIBS)
-       $(OCAMLC) -o $(CTLEXEC) $(SYSLIBS) $(LIBS) $(CTLOBJS)
-
-
-clean::
-       rm -f $(OPTLIB) $(LIB:.cma=.a)
-       rm -f $(TARGET) rm -f $(TARGET).byte
-       rm -f $(CTLTARGET)
-
-
-#pycocci.ml: ../pycaml/pycaml.ml ../pycaml/pycaml_ml.c
-#pycocci_aux.ml:  ../pycaml/pycaml.ml ../pycaml/pycaml_ml.c
-pycocci_aux.ml:
-       @echo "\n\n\t*** pycocci_aux.ml not found ! ***\n\n\tRun 'configure && make depend' first.\n\n"
-
-rmlinks:
-       rm -f pycocci.ml pycocci_aux.ml
-
-##############################################################################
-# Generic ocaml rules
-##############################################################################
-
-.SUFFIXES:
-.SUFFIXES: .ml .mli .cmo .cmi .cmx
-
-.ml.cmo:
-       $(OCAMLC) -c $<
-
-.mli.cmi:
-       $(OCAMLC) -c $<
-
-.ml.cmx:
-       $(OCAMLOPT) -c $<
-
-
-# clean rule for others files
-clean::
-       rm -f *.cm[iox] *.o  *.annot
-       rm -f *~ .*~ #*#
-
-distclean::
-       $(MAKE) -C coccilib $@
-       rm -f .depend
-
-beforedepend:
-
-depend: beforedepend
-       $(OCAMLDEP) *.mli *.ml > .depend
-
-.depend:
-       $(OCAMLDEP) *.mli *.ml > .depend
-
--include .depend
index 96b5289..793ed33 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 open Ast_c
 open Common
 open Pycocci_aux
index 7d177f8..f0778bd 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val build_classes : Ast_cocci.meta_name list -> unit
 val construct_variables :
     (string * Ast_cocci.meta_name * Ast_cocci.metavar) list
index 2f878e9..14d094d 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 open Ast_c
 open Common
 
index 1630a94..cda8a0b 100644 (file)
@@ -1,2 +1,26 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 val exprrep : Ast_c.expression -> string
 val stringrep : Ast_c.metavar_binding_kind -> string
index a369170..80b996b 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 open Ast_c
 open Common
 open Pycaml
index 4ef3f64..8620f3f 100755 (executable)
@@ -1,3 +1,25 @@
+# Copyright 2010, INRIA, University of Copenhagen
+# Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+# This file is part of Coccinelle.
+#
+# Coccinelle is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, according to version 2 of the License.
+#
+# Coccinelle is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+#
+# The authors reserve the right to distribute this or future versions of
+# Coccinelle under other licenses.
+
+
 #!/usr/bin/perl -w
 use strict;
 
index f0fed0a..a474c25 100755 (executable)
@@ -1,3 +1,25 @@
+# Copyright 2010, INRIA, University of Copenhagen
+# Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+# This file is part of Coccinelle.
+#
+# Coccinelle is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, according to version 2 of the License.
+#
+# Coccinelle is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+#
+# The authors reserve the right to distribute this or future versions of
+# Coccinelle under other licenses.
+
+
 #!/usr/bin/perl
 #usage:  ./extract_examples.pl ~/week-end/working-documents/examples.tex
 
index 2339422..cb5347b 100755 (executable)
@@ -1,3 +1,25 @@
+# Copyright 2010, INRIA, University of Copenhagen
+# Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+# This file is part of Coccinelle.
+#
+# Coccinelle is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, according to version 2 of the License.
+#
+# Coccinelle is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+#
+# The authors reserve the right to distribute this or future versions of
+# Coccinelle under other licenses.
+
+
 #!/usr/bin/perl
 
 use strict;
index 11f32b1..f877d2b 100755 (executable)
@@ -1,3 +1,25 @@
+# Copyright 2010, INRIA, University of Copenhagen
+# Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+# This file is part of Coccinelle.
+#
+# Coccinelle is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, according to version 2 of the License.
+#
+# Coccinelle is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+#
+# The authors reserve the right to distribute this or future versions of
+# Coccinelle under other licenses.
+
+
 #!/usr/bin/perl 
 
 # usage: gather_failed.pl **/*.failed > /tmp/big.failed
index 84b7091..21ba994 100755 (executable)
@@ -1,3 +1,25 @@
+# Copyright 2010, INRIA, University of Copenhagen
+# Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+# This file is part of Coccinelle.
+#
+# Coccinelle is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, according to version 2 of the License.
+#
+# Coccinelle is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+#
+# The authors reserve the right to distribute this or future versions of
+# Coccinelle under other licenses.
+
+
 #!/usr/bin/perl
 #
 # ARGV: 0 = replacement text, 1 = file w. list of files
index 10821a7..ae064ff 100755 (executable)
@@ -1,3 +1,25 @@
+# Copyright 2010, INRIA, University of Copenhagen
+# Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+# This file is part of Coccinelle.
+#
+# Coccinelle is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, according to version 2 of the License.
+#
+# Coccinelle is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+#
+# The authors reserve the right to distribute this or future versions of
+# Coccinelle under other licenses.
+
+
 #!/usr/bin/perl 
 
 #usage: 
index 58578ea..4327842 100755 (executable)
@@ -1,3 +1,25 @@
+# Copyright 2010, INRIA, University of Copenhagen
+# Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+# This file is part of Coccinelle.
+#
+# Coccinelle is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, according to version 2 of the License.
+#
+# Coccinelle is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+#
+# The authors reserve the right to distribute this or future versions of
+# Coccinelle under other licenses.
+
+
 #!/usr/bin/perl 
 
 #usage: 
index a7d35d2..03b0904 100755 (executable)
@@ -1,3 +1,25 @@
+# Copyright 2010, INRIA, University of Copenhagen
+# Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+# This file is part of Coccinelle.
+#
+# Coccinelle is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, according to version 2 of the License.
+#
+# Coccinelle is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+#
+# The authors reserve the right to distribute this or future versions of
+# Coccinelle under other licenses.
+
+
 #!/usr/bin/perl
 
 use strict;
diff --git a/test.ml b/test.ml
dissimilarity index 99%
index b23bd7c..d1176b7 100644 (file)
--- a/test.ml
+++ b/test.ml
@@ -1,583 +1 @@
-(*
- * Copyright 2010, INRIA, University of Copenhagen
- * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
- * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-(*
- * Copyright 2010, INRIA, University of Copenhagen
- * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
- * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-(*
- * Copyright 2010, INRIA, University of Copenhagen
- * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
- * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-(*
- * Copyright 2010, INRIA, University of Copenhagen
- * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
- * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-(*
- * Copyright 2010, INRIA, University of Copenhagen
- * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
- * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-(*
- * Copyright 2010, INRIA, University of Copenhagen
- * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
- * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-(*
- * Copyright 2010, INRIA, University of Copenhagen
- * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
- * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-(*
- * Copyright 2010, INRIA, University of Copenhagen
- * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
- * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-(*
- * Copyright 2010, INRIA, University of Copenhagen
- * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
- * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-(*
- * Copyright 2010, INRIA, University of Copenhagen
- * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
- * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-(*
- * Copyright 2010, INRIA, University of Copenhagen
- * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
- * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-(*
- * Copyright 2010, INRIA, University of Copenhagen
- * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
- * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-(*
- * Copyright 2010, INRIA, University of Copenhagen
- * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
- * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-(*
- * Copyright 2010, INRIA, University of Copenhagen
- * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
- * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-(*
- * Copyright 2010, INRIA, University of Copenhagen
- * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
- * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-(*
- * Copyright 2010, INRIA, University of Copenhagen
- * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
- * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-(*
- * Copyright 2005-2010, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-(*
- * Copyright 2005-2010, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-(*
- * Copyright 2005-2010, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-(*
- * Copyright 2005-2010, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-(*
- * Copyright 2005-2010, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-(*
- * Copyright 2005-2010, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-(*
- * Copyright 2005-2010, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-(*
- * Copyright 2005-2010, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-(*
- * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
- * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
- * This file is part of Coccinelle.
- *
- * Coccinelle is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, according to version 2 of the License.
- *
- * Coccinelle is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
- *
- * The authors reserve the right to distribute this or future versions of
- * Coccinelle under other licenses.
- *)
-
-
-let foo_ctl () = failwith "there is no foo_ctl formula"
+let foo_ctl () = failwith "there is no foo_ctl formula"
index 8496e14..b99b455 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 open Common
 open Sexplib
 
@@ -444,7 +468,8 @@ let test_parse_cocci file =
         (* compile file *)
         Prepare_ocamlcocci.load_file ocaml_script_file;
         (* remove file *)
-        Prepare_ocamlcocci.clean_file ocaml_script_file;
+        (if not !Common.save_tmp_files
+        then Prepare_ocamlcocci.clean_file ocaml_script_file);
         (* Print the list of registered functions *)
         Prepare_ocamlcocci.test ());
   Printf.printf "grep tokens\n";
index 1f9cead..6ebf7b2 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 open Common
 
 (*****************************************************************************)
diff --git a/tests/SCORE_expected.sexp b/tests/SCORE_expected.sexp
deleted file mode 100644 (file)
index b88540e..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-((a.res Ok) (a3d.res Ok) (a_and_e.res Ok) (a_and_e_ver1.res Ok) (ab.res Ok)
- (addaft.res Ok) (addbefore.res Ok) (addbeforeafter.res Ok) (addelse.res Ok)
- (addif.res Ok) (addif1.res Ok) (addif2.res Ok) (addtoo.res Ok)
- (after_if.res Ok) (anon.res Ok) (ar.res Ok) (arg.res Ok) (argument.res Ok)
- (array_init.res Ok) (array_size.res Ok) (arraysz.res Ok) (b1.res Ok)
- (b2.res Ok)
- (bad_iso_example.res
-  (Pb
-   "INCORRECT:diff token: ( VS x\nFile \"tests/bad_iso_example.c\", line 2, column 6,  charpos = 19\n    around = '(', whole content =   if ((x = 3)) return;\nFile \"tests/bad_iso_example.res\", line 2, column 6,  charpos = 19\n    around = 'x', whole content =   if (x) return;\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -1,4 +1,4 @@\n     int main() {\n    -  if ((x = 3)) return;\n    +  if (x) return;\n     }\n     \n"))
- (bad_kfree.res Ok) (bad_ptr_print.res Ok) (bad_typedef.res Ok)
- (badexp.res Ok)
- (badpos.res
-  (Pb
-   "PROBLEM\n   exn = Failure(\"rule starting on line 1: already tagged token:\\nC code context\\nFile \\\"tests/badpos.c\\\", line 5, column 30,  charpos = 139\\n    around = 'reg_ptr', whole content = \\t (int) -(((struct pt_regs *) reg_ptr)->orig_eax + 2));\")\n"))
- (badtypedef.res Ok) (badzero.res Ok) (befS.res Ok) (ben.res Ok)
- (bitfield.res Ok) (braces.res Ok) (break.res Ok) (bug1.res Ok)
- (bugloop.res
-  (Pb
-   "INCORRECT:diff token: PF_FREEZE VS )\nFile <COCCIOUTPUTFILE>, line 12, column 16,  charpos = 390\n    around = 'PF_FREEZE', whole content = \t\t\trefrigerator(PF_FREEZE);\nFile \"tests/bugloop.res\", line 8, column 16,  charpos = 160\n    around = ')', whole content = \t\t\trefrigerator();\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -1,7 +1,3 @@\n    -/* this doesn't work, because on the paths where we don't find refrigerator,\n    -we expect to reach Exit without first going through current->flags & PF_FREEZE,\n    -but of course any path that goes around the loop does precisely that */\n    -\n     static int stir_transmit_thread(void *arg)\n     {\n     \n    @@ -9,7 +5,7 @@\n     \t{\n     \t\t/* if suspending, then power off and wait */\n     \t\tif (unlikely(freezing(current))) {\n    -\t\t\trefrigerator(PF_FREEZE);\n    +\t\t\trefrigerator();\n     \n     \t\t}\n     \t}\n"))
- (bugon.res Ok) (cards.res Ok) (cast.res Ok) (cast_iso.res Ok) (com.res Ok)
- (comments.res Ok) (compare.res Ok) (const.res Ok) (const1bis.res Ok)
- (const_adding.res Ok) (const_array.res Ok) (const_implicit_iso.res Ok)
- (constty.res Ok) (constx.res Ok) (cs_check.res Ok) (cst.res Ok)
- (cst_null.res Ok) (csw.res Ok)
- (dbg.res
-  (Pb
-   "INCORRECT:diff token: else VS (\nFile <COCCIOUTPUTFILE>, line 8, column 2,  charpos = 133\n    around = 'else', whole content = \t\telse pr = NULL;(\"PCI\");\nFile \"tests/dbg.res\", line 7, column 5,  charpos = 130\n    around = '(', whole content = \t\tDBG(\"PCI\");\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -4,6 +4,6 @@\n     \tstruct resource *pr, *r = &dev->resource[idx];\n     \n     \tif (pr)\n    -\t\tDBG\n    -\t\telse pr = NULL;(\"PCI\");\n    +\t\tDBG(\"PCI\");\n    +\telse pr = NULL;\n     }\n"))
- (dbg1.res
-  (Pb
-   "INCORRECT:diff token: E VS (\nFile <COCCIOUTPUTFILE>, line 5, column 2,  charpos = 75\n    around = 'E', whole content = \t\tE = NULL;(\"PCI\");\nFile \"tests/dbg1.res\", line 4, column 5,  charpos = 72\n    around = '(', whole content = \t\tDBG(\"PCI\");\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -1,6 +1,6 @@\n     \n     static inline void alloc_resource(struct pci_dev *dev, int idx)\n     {\n    -\t\tDBG\n    -\t\tE = NULL;(\"PCI\");\n    +\t\tDBG(\"PCI\");\n    +\t\tE = NULL;\n     }\n"))
- (dc_close.res Ok) (debug.res Ok) (dec.res Ok) (decl.res Ok) (decl2.res Ok)
- (decl_space.res Ok)
- (decl_split.res
-  (Pb
-   "INCORRECT:diff token: int VS }\nFile \"tests/decl_split.c\", line 2, column 8,  charpos = 27\n    around = 'int', whole content =         int x, y;\nFile \"tests/decl_split.res\", line 2, column 0,  charpos = 19\n    around = '}', whole content = }\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -1,3 +1,2 @@\n     int func(int i) { \n    -        int x, y;\n     }\n"))
- (decl_star.res Ok) (define_exp.res Ok) (define_param.res Ok)
- (deftodo.res Ok) (delete_function.res Ok) (deref.res Ok) (devlink.res Ok)
- (disjexpr.res Ok) (disjexpr_ver1.res Ok) (disjexpr_ver2.res Ok)
- (distribute.res Ok) (double.res Ok) (double_assign.res Ok)
- (double_lines.res Ok) (double_switch.res Ok) (doublepos.res Ok)
- (doubleswitch.res Ok)
- (doundo.res
-  (Pb
-   "INCORRECT:diff token: xxx VS new_foo\nFile <COCCIOUTPUTFILE>, line 7, column 2,  charpos = 85\n    around = 'xxx', whole content =   xxx();\nFile \"tests/doundo.res\", line 7, column 2,  charpos = 85\n    around = 'new_foo', whole content =   new_foo();\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -4,5 +4,5 @@\n     {\n       const s8 (*queue_priority_mapping)[2];\n       s8 *noevent;\n    -  xxx();\n    +  new_foo();\n     }\n"))
- (dowhile.res Ok) (dropf.res Ok) (dropparam.res Ok) (edots.res Ok)
- (edots_ver1.res Ok) (empty.res Ok) (end_commas.res Ok) (endif.res Ok)
- (enum.res Ok) (exp.res Ok) (expnest.res Ok) (expopt.res Ok) (expopt2.res Ok)
- (expopt3.res Ok) (expopt3_ver1.res Ok) (expopt3_ver2.res Ok) (fields.res Ok)
- (fieldsmin.res Ok) (find_long.res Ok) (fix_flow_need.res Ok)
- (fn_todo.res Ok) (fnptr.res Ok) (fnret.res Ok) (fnty.res Ok) (four.res Ok)
- (foura.res Ok) (fp.res Ok) (fsh.res Ok) (fun.res Ok)
- (gilles-question.res Ok) (gotobreak.res Ok) (hd.res Ok) (headers.res Ok)
- (hex.res Ok) (hil1.res Ok) (if.res Ok) (ifbr.res Ok) (ifdef1.res Ok)
- (ifdef2.res Ok)
- (ifdef3.res
-  (Pb
-   "PROBLEM\n   exn = Lexer_cocci.Lexical(\"unrecognised symbol, in token rule: #\")\n"))
- (ifdef4.res Ok) (ifdef5.res Ok) (ifdef6.res Ok) (ifdef6a.res Ok)
- (ifdefmeta.res Ok) (ifdefmeta1.res Ok) (ifdefmeta2.res Ok)
- (ifdefmeta3.res Ok)
- (ifdefmeta4.res
-  (Pb
-   "PROBLEM\n   exn = Unix.Unix_error(20, \"stat\", \"tests/ifdefmeta4.cocci\")\n"))
- (ifend.res Ok) (ifzer.res Ok) (inc.res Ok)
- (incdir.res
-  (Pb
-   "INCORRECT:diff token: x VS 12\nFile \"tests/incdir.c\", line 4, column 6,  charpos = 46\n    around = 'x', whole content =   foo(x);\nFile \"tests/incdir.res\", line 4, column 6,  charpos = 46\n    around = '12', whole content =   foo(12);\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -1,5 +1,5 @@\n     #include \"sub/incdir2.c\"\n     \n     int main () {\n    -  foo(x);\n    +  foo(12);\n     }\n"))
- (incl.res Ok) (inclifdef.res Ok) (include.res Ok)
- (incompatible_value.res Ok) (inherited.res Ok) (inherited_ver1.res Ok)
- (inhpos.res Ok) (initializer.res Ok) (initializer_many_fields.res Ok)
- (inline.res Ok) (insdef.res Ok) (isococci.res Ok) (isotest.res Ok)
- (isotest2.res Ok) (iterator.res Ok)
- (jloop1.res
-  (Pb
-   "PROBLEM\n   exn = Failure(\"minus: parse error: \\n = File \\\"tests/jloop1.cocci\\\", line 10, column 3,  charpos = 129\\n    around = '...>', whole content =    ...>\\n\")\n"))
- (julia10.res Ok) (julia7.res Ok) (justremove.res Ok) (keep_comma.res Ok)
- (km.res Ok) (kmalloc.res Ok) (kmc.res Ok) (ktype.res Ok)
- (labels_metastatement.res Ok) (labels_metastatement_ver1.res Ok)
- (line_before_last.res Ok) (local.res Ok) (localid.res Ok) (longconst.res Ok)
- (longlong.res Ok) (longlongint.res Ok) (loop.res Ok) (lvalue.res Ok)
- (macro.res Ok) (macro_int16.res Ok) (match_no_meta.res Ok) (max.res Ok)
- (memory.res (Pb "PROBLEM\n   exn = Out of memory\n"))
- (metahex.res
-  (Pb
-   "INCORRECT:diff token: f VS }\nFile \"tests/metahex.c\", line 2, column 2,  charpos = 15\n    around = 'f', whole content =   f(3);\nFile \"tests/metahex.res\", line 2, column 0,  charpos = 13\n    around = '}', whole content = }\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -1,4 +1,2 @@\n     int main() {\n    -  f(3);\n    -  g(0x03);\n     }\n"))
- (metaruleelem.res Ok) (metastatement2.res Ok) (metastatement_for.res Ok)
- (metastatement_if.res Ok)
- (mini_null_ref.res
-  (Pb
-   "INCORRECT:diff token: if VS struct\nFile <COCCIOUTPUTFILE>, line 6, column 8,  charpos = 268\n    around = 'if', whole content =         if (!pdata) {\nFile \"tests/mini_null_ref.res\", line 6, column 8,  charpos = 269\n    around = 'struct', whole content =         struct w90p910_keypad *keypad;\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -2,7 +2,9 @@\n     {\n             const struct w90p910_keypad_platform_data *pdata =\n                                                     pdev->dev.platform_data;\n    -        const struct matrix_keymap_data *keymap_data;\n    +        const struct matrix_keymap_data * keymap_data;\n    +        struct w90p910_keypad *keypad;\n    +\n             if (!pdata) {\n                     dev_err(&pdev->dev, \"no platform data defined\\n\");\n                     return -EINVAL;\n"))
- (minstruct.res Ok) (minusdots.res Ok) (minusdots_ver1.res Ok)
- (multi_func1.res
-  (Pb
-   "PROBLEM\n   exn = Failure(\"minus: parse error: \\n = File \\\"tests/multi_func1.cocci\\\", line 12, column 2,  charpos = 102\\n    around = 'fn2', whole content =   fn2(...) {\\n\")\n"))
- (multiplus.res Ok) (multitype.res Ok) (multitypedef.res Ok)
- (multivars.res Ok) (na.res Ok) (nameless.res Ok) (nest.res Ok)
- (nestone.res Ok) (nestseq.res Ok) (neststruct.res Ok) (nl.res Ok)
- (nocast.res Ok) (not.res Ok) (notest.res Ok) (noty.res Ok)
- (null_bool.res
-  (Pb
-   "INCORRECT:diff token: ) VS !=\nFile <COCCIOUTPUTFILE>, line 2, column 8,  charpos = 22\n    around = ')', whole content =   if (12) return;\nFile \"tests/null_bool.res\", line 2, column 9,  charpos = 23\n    around = '!=', whole content =   if (12 != NULL) return;\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -1,6 +1,6 @@\n     int main () {\n    -  if (12) return;\n    -  if (a && 12 && b) return;\n    +  if (12 != NULL) return;\n    +  if (a && 12 != NULL && b) return;\n       if (12) return;\n       if (a && 12 && b) return;\n       x = x + 20;\n"))
- (null_type.res Ok)
- (oddifdef.res
-  (Pb
-   "INCORRECT:diff token: #else\n VS x\nFile <COCCIOUTPUTFILE>, line 10, column 0,  charpos = 114\n    around = '#else\n', whole content = #else\nFile \"tests/oddifdef.res\", line 10, column 2,  charpos = 116\n    around = 'x', whole content =   x = 0;\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -7,8 +7,9 @@\n         a = 5;\n     \n     #ifdef FOO\n    +  x = 0;\n     #else\n    -  \n    +  x = 0;\n     #endif\n     }\n     \n    @@ -21,8 +22,9 @@\n         a = 3;\n     \n     #ifdef FOO\n    +  x = 0;\n     #else\n    -  \n    +  x = 0;\n     #endif\n     }\n     \n    @@ -35,7 +37,8 @@\n     #endif\n     \n     #ifdef FOO\n    +  x = 0;\n     #else\n    -  \n    +  x = 0;\n     #endif\n     }\n"))
- (of.res Ok) (oneline.res Ok) (opt.res Ok) (optional_qualifier.res Ok)
- (optional_storage.res Ok) (orexp.res Ok) (overshoot.res Ok) (param.res Ok)
- (param_end.res Ok) (param_ver1.res Ok) (parameters_dots.res Ok)
- (partial.res Ok)
- (pb_distribute_type.res
-  (Pb
-   "INCORRECT:PB parsing only in generated-file\n    diff (result(<) vs expected_result(>)) = \n    @@ -10,6 +10,6 @@\n     }\n     \n     int foo() {\n    -  int[45] *x;\n    +  int (*x)[45];\n       return 0;\n     }\n"))
- (pb_distribute_type2.res
-  (Pb
-   "INCORRECT:PB parsing only in generated-file\n    diff (result(<) vs expected_result(>)) = \n    @@ -1,5 +1,5 @@\n     int foo() {\n    -  int* x;\n    +  int *x;\n       return 0;\n     }\n     \n    @@ -10,6 +10,6 @@\n     }\n     \n     int foo() {\n    -  int x[45]*;\n    +  int (*x)[45];\n       return 0;\n     }\n"))
- (pb_distribute_type3.res
-  (Pb "PROBLEM\n   exn = Failure(\"line 7: index 53 53 already used\\n\")\n"))
- (pb_distribute_type4.res Ok) (pb_params_iso.res Ok)
- (pb_parsing_macro.res Ok) (pb_tag_symbols.res Ok) (pmac.res Ok)
- (posiso.res Ok) (positionc.res Ok) (post.res Ok) (print_return.res Ok)
- (proto.res Ok) (proto2.res Ok) (proto_ver1.res Ok) (proto_ver2.res Ok)
- (protoassert.res Ok) (protox.res Ok) (rcu3.res Ok) (regexp.res Ok)
- (regexp2.res Ok) (regexp3.res Ok) (remstruct.res Ok)
- (replace_typedef.res Ok) (reserved.res Ok) (retmacro.res Ok) (rets.res Ok)
- (return.res Ok) (return_implicit.res Ok) (retval.res Ok) (same_expr.res Ok)
- (scope_problem.res
-  (Pb
-   "INCORRECT:diff token: } VS a\nFile <COCCIOUTPUTFILE>, line 5, column 2,  charpos = 43\n    around = '}', whole content =   }\nFile \"tests/scope_problem.res\", line 7, column 4,  charpos = 49\n    around = 'a', whole content =     a = 2;\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -1,7 +1,10 @@\n     void main(int i) {\n     \n    +  \n    +\n       if(1) {\n         int a;\n    +    a = 2;\n       }\n     \n     \n"))
- (serio.res
-  (Pb
-   "INCORRECT:diff token: init_MUTEX VS mutex_init\nFile \"tests/serio.c\", line 7, column 1,  charpos = 130\n    around = 'init_MUTEX', whole content = \tinit_MUTEX(&serio->drv_sem);\nFile \"tests/serio.res\", line 7, column 1,  charpos = 130\n    around = 'mutex_init', whole content = \tmutex_init(&serio->new_lock);\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -4,5 +4,5 @@\n     \n     static void serio_init_port(struct serio *serio)\n     {\n    -\tinit_MUTEX(&serio->drv_sem);\n    +\tmutex_init(&serio->new_lock);\n     }\n"))
- (shared_brace.res Ok) (signed.res Ok) (sis.res Ok) (sizeof.res Ok)
- (sizeof_julia.res Ok) (sizestar.res Ok) (skip.res Ok) (sp.res Ok)
- (spaces.res Ok) (spl.res Ok) (static.res Ok) (stm1.res Ok) (stm10.res Ok)
- (stm10_ver1.res Ok) (stm2.res Ok) (stm3.res Ok) (stm4.res Ok) (stm5.res Ok)
- (stm6.res Ok) (stm7.res Ok) (stm8.res Ok) (stmt.res Ok) (str_init.res Ok)
- (strangeorder.res Ok) (string.res Ok) (struct.res Ok)
- (struct_metavar.res Ok) (struct_typedef.res Ok) (structfoo.res Ok)
- (substruct.res Ok) (sw.res Ok) (switch.res Ok) (switchdecl.res Ok)
- (td.res Ok) (test0.res Ok) (test1.res Ok) (test10.res Ok)
- (test10_ver1.res Ok) (test11.res Ok) (test11_ver1.res Ok) (test12.res Ok)
- (test2.res Ok) (test3.res Ok) (test4.res Ok) (test5.res Ok)
- (test5_ver1.res Ok) (test6.res Ok) (test7.res Ok) (test8.res Ok)
- (test9.res Ok) (test_s.res Ok) (test_unsigned_meta.res Ok)
- (three_types.res Ok) (threea.res Ok) (top.res Ok) (topdec.res Ok)
- (topdec_ver1.res Ok) (topdec_ver2.res Ok) (toplevel_macrostmt.res Ok)
- (toplevel_struct.res Ok) (tup.res Ok) (twoproto.res Ok) (ty.res Ok)
- (ty1.res Ok) (ty_tyexp.res Ok) (tydisj.res Ok) (tyex.res Ok) (type.res Ok)
- (type1.res Ok) (type_annotated.res Ok) (type_ver1.res Ok)
- (type_ver2.res
-  (Pb
-   "INCORRECT:PB parsing only in generated-file\n    diff (result(<) vs expected_result(>)) = \n    @@ -1,5 +1,5 @@\n     int foo() {\n    -  int[10] *x;\n    +  int *x[10];\n       return 0;\n     }\n     \n"))
- (typedef.res Ok)
- (typedef3.res
-  (Pb
-   "INCORRECT:diff token: link VS p_dev\nFile <COCCIOUTPUTFILE>, line 7, column 29,  charpos = 137\n    around = 'link', whole content = \tunsigned int iobase = info->link.io.BasePort1;\nFile \"tests/typedef3.res\", line 7, column 29,  charpos = 137\n    around = 'p_dev', whole content = \tunsigned int iobase = info->p_dev->io.BasePort1;\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -4,7 +4,7 @@\n     \n     static void should_work(foo *info)\n     {\n    -\tunsigned int iobase = info->link.io.BasePort1;\n    +\tunsigned int iobase = info->p_dev->io.BasePort1;\n     }\n     \n     static void does_work(struct bluecard_info_t *info)\n"))
- (typedef_double.res Ok)
- (typeof.res
-  (Pb
-   "INCORRECT:diff token: x VS sizeof\nFile <COCCIOUTPUTFILE>, line 3, column 4,  charpos = 26\n    around = 'x', whole content =   f(x);\nFile \"tests/typeof.res\", line 3, column 4,  charpos = 26\n    around = 'sizeof', whole content =   f(sizeof(struct foo));\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -1,4 +1,4 @@\n     int main() {\n       int x;\n    -  f(x);\n    +  f(sizeof(struct foo));\n     }\n"))
- (useless_cast.res Ok) (varargs.res Ok) (video1bis.res Ok) (void.res Ok)
- (vpos.res Ok) (whitespace.res Ok) (wierd_argument.res Ok)
- (wierdinit.res
-  (Pb
-   "seems incorrect, but only because of code that was not parsablediff token: dev_link_t VS struct\nFile \"tests/wierdinit.c\", line 4, column 1,  charpos = 27\n    around = 'dev_link_t', whole content = \tdev_link_t *link;\nFile \"tests/wierdinit.res\", line 4, column 1,  charpos = 27\n    around = 'struct', whole content = \tstruct pcmcia_device *link;\n"))
- (ws2.res Ok) (xfield.res Ok) (y2.res Ok) (zero.res Ok))
\ No newline at end of file
diff --git a/tests/SCORE_expected.sexp.save b/tests/SCORE_expected.sexp.save
deleted file mode 100644 (file)
index de9cd74..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-((a.res Ok) (a3d.res Ok) (a_and_e.res Ok) (a_and_e_ver1.res Ok) (ab.res Ok)
- (addaft.res Ok) (addbefore.res Ok) (addbeforeafter.res Ok) (addelse.res Ok)
- (addif.res Ok) (addif1.res Ok) (addif2.res Ok) (addtoo.res Ok)
- (after_if.res Ok) (anon.res Ok) (ar.res Ok) (arg.res Ok) (argument.res Ok)
- (array_init.res Ok) (array_size.res Ok) (arraysz.res Ok) (b1.res Ok)
- (b2.res Ok)
- (bad_iso_example.res
-  (Pb
-   "INCORRECT:diff token: ( VS x\nFile \"tests/bad_iso_example.c\", line 2, column 6,  charpos = 19\n    around = '(', whole content =   if ((x = 3)) return;\nFile \"tests/bad_iso_example.res\", line 2, column 6,  charpos = 19\n    around = 'x', whole content =   if (x) return;\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -1,4 +1,4 @@\n     int main() {\n    -  if ((x = 3)) return;\n    +  if (x) return;\n     }\n     \n"))
- (bad_ptr_print.res Ok) (bad_typedef.res Ok) (badexp.res Ok)
- (badpos.res
-  (Pb
-   "PROBLEM\n   exn = Failure(\"rule starting on line 1: already tagged token:\\nC code context\\nFile \\\"tests/badpos.c\\\", line 5, column 30,  charpos = 139\\n    around = 'reg_ptr', whole content = \\t (int) -(((struct pt_regs *) reg_ptr)->orig_eax + 2));\")\n"))
- (badtypedef.res Ok) (badzero.res Ok) (befS.res Ok) (ben.res Ok)
- (bitfield.res Ok) (braces.res Ok) (break.res Ok) (bug1.res Ok)
- (bugloop.res
-  (Pb
-   "INCORRECT:diff token: PF_FREEZE VS )\nFile <COCCIOUTPUTFILE>, line 12, column 16,  charpos = 390\n    around = 'PF_FREEZE', whole content = \t\t\trefrigerator(PF_FREEZE);\nFile \"tests/bugloop.res\", line 8, column 16,  charpos = 160\n    around = ')', whole content = \t\t\trefrigerator();\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -1,7 +1,3 @@\n    -/* this doesn't work, because on the paths where we don't find refrigerator,\n    -we expect to reach Exit without first going through current->flags & PF_FREEZE,\n    -but of course any path that goes around the loop does precisely that */\n    -\n     static int stir_transmit_thread(void *arg)\n     {\n     \n    @@ -9,7 +5,7 @@\n     \t{\n     \t\t/* if suspending, then power off and wait */\n     \t\tif (unlikely(freezing(current))) {\n    -\t\t\trefrigerator(PF_FREEZE);\n    +\t\t\trefrigerator();\n     \n     \t\t}\n     \t}\n"))
- (bugon.res Ok) (cards.res Ok) (cast.res Ok) (cast_iso.res Ok) (com.res Ok)
- (compare.res Ok) (const.res Ok) (const1bis.res Ok) (const_adding.res Ok)
- (const_array.res Ok) (const_implicit_iso.res Ok) (constty.res Ok)
- (constx.res Ok) (cs_check.res Ok) (cst.res Ok) (csw.res Ok)
- (dbg.res
-  (Pb
-   "INCORRECT:diff token: else VS (\nFile <COCCIOUTPUTFILE>, line 8, column 2,  charpos = 133\n    around = 'else', whole content = \t\telse pr = NULL;(\"PCI\");\nFile \"tests/dbg.res\", line 7, column 5,  charpos = 130\n    around = '(', whole content = \t\tDBG(\"PCI\");\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -4,6 +4,6 @@\n     \tstruct resource *pr, *r = &dev->resource[idx];\n     \n     \tif (pr)\n    -\t\tDBG\n    -\t\telse pr = NULL;(\"PCI\");\n    +\t\tDBG(\"PCI\");\n    +\telse pr = NULL;\n     }\n"))
- (dbg1.res
-  (Pb
-   "INCORRECT:diff token: E VS (\nFile <COCCIOUTPUTFILE>, line 5, column 2,  charpos = 75\n    around = 'E', whole content = \t\tE = NULL;(\"PCI\");\nFile \"tests/dbg1.res\", line 4, column 5,  charpos = 72\n    around = '(', whole content = \t\tDBG(\"PCI\");\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -1,6 +1,6 @@\n     \n     static inline void alloc_resource(struct pci_dev *dev, int idx)\n     {\n    -\t\tDBG\n    -\t\tE = NULL;(\"PCI\");\n    +\t\tDBG(\"PCI\");\n    +\t\tE = NULL;\n     }\n"))
- (dc_close.res Ok) (debug.res Ok) (dec.res Ok) (decl.res Ok) (decl2.res Ok)
- (decl_space.res Ok)
- (decl_split.res
-  (Pb
-   "INCORRECT:diff token: int VS }\nFile \"tests/decl_split.c\", line 2, column 8,  charpos = 27\n    around = 'int', whole content =         int x, y;\nFile \"tests/decl_split.res\", line 2, column 0,  charpos = 19\n    around = '}', whole content = }\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -1,3 +1,2 @@\n     int func(int i) { \n    -        int x, y;\n     }\n"))
- (define_exp.res Ok) (define_param.res Ok) (deftodo.res Ok)
- (delete_function.res Ok) (deref.res Ok) (devlink.res Ok) (disjexpr.res Ok)
- (disjexpr_ver1.res Ok) (disjexpr_ver2.res Ok) (distribute.res Ok)
- (double.res Ok) (double_assign.res Ok) (double_switch.res Ok)
- (doublepos.res Ok) (doubleswitch.res Ok)
- (doundo.res
-  (Pb
-   "INCORRECT:diff token: xxx VS new_foo\nFile <COCCIOUTPUTFILE>, line 7, column 2,  charpos = 85\n    around = 'xxx', whole content =   xxx();\nFile \"tests/doundo.res\", line 7, column 2,  charpos = 85\n    around = 'new_foo', whole content =   new_foo();\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -4,5 +4,5 @@\n     {\n       const s8 (*queue_priority_mapping)[2];\n       s8 *noevent;\n    -  xxx();\n    +  new_foo();\n     }\n"))
- (dowhile.res Ok) (dropf.res Ok) (dropparam.res Ok) (edots.res Ok)
- (edots_ver1.res Ok) (empty.res Ok) (end_commas.res Ok) (endif.res Ok)
- (enum.res Ok) (exp.res Ok) (expnest.res Ok) (expopt.res Ok) (expopt2.res Ok)
- (expopt3.res Ok) (expopt3_ver1.res Ok) (expopt3_ver2.res Ok) (fields.res Ok)
- (fieldsmin.res Ok) (find_long.res Ok) (fix_flow_need.res Ok)
- (fn_todo.res Ok) (fnptr.res Ok) (fnret.res Ok) (four.res Ok) (foura.res Ok)
- (fp.res Ok) (fsh.res Ok) (fun.res Ok) (gilles-question.res Ok)
- (gotobreak.res Ok) (hd.res Ok) (headers.res Ok) (hex.res Ok) (hil1.res Ok)
- (if.res Ok) (ifbr.res Ok) (ifdef1.res Ok) (ifdef2.res Ok)
- (ifdef3.res
-  (Pb
-   "PROBLEM\n   exn = Lexer_cocci.Lexical(\"unrecognised symbol, in token rule: #\")\n"))
- (ifdef4.res Ok) (ifdef5.res Ok) (ifdef6.res Ok) (ifdef6a.res Ok)
- (ifdefmeta.res Ok) (ifdefmeta1.res Ok) (ifdefmeta2.res Ok)
- (ifdefmeta3.res Ok)
- (ifdefmeta4.res
-  (Pb
-   "PROBLEM\n   exn = Unix.Unix_error(20, \"stat\", \"tests/ifdefmeta4.cocci\")\n"))
- (ifend.res Ok) (ifzer.res Ok) (inc.res Ok)
- (incdir.res
-  (Pb
-   "INCORRECT:diff token: x VS 12\nFile \"tests/incdir.c\", line 4, column 6,  charpos = 46\n    around = 'x', whole content =   foo(x);\nFile \"tests/incdir.res\", line 4, column 6,  charpos = 46\n    around = '12', whole content =   foo(12);\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -1,5 +1,5 @@\n     #include \"sub/incdir2.c\"\n     \n     int main () {\n    -  foo(x);\n    +  foo(12);\n     }\n"))
- (incl.res Ok) (inclifdef.res Ok) (include.res Ok)
- (incompatible_value.res Ok) (inherited.res Ok) (inherited_ver1.res Ok)
- (inhpos.res Ok) (initializer.res Ok) (initializer_many_fields.res Ok)
- (inline.res Ok) (isococci.res Ok) (isotest.res Ok) (isotest2.res Ok)
- (iterator.res Ok)
- (jloop1.res
-  (Pb
-   "PROBLEM\n   exn = Failure(\"minus: parse error: \\n = File \\\"tests/jloop1.cocci\\\", line 10, column 3,  charpos = 129\\n    around = '...>', whole content =    ...>\\n\")\n"))
- (julia10.res Ok) (julia7.res Ok) (justremove.res Ok) (keep_comma.res Ok)
- (km.res Ok) (kmalloc.res Ok) (kmc.res Ok) (ktype.res Ok)
- (labels_metastatement.res Ok) (labels_metastatement_ver1.res Ok)
- (line_before_last.res Ok) (local.res Ok) (localid.res Ok) (longconst.res Ok)
- (longlong.res Ok) (longlongint.res Ok) (loop.res Ok) (lvalue.res Ok)
- (macro.res Ok) (macro_int16.res Ok) (match_no_meta.res Ok) (max.res Ok)
- (memory.res (Pb "PROBLEM\n   exn = Out of memory\n"))
- (metahex.res
-  (Pb
-   "INCORRECT:diff token: f VS }\nFile \"tests/metahex.c\", line 2, column 2,  charpos = 15\n    around = 'f', whole content =   f(3);\nFile \"tests/metahex.res\", line 2, column 0,  charpos = 13\n    around = '}', whole content = }\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -1,4 +1,2 @@\n     int main() {\n    -  f(3);\n    -  g(0x03);\n     }\n"))
- (metaruleelem.res Ok) (metastatement2.res Ok) (metastatement_for.res Ok)
- (metastatement_if.res Ok)
- (mini_null_ref.res
-  (Pb
-   "INCORRECT:diff token: if VS struct\nFile <COCCIOUTPUTFILE>, line 6, column 8,  charpos = 269\n    around = 'if', whole content =         if (!pdata) {\nFile \"tests/mini_null_ref.res\", line 6, column 8,  charpos = 269\n    around = 'struct', whole content =         struct w90p910_keypad *keypad;\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -3,6 +3,8 @@\n             const struct w90p910_keypad_platform_data *pdata =\n                                                     pdev->dev.platform_data;\n             const struct matrix_keymap_data * keymap_data;\n    +        struct w90p910_keypad *keypad;\n    +\n             if (!pdata) {\n                     dev_err(&pdev->dev, \"no platform data defined\\n\");\n                     return -EINVAL;\n"))
- (minstruct.res Ok) (minusdots.res Ok) (minusdots_ver1.res Ok)
- (multi_func1.res
-  (Pb
-   "PROBLEM\n   exn = Failure(\"minus: parse error: \\n = File \\\"tests/multi_func1.cocci\\\", line 12, column 2,  charpos = 102\\n    around = 'fn2', whole content =   fn2(...) {\\n\")\n"))
- (multiplus.res Ok) (multitype.res Ok) (multitypedef.res Ok)
- (multivars.res Ok) (nest.res Ok) (nestone.res Ok) (nestseq.res Ok)
- (neststruct.res Ok) (nl.res Ok) (nocast.res Ok) (not.res Ok) (notest.res Ok)
- (noty.res Ok) (null_type.res Ok)
- (oddifdef.res
-  (Pb
-   "INCORRECT:diff token: #else\n VS x\nFile <COCCIOUTPUTFILE>, line 10, column 0,  charpos = 114\n    around = '#else\n', whole content = #else\nFile \"tests/oddifdef.res\", line 10, column 2,  charpos = 116\n    around = 'x', whole content =   x = 0;\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -7,8 +7,9 @@\n         a = 5;\n     \n     #ifdef FOO\n    +  x = 0;\n     #else\n    -  \n    +  x = 0;\n     #endif\n     }\n     \n    @@ -21,8 +22,9 @@\n         a = 3;\n     \n     #ifdef FOO\n    +  x = 0;\n     #else\n    -  \n    +  x = 0;\n     #endif\n     }\n     \n    @@ -35,7 +37,8 @@\n     #endif\n     \n     #ifdef FOO\n    +  x = 0;\n     #else\n    -  \n    +  x = 0;\n     #endif\n     }\n"))
- (of.res Ok) (oneline.res Ok) (opt.res Ok) (optional_qualifier.res Ok)
- (optional_storage.res Ok) (orexp.res Ok) (overshoot.res Ok) (param.res Ok)
- (param_end.res Ok) (param_ver1.res Ok) (parameters_dots.res Ok)
- (partial.res Ok)
- (pb_distribute_type.res
-  (Pb
-   "INCORRECT:PB parsing only in generated-file\n    diff (result(<) vs expected_result(>)) = \n    @@ -5,11 +5,11 @@\n     \n     \n     int foo() {\n    -  int * *x;\n    +  int **x;\n       return 0;\n     }\n     \n     int foo() {\n    -  int[45] *x;\n    +  int (*x)[45];\n       return 0;\n     }\n"))
- (pb_distribute_type2.res
-  (Pb
-   "INCORRECT:PB parsing only in generated-file\n    diff (result(<) vs expected_result(>)) = \n    @@ -1,5 +1,5 @@\n     int foo() {\n    -  int* x;\n    +  int *x;\n       return 0;\n     }\n     \n    @@ -10,6 +10,6 @@\n     }\n     \n     int foo() {\n    -  int x[45]*;\n    +  int (*x)[45];\n       return 0;\n     }\n"))
- (pb_distribute_type3.res
-  (Pb "PROBLEM\n   exn = Failure(\"line 7: index 53 53 already used\\n\")\n"))
- (pb_distribute_type4.res Ok) (pb_params_iso.res Ok)
- (pb_parsing_macro.res Ok) (pb_tag_symbols.res Ok) (pmac.res Ok)
- (posiso.res Ok) (positionc.res Ok) (post.res Ok) (print_return.res Ok)
- (proto.res Ok) (proto2.res Ok) (proto_ver1.res Ok) (proto_ver2.res Ok)
- (protoassert.res Ok) (protox.res Ok) (rcu3.res Ok) (regexp.res Ok)
- (regexp2.res Ok) (regexp3.res Ok)
- (remstruct.res
-  (Pb
-   "INCORRECT:not same number of entities (func, decl, ...)\n    diff (result(<) vs expected_result(>)) = \n    @@ -1,10 +1,3 @@\n    -\n    -      .ack    = mpuio_ack_irq,\n    -      .mask   = mpuio_mask_irq,\n    -      .unmask = mpuio_unmask_irq\n    -\n    -  .b = 15,\n    -\n     int hello ( String input )\n     {\n       String input = input.lowercase();\n"))
- (replace_typedef.res Ok) (reserved.res Ok) (retmacro.res Ok) (rets.res Ok)
- (return.res Ok) (return_implicit.res Ok) (retval.res Ok) (same_expr.res Ok)
- (scope_problem.res
-  (Pb
-   "INCORRECT:diff token: } VS a\nFile <COCCIOUTPUTFILE>, line 5, column 2,  charpos = 43\n    around = '}', whole content =   }\nFile \"tests/scope_problem.res\", line 7, column 4,  charpos = 49\n    around = 'a', whole content =     a = 2;\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -1,7 +1,10 @@\n     void main(int i) {\n     \n    +  \n    +\n       if(1) {\n         int a;\n    +    a = 2;\n       }\n     \n     \n"))
- (serio.res
-  (Pb
-   "INCORRECT:diff token: init_MUTEX VS mutex_init\nFile \"tests/serio.c\", line 7, column 1,  charpos = 130\n    around = 'init_MUTEX', whole content = \tinit_MUTEX(&serio->drv_sem);\nFile \"tests/serio.res\", line 7, column 1,  charpos = 130\n    around = 'mutex_init', whole content = \tmutex_init(&serio->new_lock);\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -4,5 +4,5 @@\n     \n     static void serio_init_port(struct serio *serio)\n     {\n    -\tinit_MUTEX(&serio->drv_sem);\n    +\tmutex_init(&serio->new_lock);\n     }\n"))
- (shared_brace.res Ok) (signed.res Ok) (sis.res Ok) (sizeof.res Ok)
- (sizeof_julia.res Ok) (sizestar.res Ok) (skip.res Ok) (sp.res Ok)
- (spaces.res Ok) (spl.res Ok)
- (static.res (Pb "PROBLEM\n   exn = Common.Impossible\n")) (stm1.res Ok)
- (stm10.res Ok) (stm10_ver1.res Ok) (stm2.res Ok) (stm3.res Ok) (stm4.res Ok)
- (stm5.res Ok) (stm6.res Ok) (stm7.res Ok) (stm8.res Ok) (stmt.res Ok)
- (strangeorder.res Ok) (string.res Ok) (struct.res Ok)
- (struct_metavar.res Ok) (struct_typedef.res Ok) (structfoo.res Ok)
- (substruct.res Ok) (sw.res Ok) (switch.res Ok) (switchdecl.res Ok)
- (td.res Ok) (test0.res Ok) (test1.res Ok) (test10.res Ok)
- (test10_ver1.res Ok) (test11.res Ok) (test11_ver1.res Ok) (test12.res Ok)
- (test2.res Ok) (test3.res Ok) (test4.res Ok) (test5.res Ok)
- (test5_ver1.res Ok) (test6.res Ok) (test7.res Ok) (test8.res Ok)
- (test9.res Ok) (test_s.res Ok) (test_unsigned_meta.res Ok)
- (three_types.res Ok) (threea.res Ok) (top.res Ok) (topdec.res Ok)
- (topdec_ver1.res Ok) (topdec_ver2.res Ok) (toplevel_macrostmt.res Ok)
- (toplevel_struct.res Ok) (tup.res Ok) (twoproto.res Ok) (ty.res Ok)
- (ty1.res Ok) (ty_tyexp.res Ok) (tydisj.res Ok) (tyex.res Ok) (type.res Ok)
- (type1.res Ok) (type_annotated.res Ok) (type_ver1.res Ok)
- (type_ver2.res
-  (Pb
-   "INCORRECT:PB parsing only in generated-file\n    diff (result(<) vs expected_result(>)) = \n    @@ -1,5 +1,5 @@\n     int foo() {\n    -  int[10] *x;\n    +  int *x[10];\n       return 0;\n     }\n     \n"))
- (typedef.res Ok)
- (typedef3.res
-  (Pb
-   "INCORRECT:diff token: link VS p_dev\nFile <COCCIOUTPUTFILE>, line 7, column 29,  charpos = 137\n    around = 'link', whole content = \tunsigned int iobase = info->link.io.BasePort1;\nFile \"tests/typedef3.res\", line 7, column 29,  charpos = 137\n    around = 'p_dev', whole content = \tunsigned int iobase = info->p_dev->io.BasePort1;\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -4,7 +4,7 @@\n     \n     static void should_work(foo *info)\n     {\n    -\tunsigned int iobase = info->link.io.BasePort1;\n    +\tunsigned int iobase = info->p_dev->io.BasePort1;\n     }\n     \n     static void does_work(struct bluecard_info_t *info)\n"))
- (typedef_double.res Ok)
- (typeof.res
-  (Pb
-   "INCORRECT:diff token: x VS sizeof\nFile <COCCIOUTPUTFILE>, line 3, column 4,  charpos = 26\n    around = 'x', whole content =   f(x);\nFile \"tests/typeof.res\", line 3, column 4,  charpos = 26\n    around = 'sizeof', whole content =   f(sizeof(struct foo));\n\n    diff (result(<) vs expected_result(>)) = \n    @@ -1,4 +1,4 @@\n     int main() {\n       int x;\n    -  f(x);\n    +  f(sizeof(struct foo));\n     }\n"))
- (useless_cast.res Ok) (varargs.res Ok) (video1bis.res Ok) (void.res Ok)
- (vpos.res Ok) (whitespace.res Ok) (wierd_argument.res Ok)
- (wierdinit.res
-  (Pb
-   "seems incorrect, but only because of code that was not parsablediff token: dev_link_t VS struct\nFile \"tests/wierdinit.c\", line 4, column 1,  charpos = 27\n    around = 'dev_link_t', whole content = \tdev_link_t *link;\nFile \"tests/wierdinit.res\", line 4, column 1,  charpos = 27\n    around = 'struct', whole content = \tstruct pcmcia_device *link;\n"))
- (ws2.res Ok) (xfield.res Ok) (y2.res Ok) (zero.res Ok))
\ No newline at end of file
index 7323996..8047244 100644 (file)
@@ -5,6 +5,6 @@ expression E;
 
 struct i2c_client I = {
 -      .name = E,
-...
-+      .dev = { .name = E, },
+       ...,
++      .dev = { .name = E, }
 };
diff --git a/tests/list_test.c b/tests/list_test.c
new file mode 100644 (file)
index 0000000..0078edb
--- /dev/null
@@ -0,0 +1,153 @@
+int main () {
+  f(a);
+  g(a,b);
+  h(x,a,y,b,z);
+  h(a,y,b,z);
+  h(x,a,b,z);
+  h(x,a,y,b);
+  h(a,b,z);
+  h(x,a,b);
+  h(a,b);
+}
+
+int f(int a) { return; }
+
+int g(int a,int b) { return; }
+
+int h(int x, int a, int y, int b, int z) { return; }
+
+int h(int a, int y, int b, int z) { return; }
+
+int h(int x, int a, int b, int z) { return; }
+
+int h(int x, int a, int y, int b) { return; }
+
+int h(int a, int b, int z) { return; }
+
+int h(int x, int a, int b) { return; }
+
+int h(int a, int b) { return; }
+
+int f[] = {
+  a
+ };
+
+int g[] = {
+  a,
+  b
+ };
+
+int h[] = { x, a, y, b, z };
+
+int h[] = { a, y, b, z, };
+
+int h[] = { x, a, b, z };
+
+int h[] = { x, a, y, b, };
+
+int h[] = { a, b, z };
+
+int h[] = { x, a, b, };
+
+int h[] = { a, b };
+
+int i[] = { x, a, y, b, z };
+
+int i[] = { a, y, b, z, };
+
+int i[] = { x, a, b, z };
+
+int i[] = { x, a, y, b, };
+
+int i[] = { a, b, z };
+
+int i[] = { x, a, b, };
+
+int i[] = { a, b };
+
+struct f {
+ int a;
+};
+
+struct g {
+  int a;
+  int b;
+};
+
+struct h {
+  int x;
+  int a;
+  int y;
+  int b;
+  int z;
+ };
+
+struct h {
+  int a;
+  int y;
+  int b;
+  int z;
+ };
+
+struct h {
+  int x;
+  int a;
+  int b;
+  int z;
+ };
+
+struct h {
+  int x;
+  int a;
+  int y;
+  int b;
+ };
+
+struct h {
+  int a;
+  int b;
+  int z;
+ };
+
+struct h {
+  int x;
+  int a;
+  int b;
+ };
+
+struct h {
+  int a;
+  int b;
+ };
+
+enum f { a };
+
+enum g { a, b };
+
+enum h { x, a, y, b, z, };
+enum h { a, y, b, z };
+enum h { x, a, b, z, };
+enum h { x, a, y, b };
+enum h { a, b, z, };
+enum h { x, a, b };
+enum h { a, b, };
+
+enum i { x, a, y, b, z, };
+enum i { a, y, b, z };
+enum i { x, a, b, z, };
+enum i { x, a, y, b, };
+enum i { a, b, z, };
+enum i { x, a, b, };
+enum i { a, b, };
+
+#define f(a) 3
+
+#define g(a,b) 3
+
+#define h(x,a,y,b,z) 3
+#define h(a,y,b,z) 3
+#define h(x,a,b,z) 3
+#define h(x,a,y,b) 3
+#define h(a,b,z) 3
+#define h(x,a,b) 3
+#define h(a,b) 3
diff --git a/tests/list_test.cocci b/tests/list_test.cocci
new file mode 100644 (file)
index 0000000..fcae473
--- /dev/null
@@ -0,0 +1,166 @@
+@@
+@@
+
+f(
+- a
+ )
+
+@@
+@@
+
+g(
+- a,
+  b
+ )
+
+@@
+@@
+
+h(
+  ...,
+- a,
+  ...,
+  b,
+  ...
+ )
+
+@@
+@@
+
+int f(
+- int a
+ ) { ... }
+
+@@
+@@
+
+int g(
+- int a,
+  int b
+ ) { ... }
+
+@@
+@@
+
+int h(
+  ...,
+- int a,
+  ...,
+  int b,
+  ...
+ ) { ... }
+
+@@
+@@
+
+int f[] = {
+- a
+ };
+
+@@
+@@
+
+int g[] = {
+- a,
+  b
+ };
+
+@@
+@@
+
+int h[] = {
+  ...,
+- a,
+  ...,
+  b,
+  ...,
+ };
+
+@@
+@@
+
+int i[] = {
+  ...,
+  a,
+  ...,
+- b
+ };
+
+@@
+@@
+
+struct f {
+- int a;
++ int b;
+ };
+
+@@
+@@
+
+struct g {
+- int a;
+  int b;
+ };
+
+@@
+@@
+
+struct h {
+  ...
+- int a;
+  ...
+  int b;
+  ...
+ };
+
+@@
+@@
+
+enum f {
+- a
++ b
+ };
+
+@@
+@@
+
+enum g {
+- a,
+  b
+ };
+
+@@
+@@
+
+enum h {
+  ...,
+- a,
+  ...,
+  b,
+  ...
+ };
+
+@@
+@@
+
+enum i {
+  ...,
+  a,
+  ...,
+- b
+ };
+
+@@
+@@
+
+-#define f(a) 3
+
+@@
+@@
+
+- #define g(a,b) 3
+
+@@
+@@
+
+- #define h(...,a,...,b,...) 3
diff --git a/tests/list_test.res b/tests/list_test.res
new file mode 100644 (file)
index 0000000..732882c
--- /dev/null
@@ -0,0 +1,131 @@
+int main () {
+  f();
+  g(b);
+  h(x,y,b,z);
+  h(y,b,z);
+  h(x,b,z);
+  h(x,y,b);
+  h(b,z);
+  h(x,b);
+  h(b);
+}
+
+int f() { return; }
+
+int g(int b) { return; }
+
+int h(int x, int y, int b, int z) { return; }
+
+int h(int y, int b, int z) { return; }
+
+int h(int x, int b, int z) { return; }
+
+int h(int x, int y, int b) { return; }
+
+int h(int b, int z) { return; }
+
+int h(int x, int b) { return; }
+
+int h(int b) { return; }
+
+int f[] = {
+ };
+
+int g[] = {
+  b
+ };
+
+int h[] = { x, y, b, z };
+
+int h[] = { y, b, z, };
+
+int h[] = { x, b, z };
+
+int h[] = { x, y, b, };
+
+int h[] = { b, z };
+
+int h[] = { x, b, };
+
+int h[] = { b };
+
+int i[] = { x, a, y, b, z };
+
+int i[] = { a, y, b, z, };
+
+int i[] = { x, a, b, z };
+
+int i[] = { x, a, y, };
+
+int i[] = { a, b, z };
+
+int i[] = { x, a, };
+
+int i[] = { a, };
+
+struct f {
+ int b;
+};
+
+struct g {
+  int b;
+};
+
+struct h {
+  int x;
+  int y;
+  int b;
+  int z;
+ };
+
+struct h {
+  int y;
+  int b;
+  int z;
+ };
+
+struct h {
+  int x;
+  int b;
+  int z;
+ };
+
+struct h {
+  int x;
+  int y;
+  int b;
+ };
+
+struct h {
+  int b;
+  int z;
+ };
+
+struct h {
+  int x;
+  int b;
+ };
+
+struct h {
+  int b;
+ };
+
+enum f { b };
+
+enum g { b };
+
+enum h { x, y, b, z, };
+enum h { y, b, z };
+enum h { x, b, z, };
+enum h { x, y, b };
+enum h { b, z, };
+enum h { x, b };
+enum h { b, };
+
+enum i { x, a, y, b, z, };
+enum i { a, y, b, z };
+enum i { x, a, b, z, };
+enum i { x, a, y, };
+enum i { a, b, z, };
+enum i { x, a, };
+enum i { a, };
diff --git a/tests/minenum.c b/tests/minenum.c
new file mode 100644 (file)
index 0000000..90c783c
--- /dev/null
@@ -0,0 +1 @@
+enum h { x, a, z, q, b };
diff --git a/tests/minenum.cocci b/tests/minenum.cocci
new file mode 100644 (file)
index 0000000..f2b9ed5
--- /dev/null
@@ -0,0 +1,12 @@
+@@
+@@
+
+enum h {
+  ...,
+- a,
+- z,
++ qq,
+  ...,
+  b,
+  ...
+ };
diff --git a/tests/minenum.res b/tests/minenum.res
new file mode 100644 (file)
index 0000000..3e158a8
--- /dev/null
@@ -0,0 +1 @@
+enum h { x, qq,  q, b };
diff --git a/tests/minfn.c b/tests/minfn.c
new file mode 100644 (file)
index 0000000..96f6ed0
--- /dev/null
@@ -0,0 +1,13 @@
+int main () { return first; }
+
+int f () { return second; }
+int f () { return second; }
+
+int main () { return third; }
+
+#define x 3
+#define x 3
+#define x 3
+#define x 3
+
+int main () { return fifth; }
diff --git a/tests/minfn.cocci b/tests/minfn.cocci
new file mode 100644 (file)
index 0000000..fd8e01f
--- /dev/null
@@ -0,0 +1,9 @@
+@@
+@@
+
+- f(...) { ... }
+
+@@
+@@
+
+- #define x 3
diff --git a/tests/minfn.res b/tests/minfn.res
new file mode 100644 (file)
index 0000000..a2e412d
--- /dev/null
@@ -0,0 +1,5 @@
+int main () { return first; }
+
+int main () { return third; }
+
+int main () { return fifth; }
index 69afb76..becc1e4 100644 (file)
@@ -2,7 +2,7 @@
 @@
 
 struct foo x = {
-- ...
+- ...,
  .xxx= 12,
 - ...
 };
index d895465..91e7c61 100644 (file)
@@ -1,6 +1,28 @@
+# Copyright 2010, INRIA, University of Copenhagen
+# Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+# Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+# Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+# This file is part of Coccinelle.
+#
+# Coccinelle is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, according to version 2 of the License.
+#
+# Coccinelle is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+#
+# The authors reserve the right to distribute this or future versions of
+# Coccinelle under other licenses.
+
+
 -include ../Makefile.config
 
-PROGS=spp gitgrep split_patch extract_c_and_res #generate_dependencies
+PROGS=spp gitgrep splitpatch extract_c_and_res #generate_dependencies
 
 all: $(SUBDIRS) $(PROGS)
 
@@ -47,8 +69,8 @@ spp: spp.ml
        $(OCAMLC) -o $@ $(SYSLIBS) $(INCLUDE) $(LIBS)  $+
 #      ocamlc -I ../commons/ -o spp str.cma unix.cma bigarray.cma  ../commons/common.cmo spp.ml
 
-split_patch: split_patch.cmo
-       $(OCAMLC) -o $@ $(SYSLIBS) $(INCLUDE) $(LIBS)  $+
+splitpatch: splitpatch.cmo
+       $(OCAMLC) -o $@ $(SYSLIBS) $(INCLUDE) $+
 
 extract_c_and_res: extract_c_and_res.cmo
        $(OCAMLC) -o $@ $(SYSLIBS) $(INCLUDE) $(LIBS)  $+
@@ -74,7 +96,7 @@ beforedepend::
 depend:: beforedepend
        ocamldep $(INCLUDE) *.mli *.ml    > .depend
 
-distclean::
+distclean:: clean
        rm -f .depend
 
 -include .depend
diff --git a/tools/README.splitpatch b/tools/README.splitpatch
new file mode 100644 (file)
index 0000000..f27ff06
--- /dev/null
@@ -0,0 +1,118 @@
+Splitpatch is a program for splitting a set of diffs found in a single
+file according to the maintainers and then submitting the resulting
+patches.  Splitpatch does not require that the diffs were produced using
+Coccinelle.  Nevertheless, it is particularly useful when working with
+semantic patches, as these typically have an impact across the entire
+source code.  Splitpatch is completely Linux dependent, and relies on the
+Linux tools checkpatch.pl and get_maintainers.pl.  Splitpatch also relies
+on git send-email.  We have had to modify this program, to extract To
+information from each patch.  This modified version is currently called
+cocci-send-email.perl, and is installed with splitpatch.
+
+1. Configuring splitpatch
+
+Splitpatch needs some information about the environment, which it looks for
+in the file .splitpatch in your home directory.  An example
+configuration file, including the complete set of options, is as follows:
+
+from = Julia Lawall <julia@diku.dk>
+git_tree = /var/linuxes/linux-next
+git_options = --cc=kernel-janitors@vger.kernel.org --suppress-cc=self
+prefix_before = /var/linuxes/linux-next
+prefix_after = /var/julia/linuxcopy
+
+All of these options, and indeed the .splitpatch file itself, are
+optional, in at least some situations.  These are described in more detail
+as follows:
+
+* from: Your patches will appear to come from this address.  Splitpatch
+  makes three attempts to find the from address.  These are, in order of
+  increasing priority: 1) The first Signed-off-by in the message file (the
+  message file is defined below), 2) The from information in .git/config if
+  the current directory or an ancestor of the current directory has a .git
+  subdirectory, 3) The from information in ~/.splitpatch.
+
+* git_tree: This is the directory containing the root of your Linux
+  distribution.  This directory is expected to have a scripts subdirectory
+  in which checkpatch.pl and get_maintainers.pl are found.  Splitpatch
+  makes two attempts to find this information.  These are, in order of
+  increasing priority: 1) The ancestor directory having .git as a
+  subdirectory, 2) The git_tree information in ~/.splitpatch
+
+* git_options: These are any options that you would always like to pass
+  along to git.  This is only useful if you use splitpatch from a directory
+  that is not part of your Linux source tree.  If splitpatch is used from
+  within the Linux source tree, the git options found in .git/config will
+  be used as well, regardless of whether or not some git_options are
+  provided in ~/.splitpatch
+
+* prefix_before, prefix_after: These are substrings to remove from the ---
+  and +++ lines of each diff.  These options are probably not useful if you
+  are managing your work using git.
+
+Arguments for git send-email (cocci-send-email.perl) can also be passed on
+the splitpatch command line.  Anything that starts with - on the splitpatch
+command line is interpreted as an argument to git send-email
+(cocci-send-email.perl).  Finally, any further arguments can be passed to
+the generated command script (see send.cmd below).
+
+2.  Using splitpatch
+
+Beside any arguments for git send-email, the only argument to splitpatch is
+a file containing a sequence of diffs.  The diffs may be in any order and
+may be produced in any manner.  Each diff should start with the diff
+command, as generated by Coccinelle or by git diff.  The file should not
+contain diffstat information, as that will be computed.  The file may have
+any name, but we assume that it is called send.  If desired, this file name
+may have an extension, such as send.txt.
+
+Given the file name send, splitpatch looks for a file send.msg in the same
+directory (send.txt would also cause splitpatch to look for send.msg).  The
+file send.msg should contain a subject line (which must be a single line),
+an optional cover letter, and a commit log message.  The sections should be
+separated by ---.  An example of a .msg file is as follows:
+
+Eliminate memory leak
+
+---
+
+These patches eliminate memory leaks in the uses of various functions.
+
+---
+
+Allocated memory should be freed before dropping pointers to it.
+
+Signed-off-by: Julia Lawall <julia@diku.dk>
+
+---
+
+If send.msg has three sections, the first is the subject, the second is the
+cover letter, and the third is the commit log message.  If send.msg has
+only two sections, the first is the subject and the second is the commit
+log message.  In each section the first and last blank line, if any, is
+dropped.
+
+Running splitpatch send generates a number of files.  These are send.cmd,
+send.cover (if a cover letter was specified), and sendn for various values
+of n starting with 1.
+
+* send.cmd is the command line to use to send the patches.  Patches are
+  sent as threaded messages if a cover letter is specified and unthreaded
+  messages if no cover letter is specified.
+
+* send.cover contains the cover letter in mailbox format.  The destination
+  of the cover letter is the intersection of the destinations of all of the
+  patches.  This will normally be at least linux-kernel@vger.kernel.org.
+
+* send1 ... sendn contains the n patches.  Patches include the subject,
+  commit log message, diffstat information, and the diff itself.  The
+  destination of each patch is determined using get_maintainers.pl.  Each
+  patch is checked using checkpatch.pl.  This may take a little time.
+
+3.  Miscellaneous
+
+Often, it may be useful to specialize the commit log messages of the
+individual patches in some way.  The sendn files may therefore be edited as
+needed.  Rerunning splitpatch will, however, overwrite the generated sendn
+files.  Indeed, there is no guarantee that the patches will continue to be
+distributed among the sendn files in the same way.
index 1c91280..865e0a1 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* The following finds out for each file, how it does deallocation for each
 allocator *)
 
index 08de991..6b73452 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 let drop_spaces s =
   String.concat "" (Str.split (Str.regexp "[ ]+") s)
 
diff --git a/tools/cocci-send-email.perl b/tools/cocci-send-email.perl
new file mode 100644 (file)
index 0000000..3f4605c
--- /dev/null
@@ -0,0 +1,1383 @@
+#!/usr/bin/perl -w
+#
+# Copyright 2002,2005 Greg Kroah-Hartman <greg@kroah.com>
+# Copyright 2005 Ryan Anderson <ryan@michonline.com>
+#
+# GPL v2 (See COPYING)
+#
+# Added the --auto-to option, to get To information from an mbox
+#   (Julia Lawall <julia@diku.dk>)
+# Ported to support git "mbox" format files by Ryan Anderson <ryan@michonline.com>
+#
+# Sends a collection of emails to the given email addresses, disturbingly fast.
+#
+# Supports two formats:
+# 1. mbox format files (ignoring most headers and MIME formatting - this is designed for sending patches)
+# 2. The original format support by Greg's script:
+#    first line of the message is who to CC,
+#    and second line is the subject of the message.
+#
+
+use strict;
+use warnings;
+use Term::ReadLine;
+use Getopt::Long;
+use Text::ParseWords;
+use Data::Dumper;
+use Term::ANSIColor;
+use File::Temp qw/ tempdir tempfile /;
+use Error qw(:try);
+use Git;
+
+Getopt::Long::Configure qw/ pass_through /;
+
+package FakeTerm;
+sub new {
+       my ($class, $reason) = @_;
+       return bless \$reason, shift;
+}
+sub readline {
+       my $self = shift;
+       die "Cannot use readline on FakeTerm: $$self";
+}
+package main;
+
+
+sub usage {
+       print <<EOT;
+git send-email [options] <file | directory | rev-list options >
+
+  Composing:
+    --from                  <str>  * Email From:
+    --[no-]to               <str>  * Email To:
+    --[no-]cc               <str>  * Email Cc:
+    --[no-]bcc              <str>  * Email Bcc:
+    --subject               <str>  * Email "Subject:"
+    --in-reply-to           <str>  * Email "In-Reply-To:"
+    --annotate                     * Review each patch that will be sent in an editor.
+    --compose                      * Open an editor for introduction.
+    --8bit-encoding         <str>  * Encoding to assume 8bit mails if undeclared
+
+  Sending:
+    --envelope-sender       <str>  * Email envelope sender.
+    --smtp-server       <str:int>  * Outgoing SMTP server to use. The port
+                                     is optional. Default 'localhost'.
+    --smtp-server-port      <int>  * Outgoing SMTP server port.
+    --smtp-user             <str>  * Username for SMTP-AUTH.
+    --smtp-pass             <str>  * Password for SMTP-AUTH; not necessary.
+    --smtp-encryption       <str>  * tls or ssl; anything else disables.
+    --smtp-ssl                     * Deprecated. Use '--smtp-encryption ssl'.
+    --smtp-domain           <str>  * The domain name sent to HELO/EHLO handshake
+    --smtp-debug            <0|1>  * Disable, enable Net::SMTP debug.
+
+  Automating:
+    --identity              <str>  * Use the sendemail.<id> options.
+    --cc-cmd                <str>  * Email Cc: via `<str> \$patch_path`
+    --suppress-cc           <str>  * author, self, sob, cc, cccmd, body, bodycc, all.
+    --[no-]signed-off-by-cc        * Send to Signed-off-by: addresses. Default on.
+    --[no-]suppress-from           * Send to self. Default off.
+    --[no-]chain-reply-to          * Chain In-Reply-To: fields. Default off.
+    --[no-]thread                  * Use In-Reply-To: field. Default on.
+
+  Administering:
+    --confirm               <str>  * Confirm recipients before sending;
+                                     auto, cc, compose, always, or never.
+    --quiet                        * Output one line of info per email.
+    --dry-run                      * Don't actually send the emails.
+    --[no-]validate                * Perform patch sanity checks. Default on.
+    --[no-]format-patch            * understand any non optional arguments as
+                                     `git format-patch` ones.
+
+EOT
+       exit(1);
+}
+
+# most mail servers generate the Date: header, but not all...
+sub format_2822_time {
+       my ($time) = @_;
+       my @localtm = localtime($time);
+       my @gmttm = gmtime($time);
+       my $localmin = $localtm[1] + $localtm[2] * 60;
+       my $gmtmin = $gmttm[1] + $gmttm[2] * 60;
+       if ($localtm[0] != $gmttm[0]) {
+               die "local zone differs from GMT by a non-minute interval\n";
+       }
+       if ((($gmttm[6] + 1) % 7) == $localtm[6]) {
+               $localmin += 1440;
+       } elsif ((($gmttm[6] - 1) % 7) == $localtm[6]) {
+               $localmin -= 1440;
+       } elsif ($gmttm[6] != $localtm[6]) {
+               die "local time offset greater than or equal to 24 hours\n";
+       }
+       my $offset = $localmin - $gmtmin;
+       my $offhour = $offset / 60;
+       my $offmin = abs($offset % 60);
+       if (abs($offhour) >= 24) {
+               die ("local time offset greater than or equal to 24 hours\n");
+       }
+
+       return sprintf("%s, %2d %s %d %02d:%02d:%02d %s%02d%02d",
+                      qw(Sun Mon Tue Wed Thu Fri Sat)[$localtm[6]],
+                      $localtm[3],
+                      qw(Jan Feb Mar Apr May Jun
+                         Jul Aug Sep Oct Nov Dec)[$localtm[4]],
+                      $localtm[5]+1900,
+                      $localtm[2],
+                      $localtm[1],
+                      $localtm[0],
+                      ($offset >= 0) ? '+' : '-',
+                      abs($offhour),
+                      $offmin,
+                      );
+}
+
+my $have_email_valid = eval { require Email::Valid; 1 };
+my $have_mail_address = eval { require Mail::Address; 1 };
+my $smtp;
+my $auth;
+
+sub unique_email_list(@);
+sub cleanup_compose_files();
+
+# Variables we fill in automatically, or via prompting:
+my (@to,@msgto,$no_to,$auto_to,@cc,$no_cc,@initial_cc,@bcclist,$no_bcc,@xh,
+       $initial_reply_to,$initial_subject,@files,
+       $author,$sender,$smtp_authpass,$annotate,$compose,$time);
+
+my $envelope_sender;
+
+# Example reply to:
+#$initial_reply_to = ''; #<20050203173208.GA23964@foobar.com>';
+
+my $repo = eval { Git->repository() };
+my @repo = $repo ? ($repo) : ();
+my $term = eval {
+       $ENV{"GIT_SEND_EMAIL_NOTTY"}
+               ? new Term::ReadLine 'git-send-email', \*STDIN, \*STDOUT
+               : new Term::ReadLine 'git-send-email';
+};
+if ($@) {
+       $term = new FakeTerm "$@: going non-interactive";
+}
+
+# Behavior modification variables
+my ($quiet, $dry_run) = (0, 0);
+my $format_patch;
+my $compose_filename;
+
+# Handle interactive edition of files.
+my $multiedit;
+my $editor;
+
+sub do_edit {
+       if (!defined($editor)) {
+               $editor = Git::command_oneline('var', 'GIT_EDITOR');
+       }
+       if (defined($multiedit) && !$multiedit) {
+               map {
+                       system('sh', '-c', $editor.' "$@"', $editor, $_);
+                       if (($? & 127) || ($? >> 8)) {
+                               die("the editor exited uncleanly, aborting everything");
+                       }
+               } @_;
+       } else {
+               system('sh', '-c', $editor.' "$@"', $editor, @_);
+               if (($? & 127) || ($? >> 8)) {
+                       die("the editor exited uncleanly, aborting everything");
+               }
+       }
+}
+
+# Variables with corresponding config settings
+my ($thread, $chain_reply_to, $suppress_from, $signed_off_by_cc, $cc_cmd);
+my ($smtp_server, $smtp_server_port, $smtp_authuser, $smtp_encryption);
+my ($identity, $aliasfiletype, @alias_files, @smtp_host_parts, $smtp_domain);
+my ($validate, $confirm);
+my (@suppress_cc);
+my ($auto_8bit_encoding);
+
+my ($debug_net_smtp) = 0;              # Net::SMTP, see send_message()
+
+my $not_set_by_user = "true but not set by the user";
+
+my %config_bool_settings = (
+    "thread" => [\$thread, 1],
+    "chainreplyto" => [\$chain_reply_to, $not_set_by_user],
+    "suppressfrom" => [\$suppress_from, undef],
+    "signedoffbycc" => [\$signed_off_by_cc, undef],
+    "signedoffcc" => [\$signed_off_by_cc, undef],      # Deprecated
+    "validate" => [\$validate, 1],
+);
+
+my %config_settings = (
+    "smtpserver" => \$smtp_server,
+    "smtpserverport" => \$smtp_server_port,
+    "smtpuser" => \$smtp_authuser,
+    "smtppass" => \$smtp_authpass,
+       "smtpdomain" => \$smtp_domain,
+    "to" => \@to,
+    "cc" => \@initial_cc,
+    "cccmd" => \$cc_cmd,
+    "aliasfiletype" => \$aliasfiletype,
+    "bcc" => \@bcclist,
+    "aliasesfile" => \@alias_files,
+    "suppresscc" => \@suppress_cc,
+    "envelopesender" => \$envelope_sender,
+    "multiedit" => \$multiedit,
+    "confirm"   => \$confirm,
+    "from" => \$sender,
+    "assume8bitencoding" => \$auto_8bit_encoding,
+);
+
+# Help users prepare for 1.7.0
+sub chain_reply_to {
+       if (defined $chain_reply_to &&
+           $chain_reply_to eq $not_set_by_user) {
+               print STDERR
+                   "In git 1.7.0, the default has changed to --no-chain-reply-to\n" .
+                   "Set sendemail.chainreplyto configuration variable to true if\n" .
+                   "you want to keep --chain-reply-to as your default.\n";
+               $chain_reply_to = 0;
+       }
+       return $chain_reply_to;
+}
+
+# Handle Uncouth Termination
+sub signal_handler {
+
+       # Make text normal
+       print color("reset"), "\n";
+
+       # SMTP password masked
+       system "stty echo";
+
+       # tmp files from --compose
+       if (defined $compose_filename) {
+               if (-e $compose_filename) {
+                       print "'$compose_filename' contains an intermediate version of the email you were composing.\n";
+               }
+               if (-e ($compose_filename . ".final")) {
+                       print "'$compose_filename.final' contains the composed email.\n"
+               }
+       }
+
+       exit;
+};
+
+$SIG{TERM} = \&signal_handler;
+$SIG{INT}  = \&signal_handler;
+
+# Begin by accumulating all the variables (defined above), that we will end up
+# needing, first, from the command line:
+
+my $rc = GetOptions("sender|from=s" => \$sender,
+                    "in-reply-to=s" => \$initial_reply_to,
+                   "subject=s" => \$initial_subject,
+                   "to=s" => \@to,
+                   "no-to" => \$no_to,
+                   "auto-to" => \$auto_to,
+                   "cc=s" => \@initial_cc,
+                   "no-cc" => \$no_cc,
+                   "bcc=s" => \@bcclist,
+                   "no-bcc" => \$no_bcc,
+                   "chain-reply-to!" => \$chain_reply_to,
+                   "smtp-server=s" => \$smtp_server,
+                   "smtp-server-port=s" => \$smtp_server_port,
+                   "smtp-user=s" => \$smtp_authuser,
+                   "smtp-pass:s" => \$smtp_authpass,
+                   "smtp-ssl" => sub { $smtp_encryption = 'ssl' },
+                   "smtp-encryption=s" => \$smtp_encryption,
+                   "smtp-debug:i" => \$debug_net_smtp,
+                   "smtp-domain:s" => \$smtp_domain,
+                   "identity=s" => \$identity,
+                   "annotate" => \$annotate,
+                   "compose" => \$compose,
+                   "quiet" => \$quiet,
+                   "cc-cmd=s" => \$cc_cmd,
+                   "suppress-from!" => \$suppress_from,
+                   "suppress-cc=s" => \@suppress_cc,
+                   "signed-off-cc|signed-off-by-cc!" => \$signed_off_by_cc,
+                   "confirm=s" => \$confirm,
+                   "dry-run" => \$dry_run,
+                   "envelope-sender=s" => \$envelope_sender,
+                   "thread!" => \$thread,
+                   "validate!" => \$validate,
+                   "format-patch!" => \$format_patch,
+                   "8bit-encoding=s" => \$auto_8bit_encoding,
+        );
+
+unless ($rc) {
+    usage();
+}
+
+die "Cannot run git format-patch from outside a repository\n"
+       if $format_patch and not $repo;
+
+# Now, let's fill any that aren't set in with defaults:
+
+sub read_config {
+       my ($prefix) = @_;
+
+       foreach my $setting (keys %config_bool_settings) {
+               my $target = $config_bool_settings{$setting}->[0];
+               $$target = Git::config_bool(@repo, "$prefix.$setting") unless (defined $$target);
+       }
+
+       foreach my $setting (keys %config_settings) {
+               my $target = $config_settings{$setting};
+               next if $setting eq "to" and defined $no_to;
+               next if $setting eq "cc" and defined $no_cc;
+               next if $setting eq "bcc" and defined $no_bcc;
+               if (ref($target) eq "ARRAY") {
+                       unless (@$target) {
+                               my @values = Git::config(@repo, "$prefix.$setting");
+                               @$target = @values if (@values && defined $values[0]);
+                       }
+               }
+               else {
+                       $$target = Git::config(@repo, "$prefix.$setting") unless (defined $$target);
+               }
+       }
+
+       if (!defined $smtp_encryption) {
+               my $enc = Git::config(@repo, "$prefix.smtpencryption");
+               if (defined $enc) {
+                       $smtp_encryption = $enc;
+               } elsif (Git::config_bool(@repo, "$prefix.smtpssl")) {
+                       $smtp_encryption = 'ssl';
+               }
+       }
+}
+
+# read configuration from [sendemail "$identity"], fall back on [sendemail]
+$identity = Git::config(@repo, "sendemail.identity") unless (defined $identity);
+read_config("sendemail.$identity") if (defined $identity);
+read_config("sendemail");
+
+# fall back on builtin bool defaults
+foreach my $setting (values %config_bool_settings) {
+       ${$setting->[0]} = $setting->[1] unless (defined (${$setting->[0]}));
+}
+
+# 'default' encryption is none -- this only prevents a warning
+$smtp_encryption = '' unless (defined $smtp_encryption);
+
+# Set CC suppressions
+my(%suppress_cc);
+if (@suppress_cc) {
+       foreach my $entry (@suppress_cc) {
+               die "Unknown --suppress-cc field: '$entry'\n"
+                       unless $entry =~ /^(all|cccmd|cc|author|self|sob|body|bodycc)$/;
+               $suppress_cc{$entry} = 1;
+       }
+}
+
+if ($suppress_cc{'all'}) {
+       foreach my $entry (qw (cccmd cc author self sob body bodycc)) {
+               $suppress_cc{$entry} = 1;
+       }
+       delete $suppress_cc{'all'};
+}
+
+# If explicit old-style ones are specified, they trump --suppress-cc.
+$suppress_cc{'self'} = $suppress_from if defined $suppress_from;
+$suppress_cc{'sob'} = !$signed_off_by_cc if defined $signed_off_by_cc;
+
+if ($suppress_cc{'body'}) {
+       foreach my $entry (qw (sob bodycc)) {
+               $suppress_cc{$entry} = 1;
+       }
+       delete $suppress_cc{'body'};
+}
+
+# Set confirm's default value
+my $confirm_unconfigured = !defined $confirm;
+if ($confirm_unconfigured) {
+       $confirm = scalar %suppress_cc ? 'compose' : 'auto';
+};
+die "Unknown --confirm setting: '$confirm'\n"
+       unless $confirm =~ /^(?:auto|cc|compose|always|never)/;
+
+# Debugging, print out the suppressions.
+if (0) {
+       print "suppressions:\n";
+       foreach my $entry (keys %suppress_cc) {
+               printf "  %-5s -> $suppress_cc{$entry}\n", $entry;
+       }
+}
+
+my ($repoauthor, $repocommitter);
+($repoauthor) = Git::ident_person(@repo, 'author');
+($repocommitter) = Git::ident_person(@repo, 'committer');
+
+# Verify the user input
+
+foreach my $entry (@to) {
+       die "Comma in --to entry: $entry'\n" unless $entry !~ m/,/;
+}
+
+foreach my $entry (@initial_cc) {
+       die "Comma in --cc entry: $entry'\n" unless $entry !~ m/,/;
+}
+
+foreach my $entry (@bcclist) {
+       die "Comma in --bcclist entry: $entry'\n" unless $entry !~ m/,/;
+}
+
+sub parse_address_line {
+       if ($have_mail_address) {
+               return map { $_->format } Mail::Address->parse($_[0]);
+       } else {
+               return split_addrs($_[0]);
+       }
+}
+
+sub split_addrs {
+       return quotewords('\s*,\s*', 1, @_);
+}
+
+my %aliases;
+my %parse_alias = (
+       # multiline formats can be supported in the future
+       mutt => sub { my $fh = shift; while (<$fh>) {
+               if (/^\s*alias\s+(?:-group\s+\S+\s+)*(\S+)\s+(.*)$/) {
+                       my ($alias, $addr) = ($1, $2);
+                       $addr =~ s/#.*$//; # mutt allows # comments
+                        # commas delimit multiple addresses
+                       $aliases{$alias} = [ split_addrs($addr) ];
+               }}},
+       mailrc => sub { my $fh = shift; while (<$fh>) {
+               if (/^alias\s+(\S+)\s+(.*)$/) {
+                       # spaces delimit multiple addresses
+                       $aliases{$1} = [ quotewords('\s+', 0, $2) ];
+               }}},
+       pine => sub { my $fh = shift; my $f='\t[^\t]*';
+               for (my $x = ''; defined($x); $x = $_) {
+                       chomp $x;
+                       $x .= $1 while(defined($_ = <$fh>) && /^ +(.*)$/);
+                       $x =~ /^(\S+)$f\t\(?([^\t]+?)\)?(:?$f){0,2}$/ or next;
+                       $aliases{$1} = [ split_addrs($2) ];
+               }},
+       elm => sub  { my $fh = shift;
+                     while (<$fh>) {
+                         if (/^(\S+)\s+=\s+[^=]+=\s(\S+)/) {
+                             my ($alias, $addr) = ($1, $2);
+                              $aliases{$alias} = [ split_addrs($addr) ];
+                         }
+                     } },
+
+       gnus => sub { my $fh = shift; while (<$fh>) {
+               if (/\(define-mail-alias\s+"(\S+?)"\s+"(\S+?)"\)/) {
+                       $aliases{$1} = [ $2 ];
+               }}}
+);
+
+if (@alias_files and $aliasfiletype and defined $parse_alias{$aliasfiletype}) {
+       foreach my $file (@alias_files) {
+               open my $fh, '<', $file or die "opening $file: $!\n";
+               $parse_alias{$aliasfiletype}->($fh);
+               close $fh;
+       }
+}
+
+($sender) = expand_aliases($sender) if defined $sender;
+
+# returns 1 if the conflict must be solved using it as a format-patch argument
+sub check_file_rev_conflict($) {
+       return unless $repo;
+       my $f = shift;
+       try {
+               $repo->command('rev-parse', '--verify', '--quiet', $f);
+               if (defined($format_patch)) {
+                       return $format_patch;
+               }
+               die(<<EOF);
+File '$f' exists but it could also be the range of commits
+to produce patches for.  Please disambiguate by...
+
+    * Saying "./$f" if you mean a file; or
+    * Giving --format-patch option if you mean a range.
+EOF
+       } catch Git::Error::Command with {
+               return 0;
+       }
+}
+
+# Now that all the defaults are set, process the rest of the command line
+# arguments and collect up the files that need to be processed.
+my @rev_list_opts;
+while (defined(my $f = shift @ARGV)) {
+       if ($f eq "--") {
+               push @rev_list_opts, "--", @ARGV;
+               @ARGV = ();
+       } elsif (-d $f and !check_file_rev_conflict($f)) {
+               opendir(DH,$f)
+                       or die "Failed to opendir $f: $!";
+
+               push @files, grep { -f $_ } map { +$f . "/" . $_ }
+                               sort readdir(DH);
+               closedir(DH);
+       } elsif ((-f $f or -p $f) and !check_file_rev_conflict($f)) {
+               push @files, $f;
+       } else {
+               push @rev_list_opts, $f;
+       }
+}
+
+if (@rev_list_opts) {
+       die "Cannot run git format-patch from outside a repository\n"
+               unless $repo;
+       push @files, $repo->command('format-patch', '-o', tempdir(CLEANUP => 1), @rev_list_opts);
+}
+
+if ($validate) {
+       foreach my $f (@files) {
+               unless (-p $f) {
+                       my $error = validate_patch($f);
+                       $error and die "fatal: $f: $error\nwarning: no patches were sent\n";
+               }
+       }
+}
+
+if (@files) {
+       unless ($quiet) {
+               print $_,"\n" for (@files);
+       }
+} else {
+       print STDERR "\nNo patch files specified!\n\n";
+       usage();
+}
+
+sub get_patch_subject($) {
+       my $fn = shift;
+       open (my $fh, '<', $fn);
+       while (my $line = <$fh>) {
+               next unless ($line =~ /^Subject: (.*)$/);
+               close $fh;
+               return "GIT: $1\n";
+       }
+       close $fh;
+       die "No subject line in $fn ?";
+}
+
+if ($compose) {
+       # Note that this does not need to be secure, but we will make a small
+       # effort to have it be unique
+       $compose_filename = ($repo ?
+               tempfile(".gitsendemail.msg.XXXXXX", DIR => $repo->repo_path()) :
+               tempfile(".gitsendemail.msg.XXXXXX", DIR => "."))[1];
+       open(C,">",$compose_filename)
+               or die "Failed to open for writing $compose_filename: $!";
+
+
+       my $tpl_sender = $sender || $repoauthor || $repocommitter || '';
+       my $tpl_subject = $initial_subject || '';
+       my $tpl_reply_to = $initial_reply_to || '';
+
+       print C <<EOT;
+From $tpl_sender # This line is ignored.
+GIT: Lines beginning in "GIT:" will be removed.
+GIT: Consider including an overall diffstat or table of contents
+GIT: for the patch you are writing.
+GIT:
+GIT: Clear the body content if you don't wish to send a summary.
+From: $tpl_sender
+Subject: $tpl_subject
+In-Reply-To: $tpl_reply_to
+
+EOT
+       for my $f (@files) {
+               print C get_patch_subject($f);
+       }
+       close(C);
+
+       if ($annotate) {
+               do_edit($compose_filename, @files);
+       } else {
+               do_edit($compose_filename);
+       }
+
+       open(C2,">",$compose_filename . ".final")
+               or die "Failed to open $compose_filename.final : " . $!;
+
+       open(C,"<",$compose_filename)
+               or die "Failed to open $compose_filename : " . $!;
+
+       my $need_8bit_cte = file_has_nonascii($compose_filename);
+       my $in_body = 0;
+       my $summary_empty = 1;
+       while(<C>) {
+               next if m/^GIT:/;
+               if ($in_body) {
+                       $summary_empty = 0 unless (/^\n$/);
+               } elsif (/^\n$/) {
+                       $in_body = 1;
+                       if ($need_8bit_cte) {
+                               print C2 "MIME-Version: 1.0\n",
+                                        "Content-Type: text/plain; ",
+                                          "charset=UTF-8\n",
+                                        "Content-Transfer-Encoding: 8bit\n";
+                       }
+               } elsif (/^MIME-Version:/i) {
+                       $need_8bit_cte = 0;
+               } elsif (/^Subject:\s*(.+)\s*$/i) {
+                       $initial_subject = $1;
+                       my $subject = $initial_subject;
+                       $_ = "Subject: " .
+                               ($subject =~ /[^[:ascii:]]/ ?
+                                quote_rfc2047($subject) :
+                                $subject) .
+                               "\n";
+               } elsif (/^In-Reply-To:\s*(.+)\s*$/i) {
+                       $initial_reply_to = $1;
+                       next;
+               } elsif (/^From:\s*(.+)\s*$/i) {
+                       $sender = $1;
+                       next;
+               } elsif (/^(?:To|Cc|Bcc):/i) {
+                       print "To/Cc/Bcc fields are not interpreted yet, they have been ignored\n";
+                       next;
+               }
+               print C2 $_;
+       }
+       close(C);
+       close(C2);
+
+       if ($summary_empty) {
+               print "Summary email is empty, skipping it\n";
+               $compose = -1;
+       }
+} elsif ($annotate) {
+       do_edit(@files);
+}
+
+sub ask {
+       my ($prompt, %arg) = @_;
+       my $valid_re = $arg{valid_re};
+       my $default = $arg{default};
+       my $resp;
+       my $i = 0;
+       return defined $default ? $default : undef
+               unless defined $term->IN and defined fileno($term->IN) and
+                      defined $term->OUT and defined fileno($term->OUT);
+       while ($i++ < 10) {
+               $resp = $term->readline($prompt);
+               if (!defined $resp) { # EOF
+                       print "\n";
+                       return defined $default ? $default : undef;
+               }
+               if ($resp eq '' and defined $default) {
+                       return $default;
+               }
+               if (!defined $valid_re or $resp =~ /$valid_re/) {
+                       return $resp;
+               }
+       }
+       return undef;
+}
+
+my %broken_encoding;
+
+sub file_declares_8bit_cte($) {
+       my $fn = shift;
+       open (my $fh, '<', $fn);
+       while (my $line = <$fh>) {
+               last if ($line =~ /^$/);
+               return 1 if ($line =~ /^Content-Transfer-Encoding: .*8bit.*$/);
+       }
+       close $fh;
+       return 0;
+}
+
+foreach my $f (@files) {
+       next unless (body_or_subject_has_nonascii($f)
+                    && !file_declares_8bit_cte($f));
+       $broken_encoding{$f} = 1;
+}
+
+if (!defined $auto_8bit_encoding && scalar %broken_encoding) {
+       print "The following files are 8bit, but do not declare " .
+               "a Content-Transfer-Encoding.\n";
+       foreach my $f (sort keys %broken_encoding) {
+               print "    $f\n";
+       }
+       $auto_8bit_encoding = ask("Which 8bit encoding should I declare [UTF-8]? ",
+                                 default => "UTF-8");
+}
+
+my $prompting = 0;
+if (!defined $sender) {
+       $sender = $repoauthor || $repocommitter || '';
+       $sender = ask("Who should the emails appear to be from? [$sender] ",
+                     default => $sender);
+       print "Emails will be sent from: ", $sender, "\n";
+       $prompting++;
+}
+
+if (!@to && !$auto_to) {
+       my $to = ask("Who should the emails be sent to? ");
+       push @to, parse_address_line($to) if defined $to; # sanitized/validated later
+       $prompting++;
+}
+
+sub expand_aliases {
+       return map { expand_one_alias($_) } @_;
+}
+
+my %EXPANDED_ALIASES;
+sub expand_one_alias {
+       my $alias = shift;
+       if ($EXPANDED_ALIASES{$alias}) {
+               die "fatal: alias '$alias' expands to itself\n";
+       }
+       local $EXPANDED_ALIASES{$alias} = 1;
+       return $aliases{$alias} ? expand_aliases(@{$aliases{$alias}}) : $alias;
+}
+
+@to = expand_aliases(@to);
+@to = (map { sanitize_address($_) } @to);
+@initial_cc = expand_aliases(@initial_cc);
+@bcclist = expand_aliases(@bcclist);
+
+if ($thread && !defined $initial_reply_to && $prompting) {
+       $initial_reply_to = ask(
+               "Message-ID to be used as In-Reply-To for the first email? ");
+}
+if (defined $initial_reply_to) {
+       $initial_reply_to =~ s/^\s*<?//;
+       $initial_reply_to =~ s/>?\s*$//;
+       $initial_reply_to = "<$initial_reply_to>" if $initial_reply_to ne '';
+}
+
+if (!defined $smtp_server) {
+       foreach (qw( /usr/sbin/sendmail /usr/lib/sendmail )) {
+               if (-x $_) {
+                       $smtp_server = $_;
+                       last;
+               }
+       }
+       $smtp_server ||= 'localhost'; # could be 127.0.0.1, too... *shrug*
+}
+
+if ($compose && $compose > 0) {
+       @files = ($compose_filename . ".final", @files);
+}
+
+# Variables we set as part of the loop over files
+our ($message_id, %mail, $subject, $reply_to, $references, $message,
+       $needs_confirm, $message_num, $ask_default);
+
+sub extract_valid_address {
+       my $address = shift;
+       my $local_part_regexp = '[^<>"\s@]+';
+       my $domain_regexp = '[^.<>"\s@]+(?:\.[^.<>"\s@]+)+';
+
+       # check for a local address:
+       return $address if ($address =~ /^($local_part_regexp)$/);
+
+       $address =~ s/^\s*<(.*)>\s*$/$1/;
+       if ($have_email_valid) {
+               return scalar Email::Valid->address($address);
+       } else {
+               # less robust/correct than the monster regexp in Email::Valid,
+               # but still does a 99% job, and one less dependency
+               $address =~ /($local_part_regexp\@$domain_regexp)/;
+               return $1;
+       }
+}
+
+# Usually don't need to change anything below here.
+
+# we make a "fake" message id by taking the current number
+# of seconds since the beginning of Unix time and tacking on
+# a random number to the end, in case we are called quicker than
+# 1 second since the last time we were called.
+
+# We'll setup a template for the message id, using the "from" address:
+
+my ($message_id_stamp, $message_id_serial);
+sub make_message_id {
+       my $uniq;
+       if (!defined $message_id_stamp) {
+               $message_id_stamp = sprintf("%s-%s", time, $$);
+               $message_id_serial = 0;
+       }
+       $message_id_serial++;
+       $uniq = "$message_id_stamp-$message_id_serial";
+
+       my $du_part;
+       for ($sender, $repocommitter, $repoauthor) {
+               $du_part = extract_valid_address(sanitize_address($_));
+               last if (defined $du_part and $du_part ne '');
+       }
+       if (not defined $du_part or $du_part eq '') {
+               use Sys::Hostname qw();
+               $du_part = 'user@' . Sys::Hostname::hostname();
+       }
+       my $message_id_template = "<%s-git-send-email-%s>";
+       $message_id = sprintf($message_id_template, $uniq, $du_part);
+       #print "new message id = $message_id\n"; # Was useful for debugging
+}
+
+
+
+$time = time - scalar $#files;
+
+sub unquote_rfc2047 {
+       local ($_) = @_;
+       my $encoding;
+       if (s/=\?([^?]+)\?q\?(.*)\?=/$2/g) {
+               $encoding = $1;
+               s/_/ /g;
+               s/=([0-9A-F]{2})/chr(hex($1))/eg;
+       }
+       return wantarray ? ($_, $encoding) : $_;
+}
+
+sub quote_rfc2047 {
+       local $_ = shift;
+       my $encoding = shift || 'UTF-8';
+       s/([^-a-zA-Z0-9!*+\/])/sprintf("=%02X", ord($1))/eg;
+       s/(.*)/=\?$encoding\?q\?$1\?=/;
+       return $_;
+}
+
+sub is_rfc2047_quoted {
+       my $s = shift;
+       my $token = '[^][()<>@,;:"\/?.= \000-\037\177-\377]+';
+       my $encoded_text = '[!->@-~]+';
+       length($s) <= 75 &&
+       $s =~ m/^(?:"[[:ascii:]]*"|=\?$token\?$token\?$encoded_text\?=)$/o;
+}
+
+# use the simplest quoting being able to handle the recipient
+sub sanitize_address {
+       my ($recipient) = @_;
+       my ($recipient_name, $recipient_addr) = ($recipient =~ /^(.*?)\s*(<.*)/);
+
+       if (not $recipient_name) {
+               return "$recipient";
+       }
+
+       # if recipient_name is already quoted, do nothing
+       if (is_rfc2047_quoted($recipient_name)) {
+               return $recipient;
+       }
+
+       # rfc2047 is needed if a non-ascii char is included
+       if ($recipient_name =~ /[^[:ascii:]]/) {
+               $recipient_name =~ s/^"(.*)"$/$1/;
+               $recipient_name = quote_rfc2047($recipient_name);
+       }
+
+       # double quotes are needed if specials or CTLs are included
+       elsif ($recipient_name =~ /[][()<>@,;:\\".\000-\037\177]/) {
+               $recipient_name =~ s/(["\\\r])/\\$1/g;
+               $recipient_name = "\"$recipient_name\"";
+       }
+
+       return "$recipient_name $recipient_addr";
+
+}
+
+# Returns the local Fully Qualified Domain Name (FQDN) if available.
+#
+# Tightly configured MTAa require that a caller sends a real DNS
+# domain name that corresponds the IP address in the HELO/EHLO
+# handshake. This is used to verify the connection and prevent
+# spammers from trying to hide their identity. If the DNS and IP don't
+# match, the receiveing MTA may deny the connection.
+#
+# Here is a deny example of Net::SMTP with the default "localhost.localdomain"
+#
+# Net::SMTP=GLOB(0x267ec28)>>> EHLO localhost.localdomain
+# Net::SMTP=GLOB(0x267ec28)<<< 550 EHLO argument does not match calling host
+#
+# This maildomain*() code is based on ideas in Perl library Test::Reporter
+# /usr/share/perl5/Test/Reporter/Mail/Util.pm ==> sub _maildomain ()
+
+sub valid_fqdn {
+       my $domain = shift;
+       return !($^O eq 'darwin' && $domain =~ /\.local$/) && $domain =~ /\./;
+}
+
+sub maildomain_net {
+       my $maildomain;
+
+       if (eval { require Net::Domain; 1 }) {
+               my $domain = Net::Domain::domainname();
+               $maildomain = $domain if valid_fqdn($domain);
+       }
+
+       return $maildomain;
+}
+
+sub maildomain_mta {
+       my $maildomain;
+
+       if (eval { require Net::SMTP; 1 }) {
+               for my $host (qw(mailhost localhost)) {
+                       my $smtp = Net::SMTP->new($host);
+                       if (defined $smtp) {
+                               my $domain = $smtp->domain;
+                               $smtp->quit;
+
+                               $maildomain = $domain if valid_fqdn($domain);
+
+                               last if $maildomain;
+                       }
+               }
+       }
+
+       return $maildomain;
+}
+
+sub maildomain {
+       return maildomain_net() || maildomain_mta() || 'localhost.localdomain';
+}
+
+# Returns 1 if the message was sent, and 0 otherwise.
+# In actuality, the whole program dies when there
+# is an error sending a message.
+
+sub send_message {
+       my @recipients = unique_email_list(@to,@msgto);
+       @cc = (grep { my $cc = extract_valid_address($_);
+                     not grep { $cc eq $_ } @recipients
+                   }
+              map { sanitize_address($_) }
+              @cc);
+       my $to = join (",\n\t", @recipients);
+       @recipients = unique_email_list(@recipients,@cc,@bcclist);
+       @recipients = (map { extract_valid_address($_) } @recipients);
+       my $date = format_2822_time($time++);
+       my $gitversion = '@@GIT_VERSION@@';
+       if ($gitversion =~ m/..GIT_VERSION../) {
+           $gitversion = Git::version();
+       }
+
+       my $cc = join(",\n\t", unique_email_list(@cc));
+       my $ccline = "";
+       if ($cc ne '') {
+               $ccline = "\nCc: $cc";
+       }
+       my $sanitized_sender = sanitize_address($sender);
+       make_message_id() unless defined($message_id);
+
+       my $header = "From: $sanitized_sender
+To: $to${ccline}
+Subject: $subject
+Date: $date
+Message-Id: $message_id
+X-Mailer: git-send-email $gitversion
+";
+       if ($reply_to) {
+
+               $header .= "In-Reply-To: $reply_to\n";
+               $header .= "References: $references\n";
+       }
+       if (@xh) {
+               $header .= join("\n", @xh) . "\n";
+       }
+
+       my @sendmail_parameters = ('-i', @recipients);
+       my $raw_from = $sanitized_sender;
+       if (defined $envelope_sender && $envelope_sender ne "auto") {
+               $raw_from = $envelope_sender;
+       }
+       $raw_from = extract_valid_address($raw_from);
+       unshift (@sendmail_parameters,
+                       '-f', $raw_from) if(defined $envelope_sender);
+
+       if ($needs_confirm && !$dry_run) {
+               print "\n$header\n";
+               if ($needs_confirm eq "inform") {
+                       $confirm_unconfigured = 0; # squelch this message for the rest of this run
+                       $ask_default = "y"; # assume yes on EOF since user hasn't explicitly asked for confirmation
+                       print "    The Cc list above has been expanded by additional\n";
+                       print "    addresses found in the patch commit message. By default\n";
+                       print "    send-email prompts before sending whenever this occurs.\n";
+                       print "    This behavior is controlled by the sendemail.confirm\n";
+                       print "    configuration setting.\n";
+                       print "\n";
+                       print "    For additional information, run 'git send-email --help'.\n";
+                       print "    To retain the current behavior, but squelch this message,\n";
+                       print "    run 'git config --global sendemail.confirm auto'.\n\n";
+               }
+               $_ = ask("Send this email? ([y]es|[n]o|[q]uit|[a]ll): ",
+                        valid_re => qr/^(?:yes|y|no|n|quit|q|all|a)/i,
+                        default => $ask_default);
+               die "Send this email reply required" unless defined $_;
+               if (/^n/i) {
+                       return 0;
+               } elsif (/^q/i) {
+                       cleanup_compose_files();
+                       exit(0);
+               } elsif (/^a/i) {
+                       $confirm = 'never';
+               }
+       }
+
+       if ($dry_run) {
+               # We don't want to send the email.
+       } elsif ($smtp_server =~ m#^/#) {
+               my $pid = open my $sm, '|-';
+               defined $pid or die $!;
+               if (!$pid) {
+                       exec($smtp_server, @sendmail_parameters) or die $!;
+               }
+               print $sm "$header\n$message";
+               close $sm or die $?;
+       } else {
+
+               if (!defined $smtp_server) {
+                       die "The required SMTP server is not properly defined."
+               }
+
+               if ($smtp_encryption eq 'ssl') {
+                       $smtp_server_port ||= 465; # ssmtp
+                       require Net::SMTP::SSL;
+                       $smtp_domain ||= maildomain();
+                       $smtp ||= Net::SMTP::SSL->new($smtp_server,
+                                                     Hello => $smtp_domain,
+                                                     Port => $smtp_server_port);
+               }
+               else {
+                       require Net::SMTP;
+                       $smtp_domain ||= maildomain();
+                       $smtp ||= Net::SMTP->new((defined $smtp_server_port)
+                                                ? "$smtp_server:$smtp_server_port"
+                                                : $smtp_server,
+                                                Hello => $smtp_domain,
+                                                Debug => $debug_net_smtp);
+                       if ($smtp_encryption eq 'tls' && $smtp) {
+                               require Net::SMTP::SSL;
+                               $smtp->command('STARTTLS');
+                               $smtp->response();
+                               if ($smtp->code == 220) {
+                                       $smtp = Net::SMTP::SSL->start_SSL($smtp)
+                                               or die "STARTTLS failed! ".$smtp->message;
+                                       $smtp_encryption = '';
+                                       # Send EHLO again to receive fresh
+                                       # supported commands
+                                       $smtp->hello();
+                               } else {
+                                       die "Server does not support STARTTLS! ".$smtp->message;
+                               }
+                       }
+               }
+
+               if (!$smtp) {
+                       die "Unable to initialize SMTP properly. Check config and use --smtp-debug. ",
+                           "VALUES: server=$smtp_server ",
+                           "encryption=$smtp_encryption ",
+                           "hello=$smtp_domain",
+                           defined $smtp_server_port ? "port=$smtp_server_port" : "";
+               }
+
+               if (defined $smtp_authuser) {
+
+                       if (!defined $smtp_authpass) {
+
+                               system "stty -echo";
+
+                               do {
+                                       print "Password: ";
+                                       $_ = <STDIN>;
+                                       print "\n";
+                               } while (!defined $_);
+
+                               chomp($smtp_authpass = $_);
+
+                               system "stty echo";
+                       }
+
+                       $auth ||= $smtp->auth( $smtp_authuser, $smtp_authpass ) or die $smtp->message;
+               }
+
+               $smtp->mail( $raw_from ) or die $smtp->message;
+               $smtp->to( @recipients ) or die $smtp->message;
+               $smtp->data or die $smtp->message;
+               $smtp->datasend("$header\n$message") or die $smtp->message;
+               $smtp->dataend() or die $smtp->message;
+               $smtp->code =~ /250|200/ or die "Failed to send $subject\n".$smtp->message;
+       }
+       if ($quiet) {
+               printf (($dry_run ? "Dry-" : "")."Sent %s\n", $subject);
+       } else {
+               print (($dry_run ? "Dry-" : "")."OK. Log says:\n");
+               if ($smtp_server !~ m#^/#) {
+                       print "Server: $smtp_server\n";
+                       print "MAIL FROM:<$raw_from>\n";
+                       foreach my $entry (@recipients) {
+                           print "RCPT TO:<$entry>\n";
+                       }
+               } else {
+                       print "Sendmail: $smtp_server ".join(' ',@sendmail_parameters)."\n";
+               }
+               print $header, "\n";
+               if ($smtp) {
+                       print "Result: ", $smtp->code, ' ',
+                               ($smtp->message =~ /\n([^\n]+\n)$/s), "\n";
+               } else {
+                       print "Result: OK\n";
+               }
+       }
+
+       return 1;
+}
+
+$reply_to = $initial_reply_to;
+$references = $initial_reply_to || '';
+$subject = $initial_subject;
+$message_num = 0;
+
+foreach my $t (@files) {
+       open(F,"<",$t) or die "can't open file $t";
+
+       my $author = undef;
+       my $author_encoding;
+       my $has_content_type;
+       my $body_encoding;
+       @cc = ();
+       @msgto = ();
+       @xh = ();
+       my $input_format = undef;
+       my @header = ();
+       $message = "";
+       $message_num++;
+       # First unfold multiline header fields
+       while(<F>) {
+               last if /^\s*$/;
+               if (/^\s+\S/ and @header) {
+                       chomp($header[$#header]);
+                       s/^\s+/ /;
+                       $header[$#header] .= $_;
+           } else {
+                       push(@header, $_);
+               }
+       }
+       # Now parse the header
+       foreach(@header) {
+               if (/^From /) {
+                       $input_format = 'mbox';
+                       next;
+               }
+               chomp;
+               if (!defined $input_format && /^[-A-Za-z]+:\s/) {
+                       $input_format = 'mbox';
+               }
+
+               if (defined $input_format && $input_format eq 'mbox') {
+                       if (/^Subject:\s+(.*)$/) {
+                               $subject = $1;
+                       }
+                       elsif (/^From:\s+(.*)$/) {
+                               ($author, $author_encoding) = unquote_rfc2047($1);
+                               next if $suppress_cc{'author'};
+                               next if $suppress_cc{'self'} and $author eq $sender;
+                               printf("(mbox) Adding cc: %s from line '%s'\n",
+                                       $1, $_) unless $quiet;
+                               push @cc, $1;
+                       }
+                       elsif (/^Cc:\s+(.*)$/) {
+                               foreach my $addr (parse_address_line($1)) {
+                                       if (unquote_rfc2047($addr) eq $sender) {
+                                               next if ($suppress_cc{'self'});
+                                       } else {
+                                               next if ($suppress_cc{'cc'});
+                                       }
+                                       printf("(mbox) Adding cc: %s from line '%s'\n",
+                                               $addr, $_) unless $quiet;
+                                       push @cc, $addr;
+                               }
+                       }
+                       elsif ($auto_to && /^To:\s+(.*)$/) {
+                               foreach my $addr (parse_address_line($1)) {
+                                       printf("(mbox) Adding to: %s from line '%s'\n",
+                                               $addr, $_) unless $quiet;
+                                       push @msgto, $addr;
+                               }
+                       }
+                       elsif (/^Content-type:/i) {
+                               $has_content_type = 1;
+                               if (/charset="?([^ "]+)/) {
+                                       $body_encoding = $1;
+                               }
+                               push @xh, $_;
+                       }
+                       elsif (/^Message-Id: (.*)/i) {
+                               $message_id = $1;
+                       }
+                       elsif (!/^Date:\s/ && /^[-A-Za-z]+:\s+\S/) {
+                               push @xh, $_;
+                       }
+
+               } else {
+                       # In the traditional
+                       # "send lots of email" format,
+                       # line 1 = cc
+                       # line 2 = subject
+                       # So let's support that, too.
+                       $input_format = 'lots';
+                       if (@cc == 0 && !$suppress_cc{'cc'}) {
+                               printf("(non-mbox) Adding cc: %s from line '%s'\n",
+                                       $_, $_) unless $quiet;
+                               push @cc, $_;
+                       } elsif (!defined $subject) {
+                               $subject = $_;
+                       }
+               }
+       }
+       # Now parse the message body
+       while(<F>) {
+               $message .=  $_;
+               if (/^(Signed-off-by|Cc): (.*)$/i) {
+                       chomp;
+                       my ($what, $c) = ($1, $2);
+                       chomp $c;
+                       if ($c eq $sender) {
+                               next if ($suppress_cc{'self'});
+                       } else {
+                               next if $suppress_cc{'sob'} and $what =~ /Signed-off-by/i;
+                               next if $suppress_cc{'bodycc'} and $what =~ /Cc/i;
+                       }
+                       push @cc, $c;
+                       printf("(body) Adding cc: %s from line '%s'\n",
+                               $c, $_) unless $quiet;
+               }
+       }
+       close F;
+
+       if (defined $cc_cmd && !$suppress_cc{'cccmd'}) {
+               open(F, "$cc_cmd \Q$t\E |")
+                       or die "(cc-cmd) Could not execute '$cc_cmd'";
+               while(<F>) {
+                       my $c = $_;
+                       $c =~ s/^\s*//g;
+                       $c =~ s/\n$//g;
+                       next if ($c eq $sender and $suppress_from);
+                       push @cc, $c;
+                       printf("(cc-cmd) Adding cc: %s from: '%s'\n",
+                               $c, $cc_cmd) unless $quiet;
+               }
+               close F
+                       or die "(cc-cmd) failed to close pipe to '$cc_cmd'";
+       }
+
+       if ($broken_encoding{$t} && !$has_content_type) {
+               $has_content_type = 1;
+               push @xh, "MIME-Version: 1.0",
+                       "Content-Type: text/plain; charset=$auto_8bit_encoding",
+                       "Content-Transfer-Encoding: 8bit";
+               $body_encoding = $auto_8bit_encoding;
+       }
+
+       if ($broken_encoding{$t} && !is_rfc2047_quoted($subject)) {
+               $subject = quote_rfc2047($subject, $auto_8bit_encoding);
+       }
+
+       if (defined $author and $author ne $sender) {
+               $message = "From: $author\n\n$message";
+               if (defined $author_encoding) {
+                       if ($has_content_type) {
+                               if ($body_encoding eq $author_encoding) {
+                                       # ok, we already have the right encoding
+                               }
+                               else {
+                                       # uh oh, we should re-encode
+                               }
+                       }
+                       else {
+                               $has_content_type = 1;
+                               push @xh,
+                                 'MIME-Version: 1.0',
+                                 "Content-Type: text/plain; charset=$author_encoding",
+                                 'Content-Transfer-Encoding: 8bit';
+                       }
+               }
+       }
+
+       $needs_confirm = (
+               $confirm eq "always" or
+               ($confirm =~ /^(?:auto|cc)$/ && @cc) or
+               ($confirm =~ /^(?:auto|compose)$/ && $compose && $message_num == 1));
+       $needs_confirm = "inform" if ($needs_confirm && $confirm_unconfigured && @cc);
+
+       @cc = (@initial_cc, @cc);
+
+       my $message_was_sent = send_message();
+
+       # set up for the next message
+       if ($thread && $message_was_sent &&
+               (chain_reply_to() || !defined $reply_to || length($reply_to) == 0)) {
+               $reply_to = $message_id;
+               if (length $references > 0) {
+                       $references .= "\n $message_id";
+               } else {
+                       $references = "$message_id";
+               }
+       }
+       $message_id = undef;
+}
+
+cleanup_compose_files();
+
+sub cleanup_compose_files() {
+       unlink($compose_filename, $compose_filename . ".final") if $compose;
+}
+
+$smtp->quit if $smtp;
+
+sub unique_email_list(@) {
+       my %seen;
+       my @emails;
+
+       foreach my $entry (@_) {
+               if (my $clean = extract_valid_address($entry)) {
+                       $seen{$clean} ||= 0;
+                       next if $seen{$clean}++;
+                       push @emails, $entry;
+               } else {
+                       print STDERR "W: unable to extract a valid address",
+                                       " from: $entry\n";
+               }
+       }
+       return @emails;
+}
+
+sub validate_patch {
+       my $fn = shift;
+       open(my $fh, '<', $fn)
+               or die "unable to open $fn: $!\n";
+       while (my $line = <$fh>) {
+               if (length($line) > 998) {
+                       return "$.: patch contains a line longer than 998 characters";
+               }
+       }
+       return undef;
+}
+
+sub file_has_nonascii {
+       my $fn = shift;
+       open(my $fh, '<', $fn)
+               or die "unable to open $fn: $!\n";
+       while (my $line = <$fh>) {
+               return 1 if $line =~ /[^[:ascii:]]/;
+       }
+       return 0;
+}
+
+sub body_or_subject_has_nonascii {
+       my $fn = shift;
+       open(my $fh, '<', $fn)
+               or die "unable to open $fn: $!\n";
+       while (my $line = <$fh>) {
+               last if $line =~ /^$/;
+               return 1 if $line =~ /^Subject.*[^[:ascii:]]/;
+       }
+       while (my $line = <$fh>) {
+               return 1 if $line =~ /[^[:ascii:]]/;
+       }
+       return 0;
+}
index a4f1417..af1d500 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* for each marked thing, how often does it occur and in what files and
 directories *)
 
index 32491bc..8df6a32 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* Dump an OCaml value into a printable string.
  * By Richard W.M. Jones (rich@annexia.org).
  * dumper.ml 1.2 2005/02/06 12:38:21 rich Exp
index 0f80e10..61c5e69 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* Dump an OCaml value into a printable string.
  * By Richard W.M. Jones (rich@annexia.org).
  * dumper.mli 1.1 2005/02/03 23:07:47 rich Exp
index bfd96da..9a4a493 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 open Common
 
 (*****************************************************************************)
index 1554698..5c31fad 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 open Common
 
 (*****************************************************************************)
index 0c9c59a..a4f12b1 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* adjust as convenient *)
 let prefix = "/tmp/"
 let prefix = ""
index 36b9a01..e3aac33 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* sort a list of git codes such that the most recent comes first *)
 
 let git_home = ref "/home/julia/linux-2.6"
index 3a86a6c..d981671 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 let lines =
 ["Copyright 2010, INRIA, University of Copenhagen";
 "Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix";
index 29027db..cfd7735 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 (* This is for processing information created with the -profile_iso option.
 Runs are assumed separated with a line beginning with =.
 The first run is discarded *)
diff --git a/tools/split_patch.ml b/tools/split_patch.ml
deleted file mode 100644 (file)
index 598b44b..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-(* split patch per file *)
-
-let git_tree = "/var/linuxes/linux-next"
-
-let maintainer_command file =
-  Printf.sprintf
-    "cd %s; scripts/get_maintainer.pl --separator , --nomultiline --nogit -f %s"
-    git_tree file
-
-let subsystem_command file =
-  Printf.sprintf
-    "cd %s; scripts/get_maintainer.pl --nogit --subsystem -f %s | grep -v @"
-    git_tree file
-
-let checkpatch_command file =
-  Printf.sprintf "cd %s; scripts/checkpatch.pl %s" git_tree file
-
-let default_string = "THE REST" (* split by file *)
-
-let extra_cc = Some "kernel-janitors@vger.kernel.org" (* comma separated *)
-
-let prefix_before = Some "/var/linuxes/linux-next"
-let prefix_after = Some "/var/julia/linuxcopy"
-
-(* ------------------------------------------------------------------------ *)
-
-let spaces = Str.regexp "[ \t]"
-
-let fix_before_after l prefix = function
-    Some old_prefix ->
-      (match Str.split spaces l with
-       ("diff"|"+++"|"---")::_ ->
-         (match Str.split (Str.regexp old_prefix) l with
-           [a;b] ->
-             (match Str.split_delim (Str.regexp ("[ \t]"^prefix)) a with
-               [_;""] -> a^b (* prefix is alwaredy there *)
-             | _ -> a^prefix^b)
-         | _ -> l)
-      |        _ -> l)
-  | _ -> l
-
-let fix_date l =
-  match Str.split spaces l with
-    (("+++"|"---") as a)::path::rest -> Printf.sprintf "%s %s" a path
-  | _ -> l
-
-(* ------------------------------------------------------------------------ *)
-
-let is_diff = Str.regexp "diff "
-let split_patch i =
-  let patches = ref [] in
-  let cur = ref [] in
-  let get_size l =
-    match Str.split_delim (Str.regexp ",") l with
-      [_;size] -> int_of_string size
-    | _ -> failwith ("bad size: "^l) in
-  let rec read_diff_or_atat _ =
-    let l = input_line i in
-    let l = fix_date(fix_before_after l "a" prefix_before) in
-    let l = fix_date(fix_before_after l "b" prefix_after) in
-    match Str.split spaces l with
-      "diff"::_ ->
-       (if List.length !cur > 0
-       then patches := List.rev !cur :: !patches);
-       cur := [l];
-       read_diff()
-    | "@@"::min::pl::"@@"::rest ->
-       let msize = get_size min in
-       let psize = get_size pl in
-       cur := l :: !cur;
-       read_hunk msize psize
-    | "\\"::_ -> cur := l :: !cur; read_diff_or_atat()
-    | _ ->
-       failwith
-         "expected diff or @@ (diffstat information should not be present)"
-  and read_diff _ =
-    let l = input_line i in
-    let l = fix_date(fix_before_after l "a" prefix_before) in
-    let l = fix_date(fix_before_after l "b" prefix_after) in
-    cur := l :: !cur;
-    match Str.split spaces l with
-      "+++"::_ -> read_diff_or_atat()
-    | _ -> read_diff()
-  and read_hunk msize psize =
-    if msize = 0 && psize = 0
-    then read_diff_or_atat()
-    else
-      let l = input_line i in
-      cur := l :: !cur;
-      match String.get l 0 with
-       '-' -> read_hunk (msize - 1) psize
-      |        '+' -> read_hunk msize (psize - 1)
-      |        _ -> read_hunk (msize - 1) (psize - 1) in
-  try read_diff_or_atat()
-  with End_of_file -> List.rev ((List.rev !cur)::!patches)
-
-(* ------------------------------------------------------------------------ *)
-
-(* can get_maintainers take a file as an argument, or only a patch? *)
-let resolve_maintainers patches =
-  let maintainer_table = Hashtbl.create (List.length patches) in
-  List.iter
-    (function
-       diff_line::rest ->
-         (match Str.split (Str.regexp " a/") diff_line with
-           [before;after] ->
-             (match Str.split spaces after with
-               file::_ ->
-                 let maintainers =
-                   List.hd (Common.cmd_to_list (maintainer_command file)) in
-                 let maintainers =
-                   match extra_cc with
-                     None -> maintainers
-                   | Some extra_cc -> maintainers ^ "," ^ extra_cc in
-                 let subsystems =
-                   Common.cmd_to_list (subsystem_command file) in
-                 let info = (subsystems,maintainers) in
-                 let cell =
-                   try Hashtbl.find maintainer_table info
-                   with Not_found ->
-                     let cell = ref [] in
-                     Hashtbl.add maintainer_table info cell;
-                     cell in
-                 cell := (file,(diff_line :: rest)) :: !cell
-             | _ -> failwith "filename not found")
-         | _ ->
-             failwith (Printf.sprintf "prefix a/ not found in %s" diff_line))
-      |        _ -> failwith "bad diff line")
-    patches;
-  maintainer_table
-
-(* ------------------------------------------------------------------------ *)
-
-let common_prefix l1 l2 =
-  let rec loop = function
-      ([],_) | (_,[]) -> []
-    | (x::xs,y::ys) when x = y -> x :: (loop (xs,ys))
-    | _ -> [] in
-  match loop (l1,l2) with
-    [] ->
-      failwith
-       (Printf.sprintf "found nothing in common for %s and %s"
-          (String.concat "/" l1) (String.concat "/" l2))
-  | res -> res
-
-let merge_files the_rest files =
-  let butlast l = if the_rest then l else List.rev(List.tl(List.rev l)) in
-  match List.map (function s -> Str.split (Str.regexp "/") s) files with
-    first::rest ->
-      let rec loop res = function
-         [] -> String.concat "/" res
-       | x::rest -> loop (common_prefix res x) rest in
-      loop (butlast first) rest
-  | _ -> failwith "not possible"
-
-(* ------------------------------------------------------------------------ *)
-
-let print_all o l =
-  List.iter (function x -> Printf.fprintf o "%s\n" x) l
-
-let make_output_files template maintainer_table patch =
-  let ctr = ref 0 in
-  let elements =
-    Hashtbl.fold
-      (function (services,maintainers) ->
-       function diffs ->
-         function rest ->
-           if services=[default_string]
-           then
-             (* if no maintainer, then one file per diff *)
-             (List.map
-                (function (file,diff) ->
-                  ctr := !ctr + 1;
-                  (!ctr,true,maintainers,[file],[diff]))
-                (List.rev !diffs)) @
-             rest
-           else
-             begin
-               ctr := !ctr + 1;
-               let (files,diffs) = List.split (List.rev !diffs) in
-               (!ctr,false,maintainers,files,diffs)::rest
-             end)
-      maintainer_table [] in
-  let number = List.length elements in
-  List.iter
-    (function (ctr,the_rest,maintainers,files,diffs) ->
-      let output_file = Printf.sprintf "%s%d" patch ctr in
-      let o = open_out output_file in
-      Printf.fprintf o "To: %s\n\n" maintainers;
-      Printf.fprintf o "Subject: [PATCH %d/%d] %s: "
-       ctr number (merge_files the_rest files);
-      print_all o template;
-      let (nm,o1) = Filename.open_temp_file "patch" "patch" in
-      List.iter (print_all o1) (List.rev diffs);
-      close_out o1;
-      let diffstat =
-       Common.cmd_to_list
-         (Printf.sprintf "diffstat -p1 < %s ; /bin/rm %s" nm nm) in
-      List.iter (print_all o) [diffstat];
-      Printf.fprintf o "\n";
-      List.iter (print_all o) diffs;
-      close_out o;
-      let (info,stat) =
-       Common.cmd_to_list_and_status
-         (checkpatch_command ((Sys.getcwd())^"/"^output_file)) in
-      if not(stat = Unix.WEXITED 0)
-      then (print_all stderr info; Printf.fprintf stderr "\n"))
-    (List.rev elements);
-  let later = Printf.sprintf "%s%d" patch (number + 1) in
-  if Sys.file_exists later
-  then Printf.fprintf stderr "Warning: %s and other files may be left over from a previous run\n" later
-    
-(* ------------------------------------------------------------------------ *)
-
-let file = ref ""
-
-let options = []
-
-let usage = ""
-
-let anonymous x = file := x
-
-let _ =
-  Arg.parse (Arg.align options) (fun x -> file := x) usage;
-  let i = open_in !file in
-  let patches = split_patch i in
-  close_in i;
-  let maintainer_table = resolve_maintainers patches in
-  let template = Common.cmd_to_list (Printf.sprintf "cat %s.tmp" !file) in
-  make_output_files template maintainer_table !file
diff --git a/tools/splitpatch.ml b/tools/splitpatch.ml
new file mode 100644 (file)
index 0000000..34b711b
--- /dev/null
@@ -0,0 +1,473 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
+(* split patch per file *)
+
+(* ------------------------------------------------------------------------ *)
+(* The following are a reminder of what this information should look like.
+These values are not used.  See the README file for information on how to
+create a .splitpatch file in your home directory. *)
+
+let from = ref "email@xyz.org"
+let git_tree = ref "/var/linuxes/linux-next"
+let git_options = ref "--cc=kernel-janitors@vger.kernel.org --suppress-cc=self"
+let prefix_before = ref (Some "/var/linuxes/linux-next")
+let prefix_after = ref (Some "/var/julia/linuxcopy")
+
+(* ------------------------------------------------------------------------ *)
+(* misc *)
+
+let process_output_to_list2 = fun command ->
+  let chan = Unix.open_process_in command in
+  let res = ref ([] : string list) in
+  let rec process_otl_aux () =
+    let e = input_line chan in
+    res := e::!res;
+    process_otl_aux() in
+  try process_otl_aux ()
+  with End_of_file ->
+    let stat = Unix.close_process_in chan in (List.rev !res,stat)
+let cmd_to_list command =
+  let (l,_) = process_output_to_list2 command in l
+let process_output_to_list = cmd_to_list
+let cmd_to_list_and_status = process_output_to_list2
+
+let safe_chop_extension s = try Filename.chop_extension s with _ -> s
+
+let safe_get_extension s =
+  match List.rev (Str.split (Str.regexp_string ".") s) with
+    ext::_::rest -> Some (String.concat "." (List.rev rest))
+  | _ -> None
+
+(* ------------------------------------------------------------------------ *)
+(* set configuration variables *)
+
+let from_from_template template =
+  let signed_offs =
+    cmd_to_list (Printf.sprintf "grep Signed-off-by: %s" template) in
+  match signed_offs with
+    x::xs -> String.concat " " (Str.split (Str.regexp "[ \t]+") x)
+  | _ -> failwith "No Signed-off-by in template file"
+
+let from_from_gitconfig path =
+  let config = path^"/.git/config" in
+  if Sys.file_exists config
+  then
+    let i = open_in config in
+    let rec inner_loop _ =
+      let l = input_line i in
+      match Str.split (Str.regexp "[ \t]+") l with
+       "from"::"="::f -> from := String.concat " " f
+      |        _ ->
+         if String.length l >= 1 && String.get l 0 = '['
+         then ()
+         else inner_loop() in
+    let rec outer_loop _ =
+      let l = input_line i in
+      if l = "[sendemail]"
+      then inner_loop()
+      else outer_loop() in
+    (try outer_loop() with Not_found -> ());
+    close_in i
+
+let read_configs template =
+  let temporary_git_tree = ref None in
+  git_options := "";
+  prefix_before := None;
+  prefix_after := None;
+  (* get information in message template, lowest priority *)
+  from := from_from_template template;
+  (* get information in git config *)
+  let rec loop = function
+      "/" -> ()
+    | path ->
+       if Sys.file_exists ".git"
+       then
+         begin temporary_git_tree := Some path; from_from_gitconfig path end
+       else loop (Filename.dirname path) in
+  loop (Sys.getcwd());
+  (* get information from .splitpatch *)
+  let home = List.hd(cmd_to_list "ls -d ~") in
+  let config = home^"/.splitpatch" in
+  (if Sys.file_exists config
+  then
+    let i = open_in config in
+    let rec loop _ =
+      let l = input_line i in
+      (* bounded split doesn't split at = in value part *)
+      (match Str.bounded_split (Str.regexp "[ \t]*=[ \t]*") l 2 with
+       ["from";s] -> from := s
+      | ["git_tree";s] -> temporary_git_tree := Some s
+      | ["git_options";s] -> git_options := s
+      | ["prefix_before";s] -> prefix_before := Some s
+      | ["prefix_after";s] -> prefix_after := Some s
+      | _ -> Printf.fprintf stderr "unknown line: %s\n" l);
+      loop() in
+    try loop() with End_of_file -> close_in i);
+  match !temporary_git_tree with
+    None -> failwith "Unable to find Linux source tree"
+  | Some g -> git_tree := g
+
+(* ------------------------------------------------------------------------ *)
+
+let maintainer_command file =
+  Printf.sprintf
+    "cd %s; scripts/get_maintainer.pl --separator , --nogit -f %s"
+    !git_tree file
+
+let subsystem_command file =
+  Printf.sprintf
+    "cd %s; scripts/get_maintainer.pl --nogit --subsystem -f %s | grep -v @"
+    !git_tree file
+
+let checkpatch_command file =
+  Printf.sprintf "cd %s; scripts/checkpatch.pl %s" !git_tree file
+
+let default_string = "THE REST" (* split by file *)
+
+(* ------------------------------------------------------------------------ *)
+(* ------------------------------------------------------------------------ *)
+(* Template file processing *)
+
+let read_up_to_dashes i =
+  let lines = ref [] in
+  let rec loop _ =
+    let l = input_line i in
+    if l = "---"
+    then ()
+    else begin lines := l :: !lines; loop() end in
+  (try loop() with End_of_file -> ());
+  let lines =
+    match !lines with
+      ""::lines -> List.rev lines (* drop last line if blank *)
+    | lines -> List.rev lines in
+  match lines with
+    ""::lines -> lines (* drop first line if blank *)
+  | _ -> lines
+
+let get_template_information file =
+  let i = open_in file in
+  (* subject *)
+  let subject = read_up_to_dashes i in
+  match subject with
+    [subject] ->
+      let cover = read_up_to_dashes i in
+      let message = read_up_to_dashes i in
+      if message = []
+      then (subject,None,cover)
+      else (subject,Some cover,message)
+  | _ -> failwith "Subject must be exactly one line"
+
+(* ------------------------------------------------------------------------ *)
+(* ------------------------------------------------------------------------ *)
+(* Patch processing *)
+
+let spaces = Str.regexp "[ \t]+"
+
+let fix_before_after l prefix = function
+    Some old_prefix ->
+      (match Str.split spaces l with
+       ("diff"|"+++"|"---")::_ ->
+         (match Str.split (Str.regexp old_prefix) l with
+           [a;b] ->
+             (match Str.split_delim (Str.regexp ("[ \t]"^prefix)) a with
+               [_;""] -> a^b (* prefix is already there *)
+             | _ -> a^prefix^b)
+         | _ -> l)
+      |        _ -> l)
+  | _ -> l
+
+let fix_date l =
+  match Str.split spaces l with
+    (("+++"|"---") as a)::path::rest -> Printf.sprintf "%s %s" a path
+  | _ -> l
+
+(* ------------------------------------------------------------------------ *)
+
+let is_diff = Str.regexp "diff "
+let split_patch i =
+  let patches = ref [] in
+  let cur = ref [] in
+  let get_size l =
+    match Str.split_delim (Str.regexp ",") l with
+      [_;size] -> int_of_string size
+    | _ -> failwith ("bad size: "^l) in
+  let rec read_diff_or_atat _ =
+    let l = input_line i in
+    let l = fix_date(fix_before_after l "a" !prefix_before) in
+    let l = fix_date(fix_before_after l "b" !prefix_after) in
+    match Str.split spaces l with
+      "diff"::_ ->
+       (if List.length !cur > 0
+       then patches := List.rev !cur :: !patches);
+       cur := [l];
+       read_diff()
+    | "@@"::min::pl::"@@"::rest ->
+       let msize = get_size min in
+       let psize = get_size pl in
+       cur := l :: !cur;
+       read_hunk msize psize
+    | "\\"::_ -> cur := l :: !cur; read_diff_or_atat()
+    | _ ->
+       failwith
+         "expected diff or @@ (diffstat information should not be present)"
+  and read_diff _ =
+    let l = input_line i in
+    let l = fix_date(fix_before_after l "a" !prefix_before) in
+    let l = fix_date(fix_before_after l "b" !prefix_after) in
+    cur := l :: !cur;
+    match Str.split spaces l with
+      "+++"::_ -> read_diff_or_atat()
+    | _ -> read_diff()
+  and read_hunk msize psize =
+    if msize = 0 && psize = 0
+    then read_diff_or_atat()
+    else
+      let l = input_line i in
+      cur := l :: !cur;
+      match String.get l 0 with
+       '-' -> read_hunk (msize - 1) psize
+      |        '+' -> read_hunk msize (psize - 1)
+      |        _ -> read_hunk (msize - 1) (psize - 1) in
+  try read_diff_or_atat()
+  with End_of_file -> List.rev ((List.rev !cur)::!patches)
+
+(* ------------------------------------------------------------------------ *)
+
+let resolve_maintainers patches =
+  let maintainer_table = Hashtbl.create (List.length patches) in
+  List.iter
+    (function
+       diff_line::rest ->
+         (match Str.split (Str.regexp " a/") diff_line with
+           [before;after] ->
+             (match Str.split spaces after with
+               file::_ ->
+                 let maintainers =
+                   List.hd (cmd_to_list (maintainer_command file)) in
+                 let subsystems =
+                   cmd_to_list (subsystem_command file) in
+                 let info = (subsystems,maintainers) in
+                 let cell =
+                   try Hashtbl.find maintainer_table info
+                   with Not_found ->
+                     let cell = ref [] in
+                     Hashtbl.add maintainer_table info cell;
+                     cell in
+                 cell := (file,(diff_line :: rest)) :: !cell
+             | _ -> failwith "filename not found")
+         | _ ->
+             failwith (Printf.sprintf "prefix a/ not found in %s" diff_line))
+      |        _ -> failwith "bad diff line")
+    patches;
+  maintainer_table
+
+(* ------------------------------------------------------------------------ *)
+
+let common_prefix l1 l2 =
+  let rec loop = function
+      ([],_) | (_,[]) -> []
+    | (x::xs,y::ys) when x = y -> x :: (loop (xs,ys))
+    | _ -> [] in
+  match loop (l1,l2) with
+    [] ->
+      failwith
+       (Printf.sprintf "found nothing in common for %s and %s"
+          (String.concat "/" l1) (String.concat "/" l2))
+  | res -> res
+
+let merge_files the_rest = function
+    [l] -> l
+  | files ->
+      let butlast l = if the_rest then l else List.rev(List.tl(List.rev l)) in
+      match List.map (function s -> Str.split (Str.regexp "/") s) files with
+       first::rest ->
+         let rec loop res = function
+             [] -> String.concat "/" res
+           | x::rest -> loop (common_prefix res x) rest in
+         loop (butlast first) rest
+      | _ -> failwith "not possible"
+
+(* ------------------------------------------------------------------------ *)
+
+let print_all o l =
+  List.iter (function x -> Printf.fprintf o "%s\n" x) l
+
+let make_mail_header o date maintainers ctr number subject =
+  Printf.fprintf o "From nobody %s\n" date;
+  Printf.fprintf o "From: %s\n" !from;
+  (match Str.split (Str.regexp_string ",") maintainers with
+    [x] -> Printf.fprintf o "To: %s\n" x
+  | x::xs ->
+      Printf.fprintf o "To: %s\n" x;
+      Printf.fprintf o "Cc: %s\n" (String.concat "," xs)
+  | _ -> failwith "no maintainers");
+  if number = 1
+  then Printf.fprintf o "Subject: [PATCH] %s\n\n" subject
+  else Printf.fprintf o "Subject: [PATCH %d/%d] %s\n\n" ctr number subject
+
+let make_message_files subject cover message date maintainer_table
+    patch front add_ext =
+  let ctr = ref 0 in
+  let elements =
+    Hashtbl.fold
+      (function (services,maintainers) ->
+       function diffs ->
+         function rest ->
+           if services=[default_string]
+           then
+             (* if no maintainer, then one file per diff *)
+             (List.map
+                (function (file,diff) ->
+                  ctr := !ctr + 1;
+                  (!ctr,true,maintainers,[file],[diff]))
+                (List.rev !diffs)) @
+             rest
+           else
+             begin
+               ctr := !ctr + 1;
+               let (files,diffs) = List.split (List.rev !diffs) in
+               (!ctr,false,maintainers,files,diffs)::rest
+             end)
+      maintainer_table [] in
+  let number = List.length elements in
+  let generated =
+    List.map
+      (function (ctr,the_rest,maintainers,files,diffs) ->
+       let output_file = add_ext(Printf.sprintf "%s%d" front ctr) in
+       let o = open_out output_file in
+       make_mail_header o date maintainers ctr number
+         (Printf.sprintf "%s: %s" (merge_files the_rest files) subject);
+       print_all o message;
+       Printf.fprintf o "\n---\n";
+       let (nm,o1) = Filename.open_temp_file "patch" "patch" in
+       List.iter (print_all o1) (List.rev diffs);
+       close_out o1;
+       let diffstat =
+         cmd_to_list
+           (Printf.sprintf "diffstat -p1 < %s ; /bin/rm %s" nm nm) in
+       List.iter (print_all o) [diffstat];
+       Printf.fprintf o "\n";
+       List.iter (print_all o) diffs;
+       Printf.fprintf o "\n";
+       close_out o;
+       let (info,stat) =
+         cmd_to_list_and_status
+           (checkpatch_command ((Sys.getcwd())^"/"^output_file)) in
+       (if not(stat = Unix.WEXITED 0)
+       then (print_all stderr info; Printf.fprintf stderr "\n"));
+       output_file)
+      (List.rev elements) in
+  let later = add_ext(Printf.sprintf "%s%d" front (number+1)) in
+  if Sys.file_exists later
+  then Printf.fprintf stderr "Warning: %s and other files may be left over from a previous run\n" later;
+  generated
+
+let make_cover_file n subject cover front date maintainer_table =
+  match cover with
+    None -> ()
+  | Some cover ->
+      let common_maintainers =
+       let intersect l1 l2 =
+         List.rev
+           (List.fold_left
+              (function i -> function cur ->
+                if List.mem cur l2 then cur :: i else i)
+              [] l1) in
+       let start = ref true in
+       String.concat ","
+         (Hashtbl.fold
+            (function (services,maintainers) ->
+              function diffs ->
+                function rest ->
+                  let cur = Str.split (Str.regexp_string ",") maintainers in
+                  if !start
+                  then begin start := false; cur end
+                  else intersect cur rest)
+            maintainer_table []) in
+      let output_file = Printf.sprintf "%s.cover" front in
+      let o = open_out output_file in
+      make_mail_header o date common_maintainers 0 n subject;
+      print_all o cover;
+      Printf.fprintf o "\n";
+      close_out o
+
+let mail_sender = "git send-email" (* use this when it works *)
+let mail_sender = "cocci-send-email.perl"
+
+let generate_command front cover generated =
+  let output_file = front^".cmd" in
+  let o = open_out output_file in
+  (match cover with
+    None ->
+      Printf.fprintf o
+       "%s --auto-to --no-thread --from=\"%s\" %s $* %s\n"
+       mail_sender !from !git_options
+       (String.concat " " generated)
+  | Some cover ->
+      Printf.fprintf o
+       "%s --auto-to --thread --from=\"%s\" %s $* %s\n"
+       mail_sender !from !git_options
+       (String.concat " " ((front^".cover") :: generated)));
+  close_out o
+
+let make_output_files subject cover message maintainer_table patch =
+  let date = List.hd (cmd_to_list "date") in
+  let front = safe_chop_extension patch in
+  let add_ext =
+    match safe_get_extension patch with
+      Some ext -> (function s -> s ^ "." ^ ext)
+    | None -> (function s -> s) in
+  let generated =
+    make_message_files subject cover message date maintainer_table
+      patch front add_ext in
+  make_cover_file (List.length generated) subject cover front date
+    maintainer_table;
+  generate_command front cover generated
+
+(* ------------------------------------------------------------------------ *)
+
+let parse_args l =
+  let (other_args,files) =
+    List.partition
+      (function a -> String.length a > 1 && String.get a 0 = '-')
+      l in
+  match files with
+    [file] -> (file,String.concat " " other_args)
+  | _ -> failwith "Only one file allowed"
+
+let _ =
+  let (file,git_args) = parse_args (List.tl (Array.to_list Sys.argv)) in
+  let message_file = (safe_chop_extension file)^".msg" in
+  (* set up environment *)
+  read_configs message_file;
+  (if not (git_args = "") then git_options := !git_options^" "^git_args);
+  (* get message information *)
+  let (subject,cover,message) = get_template_information message_file in
+  (* split patch *)
+  let i = open_in file in
+  let patches = split_patch i in
+  close_in i;
+  let maintainer_table = resolve_maintainers patches in
+  make_output_files subject cover message maintainer_table file
index 1281fba..f5e2196 100644 (file)
@@ -1,3 +1,27 @@
+(*
+ * Copyright 2010, INRIA, University of Copenhagen
+ * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 open Common
 
 exception WrongArguments